Advertisement
Guest User

[FilterScript] - @Riichard - Sistema de Duelo

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