Advertisement
Chip7

[FS] FilterScript Sistema de Duelo

Oct 11th, 2012
1,690
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 13.43 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement