Advertisement
Guest User

Xeretta

a guest
Nov 9th, 2009
1,380
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.57 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. //
  3. //   Celular call Filter Script v1.0
  4. //   Designed for SA-MP v0.2.2
  5. //
  6. //   http://forum.sa-mp.com/index.php?topic=42009.0
  7. //
  8. //   Created by zeruel_angel
  9. //
  10. //------------------------------------------------------------------------------
  11. #include <a_samp>
  12.  
  13. #define COLOR_CALL 0xBFC0C2FF
  14. #define COLOR_YELLOW 0xFFFF00AA
  15.  
  16. #define DEAD_TIMER_ID -666
  17.  
  18. #define LIBRE 0
  19. #define ESTA_LLAMANDO 1
  20. #define LO_ESTAN_LLAMANDO 2
  21. #define ESTA_HABLANDO 3
  22. //------------------------------------------------------------------------------
  23. //               HOW MUCH MONEY COST A SECOND
  24. #define PRECIO_FICHA 2
  25. //------------------------------------------------------------------------------
  26. new CellState[MAX_PLAYERS];
  27. new AuxiliarTel[MAX_PLAYERS];
  28. new CellTime[MAX_PLAYERS];
  29. new TimerLLamando[MAX_PLAYERS]={DEAD_TIMER_ID,...};
  30. new TimerCaidaFicha[MAX_PLAYERS];
  31.  
  32. forward ColgarTelefonino(playerid);
  33. forward Llamando(callerid,receiverid);
  34. forward CaidaDeFicha(playerid);
  35. //------------------------------------------------------------------------------
  36. public CaidaDeFicha(playerid)
  37. {
  38.     CellTime[playerid]++;
  39. }
  40. //------------------------------------------------------------------------------
  41. msgInfo(playerid,text[])
  42. {
  43.     new msg[255];
  44.     format(msg,255,"- %s",text);
  45.     SendClientMessage(playerid, COLOR_YELLOW, msg);
  46.     return 1;
  47. }
  48. //------------------------------------------------------------------------------------------------------
  49. Float:GetDistanceToPoint(playerid,Float:x2,Float:y2,Float:z2)
  50. {
  51.     if (IsPlayerConnected(playerid))
  52.     {
  53.         new Float:x1,Float:y1,Float:z1;
  54.         GetPlayerPos(playerid,x1,y1,z1);
  55.         return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  56.     }
  57.     return 9999.9;
  58. }
  59. //------------------------------------------------------------------------------
  60. AlTelefono(playerid,text[])
  61. {
  62.     new msg[255];
  63.     format(msg,255,"- [CELULAR]: %s",text);
  64.     SendClientMessage(playerid, COLOR_CALL, msg);
  65.     return 1;
  66. }
  67. //------------------------------------------------------------------------------
  68. public OnFilterScriptInit()
  69. {
  70.     return 1;
  71. }
  72. //------------------------------------------------------------------------------
  73. public Llamando(callerid,receiverid)
  74. {
  75.     if ((!IsPlayerConnected(receiverid))&&(IsPlayerConnected(callerid)))
  76.     {
  77.         msgInfo(callerid,"- [CELULAR]: Player offline!");
  78.         if  (TimerLLamando[callerid]!=DEAD_TIMER_ID)
  79.         {
  80.             KillTimer(TimerLLamando[callerid]);
  81.             TimerLLamando[callerid]=DEAD_TIMER_ID;
  82.             TimerLLamando[receiverid]=DEAD_TIMER_ID;
  83.             CellState[callerid]=LIBRE;
  84.             CellState[receiverid]=LIBRE;
  85.         }
  86.         return 1;
  87.     }
  88.     if ((IsPlayerConnected(receiverid))&&(!IsPlayerConnected(callerid)))
  89.     {
  90.         msgInfo(receiverid,"- [CELULAR]: Player offline!");
  91.         if  (TimerLLamando[receiverid]!=DEAD_TIMER_ID)
  92.         {
  93.             KillTimer(TimerLLamando[receiverid]);
  94.             TimerLLamando[callerid]=DEAD_TIMER_ID;
  95.             TimerLLamando[receiverid]=DEAD_TIMER_ID;
  96.             CellState[callerid]=LIBRE;
  97.             CellState[receiverid]=LIBRE;
  98.         }
  99.         return 1;
  100.     }
  101.     if ((!IsPlayerConnected(receiverid))&&(!IsPlayerConnected(callerid)))
  102.     {
  103.         if  (TimerLLamando[callerid]!=DEAD_TIMER_ID)
  104.         {
  105.             KillTimer(TimerLLamando[callerid]);
  106.         }
  107.         if  (TimerLLamando[receiverid]!=DEAD_TIMER_ID)
  108.         {
  109.             KillTimer(TimerLLamando[receiverid]);
  110.         }
  111.         TimerLLamando[callerid]=DEAD_TIMER_ID;
  112.         TimerLLamando[receiverid]=DEAD_TIMER_ID;
  113.         CellState[callerid]=LIBRE;
  114.         CellState[receiverid]=LIBRE;
  115.         return 1;
  116.     }
  117.     if  ((CellState[callerid] == ESTA_LLAMANDO)&&(CellState[receiverid] == LO_ESTAN_LLAMANDO))
  118.     {
  119.         new msg[256];
  120.         new callerName[MAX_PLAYER_NAME];
  121.         msgInfo(callerid,"- [CELULAR]: Chamando...");
  122.         GetPlayerName(callerid, callerName, sizeof(callerName));
  123.         format(msg, sizeof(msg), "- [CELULAR TOCANDO]: (/a)tender | (/d)esligar, Chamada de: %s", callerName);
  124.         msgInfo(receiverid, msg);
  125.         return 1;
  126.     }
  127.     return 1;
  128. }
  129.  
  130. //------------------------------------------------------------------------------
  131. public ColgarTelefonino(playerid)
  132. {
  133.     SetPlayerSpecialAction(playerid,SPECIAL_ACTION_STOPUSECELLPHONE);
  134.     return 1;
  135. }
  136. //------------------------------------------------------------------------------
  137. public OnPlayerText(playerid, text[])
  138. {
  139.     if (CellState[playerid]==ESTA_HABLANDO)
  140.     {
  141.         new msg[255];
  142.         format(msg,sizeof(msg),"- [CELULAR]: %s",text);
  143.         AlTelefono(AuxiliarTel[playerid],text);
  144.         new Float:x1,Float:y1,Float:z1;
  145.         GetPlayerPos(playerid,x1,y1,z1);
  146.         for (new i=0;i<MAX_PLAYERS;i++)
  147.         {
  148.             if  (GetDistanceToPoint(i,x1,y1,z1)<20.0)
  149.             {
  150.                 SendPlayerMessageToPlayer(i,playerid,msg);
  151.             }
  152.         }
  153.         return 0;
  154.     }
  155.     return 1;
  156. }
  157. //------------------------------------------------------------------------------
  158. public OnPlayerConnect(playerid)
  159. {
  160.     CellState[playerid]=LIBRE;
  161.     AuxiliarTel[playerid]=-1;
  162.     CellTime[playerid]=0;
  163.     TimerLLamando[playerid]=DEAD_TIMER_ID;
  164.     TimerCaidaFicha[playerid]=DEAD_TIMER_ID;
  165.     return 1;
  166. }
  167. //------------------------------------------------------------------------------
  168. public OnPlayerDisconnect(playerid)
  169. {
  170.     OnPlayerCommandText(playerid,"/h");
  171.     return 1;
  172. }
  173. //------------------------------------------------------------------------------
  174. public OnPlayerCommandText(playerid,cmdtext[])
  175. {
  176.     new cmd[256];
  177.     new tmp[256];
  178.     new idx;
  179.     cmd = strtok(cmdtext, idx);
  180.    
  181.     if(strcmp(cmd, "/ligar", true) == 0)
  182.     {
  183.         if(IsPlayerConnected(playerid))
  184.         {
  185.             if(CellState[playerid]==ESTA_LLAMANDO)
  186.             {
  187.                 msgInfo(playerid, "- [CELULAR]: Voc� est� ligando, voc� pode cancelar, (/d)esligar.");
  188.                 return 1;
  189.             }
  190.             if(CellState[playerid]==LO_ESTAN_LLAMANDO)
  191.             {
  192.                 msgInfo(playerid, "- [CELULAR TOCANDO]: (/a)tender | (/d)esligar.");
  193.                 return 1;
  194.             }
  195.             SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
  196.             tmp = strtok(cmdtext, idx);
  197.             if  (!strlen(tmp))
  198.             {
  199.                 msgInfo(playerid, "- [CELULAR]: USO: /ligar [id]");
  200.                 SetTimerEx("ColgarTelefonino",1200,0,"d",playerid);
  201.                 return 1;
  202.             }
  203.             new numTel = strval(tmp);
  204.             if (playerid == numTel)
  205.             {
  206.                 msgInfo(playerid,"- [CELULAR]: Ocupado...");
  207.                 SetTimerEx("ColgarTelefonino",1200,0,"d",playerid);
  208.                 return 1;
  209.             }
  210.             if  (!IsPlayerConnected(numTel))
  211.                 {
  212.                     msgInfo(playerid, "- [CELULAR]: Player offline!");
  213.                     SetTimerEx("ColgarTelefonino",1200,0,"d",playerid);
  214.                     return 1;
  215.                 }
  216.             if (CellState[numTel]==LIBRE)
  217.             {
  218.                 CellState[numTel] = LO_ESTAN_LLAMANDO;
  219.                 CellState[playerid] = ESTA_LLAMANDO;
  220.                 AuxiliarTel[playerid] = numTel;
  221.                 AuxiliarTel[numTel] = playerid;
  222.                 TimerLLamando[playerid]=SetTimerEx("Llamando",2000,true,"ii",playerid,numTel);
  223.                 TimerLLamando[numTel]=TimerLLamando[playerid];
  224.                 return 1;
  225.             }
  226.             else
  227.             {
  228.                 msgInfo(playerid, "- [CELULAR]: Ocupado...");
  229.                 SetTimerEx("ColgarTelefonino",1200,0,"d",playerid);
  230.                 return 1;
  231.             }
  232.         }
  233.         return 1;
  234.     }
  235.     if(strcmp(cmd, "/atender", true) == 0 || strcmp(cmd, "/a", true) == 0)
  236.     {
  237.         if(IsPlayerConnected(playerid))
  238.         {
  239.             if(CellState[playerid] != LO_ESTAN_LLAMANDO)
  240.             {
  241.                 SendClientMessage(playerid, COLOR_CALL, "- [CELULAR]: N�o tem ningu�m te ligando!");
  242.                 return 1;
  243.             }
  244.             SetPlayerSpecialAction(playerid,SPECIAL_ACTION_USECELLPHONE);
  245.             msgInfo(playerid, "- [CELULAR]: Celular atendido...");
  246.             msgInfo(AuxiliarTel[playerid],"- [CELULAR]: Celular atendido...");
  247.             TimerCaidaFicha[AuxiliarTel[playerid]]=SetTimerEx("CaidaDeFicha",500,true,"i",AuxiliarTel[playerid]);
  248.             CellState[playerid]=ESTA_HABLANDO;
  249.             CellState[AuxiliarTel[playerid]]=ESTA_HABLANDO;
  250.             return 1;
  251.         }
  252.         return 1;
  253.     }
  254.     if(strcmp(cmd, "/desligar", true) == 0 || strcmp(cmd, "/d", true) == 0)
  255.     {
  256.         if  (CellState[playerid] == LIBRE)
  257.         {
  258.             msgInfo(playerid, "- [CELULAR]: Voc� n�o est� usando o celular!");
  259.             return 1;
  260.         }
  261.         if  (CellState[playerid] == ESTA_LLAMANDO)
  262.         {
  263.             msgInfo(playerid, "- [CELULAR]: Desligado, chamada encerrada!");
  264.             msgInfo(AuxiliarTel[playerid], "- [CELULAR]: Desligado, chamada encerrada!");
  265.             SetTimerEx("ColgarTelefonino",500,0,"d",playerid);
  266.             KillTimer(TimerLLamando[playerid]);
  267.             TimerLLamando[playerid]=DEAD_TIMER_ID;
  268.             TimerLLamando[AuxiliarTel[playerid]]=DEAD_TIMER_ID;
  269.             CellState[playerid]=LIBRE;
  270.             CellState[AuxiliarTel[playerid]]=LIBRE;
  271.             return 1;
  272.         }
  273.         if  (CellState[playerid] == LO_ESTAN_LLAMANDO)
  274.         {
  275.             msgInfo(playerid, "- [CELULAR]: Desligado, chamada encerrada!");
  276.             msgInfo(AuxiliarTel[playerid], "- [CELULAR]: Desligado, chamada encerrada!");
  277.             SetTimerEx("ColgarTelefonino",500,0,"d",AuxiliarTel[playerid]);
  278.             KillTimer(TimerLLamando[playerid]);
  279.             TimerLLamando[playerid]=DEAD_TIMER_ID;
  280.             TimerLLamando[AuxiliarTel[playerid]]=DEAD_TIMER_ID;
  281.             CellState[playerid]=LIBRE;
  282.             CellState[AuxiliarTel[playerid]]=LIBRE;
  283.             return 1;
  284.         }
  285.         if  (CellState[playerid] == ESTA_HABLANDO)
  286.         {
  287.             msgInfo(playerid, "- [CELULAR]: Desligado, chamada encerrada!");
  288.             msgInfo(AuxiliarTel[playerid], "- [CELULAR]: Desligado, chamada encerrada!");
  289.             SetTimerEx("ColgarTelefonino",500,0,"d",playerid);
  290.             SetTimerEx("ColgarTelefonino",500,0,"d",AuxiliarTel[playerid]);
  291.             if  (TimerCaidaFicha[playerid]!=DEAD_TIMER_ID)
  292.             {
  293.                 KillTimer(TimerLLamando[playerid]);
  294.                 TimerCaidaFicha[playerid]=DEAD_TIMER_ID;
  295.                 /*new msg[255];
  296.                 format(msg,sizeof(msg),"- [CELULAR]: A chamada custou: $%d",CellTime[playerid]*PRECIO_FICHA);
  297.                 msgInfo(playerid, msg);*/
  298.             }
  299.             if  (TimerCaidaFicha[AuxiliarTel[playerid]]!=DEAD_TIMER_ID)
  300.             {
  301.                 KillTimer(TimerLLamando[AuxiliarTel[playerid]]);
  302.                 TimerCaidaFicha[AuxiliarTel[playerid]]=DEAD_TIMER_ID;
  303.                 /*new msg[255];
  304.                 format(msg,sizeof(msg),"- [CELULAR]: A chamada custou: $%d",CellTime[AuxiliarTel[playerid]]*PRECIO_FICHA);
  305.                 msgInfo(AuxiliarTel[playerid], msg);*/
  306.             }
  307.             CellState[playerid]=LIBRE;
  308.             CellState[AuxiliarTel[playerid]]=LIBRE;
  309.         }
  310.         return 1;
  311.     }
  312.     return 0;
  313. }
  314. //=====================================================================================================
  315.  strtok(const string[], &index)
  316. {
  317.     new length = strlen(string);
  318.     while ((index < length) && (string[index] <= ' '))
  319.     {
  320.         index++;
  321.     }
  322.  
  323.     new offset = index;
  324.     new result[20];
  325.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  326.     {
  327.         result[index - offset] = string[index];
  328.         index++;
  329.     }
  330.     result[index - offset] = EOS;
  331.     return result;
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement