Advertisement
Guest User

[FilterScript] Sistema de Árvore de Natal

a guest
Dec 15th, 2013
3,720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 8.31 KB | None | 0 0
  1. /* Includes */
  2. #include <a_samp>
  3. #include <a_zones>
  4. #include <zcmd>
  5. #include <sscanf2>
  6. #include <streamer>
  7.  
  8. /* Definições */
  9. #define         MAX_NATAL               (10)        // Define o maximo de Árvores de Natal.
  10. #define         UPDATE_TEXT_LABEL       (200)       // Define por quantos milesegundo a textlabel será atualizada.
  11. #define         PRESENTE_DELAY          (3600)      // Define quantos segundos o player poderá usar o comando '/pegarpresente' novamente.
  12.  
  13. /* Variaveis */
  14. new PresenteTempo[MAX_PLAYERS];
  15.  
  16. enum enumNatal {
  17.     n_Objects[5],
  18.     Float:n_Position[3],
  19.     Text3D: n_TextLabel[2]
  20. }
  21. new Natal[MAX_NATAL][enumNatal];
  22.  
  23. /* Comandos */
  24. CMD:criarnatal(playerid, params[]) {
  25.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{F76060}Somente Administradores RCON pode usar este comando!");
  26.     new Nome[MAX_PLAYER_NAME+1], Mensagem[158], Zone_Name[28];
  27.     for(new i; i < MAX_NATAL; i++) {
  28.         if(Natal[i][n_Position][0] == 0 && Natal[i][n_Position][1] == 0) {
  29.             GetPlayerPos(playerid, Natal[i][n_Position][0], Natal[i][n_Position][1], Natal[i][n_Position][2]);
  30.             SetPlayerPos(playerid, Natal[i][n_Position][0]+3, Natal[i][n_Position][1], Natal[i][n_Position][2]);
  31.             Criar_Natal(i);
  32.             SetTimer("Update_Text_Natal", UPDATE_TEXT_LABEL, true);
  33.             GetPlayerName(playerid, Nome, sizeof(Nome));
  34.             GetPlayer2DZone(playerid, Zone_Name, 28);
  35.             format(Mensagem, sizeof(Mensagem), "{FF3333}[ * Natal * ] %s{D9FF00} Está convidando a todos para vir até {FF3333}%s{D9FF00} para receber presentes!", Nome, Zone_Name);
  36.             SendClientMessageToAll(-1, Mensagem);
  37.             format(Mensagem, sizeof Mensagem, "{A8A8A8}›› Você criou uma Árvore de Natal. #ID {E36D6D}%i{FFFFFF}.", i);
  38.             return SendClientMessage(playerid, -1, Mensagem);
  39.         }
  40.     }
  41.     return 1;
  42. }
  43.  
  44. CMD:destruirnatal(playerid, params[]) {
  45.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{F76060}Somente Administradores RCON pode usar este comando!");
  46.     new Natal_ID, Mensagem[128];
  47.     if(sscanf(params, "i", Natal_ID)) return SendClientMessage(playerid, -1, "{F55151}Use:{FFFFFF} /destruirnatal [{FA7373}natalid{FFFFFF}]");
  48.     if(0 <= Natal_ID < MAX_NATAL) {
  49.         if(Natal[Natal_ID][n_Position][0] == 0 && Natal[Natal_ID][n_Position][1] == 0) return SendClientMessage(playerid, -1, "{FF6B6B}Este Natal ID não está sendo usado!");
  50.         Destruir_Natal(Natal_ID);
  51.         format(Mensagem, sizeof(Mensagem), "{A8A8A8}›› Você destruiu uma Árvore de Natal. #ID {E36D6D}%i{FFFFFF}.", Natal_ID);
  52.         SendClientMessage(playerid, -1, Mensagem);
  53.     }
  54.     else SendClientMessage(playerid, -1, "Árvore de Natal inválida.");
  55.     return 1;
  56. }
  57.  
  58. CMD:resetarpresentetempo(playerid, params[]) {
  59.     if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, -1, "{F76060}Somente Administradores RCON pode usar este comando!");
  60.     new Alvo, Mensagem[128], Nome[MAX_PLAYER_NAME+1];
  61.     if(sscanf(params, "i", Alvo)) return SendClientMessage(playerid, -1, "{F55151}Use:{FFFFFF} /resetarpresentetempo [{FA7373}playerid{FFFFFF}]");
  62.     PresenteTempo[Alvo] = 0;
  63.     GetPlayerName(playerid, Nome, sizeof(Nome));
  64.     format(Mensagem, sizeof(Mensagem), "{84E64C}O administrador %s resetou seu tempo de pegar presente agora você pode pegar presente novamente.", Nome);
  65.     SendClientMessage(playerid, -1, Mensagem);
  66.     return 1;
  67. }
  68.  
  69. CMD:pegarpresente(playerid, params[]) {
  70.     if(gettime() - PresenteTempo[playerid] < PRESENTE_DELAY) return SendClientMessage(playerid, -1, "{F76060}››{FFFfFF} Você já abriu uma caixa de presentes é necessario esperar 1 hora para usar este comando novamente!");
  71.     for(new i; i < MAX_NATAL; i++) {
  72.         if(IsPlayerInRangeOfPoint(playerid, 5.0, Natal[i][n_Position][0], Natal[i][n_Position][1], Natal[i][n_Position][2])) {
  73.             new iRand = random(5), Mensagem[128], Nome[MAX_PLAYER_NAME+1];
  74.             GetPlayerName(playerid, Nome, sizeof(Nome));
  75.             switch(iRand) {
  76.                 case 0: {
  77.                     GivePlayerMoney(playerid, 50000);
  78.                     format(Mensagem, sizeof(Mensagem), "{00FA3A}(Árvore de Natal){B7FA00} %s abriu uma das caixas de presentes e ganhou {048704}$50,000{B7FA00}.");
  79.                     SendClientMessageToAll(1, Mensagem);
  80.                 }
  81.                 case 1: {
  82.                     GivePlayerWeapon(playerid, 24, 99999);
  83.                     GivePlayerWeapon(playerid, 29, 99999);
  84.                     GivePlayerWeapon(playerid, 31, 99999);
  85.                     GivePlayerWeapon(playerid, 34, 99999);
  86.                     GivePlayerWeapon(playerid, 4, 1);
  87.                     format(Mensagem, sizeof(Mensagem), "{00FA3A}(Árvore de Natal){B7FA00} %s abriu uma das caixas de presentes e ganhou um {02D185}Kit de Armas{B7FA00}.");
  88.                     SendClientMessageToAll(1, Mensagem);
  89.                 }
  90.                 case 2: {
  91.                     GivePlayerWeapon(playerid, 9, 1);
  92.                     format(Mensagem, sizeof(Mensagem), "{00FA3A}(Árvore de Natal){B7FA00} %s abriu uma das caixas de presentes e ganhou uma {F5F50C}Motosserra{B7FA00}.");
  93.                     SendClientMessageToAll(1, Mensagem);
  94.                 }
  95.                 case 3: {
  96.                     GivePlayerWeapon(playerid, 38, 5000);
  97.                     format(Mensagem, sizeof(Mensagem), "{00FA3A}(Árvore de Natal){B7FA00} %s abriu uma das caixas de presentes e ganhou uma {F5F50C}Minigun{B7FA00}.");
  98.                     SendClientMessageToAll(1, Mensagem);
  99.                 }
  100.                 case 4: {
  101.                     SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
  102.                     format(Mensagem, sizeof(Mensagem), "{00FA3A}(Árvore de Natal){B7FA00} %s abriu uma das caixas de presentes e ganhou um {F5F50C}JetPack{B7FA00}.");
  103.                     SendClientMessageToAll(1, Mensagem);
  104.                 }
  105.             }
  106.             PresenteTempo[playerid] = gettime();
  107.         }
  108.     }
  109.     return 1;
  110. }
  111.  
  112. /* Callbacks */
  113. public OnFilterScriptInit()
  114. {
  115.     print("* ----------------------------------------------------- *");
  116.     print("     Nome do Filter Script: Árvore de Natal");
  117.     print("     Criado por: NurbWill");
  118.     print("     Includes: zcmd, sscanf e streamer.");
  119.     print("     Skype: Nurb.Will - Profile SA-MP: http://forum.sa-mp.com/member.php?u=220166");
  120.     print("* ----------------------------------------------------- *");
  121.     return 1;
  122. }
  123.  
  124. forward Update_Text_Natal();
  125. public Update_Text_Natal() {
  126.     new Label_String[128];
  127.     new const Cores[][] = {"FF0000", "FF00C3", "1500FF", "FFEA00", "FF6200", "15FF00", "6705A8", "3CE8E5", "FF6D05", "768705", "FF00CC", "FFFFFF"};
  128.     format(Label_String, sizeof(Label_String), "{%s}F{%s}e{%s}l{%s}i{%s}z {%s}N{%s}a{%s}t{%s}a{%s}l{%s}!{%s}", Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))], Cores[random(sizeof(Cores))]);
  129.     for(new i; i < MAX_NATAL; i++) UpdateDynamic3DTextLabelText(Natal[i][n_TextLabel][0], -1, Label_String);
  130. }
  131.  
  132. stock Criar_Natal(id) {
  133.     new Label_String[128];
  134.     Natal[id][n_Objects][0] = CreateDynamicObject(19076, Natal[id][n_Position][0], Natal[id][n_Position][1], Natal[id][n_Position][2]-0.9,   0.00000, 0.00000, 0.20201);
  135.     Natal[id][n_Objects][1] = CreateDynamicObject(19054, Natal[id][n_Position][0]+1.5, Natal[id][n_Position][1]+1, Natal[id][n_Position][2]-0.5,   0.00000, 0.00000, -13.68000);
  136.     Natal[id][n_Objects][2] = CreateDynamicObject(19055, Natal[id][n_Position][0]-1.5, Natal[id][n_Position][1]-1, Natal[id][n_Position][2]-0.5,   0.00000, 0.00000, -10.91999);
  137.     Natal[id][n_Objects][3] = CreateDynamicObject(19056, Natal[id][n_Position][0]+1.5, Natal[id][n_Position][1]-1.5, Natal[id][n_Position][2]-0.5,   0.00000, 0.00000, -13.68000);
  138.     Natal[id][n_Objects][4] = CreateDynamicObject(19057, Natal[id][n_Position][0]-1.5, Natal[id][n_Position][1]+1.5, Natal[id][n_Position][2]-0.5,   0.00000, 0.00000, -13.68000);
  139.     Natal[id][n_TextLabel][0] = CreateDynamic3DTextLabel("Feliz Natal", 0x008080FF, Natal[id][n_Position][0], Natal[id][n_Position][1], Natal[id][n_Position][2]+11.0, 40.0);
  140.     format(Label_String, sizeof(Label_String), "{2BFF00}Árvore {FFFB00}de {FF0A0A}Natal\n{FFFB00}Use '{0004FF}/pegarpresente{FFFB00}' para abrir uma das caixas\nID: {94AD03}%i", id);
  141.     Natal[id][n_TextLabel][1] = CreateDynamic3DTextLabel(Label_String, 0x008080FF, Natal[id][n_Position][0], Natal[id][n_Position][1], Natal[id][n_Position][2], 10.0);
  142.     printf("[Natal] Árvore de Natal #%i criado com sucesso.", id);
  143. }
  144.  
  145. stock Destruir_Natal(id) {
  146.     Natal[id][n_Position][0] = 0;
  147.     Natal[id][n_Position][1] = 0;
  148.     Natal[id][n_Position][2] = 0;
  149.     for(new i; i < 5; i++) DestroyDynamicObject(Natal[id][n_Objects][i]);
  150.     DestroyDynamic3DTextLabel(Natal[id][n_TextLabel][0]);
  151.     DestroyDynamic3DTextLabel(Natal[id][n_TextLabel][1]);
  152. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement