SHARE
TWEET

[FS] FilterScript Sistema de Duelo

Chip7 Oct 11th, 2012 1,120 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*VISITE NOSSO SITE: http://www.sampknd.com/
  2.   VISITE NOSSO FACEBOOK: http://www.facebook.com/SampKnd
  3.   SAMP KND MELHOR BLOG DE SAMP DO BRASIL
  4. */  
  5.  
  6. #include <a_samp> // SA-MP TEAM
  7. #include <zcmd> // Zeex.
  8. #include <sscanf2> // Y_Less
  9. #include <DOF2> // Double-O-Seven
  10.  
  11. #define Arma  GivePlayerWeapon(playerid, 24, 9999);
  12. #define Arma2  GivePlayerWeapon(playerid, 29, 9999);
  13. /* Copie a define a cima, e mude o ID das armas, e o nome da define.
  14.         > Exemplo:
  15.                 #define NOMEDEFINE  GivePlayerWeapon(playerid, IDARMA, MUNIÇÃO);
  16. */
  17.  
  18. #define rBox1      5452 // Cuidado conflitos.
  19. #define rAviso     5453 // Cuidado conflitos.
  20. #define rInfod     5454 // Cuidado conflitos.
  21.  
  22. #define rDuelos    "pDuelos/%s.ini" // Pasta
  23.  
  24. #define pDinheiro  12000 // Premio em Dinheiro.
  25. #define pScore     10 // Premio em Score.
  26. new
  27.         pDuelo,
  28.         bool:eDuelo[MAX_PLAYERS],
  29.         pConvidou,
  30.         Desafiado,
  31.         String[200],
  32.         String2[200],
  33.         TempoSpawn[MAX_PLAYERS],
  34.         peDuelos[MAX_PLAYERS],
  35.         reDuelos[MAX_PLAYERS],
  36.         acDuelos[MAX_PLAYERS],
  37.         emDuelos[MAX_PLAYERS],
  38.         wDuelos[MAX_PLAYERS],
  39.         lDuelos[MAX_PLAYERS],
  40.         Minutos,
  41.         Segundos,
  42.         TempoMinutos,
  43.         Text:TempoRestante,
  44.         Text:dMinutos
  45.        
  46. ;
  47.  
  48. public OnFilterScriptInit()
  49. {
  50.         print("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");
  51.         print("[rDuelSystem] - Sistema de Duelo @Riichard");
  52.         print("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
  53.         // Minutos
  54.         dMinutos = TextDrawCreate(143.000000, 363.000000, "03:00");
  55.         TextDrawBackgroundColor(dMinutos, 255);
  56.         TextDrawFont(dMinutos, 3);
  57.         TextDrawBoxColor(dMinutos, 255);
  58.         TextDrawColor(dMinutos, -1178809089);
  59.         TextDrawSetOutline(dMinutos, 1);
  60.         TextDrawUseBox(dMinutos, 0);
  61.         TextDrawLetterSize(dMinutos, 0.539999, 1.400000);
  62.         // Tempo Restante
  63.         TempoRestante = TextDrawCreate(139.000000, 353.000000, "Tempo Restante:");
  64.         TextDrawBackgroundColor(TempoRestante, 255);
  65.         TextDrawFont(TempoRestante, 1);
  66.         TextDrawBoxColor(TempoRestante, 255);
  67.         TextDrawColor(TempoRestante, -16776961);
  68.         TextDrawSetOutline(TempoRestante, 1);
  69.         TextDrawSetProportional(TempoRestante, 1);
  70.         TextDrawSetShadow(TempoRestante, 1);
  71.         TextDrawAlignment(TempoRestante, 0);
  72.         TextDrawUseBox(TempoRestante, 0);
  73.         TextDrawLetterSize(TempoRestante, 0.230000, 0.900000);
  74.         return 1;
  75. }
  76.  
  77. public OnFilterScriptExit()
  78. {
  79.         for (new r = 0; r != MAX_PLAYERS; r++)
  80.         {
  81.                 if(IsPlayerConnected(r))
  82.                 {
  83.                     dSalvar(r);
  84.                 }
  85.         }
  86.         DOF2_Exit();
  87.         return 1;
  88. }
  89.  
  90. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  91. {
  92.         if(dialogid == rBox1)
  93.         {
  94.             if(response)
  95.                 {
  96.                         Segundos = 60;
  97.                         Minutos = 2;
  98.                     KillTimer(TempoSpawn[pConvidou]);
  99.                     pDuelo += 1;
  100.                     acDuelos[playerid] += 1;
  101.                     TogglePlayerControllable(pConvidou, true);
  102.                     eDuelo[playerid] = true;
  103.                     SetPlayerPos(playerid, 1412.639892, -1.787510, 1000.924377);
  104.                     ResetPlayerWeapons(playerid);
  105.                     SetPlayerTeam(playerid, 255);
  106.                 SetPlayerArmour(playerid, 100);
  107.                 SetPlayerInterior(playerid, 1);
  108.                 SetPlayerHealth(playerid, 100);
  109.             format(String,sizeof(String), "[INFO] O jogador %s, aceitou o x1 de, %s.", rNome(playerid), rNome(pConvidou));
  110.             SendClientMessageToAll(0xFFFF00AA, String);
  111.             TempoMinutos = SetTimer("MinutosDuelo", 1000, true);
  112.             TextDrawShowForPlayer(playerid, TempoRestante);
  113.             TextDrawShowForPlayer(pConvidou, TempoRestante);
  114.             TextDrawShowForPlayer(playerid, dMinutos);
  115.             TextDrawShowForPlayer(pConvidou, dMinutos);
  116.             Arma
  117.             Arma2
  118.             /* Se for colocar outras armas, coloque aqui o nome da define:
  119.                         > Exemplo:
  120.                         Arma3
  121.                         */
  122.             }
  123.             if(!response)
  124.             {
  125.             format(String,sizeof(String), "[NOOB] O arregão %s, recusou o x1 de, %s.", rNome(playerid), rNome(pConvidou));
  126.             SendClientMessageToAll(0xFFFF00AA, String);
  127.                         TogglePlayerControllable(pConvidou, true);
  128.                         pDuelo -= 1;
  129.                         reDuelos[playerid] += 1;
  130.                         eDuelo[pConvidou] = false;
  131.                 SpawnPlayer(pConvidou);
  132.                 KillTimer(TempoSpawn[pConvidou]);
  133.                 }
  134.         }
  135.         return 0;
  136. }
  137.  
  138. public OnPlayerDeath(playerid, killerid, reason)
  139. {
  140.     if(eDuelo[killerid] == true || eDuelo[playerid] == true)
  141.     {
  142.             eDuelo[playerid] = false;
  143.             eDuelo[killerid] = false;
  144.             wDuelos[killerid] += 1;
  145.             lDuelos[playerid] += 1;
  146.             GivePlayerMoney(killerid, pDinheiro);
  147.             SetPlayerScore(killerid, GetPlayerScore(killerid) +pScore);
  148.             GameTextForPlayer(killerid, "~w~P~g~~h~arabens voce venceu~w~.", 2000, 3);
  149.             format(String,sizeof(String), "[INFO - X1] {6495ED}%s{FFFFFF} venceu o jogador {6495ED}%s{FFFFFF} no x1. [{6495ED}Prêmio: R$%d + %d Score{FFFFFF}]", rNome(killerid), rNome(playerid), pDinheiro, pScore);
  150.             SendClientMessageToAll(0xFFFFFFAA, String);
  151.             SendClientMessage(killerid, -1 , "[INFO] Aguarde 5 segundos para ser spawnado...");
  152.             SetTimerEx("SpawnDuelo", 5000, false, "d", killerid);
  153.         TextDrawHideForPlayer(playerid, TempoRestante);
  154.         TextDrawHideForPlayer(killerid, TempoRestante);
  155.         TextDrawHideForPlayer(playerid, dMinutos);
  156.         TextDrawHideForPlayer(killerid, dMinutos);
  157.                 KillTimer(TempoMinutos);
  158.     }
  159.     return 0;
  160. }
  161.  
  162. public OnPlayerConnect(playerid)
  163. {
  164.     eDuelo[playerid] = false;
  165.     peDuelos[playerid] = 0;
  166.     reDuelos[playerid] = 0;
  167.     acDuelos[playerid] = 0;
  168.     emDuelos[playerid] = 0;
  169.     wDuelos[playerid] = 0;
  170.     lDuelos[playerid] = 0;
  171.         new Arq[50];
  172.         format(Arq, sizeof(Arq), rDuelos, rNome(playerid));
  173.         if (DOF2_FileExists(Arq))
  174.         {
  175.         dCarregar(playerid);
  176.         SendClientMessage(playerid, 0x00BFFFAA, "[INFO] As informações de duelos foram carregadas.");
  177.         SendClientMessage(playerid, 0x00BFFFAA, "[DICA] Digite '/dinfo' para ver suas informações.");
  178.         }else{
  179.             dSalvar(playerid);
  180.         }
  181.     return 0;
  182. }
  183.  
  184. public OnPlayerDisconnect(playerid, reason)
  185. {
  186.         dSalvar(playerid);
  187.     if(eDuelo[Desafiado] == true)
  188.     {
  189.                 format(String, sizeof(String), "~> O jogador %s, se desconectou-se em um duelo.", rNome(Desafiado));
  190.                 SendClientMessageToAll(0x00BFFFAA, String);
  191.                 eDuelo[Desafiado] = false;
  192.                 pDuelo -= 1;
  193.                 KillTimer(TempoSpawn[pConvidou]);
  194.                 SpawnPlayer(pConvidou);
  195.                 KillTimer(TempoMinutos);
  196.         }
  197.     if(eDuelo[pConvidou] == true)
  198.     {
  199.                 format(String, sizeof(String), "~> O jogador %s, se desconectou-se em um duelo.", rNome(pConvidou));
  200.                 SendClientMessageToAll(0x00BFFFAA, String);
  201.                 eDuelo[pConvidou] = false;
  202.                 pDuelo -= 1;
  203.                 KillTimer(TempoSpawn[pConvidou]);
  204.                 SpawnPlayer(Desafiado);
  205.                 KillTimer(TempoMinutos);
  206.         }
  207.         return 0;
  208. }
  209.    
  210. CMD:duelo(playerid, params[]) return cmd_duelar(playerid, params);
  211. CMD:x1(playerid, params[]) return cmd_duelar(playerid, params);
  212.  
  213. CMD:duelar(playerid, params[])
  214. {
  215.         if(pDuelo == 2) return SendClientMessage(playerid, 0xA9A9A9AA, "[ERRO] Já contém 2 pessoas em duelo.");
  216.         if(eDuelo[playerid] == true) return SendClientMessage(playerid, 0xA9A9A9AA, "[ERRO] Você já está no duelo.");
  217.         if(sscanf(params, "d", Desafiado)) return SendClientMessage(playerid, 0xFFA500AA, "~> /Duelar [playerid]");
  218.         if(!IsPlayerConnected(Desafiado)) return SendClientMessage(playerid, 0xA9A9A9AA, "[ERRO] Jogador offline.");
  219.         if(eDuelo[Desafiado] == true) return SendClientMessage(playerid, 0xA9A9A9AA, "[ERRO] Este jogador já está em um duelo.");
  220.         if(Desafiado == playerid) return SendClientMessage(playerid, 0xA9A9A9AA, "[ERRO] Você não pode duelar você mesmo.");
  221.         format(String, sizeof(String), "~> Você convidou o jogador %s para duelar.", rNome(Desafiado));
  222.         SendClientMessage(playerid, 0x00BFFFAA, String);
  223.         pConvidou = playerid;
  224.         SetPlayerPos(playerid, 1412.639892, -1.787510, 1000.924377);
  225.         SetPlayerInterior(playerid, 1);
  226.         TogglePlayerControllable(playerid, false);
  227.         eDuelo[playerid] = true;
  228.         pDuelo += 1;
  229.         ResetPlayerWeapons(playerid);
  230.         SetPlayerTeam(playerid, 255);
  231.     SetPlayerArmour(playerid, 100);
  232.     SetPlayerHealth(playerid, 100);
  233.     Arma
  234.     Arma2
  235.     /* Se for colocar outras armas, coloque aqui o nome da define:
  236.         > Exemplo:
  237.             Arma3
  238.         */
  239.         GameTextForPlayer(playerid,"~w~A~b~~h~guardando Resposta~w~...",2000,3);
  240.         format(String2,sizeof(String2), "{B9BCCC}- Você foi convidado pelo jogador {6495ED}%s{B9BCCC} para um desafio(x1).\n\n - * {6495ED}[Prêmio: R$%d + %d Score]{B9BCCC} *\n\n - Você aceita?", rNome(playerid), pDinheiro, pScore);
  241.         ShowPlayerDialog(Desafiado, rBox1, DIALOG_STYLE_MSGBOX, "[rDuelSystem] > Você foi desafiado.", String2, "Sim", "Não");
  242.     TempoSpawn[playerid] = SetTimerEx("AguardandoResposta", 10000, false, "d", playerid);
  243.         SendClientMessage(playerid, 0xA9A9A9AA, "[AVISO] Se ele não aceitar o convite em 10 segundos, você é spawnado.");
  244.     peDuelos[Desafiado] += 1;
  245.         return 1;
  246. }
  247.  
  248. CMD:dinfo(playerid)
  249. {
  250.         SendClientMessage(playerid, 0x00BFFFAA, "|________________ Duelo Info ________________|");
  251.         format(String, sizeof(String), "× Duelos Pedidos: {6495ED}%d", peDuelos[playerid]);
  252.         SendClientMessage(playerid, 0xB9BCCCAA, String);
  253.         format(String, sizeof(String), "× Duelos Recusados: {6495ED}%d", reDuelos[playerid]);
  254.         SendClientMessage(playerid, 0xB9BCCCAA, String);
  255.         format(String, sizeof(String), "× Duelos Aceitos: {6495ED}%d", acDuelos[playerid]);
  256.     SendClientMessage(playerid, 0xB9BCCCAA, String);
  257.         format(String, sizeof(String), "× Duelos Empatados: {6495ED}%d", emDuelos[playerid]);
  258.         SendClientMessage(playerid, 0xB9BCCCAA, String);
  259.         format(String, sizeof(String), "× Duelos Vencidos: {6495ED}%d", wDuelos[playerid]);
  260.         SendClientMessage(playerid, 0xB9BCCCAA, String);
  261.     format(String, sizeof(String), "× Duelos Perdidos: {6495ED}%d", lDuelos[playerid]);
  262.     SendClientMessage(playerid, 0xB9BCCCAA, String);
  263.     SendClientMessage(playerid, 0x00BFFFAA, "[INFO] Ao se desconectar, as informações são salvas automaticamente.");
  264.     return 1;
  265. }
  266.  
  267. forward AguardandoResposta(playerid);
  268. public AguardandoResposta(playerid)
  269. {
  270.         SpawnPlayer(playerid);
  271.         KillTimer(TempoSpawn[playerid]);
  272.         SetPlayerInterior(playerid, 0);
  273.         format(String, sizeof(String), "[NOOB] O arregão %s, recusou o x1 de, %s.", rNome(Desafiado), rNome(playerid));
  274.         SendClientMessageToAll(0xFFFF00AA, String);
  275.         TogglePlayerControllable(playerid, true);
  276.         pDuelo -= 1;
  277.         eDuelo[playerid] = false;
  278.         reDuelos[Desafiado] += 1;
  279.         format(String2, sizeof(String2), "{B9BCCC}>>{FF0000} Se passou 10 segundos{B9BCCC}.\n\n{B9BCCC}> Você não aceitou o pedido de duelo do jogador %s.\n\n>> {FF0000}Noob{B9BCCC}.", rNome(playerid));
  280.         ShowPlayerDialog(Desafiado, rAviso, DIALOG_STYLE_MSGBOX, "[rDuelSystem] > AVISO", String2, "Fechar", "");
  281.         return 1;
  282. }
  283.  
  284. forward SpawnDuelo(playerid);
  285. public SpawnDuelo(playerid)
  286. {
  287.     SpawnPlayer(playerid);
  288.     pDuelo = 0;
  289.     SendClientMessage(playerid, -1, "[rDuelSystem] Spawnado.");
  290.     return 1;
  291. }
  292.  
  293. forward MinutosDuelo();
  294. public MinutosDuelo()
  295. {
  296.         if(pDuelo > 0)
  297.         {
  298.                 Segundos -= 1;
  299.                 if(Segundos == 0)
  300.                 {
  301.                 Minutos -= 1;
  302.                 Segundos = 59;
  303.         }
  304.         if(Minutos == 0 && Segundos == 0)
  305.         {
  306.                 SpawnPlayer(pConvidou);
  307.                 SpawnPlayer(Desafiado);
  308.                 pDuelo = 0;
  309.                 eDuelo[Desafiado] = false;
  310.                 eDuelo[pConvidou] = false;
  311.                 TextDrawHideForPlayer(pConvidou, TempoRestante);
  312.                 TextDrawHideForPlayer(Desafiado, TempoRestante);
  313.                 TextDrawHideForPlayer(pConvidou, dMinutos);
  314.                 TextDrawHideForPlayer(Desafiado, dMinutos);
  315.                 emDuelos[Desafiado] += 1;
  316.                 emDuelos[pConvidou] += 1;
  317.                         KillTimer(TempoMinutos);
  318.                 SendClientMessageToAll(0x00BFFFAA, "[INFO] Se passarou 3 minutos no duelo, e ninguém venceu.");
  319.                 }
  320.                 if(Segundos <= 9)
  321.                 {
  322.                         format(String2, sizeof(String2), "0%d:0%d", Minutos, Segundos);
  323.                 TextDrawSetString(dMinutos, String2);
  324.                 // Para colocar o 0 na frente quando estiver a baixo 9 segundos.
  325.         }
  326.                 if(Segundos >= 10)
  327.                 {
  328.                         format(String2, sizeof(String2), "0%d:%d", Minutos, Segundos);
  329.                         TextDrawSetString(dMinutos, String2);
  330.                         // Para retirar o 0 quando não estiver a baixo 9 segundos.
  331.                 }
  332.         }
  333.         return 1;
  334. }
  335.  
  336. stock rNome(playerid)
  337. {
  338.         new rnome[MAX_PLAYER_NAME];
  339.         GetPlayerName(playerid, rnome, MAX_PLAYER_NAME);
  340.         return rnome;
  341. }
  342.  
  343. stock dSalvar(playerid)
  344. {
  345.         new Arq[50];
  346.         format(Arq, sizeof(Arq), rDuelos, rNome(playerid));
  347.         if (DOF2_FileExists(Arq))
  348.         {
  349.             DOF2_SetInt(Arq, "Pedidos de Duelo", peDuelos[playerid]);
  350.             DOF2_SetInt(Arq, "Duelos Recusados", reDuelos[playerid]);
  351.             DOF2_SetInt(Arq, "Duelos Aceitos", acDuelos[playerid]);
  352.             DOF2_SetInt(Arq, "Duelos Empatados", emDuelos[playerid]);
  353.             DOF2_SetInt(Arq, "Duelos Vencidos", wDuelos[playerid]);
  354.             DOF2_SetInt(Arq, "Duelos Perdidos", lDuelos[playerid]);
  355.             DOF2_SaveFile();
  356.         }else{
  357.             DOF2_CreateFile(Arq);
  358.             DOF2_SetInt(Arq, "Pedidos de Duelo", peDuelos[playerid]);
  359.             DOF2_SetInt(Arq, "Duelos Recusados", reDuelos[playerid]);
  360.             DOF2_SetInt(Arq, "Duelos Aceitos", acDuelos[playerid]);
  361.             DOF2_SetInt(Arq, "Duelos Empatados", emDuelos[playerid]);
  362.             DOF2_SetInt(Arq, "Duelos Vencidos", wDuelos[playerid]);
  363.             DOF2_SetInt(Arq, "Duelos Perdidos", lDuelos[playerid]);
  364.             DOF2_SaveFile();
  365.         }
  366.         return 1;
  367. }
  368.  
  369. stock dCarregar(playerid)
  370. {
  371.         new Arq[50];
  372.         format(Arq, sizeof(Arq), rDuelos, rNome(playerid));
  373.         if (DOF2_FileExists(Arq))
  374.         {
  375.                 peDuelos[playerid] = DOF2_GetInt(Arq, "Pedidos de Duelo");
  376.                 reDuelos[playerid] = DOF2_GetInt(Arq, "Duelos Recusados");
  377.                 acDuelos[playerid] = DOF2_GetInt(Arq, "Duelos Aceitos");
  378.                 emDuelos[playerid] = DOF2_GetInt(Arq, "Duelos Empatados");
  379.                 wDuelos[playerid] = DOF2_GetInt(Arq, "Duelos Vencidos");
  380.                 lDuelos[playerid] = DOF2_GetInt(Arq, "Duelos Perdidos");
  381.         }
  382.         return 1;
  383. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top