Advertisement
ricop522

[EN] Event 0.6b

Oct 15th, 2011
763
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 19.15 KB | None | 0 0
  1. /*  Don't remove the credits
  2.  
  3.                                              _____                _     _
  4.                                             |  ___|              | |   | |
  5.                                             | |____   _____ _ __ | |_  | |__  _   _
  6.                                             |  __\ \ / / _ \ '_ \| __| | '_ \| | | |
  7.                                             | |___\ V /  __/ | | | |_  | |_) | |_| |
  8.                                             \____/ \_/ \___|_| |_|\__| |_.__/ \__, |
  9.                                                                                __/ |
  10.                                                                               |___/
  11.                                             ______ _                  _____  _____
  12.                                             | ___ (_)                / __  \/ __  \
  13.                                             | |_/ /_  ___ ___  _ __  `' / /'`' / /'
  14.                                             |    /| |/ __/ _ \| '_ \   / /    / /
  15.                                             | |\ \| | (_| (_) | |_) |./ /___./ /___
  16.                                             \_| \_|_|\___\___/| .__/ \_____/\_____/
  17.                                                               | |
  18.                                                               |_|
  19.  
  20.                                  _____   ____   _          _
  21.                                 |  _  | / ___| | |        | |
  22.                                 | |/' |/ /___  | |__   ___| |_ __ _
  23.                                 |  /| || ___ \ | '_ \ / _ \ __/ _` |
  24.                                 \ |_/ /| \_/ | | |_) |  __/ || (_| |
  25.                                  \___(_)_____/ |_.__/ \___|\__\__,_|
  26.  
  27. */
  28.  
  29.  
  30.  
  31. #include <a_samp>
  32. #pragma semicolon 0
  33. #pragma tabsize 0
  34. enum ricop_evento
  35. {
  36.     eArmas[8],
  37.     bool:eUseSkin,
  38.     eSkin,
  39.     eVagas,
  40.     eQuantidadeVagas,
  41.     Float:eVida,
  42.     Float:eColete,
  43.     Float:ePos[3],
  44.     eInterior,
  45.     eVirWorld,
  46.     eStatus,
  47. }
  48. new EventoInfo[ricop_evento];
  49. new bool:eEntrou[MAX_PLAYERS];
  50. new eString[0x80];
  51. new eventoCarro[MAX_VEHICLES];
  52.  
  53. #define ricop true
  54. #define eCor 0x77BBFFAA
  55. #define DIALOG_CREDITOS 1123  //Change 1123 if already exist a dialog in your gamemode
  56. //Change this to your administration system
  57. #define Admin(%0) IsPlayerAdmin(%0)
  58. //example:
  59. //#define Admin(%0) PlayerInfo[%0][pAdmin]  //used to gf
  60. public OnFilterScriptInit()
  61. {
  62.     print("\n--------------------------------------");
  63.     print(" Event System by [Ricop522] loaded !");   //
  64.     print("");
  65.     print("           -----------------------------------------");
  66.     print("");
  67.     print("--------------------------------------\n");
  68.     return 1;
  69. }
  70.  
  71. public OnFilterScriptExit()
  72. {
  73.     print("\n--------------------------------------");
  74.     print(" Event System by [Ricop522] unloaded !");
  75.     print("");
  76.     print("           -----------------------------------------");
  77.     print("");
  78.     print("--------------------------------------\n");
  79.     return 1;
  80. }
  81. public OnPlayerConnect(playerid)
  82. {
  83.     eEntrou[playerid] = false;
  84.     return 1;
  85. }
  86. public OnPlayerCommandText(playerid, cmdtext[])
  87. {
  88.     new rCmd[0x80], idx, tmp[128];
  89.     if(!strcmp(rCmd, "/ecredits", true))
  90.     {
  91.         ShowPlayerDialog(playerid, DIALOG_CREDITOS, DIALOG_STYLE_LIST, "[ EN ]", "[Event System]\n\n\n<<< Created by Ricop522 >>>\n\n\n Thanks to - N/A \n\n\n Thanks for use this FS in your server!", "OK", " ");
  92.         return 1;
  93.     }
  94.     if(!strcmp(rCmd, "/event", true))
  95.     {
  96.         new r_r[0x24], eArma, eOption;
  97.         r_r = strtok(cmdtext, idx);
  98.         if(!strlen(r_r))
  99.         {
  100.             SendClientMessage(playerid, eCor, "Use: /event [option]'");
  101.             SendClientMessage(playerid, -1, "enter, \"/ecredits\"");
  102.             if(Admin(playerid))
  103.             {
  104.                 SendClientMessage(playerid, -1, "[Admin]: gun[1-8], useskin, eventskin, life, armour");
  105.                 SendClientMessage(playerid, -1, "[Admin]: maxplayers, open, close, kick, createcar, destroycars");
  106.             }
  107.             return 0x01;
  108.         }
  109.         if(strcmp(r_r,"destroycars",true) == 0)
  110.         {
  111.             for(new i = 0; i < MAX_VEHICLES; ++i) {
  112.                 if(eventoCarro[i] == 1)
  113.                     DestroyVehicle(i);
  114.             }
  115.             format(eString, sizeof(eString), "Admin %s destroyed all the event cars !", eNome(playerid));
  116.             SendClientMessageToAll(eCor, eString);
  117.             return 1;
  118.         }
  119.         if(strcmp(r_r,"createcar",true) == 0)
  120.         {
  121.             new contador = 0;
  122.             for(new i = 0; i < MAX_VEHICLES; ++i) {
  123.                 if(eventoCarro[i] == 1)
  124.                     ++contador;
  125.             }
  126.             if(contador > EventoInfo[eQuantidadeVagas]) return SendClientMessage(playerid, -1, "[ERROR]: The cars are at the maximum event players !");
  127.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  128.             new carroid, cor1, cor2, idcarro;
  129.  
  130.             tmp = strtok(cmdtext, idx); //Carro ID
  131.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /evento criarcarro [carid] [cor1] [cor2]");
  132.             carroid = strval(tmp);
  133.             if(carroid < 400 || carroid > 611) return SendClientMessage(playerid, -1, "[AD:Event] Ops, vehicle ID isn't allowed!");
  134.  
  135.             tmp = strtok(cmdtext, idx); //Cor 1
  136.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /evento criarcarro [carid] [cor1] [cor2]");
  137.             cor1 = strval(tmp);
  138.             if(cor1 < -1 || cor1 > 126) return SendClientMessage(playerid, -1, "[AD:Event]: Use  0 to 126 colors");
  139.  
  140.             tmp = strtok(cmdtext, idx); //Cor 2
  141.             if(!strlen(tmp)) return SendClientMessage(playerid, -1, "<!> /event createcar [carid] [color1] [color2]");
  142.             cor2 = strval(tmp);
  143.             if(cor2 < -1 || cor2 > 126) return SendClientMessage(playerid, -1, "[AD:Event]: Use  0 to 126 colors");
  144.  
  145.             new Float:Pos[3]; GetPlayerPos(playerid, Pos[0],Pos[1],Pos[2]);
  146.             idcarro = CreateVehicle(carroid, Pos[0],Pos[1],Pos[2], 0.0, cor1, cor2, 60000);
  147.             eventoCarro[idcarro] = 1;
  148.             LinkVehicleToInterior(idcarro, GetPlayerInterior(playerid));
  149.             SetVehicleVirtualWorld(idcarro, GetPlayerVirtualWorld(playerid));
  150.             format(eString, sizeof(eString), "<!> Event car of ID [%d] created! [Model: %i color1: %1, color2: %i, PosX: %f,Y:%f,Z:%f].", idcarro, carroid, cor1, cor2, Pos[0],Pos[1],Pos[2]);
  151.             SendClientMessage(playerid, eCor, eString);
  152.             format(eString, sizeof(eString), "<!> Admin %s criou o carro [%d] para um evento. [Model: %i color1: %1, color2: %i, PosX: %f,Y:%f,Z:%f].", idcarro, carroid, cor1, cor2, Pos[0],Pos[1],Pos[2]);
  153.             for(new i = 0; i < GetMaxPlayers(); ++i) if(IsPlayerAdmin(i)) SendClientMessage(i, -1, eString);
  154.             return 0x01;
  155.         }
  156.         if(strcmp(r_r,"kick",true) == 0)
  157.         {
  158.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  159.             tmp = strtok(cmdtext, idx);
  160.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use /evento kick [ID] [reason]");
  161.             new id = strval(tmp);
  162.             new length = strlen(cmdtext), offset = idx, result[128]
  163.             while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
  164.             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
  165.             result[idx - offset] = EOS;
  166.             if(!strlen(result)) return SendClientMessage(playerid, eCor, "<!> Use /event kick [ID] [reason]");
  167.             if(!IsPlayerConnected(id) || id == INVALID_PLAYER_ID || eEntrou[id] == false) return SendClientMessage(playerid, -1, "Invalid playerid / Offline playerid / The player isn't at the event.");
  168.             if(strlen(result) == 0) { format(eString, sizeof(eString), "[AD:Event]: Administrator %s kickou %s do evento, motivo: Not informed", eNome(playerid), eNome(id)); }
  169.             else { format(eString, sizeof(eString), "[AD:Event]: Administrator %s kicked %s from the event, reason: %s", eNome(playerid), eNome(id),(result)); }
  170.             SendClientMessageToAll(eCor, eString);
  171.             Kick(id);
  172.             return 0x01;
  173.         }
  174.         if(strcmp(r_r,"close",true) == 0)
  175.         {
  176.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  177.             new length = strlen(cmdtext), offset = idx, result[128]
  178.             while ((idx < length) && (cmdtext[idx] <= ' ')) idx++;
  179.             while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; }
  180.             result[idx - offset] = EOS;
  181.             if(!strlen(result)) return SendClientMessage(playerid, eCor, "<!> /event close [reason]");
  182.             EventoInfo[eStatus] = false;
  183.             if(strlen(result) == 0) { format(eString, sizeof(eString), "[AD:Event]: Administrator %s closes the event, reason: Not informed", eNome(playerid)); }
  184.             else { format(eString, sizeof(eString), "[AD:Event]: Administrator %s closes the event, reason: %s", eNome(playerid), (result)); }
  185.             SendClientMessageToAll(eCor, eString);
  186.             resetarEvento();
  187.             return 0x01;
  188.         }
  189.         if(strcmp(r_r,"open",true) == 0)
  190.         {
  191.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  192.             EventoInfo[eStatus] = true;
  193.             format(eString, sizeof(eString), "[AD:Event]: Administrator %s open an event! use \"/event enter\" to enter! MaxPlayers: %i", eNome(playerid), EventoInfo[eQuantidadeVagas]);
  194.             SendClientMessageToAll(eCor, eString);
  195.             return 0x01;
  196.         }
  197.         if(strcmp(r_r,"maxplayers",true) == 0)
  198.         {
  199.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  200.             tmp = strtok(cmdtext, idx);
  201.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event maxplayers [how many?]");
  202.             eOption = strval(tmp);
  203.             EventoInfo[eColete] = eOption;
  204.             format(eString, sizeof(eString), "[AD:Event]: Maximum event people seted to %i", eOption);
  205.             SendClientMessage(playerid, eCor, eString);
  206.             return 0x01;
  207.         }
  208.         if(strcmp(r_r,"armour",true) == 0)
  209.         {
  210.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  211.             tmp = strtok(cmdtext, idx);
  212.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event armour [how many?]");
  213.             new Float:eOption2 = floatstr(tmp);
  214.             EventoInfo[eColete] = eOption2;
  215.             format(eString, sizeof(eString), "[AD:Event]: Event armour seted to %f", eOption2);
  216.             SendClientMessage(playerid, eCor, eString);
  217.             return 0x01;
  218.         }
  219.         if(strcmp(r_r,"health",true) == 0)
  220.         {
  221.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  222.             tmp = strtok(cmdtext, idx);
  223.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event life [how many?]");
  224.             new Float:eOption2 = floatstr(tmp);
  225.             EventoInfo[eVida] = eOption2;
  226.             format(eString, sizeof(eString), "[AD:Event]: Event life seted to %f", eOption2);
  227.             SendClientMessage(playerid, eCor, eString);
  228.             return 0x01;
  229.         }
  230.         if(strcmp(r_r,"eventskin",true) == 0)
  231.         {
  232.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  233.             if(EventoInfo[eUseSkin] == false) return SendClientMessage(playerid, eCor, "[AD:Event]: Use \"/event useskin 1\" to active the event skin.");
  234.             tmp = strtok(cmdtext, idx);
  235.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event eventskin [skinid]");
  236.             eOption = strval(tmp);
  237.             if(eOption < 0 || eOption > 299) return SendClientMessage(playerid, eCor, "[AD:Event]: Use 1 to 299 skins.");
  238.             EventoInfo[eSkin] = eOption;
  239.             return 0x01;
  240.         }
  241.         if(strcmp(r_r,"useskin",true) == 0)
  242.         {
  243.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  244.             tmp = strtok(cmdtext, idx);
  245.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event useskin [option]");
  246.             eOption = strval(tmp);
  247.             if(eOption < 0 || eOption > 1) return SendClientMessage(playerid, eCor, "[AD:Event]: Use (1 - active) | (0 - unactive).");
  248.             if(eOption == 1) (EventoInfo[eUseSkin] = true); else (EventoInfo[eUseSkin] = false);
  249.             return 0x01;
  250.         }
  251.         if(strcmp(r_r,"enter",true) == 0)
  252.         {
  253.             if(EventoInfo[eStatus] == 0) return SendClientMessage(playerid, eCor, "[AD:Event]: Evento fechado!");
  254.             eEntrou[playerid] = true;
  255.             entrarEvento(playerid);
  256.         }
  257.         if(strcmp(r_r,"gun1",true) == 0)
  258.         {
  259.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  260.             tmp = strtok(cmdtext, idx);
  261.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun1 [gunID]");
  262.             eArma = strval(tmp);
  263.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  264.             EventoInfo[eArmas][0] = eArma;
  265.             return 0x01;
  266.         }
  267.         if(strcmp(r_r,"gun2",true) == 0)
  268.         {
  269.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  270.             tmp = strtok(cmdtext, idx);
  271.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun2 [gunID]");
  272.             eArma = strval(tmp);
  273.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  274.             EventoInfo[eArmas][1] = eArma;
  275.             return 0x01;
  276.         }
  277.         if(strcmp(r_r,"gun3",true) == 0)
  278.         {
  279.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  280.             tmp = strtok(cmdtext, idx);
  281.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun3 [gunID]");
  282.             eArma = strval(tmp);
  283.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  284.             EventoInfo[eArmas][2] = eArma;
  285.             return 0x01;
  286.         }
  287.         if(strcmp(r_r,"gun4",true) == 0)
  288.         {
  289.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  290.             tmp = strtok(cmdtext, idx);
  291.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun4 [gunID]");
  292.             eArma = strval(tmp);
  293.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  294.             EventoInfo[eArmas][3] = eArma;
  295.             return 0x01;
  296.         }
  297.         if(strcmp(r_r,"gun5",true) == 0)
  298.         {
  299.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  300.             tmp = strtok(cmdtext, idx);
  301.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun5 [gunID]");
  302.             eArma = strval(tmp);
  303.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  304.             EventoInfo[eArmas][4] = eArma;
  305.             return 0x01;
  306.         }
  307.         if(strcmp(r_r,"gun6",true) == 0)
  308.         {
  309.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  310.             tmp = strtok(cmdtext, idx);
  311.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun6 [gunID]");
  312.             eArma = strval(tmp);
  313.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  314.             EventoInfo[eArmas][5] = eArma;
  315.             return 0x01;
  316.         }
  317.         if(strcmp(r_r,"gun7",true) == 0)
  318.         {
  319.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  320.             tmp = strtok(cmdtext, idx);
  321.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun7 [gunID]");
  322.             eArma = strval(tmp);
  323.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  324.             EventoInfo[eArmas][6] = eArma;
  325.             return 0x01;
  326.         }
  327.         if(strcmp(r_r,"gun8",true) == 0)
  328.         {
  329.             if(!Admin(playerid)) return SendClientMessage(playerid, eCor, "[AD:Event]: You're not an Administrator.");
  330.             tmp = strtok(cmdtext, idx);
  331.             if(!strlen(tmp)) return SendClientMessage(playerid, eCor, "<!> Use: /event gun8 [gunID]");
  332.             eArma = strval(tmp);
  333.             if(eArma < 1 || eArma > 49) return SendClientMessage(playerid, eCor, "[AD:Event]: invalid weapon id.");
  334.             EventoInfo[eArmas][7] = eArma;
  335.             return 0x01;
  336.         }
  337.         return 0x01;
  338.     }
  339.     return 0x0;
  340. }
  341.  
  342. stock resetarEvento()
  343. {
  344.     for(new r = 0; r <= 7; ++r) EventoInfo[eArmas][r] = 0;
  345.     EventoInfo[eUseSkin] = false;
  346.     EventoInfo[eSkin] = 1;
  347.     EventoInfo[eVagas] = 10;
  348.     EventoInfo[eQuantidadeVagas] = 0;
  349.     EventoInfo[eVida] = 100.0;
  350.     EventoInfo[eColete] = 0.0;
  351.     EventoInfo[ePos][0] = 0.0;
  352.     EventoInfo[ePos][1] = 0.0;
  353.     EventoInfo[ePos][2] = 0.0;
  354.     EventoInfo[eInterior] = 0;
  355.     EventoInfo[eVirWorld] = 0;
  356.     EventoInfo[eStatus] = 0;
  357.     return ricop;
  358. }
  359. stock entrarEvento(playerid)
  360. {
  361.     if(eEntrou[playerid] == true) return SendClientMessage(playerid, eCor, "<!> You already are at the event !");
  362.     if(EventoInfo[eQuantidadeVagas] == EventoInfo[eVagas])
  363.     {
  364.         format(eString, sizeof(eString), "[AD:Event] The event already are in the limit (%i max!)", EventoInfo[eVagas]);
  365.         SendClientMessageToAll(eCor, eString);
  366.         EventoInfo[eStatus] = false;
  367.         return 1;
  368.     }
  369.     format(eString, sizeof(eString), "[AD:Event] %s entered into event", eNome(playerid));
  370.     SendClientMessageToAll(eCor, eString);
  371.     entrarEvento(playerid);
  372.     SetPlayerPos(playerid, EventoInfo[ePos][0],EventoInfo[ePos][1],EventoInfo[ePos][2]);
  373.     SetPlayerInterior(playerid, EventoInfo[eInterior]);
  374.     SetPlayerVirtualWorld(playerid, EventoInfo[eVirWorld]);
  375.     SetPlayerHealth(playerid, EventoInfo[eVida]);
  376.     SetPlayerArmour(playerid, EventoInfo[eColete]);
  377.     if(EventoInfo[eUseSkin] == true) SetPlayerSkin(playerid, EventoInfo[eSkin]);
  378.     EventoInfo[eQuantidadeVagas]++;
  379.     return 0x01;
  380. }
  381. stock eNome(playerid)
  382. {
  383.     new nome[MAX_PLAYER_NAME]; GetPlayerName(playerid, nome, sizeof(nome));
  384.     return nome;
  385. }
  386.  
  387. strtok(const string[], &index)
  388. {
  389.     new length = strlen(string);
  390.     while ((index < length) && (string[index] <= ' ')) index++;
  391.     new offset = index;
  392.     new result[20];
  393.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; }
  394.     result[index - offset] = EOS; return result;
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement