#include new Veiculos[212][25] = { "Landstalker","Bravura","Buffalo","Linerunner","Perrenial","Sentinel","Dumper","Firetruck","Trashmaster", "Stretch","Manana","Infernus","Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam", "Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection","Hunter","Premier","Enforcer", "Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer 1","Previon","Coach", "Cabbie","Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow", "Pizzaboy","Tram","Trailer 2","Turismo","Speeder","Reefer","Tropic","Flatbed","Yankee","Caddy","Solair", "Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider","Glendale","Oceanic", "Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR-350","Walton", "Regina","Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher", "FBI Rancher","Virgo","Greenwood","Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville", "Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B","Bloodring Banger","Rancher","Super GT", "Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","Roadtrain","Nebula", "Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune", "Cadrona","FBI Truck","Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade", "Freight","Streak","Vortex","Vincent","Bullet","Clover","Sadler","Firetruck LA","Hustler","Intruder", "Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A","Monster B", "Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito", "Freight Flat","Streak Carriage","Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30", "Huntley","Stafford","BF-400","Newsvan","Tug","Trailer 3","Emperor","Wayfarer","Euros","Hotdog","Club", "Freight Carriage","Trailer 3","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)", "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler", "Luggage Trailer A","Luggage Trailer B","Stair Trailer","Boxville","Farm Plow","Utility Trailer" }; #define AMARELO 0xF9F900FF #define VERMELHO 0xFF0000FF enum FreeGells { Float:X, Float:Y, Float:Z, Interior, VirtualWorld, bool:Trancado, bool:Criado, }; new Evento[FreeGells]; new Float:Pos[MAX_PLAYERS][4]; new Int[MAX_PLAYERS]; new VW[MAX_PLAYERS]; new Skin[MAX_PLAYERS]; new Cars[MAX_PLAYERS] = -1; new bool:TaNoEvento[MAX_PLAYERS]; public OnFilterScriptInit() { print("\n--------------------------------------"); print(" - Sistema de Evento por Freegells"); print(" - Carregando..."); print(" - [KoS] Kings Of Samp"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { print("\n--------------------------------------"); print(" - Sistema de Evento por Freegells"); print(" - Descarregando..."); print(" - [KoS] Kings Of Samp"); print("--------------------------------------\n"); return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[64], idx, tmp[64], String[128], n[MAX_PLAYER_NAME]; cmd = strtok(cmdtext, idx); if(strcmp(cmd, "/criarevento", true) == 0) { if(Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Já existe um Evento criado!"); if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); GetPlayerPos(playerid, Evento[X], Evento[Y], Evento[Z]); Evento[VirtualWorld] = GetPlayerVirtualWorld(playerid); Evento[Interior] = GetPlayerInterior(playerid); GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s criou um evento! Aguarde até que o evento seja destrancado!", n); SendClientMessageToAll(AMARELO, String); Evento[Criado] = true; Evento[Trancado] = true; return 1; } if(strcmp(cmd, "/irevento", true) == 0) { if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); if(Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Evento Trancado!"); if(TaNoEvento[playerid]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você já está no evento!"); GetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]); GetPlayerFacingAngle(playerid, Pos[playerid][3]); SetCameraBehindPlayer(playerid); Int[playerid] = GetPlayerInterior(playerid); VW[playerid] = GetPlayerVirtualWorld(playerid); Skin[playerid] = GetPlayerSkin(playerid); SendClientMessage(playerid, AMARELO, "[INFO] Você se teleportou até o Evento! Para sair do evento digite /sairevento."); SetPlayerPos(playerid, Evento[X]+1, Evento[Y], Evento[Z]+0.5); SetPlayerInterior(playerid, Evento[Interior]); SetPlayerVirtualWorld(playerid, Evento[VirtualWorld]); GetPlayerName(playerid, n, MAX_PLAYER_NAME); TaNoEvento[playerid] = true; for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; format(String, sizeof String, "[INFO] %s Entrou no Evento!", n); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/sairevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); if(!TaNoEvento[playerid]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você não está no evento!"); GetPlayerName(playerid, n, MAX_PLAYER_NAME); SetPlayerPos(playerid, Pos[playerid][0], Pos[playerid][1], Pos[playerid][2]); SetPlayerFacingAngle(playerid, Pos[playerid][3]); SetCameraBehindPlayer(playerid); SetPlayerInterior(playerid, Int[playerid]); SetPlayerVirtualWorld(playerid, VW[playerid]); SetPlayerSkin(playerid, Skin[playerid]); TaNoEvento[playerid] = false; SendClientMessage(playerid, AMARELO, "[INFO] Você saiu do Evento !"); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; format(String, sizeof String, "[INFO] %s Saiu do Evento!", n); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/terminarevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); GetPlayerName(playerid, n, MAX_PLAYER_NAME); Evento[Criado] = false; format(String, sizeof String, "[INFO] O Administrador %s Terminou o evento!", n); SendClientMessageToAll(VERMELHO, String); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; SetPlayerPos(i, Pos[i][0], Pos[i][1], Pos[i][2]); SetPlayerFacingAngle(i, Pos[i][3]); SetCameraBehindPlayer(i); SetPlayerInterior(i, Int[i]); SetPlayerVirtualWorld(i, VW[i]); SetPlayerSkin(i, Skin[i]); TaNoEvento[i] = false; } for(new i = 0; i < sizeof Cars; i++) { DestroyVehicle(Cars[i]); } return 1; } if(strcmp(cmd, "/trancarevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); if(Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] O Evento já está trancado!"); Evento[Trancado] = true; GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s trancou o evento! %s.", n, Check()); SendClientMessageToAll(AMARELO, String); return 1; } if(strcmp(cmd, "/destrancarevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); if(!Evento[Trancado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] O Evento não está trancado!"); Evento[Trancado] = false; GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s Destrancou o evento! Use: /irevento", n); SendClientMessageToAll(AMARELO, String); return 1; } if(strcmp(cmd, "/armarevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ArmarEvento [ID DA ARMA] [MUNIÇÃO]"); new Arma, Municao; Arma = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ArmarEvento [ID DA ARMA] [MUNIÇÃO]"); Municao = strval(tmp); if(Arma > 43) return SendClientMessage(playerid, VERMELHO, "[ERRO] ID Da arma entre 0 e 43!"); if(Municao < 1) return SendClientMessage(playerid, VERMELHO, "[ERRO] A munição deve ser maior que 0!"); GetPlayerName(playerid, n, MAX_PLAYER_NAME); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; GivePlayerWeapon(i, Arma, Municao); format(String, sizeof String, "[INFO] O Administrador %s deu a arma de id %d com %d balas para todos do evento!", n, Arma, Municao); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/vidaevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /VidaEvento [Quantia]"); new Vida = strval(tmp); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; SetPlayerHealth(i, Vida); GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s Setou a vida de todos do Evento para %d!", n, Vida); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/coleteevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /ColeteEvento [Quantia]"); new Colete = strval(tmp); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; SetPlayerArmour(i, Colete); GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s Setou o colete de todos do Evento para %d!", n, Colete); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/skinevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /skinEvento [Skin]"); if(strval(tmp) < 0 || strval(tmp) > 299) return SendClientMessage(playerid, VERMELHO, "A skin deve estar entre 0 e 299."); for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!TaNoEvento[i]) continue; SetPlayerSkin(i, strval(tmp)); GetPlayerName(playerid, n, MAX_PLAYER_NAME); format(String, sizeof String, "[INFO] O Administrador %s trocou a skin de todos do Evento para %d!", n, strval(tmp)); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/carevento", true) == 0) { if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Você deve estar logado na Rcon!"); if(!Evento[Criado]) return SendClientMessage(playerid, VERMELHO, "[ERRO] Não existe um evento criado!"); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) return SendClientMessage(playerid, VERMELHO, "[ERRO] Use: /carevento [MODELO]"); new Modelo = strval(tmp), Float:x, Float:y, Float:z; if(Modelo < 400 || Modelo > 611) return SendClientMessage(playerid, VERMELHO, "[ERRO] O modelo do veiculo deve ser maior que 400 e menor que 611!"); for(new i = 0; i < sizeof Cars; i ++) { DestroyVehicle(Cars[i]); Cars[i] = -1; } GetPlayerName(playerid, n, MAX_PLAYER_NAME); for(new i, p = GetMaxPlayers(); i < p; i++) { if(!TaNoEvento[i]) continue; GetPlayerPos(i, x, y, z); Cars[i] = CreateVehicle(Modelo, x, y, z, 0, random(255), random(255), -1); PutPlayerInVehicle(i, Cars[i], 0); LinkVehicleToInterior(Cars[i], GetPlayerInterior(i)); AddVehicleComponent(Cars[i], 1010); format(String, sizeof String, "[INFO] O Administrador %s deu o veiculo %s para todos do Evento!", n, Veiculos[Modelo-400]); SendClientMessage(i, AMARELO, String); } return 1; } if(strcmp(cmd, "/comandos", true) == 0) { new str[900]; strcat(str, "\n/criarevento - Serve para criar um evento.\n"); strcat(str, "/terminarevento - Serve para terminar um evento.\n"); strcat(str, "/vidaevento - Serve para dar uma determinada quantidade de vida para os jogadores que estão no evento.\n"); strcat(str, "/coleteevento - Serve para dar uma certa quantidade de colete para os jogadores que estão no evento.\n"); strcat(str, "/armarevento - Serve para dar armas para os jogadores que estão no evento.\n"); strcat(str, "/carevento - Serve para dar aos jogadores que estão no evento um veiculo.\n"); strcat(str, "/sairevento - Serve para sair do evento.\n"); strcat(str, "/irevento - Serve para entrar no evento.\n"); strcat(str, "/trancarevento - Serve para trancar o evento.\n"); strcat(str, "/destrancarevento - Serve para destrancar o evento.\n"); strcat(str, "/skinevento - Serve para trocar a skin dos jogadores que estão no evento.\n\n"); strcat(str, "\t Creditos: Shadoww5 & FreeGellsTSSA - Kings Of Samp"); ShowPlayerDialog(playerid, 794, DIALOG_STYLE_MSGBOX, "Comandos FS EVENTO:", str, "Fechar", ""); return 1; } return 0; } public OnVehicleDeath(vehicleid) { for(new i = 0; i < sizeof Cars; i ++) { if(Cars[i] == vehicleid) { DestroyVehicle(vehicleid); break; } } return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { if(oldstate == 2) { if(GetVehicleModel(Cars[playerid])) { DestroyVehicle(Cars[playerid]); } } return 1; } public OnPlayerDeath(playerid, killerid, reason) { if(TaNoEvento[playerid]) { TaNoEvento[playerid] = false; } if(GetVehicleModel(Cars[playerid])) { DestroyVehicle(Cars[playerid]); } return 1; } strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; } new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; } stock Check() { new players, str[64]; for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!IsPlayerConnected(i) || !TaNoEvento[i]) continue; players++; } if(!players) { str = "Nenhum jogador entrou"; } else if(players == 1) { str = "1 jogador entrou"; } else { format(str, sizeof str, "%d jogadores entraram", players); } return str; } stock Check2() { new players; for(new i, p = GetMaxPlayers(); i < p; i ++) { if(!IsPlayerConnected(i) || !TaNoEvento[i]) continue; players++; } return players; }