// Includes #include #include //#define MODE_NAME "MEUMODE" #include #include #include #include // Definições #file "SA RS Tuning" #define MAX_PLAYER 30 #define COLOR_RED 0xBB0000FF #define COLOR_WHITE 0xFFFFFFFF #define COLOR_GOLD 0xFFD700FF #define COLOR_BLUE 0x2587CEFF #define COLOR_GRAY 0xDDDDDDFF #define COLOR_GREEN 0x366718FF #define COLOR_RED 0xBB0000FF #define COLOR_PURPLE 0x895BD9FF #define COLOR_YELLOW 0xFAA505FF #define DIALOG_REGISTER 1 #define DIALOG_LOGIN 2 #define DIALOG_ENGINE 3 #define DIALOG_MODSHOP 4 #define DIALOG_MODSHOP2 5 #define DIALOG_MODSHOP3 6 #define DIALOG_WORKSHOP 200 #define DIALOG_WORKSHOPH 201 #define DIALOG_WORKSHOP_COLOR 202 #define DIALOG_CARS 300 #define DIALOG_TEXT_NO_EFFECT 400 #define DIALOG_HELP 7001 #define DIALOG_COMMANDS 7002 #define RGB_COLOR_WHITE "{FFFFFF}" #define RGB_COLOR_GOLD "{FFD700}" #define BYTES_PER_CELL 4 native IsValidVehicle(vehicleid); main() { print("\n* San Andreas R.S. Tuning"); print("# Iniciado em 2014"); print("@ Criado por Roger Gomes Costa\n"); } // -------------------------------------------- // ---------- Definindo novas variáveis/funções // - VARIÁVEIS [DIALOGS] static g_szHelpDialog[] = #RGB_COLOR_GOLD"\ AJUDA\n\n\ "RGB_COLOR_WHITE"/ajuda - Mostra esta mensagem de ajuda.\n\ /comandos - Mostra a lista de comandos do servidor.\n\ /reportar [id/nome] [mensagem] - Reporta um jogador à equipe do servidor.\n\ /tutorial - Mostra o tutorial do servidor."; static g_szCommandsDialog[] = #RGB_COLOR_GOLD"\ COMANDOS\n\n\ "RGB_COLOR_WHITE"/races - Lista de corridas disponíveis no servidor\n\ /openedraces - Lista de corridas abertas no servidor\n\ /openrace [id] - Abre uma corrida para que você e outros jogadores possam entrar\n\ /race [slot] - Entra em uma corrida\n"; static g_szCommandsDialog1[] = "/leave - Sai da corrida atual (se estiver em uma)\n\ /tuning - Abre menu de tuning (se estiver na oficina)\n\ /trancar /destrancar - Tranca e destranca veículo\n\ /motor - Liga/Desliga o veículo\n\ /lights - Acende/Apaga os faróis do veículo\n\ /mycars - Localizar determinado veículo\n\ /skin - Altera a sua skin\n\ /construtor - Construir sua própria corrida"; static sz_CmdAdmins[] = RGB_COLOR_GOLD"COMANDOS DE ADMINISTRADORES\n\n\ "RGB_COLOR_WHITE"/dardinheiro /setardinheiro /expulsar /encerrarcorrida\n\ /setarcolete /setarvida /forcarcomando"; new Text:txtModeName, Text:txtDate, Text:txtVehDistrict; new Text:BoasVindas, Text:BoasVindas2; new Text:StartRaceTxt; new Text:RaceEndInfo, Text:RaceEndInfo2; new Text:TextVeh1; new Text:TextVeh2; new Text:TextVeh3; new Text:TextVeh1Name; new Text:TextVeh2Name; new Text:TextVeh3Name; new Text:TextVehBox; new Text:TextVehInfo; enum PLAYER_INFO { bool:Registered, bool:Logged, pSkin, playermoney, pName[24], pFile[100], Float:pX, Float:pY, Float:pZ, Float:pA, pInterior, pGPS, pDM, pRaceID, pWeapon[13], pAmmo[13], pTutorial } new PlayerInfo[MAX_PLAYER][PLAYER_INFO]; enum Vehicles { VehID, VehOwner[24], VehName[50], VehKeys[100], VehPlate[10], VehSpoiler, VehHood, VehRoof, VehSideskirt, VehLamps, VehNitro, VehExhaust, VehWheels, VehStereo, VehHydraulics, VehFB, VehRB, VehVR, VehVL, Float:VehX, Float:VehY, Float:VehZ, Float:VehA, VehColor1, VehColor2, VehPaintjob, Text3D:VehText, VehStatus, VehEngine, VehLights, VehAlarm, VehDoors, VehBonnet, VehBoot, VehObjective, bool:VehLocked, VehDoorsArmour, VehTiresArmour, VehLightsArmour, VehPanelsArmour, VehHealth } new ServerVehicles[500][Vehicles]; new VehCreate[500] = {-1, ...}; new VehProhibiteds[] = { 406, 407, 408, 416, 417, 425, 432, 441, 444, 447, 449, 464, 465, 469, 476, 501, 537, 538, 544, 548, 553, 563, 564, 569, 570, 577, 590, 591, 592, 593, 594, 601, 606, 607, 608, 610, 611 }; new VehicleNames[212][] = { {"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"} }; enum Races { // Carregar RaceName[30], RaceStart[100], RaceType, RacePrice, RaceWorld, RaceInterior, RaceLaps, RaceReward, // While bool:RaceOpen, RaceTotal, RaceCurrent, Race1, Race1Name[20], Race2, Race2Name[20], Race3, Race3Name[20], Race4, Race4Name[20], bool:RaceExist } new RaceCreate[100]; new RaceCreate1[100]; new RaceInfo[100][Races]; new RaceCPPos[100][50][100]; // 100 corridas, 30 cps, 100 tamanho da string new RaceSTPos[100][20][100]; // 100 corridas, 30 cps, 100 tamanho da string native WP_Hash(buffer[], len, const str[]); forward CheckMoney(); // stock GetPlayerNameEx(playerid) - Retorna o nome do jogador stock GetPlayerNameEx(playerid) { new szName[MAX_PLAYER_NAME]; GetPlayerName(playerid, szName, MAX_PLAYER_NAME); return szName; } #define GetPlayerName GetPlayerNameEx stock PlayAudioForAll(audioid) { foreach(Player, i) { PlayerPlaySound(i, audioid, 0.0, 0.0, 0.0); } return true; } // stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...) - Envia uma mensagem formatada para o jogador stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...) { static const STATIC_ARGS = 3; new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL; if(n) { new message[144], arg_start, arg_end; #emit CONST.alt fstring #emit LCTRL 5 #emit ADD #emit STOR.S.pri arg_start #emit LOAD.S.alt n #emit ADD #emit STOR.S.pri arg_end do { #emit LOAD.I #emit PUSH.pri arg_end -= BYTES_PER_CELL; #emit LOAD.S.pri arg_end } while(arg_end > arg_start); #emit PUSH.S fstring #emit PUSH.C 144 #emit PUSH.ADR message n += BYTES_PER_CELL * 3; #emit PUSH.S n #emit SYSREQ.C format n += BYTES_PER_CELL; #emit LCTRL 4 #emit LOAD.S.alt n #emit ADD #emit SCTRL 4 return SendClientMessage(playerid, color, message); } else return SendClientMessage(playerid, color, fstring); } // stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...) - Envia uma mensagem formatada para todos os jogadores stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...) { #if defined DEBUG_MODE #if !defined DEBUG_NO_FUNCTIONS printf("[DEBUG] stock SendClientMessageToAllEx(color #%x, fstring '%s')", color, fstring); #endif #endif static const STATIC_ARGS = 2; new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL; if(n) { new message[144], arg_start, arg_end; #emit CONST.alt fstring #emit LCTRL 5 #emit ADD #emit STOR.S.pri arg_start #emit LOAD.S.alt n #emit ADD #emit STOR.S.pri arg_end do { #emit LOAD.I #emit PUSH.pri arg_end -= BYTES_PER_CELL; #emit LOAD.S.pri arg_end } while(arg_end > arg_start); #emit PUSH.S fstring #emit PUSH.C 144 #emit PUSH.ADR message n += BYTES_PER_CELL * 3; #emit PUSH.S n #emit SYSREQ.C format n += BYTES_PER_CELL; #emit LCTRL 4 #emit LOAD.S.alt n #emit ADD #emit SCTRL 4 return SendClientMessageToAll(color, message); } else return SendClientMessageToAll(color, fstring); } #define SendClientMessage SendClientMessageEx #define SendClientMessageToAll SendClientMessageToAllEx stock SetPlayerPosEx(playerid, Float: x, Float: y, Float: z, Float: a, interior, virtualworld, bool: bTeleportVehicle = true) { if(!IsPlayerConnected(playerid)) return false; new iVehicleID = GetPlayerVehicleID(playerid); new iPlayerSeat = GetPlayerVehicleSeat(playerid); if(bTeleportVehicle && IsPlayerInAnyVehicle(playerid)) { SetVehiclePos(iVehicleID, x, y, z); SetVehicleZAngle(iVehicleID, a); SetVehicleVirtualWorld(iVehicleID, virtualworld); LinkVehicleToInterior(iVehicleID, interior); } SetPlayerPosFindZ(playerid, x, y, z); SetPlayerFacingAngle(playerid, a); SetPlayerInterior(playerid, interior); SetPlayerVirtualWorld(playerid, virtualworld); if(bTeleportVehicle) PutPlayerInVehicle(playerid, iVehicleID, iPlayerSeat); return true; } // stock TimestampToDate(timestamp) - Converte uma timestamp para o formato DD/MM/AA HH:MM:SS stock TimestampToDate(timestamp) { new year = 1970, day = 0, month = 0, hour = UTC_TIMEZONE, mins = 0, sec = 0; new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; new returnstring[32]; while(timestamp > 31622400) { timestamp -= 31536000; if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp -= 86400; year++; } if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) days_of_month[1] = 29; else days_of_month[1] = 28; while(timestamp > 86400) { timestamp -= 86400, day++; if(day==days_of_month[month]) day = 0, month++; } while(timestamp > 60) { timestamp -= 60, mins++; if( mins == 60) mins=0, hour++; } sec = timestamp; format(returnstring, 31, "%02d/%02d/%d %02d:%02d:%02d", day+1, month+1, year, hour, mins, sec); return returnstring; } public OnGameModeInit() { SetTimer("OnVehicleUpdate", 1000*10, true); SetTimer("OnServerUpdate", 1000, true); Langs_AddLanguage("PT", "Brasil"); SetGameModeText("SA Race"); //DisableInteriorEnterExits(); DisableNameTagLOS(); ManualVehicleEngineAndLights(); //UsePlayerPedAnims(); AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0); //object(billbrdlan2_05) (1) //object(billbrdlan2_05) (2) //object(billbrdlan2_05) (3) //object(billbrdlan2_05) (4) new objecttext = CreateObject(4731,1725.4000000,-1637.2000000,44.0000000,0.0000000,0.2500000,210.2500000); //object(vgwestbillbrd1) (1) SetObjectMaterialText(objecttext, "SHOPPING", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 115, 1, 0xFFEAEAEA, 0, 1); new objecttext1 = CreateObject(4731,1774.2000000,-1660.3000000,21.2000000,0.0000000,0.2470000,335.7450000); SetObjectMaterialText(objecttext1, "B A N C O", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 120, 1, 0xFFEAEAEA, 0, 1); new objecttext2 = CreateObject(4731,1555.8000000,-1675.5000000,19.0000000,0.0000000,0.0000000,300.2450000); SetObjectMaterialText(objecttext2, " L.S.P.D", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 20, 1, 0xFFFFFFFF, 0, 1); new objecttext3 = CreateObject(4731,1481.2000000,-1750.8000000,29.3000000,0.0000000,0.0000000,210.2500000); SetObjectMaterialText(objecttext3, "\n\nTRIBUNAL", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 60, 1, 0xFFEAEAEA, 0, 1); CreateTextdraws(); CreateVehicles(); LoadRaces(); return true; } forward LoadRaces(); public LoadRaces() { for(new i = 0; i < 100; i++) { new file[100]; format(file, sizeof file, "RS-RACE/Races/Race%d.ini", i); if(SII_Exist(file)) { SII_Open(file); SII_ReadString(RaceInfo[i][RaceName], "Name", 30); RaceInfo[i][RaceType] = SII_ReadInt("Type"); RaceInfo[i][RaceReward] = SII_ReadInt("Reward"); //RaceInfo[i][RacePrice] = SII_ReadInt("Price"); //RaceInfo[i][RaceInterior] = SII_ReadInt("Interior"); //RaceInfo[i][RaceLaps] = SII_ReadInt("Laps"); for(new k = 0; k < 50; k++) { new line[50]; format(line, sizeof line, "CP_%d", k); SII_ReadString(RaceCPPos[i][k], line, 100); } for(new j = 0; j < 20; j++) { new line[50]; format(line, sizeof line, "ST_%d", j); SII_ReadString(RaceSTPos[i][j], line, 100); } SII_Close(); RaceInfo[i][RaceExist] = true; RaceInfo[i][RaceOpen] = false; } } } forward CreateVehicles(); public CreateVehicles() { new total; for(new i = 1; i < 500; i++) { new file[100]; format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); if(SII_Exist(file)) { SII_Open(file); SII_ReadString(ServerVehicles[i][VehOwner], "Owner", 24); SII_ReadString(ServerVehicles[i][VehKeys], "Keys", 100); SII_ReadString(ServerVehicles[i][VehPlate], "Plate", 10); ServerVehicles[i][VehID] = SII_ReadInt("Model"); ServerVehicles[i][VehSpoiler] = SII_ReadInt("Spoiler"); ServerVehicles[i][VehHood] = SII_ReadInt("Hood"); ServerVehicles[i][VehRoof] = SII_ReadInt("Roof"); ServerVehicles[i][VehSideskirt] = SII_ReadInt("Sideskirt"); ServerVehicles[i][VehLamps] = SII_ReadInt("Lamps"); ServerVehicles[i][VehNitro] = SII_ReadInt("Nitro"); ServerVehicles[i][VehExhaust] = SII_ReadInt("Exhaust"); ServerVehicles[i][VehWheels] = SII_ReadInt("Wheels"); ServerVehicles[i][VehStereo] = SII_ReadInt("Stereo"); ServerVehicles[i][VehHydraulics] = SII_ReadInt("Hydraulics"); ServerVehicles[i][VehFB] = SII_ReadInt("FB"); ServerVehicles[i][VehRB] = SII_ReadInt("RB"); ServerVehicles[i][VehVR] = SII_ReadInt("VR"); ServerVehicles[i][VehVL] = SII_ReadInt("VL"); ServerVehicles[i][VehX] = SII_ReadFloat("PosX"); ServerVehicles[i][VehY] = SII_ReadFloat("PosY"); ServerVehicles[i][VehZ] = SII_ReadFloat("PosZ"); ServerVehicles[i][VehA] = SII_ReadFloat("PosA"); ServerVehicles[i][VehPaintjob] = SII_ReadInt("Paintjob"); ServerVehicles[i][VehColor1] = SII_ReadInt("Color1"); ServerVehicles[i][VehColor2] = SII_ReadInt("Color2"); ServerVehicles[i][VehTiresArmour] = SII_ReadInt("TiresArmour"); ServerVehicles[i][VehDoorsArmour] = SII_ReadInt("DoorsArmour"); ServerVehicles[i][VehPanelsArmour] = SII_ReadInt("PanelsArmour"); ServerVehicles[i][VehLightsArmour] = SII_ReadInt("LightsArmour"); ServerVehicles[i][VehHealth] = SII_ReadInt("Health"); SII_Close(); VehCreate[i] = CreateVehicle(ServerVehicles[i][VehID], ServerVehicles[i][VehX], ServerVehicles[i][VehY], ServerVehicles[i][VehZ], ServerVehicles[i][VehA], ServerVehicles[i][VehColor1], ServerVehicles[i][VehColor2], -1); if(ServerVehicles[i][VehPaintjob] != -1)ChangeVehiclePaintjob(VehCreate[i], ServerVehicles[i][VehPaintjob]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehSpoiler]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehHood]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehRoof]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehSideskirt]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehLamps]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehNitro]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehExhaust]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehWheels]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehStereo]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehHydraulics]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehFB]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehRB]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehVR]); AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehVL]); ServerVehicles[i][VehLocked] = true; SetVehicleHealth(VehCreate[i], ServerVehicles[i][VehHealth]); SetVehicleNumberPlate(VehCreate[i], ServerVehicles[i][VehOwner]); SetVehicleParamsForPlayer(VehCreate[i], i, 0, 0); SetVehicleParamsEx(VehCreate[i], 0, 0, 0, 0, 0, 0, 0); ServerVehicles[i][VehStatus] = 0; //SetVehicleToRespawn(i); total++; printf("%s", ServerVehicles[i][VehOwner]); } } printf("* Veículos: %d", total); } public OnPlayerUpdate(playerid) { // Se eu estiver em uma corrida... if(PlayerInfo[playerid][pRaceID] > -1) { foreach(Player, i) { // Jogadores que estiverem na mesma corrida que eu... if(PlayerInfo[i][pRaceID] == PlayerInfo[playerid][pRaceID]) { SetPlayerMarkerForPlayer(playerid, i, 0xCAFF70FF); } // Jogadores que estiverem em corrida, mas não a mesma que eu... if(PlayerInfo[i][pRaceID] != -1 && PlayerInfo[i][pRaceID] != PlayerInfo[playerid][pRaceID]) { new Float:ppos[3]; GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]); // Se tiver próximo... if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2])) SetPlayerMarkerForPlayer(playerid, i, 0x6E8B3FF); } // Jogadores que não estiverem em corridas... if(PlayerInfo[i][pRaceID] == -1) { new Float:ppos[3]; GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]); // Se tiver próximo... if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2])) SetPlayerMarkerForPlayer(playerid, i, 0x666666FF); else SetPlayerMarkerForPlayer(playerid, i, GetPlayerColor(i) & 0xFFFFFF00); } } } else if(PlayerInfo[playerid][pRaceID] == -1) { foreach(Player, i) { if(PlayerInfo[i][pRaceID] > -1) SetPlayerMarkerForPlayer(playerid, i, 0x6E8B3FF); else SetPlayerMarkerForPlayer(playerid, i, 0x666666FF); } } return true; } forward OnServerUpdate(); public OnServerUpdate() { new year, month, day, hour, minute, second, str[50]; getdate(year, month, day); gettime(hour, minute, second); format(str, sizeof str, "%02d/%02d/%d %02d:%02d", day, month, year, hour, minute); TextDrawSetString(txtDate, str); } forward OnVehicleUpdate(); public OnVehicleUpdate() { print(" veículos salvos!"); for(new i = 1; i < 500; i++) { if(VehCreate[i] != -1) { if(ServerVehicles[i][VehStatus] != 1) { new file[100], panels,doors,lights,tires, vehicleId = VehCreate[i]; GetVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires); GetVehiclePos(VehCreate[i], ServerVehicles[i][VehX], ServerVehicles[i][VehY], ServerVehicles[i][VehZ]); GetVehicleZAngle(VehCreate[i], ServerVehicles[i][VehA]); format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); ServerVehicles[vehicleId][VehSpoiler] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_SPOILER); ServerVehicles[vehicleId][VehHood] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_HOOD); ServerVehicles[vehicleId][VehRoof] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_ROOF); ServerVehicles[vehicleId][VehSideskirt] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_SIDESKIRT); ServerVehicles[vehicleId][VehLamps] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_LAMPS); ServerVehicles[vehicleId][VehNitro] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_NITRO); ServerVehicles[vehicleId][VehExhaust] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_EXHAUST); ServerVehicles[vehicleId][VehWheels] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_WHEELS); ServerVehicles[vehicleId][VehStereo] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_STEREO); ServerVehicles[vehicleId][VehHydraulics] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_HYDRAULICS); ServerVehicles[vehicleId][VehFB] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_FRONT_BUMPER); ServerVehicles[vehicleId][VehRB] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_REAR_BUMPER); ServerVehicles[vehicleId][VehVR] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_VENT_RIGHT); ServerVehicles[vehicleId][VehVL] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_VENT_LEFT); SII_Open(file); SII_WriteInt("Spoiler", ServerVehicles[vehicleId][VehSpoiler]); SII_WriteInt("Hood", ServerVehicles[vehicleId][VehHood]); SII_WriteInt("Roof", ServerVehicles[vehicleId][VehRoof]); SII_WriteInt("Sideskirt", ServerVehicles[vehicleId][VehSideskirt]); SII_WriteInt("Lamps", ServerVehicles[vehicleId][VehLamps]); SII_WriteInt("Nitro", ServerVehicles[vehicleId][VehNitro]); SII_WriteInt("Exhaust", ServerVehicles[vehicleId][VehExhaust]); SII_WriteInt("Wheels", ServerVehicles[vehicleId][VehWheels]); SII_WriteInt("Stereo", ServerVehicles[vehicleId][VehStereo]); SII_WriteInt("Hydraulics", ServerVehicles[vehicleId][VehHydraulics]); SII_WriteInt("FB", ServerVehicles[vehicleId][VehFB]); SII_WriteInt("RB", ServerVehicles[vehicleId][VehRB]); SII_WriteInt("VR", ServerVehicles[vehicleId][VehVR]); SII_WriteInt("VL", ServerVehicles[vehicleId][VehVL]); SII_WriteInt("Panel", panels); SII_WriteInt("Doors", doors); SII_WriteInt("Lights", lights); SII_WriteInt("Tires", tires); SII_WriteFloat("PosX", ServerVehicles[i][VehX]); SII_WriteFloat("PosY", ServerVehicles[i][VehY]); SII_WriteFloat("PosZ", ServerVehicles[i][VehZ]); SII_WriteFloat("PosA", ServerVehicles[i][VehA]); SII_WriteInt("Color1", ServerVehicles[i][VehColor1]); SII_WriteInt("Color2", ServerVehicles[i][VehColor2]); SII_WriteInt("Paintjob", ServerVehicles[i][VehPaintjob]); SII_WriteString("Plate", ServerVehicles[i][VehPlate]); SII_WriteInt("Health", ServerVehicles[i][VehHealth]); SII_WriteInt("DoorsArmour", ServerVehicles[i][VehDoorsArmour]); SII_WriteInt("LightsArmour", ServerVehicles[i][VehLightsArmour]); SII_WriteInt("PanelsArmour", ServerVehicles[i][VehPanelsArmour]); SII_WriteInt("TiresArmour", ServerVehicles[i][VehPanelsArmour]); SII_Save(); SII_Close(); } } } } forward CreateTextdraws(); public CreateTextdraws() { txtModeName = TextDrawCreate(582.000000, 425.000000, "SA Tuning"); TextDrawAlignment(txtModeName, 2); TextDrawBackgroundColor(txtModeName, 255); TextDrawFont(txtModeName, 0); TextDrawLetterSize(txtModeName, 0.230000, 1.100000); TextDrawColor(txtModeName, 255); TextDrawSetOutline(txtModeName, 0); TextDrawSetProportional(txtModeName, 1); TextDrawSetShadow(txtModeName, 40); TextDrawSetSelectable(txtModeName, 0); // txtDate = TextDrawCreate(582.000000, 436.000000, "18/09/2013 - 14:30"); TextDrawAlignment(txtDate, 2); TextDrawBackgroundColor(txtDate, 255); TextDrawFont(txtDate, 1); TextDrawLetterSize(txtDate, 0.230000, 1.100000); TextDrawColor(txtDate, -1); TextDrawSetOutline(txtDate, 0); TextDrawSetProportional(txtDate, 1); TextDrawSetShadow(txtDate, 40); TextDrawSetSelectable(txtDate, 0); // txtVehDistrict = TextDrawCreate(581.000000, 404.000000, "Turismo"); TextDrawAlignment(txtVehDistrict, 2); TextDrawBackgroundColor(txtVehDistrict, 255); TextDrawFont(txtVehDistrict, 1); TextDrawLetterSize(txtVehDistrict, 0.219999, 1.200000); TextDrawColor(txtVehDistrict, -1); TextDrawSetOutline(txtVehDistrict, 0); TextDrawSetProportional(txtVehDistrict, 1); TextDrawSetShadow(txtVehDistrict, 100); TextDrawSetSelectable(txtVehDistrict, 0); BoasVindas = TextDrawCreate(320.000000, 123.000000, "San Andreas Street Racing"); TextDrawAlignment(BoasVindas, 2); TextDrawBackgroundColor(BoasVindas, 255); TextDrawFont(BoasVindas, 0); TextDrawLetterSize(BoasVindas, 0.749998, 2.499999); TextDrawColor(BoasVindas, 128); TextDrawSetOutline(BoasVindas, 0); TextDrawSetProportional(BoasVindas, 1); TextDrawSetShadow(BoasVindas, 2); TextDrawSetSelectable(BoasVindas, 0); BoasVindas2 = TextDrawCreate(325.000000, 146.000000, "TENHA UM BOM JOGO!"); TextDrawAlignment(BoasVindas2, 2); TextDrawBackgroundColor(BoasVindas2, -65281); TextDrawFont(BoasVindas2, 0); TextDrawLetterSize(BoasVindas2, 0.360000, 1.299998); TextDrawColor(BoasVindas2, 255); TextDrawSetOutline(BoasVindas2, 0); TextDrawSetProportional(BoasVindas2, 1); TextDrawSetShadow(BoasVindas2, 0); TextDrawSetSelectable(BoasVindas2, 0); StartRaceTxt = TextDrawCreate(320.000000, 397.000000, " "); TextDrawAlignment(StartRaceTxt, 2); TextDrawBackgroundColor(StartRaceTxt, 255); TextDrawFont(StartRaceTxt, 2); TextDrawLetterSize(StartRaceTxt, 0.199998, 1.399998); TextDrawColor(StartRaceTxt, -16776961); TextDrawSetOutline(StartRaceTxt, 1); TextDrawSetProportional(StartRaceTxt, 1); TextDrawSetSelectable(StartRaceTxt, 0); RaceEndInfo = TextDrawCreate(12.000000, 431.000000, "INFO"); TextDrawBackgroundColor(RaceEndInfo, 255); TextDrawFont(RaceEndInfo, 1); TextDrawLetterSize(RaceEndInfo, 0.330000, 1.600000); TextDrawColor(RaceEndInfo, -65281); TextDrawSetOutline(RaceEndInfo, 0); TextDrawSetProportional(RaceEndInfo, 1); TextDrawSetShadow(RaceEndInfo, 50); TextDrawSetSelectable(RaceEndInfo, 0); RaceEndInfo2 = TextDrawCreate(48.000000, 432.000000, " "); TextDrawBackgroundColor(RaceEndInfo2, 255); TextDrawFont(RaceEndInfo2, 2); TextDrawLetterSize(RaceEndInfo2, 0.210000, 1.399999); TextDrawColor(RaceEndInfo2, -1); TextDrawSetOutline(RaceEndInfo2, 1); TextDrawSetProportional(RaceEndInfo2, 1); TextDrawSetSelectable(RaceEndInfo2, 0); TextVehBox = TextDrawCreate(250.000000, -1.000000, "New Textdraw"); TextDrawAlignment(TextVehBox, 2); TextDrawBackgroundColor(TextVehBox, 255); TextDrawFont(TextVehBox, 1); TextDrawLetterSize(TextVehBox, 0.500000, 50.000000); TextDrawColor(TextVehBox, -1); TextDrawSetOutline(TextVehBox, 0); TextDrawSetProportional(TextVehBox, 1); TextDrawSetShadow(TextVehBox, 1); TextDrawUseBox(TextVehBox, 1); TextDrawBoxColor(TextVehBox, 0x000000FF); TextDrawTextSize(TextVehBox, 0.000000, 827.000000); TextDrawSetSelectable(TextVehBox, 0); TextVeh1 = TextDrawCreate(85.000000, 175.000000, "CLOVER"); TextDrawBackgroundColor(TextVeh1, -256); TextDrawFont(TextVeh1, 5); TextDrawLetterSize(TextVeh1, 0.500000, 1.000000); TextDrawColor(TextVeh1, -1); TextDrawSetOutline(TextVeh1, 0); TextDrawSetProportional(TextVeh1, 1); TextDrawSetShadow(TextVeh1, 1); TextDrawUseBox(TextVeh1, 1); TextDrawBoxColor(TextVeh1, -256); TextDrawTextSize(TextVeh1, 150.000000, 125.000000); TextDrawSetPreviewModel(TextVeh1, 542); TextDrawSetPreviewRot(TextVeh1, -16.000000, 0.000000, -55.000000, 0.800000); TextDrawSetSelectable(TextVeh1, 1); TextVeh2 = TextDrawCreate(249.000000, 175.000000, "496"); TextDrawBackgroundColor(TextVeh2, -256); TextDrawFont(TextVeh2, 5); TextDrawLetterSize(TextVeh2, 0.500000, 1.000000); TextDrawColor(TextVeh2, -1); TextDrawSetOutline(TextVeh2, 0); TextDrawSetProportional(TextVeh2, 1); TextDrawSetShadow(TextVeh2, 1); TextDrawUseBox(TextVeh2, 1); TextDrawBoxColor(TextVeh2, 65535); TextDrawTextSize(TextVeh2, 150.000000, 125.000000); TextDrawSetPreviewModel(TextVeh2, 496); TextDrawSetPreviewRot(TextVeh2, -16.000000, 0.000000, -55.000000, 0.899999); TextDrawSetSelectable(TextVeh2, 1); TextVeh3 = TextDrawCreate(416.000000, 175.000000, "SUNSIRE"); TextDrawBackgroundColor(TextVeh3, -256); TextDrawFont(TextVeh3, 5); TextDrawLetterSize(TextVeh3, 0.500000, 1.000000); TextDrawColor(TextVeh3, -1); TextDrawSetOutline(TextVeh3, 0); TextDrawSetProportional(TextVeh3, 1); TextDrawSetShadow(TextVeh3, 1); TextDrawUseBox(TextVeh3, 1); TextDrawBoxColor(TextVeh3, 65535); TextDrawTextSize(TextVeh3, 150.000000, 125.000000); TextDrawSetPreviewModel(TextVeh3, 550); TextDrawSetPreviewRot(TextVeh3, -16.000000, 0.000000, -55.000000, 0.850000); TextDrawSetSelectable(TextVeh3, 1); TextVehInfo = TextDrawCreate(330.000000, 174.000000, "Escolha seu veiculo para iniciar"); TextDrawAlignment(TextVehInfo, 2); TextDrawBackgroundColor(TextVehInfo, 255); TextDrawFont(TextVehInfo, 2); TextDrawLetterSize(TextVehInfo, 0.419999, 1.600000); TextDrawColor(TextVehInfo, -1); TextDrawSetOutline(TextVehInfo, 1); TextDrawSetProportional(TextVehInfo, 1); TextDrawSetSelectable(TextVehInfo, 0); TextVeh1Name = TextDrawCreate(158.000000, 236.000000, "Clover"); TextDrawAlignment(TextVeh1Name, 2); TextDrawBackgroundColor(TextVeh1Name, 255); TextDrawFont(TextVeh1Name, 2); TextDrawLetterSize(TextVeh1Name, 0.259999, 1.399999); TextDrawColor(TextVeh1Name, -1); TextDrawSetOutline(TextVeh1Name, 0); TextDrawSetProportional(TextVeh1Name, 1); TextDrawSetShadow(TextVeh1Name, 1); TextDrawSetSelectable(TextVeh1Name, 0); TextVeh2Name = TextDrawCreate(341.000000, 236.000000, "BLISTA"); TextDrawAlignment(TextVeh2Name, 2); TextDrawBackgroundColor(TextVeh2Name, 255); TextDrawFont(TextVeh2Name, 2); TextDrawLetterSize(TextVeh2Name, 0.259999, 1.399999); TextDrawColor(TextVeh2Name, -1); TextDrawSetOutline(TextVeh2Name, 0); TextDrawSetProportional(TextVeh2Name, 1); TextDrawSetShadow(TextVeh2Name, 1); TextDrawSetSelectable(TextVeh2Name, 0); TextVeh3Name = TextDrawCreate(501.000000, 236.000000, "Sunrise"); TextDrawAlignment(TextVeh3Name, 2); TextDrawBackgroundColor(TextVeh3Name, 255); TextDrawFont(TextVeh3Name, 2); TextDrawLetterSize(TextVeh3Name, 0.259999, 1.399999); TextDrawColor(TextVeh3Name, -1); TextDrawSetOutline(TextVeh3Name, 0); TextDrawSetProportional(TextVeh3Name, 1); TextDrawSetShadow(TextVeh3Name, 1); TextDrawSetSelectable(TextVeh3Name, 0); } public OnPlayerConnect(playerid) { SendDeathMessage(INVALID_PLAYER_ID, playerid, 200); SetPlayerColor(playerid, 0xFFFFFFFF); PlayerInfo[playerid][pGPS] = -1; PlayerInfo[playerid][Registered] = false; PlayerInfo[playerid][Logged] = false; format(PlayerInfo[playerid][pFile], 100, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid)); if(SII_Exist(PlayerInfo[playerid][pFile])) { PlayerInfo[playerid][Registered] = true; ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair"); } else { ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair"); } PlayerInfo[playerid][pRaceID] = -1; ResetPlayerMoney(playerid); TextDrawShowForPlayer(playerid, BoasVindas); TextDrawShowForPlayer(playerid, BoasVindas2); return true; } public OnPlayerDisconnect(playerid, reason) { SendDeathMessage(INVALID_PLAYER_ID, playerid, 201); new posStr[100]; GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]); GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]); format(posStr, sizeof posStr, "%f %f %f %f", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]); PlayerInfo[playerid][pInterior] = GetPlayerInterior(playerid); new line[25], line2[25]; new weapon[13], ammo[13]; SII_Open(PlayerInfo[playerid][pFile]); SII_WriteString("Position", posStr); SII_WriteInt("Money", PlayerInfo[playerid][playermoney]); SII_WriteInt("Skin", PlayerInfo[playerid][pSkin]); SII_WriteInt("Interior", PlayerInfo[playerid][pInterior]); for(new i = 0; i < 13; i++) { GetPlayerWeaponData(playerid, i, weapon[i], ammo[i]); format(line, sizeof line, "WeaponSlot%d", i); SII_WriteInt(line, weapon[i]); format(line2, sizeof line2, "WeaponSlotAmmo%d", i); SII_WriteInt(line2, ammo[i]); } SII_Save(); SII_Close(); return true; } public OnPlayerRequestClass(playerid, classid) { if(PlayerInfo[playerid][Logged] == false && PlayerInfo[playerid][Registered] == true) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair"); //else if(PlayerInfo[playerid][Registered] == 0) ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair"); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]); SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]); SetPlayerCameraPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY]+3.5, PlayerInfo[playerid][pZ]+10.0); SetPlayerCameraLookAt(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]); TogglePlayerControllable(playerid, 0); return true; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_TEXT_NO_EFFECT: { if(response) { if(PlayerInfo[playerid][pTutorial] == 1) // Carros { // Próximo dialogo: carros new sz_Dialog1[] = RGB_COLOR_GOLD"VEÍCULOS\n\n"RGB_COLOR_WHITE"Cada jogador ao se registrar, pode escolher 1 veículo dentre 3 pré-definidos: Clover, Blista ou Sunrise.\n\ Esse será seu veículo de início. Com ele você poderá entrar em corridas para ganhar dinheiro, tunar em uma das garagens de tuning, e participar de eventos.\n"; new sz_Dialog2[] = "É importante que você cuide do seu veículo; Não o deixe destrancado, e nem deixe estacionado pelas ruas.\n\ Seu veículo fica salvo no local onde você o deixou, e seus tunings também ficam salvos."; new sz_Dialog[1000]; strcat(sz_Dialog, sz_Dialog1); strcat(sz_Dialog, sz_Dialog2); PlayerInfo[playerid][pTutorial] = 2; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", ""); } else if(PlayerInfo[playerid][pTutorial] == 2) // Armas { new sz_Dialog[] = RGB_COLOR_GOLD"ARMAS\n\n\ "RGB_COLOR_WHITE"Você pode comprar as suas armas normalmente nas Ammunations, e elas ficarão salvas caso você saia\ do servidor.\n Armas especiais como: sniper, granada, etc.. só poderão ser compradas pelo mercado negro."; PlayerInfo[playerid][pTutorial] = 0; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", ""); } } } case DIALOG_REGISTER: { if(!response) Kick(playerid); else { new file[100], pass[130]; format(file, sizeof file, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid)); WP_Hash(pass, sizeof(pass), inputtext); SII_Open(file); SII_WriteString("Password", pass); SII_WriteInt("Registered", 1); SII_Save(); SII_Close(); PlayerInfo[playerid][Logged] = true; TextDrawHideForPlayer(playerid, BoasVindas); TextDrawHideForPlayer(playerid, BoasVindas2); SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Sua conta foi cadastrada com sucesso!"); PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0); PlayerInfo[playerid][pX] = 1722.7843; PlayerInfo[playerid][pY] = -1713.9490; PlayerInfo[playerid][pZ] = 13.5114; PlayerInfo[playerid][pA] = 181.5285; PlayerInfo[playerid][pInterior] = 0; PlayerInfo[playerid][pSkin] = 0; for(new i = 0; i < 13; i++) { PlayerInfo[playerid][pWeapon][i] = 0; PlayerInfo[playerid][pAmmo][i] = 0; } new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\ "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\ 2. Proibido se aproveitar de qualquer bug do gamemode;\n\ 3. Proibido ofensas a outros jogadores;\n\ 4. Ao sair do servidor, deixa seu veículo estacionado em garagens, car parking, etc;\n\ 5. ..."; PlayerInfo[playerid][pTutorial] = 1; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", ""); } } case DIALOG_LOGIN: { if(!response) Kick(playerid); else { new file[100], pass[130], enpass[130], pos[100]; format(file, sizeof file, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid)); SII_Open(file); WP_Hash(enpass, sizeof(enpass), inputtext); SII_ReadString(pass, "Password"); if(strcmp(enpass, pass, true) == 0) { TextDrawHideForPlayer(playerid, BoasVindas); TextDrawHideForPlayer(playerid, BoasVindas2); SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Sua conta foi autenticada com sucesso!"); PlayerInfo[playerid][Registered] = true; PlayerInfo[playerid][Logged] = true; SII_ReadString(pos, "Position"); PlayerInfo[playerid][pSkin] = SII_ReadInt("Skin"); PlayerInfo[playerid][playermoney] = SII_ReadInt("Money"); PlayerInfo[playerid][pInterior] = SII_ReadInt("Interior"); new line[25], line2[25]; for(new i = 0; i < 13; i++) { format(line, sizeof line, "WeaponSlot%d", i); PlayerInfo[playerid][pWeapon][i] = SII_ReadInt(line); printf("SLOT: %d ARMA: %d", i, PlayerInfo[playerid][pWeapon][i]); format(line2, sizeof line2, "WeaponSlotAmmo%d", i); PlayerInfo[playerid][pAmmo][i] = SII_ReadInt(line2); printf("SLOT: %d AMMO: %d", i, PlayerInfo[playerid][pAmmo][i]); } sscanf(pos, "ffff", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]); //SetSpawnInfo(playerid, NO_TEAM, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA], 24, 100, 0, 0, 0, 0); } else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, RGB_COLOR_GOLD"CONTA CADASTRADA", RGB_COLOR_WHITE"Digite a senha dessa conta:", "Logar", "Sair"); SII_Close(); } } case DIALOG_ENGINE: { if(response) { new i = GetPlayerVehicleID(playerid); SetVehicleParamsEx(i, ServerVehicles[i][VehEngine] = 1, ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors] = 0, ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]); SendClientMessage(playerid, COLOR_GOLD, "* Seu veículo está ligado!"); } } case DIALOG_WORKSHOP: { if(response) { //Aumentar Health\nBlindar Portas\nBlindar Paineis\nBlindar Rodas\nBlindar Luzes\nPintura if(listitem == 0) // Aumentar Health { ShowPlayerDialog(playerid, DIALOG_WORKSHOPH, DIALOG_STYLE_LIST, "L.S. MOD SHOP", "+500 Health (R$1500)\n+1000 Health (R$2500)\n+2000 Health (R$5000)", "Comprar", "Voltar"); } else if(listitem == 1) // Blindar Portas { if(GetPlayerMoney(playerid) > 3000) { ServerVehicles[GetPlayerVehicleID(playerid)][VehDoorsArmour] = 1; SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as portas do seu veículo!"); GivePlayerMoney(playerid, -3000); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } else if(listitem == 2) // Blindar Paineis { if(GetPlayerMoney(playerid) > 4000) { ServerVehicles[GetPlayerVehicleID(playerid)][VehPanelsArmour] = 1; SendClientMessage(playerid, COLOR_GOLD, "* Você blindou os painéis do seu veículo!"); GivePlayerMoney(playerid, -4000); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } else if(listitem == 3) // Blindar Rodas { if(GetPlayerMoney(playerid) > 5000) { ServerVehicles[GetPlayerVehicleID(playerid)][VehTiresArmour] = 1; SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as rodas do seu veículo!"); GivePlayerMoney(playerid, -5000); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } else if(listitem == 4) { if(GetPlayerMoney(playerid) > 3000) { ServerVehicles[GetPlayerVehicleID(playerid)][VehLightsArmour] = 1; SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as luzes do seu veículo!"); GivePlayerMoney(playerid, -3000); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } else if(listitem == 5) { if(GetPlayerMoney(playerid) > 2500) { ShowPlayerDialog(playerid, DIALOG_WORKSHOP_COLOR, DIALOG_STYLE_INPUT, "L.S. MOD SHOP", "Selecione o ID das cores (128 a 255).\nVocê pode conferir todas as cores no link abaixo:\nhttp://wiki.sa-mp.com/wiki/Vehicle_Color_IDs\nExemplo: 222 1", "Pintar", "Voltar"); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } else if(listitem == 6) { if(GetPlayerMoney(playerid) > 100) { RepairVehicle(GetPlayerVehicleID(playerid)); SetVehicleHealth(GetPlayerVehicleID(playerid), ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth]); GivePlayerMoney(playerid, -100); } else { SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } } } } case DIALOG_WORKSHOPH: { if(response) { // 1500 Health (R$1500)\n2000 Health (R$2500)\n3000 Health (R$5000) if(listitem == 0) { if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 1500) { if(GetPlayerMoney(playerid) > 1500) { SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (1500 health | 1000 = padrão)"); RepairVehicle(GetPlayerVehicleID(playerid)); ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 1500; SetVehicleHealth(GetPlayerVehicleID(playerid), 1500); GivePlayerMoney(playerid, -1500); } else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 1500!"); } else if(listitem == 1) { if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 2000) { if(GetPlayerMoney(playerid) > 2500) { SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (2000 health | 1000 = padrão)"); RepairVehicle(GetPlayerVehicleID(playerid)); ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 2000; SetVehicleHealth(GetPlayerVehicleID(playerid), 2000); GivePlayerMoney(playerid, -2500); } else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 2000!"); } else if(listitem == 2) { if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 3000) { if(GetPlayerMoney(playerid) > 5000) { SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (3000 health | 1000 = padrão)"); RepairVehicle(GetPlayerVehicleID(playerid)); ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 3000; SetVehicleHealth(GetPlayerVehicleID(playerid), 3000); GivePlayerMoney(playerid, -5000); } else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!"); } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 3000!"); } } else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair"); } case DIALOG_WORKSHOP_COLOR: { if(response) { new cID, cID2; if(sscanf(inputtext, "dd", cID,cID2)) SendClientMessage(playerid, COLOR_RED, "* Digite os id da cor1 e cor2."); else { GivePlayerMoney(playerid, -2500); ChangeVehicleColor(GetPlayerVehicleID(playerid), cID, cID2); ServerVehicles[GetPlayerVehicleID(playerid)][VehColor1] = cID; ServerVehicles[GetPlayerVehicleID(playerid)][VehColor2] = cID2; } } else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, "L.S. MODSHOP", "Aumentar Resistência\t\t\t\t\t\t\t\nBlindar Portas\t\t\t\t\t\t\tR$3000\nBlindar Paineis\t\t\t\t\t\t\tR$3000\nBlindar Rodas\t\t\t\t\t\t\tR$3000\nBlindar Luzes\t\t\t\t\t\t\tR$3000\nPintura\t\t\t\t\t\t\tR$2500\nReparar Veículo\t\t\t\t\t\t\tR$100", "Escolher", "Sair"); } case DIALOG_CARS: { if(response) { new id; if(sscanf(inputtext, "d", id)) SendClientMessage(playerid, COLOR_RED, "* Digite o ID do seu veículo."); else { if(strcmp(GetPlayerName(playerid), ServerVehicles[id][VehOwner], false) == 0) { new Float:vPos[3]; GetVehiclePos(id, vPos[0], vPos[1], vPos[2]); SetPlayerMapIcon(playerid, 99, vPos[0], vPos[1], vPos[2], 55, 0xFFFFFFFF, 1); PlayerInfo[playerid][pGPS] = id; } else SendClientMessage(playerid, COLOR_RED, "* Digite o ID do seu veículo."); } } } } return true; } // public OnPlayerRequestSpawn(playerid) - Jogador solicita spawn na seleção de classes public OnPlayerRequestSpawn(playerid) { if(!PlayerInfo[playerid][Logged] || PlayerInfo[playerid][pTutorial] > 0) return false; else { TextDrawShowForPlayer(playerid, txtDate); TextDrawShowForPlayer(playerid, txtModeName); if(PlayerInfo[playerid][Registered] == false) { SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+3.5); TogglePlayerControllable(playerid, false); SetPlayerHealth(playerid, 9999999999); TextDrawShowForPlayer(playerid, TextVeh1); TextDrawShowForPlayer(playerid, TextVeh2); TextDrawShowForPlayer(playerid, TextVeh3); TextDrawShowForPlayer(playerid, TextVeh1Name); TextDrawShowForPlayer(playerid, TextVeh2Name); TextDrawShowForPlayer(playerid, TextVeh3Name); TextDrawShowForPlayer(playerid, TextVehBox); TextDrawShowForPlayer(playerid, TextVehInfo); SelectTextDraw(playerid, 0xFFFFFF50); } else { SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]); SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); TogglePlayerControllable(playerid, 1); SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5); } } return true; } public OnPlayerClickTextDraw(playerid, Text:clickedid) { new Float:ppos[4]; GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]); GetPlayerFacingAngle(playerid, ppos[3]); if(clickedid == TextVeh1) { SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Clover!"); TextDrawHideForPlayer(playerid, TextVeh1); TextDrawHideForPlayer(playerid, TextVeh2); TextDrawHideForPlayer(playerid, TextVeh3); TextDrawHideForPlayer(playerid, TextVeh1Name); TextDrawHideForPlayer(playerid, TextVeh2Name); TextDrawHideForPlayer(playerid, TextVeh3Name); TextDrawHideForPlayer(playerid, TextVehBox); TextDrawHideForPlayer(playerid, TextVehInfo); CancelSelectTextDraw(playerid); SetPlayerHealth(playerid, 100); for(new i = 1; i < 500; i++) { if(VehCreate[i] == -1) { new file[100]; format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); if(!SII_Exist(file)) { SII_Open(file); SII_WriteString("Owner", GetPlayerName(playerid)); SII_WriteInt("Model", 542); SII_WriteInt("Spoiler", -1); SII_WriteInt("Hood", -1); SII_WriteInt("Roof", -1); SII_WriteInt("Sideskirt", -1); SII_WriteInt("Lamps", -1); SII_WriteInt("Nitro", -1); SII_WriteInt("Exhaust", -1); SII_WriteInt("Wheels", -1); SII_WriteInt("Stereo", -1); SII_WriteInt("Hydraulics", -1); SII_WriteInt("FB", -1); SII_WriteInt("RB", -1); SII_WriteInt("VR", -1); SII_WriteInt("VL", -1); SII_WriteFloat("PosX", ppos[0]); SII_WriteFloat("PosY", ppos[1]); SII_WriteFloat("PosZ", ppos[2]); SII_WriteFloat("PosA", ppos[3]); SII_WriteInt("Health", 1000); SII_WriteInt("DoorsArmour", 0); SII_WriteInt("TiresArmour", 0); SII_WriteInt("PanelsArmour", 0); SII_WriteInt("LightsArmour", 0); SII_Save(); SII_Close(); VehCreate[i] = CreateVehicle(542, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1); SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid)); PutPlayerInVehicle(playerid, VehCreate[i], 0); ServerVehicles[VehCreate[i]][VehHealth] = 1000; //Itter_Add(TotalVehicles, VehCreate[i]); SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0); break; } } } } if(clickedid == TextVeh2) { SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Blista!"); TextDrawHideForPlayer(playerid, TextVeh1); TextDrawHideForPlayer(playerid, TextVeh2); TextDrawHideForPlayer(playerid, TextVeh3); TextDrawHideForPlayer(playerid, TextVeh1Name); TextDrawHideForPlayer(playerid, TextVeh2Name); TextDrawHideForPlayer(playerid, TextVeh3Name); TextDrawHideForPlayer(playerid, TextVehBox); TextDrawHideForPlayer(playerid, TextVehInfo); CancelSelectTextDraw(playerid); SetPlayerHealth(playerid, 100); for(new i = 1; i < 500; i++) { if(VehCreate[i] == -1) { new file[100]; format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); if(!SII_Exist(file)) { SII_Open(file); SII_WriteString("Owner", GetPlayerName(playerid)); SII_WriteInt("Model", 496); SII_WriteInt("Spoiler", -1); SII_WriteInt("Hood", -1); SII_WriteInt("Roof", -1); SII_WriteInt("Sideskirt", -1); SII_WriteInt("Lamps", -1); SII_WriteInt("Nitro", -1); SII_WriteInt("Exhaust", -1); SII_WriteInt("Wheels", -1); SII_WriteInt("Stereo", -1); SII_WriteInt("Hydraulics", -1); SII_WriteInt("FB", -1); SII_WriteInt("RB", -1); SII_WriteInt("VR", -1); SII_WriteInt("VL", -1); SII_WriteFloat("PosX", ppos[0]); SII_WriteFloat("PosY", ppos[1]); SII_WriteFloat("PosZ", ppos[2]); SII_WriteFloat("PosA", ppos[3]); SII_WriteInt("Health", 1000); SII_WriteInt("DoorsArmour", 0); SII_WriteInt("TiresArmour", 0); SII_WriteInt("PanelsArmour", 0); SII_WriteInt("LightsArmour", 0); SII_Save(); SII_Close(); VehCreate[i] = CreateVehicle(496, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1); SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid)); PutPlayerInVehicle(playerid, VehCreate[i], 0); ServerVehicles[VehCreate[i]][VehHealth] = 1000; //Itter_Add(TotalVehicles, VehCreate[i]); SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0); break; } } } } if(clickedid == TextVeh3) { SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Sunrise!"); TextDrawHideForPlayer(playerid, TextVeh1); TextDrawHideForPlayer(playerid, TextVeh2); TextDrawHideForPlayer(playerid, TextVeh3); TextDrawHideForPlayer(playerid, TextVeh1Name); TextDrawHideForPlayer(playerid, TextVeh2Name); TextDrawHideForPlayer(playerid, TextVeh3Name); TextDrawHideForPlayer(playerid, TextVehBox); TextDrawHideForPlayer(playerid, TextVehInfo); CancelSelectTextDraw(playerid); SetPlayerHealth(playerid, 100); for(new i = 1; i < 500; i++) { if(VehCreate[i] == -1) { new file[100]; format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); if(!SII_Exist(file)) { SII_Open(file); SII_WriteString("Owner", GetPlayerName(playerid)); SII_WriteInt("Model", 550); SII_WriteInt("Spoiler", -1); SII_WriteInt("Hood", -1); SII_WriteInt("Roof", -1); SII_WriteInt("Sideskirt", -1); SII_WriteInt("Lamps", -1); SII_WriteInt("Nitro", -1); SII_WriteInt("Exhaust", -1); SII_WriteInt("Wheels", -1); SII_WriteInt("Stereo", -1); SII_WriteInt("Hydraulics", -1); SII_WriteInt("FB", -1); SII_WriteInt("RB", -1); SII_WriteInt("VR", -1); SII_WriteInt("VL", -1); SII_WriteFloat("PosX", ppos[0]); SII_WriteFloat("PosY", ppos[1]); SII_WriteFloat("PosZ", ppos[2]); SII_WriteFloat("PosA", ppos[3]); SII_WriteInt("Health", 1000); SII_WriteInt("DoorsArmour", 0); SII_WriteInt("TiresArmour", 0); SII_WriteInt("PanelsArmour", 0); SII_WriteInt("LightsArmour", 0); SII_Save(); SII_Close(); VehCreate[i] = CreateVehicle(550, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1); SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid)); PutPlayerInVehicle(playerid, VehCreate[i], 0); ServerVehicles[VehCreate[i]][VehHealth] = 1000; //Itter_Add(TotalVehicle, VehCreate[i]); SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0); break; } } } } return 1; } public OnVehicleDamageStatusUpdate(vehicleid, playerid) { #pragma unused playerid new panels, doors, lights, tires; for(new i = 0; i < 500; i++) { if(vehicleid == VehCreate[i]) { GetVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires); if(ServerVehicles[VehCreate[i]][VehDoorsArmour] == 1) doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors //fell off - (4, 4, 4, 4, 0, 0) if(ServerVehicles[VehCreate[i]][VehPanelsArmour] == 1) panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels //fell off - (3, 3, 3, 3, 3, 3, 3) if(ServerVehicles[VehCreate[i]][VehTiresArmour] == 1) tires = encode_tires(0, 0, 0, 0); // fix all tires if(ServerVehicles[VehCreate[i]][VehLightsArmour] == 1) lights = encode_lights(0, 0, 0, 0); // fix all lights UpdateVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires); } } return 1; } encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3); encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper) { return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24); } encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door) { #pragma unused behind_driver_door #pragma unused behind_passenger_door return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24); } encode_lights(light1, light2, light3, light4) { return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3); } public OnPlayerDeath(playerid, killerid, reason) { GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]); GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]); return 1; } public OnPlayerSpawn(playerid) { SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5); SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]); TogglePlayerControllable(playerid, 1); for(new i = 0; i < 13; i++) GivePlayerWeapon(playerid, PlayerInfo[playerid][pWeapon][i], PlayerInfo[playerid][pAmmo][i]); return true; } public OnPlayerPickUpPickup(playerid, pickupid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { ServerVehicles[vehicleid][VehColor1] = color1; ServerVehicles[vehicleid][VehColor2] = color2; return true; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { ServerVehicles[vehicleid][VehPaintjob] = paintjobid; return true; } public OnVehicleDeath(vehicleid, killerid) { ServerVehicles[vehicleid][VehStatus] = 1; return true; } public OnVehicleSpawn(vehicleid) { new i = vehicleid; SetVehiclePos(vehicleid, ServerVehicles[vehicleid][VehX], ServerVehicles[vehicleid][VehY], ServerVehicles[vehicleid][VehZ]); SetVehicleZAngle(vehicleid, ServerVehicles[vehicleid][VehA]); ChangeVehicleColor(vehicleid, ServerVehicles[vehicleid][VehColor1], ServerVehicles[vehicleid][VehColor2]); ChangeVehiclePaintjob(vehicleid, ServerVehicles[vehicleid][VehPaintjob]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSpoiler]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHood]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRoof]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSideskirt]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehLamps]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehNitro]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehExhaust]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehWheels]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehStereo]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHydraulics]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehFB]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRB]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVR]); AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVL]); //SetVehicleNumberPlate(vehicleid, ServerVehicles[vehicleid][VehPlate]); ServerVehicles[vehicleid][VehStatus] = 0; SetVehicleParamsEx(vehicleid, ServerVehicles[i][VehEngine], ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors], ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]); return true; } public OnPlayerStateChange(playerid, newstate, oldstate) { if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER) { new i = GetPlayerVehicleID(playerid); GetVehicleParamsEx(i, ServerVehicles[i][VehEngine], ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors], ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]); if(ServerVehicles[i][VehEngine] == 0) ShowPlayerDialog(playerid, DIALOG_ENGINE, 0, "{FFD700}SA Tuning", "{FFFFFF}Deseja ligar o veículo?\nUse também o comando /motor para ligar/desligar.", "Ligar", "Não"); } return 1; } //-----------------------------------/ Y_Race Sistem public OnPlayerFinishRace(playerid, race, position, prize, time) { new Float:X, Float:Y, Float:Z, Float:A, Float:vX, Float:vY, Float:vZ; GetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z); GetVehicleZAngle(GetPlayerVehicleID(playerid), A); GetVehicleVelocity(GetPlayerVehicleID(playerid), vX, vY, vZ); for(new k = 0; k < 100; k++) { if(race == RaceCreate[k]) { new raceid = RaceCreate1[RaceCreate[k]]; SendClientMessageToAll(COLOR_GOLD, ""); SendClientMessageToAll(COLOR_GOLD, "CORRIDA: %s", RaceInfo[raceid][RaceName]); SendClientMessageToAll(-1, "%d COLOCADO: %s", position, GetPlayerName(playerid)); SendClientMessageToAll(COLOR_GOLD, ""); if(position == 1) { format(RaceInfo[raceid][Race1Name], 20, "%s", GetPlayerName(playerid)); GivePlayerMoney(playerid, RaceInfo[raceid][RaceReward]); SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 1st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], RaceInfo[raceid][RaceReward]); } else if(position == 2) { format(RaceInfo[raceid][Race2Name], 20, "%s", GetPlayerName(playerid)); GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/2)); SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 2nd e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/2)); } else if(position == 3) { format(RaceInfo[raceid][Race3Name], 20, "%s", GetPlayerName(playerid)); GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/3)); SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 3st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/3)); } else if(position >= 4 || position <= 8) { GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/6)); SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/6)); } else if(position >= 9) { GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/9)); SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/9)); } break; } } return true; } public OnPlayerExitRace(playerid, race) { //SetVehicleToRespawn(GetPlayerVehicleID(playerid)); for(new i = 0; i < 100; i++) { if(race == RaceCreate[i]) { new raceid = RaceCreate1[RaceCreate[i]]; RaceInfo[raceid][RaceCurrent]--; PlayerInfo[playerid][pRaceID] = -1; SendClientMessageToAll(COLOR_WHITE, "[RACE] %s saiu da corrida '%s'", GetPlayerName(playerid), RaceInfo[raceid][RaceName]); break; } } return true; } public OnRaceEnd(race) { new raceid, str[128]; for(new k = 0; k < 100; k++) { if(race == RaceCreate[k]) { raceid = RaceCreate1[RaceCreate[k]]; SendClientMessageToAll(COLOR_GOLD, "[RACE] A corrida '%s' terminou.", RaceInfo[raceid][RaceName]); foreach(Player, i) { if(PlayerInfo[i][pRaceID] == raceid) { PlayerInfo[i][pRaceID] = -1; } } break; } } format(str, sizeof str, "Corrida: %s 1st: %s 2nd: %s 3rd: %s", RaceInfo[raceid][RaceName], RaceInfo[raceid][Race1Name], RaceInfo[raceid][Race2Name], RaceInfo[raceid][Race3Name]); TextDrawSetString(RaceEndInfo2, str); TextDrawShowForAll(RaceEndInfo); TextDrawShowForAll(RaceEndInfo2); format(RaceInfo[raceid][Race1Name], 20, "None"); format(RaceInfo[raceid][Race2Name], 20, "None"); format(RaceInfo[raceid][Race3Name], 20, "None"); RaceInfo[raceid][RaceOpen] = false; SetTimerEx("HideTextDraw", 6000, false, "d", 0); return true; } forward StartRace(race); public StartRace(race) { for(new k = 0; k < 100; k++) { if(race == RaceCreate[k]) { new raceid = RaceCreate1[RaceCreate[k]]; if(RaceInfo[raceid][RaceCurrent] >= 1) { SendClientMessageToAll(COLOR_GOLD, "[RACE] A corrida '%s' vai começar. Preparados?", RaceInfo[raceid][RaceName]); Race_Start(RaceCreate[k]); } else { RaceInfo[race][RaceOpen] = false; RaceInfo[race][RaceCurrent] = 0; RaceInfo[race][RaceTotal] = 0; foreach(Player, i) { if(PlayerInfo[i][pRaceID] == race) { PlayerInfo[i][pRaceID] = -1; Race_SetPlayer(race, i, false); } } } break; } } return true; } public OnVehicleStreamIn(vehicleid, forplayerid) { if(strcmp(ServerVehicles[vehicleid][VehOwner], GetPlayerName(forplayerid), false) == 0) { SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0); } else { if(ServerVehicles[vehicleid][VehLocked] == true) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1); else if(ServerVehicles[vehicleid][VehLocked] == false) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0); } return true; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { return true; } forward HideTextDraw(textid); public HideTextDraw(textid) { if(textid == 1) { TextDrawHideForAll(StartRaceTxt); } else if(textid == 0) { TextDrawHideForAll(RaceEndInfo); TextDrawHideForAll(RaceEndInfo2); } } //-----------------------------------/ Comandos /* zcmd:createrace(playerid, params[]) { if(!IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_RED, "* Você precisa ser administrador ou ter autorização."); else if(PlayerInfo[playerid][CRaceStatus] > 0) SendClientMessage(playerid, COLOR_RED, "* Você já está criando uma corrida."); else { PlayerInfo[playerid][CRaceStatus] = 1; ShowPlayerDialog(playerid, DialogRaceType, 2, " Qual o tipo de corrida?", "Ponto a Ponto\nConvencional", "Avançar", "Cancelar"); } return true; } */ zcmd:admcmds(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return false; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS", sz_CmdAdmins, "OK", ""); return true; } zcmd:tutorial(playerid, params[]) { new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\ "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\ 2. Proibido se aproveitar de qualquer bug do gamemode;\n\ 3. Proibido ofensas a outros jogadores;\n\ 4. Proibido deixar veículos no meio da rua;\n\ 5. ..."; PlayerInfo[playerid][pTutorial] = 1; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "PROX. PÁG", ""); return true; } zcmd:creditos(playerid, params[]) { new sz_Dialog[] = RGB_COLOR_GOLD"\t\t\tCRÉDITOS DO GAMEMODE\n\n\ "RGB_COLOR_WHITE"Roger Costa - Programador e Proprietário\n\ Paulo Mu - Programador e Proprietário\n\ Felipe (Play 4 Life RPG) - Garoto que testa o mode com a gente -q\n\ Wagner Bender - Emo que testa o mode com a gente também -q"; ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"CRÉDITOS", sz_Dialog, "OK", ""); return true; } zcmd:reportar(playerid, params[]) { new report[50], admins; if(sscanf(params, "s[50]", report)) SendClientMessage(playerid, COLOR_RED, "[COMANDO] Use '/reportar [mensagem]'"); else { foreach(Player, i) { if(IsPlayerAdmin(i)) { admins++; GameTextForPlayer(i, "~w~~h~~h~NOVO REPORT~w~OLHE O CHAT", 3000, 3); PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); SendClientMessageEx(i, -1, "[REPORT] %s(id%d): %s", GetPlayerNameEx(playerid), playerid, report); } } if(admins == 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Não há nenhum administrador online."); else SendClientMessage(playerid, COLOR_GREEN, "[REPORT] Seu report foi enviado com sucesso!"); } return true; } // zcmd:ajuda(playerid, params[]) - Mostra um índice de ajuda para o jogador zcmd:ajuda(playerid, params[]) { return ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"AJUDA", g_szHelpDialog, "FECHAR", ""), true; } // zcmd:comandos(playerid, params[]) - Mostra a lista de comandos do servidor zcmd:comandos(playerid, params[]) { strcat(g_szCommandsDialog, g_szCommandsDialog1); return ShowPlayerDialog(playerid, DIALOG_COMMANDS, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS", g_szCommandsDialog, "FECHAR", ""), true; } // zcmd:comandos(playerid, params[]) - Comete suicídio zcmd:kill(playerid, params[]) { SendClientMessageToAll(COLOR_GRAY, "[JOGADOR] %s se suicidou. (/kill)", GetPlayerName(playerid)); SetPlayerHealth(playerid, 0.0); return true; } zcmd:race(playerid, params[]) { new raceid; if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "* Você já está em uma corrida."); else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /race "); else if(!RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "* Essa corrida não está aberta."); else if(RaceInfo[raceid][RaceCurrent] >= 20) SendClientMessage(playerid, COLOR_RED, "* Corrida já está cheia!"); else if(PlayerInfo[playerid][pDM] > 0) SendClientMessage(playerid, COLOR_RED, "* Você está em um deathmatch."); else { RaceInfo[raceid][RaceTotal]++; RaceInfo[raceid][RaceCurrent]++; PlayerInfo[playerid][pRaceID] = raceid; Race_SetPlayer(RaceCreate[raceid], playerid, true); SendClientMessageToAll(COLOR_GOLD, "[RACE] %s entrou na corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid); } return true; } zcmd:exit(playerid, params[]) { if(!Race_GetPlayerRace(playerid)) SendClientMessage(playerid, COLOR_RED, "* Você não está em uma corrida."); else { Race_SetPlayer(Race_GetPlayerRace(playerid), playerid, false); } return true; } zcmd:openrace(playerid, params[]) { new raceid; if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "* Você já está em uma corrida."); else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /openrace "); else if(RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "* Essa corrida já está aberta."); else { new str[128]; RaceInfo[raceid][RaceOpen] = true; SendClientMessageToAll(COLOR_GOLD, "[RACE] %s abriu a corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid); SendClientMessageToAll(COLOR_GOLD, "[RACE] A CORRIDA SE INICIA EM 1 MINUTO!"); PlayAudioForAll(1057); //---- CreateRace RaceCreate[raceid] = Race_Create(); RaceCreate1[RaceCreate[raceid]] = raceid; //---- Laps Race_SetLaps(RaceCreate[raceid], RaceInfo[raceid][RaceLaps]); //---- Price Race_SetEntry(RaceCreate[raceid], 0); //---- Checkpoints for(new j = 0; j < 50; j++) { if(strlen(RaceCPPos[raceid][j]) > 0) { new Float:r_pos[3]; sscanf(RaceCPPos[raceid][j], "fff", r_pos[0], r_pos[1], r_pos[2]); Race_AddCheckpoint(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2]); } } //---- Grid for(new j = 0; j < 20; j++) { if(strlen(RaceSTPos[raceid][j]) > 0) { new Float:r_pos[4]; sscanf(RaceSTPos[raceid][j], "ffff", r_pos[0], r_pos[1], r_pos[2], r_pos[3]); Race_AddStart(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2], r_pos[3]); } } TextDrawShowForAll(StartRaceTxt); format(str, sizeof str, "~g~A corrida ~w~%s ~g~foi aberta~n~Digite ~w~/race %d ~g~para entrar!", RaceInfo[raceid][RaceName], raceid); TextDrawSetString(StartRaceTxt, str); SetTimerEx("HideTextDraw", 6000, false, "d", 1); SetTimerEx("StartRace", 1000*20, false, "d", RaceCreate[raceid]); PlayAudioForAll(1057); } return true; } // zcmd:dardinheiro(playerid, params[]) - Dá a quantia de dinheiro para o jogador zcmd:dardinheiro(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return false; new iPlayerID; new iAmount; if(sscanf(params, "ui", iPlayerID, iAmount)) return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/dardinheiro [id/jogador] [quantidade]'."); if(!IsPlayerConnected(iPlayerID)) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido."); SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s deu $%d à %s.", GetPlayerName(playerid), iAmount, GetPlayerName(iPlayerID)); GivePlayerMoney(iPlayerID, iAmount); return true; } // zcmd:setardinheiro(playerid, params[]) - Seta o dinheiro de um jogador para o valor especificado zcmd:setardinheiro(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return false; new iPlayerID; new iAmount; if(sscanf(params, "ui", iPlayerID, iAmount)) return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setardinheiro [id/jogador] [quantia]'."); if(!IsPlayerConnected(iPlayerID)) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido."); SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou o dinheiro de %s para $%d.", GetPlayerName(playerid), GetPlayerName(iPlayerID), iAmount); SetPlayerMoney(iPlayerID, iAmount); return true; } // zcmd:setarcolete(playerid, params[]) - Seta o colete de um jogador para o valor especificado zcmd:setarcolete(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return false; new iPlayerID; new Float:fArmour; if(sscanf(params, "uf", iPlayerID, fArmour)) return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setarcolete [id/jogador] [colete (0-100)]'."); if(!IsPlayerConnected(iPlayerID)) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido."); if(fArmour < 0.0 || fArmour > 100.0) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Digite um valor de 0 a 100."); SetPlayerArmour(iPlayerID, fArmour); SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou o colete de %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fArmour); return true; } // zcmd:setarvida(playerid, params[]) - Seta a vida de um jogador para o valor especificado zcmd:setarvida(playerid, params[]) { if(!IsPlayerAdmin(playerid)) return false; new iPlayerID; new Float:fHealth; if(sscanf(params, "uf", iPlayerID, fHealth)) return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setarvida [id/jogador] [vida (0-100)]'."); if(!IsPlayerConnected(iPlayerID)) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido."); if(fHealth < 0.0 || fHealth > 100.0) return SendClientMessage(playerid, COLOR_RED, "[ERRO] Digite um valor de 0 a 100."); SetPlayerHealth(iPlayerID, fHealth); SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou a vida do(a) %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fHealth); return true; } zcmd:vehicle(playerid, params[]) { new vehid; if(!IsPlayerAdmin(playerid)) return false; else if(sscanf(params, "d", vehid)) SendClientMessage(playerid, COLOR_PURPLE, "* Modafoca, use /vehicle "); else if(vehid < 400 || vehid > 611) SendClientMessage(playerid, COLOR_RED, "* Modafoca, é só id 400 ao 611."); else if(IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "* ERROR"); else { for(new i = 0; i < sizeof VehProhibiteds; i++) if(vehid == VehProhibiteds[i]) return SendClientMessage(playerid, COLOR_RED, "* Modafoca, é só id 400 ao 611."); new Float:ppos[4]; GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]); GetPlayerFacingAngle(playerid, ppos[3]); for(new i = 1; i < 500; i++) { if(VehCreate[i] == -1) { new file[100]; format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i); if(!SII_Exist(file)) { SII_Open(file); SII_WriteString("Owner", GetPlayerName(playerid)); SII_WriteInt("Model", vehid); SII_WriteInt("Spoiler", -1); SII_WriteInt("Hood", -1); SII_WriteInt("Roof", -1); SII_WriteInt("Sideskirt", -1); SII_WriteInt("Lamps", -1); SII_WriteInt("Nitro", -1); SII_WriteInt("Exhaust", -1); SII_WriteInt("Wheels", -1); SII_WriteInt("Stereo", -1); SII_WriteInt("Hydraulics", -1); SII_WriteInt("FB", -1); SII_WriteInt("RB", -1); SII_WriteInt("VR", -1); SII_WriteInt("VL", -1); SII_WriteFloat("PosX", ppos[0]); SII_WriteFloat("PosY", ppos[1]); SII_WriteFloat("PosZ", ppos[2]); SII_WriteFloat("PosA", ppos[3]); SII_WriteFloat("Health", 1000); SII_Save(); SII_Close(); VehCreate[i] = CreateVehicle(vehid, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1); PutPlayerInVehicle(playerid, VehCreate[i], 0); ServerVehicles[VehCreate[i]][VehHealth] = 1000; ServerVehicles[VehCreate[i]][VehID] = vehid; format(ServerVehicles[VehCreate[i]][VehOwner], 24, "%s", GetPlayerName(playerid)); break; } } } } return true; } zcmd:motor(playerid, params[]) { if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0) { new vehID = GetPlayerVehicleID(playerid); //GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective); if(ServerVehicles[GetPlayerVehicleID(playerid)][VehEngine] == 0) { SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine] = 1, ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo ligado!"); } else { SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine] = 0, ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo desligado!"); } } else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar de motorista pra ligar o veículo."); return true; } zcmd:lights(playerid, params[]) { if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0) { new vehID = GetPlayerVehicleID(playerid); //GetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); if(ServerVehicles[vehID][VehLights] == 0) { SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights] =1, ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Faróis aceso!"); } else { SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights] = 0, ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Faróis apagados!"); } } else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar de motorista pra acender os faróis o veículo."); return true; } /*zcmd:plate(playerid, params[]) { new pstr[10]; if(!IsPlayerInAnyVehicle(playerid) || GetPlayerVehicleSeat(playerid) != 0) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate "); else if(sscanf(params, "s[10]", pstr)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate "); else if(strlen(pstr) < 1 || strlen(pstr) > 8) SendClientMessage(playerid, COLOR_RED, "* No máximo 8 digitos."); else { new vehID = GetPlayerVehicleID(playerid), str[100]; SetVehicleNumberPlate(vehID, pstr); format(ServerVehicles[vehID][VehPlate], 10, pstr); format(str, sizeof str, "* Placa alterada (%s)", ServerVehicles[vehID][VehPlate]); SendClientMessage(playerid, COLOR_GOLD, str); ServerVehicles[vehID][VehStatus] = 1; GetVehiclePos(vehID, ServerVehicles[vehID][VehX], ServerVehicles[vehID][VehY], ServerVehicles[vehID][VehZ]); GetVehicleZAngle(vehID, ServerVehicles[vehID][VehA]); //GetVehicleParamsEx(vehID, ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]); SetVehicleToRespawn(vehID); } return true; } */ zcmd:destrancar(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar em um veículo!"); else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para trancá-lo!"); { SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo destrancado!"); ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = false; foreach(new i : Player) { if(i != playerid) { SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 0); } } } return true; } zcmd:trancar(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar em um veículo!"); else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para trancá-lo!"); { SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo trancado!"); ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = true; foreach(new i : Player) { if(i != playerid) { SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 1); } } } return true; } zcmd:mycars(playerid, params[]) { new str[500]; if(PlayerInfo[playerid][pGPS] != -1) { PlayerInfo[playerid][pGPS] = -1; RemovePlayerMapIcon(playerid, 99); return true; } for(new i = 1; i < 500; i++) { if(VehCreate[i] != -1) { if(strcmp(GetPlayerName(playerid), ServerVehicles[i][VehOwner], false) == 0) { new str2[128]; format(str2, sizeof str2, "{FFFFFF}%s (ID: %d)\n", VehicleNames[ServerVehicles[i][VehID] - 400], i); strcat(str, str2); } } } if(strlen(str)) { strcat(str, "{333333}Selecione o ID do seu carro para localizar:"); ShowPlayerDialog(playerid, DIALOG_CARS, DIALOG_STYLE_INPUT, RGB_COLOR_GOLD"SEUS VEÍCULOS", str, "Localizar", ""); } else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não tem nenhum carro pra localizar, pobre!"); return true; } zcmd:skin(playerid, params[]) { if(sscanf(params, "d", PlayerInfo[playerid][pSkin])) SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/skin [id]'"); else { SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Sua skin foi alterada."); } return true; } zcmd:tuning(playerid, params[]) { if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não está em um veículo!"); else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para tuná-lo."); else if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1523.7592,-1470.9032,9.5000)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não está na garagem de tuning!"); else { ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair"); } return true; } zcmd:money(playerid, params[]) { GivePlayerMoney(playerid, 500000); return true; } forward AntiCheat(); public AntiCheat() { foreach(new i : Player) { //SendClientMessage(i, -1, "[DEBUG] GetPlayerMoney(%d) = $%d | PlayerInfo[%d][playerMoney] = $%d", i, GetPlayerMoney(i), i, PlayerInfo[i][playerMoney]); if(GetPlayerMoney(i) > PlayerInfo[i][playermoney]) { SendClientMessageToAll(COLOR_RED, "[ANTICHEAT] %s usou money hack!", GetPlayerName(i)); ResetPlayerMoney(i); GivePlayerMoney(i, PlayerInfo[i][playermoney]); } else PlayerInfo[i][playermoney] = GetPlayerMoney(i); } return true; } // - [FUNÇÕES DE DINHEIRO] // stock GetPlayerMoneyEx(playerid) - Retorna a quantia de dinheiro que o jogador possui em mãos stock GetPlayerMoneyEx(playerid) return PlayerInfo[playerid][playermoney]; // stock GivePlayerMoneyEx(playerid, amount) - Dá uma quantida especificad de dinheiro para o jogador stock GivePlayerMoneyEx(playerid, amount) { PlayerInfo[playerid][playermoney] = PlayerInfo[playerid][playermoney] + amount; GivePlayerMoney(playerid, amount); } // stock ResetPlayerMoneyEx(playerid) - Reseta o dinheiro do jogador stock ResetPlayerMoneyEx(playerid) { PlayerInfo[playerid][playermoney] = 0; ResetPlayerMoney(playerid); } // stock SetPlayerMoneyEx(playerid, amount) - Seta o dinheiro de o jogador para a quantia especificada stock SetPlayerMoney(playerid, amount) { PlayerInfo[playerid][playermoney] = amount; ResetPlayerMoney(playerid); GivePlayerMoney(playerid, amount); } #define GetPlayerMoney GetPlayerMoneyEx #define GivePlayerMoney GivePlayerMoneyEx #define ResetPlayerMoney ResetPlayerMoneyEx