Advertisement
Guest User

NoZer0

a guest
May 11th, 2009
6,160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.17 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. #define Save 1
  4.  
  5. forward check(playerid);
  6. forward stopphone(playerid);
  7. forward startphone(playerid);
  8.  
  9. #define txtcost 1
  10.  
  11. enum player_enum
  12. {
  13.     bool:calling,
  14.     caller,
  15.     number
  16. }
  17. new player[MAX_PLAYERS][player_enum];
  18.  
  19. public OnFilterScriptInit()
  20. {
  21.     print("\n--------------------------------------");
  22.     print("     cellphone system ready             ");
  23.     print("______________________________________");
  24.     print("by NoZer0 a.k.a Daplayer (2009)       ");
  25.     print("--------------------------------------\n");
  26.     return 1;
  27. }
  28.  
  29. public OnPlayerConnect(playerid)
  30. {
  31.     SendClientMessage(playerid, 0x33AA33AA, "This server is using NoZer0's phone system   (2009)");
  32.  
  33.     player[playerid][calling] = false;
  34.     player[playerid][caller] = 255;
  35.  
  36.     GivePlayerMoney(playerid, 500);
  37.  
  38.     #if Save==0
  39.         do
  40.         {
  41.             player[playerid][number] = 1000 + random(8999);
  42.         }
  43.         while(NumberUsed(playerid));
  44.     #else
  45.         new file[20];
  46.         GetPlayerName(playerid, file, 16);
  47.         format(file, sizeof(file), "%s.txt", file);
  48.         if (fexist(file))
  49.         {
  50.             new File:ftw = fopen(file, io_read);
  51.             new tmp[5];
  52.             fread(ftw, tmp);
  53.             player[playerid][number] = strval(tmp);
  54.             fclose(ftw);
  55.         }
  56.         else
  57.         {
  58.             do
  59.             {
  60.                 player[playerid][number] = 1000 + random(8999);
  61.             }
  62.             while(NumberUsed(playerid));
  63.  
  64.             new File:handle1 = fopen(file, io_write);
  65.             new tmp[6];
  66.             format(tmp, 5, "%d", player[playerid][number]);
  67.             fwrite(handle1, tmp);
  68.             fclose(handle1);
  69.             new File:handle2;
  70.             if (!fexist("numbers_used.txt"))
  71.             {
  72.                 format(tmp, 7, "%d", player[playerid][number]);
  73.                 handle2 = fopen("numbers_used.txt", io_write);
  74.                 fwrite(handle2, tmp);
  75.                 fclose(handle2);
  76.             }
  77.             else
  78.             {
  79.                 format(tmp, 7, "\r\n%d", player[playerid][number]);
  80.                 handle2 = fopen("numbers_used.txt", io_append);
  81.                 fwrite(handle2, tmp);
  82.                 fclose(handle2);
  83.             }
  84.         }
  85.     #endif
  86.     return 1;
  87. }
  88.  
  89. public OnPlayerDisconnect(playerid, reason)
  90. {
  91.     if (player[playerid][calling])
  92.     {
  93.         SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
  94.         player[playerid][calling] = false;
  95.         player[player[playerid][caller]][calling] = false;
  96.         stopphone(playerid);
  97.         stopphone(player[playerid][caller]);
  98.         player[player[playerid][caller]][caller] = 255;
  99.         player[playerid][caller] = 255;
  100.     }
  101.     else if (player[playerid][caller] != 255)
  102.     {
  103.         SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
  104.         stopphone(playerid);
  105.         stopphone(player[playerid][caller]);
  106.         player[player[playerid][caller]][caller] = 255;
  107.         player[playerid][caller] = 255;
  108.     }
  109.     player[playerid][caller] = 255;
  110.     player[playerid][calling] = false;
  111. }
  112.  
  113. public OnPlayerText(playerid, text[])
  114. {
  115.     if (!player[playerid][calling] || player[playerid][caller] == 255)
  116.     {
  117.         new string[128];
  118.         format(string, 255, "(%d) %s", player[playerid][number], text);
  119.         SendPlayerMessageToAll(playerid, string);
  120.     }
  121.     else
  122.     {
  123.         new str[158];
  124.         GetPlayerName(playerid, str, 16);
  125.         format(str, sizeof(str), "(Cellphone)%s : %s", str, text);
  126.         SendClientMessage(player[playerid][caller], 0xBFC0C2FF, str);
  127.         SendClientMessage(playerid, 0xBFC0C2FF, str);
  128.     }
  129.     return 0;
  130. }
  131.  
  132. public OnPlayerPrivmsg(playerid, recieverid, text[])
  133. {
  134.     new rname[MAX_PLAYER_NAME];
  135.     new target = recieverid;
  136.     GetPlayerName(target, rname, sizeof(rname));
  137.     new string[255];
  138.     new name[MAX_PLAYER_NAME];
  139.     GetPlayerName(playerid, name, sizeof(name));
  140.     format(string, 255, "*** pm send to %s", rname);
  141.     SendClientMessage(playerid, 0xBFC0C2FF, string);
  142.     format(string, 255, "*** pm from %s: %s   (%d)", name, text, player[playerid][number]);
  143.     SendClientMessage(target, 0xBFC0C2FF, string);
  144.     return 0;
  145. }
  146.  
  147. public OnPlayerCommandText(playerid, cmdtext[])
  148. {
  149.     new cmd[128];
  150.     new idx = 0;
  151.     cmd = strtok(cmdtext, idx);
  152.     ////////////////////////////////////////////////////////////////////////////////
  153.     if(strcmp(cmd, "/pickup", true) == 0)
  154.     {
  155.         if (player[playerid][caller] == 255)
  156.         {
  157.             SendClientMessage(playerid, 0xBFC0C2FF, "Why should you pickup your phone?");
  158.             return 1;
  159.         }
  160.         if (player[playerid][calling])
  161.         {
  162.             SendClientMessage(playerid, 0xBFC0C2FF, "You already got your phone in your hands");
  163.             return 1;
  164.         }
  165.         new name[16];
  166.         GetPlayerName(playerid, name, 16);
  167.         new string[41];
  168.         format(string, sizeof(string), "* %s takes out a cellphone.", name);
  169.         SendClientMessageToAll(0x0000FF66, string);
  170.         startphone(playerid);
  171.         player[playerid][calling] = true;
  172.         player[player[playerid][caller]][calling] = true;
  173.         SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "You hear a tone on the other side");
  174.         return 1;
  175.     }
  176.     if(strcmp(cmd, "/hangup", true) == 0)
  177.     {
  178.         if (player[playerid][caller] != 255 && !player[playerid][calling])
  179.         {
  180.             SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
  181.             stopphone(playerid);
  182.             stopphone(player[playerid][caller]);
  183.             player[player[playerid][caller]][caller] = 255;
  184.             player[playerid][caller] = 255;
  185.             return 1;
  186.         }
  187.         if (!player[playerid][calling])
  188.         {
  189.             SendClientMessage(playerid, 0xBFC0C2FF, "You don't have a phone in your hands");
  190.             return 1;
  191.         }
  192.         new name[16];
  193.         GetPlayerName(playerid, name, 16);
  194.         new string[57];
  195.         format(string, sizeof(string), "* %s puts his cellphone back in his pocket.", name);
  196.         SendClientMessageToAll(0x0000FF66, string);
  197.         SendClientMessage(player[playerid][caller], 0xBFC0C2FF, "(Cellphone) User hang up");
  198.         player[playerid][calling] = false;
  199.         player[player[playerid][caller]][calling] = false;
  200.         stopphone(playerid);
  201.         stopphone(player[playerid][caller]);
  202.         player[player[playerid][caller]][caller] = 255;
  203.         player[playerid][caller] = 255;
  204.         SendClientMessage(playerid, 0xBFC0C2FF, "(Cellphone) You hang up");
  205.         return 1;
  206.     }
  207.     ////////////////////////////////////////////////////////////////////////////////
  208.     if(strcmp(cmd, "/call", true) == 0)
  209.     {
  210.         if (player[playerid][calling] || player[playerid][caller] != 255)
  211.         {
  212.             SendClientMessage(playerid, 0xBFC0C2FF, "You are already on the phone. use /hangup to hangup");
  213.             return 1;
  214.         }
  215.  
  216.         new tmp[128];
  217.         tmp = strtok(cmdtext, idx);
  218.         if (!strlen(tmp))
  219.         {
  220.             SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /call <phonenumber>");
  221.             return 1;
  222.         }
  223.         new name[16];
  224.         GetPlayerName(playerid, name, 16);
  225.         new string[41];
  226.         format(string, sizeof(string), "* %s takes out a cellphone.", name);
  227.         SendClientMessageToAll(0x0000FF66, string);
  228.         new phonenumb = strval(tmp);
  229.  
  230.     ////////////////////////////////////////////////////////////////////////////////
  231.  
  232.         if (phonenumb == 888)  // here you can put your own numbers just copy for more
  233.         {
  234.              SendClientMessage(playerid, 0xFFFFFFAA, "you called 888");
  235.              return 1;
  236.         }
  237.  
  238.     ////////////////////////////////////////////////////////////////////////////////
  239.  
  240.         for(new i = 0; i <= MAX_PLAYERS; i++)
  241.         {
  242.             if(IsPlayerConnected(i))
  243.             {
  244.                 if(player[i][number] == phonenumb && phonenumb != 0 && !player[i][calling] && player[i][caller] == 255 && i != playerid)
  245.                 {
  246.                     format(string, sizeof(string), "%s is calling you...", name);
  247.                     SendClientMessage(i, 0xFFFF00AA, string);
  248.                     SendClientMessage(i, 0xFFFFFFFF, "Tip: Use /pickup to pick up the phone");
  249.                     GetPlayerName(i, name, sizeof(name));
  250.                     format(string, sizeof(string), "You are calling %s...", name);
  251.                     SendClientMessage(playerid, 0xFFFFFFAA, string);
  252.                     SendClientMessage(i, 0xFFFFFFFF, "Tip: You can cancel the callaing, by using /hangup");
  253.                     startphone(playerid);
  254.                     player[playerid][calling] = false;
  255.                     player[playerid][caller] = i;
  256.                     player[i][calling] = false;
  257.                     player[i][caller] = playerid;
  258.                     return 1;
  259.                 }
  260.             }
  261.         }
  262.         SendClientMessage(playerid, 0xBFC0C2FF, "You here a busy tone.");
  263.         return 1;
  264.     }
  265.     ////////////////////////////////////////////////////////////////////////////////
  266.     if(strcmp(cmd, "/SMS", true) == 0)
  267.     {
  268.         if (player[playerid][calling] || player[playerid][caller] != 255)
  269.         {
  270.             SendClientMessage(playerid, 0xBFC0C2FF, "You are already on the phone. use /hangup to hangup");
  271.             return 1;
  272.         }
  273.  
  274.         new tmp[128];
  275.         tmp = strtok(cmdtext, idx);
  276.         if(!strlen(tmp))
  277.         {
  278.             SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /SMS <phonenumber> <text chat>");
  279.             return 1;
  280.         }
  281.         new name[16];
  282.         GetPlayerName(playerid, name, 16);
  283.  
  284.         new string[52];
  285.         format(string, sizeof(string), "* %s takes out a cellphone.", name);
  286.         SendClientMessageToAll(0x0000FF66, string);
  287.         new phonenumb = strval(tmp);
  288.         new length = strlen(cmdtext);
  289.         while ((idx < length) && (cmdtext[idx] <= ' '))
  290.         {
  291.             idx++;
  292.         }
  293.         new offset = idx;
  294.         new result[64];
  295.         while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
  296.         {
  297.             result[idx - offset] = cmdtext[idx];
  298.             idx++;
  299.         }
  300.         result[idx - offset] = EOS;
  301.         if(!strlen(result))
  302.         {
  303.             SendClientMessage(playerid, 0xBFC0C2FF, "USAGE: /SMS <phonenumber> <text chat>");
  304.             return 1;
  305.         }
  306.  
  307.         startphone(playerid);
  308.         SetTimerEx("stopphone", 5000, 0, "%d", playerid);
  309.  
  310.     ////////////////////////////////////////////////////////////////////////////////
  311.  
  312.         if(phonenumb == 666) // here you can put your own numbers just copy for more
  313.         {
  314.              SendClientMessage(playerid, 0xFFFFFFAA, "you called 666");
  315.              return 1;
  316.         }
  317.  
  318.     ////////////////////////////////////////////////////////////////////////////////
  319.  
  320.         for(new i = 0; i <= MAX_PLAYERS; i++)
  321.         {
  322.             if(IsPlayerConnected(i))
  323.             {
  324.                 if(player[i][number] == phonenumb && phonenumb != 0 && !player[i][calling] && player[i][caller] == 255 && i != playerid)
  325.                 {
  326.                     if(GetPlayerMoney(playerid) >= txtcost)
  327.                     {
  328.                         format(string, sizeof(string), "SMS: %s   From %s (%d)", result,name,player[playerid][number]);
  329.                         SendClientMessage(playerid, 0xFFFFFFAA, "Text Message Delivered");
  330.                         SendClientMessage(i, 0xFFFF00AA, string);
  331.                         format(string, sizeof(string), "~r~$-%d", txtcost);
  332.                         GameTextForPlayer(playerid, string, 5000, 1);
  333.                         GivePlayerMoney(playerid,-txtcost);
  334.                         PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
  335.                         return 1;
  336.                     }
  337.                     else
  338.                     {
  339.                         format(string, 255, "you dont have enough money to SMS, a SMS costs $%d", txtcost);
  340.                         SendClientMessage(playerid, 0xFFFF00AA, string);
  341.                         return 1;
  342.                     }
  343.                 }
  344.             }
  345.         }
  346.         SendClientMessage(playerid, 0xBFC0C2FF, "  ..Message Delivery Failed");
  347.         return 1;
  348.     }
  349.     ////////////////////////////////////////////////////////////////////////////////
  350.     if(strcmp(cmd, "/pb", true) == 0 || strcmp(cmd, "/phonebook", true) == 0)
  351.     {
  352.         new string[23];
  353.         SendClientMessage(playerid, 0xC0C0C0FF, "|_ Phone Book _|");
  354.         for(new p = 0; p <= MAX_PLAYERS; p++)
  355.         {
  356.             if (IsPlayerConnected(p) && player[p][number] != 0)
  357.             {
  358.                 new name[MAX_PLAYER_NAME];
  359.                 GetPlayerName(p, name, sizeof(name));
  360.                 format(string, 255, "%s : %d", name, player[p][number]);
  361.                 SendClientMessage(playerid, 0x33AA33AA, string);
  362.             }
  363.         }
  364.         return 1;
  365.     }
  366.     ////////////////////////////////////////////////////////////////////////////////
  367.     if(strcmp(cmd, "/mpn", true) == 0 || strcmp(cmd, "/myphonenumber", true) == 0)
  368.     {
  369.         new string[37];
  370.         SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
  371.         format(string, 255, "Your personal phonenumber is > %d <", player[playerid][number]);
  372.         SendClientMessage(playerid, 0x33AA33AA, string);
  373.         return 1;
  374.     }
  375.     ////////////////////////////////////////////////////////////////////////////////
  376.     if(strcmp(cmd, "/ph", true) == 0 || strcmp(cmd, "/phonehelp", true) == 0)
  377.     {
  378.         new string[56];
  379.         SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
  380.         SendClientMessage(playerid, 0xBFC0C2FF, "Use /call to call to an specicified number.");
  381.         SendClientMessage(playerid, 0x33AA33AA, "Use /pickup to get your cellphone out of your pocket");
  382.         SendClientMessage(playerid, 0xBFC0C2FF, "Use /hangup to put your cellphone back in your pocket");
  383.         format(string, 255, "Use /SMS to sms your friend in private, a SMS cost $%d", txtcost);
  384.         SendClientMessage(playerid, 0x33AA33AA, string);
  385.         SendClientMessage(playerid, 0xBFC0C2FF, "Use /pb or /phonebook to see the phonenumbers of the online players");
  386.         SendClientMessage(playerid, 0x33AA33AA, "Use /mpn or /myphonenumber to see your own phonenumber");
  387.         SendClientMessage(playerid, 0xBFC0C2FF, "Use /pc or /phonecredits to see the credits");
  388.         return 1;
  389.     }
  390.     ////////////////////////////////////////////////////////////////////////////////
  391.     if(strcmp(cmd, "/pc", true) == 0 || strcmp(cmd, "/phonecredits", true) == 0)
  392.     {
  393.         SendClientMessage(playerid, 0xC0C0C0FF, "|_ Cell Phone System _|");
  394.         SendClientMessage(playerid, 0x33AA33AA, "All credits of this phone system go's to NoZer0 a.k.a Daplayer");
  395.         return 1;
  396.     }
  397.     return 0;
  398. }
  399.  
  400. stock strtok(const string[], &index,seperator=' ')
  401. {
  402.     new length = strlen(string);
  403.     new offset = index;
  404.     new result[128];
  405.     while ((index < length) && (string[index] != seperator) && ((index - offset) < (sizeof(result) - 1)))
  406.     {
  407.         result[index - offset] = string[index];
  408.         index++;
  409.     }
  410.  
  411.     result[index - offset] = EOS;
  412.     if ((index < length) && (string[index] == seperator))
  413.     {
  414.         index++;
  415.     }
  416.     return result;
  417. }
  418.  
  419. public stopphone(playerid)
  420. {
  421.     SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
  422.     return 1;
  423. }
  424.  
  425. public startphone(playerid)
  426. {
  427.     SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
  428.     return 1;
  429. }
  430.  
  431. stock NumberUsed(playerid)
  432. {
  433.     for(new i=0; i<MAX_PLAYERS; i++)
  434.         if (player[i][number] == player[playerid][number] && i != playerid) return 1;
  435.  
  436.     #if Save==1
  437.         if (fexist("numbers_used.txt"))
  438.         {
  439.             new File:ftw = fopen("numbers_used.txt", io_read);
  440.             new tmp[7];
  441.             while(fread(ftw, tmp))
  442.             {
  443.                 printf("[%d]", strval(tmp));
  444.                 if (strval(tmp) == player[playerid][number]) return 1;
  445.             }
  446.             fclose(ftw);
  447.         }
  448.     #endif
  449.     return 0;
  450. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement