Advertisement
Lucas_Alemao

LA Niveis - By Lucas_Alemao

Apr 8th, 2012
937
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.65 KB | None | 0 0
  1. /*
  2.             Sistema de niveis
  3.            
  4.              By Lucas_Alemao
  5.                    Ou
  6.               [iPs]Lucas
  7.              
  8.          Não retire os créditos
  9.          
  10. */
  11.  
  12. #include a_samp
  13. #include dof2
  14. #include zcmd
  15. #include sscanf2
  16.  
  17.  
  18. //Defina o tempo (em minutos) que o player irá ganhar +resp.
  19. #define         TEMPO_RESPEITO          15 //aqui no caso é 15 minutos
  20.  
  21. //Defina com quantos respeitos o jogador irá upar de nivel.
  22. #define         RESPEITO_UPAR           10
  23.  
  24. //Defina se o score do player será o mesmo do Nivel. true ou false
  25. #define         SCORE_NIVEL             true
  26.  
  27. //quer usar os text draw embaixo do hud? true ou false
  28. #define         USAR_TEXTS              true
  29.  
  30. #define     GetarDado(%0,%1)            PlayerDados[%0][%1]
  31. #define     NovoDado(%0,%1,%2,%3);      PlayerDados[%0][%1] %2 %3;
  32. #define     Loop(%0,%1)                 for(new %0 = 0; %0 < %1; ++%0)
  33. #define     Msg                         SendClientMessage
  34. #define     MsgAll                      SendClientMessageToAll
  35. #define     Azul                        0x1BA8E096
  36. #define     Verde                       0x3CE01B96
  37. #define     Vermelho                    0xFC353596
  38.  
  39. /*          VARIAVEIS E ARRAYS          */
  40. enum Alemao
  41. {
  42.     Respeito,
  43.     Nivel
  44. }
  45.  
  46. new PlayerDados[MAX_PLAYERS][Alemao];
  47. new TimerResp[MAX_PLAYERS];
  48. new stralemao[200];
  49.  
  50. #if USAR_TEXTS == true
  51.     new
  52.         Text:Valor[MAX_PLAYERS],
  53.         Text:Resp1[MAX_PLAYERS]
  54.     ;
  55. #endif
  56.  
  57. forward AtualizarResp(playerid);
  58. forward VerificarResp(playerid);
  59.  
  60. public OnFilterScriptInit()
  61. {
  62.     print("\n\n\nSistema de niveis By [iPs]Lucas Carrogado com sucesso.\n\n\n");
  63.     return 1;
  64. }
  65.  
  66. public OnFilterScriptExit()
  67. {
  68.     Loop(i, MAX_PLAYERS)
  69.     {
  70.         SalvarPlayer(i);
  71.     }
  72.     DOF2_Exit();
  73.     return 1;
  74. }
  75.  
  76. public OnPlayerConnect(playerid)
  77. {
  78.     PlayerDados[playerid][Nivel] = 0;
  79.     PlayerDados[playerid][Respeito] = 0;
  80.     AtualizarDados(playerid);
  81.     TimerResp[playerid] = SetTimerEx("AtualizarResp", TEMPO_RESPEITO*60000, true, "i", playerid);
  82.     NovoDado(playerid, Nivel, =, DOF2_GetInt(stralemao, "Nivel"));
  83.     NovoDado(playerid, Respeito, =, DOF2_GetInt(stralemao, "Respeito"));
  84.     VerificarResp(playerid);
  85.     format(stralemao, sizeof stralemao, "Bem vindo %s, seu nivel é %d e você tem %d respeito.", Nome(playerid), GetarDado(playerid, Nivel), GetarDado(playerid, Respeito));
  86.     Msg(playerid, Verde, stralemao);
  87.     AtualizarTexts(playerid);
  88.     return 1;
  89. }
  90.  
  91. public OnPlayerDisconnect(playerid, reason)
  92. {
  93.     KillTimer(TimerResp[playerid]);
  94.     return 0;
  95. }
  96.  
  97. CMD:niveis(playerid)
  98. {
  99.     Msg(playerid, Azul, "Player online e seus respectivos níveis:");
  100.     Loop(i, MAX_PLAYERS)
  101.     {
  102.         if(IsPlayerConnected(i))
  103.         {
  104.             format(stralemao, sizeof stralemao, "Nome: %s - Nivel: %d - Respeito: %d", Nome(i), GetarDado(i, Nivel), GetarDado(i, Respeito));
  105.             Msg(playerid, Verde, stralemao);
  106.         }
  107.     }
  108.     return 1;
  109. }
  110.  
  111. CMD:setarnivel(playerid, params[])
  112. {
  113.     new
  114.         ID,
  115.         Level;
  116.     if(!IsPlayerAdmin(playerid)) return Msg(playerid, Vermelho, "Você precisa ser admin para usar esse comando.");
  117.     if(sscanf(params, "ui", ID, Level)) return Msg(playerid, Verde, "Use /setarnivel [ID] [Nivel]");
  118.     NovoDado(ID, Nivel, =, Level);
  119.     format(stralemao, sizeof stralemao, "O Admin %s setou o nivel de %s para %d.", Nome(playerid), Nome(ID), Level);
  120.     MsgAll(Verde, stralemao);
  121.     AtualizarTexts(ID);
  122.     return 1;
  123. }
  124.  
  125. CMD:darnivel(playerid, params[])
  126. {
  127.     new
  128.         ID,
  129.         Level;
  130.     if(!IsPlayerAdmin(playerid)) return Msg(playerid, Vermelho, "Você precisa ser admin para usar esse comando.");
  131.     if(sscanf(params, "ui", ID, Level)) return Msg(playerid, Verde, "Use /darnivel [ID] [Nivel]");
  132.     NovoDado(ID, Nivel, +=, Level);
  133.     format(stralemao, sizeof stralemao, "O Admin %s deu nivel %s para %d.", Nome(playerid), Nome(ID), Level);
  134.     MsgAll(Verde, stralemao);
  135.     AtualizarTexts(ID);
  136.     return 1;
  137. }
  138.  
  139. CMD:setarrespeito(playerid, params[])
  140. {
  141.     new
  142.         ID,
  143.         Resp,
  144.         Total;
  145.     if(!IsPlayerAdmin(playerid)) return Msg(playerid, Vermelho, "Você precisa ser admin para usar esse comando.");
  146.     if(sscanf(params, "ui", ID, Resp)) return Msg(playerid, Verde, "Use /setarrespeito [ID] [Respeito]");
  147.     Total = GetarDado(ID, Respeito);
  148.     NovoDado(ID, Respeito, =, Resp);
  149.     if(GetarDado(ID, Respeito) > RESPEITO_UPAR)
  150.     {
  151.         format(stralemao, sizeof stralemao, "O respeito que você deu ao player (%d) é maior que respeito maximo (%d).", Resp, RESPEITO_UPAR);
  152.         Msg(playerid, Azul, stralemao);
  153.         NovoDado(ID, Respeito, =, Total);
  154.         return 1;
  155.     }
  156.     format(stralemao, sizeof stralemao, "O Admin %s setou o nivel de %s para %d.", Nome(playerid), Nome(ID), Resp);
  157.     MsgAll(Verde, stralemao);
  158.     AtualizarTexts(ID);
  159.     return 1;
  160. }
  161.  
  162. CMD:darrespeito(playerid, params[])
  163. {
  164.     new
  165.         ID,
  166.         Resp,
  167.         Total;
  168.     if(!IsPlayerAdmin(playerid)) return Msg(playerid, Vermelho, "Você precisa ser admin para usar esse comando.");
  169.     if(sscanf(params, "ui", ID, Resp)) return Msg(playerid, Verde, "Use /darrespeito [ID] [Respeito]");
  170.     Total = GetarDado(ID, Respeito);
  171.     NovoDado(ID, Respeito, +=, Resp);
  172.     if(GetarDado(ID, Respeito) > RESPEITO_UPAR)
  173.     {
  174.         format(stralemao, sizeof stralemao, "A soma do respeito que o player tem (%d) mais o respeito que você deu (%d) é maior que respeito maximo (%d).", Total, Resp, RESPEITO_UPAR);
  175.         Msg(playerid, Azul, stralemao);
  176.         NovoDado(ID, Respeito, =, Total);
  177.         return 1;
  178.     }
  179.     format(stralemao, sizeof stralemao, "O Admin %s Deu %d niveis a %s.", Nome(playerid), Resp, Nome(ID));
  180.     MsgAll(Verde, stralemao);
  181.     AtualizarTexts(ID);
  182.     return 1;
  183. }
  184.  
  185. public AtualizarResp(playerid)
  186. {
  187.     NovoDado(playerid, Respeito, +=, 1);
  188.     format(stralemao, sizeof stralemao, "Parabens %s, Você acaba de ganhar um 1 respeito", Nome(playerid));
  189.     Msg(playerid, Azul, stralemao);
  190.     VerificarResp(playerid);
  191.     SalvarPlayer(playerid);
  192.     AtualizarTexts(playerid);
  193.     return 1;
  194. }
  195.  
  196. public VerificarResp(playerid)
  197. {
  198.     if(GetarDado(playerid, Respeito) == RESPEITO_UPAR)
  199.     {
  200.         NovoDado(playerid, Nivel, +=, 1);
  201.         NovoDado(playerid, Respeito, =, 0);
  202.         format(stralemao, sizeof(stralemao), "Parabens %s, você conseguiu %d respeitos e agora está nivel %d!", Nome(playerid), RESPEITO_UPAR, GetarDado(playerid, Nivel));
  203.         Msg(playerid, Azul, stralemao);
  204.         format(stralemao, sizeof stralemao, "O Jogador %s Acaba de upar 1 nivel, agora ele é level %d", Nome(playerid), GetarDado(playerid, Nivel));
  205.         MsgAll(Verde, stralemao);
  206.         SalvarPlayer(playerid);
  207.         Atualizar(playerid);
  208.         AtualizarTexts(playerid);
  209.     }
  210.     return 1;
  211. }
  212.  
  213. stock Nome(playerid)
  214. {
  215.     new pname[24];
  216.     GetPlayerName(playerid, pname, 24);
  217.     return pname;
  218. }
  219.  
  220. stock Atualizar(playerid)
  221. {
  222.     #if SCORE_NIVEL == true
  223.         SetPlayerScore(playerid, GetarDado(playerid, Nivel));
  224.     #else
  225.         #pragma unused playerid
  226.     #endif
  227.     return 1;
  228. }
  229.  
  230. stock SalvarPlayer(playerid)
  231. {
  232.     format(stralemao, sizeof(stralemao), "LANIVEIS/%s.sav", Nome(playerid));
  233.     if(!DOF2_FileExists(stralemao))
  234.     {
  235.         DOF2_CreateFile(stralemao);
  236.     }
  237.     DOF2_SetInt(stralemao, "Nivel", GetarDado(playerid, Nivel));
  238.     DOF2_SetInt(stralemao, "Respeito", GetarDado(playerid, Respeito));
  239.     DOF2_SaveFile();
  240.     /* debug:
  241.     printf("Nivel e respeito do jogador %s salvo com sucesso.", Nome(playerid)); */
  242.     return 1;
  243. }
  244.  
  245. stock AtualizarDados(playerid)
  246. {
  247.     format(stralemao, sizeof(stralemao), "LANIVEIS/%s.sav", Nome(playerid));
  248.     if(!DOF2_FileExists(stralemao))
  249.     {
  250.         printf("O arquivo do jogador %s não existia e o mesmo foi criado automaticamente.", Nome(playerid));
  251.         DOF2_SetInt(stralemao, "Nivel", 0);
  252.         DOF2_SetInt(stralemao, "Respeito", 0);
  253.         DOF2_SaveFile();
  254.     }
  255.     return 1;
  256. }
  257.  
  258. stock AtualizarTexts(playerid)
  259. {
  260.     #if USAR_TEXTS == true
  261.         //respeito
  262.         TextDrawHideForPlayer(playerid, Valor[playerid]);
  263.         format(stralemao, sizeof stralemao, "Respeito: %d", GetarDado(playerid, Respeito));
  264.         Valor[playerid] = TextDrawCreate(490.000000, 130.000000, stralemao);
  265.         TextDrawBackgroundColor(Valor[playerid], 255);
  266.         TextDrawFont(Valor[playerid], 3);
  267.         TextDrawLetterSize(Valor[playerid], 0.559999, 1.700000);
  268.         TextDrawColor(Valor[playerid], -1);
  269.         TextDrawSetOutline(Valor[playerid], 1);
  270.         TextDrawSetProportional(Valor[playerid], 1);
  271.         //nivel
  272.         TextDrawHideForPlayer(playerid, Resp1[playerid]);
  273.         format(stralemao, sizeof stralemao, "Nivel: %d", GetarDado(playerid, Nivel));
  274.         Resp1[playerid] = TextDrawCreate(490.000000, 170.000000, stralemao);
  275.         TextDrawBackgroundColor(Resp1[playerid], 255);
  276.         TextDrawFont(Resp1[playerid], 3);
  277.         TextDrawLetterSize(Resp1[playerid], 0.689999, 1.600000);
  278.         TextDrawColor(Resp1[playerid], -1);
  279.         TextDrawSetOutline(Resp1[playerid], 1);
  280.         TextDrawSetProportional(Resp1[playerid], 1);
  281.         TextDrawShowForPlayer(playerid, Valor[playerid]);
  282.         TextDrawShowForPlayer(playerid, Resp1[playerid]);
  283.     #else
  284.         #pragma unused playerid
  285.     #endif
  286.     return 1;
  287. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement