JonathanFeitosa2

[PAWN]JFS Sistema de Domínio

Jan 3rd, 2016
679
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.76 KB | None | 0 0
  1. /*
  2. Criado por: JonathanFeitosa
  3. Data: 03/01/2016
  4. */
  5.  
  6. #include <a_samp>
  7. #include <progress>
  8. #include <sscanf2>
  9. #include <zcmd>
  10.  
  11.  
  12. stock False = false;
  13.  
  14. #define SendFormattedMessageToAll(%0,%1,%2) do{ format(StringJFS,sizeof(StringJFS),%1,%2); SendClientMessageToAll(%0,StringJFS);} while(False)
  15.  
  16. #define DominioRange            5.0
  17.  
  18.  
  19. #define CORGANG                 0x228B22AA
  20. #define COR_ERRO                0xFF0000AA
  21. #define COR_PRINCIPAL           0x33AAFFFF
  22.  
  23.  
  24. enum t_info
  25. {
  26.     tNome[64],
  27.     Float:Spawn[3],
  28.     tCor
  29. };
  30. new jDominio[][t_info] = {
  31.     {"Grove Street", {1698.4835,-2114.6245,13.3828}, CORGANG},
  32.     {"Ballas", {1793.0255,-2112.6235,13.3828}, CORGANG},
  33.     {"Aztec", {0.0, 0.0, 0.0}, CORGANG}
  34. };
  35.  
  36. new
  37.    
  38.     StringJFS[128],
  39.     SaiuPosition[MAX_PLAYERS],
  40.     SaiuPosition2[MAX_PLAYERS],
  41.     Bar:BarraDominando[MAX_PLAYERS] = {INVALID_BAR_ID, ...},
  42.     DoisMinutosJFS[MAX_PLAYERS],
  43.     bool:PlayerDominado[MAX_PLAYERS],
  44.     Text3D:SedesJFS[sizeof(jDominio)],
  45.     DominadaMomento[sizeof(jDominio)],
  46.     Dominando[sizeof(jDominio)]
  47. ;
  48.  
  49. main()
  50. {
  51.     print("\n----------------------------------");
  52.     print("FilterScript criado por JonathanFeitosa");
  53.     print("----------------------------------\n");
  54. }
  55.  
  56. public OnGameModeInit()
  57. {
  58.     for(new i; i < sizeof(jDominio); i ++)
  59.     {
  60.         CreatePickup(1314, 1, jDominio[i][Spawn][0], jDominio[i][Spawn][1], jDominio[i][Spawn][2], -1);
  61.         format(StringJFS, sizeof(StringJFS), "%s\nDominio: {E8E8E8}Nenhum", jDominio[i][tNome]);
  62.         SedesJFS[i] = Create3DTextLabel(StringJFS,jDominio[i][tCor], jDominio[i][Spawn][0], jDominio[i][Spawn][1], jDominio[i][Spawn][2],25.0,0);
  63.     }
  64.     return 1;
  65. }
  66.  
  67. CMD:dominar(playerid, params[])
  68. {
  69. //  if(!strcmp(jDominio[Player[playerid][pTorcida]][tNome], Dominados(playerid))) return true; // SE É DA MESMA TORCIDA
  70. //  if(MembrosProximos(playerid) < 5) return SendClientMessage(playerid, COR_ERRO, "ERRO: Você só pode dominar com no mínimo 5 membros próximos."); // QUANTIDADE MINIMA DE PESSOAS PARA DOMINAR
  71.     for(new i; i < sizeof(jDominio); i ++) {
  72.  
  73.         if(IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[i][Spawn][0], jDominio[i][Spawn][1], jDominio[i][Spawn][2])) // SE ESTIVER PERTO DOS LOCAIS
  74.         {
  75.             if(Dominando[i])
  76.                 return SendClientMessage(playerid, COR_ERRO, "Esse local já está sendo dominado ou foi dominado recentemente."), true;
  77.             else
  78.             {
  79.                 Dominando[i] = 1;
  80.                 SendClientMessage(playerid, COR_PRINCIPAL, "Aguarde 5 segundos no mesmo local...");
  81.                 return SetTimerEx("AguardeDo", 5000 , false, "ii", i, playerid);
  82.             }
  83.         }
  84.     }
  85.     return 1;
  86. }
  87.  
  88. Dominados(playerid)
  89. {
  90.     new rr[128];
  91.     for(new i; i < sizeof(jDominio); i++)
  92.     {
  93.    
  94.         if(IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[i][Spawn][0], jDominio[i][Spawn][1], jDominio[i][Spawn][2]))
  95.             format(rr, sizeof(rr), "%s", jDominio[i][tNome]);
  96.  
  97.     }
  98.     return rr;
  99. }
  100.  
  101. /*
  102. PegarIDTorcida(playerid)
  103. {
  104.     new rr2;
  105.     for(new i; i < sizeof(jDominio); i++)
  106.         if(!strcmp(jDominio[Player[playerid][pTorcida]][tNome], jDominio[i][tNome]))
  107.             rr2 = i;
  108.  
  109.     return rr2;
  110. }
  111.  
  112. DominadosID(playerid)
  113. {
  114.     new rr;
  115.     for(new i; i < sizeof(jDominio); i++)
  116.     {
  117.         if(IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[i][Spawn][0], jDominio[i][Spawn][1], jDominio[i][Spawn][2]))
  118.             rr = i;
  119.     }
  120.     return rr;
  121. }
  122.  
  123. MembrosProximos(playerid)
  124. {
  125.     new countJFS;
  126.     each(Players->new i)
  127.         if(Player[i][pTorcida] == Player[playerid][pTorcida])
  128.             if(DistanciaEntreDoisPlayers(playerid, i) <= 20) countJFS++;
  129.  
  130.     return countJFS;
  131. }
  132.  
  133. forward Float:DistanciaEntreDoisPlayers(p1,p2);
  134. public Float:DistanciaEntreDoisPlayers(p1,p2)
  135. {
  136.     new Float:Pos1[3], Float:Pos2[3];
  137.  
  138.     if(!IsPlayerConnected(p1) || !IsPlayerConnected(p2))
  139.         return -1.00;
  140.  
  141.     GetPlayerPos(p1, Pos1[0], Pos1[1], Pos1[2]),
  142.     GetPlayerPos(p2, Pos2[0], Pos2[1], Pos2[2]);
  143.  
  144.     return floatsqroot(floatpower(floatabs(floatsub(Pos2[0],Pos1[0])),2)+floatpower(floatabs(floatsub(Pos2[1],Pos1[1])),2)+floatpower(floatabs(floatsub(Pos2[2],Pos1[2])),2));
  145. }
  146.  */
  147.  
  148. forward VoltarDominio(JFS);
  149. public VoltarDominio(JFS)
  150. {
  151.     DominadaMomento[JFS] = 0;
  152.     Dominando[JFS] = 0;
  153.     format(StringJFS, sizeof(StringJFS), "%s\nDominio: {e8e8e8}Nenhum", jDominio[JFS][tNome]);
  154.     Update3DTextLabelText(SedesJFS[JFS], jDominio[JFS][tCor], StringJFS);
  155.     SendFormattedMessageToAll(COR_PRINCIPAL, "O local %s já pode ser dominada novamente!", jDominio[JFS][tNome]);
  156.     return true;
  157. }
  158.  
  159. forward AguardeDo(JFS, playerid);
  160. public AguardeDo(JFS, playerid)
  161. {
  162.         if(Dominando[JFS] == 1)
  163.         {
  164.             if(!IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[JFS][Spawn][0], jDominio[JFS][Spawn][1], jDominio[JFS][Spawn][2]))
  165.             {
  166.                 Dominando[JFS] = 0;
  167.                 SendClientMessage(playerid, -1, "Você saiu da posição....");
  168.                 return true;
  169.             }
  170.             PlayerDominado[playerid] = true;
  171.             SendFormattedMessageToAll(-1, "O %s está tentando dominar o local da {%06x}%s.", GetPlayerNameEx(playerid), jDominio[JFS][tCor] >>> 8, Dominados(playerid));
  172.             SendClientMessage(playerid, COR_PRINCIPAL, "Aguarde 2 minutos no local para dominar. (Distância máxima: 5 metros)");
  173.             SetPlayerCheckpoint(playerid, jDominio[JFS][Spawn][0], jDominio[JFS][Spawn][1], jDominio[JFS][Spawn][2], 10.0);
  174.             SaiuPosition[playerid] = SetTimerEx("DominandoCP2", 2*60000, false, "ii", JFS, playerid);
  175.             SaiuPosition2[playerid] = SetTimerEx("SaiuPosicao", 1000, true, "ii", JFS, playerid);
  176.             BarraDominando[playerid] = CreateProgressBar(170.00, 424.00, 279.50, 3.50, -1, 120.0);
  177.             ShowProgressBarForPlayer(playerid, BarraDominando[playerid]);
  178.         }
  179.         return true;
  180. }
  181.  
  182. forward SaiuPosicao(JFS, playerid);
  183. public SaiuPosicao(JFS, playerid)
  184. {
  185.         if(Dominando[JFS])
  186.         {
  187.             if(!IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[JFS][Spawn][0], jDominio[JFS][Spawn][1], jDominio[JFS][Spawn][2]))
  188.             {
  189.                 PlayerDominado[playerid] = false;
  190.                 SendFormattedMessageToAll(-1, "O %s {FF0000}fracassou{FFFFFF} em dominar o local da {%06x}%s.", GetPlayerNameEx(playerid), jDominio[JFS][tCor] >>> 8, jDominio[JFS][tNome]);
  191.                 DisablePlayerCheckpoint ( playerid ) ;
  192.                 DoisMinutosJFS[playerid] = 0;
  193.                 DestroyProgressBar(BarraDominando[playerid]);
  194.                 KillTimer(SaiuPosition[playerid]);
  195.                 KillTimer(SaiuPosition2[playerid]);
  196.                 Dominando[JFS] = 0;
  197.                 SendClientMessage(playerid, COR_ERRO, "Você saiu da posição...");
  198.                 return true;
  199.             }
  200.         }
  201.         DoisMinutosJFS[playerid] ++;
  202.         if(DoisMinutosJFS[playerid] == 60)
  203.             SetProgressBarColor(BarraDominando[playerid], 0xFF0000FF);
  204.  
  205.         if(DoisMinutosJFS[playerid] == 75)
  206.             SetProgressBarColor(BarraDominando[playerid], 0xEE0000FF);
  207.  
  208.         if(DoisMinutosJFS[playerid] == 90)
  209.             SetProgressBarColor(BarraDominando[playerid], 0xCD0000FF);
  210.  
  211.         if(DoisMinutosJFS[playerid] == 109)
  212.             SetProgressBarColor(BarraDominando[playerid], 0x8B0000FF);
  213.  
  214.         if(DoisMinutosJFS[playerid] == 114 || DoisMinutosJFS[playerid] == 116 || DoisMinutosJFS[playerid] == 118 )
  215.         {
  216.             HideProgressBarForPlayer(playerid, BarraDominando[playerid]);
  217.             return true;
  218.         }
  219.         if(DoisMinutosJFS[playerid] == 115 || DoisMinutosJFS[playerid] == 117 || DoisMinutosJFS[playerid] == 119 )
  220.            ShowProgressBarForPlayer(playerid, BarraDominando[playerid]);
  221.  
  222.         SetProgressBarValue(BarraDominando[playerid], DoisMinutosJFS[playerid]);
  223.         UpdateProgressBar(BarraDominando[playerid], playerid);
  224.         return true;
  225. }
  226.  
  227. forward DominandoCP2(JFS, playerid);
  228. public DominandoCP2(JFS, playerid)
  229. {
  230.     if(Dominando[JFS])
  231.     {
  232.         if(IsPlayerInRangeOfPoint(playerid, DominioRange, jDominio[JFS][Spawn][0], jDominio[JFS][Spawn][1], jDominio[JFS][Spawn][2]))
  233.         {
  234.             SetTimerEx("VoltarDominio", 15*60000, false, "i", JFS);
  235.  
  236.             format(StringJFS, sizeof(StringJFS), "%s\nDominio: {e8e8e8}%s", jDominio[JFS][tNome], GetPlayerNameEx(playerid));
  237.             Update3DTextLabelText(SedesJFS[JFS], jDominio[JFS][tCor], StringJFS);
  238.         }
  239.     }
  240.     DominadaMomento[JFS] = 1;
  241.     DisablePlayerCheckpoint ( playerid ) ;
  242.     DoisMinutosJFS[playerid] = 0;
  243.     DestroyProgressBar(BarraDominando[playerid]);
  244.     PlayerDominado[playerid] = false;
  245.     KillTimer(SaiuPosition2[playerid]);
  246.    
  247.     SendFormattedMessageToAll(-1, "O %s {26cf0a}dominou {FFFFFF}o local da {%06x}%s.", GetPlayerNameEx(playerid), jDominio[JFS][tCor] >>> 8, Dominados(playerid));
  248.  
  249.  
  250. /*  for(new jfs; jfs < MAX_PLAYERS; jfs ++) {
  251.         if(DistanciaEntreDoisPlayers(playerid, jfs) <= 20)
  252.         if(Player[jfs][pTorcida] == Player[playerid][pTorcida])
  253.             GivePlayerMoney(jfs, 500),
  254.                 SendClientMessage(jfs, COR_PRINCIPAL, "Você e quem estava perto ganhou 500R$ pelo dominio!");
  255.     } */
  256.  
  257.     return true;
  258. }
  259.  
  260. stock GetPlayerNameEx(playerid)
  261. {
  262.     new name[MAX_PLAYER_NAME];
  263.     GetPlayerName(playerid, name, sizeof name);
  264.     return name;
  265. }
Advertisement
Add Comment
Please, Sign In to add comment