BR_Gustavo

Sistema de Eventos

Oct 12th, 2018
182
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #include <zcmd>
  5. #include <sscanf>
  6.  
  7. #if defined FILTERSCRIPT
  8.  
  9. #define SENHA_CRIAR_EVENTO "123456" // Mude a senha para criar eventos
  10.  
  11. #define DIALOG_EVENTO1   (243)
  12. #define DIALOG_EVENTO2   (244)
  13. #define DIALOG_EVENTO3   (245)
  14. #define DIALOG_EVENTO4   (246)
  15. #define DIALOG_EVENTO5   (247)
  16. #define DIALOG_EVENTO6   (248)
  17.  
  18.  
  19.  
  20. enum Evento_inf
  21. {
  22.     Evento_Jogadores,
  23.     Evento_Armas[2],
  24.     Evento_Nome[50],
  25.     Evento_Criador[50],
  26.     Evento_Existe,
  27.     Evento_Aberto,
  28.     Evento_Iniciado,
  29.     Evento_Recompenca,
  30.     Float:Evento_X,
  31.     Float:Evento_Y,
  32.     Float:Evento_Z,
  33.     Evento_Interior,
  34.     Evento_Timer,
  35.     Evento_Contagem,
  36.     Evento_TimerGanhador
  37. };
  38. enum JogadorEvento_inf
  39. {
  40.     JogadorEstaNoEvento,
  41.     LogadoNaSenha,
  42.     MatouNoEvento,
  43. };
  44. new
  45.     EventoInfo[Evento_inf],
  46.     JogadorEventoInfo[101][JogadorEvento_inf];
  47.  
  48.  
  49.  
  50. public OnFilterScriptInit()
  51. {
  52.     EventoInfo[Evento_Existe] =0;
  53.     printf(" Sistema de Evento Carregado");
  54.     for(new i=0; i<101; i++)
  55.     {
  56.         if(IsPlayerConnected(i))
  57.         {
  58.             JogadorEventoInfo[i][JogadorEstaNoEvento] = 0;
  59.         }
  60.     }
  61.     EventoInfo[Evento_Jogadores] = 0;
  62.     EventoInfo[Evento_Existe] = 0;
  63.     EventoInfo[Evento_Aberto] = 0;
  64.     EventoInfo[Evento_Iniciado] = 0;
  65.     KillTimer(EventoInfo[Evento_TimerGanhador]);
  66.     return 1;
  67. }
  68.  
  69. public OnFilterScriptExit()
  70. {
  71.     return 1;
  72. }
  73. public OnPlayerConnect(playerid)
  74. {
  75.     JogadorEventoInfo[playerid][JogadorEstaNoEvento] = 0;
  76.     JogadorEventoInfo[playerid][LogadoNaSenha] = 0;
  77.     JogadorEventoInfo[playerid][MatouNoEvento] = 0;
  78.     return 1;
  79. }
  80. public OnPlayerDisconnect(playerid, reason)
  81. {
  82.     if(JogadorEventoInfo[playerid][JogadorEstaNoEvento] ==1)
  83.     {
  84.         new MsgNome[50],MsgSaiuEvento[150];
  85.         GetPlayerName(playerid,MsgNome,sizeof(MsgNome));
  86.         EventoInfo[Evento_Jogadores]--;
  87.         JogadorEventoInfo[playerid][JogadorEstaNoEvento] = 0;
  88.         format(MsgSaiuEvento,sizeof(MsgSaiuEvento),"*** %s(%d) Saiu do evento (Motivo: Deixou o servidor)",MsgNome,playerid);
  89.         SendClientMessageToAll(0xFF1493FF,MsgSaiuEvento);
  90.     }
  91.     return 1;
  92. }
  93. public OnPlayerDeath(playerid, killerid, reason)
  94. {
  95.     if(JogadorEventoInfo[playerid][JogadorEstaNoEvento] ==1)
  96.     {
  97.         EventoInfo[Evento_Jogadores]--;
  98.         JogadorEventoInfo[playerid][JogadorEstaNoEvento] = 0;
  99.         ResetPlayerWeapons(playerid);
  100.         if(killerid != INVALID_PLAYER_ID)
  101.         {
  102.  
  103.             if(JogadorEventoInfo[killerid][JogadorEstaNoEvento] ==1)
  104.             {
  105.                 JogadorEventoInfo[killerid][MatouNoEvento]++;
  106.             }
  107.         }
  108.     }
  109.     return 1;
  110. }
  111. //------------------------------------------------------------------------------
  112. CMD:eventologar(playerid)
  113. {
  114.     if(JogadorEventoInfo[playerid][LogadoNaSenha] == 0)
  115.     {
  116.         ShowPlayerDialog(playerid,DIALOG_EVENTO1,DIALOG_STYLE_INPUT,"{00BFFF}Evento Senha","{00BFFF}\tSistema de Eventos\nPor favor digite a senha para poder criar eventos","Logar","Sair");
  117.     }
  118.     else
  119.     {
  120.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você já está autorizado a criar eventos");
  121.     }
  122.     return 1;
  123. }
  124. //------------------------------------------------------------------------------
  125. CMD:criarevento(playerid)
  126. {
  127.     if(JogadorEventoInfo[playerid][LogadoNaSenha] == 1)
  128.     {
  129.         if(EventoInfo[Evento_Existe] == 0)
  130.         {
  131.             ShowPlayerDialog(playerid,DIALOG_EVENTO2,DIALOG_STYLE_INPUT,"{00BFFF}Evento Nome","{00BFFF}Digite o nome do evento.","Proximo","Cancelar");
  132.         }
  133.         else
  134.         {
  135.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Já existe um evento em andamento ou sendo criado");
  136.         }
  137.     }
  138.     else
  139.     {
  140.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você já não está autorizado a criar eventos");
  141.     }
  142.     return 1;
  143. }
  144. //------------------------------------------------------------------------------
  145. CMD:fecharevento(playerid)
  146. {
  147.     new JogadorNome[50];
  148.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  149.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  150.     {
  151.         if(EventoInfo[Evento_Existe] == 1)
  152.         {
  153.             if(EventoInfo[Evento_Aberto] == 1)
  154.             {
  155.                 new MsgFechouEvento[150];
  156.                 EventoInfo[Evento_Aberto] = 0;
  157.                 format(MsgFechouEvento,sizeof(MsgFechouEvento),"|- %s(%d) Fechou o evento \"%s\"",JogadorNome,playerid,EventoInfo[Evento_Nome]);
  158.                 SendClientMessageToAll(0x00BFFFFF,MsgFechouEvento);
  159.             }
  160.             else
  161.             {
  162.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento já está fechado");
  163.             }
  164.         }
  165.         else
  166.         {
  167.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  168.         }
  169.     }
  170.     else
  171.     {
  172.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  173.     }
  174.     return 1;
  175. }
  176. //------------------------------------------------------------------------------
  177. CMD:abrirevento(playerid)
  178. {
  179.     new JogadorNome[50];
  180.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  181.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  182.     {
  183.         if(EventoInfo[Evento_Existe] == 1)
  184.         {
  185.             if(EventoInfo[Evento_Aberto] == 0)
  186.             {
  187.                 new MsgFechouEvento[150];
  188.                 EventoInfo[Evento_Aberto] = 1;
  189.                 format(MsgFechouEvento,sizeof(MsgFechouEvento),"|- %s(%d) Abriu novamente o evento \"%s\"",JogadorNome,playerid,EventoInfo[Evento_Nome]);
  190.                 SendClientMessageToAll(0x00BFFFFF,MsgFechouEvento);
  191.             }
  192.             else
  193.             {
  194.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento já está aberto");
  195.             }
  196.         }
  197.         else
  198.         {
  199.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  200.         }
  201.     }
  202.     else
  203.     {
  204.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  205.     }
  206.     return 1;
  207. }
  208. //------------------------------------------------------------------------------
  209. CMD:comecarevento(playerid)
  210. {
  211.     new JogadorNome[50];
  212.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  213.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  214.     {
  215.         if(EventoInfo[Evento_Existe] == 1)
  216.         {
  217.             if(EventoInfo[Evento_Iniciado] == 0)
  218.             {
  219.                 if(EventoInfo[Evento_Jogadores] >=1)
  220.                 {
  221.                     new MsgIniciarEvento[150];
  222.                     format(MsgIniciarEvento,sizeof(MsgIniciarEvento),"Evento \"%s\" Inicado",EventoInfo[Evento_Nome]);
  223.                     SendClientMessageToAll(0x00FF00FF,MsgIniciarEvento);
  224.                     EventoInfo[Evento_Iniciado] = 1;
  225.                     EventoInfo[Evento_Aberto] = 0;
  226.                     EventoInfo[Evento_Contagem] = 5;
  227.                     EventoInfo[Evento_Timer] = SetTimer("ContagemIniciarEvento",1200,true);
  228.                     for(new i=0; i<101; i++)
  229.                     {
  230.                         if(IsPlayerConnected(i))
  231.                         {
  232.                             if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  233.                             {
  234.                                 TogglePlayerControllable(i,0);
  235.                             }
  236.                         }
  237.                     }
  238.                 }
  239.                 else
  240.                 {
  241.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento precisa ter mais de 1 jogador para ser inicado");
  242.                 }
  243.             }
  244.             else
  245.             {
  246.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento já foi iniciado");
  247.             }
  248.         }
  249.         else
  250.         {
  251.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  252.         }
  253.     }
  254.     else
  255.     {
  256.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  257.     }
  258.     return 1;
  259. }
  260. //------------------------------------------------------------------------------
  261. CMD:terminarevento(playerid)
  262. {
  263.     new JogadorNome[50];
  264.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  265.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  266.     {
  267.         if(EventoInfo[Evento_Existe] == 1)
  268.         {
  269.             new MsgAcabouEvento[128];
  270.             format(MsgAcabouEvento,sizeof(MsgAcabouEvento),"|- O Jogador %s(%d) Terminou o evento.",JogadorNome,playerid);
  271.             for(new i=0; i<101; i++)
  272.             {
  273.                 if(IsPlayerConnected(i))
  274.                 {
  275.                     if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  276.                     {
  277.                         ResetPlayerWeapons(i);
  278.                         JogadorEventoInfo[i][JogadorEstaNoEvento] = 0;
  279.                         SetPlayerVirtualWorld(i,0);
  280.                         SetPlayerInterior(i,0);
  281.                         SpawnPlayer(i);
  282.                         SendClientMessage(i,0x00FF00FF,MsgAcabouEvento);
  283.                     }
  284.                 }
  285.             }
  286.             EventoInfo[Evento_Jogadores] = 0;
  287.             EventoInfo[Evento_Existe] = 0;
  288.             EventoInfo[Evento_Aberto] = 0;
  289.             EventoInfo[Evento_Iniciado] = 0;
  290.         }
  291.         else
  292.         {
  293.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  294.         }
  295.     }
  296.     else
  297.     {
  298.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  299.     }
  300.     return 1;
  301. }
  302. //------------------------------------------------------------------------------
  303. CMD:irevento(playerid)
  304. {
  305.     if(JogadorEventoInfo[playerid][JogadorEstaNoEvento] == 0)
  306.     {
  307.         if(EventoInfo[Evento_Existe] == 1)
  308.         {
  309.             if(EventoInfo[Evento_Aberto] == 1)
  310.             {
  311.                 if(EventoInfo[Evento_Iniciado] == 0)
  312.                 {
  313.                     new MsgEntrarEvento[150],JogadorNome[50];
  314.                     EventoInfo[Evento_Jogadores]++;
  315.                     JogadorEventoInfo[playerid][JogadorEstaNoEvento] = 1;
  316.                     JogadorEventoInfo[playerid][MatouNoEvento] = 0;
  317.                     SetPlayerPos(playerid,EventoInfo[Evento_X],EventoInfo[Evento_Y],EventoInfo[Evento_Z]);
  318.                     SetPlayerInterior(playerid,EventoInfo[Evento_Interior]);
  319.                     SetPlayerVirtualWorld(playerid,3);
  320.                     ResetPlayerWeapons(playerid);
  321.                     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  322.                     format(MsgEntrarEvento,sizeof(MsgEntrarEvento),"[INFO]{00FF00}%s(%d) Entrou no evento usando {FFFF00}/IrEvento",JogadorNome,playerid);
  323.                     SendClientMessageToAll(0xFFFF00FF,MsgEntrarEvento);
  324.                 }
  325.                 else
  326.                 {
  327.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento já foi iniciado");
  328.                 }
  329.             }
  330.             else
  331.             {
  332.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: O Evento já foi fechado");
  333.             }
  334.         }
  335.         else
  336.         {
  337.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  338.         }
  339.     }
  340.     else
  341.     {
  342.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você já está no evento");
  343.     }
  344.     return 1;
  345. }
  346. //------------------------------------------------------------------------------
  347. CMD:sairevento(playerid)
  348. {
  349.     if(JogadorEventoInfo[playerid][JogadorEstaNoEvento] == 1)
  350.     {
  351.         if(EventoInfo[Evento_Existe] == 1)
  352.         {
  353.             new MsgNome[50],MsgSaiuEvento[150];
  354.             GetPlayerName(playerid,MsgNome,sizeof(MsgNome));
  355.             EventoInfo[Evento_Jogadores]--;
  356.             JogadorEventoInfo[playerid][JogadorEstaNoEvento] = 0;
  357.             format(MsgSaiuEvento,sizeof(MsgSaiuEvento),"*** %s(%d) Saiu do evento (Motivo: Escolheu sair)",MsgNome,playerid);
  358.             SendClientMessageToAll(0xFF1493FF,MsgSaiuEvento);
  359.             ResetPlayerWeapons(playerid);
  360.             SetPlayerVirtualWorld(playerid,0);
  361.             SetPlayerInterior(playerid,0);
  362.             SpawnPlayer(playerid);
  363.         }
  364.         else
  365.         {
  366.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  367.         }
  368.     }
  369.     else
  370.     {
  371.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não está em um evento");
  372.     }
  373.     return 1;
  374. }
  375. //------------------------------------------------------------------------------
  376. CMD:eventovida(playerid,params[])
  377. {
  378.     new JogadorNome[50],EventoVida,MsgDeuVida[160];
  379.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  380.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  381.     {
  382.         if(sscanf(params,"d",EventoVida))return SendClientMessage(playerid,0xFF0000FF,"USE: /EventoVida [Quantidade]");
  383.         if(EventoInfo[Evento_Existe] == 1)
  384.         {
  385.             for(new i=0; i<101; i++)
  386.             {
  387.                 if(IsPlayerConnected(i))
  388.                 {
  389.                     if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  390.                     {
  391.                         SetPlayerHealth(i,EventoVida);
  392.                         format(MsgDeuVida,sizeof(MsgDeuVida),"|- %s(%d) Deu %d de vida a todos no evento -|",JogadorNome,playerid);
  393.                         SendClientMessage(i,0x00FF00FF,MsgDeuVida);
  394.                     }
  395.                 }
  396.             }
  397.         }
  398.         else
  399.         {
  400.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  401.         }
  402.     }
  403.     else
  404.     {
  405.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  406.     }
  407.     return 1;
  408. }
  409. //------------------------------------------------------------------------------
  410. CMD:eventocolete(playerid,params[])
  411. {
  412.     new JogadorNome[50],EventoColete,MsgDeuColete[160];
  413.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  414.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  415.     {
  416.         if(sscanf(params,"d",EventoColete))return SendClientMessage(playerid,0xFF0000FF,"USE: /EventoColete [Quantidade]");
  417.         if(EventoInfo[Evento_Existe] == 1)
  418.         {
  419.             for(new i=0; i<101; i++)
  420.             {
  421.                 if(IsPlayerConnected(i))
  422.                 {
  423.                     if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  424.                     {
  425.                         SetPlayerArmour(i,EventoColete);
  426.                         format(MsgDeuColete,sizeof(MsgDeuColete),"|- %s(%d) Deu %d de colete a todos no evento -|",JogadorNome,playerid);
  427.                         SendClientMessage(i,0x00FF00FF,MsgDeuColete);
  428.                     }
  429.                 }
  430.             }
  431.         }
  432.         else
  433.         {
  434.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora");
  435.         }
  436.     }
  437.     else
  438.     {
  439.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  440.     }
  441.     return 1;
  442. }
  443. //------------------------------------------------------------------------------
  444. CMD:tirardoevento(playerid,params[])
  445. {
  446.     new JogadorNome[50],JogadorID;
  447.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  448.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  449.     {
  450.         if(sscanf(params,"u",JogadorID))return SendClientMessage(playerid,0xFF0000FF,"USE: /TirarDoEvento [Jogador-ID]");
  451.         if(EventoInfo[Evento_Existe] == 1)
  452.         {
  453.             if(IsPlayerConnected(JogadorID))
  454.             {
  455.                 if(JogadorEventoInfo[JogadorID][JogadorEstaNoEvento] == 1)
  456.                 {
  457.                     new MsgNome[50],MsgSaiuEvento[150];
  458.                     GetPlayerName(JogadorID,MsgNome,sizeof(MsgNome));
  459.                     EventoInfo[Evento_Jogadores]--;
  460.                     JogadorEventoInfo[JogadorID][JogadorEstaNoEvento] = 0;
  461.                     format(MsgSaiuEvento,sizeof(MsgSaiuEvento),"*** %s(%d) Saiu do evento (Motivo: Kickado pelo criador)",MsgNome,JogadorID);
  462.                     SendClientMessageToAll(0xFF1493FF,MsgSaiuEvento);
  463.                     ResetPlayerWeapons(JogadorID);
  464.                     SetPlayerVirtualWorld(JogadorID,0);
  465.                     SetPlayerInterior(JogadorID,0);
  466.                     SpawnPlayer(JogadorID);
  467.                 }
  468.                 else
  469.                 {
  470.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: Esse jogador não está no evento.");
  471.                 }
  472.             }
  473.             else
  474.             {
  475.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: Esse jogador não está conectado.");
  476.             }
  477.         }
  478.         else
  479.         {
  480.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora!");
  481.         }
  482.     }
  483.     else
  484.     {
  485.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  486.     }
  487.     return 1;
  488. }
  489. //------------------------------------------------------------------------------
  490. CMD:eventotrazer(playerid,params[])
  491. {
  492.     new JogadorNome[50],JogadorID;
  493.     GetPlayerName(playerid,JogadorNome,sizeof(JogadorNome));
  494.     if(!strcmp(EventoInfo[Evento_Criador],JogadorNome,true))
  495.     {
  496.         if(sscanf(params,"u",JogadorID))return SendClientMessage(playerid,0xFF0000FF,"USE: /EventoTrazer [Jogador-ID]");
  497.         if(EventoInfo[Evento_Existe] == 1)
  498.         {
  499.             if(IsPlayerConnected(JogadorID))
  500.             {
  501.                 if(JogadorEventoInfo[JogadorID][JogadorEstaNoEvento] == 1)
  502.                 {
  503.                     new MsgLevarEvento[160],JogadorNome2[50];
  504.                     GetPlayerName(JogadorID,JogadorNome2,sizeof(JogadorNome2));
  505.                     SetPlayerPos(JogadorID,EventoInfo[Evento_X],EventoInfo[Evento_Y],EventoInfo[Evento_Z]);
  506.                     SetPlayerInterior(JogadorID,EventoInfo[Evento_Interior]);
  507.                     SetPlayerVirtualWorld(JogadorID,3);
  508.                     format(MsgLevarEvento,128,"|- Você levou \"%s\" até a posição inicial do evento -|",JogadorNome2);
  509.                     SendClientMessage(playerid,0x00BFFFFF,MsgLevarEvento);
  510.                     format(MsgLevarEvento,128,"|- O Jogador \"%s\" levou você até a posição inicial do evento -|",JogadorNome);
  511.                     SendClientMessage(JogadorID,0x00BFFFFF,MsgLevarEvento);
  512.                 }
  513.                 else
  514.                 {
  515.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: Esse jogador não está no evento.");
  516.                 }
  517.             }
  518.             else
  519.             {
  520.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: Esse jogador não está conectado.");
  521.             }
  522.         }
  523.         else
  524.         {
  525.             SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhum evento agora!");
  526.         }
  527.     }
  528.     else
  529.     {
  530.         SendClientMessage(playerid,0xFF0000FF,"ERRO: Você não é o criador do evento");
  531.     }
  532.     return 1;
  533. }
  534. //------------------------------------------------------------------------------
  535. CMD:noevento(playerid)
  536. {
  537.     new MsgEventoAjuda[300],JogadoresNome[50],MsgNoEvento[100];
  538.     if(EventoInfo[Evento_Existe] == 1)
  539.     {
  540.         if(EventoInfo[Evento_Jogadores] >= 1)
  541.         {
  542.             for(new i=0; i<101; i++)
  543.             {
  544.                 if(IsPlayerConnected(i))
  545.                 {
  546.                     if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  547.                     {
  548.                         GetPlayerName(i,JogadoresNome,sizeof(JogadoresNome));
  549.                         format(MsgNoEvento,sizeof(MsgNoEvento),"{00FF00}%s",JogadoresNome);
  550.                         strcat(MsgEventoAjuda,MsgNoEvento);
  551.                     }
  552.                 }
  553.             }
  554.             ShowPlayerDialog(playerid,DIALOG_EVENTO6,DIALOG_STYLE_MSGBOX,"{00FF00}Membros",MsgEventoAjuda,"Fechar","");
  555.         }
  556.         else
  557.         {
  558.             ShowPlayerDialog(playerid,DIALOG_EVENTO6,DIALOG_STYLE_MSGBOX,"{00FF00}Membros","{FF0000}Não a jogadores no evento","Fechar","");
  559.         }
  560.     }
  561.     else
  562.     {
  563.         ShowPlayerDialog(playerid,DIALOG_EVENTO6,DIALOG_STYLE_MSGBOX,"{00FF00}Membros","{FF0000}Não existe evento agora","Fechar","");
  564.     }
  565.     return 1;
  566. }
  567. //------------------------------------------------------------------------------
  568. CMD:eventoajuda(playerid)
  569. {
  570.     new MsgEventoAjuda[900];
  571.     strcat(MsgEventoAjuda,"{00FF00}\t | Sistema de Evento |\n\n");
  572.     strcat(MsgEventoAjuda,"{00FF00}Use /IrEvento Para entrar em um evento\n");
  573.     strcat(MsgEventoAjuda,"{00FF00}Use /SairEvento Para sair de um evento\n");
  574.     strcat(MsgEventoAjuda,"{00FF00}Use /NoEvento Para ver quem está no evento\n");
  575.     strcat(MsgEventoAjuda,"{00FF00}\n\t | Criador de Eventos |\n\n");
  576.     strcat(MsgEventoAjuda,"{00FF00}Use /EventoLogar Para identificar-se como criador de eventos\n");
  577.     strcat(MsgEventoAjuda,"{00FF00}Use /CriarEvento Para criar eventos.\n");
  578.     strcat(MsgEventoAjuda,"{00FF00}Use /FecharEvento Para fechar um evento\n");
  579.     strcat(MsgEventoAjuda,"{00FF00}Use /AbrirEvento Para abrir um evento\n");
  580.     strcat(MsgEventoAjuda,"{00FF00}Use /ComecarEvento Para iniciar um evento\n");
  581.     strcat(MsgEventoAjuda,"{00FF00}Use /TerminarEvento Para terminar um evento\n");
  582.     strcat(MsgEventoAjuda,"{00FF00}Use /EventoVida Para dar vida a todos no evento\n");
  583.     strcat(MsgEventoAjuda,"{00FF00}Use /EventoColete Para dar colete a todos no evento\n");
  584.     strcat(MsgEventoAjuda,"{00FF00}Use /TirarDoEvento Para tirarum jogador do evento\n");
  585.     strcat(MsgEventoAjuda,"{00FF00}Use /EventoTrazer Para trazer todos até a posição inicial do evento\n\n");
  586.     strcat(MsgEventoAjuda,"\t{FF0000}Sistema de evento feito by Gustavo A.K.A Metatron");
  587.     ShowPlayerDialog(playerid,DIALOG_EVENTO6,DIALOG_STYLE_MSGBOX,"{00FF00}Ajuda Evento",MsgEventoAjuda,"Fechar","");
  588.     return 1;
  589. }
  590. //------------------------------------------------------------------------------
  591. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  592. {
  593.     if(dialogid == DIALOG_EVENTO1)
  594.     {
  595.         if(response)
  596.         {
  597.             if(isnull(inputtext))
  598.             {
  599.                 ShowPlayerDialog(playerid,DIALOG_EVENTO1,DIALOG_STYLE_INPUT,"{00BFFF}Evento Senha","{00BFFF}\tSistema de Eventos\nPor favor digite a senha para poder criar eventos","Logar","Sair");
  600.                 SendClientMessage(playerid,0xFF0000FF,"Você precisa digitar a senha para poder criar eventos");
  601.             }
  602.             else
  603.             if(!isnull(inputtext))
  604.             {
  605.                 if(!strcmp(inputtext,SENHA_CRIAR_EVENTO,true))
  606.                 {
  607.                     JogadorEventoInfo[playerid][LogadoNaSenha] = 1;
  608.                     SendClientMessage(playerid,0x00FF00FF,"Você está autorizado a criar eventos!");
  609.                     PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  610.                 }
  611.                 else
  612.                 {
  613.                     ShowPlayerDialog(playerid,DIALOG_EVENTO1,DIALOG_STYLE_INPUT,"{00BFFF}Evento Senha","{00BFFF}\tSistema de Eventos\nPor favor digite a senha para poder criar eventos","Logar","Sair");
  614.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: A Senha que você digitou está incorreta.");
  615.                 }
  616.             }
  617.         }
  618.     }
  619.     if(dialogid == DIALOG_EVENTO2)
  620.     {
  621.         if(!response)
  622.         {
  623.             EventoInfo[Evento_Existe] = 0;
  624.             EventoInfo[Evento_Armas][0] = 0;
  625.             EventoInfo[Evento_Armas][1] = 0;
  626.         }
  627.         if(response)
  628.         {
  629.             if(isnull(inputtext))
  630.             {
  631.                 ShowPlayerDialog(playerid,DIALOG_EVENTO2,DIALOG_STYLE_INPUT,"{00BFFF}Evento Nome","{00BFFF}Digite o nome do evento.","Proximo","Cancelar");
  632.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: Você precisa digitar um nome para criar o evento");
  633.             }
  634.             else
  635.             if(!isnull(inputtext))
  636.             {
  637.                 format(EventoInfo[Evento_Nome],50,"%s",inputtext);
  638.                 GetPlayerName(playerid,EventoInfo[Evento_Criador],50);
  639.                 ShowPlayerDialog(playerid,DIALOG_EVENTO3,DIALOG_STYLE_INPUT,"{00BFFF}Evento Recompença","{00BFFF}Digite o valor do prêmio do ganhador","Proximo","Voltar");
  640.             }
  641.         }
  642.     }
  643.     if(dialogid == DIALOG_EVENTO3)
  644.     {
  645.         if(!response)
  646.         {
  647.             ShowPlayerDialog(playerid,DIALOG_EVENTO2,DIALOG_STYLE_INPUT,"{00BFFF}Evento Nome","{00BFFF}Digite o nome do evento.","Proximo","Cancelar");
  648.         }
  649.         if(response)
  650.         {
  651.             if(strval(inputtext) >= 1 || strval(inputtext) <= 500000)
  652.             {
  653.                 EventoInfo[Evento_Recompenca] = strval(inputtext);
  654.                 ShowPlayerDialog(playerid,DIALOG_EVENTO4,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 1","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  655.             }
  656.             else
  657.             {
  658.                 SendClientMessage(playerid,0xFF0000FF,"ERRO: O Valor do prêmio deve ser maior que 0 e menor que 500000");
  659.             }
  660.         }
  661.     }
  662.     if(dialogid == DIALOG_EVENTO4)
  663.     {
  664.         if(!response)
  665.         {
  666.             ShowPlayerDialog(playerid,DIALOG_EVENTO3,DIALOG_STYLE_INPUT,"{00BFFF}Evento Recompença","{00BFFF}Digite o valor do prêmio do ganhador","Proximo","Voltar");
  667.         }
  668.         if(response)
  669.         {
  670.             if(IsNumeric(inputtext))
  671.             {
  672.                 if(strval(inputtext) >=1 || strval(inputtext) <= 47)
  673.                 {
  674.                     EventoInfo[Evento_Armas][0] = strval(inputtext);
  675.                     ShowPlayerDialog(playerid,DIALOG_EVENTO5,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 2","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  676.                 }
  677.                 else
  678.                 {
  679.                     ShowPlayerDialog(playerid,DIALOG_EVENTO4,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 1","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  680.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: ID da arma invalido");
  681.                 }
  682.             }
  683.             else
  684.             {
  685.                 if(PegarModeloDaArmaPorNome(inputtext) != -1)
  686.                 {
  687.                     EventoInfo[Evento_Armas][0] = PegarModeloDaArmaPorNome(inputtext);
  688.                     ShowPlayerDialog(playerid,DIALOG_EVENTO5,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 2","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  689.                 }
  690.                 else
  691.                 {
  692.                
  693.                     ShowPlayerDialog(playerid,DIALOG_EVENTO4,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 1","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  694.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhuma arma com esse nome");
  695.                 }
  696.             }
  697.         }
  698.     }
  699.     if(dialogid == DIALOG_EVENTO5)
  700.     {
  701.         if(!response)
  702.         {
  703.                 ShowPlayerDialog(playerid,DIALOG_EVENTO4,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 1","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  704.         }
  705.         if(response)
  706.         {
  707.             if(IsNumeric(inputtext))
  708.             {
  709.                 if(strval(inputtext) >=1 || strval(inputtext) <= 47)
  710.                 {
  711.                     EventoInfo[Evento_Armas][1] = strval(inputtext);
  712.                     JogadorCriarEvento(playerid);
  713.                 }
  714.                 else
  715.                 {
  716.                     ShowPlayerDialog(playerid,DIALOG_EVENTO5,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 2","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  717.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: ID da arma invalido");
  718.                 }
  719.             }
  720.             else
  721.             {
  722.                 if(PegarModeloDaArmaPorNome(inputtext) != -1)
  723.                 {
  724.                     EventoInfo[Evento_Armas][1] = PegarModeloDaArmaPorNome(inputtext);
  725.                     JogadorCriarEvento(playerid);
  726.                 }
  727.                 else
  728.                 {
  729.  
  730.                     ShowPlayerDialog(playerid,DIALOG_EVENTO5,DIALOG_STYLE_INPUT,"{00BFFF}Evento Arma 2","{00BFFF}Digite o nome ou o ID da arma","Proximo","Cancelar");
  731.                     SendClientMessage(playerid,0xFF0000FF,"ERRO: Não existe nenhuma arma com esse nome");
  732.                 }
  733.             }
  734.         }
  735.     }
  736.     return 1;
  737. }
  738. forward JogadorCriarEvento(playerid);
  739. public JogadorCriarEvento(playerid)
  740. {
  741.     EventoInfo[Evento_Jogadores] = 0;
  742.     EventoInfo[Evento_Existe] = 1;
  743.     EventoInfo[Evento_Aberto] = 1;
  744.     EventoInfo[Evento_Iniciado] = 0;
  745.     GetPlayerPos(playerid,EventoInfo[Evento_X],EventoInfo[Evento_Y],EventoInfo[Evento_Z]);
  746.     EventoInfo[Evento_Interior] = GetPlayerInterior(playerid);
  747.     new MsgEventoCriado[200];
  748.     format(MsgEventoCriado,sizeof(MsgEventoCriado),"[INFO]{00FF00} %s(%d) Criou o evento \"%s\" Prêmio: %d. Use {FFFF00}/IrEvento{00FF00} para ir ao evento",EventoInfo[Evento_Criador],playerid,EventoInfo[Evento_Nome],\
  749.     EventoInfo[Evento_Recompenca]);
  750.     SendClientMessageToAll(0xFFFF00FF,MsgEventoCriado);
  751.     format(MsgEventoCriado,sizeof(MsgEventoCriado),"Use /irevento para ir ao evento %s",EventoInfo[Evento_Nome]);
  752.     GameTextForAll(MsgEventoCriado,10000,3);
  753.     return 1;
  754. }
  755. forward GanhadorEvento();
  756. public GanhadorEvento()
  757. {
  758.     if(EventoInfo[Evento_Existe] == 1)
  759.     {
  760.         if(EventoInfo[Evento_Iniciado] == 1)
  761.         {
  762.             if(EventoInfo[Evento_Jogadores] == 1)
  763.             {
  764.                 for(new i=0; i<101; i++)
  765.                 {
  766.                     if(IsPlayerConnected(i))
  767.                     {
  768.                         if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  769.                         {
  770.                             new GanhadorNome[100],MsgGanhadorEvento[150];
  771.                             GetPlayerName(i,GanhadorNome,sizeof(GanhadorNome));
  772.                             ResetPlayerWeapons(i);
  773.                             GivePlayerMoney(i,EventoInfo[Evento_Recompenca]);
  774.                             SetPlayerInterior(i,0);
  775.                             SetPlayerVirtualWorld(i,0);
  776.                             SpawnPlayer(i);
  777.                             format(MsgGanhadorEvento,sizeof(MsgGanhadorEvento),"[INFO] |- O Jogador %s(%d) Ganhou o evento \"%s\" e recebeu %d | Matou: %d -|",GanhadorNome,i,EventoInfo[Evento_Nome],EventoInfo[Evento_Recompenca],JogadorEventoInfo[i][MatouNoEvento]);
  778.                             SendClientMessageToAll(0x00FF00FF,MsgGanhadorEvento);
  779.                             JogadorEventoInfo[i][JogadorEstaNoEvento] = 0;
  780.                             EventoInfo[Evento_Jogadores] = 0;
  781.                             EventoInfo[Evento_Existe] = 0;
  782.                             EventoInfo[Evento_Aberto] = 0;
  783.                             EventoInfo[Evento_Iniciado] = 0;
  784.                             KillTimer(EventoInfo[Evento_TimerGanhador]);
  785.                         }
  786.                     }
  787.                 }
  788.             }
  789.             else
  790.             if(EventoInfo[Evento_Jogadores] <= 0)
  791.             {
  792.                 EventoInfo[Evento_Jogadores] = 0;
  793.                 EventoInfo[Evento_Existe] = 0;
  794.                 EventoInfo[Evento_Aberto] = 0;
  795.                 EventoInfo[Evento_Iniciado] = 0;
  796.                 KillTimer(EventoInfo[Evento_TimerGanhador]);
  797.             }
  798.         }
  799.     }
  800.     return 1;
  801. }
  802. forward ContagemIniciarEvento();
  803. public ContagemIniciarEvento()
  804. {
  805.     if(EventoInfo[Evento_Contagem] <=0)
  806.     {
  807.         EventoInfo[Evento_Aberto] = 0;
  808.         EventoInfo[Evento_Iniciado] = 1;
  809.         EventoInfo[Evento_Contagem] = 0;
  810.         KillTimer(EventoInfo[Evento_Timer]);
  811.         for(new i=0; i<101; i++)
  812.         {
  813.             if(IsPlayerConnected(i))
  814.             {
  815.                 if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  816.                 {
  817.                     TogglePlayerControllable(i,1);
  818.                     GameTextForPlayer(i,"~r~GO GO GO!",1600,3);
  819.                     GivePlayerWeapon(i,EventoInfo[Evento_Armas][0],9999);
  820.                     GivePlayerWeapon(i,EventoInfo[Evento_Armas][1],9999);
  821.                 }
  822.             }
  823.         }
  824.         EventoInfo[Evento_TimerGanhador] = SetTimer("GanhadorEvento",2000,true);
  825.     }
  826.     else
  827.     if(EventoInfo[Evento_Contagem] >=1)
  828.     {
  829.         new MsgContarEvento[50];
  830.         format(MsgContarEvento,sizeof(MsgContarEvento),"%i",EventoInfo[Evento_Contagem]);
  831.         for(new i=0; i<101; i++)
  832.         {
  833.             if(IsPlayerConnected(i))
  834.             {
  835.                 if(JogadorEventoInfo[i][JogadorEstaNoEvento] == 1)
  836.                 {
  837.                     GameTextForPlayer(i,MsgContarEvento,1000,4);
  838.                 }
  839.             }
  840.         }
  841.         EventoInfo[Evento_Contagem]--;
  842.     }
  843.     return 1;
  844. }
  845. stock IsNumeric(string[])
  846. {
  847.     for(new i = 0, j = strlen(string); i < j; i++){
  848.     if(string[i] > '9' || string[i] < '0') return 0;}
  849.     return 1;
  850. }
  851. PegarModeloDaArmaPorNome(Nome[])
  852. {
  853.     for(new i = 0; i <= 46; i++)
  854.     {
  855.         switch(i)
  856.         {
  857.             case 0,19,20,21,44,45: continue;
  858.             default:
  859.             {
  860.                 new ArmaNome1[35];
  861.                 GetWeaponName(i,ArmaNome1,35);
  862.                 if(strfind(ArmaNome1,Nome,true) != -1) return i;
  863.             }
  864.         }
  865.     }
  866.     return -1;
  867. }
  868.  
  869. #endif
RAW Paste Data