Nyft_

SISTEMA: Base explosão de caixas ~Nyft

Sep 18th, 2021
1,113
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include a_samp
  2. #include pawn.cmd
  3. #include YSI_Coding\y_va
  4.  
  5. /*
  6.  
  7.     * Sobre a include "y_va":
  8.  
  9.       - Não é necessário usá-la;
  10.       - Só usei para não precisar formatar mensagens com argumentos;
  11.  
  12. */
  13.  
  14. const MINUTES_FIX_ATM = 5;
  15. const SECONDS_EXPLODE_ATM = 10;
  16.  
  17. static
  18.     bool:ExplodedATM[MAX_PLAYERS];
  19.  
  20. enum E_ATM
  21. {
  22.     bool:E_ATM_FIXED,
  23.  
  24.     Float:E_ATM_X,
  25.     Float:E_ATM_Y,
  26.     Float:E_ATM_Z
  27. };
  28.  
  29. static ATM_POSITIONS[][E_ATM] =
  30. {
  31.     {true, 129.3003, -68.0531, 1.5781},
  32.     {true, 157.1488, -62.1891, 1.5781},
  33.     {true, 172.4259, -62.2822, 1.5781}
  34. };
  35.  
  36. main(){}
  37.  
  38. forward OnPlayerExplodeATM(playerid, id);
  39. public OnPlayerExplodeATM(playerid, id)
  40. {
  41.     ATM_POSITIONS[id][E_ATM_FIXED] = false;
  42.     SetTimerEx("OnFixATM", MINUTES_FIX_ATM * 60 * 1000, false, "i", id);
  43.     va_SendClientMessage(playerid, -1, "* Caixa eletrônico %i explodido com sucesso.", id);
  44.     return 1;
  45. }
  46.  
  47. forward OnFixATM(id);
  48. public OnFixATM(id)
  49. {
  50.     ATM_POSITIONS[id][E_ATM_FIXED] = true;
  51.     va_SendClientMessageToAll(-1, "* O caixa eletrônico %i foi concertado com sucesso.", id);
  52.     return 1;
  53. }
  54.  
  55. GetClosestATMID(playerid, Float:radi = 2.0)
  56. {
  57.     for(new i; i < sizeof(ATM_POSITIONS); i++)
  58.         if(IsPlayerInRangeOfPoint(playerid, radi, ATM_POSITIONS[i][E_ATM_X], ATM_POSITIONS[i][E_ATM_Y], ATM_POSITIONS[i][E_ATM_Z]))
  59.             return i;
  60.  
  61.     return -1;
  62. }
  63.  
  64. //
  65.  
  66. CMD:explodir(playerid)
  67. {
  68.     if(ExplodedATM[playerid])
  69.         return SendClientMessage(playerid, -1, "* Você já explodiu um caixa eletrônico recentemente.");
  70.  
  71.     new id = -1;
  72.  
  73.     if((id = GetClosestATMID(playerid)) == -1)
  74.         return SendClientMessage(playerid, -1, "* Você não está próximo de um caixa eletrônico.");
  75.  
  76.     if(!ATM_POSITIONS[id][E_ATM_FIXED])
  77.         return SendClientMessage(playerid, -1, "* Esse caixa não está funcionando no momento.");
  78.  
  79.     ExplodedATM[playerid] = true;
  80.     SetTimerEx("OnPlayerExplodeATM", SECONDS_EXPLODE_ATM * 1000, false, "ii", playerid, id);
  81.     va_SendClientMessage(playerid, -1, "* Você começou a explodir o caixa eletrônico %i.", id);
  82.     return 1;
  83. }
RAW Paste Data