Shadoww5

Sistema de Evento - FreeGells & Shadoow5

Aug 7th, 2011
875
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 16.16 KB | None | 0 0
  1. #include <a_samp>
  2.  
  3. new Veiculos[212][25] =
  4. {
  5.     "Landstalker","Bravura","Buffalo","Linerunner","Perrenial","Sentinel","Dumper","Firetruck","Trashmaster",
  6.     "Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam",
  7.     "Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection","Hunter","Premier","Enforcer",
  8.     "Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer 1","Previon","Coach",
  9.     "Cabbie","Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow",
  10.     "Pizzaboy","Tram","Trailer 2","Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair",
  11.     "Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic",
  12.     "Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton",
  13.     "Regina","Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher",
  14.     "FBI Rancher","Virgo","Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville",
  15.     "Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B","Bloodring Banger","Rancher","Super GT",
  16.     "Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","Roadtrain","Nebula",
  17.     "Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune",
  18.     "Cadrona","FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade",
  19.     "Freight","Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck LA","Hustler","Intruder",
  20.     "Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A","Monster B",
  21.     "Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito",
  22.     "Freight Flat","Streak Carriage","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30",
  23.     "Huntley","Stafford","BF-400","Newsvan","Tug","Trailer 3","Emperor","Wayfarer","Euros","Hotdog","Club",
  24.     "Freight Carriage","Trailer 3","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
  25.     "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler",
  26.     "Luggage Trailer A","Luggage Trailer B","Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  27. };
  28.  
  29. #define AMARELO 0xF9F900FF
  30. #define VERMELHO 0xFF0000FF
  31.  
  32. enum FreeGells
  33. {
  34.     Float:X,
  35.     Float:Y,
  36.     Float:Z,
  37.     Interior,
  38.     VirtualWorld,
  39.     bool:Trancado,
  40.     bool:Criado,
  41. };
  42. new Evento[FreeGells];
  43. new Float:Pos[MAX_PLAYERS][4];
  44. new Int[MAX_PLAYERS];
  45. new VW[MAX_PLAYERS];
  46. new Skin[MAX_PLAYERS];
  47. new Cars[MAX_PLAYERS] = -1;
  48. new bool:TaNoEvento[MAX_PLAYERS];
  49.  
  50. public OnFilterScriptInit()
  51. {
  52.     print("\n--------------------------------------");
  53.     print(" - Sistema de Evento por Freegells");
  54.     print(" - Carregando...");
  55.     print(" - [KoS] Kings Of Samp");
  56.     print("--------------------------------------\n");
  57.     return 1;
  58. }
  59.  
  60. public OnFilterScriptExit()
  61. {
  62.     print("\n--------------------------------------");
  63.     print(" - Sistema de Evento por Freegells");
  64.     print(" - Descarregando...");
  65.     print(" - [KoS] Kings Of Samp");
  66.     print("--------------------------------------\n");
  67.     return 1;
  68. }
  69.  
  70. public OnPlayerCommandText(playerid, cmdtext[])
  71. {
  72.     new cmd[64], idx, tmp[64], String[128], n[MAX_PLAYER_NAME];
  73.     cmd = strtok(cmdtext, idx);
  74.     if(strcmp(cmd, "/criarevento", true) == 0)
  75.     {
  76.         if(Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Já existe um Evento criado!");
  77.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  78.         GetPlayerPos(playerid, Evento[X], Evento[Y], Evento[Z]);
  79.         Evento[VirtualWorld] = GetPlayerVirtualWorld(playerid);
  80.         Evento[Interior] = GetPlayerInterior(playerid);
  81.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  82.         format(String, sizeof String, "[INFO] O Administrador %s criou um evento! Aguarde até que o evento seja destrancado!", n);
  83.         SendClientMessageToAll(AMARELO, String);
  84.         Evento[Criado] = true;
  85.         Evento[Trancado] = true;
  86.         return 1;
  87.     }
  88.     if(strcmp(cmd, "/irevento", true) == 0)
  89.     {
  90.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  91.         if(Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Evento Trancado!");
  92.         if(TaNoEvento[playerid]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você já está no evento!");
  93.         GetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]);
  94.         GetPlayerFacingAngle(playerid, Pos[playerid][3]);
  95.         SetCameraBehindPlayer(playerid);
  96.         Int[playerid] = GetPlayerInterior(playerid);
  97.         VW[playerid] = GetPlayerVirtualWorld(playerid);
  98.         Skin[playerid] = GetPlayerSkin(playerid);
  99.         SendClientMessage(playerid, AMARELO, "[INFO] Você se teleportou até o Evento! Para sair do evento digite /sairevento.");
  100.         SetPlayerPos(playerid, Evento[X]+1, Evento[Y], Evento[Z]+0.5);
  101.         SetPlayerInterior(playerid, Evento[Interior]);
  102.         SetPlayerVirtualWorld(playerid, Evento[VirtualWorld]);
  103.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  104.         TaNoEvento[playerid] = true;
  105.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  106.         {
  107.             if(!TaNoEvento[i]) continue;
  108.             format(String, sizeof String, "[INFO] %s Entrou no Evento!", n);
  109.             SendClientMessage(i, AMARELO, String);
  110.         }
  111.         return 1;
  112.     }
  113.     if(strcmp(cmd, "/sairevento", true) == 0)
  114.     {
  115.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  116.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  117.         if(!TaNoEvento[playerid]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você não está no evento!");
  118.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  119.         SetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]);
  120.         SetPlayerFacingAngle(playerid, Pos[playerid][3]);
  121.         SetCameraBehindPlayer(playerid);
  122.         SetPlayerInterior(playerid, Int[playerid]);
  123.         SetPlayerVirtualWorld(playerid, VW[playerid]);
  124.         SetPlayerSkin(playerid, Skin[playerid]);
  125.         TaNoEvento[playerid] = false;
  126.         SendClientMessage(playerid, AMARELO, "[INFO] Você saiu do Evento !");
  127.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  128.         {
  129.             if(!TaNoEvento[i]) continue;
  130.             format(String, sizeof String, "[INFO] %s Saiu do Evento!", n);
  131.             SendClientMessage(i, AMARELO, String);
  132.         }
  133.         return 1;
  134.     }
  135.     if(strcmp(cmd, "/terminarevento", true) == 0)
  136.     {
  137.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  138.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  139.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  140.         Evento[Criado] = false;
  141.         format(String, sizeof String, "[INFO] O Administrador %s Terminou o evento!", n);
  142.         SendClientMessageToAll(VERMELHO, String);
  143.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  144.         {
  145.             if(!TaNoEvento[i]) continue;
  146.             SetPlayerPos(i, Pos[i][0], Pos[i][1], Pos[i][2]);
  147.             SetPlayerFacingAngle(i, Pos[i][3]);
  148.             SetCameraBehindPlayer(i);
  149.             SetPlayerInterior(i, Int[i]);
  150.             SetPlayerVirtualWorld(i, VW[i]);
  151.             SetPlayerSkin(i, Skin[i]);
  152.             TaNoEvento[i] = false;
  153.         }
  154.         for(new i = 0; i < sizeof Cars; i++) { DestroyVehicle(Cars[i]); }
  155.         return 1;
  156.     }
  157.     if(strcmp(cmd, "/trancarevento", true) == 0)
  158.     {
  159.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  160.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  161.         if(Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] O Evento já está trancado!");
  162.         Evento[Trancado] = true;
  163.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  164.         format(String, sizeof String, "[INFO] O Administrador %s trancou o evento! %s.", n, Check());
  165.         SendClientMessageToAll(AMARELO, String);
  166.         return 1;
  167.     }
  168.     if(strcmp(cmd, "/destrancarevento", true) == 0)
  169.     {
  170.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  171.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  172.         if(!Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] O Evento não está trancado!");
  173.         Evento[Trancado] = false;
  174.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  175.         format(String, sizeof String, "[INFO] O Administrador %s Destrancou o evento! Use: /irevento", n);
  176.         SendClientMessageToAll(AMARELO, String);
  177.         return 1;
  178.     }
  179.     if(strcmp(cmd, "/armarevento", true) == 0)
  180.     {
  181.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  182.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  183.         tmp = strtok(cmdtext, idx);
  184.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ArmarEvento [ID DA ARMA] [MUNIÇÃO]");
  185.         new Arma, Municao;
  186.         Arma = strval(tmp);
  187.         tmp = strtok(cmdtext, idx);
  188.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ArmarEvento [ID DA ARMA] [MUNIÇÃO]");
  189.         Municao = strval(tmp);
  190.         if(Arma > 43) return SendClientMessage(playerid, VERMELHO, "[ERRO] ID Da arma entre 0 e 43!");
  191.         if(Municao < 1) return SendClientMessage(playerid, VERMELHO, "[ERRO] A munição deve ser maior que 0!");
  192.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  193.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  194.         {
  195.             if(!TaNoEvento[i]) continue;
  196.             GivePlayerWeapon(i, Arma, Municao);
  197.             format(String, sizeof String, "[INFO] O Administrador %s deu a arma de id %d com %d balas para todos do evento!", n, Arma, Municao);
  198.             SendClientMessage(i, AMARELO, String);
  199.         }
  200.         return 1;
  201.     }
  202.     if(strcmp(cmd, "/vidaevento", true) == 0)
  203.     {
  204.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  205.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  206.         tmp = strtok(cmdtext, idx);
  207.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /VidaEvento [Quantia]");
  208.         new Vida = strval(tmp);
  209.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  210.         {
  211.             if(!TaNoEvento[i]) continue;
  212.             SetPlayerHealth(i, Vida);
  213.             GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  214.             format(String, sizeof String, "[INFO] O Administrador %s Setou a vida de todos do Evento para %d!", n, Vida);
  215.             SendClientMessage(i, AMARELO, String);
  216.         }
  217.         return 1;
  218.     }
  219.     if(strcmp(cmd, "/coleteevento", true) == 0)
  220.     {
  221.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  222.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  223.         tmp = strtok(cmdtext, idx);
  224.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ColeteEvento [Quantia]");
  225.         new Colete = strval(tmp);
  226.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  227.         {
  228.             if(!TaNoEvento[i]) continue;
  229.             SetPlayerArmour(i, Colete);
  230.             GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  231.             format(String, sizeof String, "[INFO] O Administrador %s Setou o colete de todos do Evento para %d!", n, Colete);
  232.             SendClientMessage(i, AMARELO, String);
  233.         }
  234.         return 1;
  235.     }
  236.     if(strcmp(cmd, "/skinevento", true) == 0)
  237.     {
  238.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  239.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  240.         tmp = strtok(cmdtext, idx);
  241.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /skinEvento [Skin]");
  242.         if(strval(tmp) < 0 || strval(tmp) > 299) return SendClientMessage(playerid, VERMELHO, "A skin deve estar entre 0 e 299.");
  243.         for(new i, p = GetMaxPlayers(); i < p; i ++)
  244.         {
  245.             if(!TaNoEvento[i]) continue;
  246.             SetPlayerSkin(i, strval(tmp));
  247.             GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  248.             format(String, sizeof String, "[INFO] O Administrador %s trocou a skin de todos do Evento para %d!", n, strval(tmp));
  249.             SendClientMessage(i, AMARELO, String);
  250.         }
  251.         return 1;
  252.     }
  253.     if(strcmp(cmd, "/carevento", true) == 0)
  254.     {
  255.         if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!");
  256.         if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!");
  257.         tmp = strtok(cmdtext, idx);
  258.         if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /carevento [MODELO]");
  259.         new Modelo = strval(tmp), Float:x, Float:y, Float:z;
  260.         if(Modelo < 400 || Modelo > 611) return SendClientMessage(playerid, VERMELHO, "[ERRO] O modelo do veiculo deve ser maior que 400 e menor que 611!");
  261.         for(new i = 0; i < sizeof Cars; i ++) { DestroyVehicle(Cars[i]); Cars[i] = -1; }
  262.         GetPlayerName(playerid, n, MAX_PLAYER_NAME);
  263.         for(new i, p = GetMaxPlayers(); i < p; i++)
  264.         {
  265.             if(!TaNoEvento[i]) continue;
  266.             GetPlayerPos(i, x, y, z);
  267.             Cars[i] = CreateVehicle(Modelo, x, y, z, 0, random(255), random(255), -1);
  268.             PutPlayerInVehicle(i, Cars[i], 0);
  269.             LinkVehicleToInterior(Cars[i], GetPlayerInterior(i));
  270.             AddVehicleComponent(Cars[i], 1010);
  271.             format(String, sizeof String, "[INFO] O Administrador %s deu o veiculo %s para todos do Evento!", n, Veiculos[Modelo-400]);
  272.             SendClientMessage(i, AMARELO, String);
  273.         }
  274.         return 1;
  275.     }
  276.     if(strcmp(cmd, "/comandos", true) == 0)
  277.     {
  278.         new str[900];
  279.         strcat(str, "\n/criarevento - Serve para criar um evento.\n");
  280.         strcat(str, "/terminarevento - Serve para terminar um evento.\n");
  281.         strcat(str, "/vidaevento - Serve para dar uma determinada quantidade de vida para os jogadores que estão no evento.\n");
  282.         strcat(str, "/coleteevento - Serve para dar uma certa quantidade de colete para os jogadores que estão no evento.\n");
  283.         strcat(str, "/armarevento - Serve para dar armas para os jogadores que estão no evento.\n");
  284.         strcat(str, "/carevento - Serve para dar aos jogadores que estão no evento um veiculo.\n");
  285.         strcat(str, "/sairevento - Serve para sair do evento.\n");
  286.         strcat(str, "/irevento - Serve para entrar no evento.\n");
  287.         strcat(str, "/trancarevento - Serve para trancar o evento.\n");
  288.         strcat(str, "/destrancarevento - Serve para destrancar o evento.\n");
  289.         strcat(str, "/skinevento - Serve para trocar a skin dos jogadores que estão no evento.\n\n");
  290.         strcat(str, "\t                              Creditos: Shadoww5 & FreeGellsTSSA - Kings Of Samp");
  291.         ShowPlayerDialog(playerid, 794, DIALOG_STYLE_MSGBOX, "Comandos FS EVENTO:", str, "Fechar", "");
  292.         return 1;
  293.     }
  294.     return 0;
  295. }
  296.  
  297. public OnVehicleDeath(vehicleid)
  298. {
  299.     for(new i = 0; i < sizeof Cars; i ++)
  300.     {
  301.         if(Cars[i] == vehicleid)
  302.         {
  303.             DestroyVehicle(vehicleid);
  304.             break;
  305.         }
  306.     }
  307.     return 1;
  308. }
  309.  
  310. public OnPlayerStateChange(playerid, newstate, oldstate)
  311. {
  312.     if(oldstate == 2)
  313.     {
  314.         if(GetVehicleModel(Cars[playerid])) { DestroyVehicle(Cars[playerid]); }
  315.     }
  316.     return 1;
  317. }
  318.  
  319. public OnPlayerDeath(playerid, killerid, reason)
  320. {
  321.     if(TaNoEvento[playerid]) { TaNoEvento[playerid] = false; }
  322.     if(GetVehicleModel(Cars[playerid])) { DestroyVehicle(Cars[playerid]); }
  323.     return 1;
  324. }
  325.  
  326. strtok(const string[], &index)
  327. {
  328.     new length = strlen(string);
  329.     while ((index < length) && (string[index] <= ' '))
  330.     {
  331.         index++;
  332.     }
  333.  
  334.     new offset = index;
  335.     new result[20];
  336.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  337.     {
  338.         result[index - offset] = string[index];
  339.         index++;
  340.     }
  341.     result[index - offset] = EOS;
  342.     return result;
  343. }
  344.  
  345. stock Check()
  346. {
  347.     new players, str[64];
  348.     for(new i, p = GetMaxPlayers(); i < p; i ++)
  349.     {
  350.         if(!IsPlayerConnected(i) || !TaNoEvento[i]) continue;
  351.         players++;
  352.     }
  353.     if(!players) { str = "Nenhum jogador entrou"; }
  354.     else if(players == 1) { str = "1 jogador entrou"; }
  355.     else { format(str, sizeof str, "%d jogadores entraram", players); }
  356.     return str;
  357. }
  358.  
  359. stock Check2()
  360. {
  361.     new players;
  362.     for(new i, p = GetMaxPlayers(); i < p; i ++)
  363.     {
  364.         if(!IsPlayerConnected(i) || !TaNoEvento[i]) continue;
  365.         players++;
  366.     }
  367.     return players;
  368. }
Add Comment
Please, Sign In to add comment