Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #define Save 1
- forward check(playerid);
- forward stopphone(playerid);
- forward startphone(playerid);
- #define txtcost 1
- enum player_enum
- {
- bool:calling,
- caller,
- number
- }
- new player[MAX_PLAYERS][player_enum];
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" cellphone system ready ");
- print("______________________________________");
- print("by NoZer0 a.k.a Daplayer (2009) ");
- print("--------------------------------------\n");
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SendClientMessage(playerid, 0x33AA33AA, "This server is using NoZer0's phone system (2009)");
- player[playerid][calling] = false;
- player[playerid][caller] = 255;
- GivePlayerMoney(playerid, 500);
- #if Save==0
- do
- {
- player[playerid][number] = 1000 + random(8999);
- }
- while(NumberUsed(playerid));
- #else
- new file[20];
- GetPlayerName(playerid, file, 16);
- format(file, sizeof(file), "%s.txt", file);
- if (fexist(file))
- {
- new File:ftw = fopen(file, io_read);
- new tmp[5];
- fread(ftw, tmp);
- player[playerid][number] = strval(tmp);
- fclose(ftw);
- }
- else
- {
- do
- {
- player[playerid][number] = 1000 + random(8999);
- }
- while(NumberUsed(playerid));
- new File:handle1 = fopen(file, io_write);
- new tmp[6];
- format(tmp, 5, "%d", player[playerid][number]);
- fwrite(handle1, tmp);
- fclose(handle1);
- new File:handle2;
- if (!fexist("numbers_used.txt"))
- {
- format(tmp, 7, "%d", player[playerid][number]);
- handle2 = fopen("numbers_used.txt", io_write);
- fwrite(handle2, tmp);
- fclose(handle2);
- }
- else
- {
- format(tmp, 7, "\r\n%d", player[playerid][number]);
- handle2 = fopen("numbers_used.txt", io_append);
- fwrite(handle2, tmp);
- fclose(handle2);
- }
- }
- #endif
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- if (player[playerid][calling])
- {
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
- player[playerid][calling] = false;
- player[player[playerid][caller]][calling] = false;
- stopphone(playerid);
- stopphone(player[playerid][caller]);
- player[player[playerid][caller]][caller] = 255;
- player[playerid][caller] = 255;
- }
- else if (player[playerid][caller] != 255)
- {
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
- stopphone(playerid);
- stopphone(player[playerid][caller]);
- player[player[playerid][caller]][caller] = 255;
- player[playerid][caller] = 255;
- }
- player[playerid][caller] = 255;
- player[playerid][calling] = false;
- }
- public OnPlayerText(playerid, text[])
- {
- if (!player[playerid][calling] || player[playerid][caller] == 255)
- {
- new string[128];
- format(string, 255, "(%d) %s", player[playerid][number], text);
- SendPlayerMessageToAll(playerid, string);
- }
- else
- {
- new str[158];
- GetPlayerName(playerid, str, 16);
- format(str, sizeof(str), "(Cellphone)%s : %s", str, text);
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, str);
- SendClientMessage(playerid, 0xBFC0C2FF, str);
- }
- return 0;
- }
- public OnPlayerPrivmsg(playerid, recieverid, text[])
- {
- new rname[MAX_PLAYER_NAME];
- new target = recieverid;
- GetPlayerName(target, rname, sizeof(rname));
- new string[255];
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- format(string, 255, "*** pm send to %s", rname);
- SendClientMessage(playerid, 0xBFC0C2FF, string);
- format(string, 255, "*** pm from %s: %s (%d)", name, text, player[playerid][number]);
- SendClientMessage(target, 0xBFC0C2FF, string);
- return 0;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- new cmd[128];
- new idx = 0;
- cmd = strtok(cmdtext, idx);
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/pickup", true) == 0)
- {
- if (player[playerid][caller] == 255)
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "Why should you pickup your phone?");
- return 1;
- }
- if (player[playerid][calling])
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "You already got your phone in your hands");
- return 1;
- }
- new name[16];
- GetPlayerName(playerid, name, 16);
- new string[41];
- format(string, sizeof(string), "* %s takes out a cellphone.", name);
- SendClientMessageToAll(0x0000FF66, string);
- startphone(playerid);
- player[playerid][calling] = true;
- player[player[playerid][caller]][calling] = true;
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "You hear a tone on the other side");
- return 1;
- }
- if(strcmp(cmd, "/hangup", true) == 0)
- {
- if (player[playerid][caller] != 255 && !player[playerid][calling])
- {
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
- stopphone(playerid);
- stopphone(player[playerid][caller]);
- player[player[playerid][caller]][caller] = 255;
- player[playerid][caller] = 255;
- return 1;
- }
- if (!player[playerid][calling])
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "You don't have a phone in your hands");
- return 1;
- }
- new name[16];
- GetPlayerName(playerid, name, 16);
- new string[57];
- format(string, sizeof(string), "* %s puts his cellphone back in his pocket.", name);
- SendClientMessageToAll(0x0000FF66, string);
- SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
- player[playerid][calling] = false;
- player[player[playerid][caller]][calling] = false;
- stopphone(playerid);
- stopphone(player[playerid][caller]);
- player[player[playerid][caller]][caller] = 255;
- player[playerid][caller] = 255;
- SendClientMessage(playerid, 0xBFC0C2FF, "(Cellphone) You hang up");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/call", true) == 0)
- {
- if (player[playerid][calling] || player[playerid][caller] != 255)
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "You are already on the phone. use /hangup to hangup");
- return 1;
- }
- new tmp[128];
- tmp = strtok(cmdtext, idx);
- if (!strlen(tmp))
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /call <phonenumber>");
- return 1;
- }
- new name[16];
- GetPlayerName(playerid, name, 16);
- new string[41];
- format(string, sizeof(string), "* %s takes out a cellphone.", name);
- SendClientMessageToAll(0x0000FF66, string);
- new phonenumb = strval(tmp);
- ////////////////////////////////////////////////////////////////////////////////
- if (phonenumb == 888) // here you can put your own numbers just copy for more
- {
- SendClientMessage(playerid, 0xFFFFFFAA, "you called 888");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- for(new i = 0; i <= MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- if(player[i][number] == phonenumb && phonenumb != 0 && !player[i][calling] && player[i][caller] == 255 && i != playerid)
- {
- format(string, sizeof(string), "%s is calling you...", name);
- SendClientMessage(i, 0xFFFF00AA, string);
- SendClientMessage(i, 0xFFFFFFFF, "Tip: Use /pickup to pick up the phone");
- GetPlayerName(i, name, sizeof(name));
- format(string, sizeof(string), "You are calling %s...", name);
- SendClientMessage(playerid, 0xFFFFFFAA, string);
- SendClientMessage(i, 0xFFFFFFFF, "Tip: You can cancel the callaing, by using /hangup");
- startphone(playerid);
- player[playerid][calling] = false;
- player[playerid][caller] = i;
- player[i][calling] = false;
- player[i][caller] = playerid;
- return 1;
- }
- }
- }
- SendClientMessage(playerid, 0xBFC0C2FF, "You here a busy tone.");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/SMS", true) == 0)
- {
- if (player[playerid][calling] || player[playerid][caller] != 255)
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "You are already on the phone. use /hangup to hangup");
- return 1;
- }
- new tmp[128];
- tmp = strtok(cmdtext, idx);
- if(!strlen(tmp))
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /SMS <phonenumber> <text chat>");
- return 1;
- }
- new name[16];
- GetPlayerName(playerid, name, 16);
- new string[52];
- format(string, sizeof(string), "* %s takes out a cellphone.", name);
- SendClientMessageToAll(0x0000FF66, string);
- new phonenumb = strval(tmp);
- new length = strlen(cmdtext);
- while ((idx < length) && (cmdtext[idx] <= ' '))
- {
- idx++;
- }
- new offset = idx;
- new result[64];
- while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
- {
- result[idx - offset] = cmdtext[idx];
- idx++;
- }
- result[idx - offset] = EOS;
- if(!strlen(result))
- {
- SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /SMS <phonenumber> <text chat>");
- return 1;
- }
- startphone(playerid);
- SetTimerEx("stopphone", 5000, 0, "%d", playerid);
- ////////////////////////////////////////////////////////////////////////////////
- if(phonenumb == 666) // here you can put your own numbers just copy for more
- {
- SendClientMessage(playerid, 0xFFFFFFAA, "you called 666");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- for(new i = 0; i <= MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- if(player[i][number] == phonenumb && phonenumb != 0 && !player[i][calling] && player[i][caller] == 255 && i != playerid)
- {
- if(GetPlayerMoney(playerid) >= txtcost)
- {
- format(string, sizeof(string), "SMS: %s From %s (%d)", result,name,player[playerid][number]);
- SendClientMessage(playerid, 0xFFFFFFAA, "Text Message Delivered");
- SendClientMessage(i, 0xFFFF00AA, string);
- format(string, sizeof(string), "~r~$-%d", txtcost);
- GameTextForPlayer(playerid, string, 5000, 1);
- GivePlayerMoney(playerid,-txtcost);
- PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
- return 1;
- }
- else
- {
- format(string, 255, "you dont have enough money to SMS, a SMS costs $%d", txtcost);
- SendClientMessage(playerid, 0xFFFF00AA, string);
- return 1;
- }
- }
- }
- }
- SendClientMessage(playerid, 0xBFC0C2FF, " ..Message Delivery Failed");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/pb", true) == 0 || strcmp(cmd, "/phonebook", true) == 0)
- {
- new string[23];
- SendClientMessage(playerid, 0xC0C0C0FF, "|_ Phone Book _|");
- for(new p = 0; p <= MAX_PLAYERS; p++)
- {
- if (IsPlayerConnected(p) && player[p][number] != 0)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(p, name, sizeof(name));
- format(string, 255, "%s : %d", name, player[p][number]);
- SendClientMessage(playerid, 0x33AA33AA, string);
- }
- }
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/mpn", true) == 0 || strcmp(cmd, "/myphonenumber", true) == 0)
- {
- new string[37];
- SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
- format(string, 255, "Your personal phonenumber is > %d <", player[playerid][number]);
- SendClientMessage(playerid, 0x33AA33AA, string);
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/ph", true) == 0 || strcmp(cmd, "/phonehelp", true) == 0)
- {
- new string[56];
- SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
- SendClientMessage(playerid, 0xBFC0C2FF, "Use /call to call to an specicified number.");
- SendClientMessage(playerid, 0x33AA33AA, "Use /pickup to get your cellphone out of your pocket");
- SendClientMessage(playerid, 0xBFC0C2FF, "Use /hangup to put your cellphone back in your pocket");
- format(string, 255, "Use /SMS to sms your friend in private, a SMS cost $%d", txtcost);
- SendClientMessage(playerid, 0x33AA33AA, string);
- SendClientMessage(playerid, 0xBFC0C2FF, "Use /pb or /phonebook to see the phonenumbers of the online players");
- SendClientMessage(playerid, 0x33AA33AA, "Use /mpn or /myphonenumber to see your own phonenumber");
- SendClientMessage(playerid, 0xBFC0C2FF, "Use /pc or /phonecredits to see the credits");
- return 1;
- }
- ////////////////////////////////////////////////////////////////////////////////
- if(strcmp(cmd, "/pc", true) == 0 || strcmp(cmd, "/phonecredits", true) == 0)
- {
- SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
- SendClientMessage(playerid, 0x33AA33AA, "All credits of this phone system go's to NoZer0 a.k.a Daplayer");
- return 1;
- }
- return 0;
- }
- stock strtok(const string[], &index,seperator=' ')
- {
- new length = strlen(string);
- new offset = index;
- new result[128];
- while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
- {
- result[index - offset] = string[index];
- index++;
- }
- result[index - offset] = EOS;
- if ((index < length) && (string[index] == seperator))
- {
- index++;
- }
- return result;
- }
- public stopphone(playerid)
- {
- SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
- return 1;
- }
- public startphone(playerid)
- {
- SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
- return 1;
- }
- stock NumberUsed(playerid)
- {
- for(new i=0; i<MAX_PLAYERS; i++)
- if (player[i][number] == player[playerid][number] && i != playerid) return 1;
- #if Save==1
- if (fexist("numbers_used.txt"))
- {
- new File:ftw = fopen("numbers_used.txt", io_read);
- new tmp[7];
- while(fread(ftw, tmp))
- {
- printf("[%d]", strval(tmp));
- if (strval(tmp) == player[playerid][number]) return 1;
- }
- fclose(ftw);
- }
- #endif
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement