Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Revisado 100% //OK
- #pragma tabsize 0
- // ********************************************************************************************************************
- // Universo dos Caminhoneiros
- // ********************************************************************************************************************
- #define GameModeName "UDC 2.0"
- #include <a_samp>
- #include <core>
- new Text:ImagemEntrada;
- #define Azul 0x0000FFAA
- #define COR_BRANCO 0xFFFFFFAA
- #define COR_ROXO 0x9900FFAA
- #define COR_CINZA_AZUL 0x456EAF67
- #define Azul 0x0000FFAA
- #define COR_DARKROXO 0x800080AA
- #define COR_CINZA_AZUL 0x456EAF67
- forward SendMSG();
- new RandomServerName[4][] = {
- "•Universo dos Caminhoneiros®",
- "•Universo dos Caminhoneiros™",
- "Versão 2.0",
- "•Universo dos Caminhoneiros™•"
- };
- public SendMSG() {
- new string[128];
- new randMSG = random( sizeof(RandomServerName) );
- format( string, 128, "hostname %s", RandomServerName[randMSG] );
- SendRconCommand( string );
- return 1;
- }
- /********************************************************************************************************************
- ///////////////////////////////////////////////////////////// 100% Desbugado \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
- ||||||||||||||||||||||||||||||||||||||||||||| # PPC_Trucking Editada # |||||||||||||||||||||||||||
- ********************************************************************************************************************/
- new PlayersBeforePolice = 0;
- /////////////////////////////////////////
- // //
- // //
- // By João Monteiro //
- // //
- // //
- /////////////////////////////////////////
- #include <a_samp>
- #include <zcmd>
- #include <dutils>
- #include <sscanf2>
- #include <a_objects>
- #include <streamer>
- #include <dini>
- #include <SII>
- #include <m3dt>
- #include <foreach>
- #include <seif_walk>
- #include <a_players>
- /////////////////////////////////////////
- // //
- // //
- // By João Monteiro //
- // //
- // //
- /////////////////////////////////////////
- #define SLOT 1
- #define TimerFlood 3000
- #define AlertFlood 4
- #define ColorFlood 0x24B1DBAA
- #define CLIMATEMPO 0xFFFFAFAA
- #define AMARELO 0xFFFF00AA
- #define VERMELHO 0xFF0000AA
- #define AZUL 0x0000FFAA
- #define VERDE 0x00FF00AA
- #define BRANCO 0xFFFFFFFF
- // Include all define-statements and custom-type declarations and the arrays which use them
- // These files need to be included before the functions get included, because the functions use the defines, custom types and the arrays
- // Also include the defined loads (for truckers, military, mafia, ...) and locations arrays
- #include <PPC_DefTexts>
- #include <PPC_ServerSettings>
- #include <PPC_Defines>
- #include <PPC_DefLocations>
- #include <PPC_DefLoads>
- #include <PPC_DefCars>
- #include <PPC_DefPlanes>
- #include <PPC_DefTrailers>
- #include <PPC_DefBuyableVehicles>
- // Include functions for this gamemode
- #include <PPC_GlobalTimer>
- #include <PPC_Common>
- #include <PPC_Housing>
- #include <PPC_Business>
- #include <PPC_GameModeInit>
- #include <PPC_FileOperations>
- #include <PPC_Speedometer>
- #include <PPC_MissionsTrucking>
- #include <PPC_MissionsBus>
- #include <PPC_MissionsPilot>
- #include <PPC_MissionsPolice>
- #include <PPC_MissionsMafia>
- #include <PPC_MissionsAssistance>
- #include <PPC_MissionsCourier>
- #include <PPC_MissionsRoadworker>
- #include <PPC_Convoys>
- #include <PPC_Dialogs>
- #include <PPC_PlayerCommands>
- #include <PPC_Toll>
- #include <PPC_Extras>
- #define SLOT 1
- #define TimerFlood 3000
- #define AlertFlood 4
- #define ColorFlood 0x24B1DBAA
- #define CLIMATEMPO 0xFFFFAFAA
- #define AMARELO 0xFFFF00AA
- #define VERMELHO 0xFF0000AA
- #define AZUL 0x0000FFAA
- #define VERDE 0x00FF00AA
- #define BRANCO 0xFFFFFFFF
- forward timed(playerid);
- forward Climas();
- //Relógio
- new timer1,timer2,timer3;
- //Nomezinho
- new Text:AberturaP0;
- new Text:AberturaP1;
- //Abertura
- new Text:Abertura0;
- new Text:Abertura1;
- new Text:Textdraw0;
- main ()
- {
- print("\nSistemas do Servidor");
- print(" Carregando...");
- print(" 100% - Servidor Online");
- }
- public OnGameModeInit()
- {
- ImagemEntrada = TextDrawCreate(1.000000, -1.000000, "loadsc7:loadsc7");
- TextDrawBackgroundColor(ImagemEntrada, 255);
- TextDrawFont(ImagemEntrada, 4);
- TextDrawLetterSize(ImagemEntrada, 0.500000, 1.000000);
- TextDrawColor(ImagemEntrada, -1);
- TextDrawSetOutline(ImagemEntrada, 0);
- TextDrawSetProportional(ImagemEntrada, 1);
- TextDrawSetShadow(ImagemEntrada, 1);
- TextDrawUseBox(ImagemEntrada, 1);
- TextDrawBoxColor(ImagemEntrada, 255);
- TextDrawTextSize(ImagemEntrada, 645.000000, 450.000000);
- SetTimer( "SendMSG", 1000, true );
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar\n{FF0000}/editarplaca", 0xFFFFFFFF, 2096.6445, 1120.9552, 11.13951, 30.0, 0, 0); //6 Avenida
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar", 0xFFFFFFFF, -47.7836, 270.6917, 2.2500, 30.0, 0, 0); //1 parking fazenda
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar", 0xFFFFFFFF, 24.6492, 2418.9697, 22.7578, 30.0, 0, 0); //2 aero
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar\n{FF0000}/editarplaca", 0xFFFFFFFF, 1348.4963, 946.5101, 10.5252, 30.0, 0, 0); //3 chuckup
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar", 0xFFFFFFFF, -547.3569,507.0492,2.5933, 30.0, 0, 0); //4 Dragao
- Create3DTextLabel("{FFFFFF}/cor1\n{FF0000}/cor2\n{FFFFFF}/pintura\n{FF0000}/neon\n{FFFFFF}/reparar\n{FF0000}/editarplaca", 0xFFFFFFFF, -1656.2089,454.5365,7.4053, 30.0, 0, 0); //5 SF
- // Resgate
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, -525.00, -501.66, 25.52, 30.0, 0, 0); //resgate 1
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, -74.69, -1137.16, 4.20, 30.0, 0, 0); //resgate 2
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 1457.00, 975.83, 10.82, 30.0, 0, 0); //resgate 3
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, -2135.68, -247.47, 36.12, 30.0, 0, 0); //resgate 4
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 1766.83, -2040.70, 13.52, 30.0, 0, 0); //resgate 5
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, -545.66, 2593.99, 53.51, 30.0, 0, 0); //5 SF
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 332.13, 899.69, 24.77, 30.0, 0, 0); //5 SF
- Create3DTextLabel("{FF0000[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, -1575.18, -2724.28, 48.53, 30.0, 0, 0); //5 SF
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 661.59, 1718.29, 7.18, 30.0, 0, 0); //5 SF
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 2180.39, -2257.07, 14.77, 30.0, 0, 0); //5 SF
- Create3DTextLabel("{FF0000}[UDC]\n{FFFFFF}IP: 151.236.11.185:8780\n{FF0000}Universo dos Caminhoneiros - 2.0\n{FFFFFF}/ajuda\n{FF0000}/admins", 0xFFFFFFFF, 3.30, 1551.66, 12.75, 30.0, 0, 0); //5 SF
- // TextDraw
- AberturaP0 = TextDrawCreate(486.000000, 125.000000, "Universo dos Caminhoneiros");
- TextDrawBackgroundColor(AberturaP0, 255);
- TextDrawFont(AberturaP0, 3);
- TextDrawLetterSize(AberturaP0, 0.329999, 1.000000);
- TextDrawColor(AberturaP0, -1);
- TextDrawSetOutline(AberturaP0, 1);
- TextDrawSetProportional(AberturaP0, 1);
- // TextDraw
- AberturaP1 = TextDrawCreate(603.000000, 133.000000, "2.0");
- TextDrawBackgroundColor(AberturaP1, 255);
- TextDrawFont(AberturaP1, 3);
- TextDrawLetterSize(AberturaP1, 0.310000, 1.000000);
- TextDrawColor(AberturaP1, -16776961);
- TextDrawSetOutline(AberturaP1, 1);
- TextDrawSetProportional(AberturaP1, 1);
- // TextDraw
- Abertura0 = TextDrawCreate(210.000000, 105.000000, "Universo dos Caminhoneiros");
- TextDrawBackgroundColor(Abertura0, 255);
- TextDrawFont(Abertura0, 3);
- TextDrawLetterSize(Abertura0, 0.519999, 3.400000);
- TextDrawColor(Abertura0, -1);
- TextDrawSetOutline(Abertura0, 1);
- TextDrawSetProportional(Abertura0, 1);
- // TextDraw
- Abertura1 = TextDrawCreate(403.000000, 134.000000, "2.0");
- TextDrawBackgroundColor(Abertura1, 255);
- TextDrawFont(Abertura1, 3);
- TextDrawLetterSize(Abertura1, 0.340000, 1.500000);
- TextDrawColor(Abertura1, -16776961);
- TextDrawSetOutline(Abertura1, 1);
- TextDrawSetProportional(Abertura1, 1);
- // TextDraw
- Textdraw0 = TextDrawCreate(0.0, 0.0, "loadsc10:loadsc10");
- TextDrawBackgroundColor(Textdraw0, 255);
- TextDrawFont(Textdraw0, 3);
- TextDrawLetterSize(Textdraw0,0.290000, 1.300000);
- TextDrawColor(Textdraw0, -1);
- TextDrawSetOutline(Textdraw0, 0);
- TextDrawSetProportional(Textdraw0, 1);
- TextDrawSetShadow(Textdraw0, 1);
- TextDrawUseBox(Textdraw0, 1);
- TextDrawBoxColor(Textdraw0, 255);
- TextDrawTextSize(Textdraw0, 639.000000, 448.000000);
- SetTimer("timed",1000, 1);
- SetTimer("Climas",600000, 1);
- new HostCommand[128];
- SendRconCommand(HostCommand);
- SetGameModeText(GameModeName);
- GameModeInit_VehiclesPickups();
- GameModeInit_Classes();
- Convoys_Init();
- ShowPlayerMarkers(1);
- ShowNameTags(1);
- ManualVehicleEngineAndLights();
- EnableStuntBonusForAll(0);
- DisableInteriorEnterExits();
- UsePlayerPedAnims();
- SetTimer("Timer_TimedMessages", 1000 * 60 * 2, true);
- SetTimer("ShowRandomBonusMission", 1000 * 60 * 5, true);
- SetTimer("Toll", 1000, true);
- FixHouses();
- SetTimer("GlobalTimer", 1000, true);
- for(new i; i < MAX_PLAYERS; i ++)
- {
- if(IsPlayerConnected(i))
- {
- TextDrawShowForPlayer(i, AberturaP0);
- TextDrawShowForPlayer(i, AberturaP1);
- TextDrawShowForPlayer(i, Textdraw0);
- }
- }
- return 1;
- }
- public OnGameModeExit()
- {
- KillTimer(timer1);
- KillTimer(timer2);
- KillTimer(timer3);
- TextDrawHideForAll(AberturaP0);
- TextDrawDestroy(AberturaP0);
- TextDrawHideForAll(AberturaP1);
- TextDrawDestroy(AberturaP1);
- return 1;
- }
- // This callback gets called when a player connects to the server
- public OnPlayerConnect(playerid)
- {
- TextDrawShowForPlayer(playerid, ImagemEntrada);
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0000FFAA, "");
- SendClientMessage(playerid, 0x0FFDD349, "=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=");
- SendClientMessage(playerid, 0x0FFDD349, " Universo dos Caminhoneiros ");
- SendClientMessage(playerid, 0x0FFDD349, " Sejam bem Vindo ao Servidor ");
- SendClientMessage(playerid, 0x0FFDD349, " Divirta-se e Obrigado Pela Presença ");
- SendClientMessage(playerid, 0x0FFDD349, " Melhor Servidor de Truck do Brasil ");
- SendClientMessage(playerid, 0x0FFDD349, " Versão 2.0 ");
- SendClientMessage(playerid, 0x0FFDD349, "=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=o=");
- // Always allow NPC's to login without password or account
- if (IsPlayerNPC(playerid))
- return 1;
- // Setup local variables
- new Name[MAX_PLAYER_NAME], NewPlayerMsg[128], HouseID;
- // Setup a PVar to allow cross-script money-transfers (only from filterscript to this mainscript) and scorepoints
- SetPVarInt(playerid, "PVarMoney", 10000);
- SetPVarInt(playerid, "PVarScore", 0);
- // Get the playername
- GetPlayerName(playerid, Name, sizeof(Name));
- // Also store this name for the player
- GetPlayerName(playerid, APlayerData[playerid][PlayerName], 24);
- // Send a message to all players to let them know somebody else joined the server
- format(NewPlayerMsg, 128, TXT_PlayerJoinedServer, Name, playerid);
- SendClientMessageToAll(0xFFFFFFFF, NewPlayerMsg);
- // Try to load the player's datafile ("PlayerFile_Load" returns "1" is the file has been read, "0" when the file cannot be read)
- if (PlayerFile_Load(playerid) == 1)
- {
- // Check if the player is still banned
- if (APlayerData[playerid][BanTime] < gettime()) // Player ban-time is passed
- ShowPlayerDialog(playerid, DialogLogin, DIALOG_STYLE_INPUT, TXT_DialogLoginTitle, TXT_DialogLoginMsg, TXT_DialogLoginButton1, TXT_DialogButtonCancel);
- else // Player is still banned
- {
- ShowRemainingBanTime(playerid); // Show the remaining ban-time to the player is days, hours, minutes, seconds
- Kick(playerid); // Kick the player
- }
- }
- else
- ShowPlayerDialog(playerid, DialogRegister, DIALOG_STYLE_INPUT, TXT_DialogRegisterTitle, TXT_DialogRegisterMsg, TXT_DialogRegisterButton1, TXT_DialogButtonCancel);
- // The houses have been loaded but not the cars, so load all vehicles assigned to the player's houses
- for (new HouseSlot; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
- {
- // Get the HouseID from this slot
- HouseID = APlayerData[playerid][Houses][HouseSlot];
- // Check if there is a house in this slot
- if (HouseID != 0)
- HouseFile_Load(HouseID, true); // Load the cars of the house
- }
- // Speedometer setup
- Speedometer_Setup(playerid);
- // MissionText TextDraw setup
- APlayerData[playerid][MissionText] = TextDrawCreate(320.0, 430.0, " "); // Setup the missiontext at the bottom of the screen
- TextDrawAlignment(APlayerData[playerid][MissionText], 2); // Align the missiontext to the center
- TextDrawUseBox(APlayerData[playerid][MissionText], 1); // Set the missiontext to display inside a box
- TextDrawBoxColor(APlayerData[playerid][MissionText], 0x00000066); // Set the box color of the missiontext
- // Display a message if the player hasn't accepted the rules yet
- if (APlayerData[playerid][RulesRead] == false)
- SendClientMessage(playerid, 0xFFFFFFFF, "{828282}Você não viu as Regras do Universo dos Caminhoneiros digite {FFFF00}({ffffff}/regras.{FFFF00})");
- return 1;
- }
- // This function shows the player how long his ban still is when he tries to login (in days, hours, minutes, seconds)
- ShowRemainingBanTime(playerid)
- {
- // Setup local variables
- new TotalBanTime, Days, Hours, Minutes, Seconds, Msg[128];
- // Get the total ban-time
- TotalBanTime = APlayerData[playerid][BanTime] - gettime();
- // Calculate days
- if (TotalBanTime >= 86400)
- {
- Days = TotalBanTime / 86400;
- TotalBanTime = TotalBanTime - (Days * 86400);
- }
- // Calculate hours
- if (TotalBanTime >= 3600)
- {
- Hours = TotalBanTime / 3600;
- TotalBanTime = TotalBanTime - (Hours * 3600);
- }
- // Calculate minutes
- if (TotalBanTime >= 60)
- {
- Minutes = TotalBanTime / 60;
- TotalBanTime = TotalBanTime - (Minutes * 60);
- }
- // Calculate seconds
- Seconds = TotalBanTime;
- // Display the remaining ban-time for this player
- SendClientMessage(playerid, 0xFFFFFFFF, TXT_StillBanned);
- format(Msg, 128, TXT_BannedDuration, Days, Hours, Minutes, Seconds);
- SendClientMessage(playerid, 0xFFFFFFFF, Msg);
- }
- // This callback gets called when a player disconnects from the server
- public OnPlayerDisconnect(playerid, reason)
- {
- // Setup local variables
- new Name[24], Msg[128], HouseID;
- // Get the playername
- GetPlayerName(playerid, Name, sizeof(Name));
- // Send a message to all players to let them know somebody left the server
- format(Msg, 128, TXT_PlayerLeftServer, Name, playerid);
- SendClientMessageToAll(0xFFFFFFFF, Msg);
- // If the player entered a proper password (the player has an account)
- if (strlen(APlayerData[playerid][PlayerPassword]) != 0)
- {
- // Save the player data and his houses
- PlayerFile_Save(playerid);
- }
- // Stop any job that may have started (this also clears all mission data)
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassTruckDriver: Trucker_EndJob(playerid); // Stop any trucker job
- case ClassBusDriver: BusDriver_EndJob(playerid); // Stop any busdriver job
- case ClassPilot: Pilot_EndJob(playerid); // Stop any pilot job
- case ClassPolice: Police_EndJob(playerid); // Stop any police job
- case ClassMafia: Mafia_EndJob(playerid); // Stop any mafia job
- case ClassAssistance: Assistance_EndJob(playerid);
- case ClassRoadWorker: Roadworker_EndJob(playerid);
- }
- // If the player is part of a convoy, kick him from it
- Convoy_Leave(playerid);
- // Unload all the player's house-vehicles to make room for other player's vehicles
- for (new HouseSlot; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
- {
- // Get the HouseID from this slot
- HouseID = APlayerData[playerid][Houses][HouseSlot];
- // Check if there is a house in this slot
- if (HouseID != 0)
- {
- // Unload the cars of the house
- House_RemoveVehicles(HouseID);
- // Set the house so it cannot be entered by anyone (close the house)
- AHouseData[HouseID][HouseOpened] = false;
- }
- }
- // Clear the data in the APlayerData array to make sure the next player with the same id doesn't hold wrong data
- APlayerData[playerid][SpectateID] = -1;
- APlayerData[playerid][SpectateVehicle] = -1;
- APlayerData[playerid][SpectateType] = ADMIN_SPEC_TYPE_NONE;
- APlayerData[playerid][LoggedIn] = false;
- APlayerData[playerid][AssistanceNeeded] = false;
- APlayerData[playerid][PlayerPassword] = 0;
- APlayerData[playerid][PlayerLevel] = 0;
- APlayerData[playerid][PlayerJailed] = 0;
- APlayerData[playerid][PlayerFrozen] = 0; // Clearing this variable automatically kills the frozentimer
- APlayerData[playerid][Bans] = 0;
- APlayerData[playerid][BanTime] = 0;
- APlayerData[playerid][Muted] = false;
- APlayerData[playerid][RulesRead] = false;
- APlayerData[playerid][AutoReportTime] = 0;
- APlayerData[playerid][TruckerLicense] = 0;
- APlayerData[playerid][BusLicense] = 0;
- APlayerData[playerid][PlayerClass] = 0;
- APlayerData[playerid][Warnings] = 0;
- APlayerData[playerid][PlayerMoney] = 0;
- APlayerData[playerid][PlayerScore] = 0;
- for (new HouseSlot; HouseSlot < MAX_HOUSESPERPLAYER; HouseSlot++)
- APlayerData[playerid][Houses][HouseSlot] = 0;
- for (new BusSlot; BusSlot < MAX_BUSINESSPERPLAYER; BusSlot++)
- APlayerData[playerid][Business][BusSlot] = 0;
- APlayerData[playerid][CurrentHouse] = 0;
- // Clear bank account info
- APlayerData[playerid][BankPassword] = 0;
- APlayerData[playerid][BankLoggedIn] = false;
- APlayerData[playerid][BankMoney] = 0;
- // Clear stats
- APlayerData[playerid][StatsTruckerJobs] = 0;
- APlayerData[playerid][StatsConvoyJobs] = 0;
- APlayerData[playerid][StatsBusDriverJobs] = 0;
- APlayerData[playerid][StatsPilotJobs] = 0;
- APlayerData[playerid][StatsMafiaJobs] = 0;
- APlayerData[playerid][StatsMafiaStolen] = 0;
- APlayerData[playerid][StatsPoliceFined] = 0;
- APlayerData[playerid][StatsPoliceJailed] = 0;
- APlayerData[playerid][StatsCourierJobs] = 0;
- APlayerData[playerid][StatsRoadworkerJobs] = 0;
- APlayerData[playerid][StatsAssistance] = 0;
- APlayerData[playerid][StatsMetersDriven] = 0.0;
- // Clear police warnings
- APlayerData[playerid][PoliceCanJailMe] = false;
- APlayerData[playerid][PoliceWarnedMe] = false;
- APlayerData[playerid][Value_PoliceCanJailMe] = 0;
- // Make sure the jailtimer has been destroyed
- KillTimer(APlayerData[playerid][PlayerJailedTimer]);
- KillTimer(APlayerData[playerid][Timer_PoliceCanJailMe]);
- // Destroy the speedometer TextDraw for this player and the timer, also set the speed to 0
- Speedometer_Cleanup(playerid);
- // Also destroy the missiontext TextDraw for this player
- TextDrawDestroy(APlayerData[playerid][MissionText]);
- // Destroy a rented vehicle is the player had any
- if (APlayerData[playerid][RentedVehicleID] != 0)
- {
- // Clear the data for the already rented vehicle
- AVehicleData[APlayerData[playerid][RentedVehicleID]][Model] = 0;
- AVehicleData[APlayerData[playerid][RentedVehicleID]][Fuel] = 100;
- AVehicleData[APlayerData[playerid][RentedVehicleID]][Owned] = false;
- AVehicleData[APlayerData[playerid][RentedVehicleID]][Owner] = 0;
- AVehicleData[APlayerData[playerid][RentedVehicleID]][PaintJob] = 0;
- for (new j; j < 14; j++)
- {
- AVehicleData[APlayerData[playerid][RentedVehicleID]][Components][j] = 0;
- }
- // Destroy the vehicle
- DestroyVehicle(APlayerData[playerid][RentedVehicleID]);
- // Clear the RentedVehicleID
- APlayerData[playerid][RentedVehicleID] = 0;
- }
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- if(APlayerData[playerid][PlayerLevel] >= 1)
- {
- new textv2[128], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof (name));
- format(textv2, sizeof (textv2), "{FFFFFF}[ADMIN] {FF0000}%s {FFFFFF}[ID:%d]:{FFFFFF} %s", name, playerid, text);
- SendClientMessageToAll(GetPlayerColor(playerid),textv2);
- return 0;
- }
- // Players ///
- if (APlayerData[playerid][Muted] == false)
- {
- new textv2[128], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof (name));
- format(textv2, sizeof (textv2), "%s {FFFFFF}[ID:%d]:{FFFFFF} %s", name, playerid, text);
- SendClientMessageToAll(GetPlayerColor(playerid),textv2);
- return 0;
- }
- // Block the player's text if he has been muted
- if (APlayerData[playerid][Muted] == true)
- {
- SendClientMessage(playerid, 0xFFFFFFFF, "Você está mudo e não pode Falar!");
- return 0;
- }
- return 1;
- }
- // This callback gets called when a player interacts with a dialog
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- // Select the proper dialog to process
- switch (dialogid)
- {
- case DialogRegister: Dialog_Register(playerid, response, inputtext); // The "Register"-dialog
- case DialogLogin: Dialog_Login(playerid, response, inputtext); // The "Login"-dialog
- case DialogStatsOtherPlayer: Dialog_StatsOtherPlayer(playerid, response, listitem);
- case DialogStatsHouse: Dialog_StatsHouse(playerid, response, listitem);
- case DialogStatsGoHouse: Dialog_StatsGoHouse(playerid, response, listitem);
- case DialogStatsGoBusiness: Dialog_StatsGoBusiness(playerid, response, listitem);
- case DialogRescue: Dialog_Rescue(playerid, response, listitem); // The rescue-dialog
- case DialogBuyLicenses: Dialog_BuyLicenses(playerid, response, listitem); // The license-dialog (allows the player to buy trucker/busdriver licenses)
- case DialogRules: Dialog_Rules(playerid, response);
- case DialogTruckerJobMethod: Dialog_TruckerSelectJobMethod(playerid, response, listitem); // The work-dialog for truckers (shows the loads he can carry and lets the player choose the load)
- case DialogTruckerSelectLoad: Dialog_TruckerSelectLoad(playerid, response, listitem); // The load-selection dialog for truckers (shows the startlocations for the selected load and let the player choose his startlocation)
- case DialogTruckerStartLoc: Dialog_TruckerSelectStartLoc(playerid, response, listitem); // The start-location dialog for truckers (shows the endlocations for the selected load and let the player choose his endlocation)
- case DialogTruckerEndLoc: Dialog_TruckerSelectEndLoc(playerid, response, listitem); // The end-location dialog for truckers (processes the selected endlocation and starts the job)
- case DialogBusJobMethod: Dialog_BusSelectJobMethod(playerid, response, listitem); // The work-dialog for busdrivers (process the options to choose own busroute or auto-assigned busroute)
- case DialogBusSelectRoute: Dialog_BusSelectRoute(playerid, response, listitem); // Choose the busroute and start the job
- case DialogCourierSelectQuant: Dialog_CourierSelectQuant(playerid, response, listitem);
- case DialogBike: Dialog_Bike(playerid, response, listitem); // The bike-dialog
- case DialogCar: Dialog_Car(playerid, response, listitem); // The car-dialog (which uses a split dialog structure)
- case DialogPlane: Dialog_Plane(playerid, response, listitem); // The plane-dialog (which uses a split dialog structure)
- case DialogTrailer: Dialog_Trailer(playerid, response, listitem); // The trailer-dialog (which uses a split dialog structure)
- case DialogBoat: Dialog_Boat(playerid, response, listitem); // The boat-dialog
- case DialogRentCarClass: Dialog_RentProcessClass(playerid, response, listitem); // The player chose a vehicleclass from where he can rent a vehicle
- case DialogRentCar: Dialog_RentCar(playerid, response, listitem); // The player chose a vehicle from the list of vehicles from the vehicleclass he chose before
- case DialogPlayerCommands: Dialog_PlayerCommands(playerid, response, listitem); // Displays all commands in a split-dialog structure
- case DialogPrimaryCarColor: Dialog_PrimaryCarColor(playerid, response, listitem);
- case DialogSedundaryCarColor: Dialog_SedundaryCarColor(playerid, response, listitem);
- case DialogWeather: Dialog_Weather(playerid, response, listitem); // The weather dialog
- case DialogCarOption: Dialog_CarOption(playerid, response, listitem); // The caroption dialog
- case DialogSelectConvoy: Dialog_SelectConvoy(playerid, response, listitem);
- case DialogHouseMenu: Dialog_HouseMenu(playerid, response, listitem); // Process the main housemenu
- case DialogUpgradeHouse: Dialog_UpgradeHouse(playerid, response, listitem); // Process the house-upgrade menu
- case DialogGoHome: Dialog_GoHome(playerid, response, listitem); // Port to one of your houses
- case DialogHouseNameChange: Dialog_ChangeHouseName(playerid, response, inputtext); // Change the name of your house
- case DialogSellHouse: Dialog_SellHouse(playerid, response); // Sell the house
- case DialogBuyCarClass: Dialog_BuyCarClass(playerid, response, listitem); // The player chose a vehicleclass from where he can buy a vehicle
- case DialogBuyCar: Dialog_BuyCar(playerid, response, listitem); // The player chose a vehicle from the list of vehicles from the vehicleclass he chose before
- case DialogSellCar: Dialog_SellCar(playerid, response, listitem);
- case DialogBuyInsurance: Dialog_BuyInsurance(playerid, response);
- case DialogGetCarSelectHouse: Dialog_GetCarSelectHouse(playerid, response, listitem);
- case DialogGetCarSelectCar: Dialog_GetCarSelectCar(playerid, response, listitem);
- case DialogUnclampVehicles: Dialog_UnclampVehicles(playerid, response);
- case DialogCreateBusSelType: Dialog_CreateBusSelType(playerid, response, listitem);
- case DialogBusinessMenu: Dialog_BusinessMenu(playerid, response, listitem);
- case DialogGoBusiness: Dialog_GoBusiness(playerid, response, listitem);
- case DialogBusinessNameChange: Dialog_ChangeBusinessName(playerid, response, inputtext); // Change the name of your business
- case DialogSellBusiness: Dialog_SellBusiness(playerid, response); // Sell the business
- case DialogBankPasswordRegister: Dialog_BankPasswordRegister(playerid, response, inputtext);
- case DialogBankPasswordLogin: Dialog_BankPasswordLogin(playerid, response, inputtext);
- case DialogBankOptions: Dialog_BankOptions(playerid, response, listitem);
- case DialogBankDeposit: Dialog_BankDeposit(playerid, response, inputtext);
- case DialogBankWithdraw: Dialog_BankWithdraw(playerid, response, inputtext);
- case DialogBankTransferMoney: Dialog_BankTransferMoney(playerid, response, inputtext);
- case DialogBankTransferName: Dialog_BankTransferName(playerid, response, inputtext);
- case DialogBankCancel: Dialog_BankCancel(playerid, response);
- case DialogHelpItemChosen: Dialog_HelpItemChosen(playerid, response, listitem);
- case DialogHelpItem: Dialog_HelpItem(playerid, response);
- case DialogOldPassword: Dialog_OldPassword(playerid, response, inputtext);
- case DialogNewPassword: Dialog_NewPassword(playerid, response, inputtext);
- case DialogConfirmPassword: Dialog_ConfirmPassword(playerid, response);
- }
- return 1;
- }
- // this callback gets called when a player clicks on another player on the scoreboard
- public OnPlayerClickPlayer(playerid, clickedplayerid, source)
- {
- // Check if the player is an admin of at least level 1
- if (APlayerData[playerid][PlayerLevel] >= 1)
- {
- // Setup local variables
- new Name[24], DialogTitle[128], PlayerStatList[3000], PlayerIP[16], NumHouses, NumBusinesses;
- // Construct the dialog-title
- GetPlayerName(clickedplayerid, Name, sizeof(Name));
- format(DialogTitle, 128, "Statisticas do jogador: %s", Name);
- // Add the IP of the player to the list
- GetPlayerIp(clickedplayerid, PlayerIP, sizeof(PlayerIP));
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}IP: {00FF00}%s\n", PlayerStatList, PlayerIP);
- // Add the level of the player to the list
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Level de Admin: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][PlayerLevel]);
- // Add the class of the player to the list
- switch(APlayerData[clickedplayerid][PlayerClass])
- {
- case ClassTruckDriver: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Caminhoneiro\n", PlayerStatList);
- case ClassBusDriver: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Motorista de Ônibus\n", PlayerStatList);
- case ClassPilot: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Piloto de Avião\n", PlayerStatList);
- case ClassPolice: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Policial\n", PlayerStatList);
- case ClassMafia: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Mafia\n", PlayerStatList);
- case ClassCourier: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Correios\n", PlayerStatList);
- case ClassAssistance: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}Mecânico\n", PlayerStatList);
- case ClassRoadWorker: format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Classe: {00FF00}DNIT\n", PlayerStatList);
- }
- // Add money and score of the player to the list
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Dinheiro: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][PlayerMoney]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Score: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][PlayerScore]);
- // Add wanted-level of the player to the list
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Level de Procurado: {00FF00}%i\n", PlayerStatList, GetPlayerWantedLevel(clickedplayerid));
- // Add truckerlicense and busdriver license of the player to the list
- if (APlayerData[clickedplayerid][TruckerLicense] == 1)
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Licença de Caminhão: {00FF00}Sim\n", PlayerStatList);
- else
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Licença de Caminhão: {00FF00}Não\n", PlayerStatList);
- if (APlayerData[clickedplayerid][BusLicense] == 1)
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Licença de Ônibus: {00FF00}Sim\n", PlayerStatList);
- else
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Licença de Ônibus: {00FF00}Não\n", PlayerStatList);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de Caminhoneiro: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsTruckerJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos em Comboio: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsConvoyJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de Motorista de Ônibus: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsBusDriverJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de Piloto: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsPilotJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de Máfia: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsMafiaJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Cargas-Máfia Roubadas: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsMafiaStolen]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Jogadores Multados: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsPoliceFined]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Jogadores Presos: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsPoliceJailed]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de Correios: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsCourierJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Trabalhos de DNIT: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsRoadworkerJobs]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Jogadores Socorridos: {00FF00}%i\n", PlayerStatList, APlayerData[clickedplayerid][StatsAssistance]);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Distância Percorrida: {00FF00}%f\n", PlayerStatList, APlayerData[clickedplayerid][StatsMetersDriven]);
- // Count the number of houses/businesses that the player has and add them to the list
- for (new i; i < MAX_HOUSESPERPLAYER; i++)
- if (APlayerData[clickedplayerid][Houses][i] != 0)
- NumHouses++;
- for (new i; i < MAX_BUSINESSPERPLAYER; i++)
- if (APlayerData[clickedplayerid][Business][i] != 0)
- NumBusinesses++;
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Casas: {00FF00}%i (dois clicks para ver)\n", PlayerStatList, NumHouses);
- format(PlayerStatList, sizeof(PlayerStatList), "%s{FFFFFF}Empresas: {00FF00}%i (dois clicks para ver)\n", PlayerStatList, NumBusinesses);
- // Store the player-id of the other player so the other dialogs can display his statistics further (houses, businesses, cars)
- APlayerData[playerid][DialogOtherPlayer] = clickedplayerid;
- // Show the statistics of the other player
- ShowPlayerDialog(playerid, DialogStatsOtherPlayer, DIALOG_STYLE_LIST, DialogTitle, PlayerStatList, TXT_DialogButtonSelect, TXT_DialogButtonCancel); // Let the player buy a license
- }
- return 1;
- }
- // This callback gets called when a player picks up any pickup
- public OnPlayerPickUpPickup(playerid, pickupid)
- {
- // If the player picks up the Buy_License pickup at the driving school in Doherty
- if (pickupid == Pickup_License)
- // Ask the player which license he wants to buy
- ShowPlayerDialog(playerid, DialogBuyLicenses, DIALOG_STYLE_LIST, TXT_DialogLicenseTitle, TXT_DialogLicenseList, TXT_DialogButtonBuy, TXT_DialogButtonCancel); // Let the player buy a license
- return 1;
- }
- // This callback gets called when a player spawns somewhere
- public OnPlayerSpawn(playerid)
- {
- if (APlayerData[playerid][RulesRead] == false)
- {
- new Msg[2000];
- format(Msg, 2000, "%s1. Sempre dirigir do lado direito nas estradas para evitar acidentes.\n", Msg);
- format(Msg, 2000, "%s2. Nao chingar ou desrespeitar os outros jogadores, eles sao seus companheiros.\n", Msg);
- format(Msg, 2000, "%s3. Usar a linguagem padrão 'Português'.\n", Msg);
- format(Msg, 2000, "%s4. Nao usar hackers ou será banido permanentemente.\n", Msg);
- format(Msg, 2000, "%s5. Nao floodar no chat, pode ser calado por um admin.\n", Msg);
- format(Msg, 2000, "%s6. Nao roubar carros, sujeito a prisao caso haja denuncia.\n", Msg);
- format(Msg, 2000, "%s7. Nunca chingue ou desrespeite um administrador, voce sera banido.\n", Msg);
- ShowPlayerDialog(playerid, DialogRules, DIALOG_STYLE_MSGBOX, "Regras", Msg, "Aceitar", TXT_DialogButtonCancel);
- }
- // Always allow NPC's to spawn without logging in
- if (IsPlayerNPC(playerid))
- return 1;
- // Check if the player properly logged in by typing his password
- if (APlayerData[playerid][LoggedIn] == false)
- {
- SendClientMessage(playerid, 0xFFFFFFFF, TXT_FailedLoginProperly);
- Kick(playerid); // Kick the player if he didn't log in properly
- }
- // Setup local variables
- new missiontext[200];
- // Spawn the player in the global world (where everybody plays the game)
- SetPlayerVirtualWorld(playerid, 0);
- SetPlayerInterior(playerid, 0);
- // Also set a variable that tracks in which house the player currently is
- APlayerData[playerid][CurrentHouse] = 0;
- // Disable the clock
- TogglePlayerClock(playerid, 0);
- // Delete all weapons from the player
- ResetPlayerWeapons(playerid);
- // Set the missiontext based on the chosen class
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassTruckDriver: // Truck-driver class
- {
- format(missiontext, sizeof(missiontext), Trucker_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassTruckDriver); // Set the playercolor (chatcolor for the player and color on the map)
- }
- case ClassBusDriver: // Bus-driver class
- {
- format(missiontext, sizeof(missiontext), BusDriver_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassBusDriver); // Set the playercolor (chatcolor for the player and color on the map)
- }
- case ClassPilot: // Pilot class
- {
- format(missiontext, sizeof(missiontext), Pilot_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassPilot); // Set the playercolor (chatcolor for the player and color on the map)
- }
- case ClassPolice: // Police class
- {
- format(missiontext, sizeof(missiontext), Police_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassPolice); // Set the playercolor (chatcolor for the player and color on the map)
- // Start the PlayerCheckTimer to scan for wanted players (be sure the timer has been destroyed first)
- KillTimer(APlayerData[playerid][PlayerCheckTimer]);
- APlayerData[playerid][PlayerCheckTimer] = SetTimerEx("Police_CheckWantedPlayers", 1000, true, "i", playerid);
- // Check if the police player can get weapons
- if (PoliceGetsWeapons == true)
- {
- // Give up to 12 weapons to the player
- for (new i; i < 12; i++)
- GivePlayerWeapon(playerid, APoliceWeapons[i], PoliceWeaponsAmmo);
- }
- }
- case ClassMafia: // Mafia class
- {
- format(missiontext, sizeof(missiontext), Mafia_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassMafia); // Set the playercolor (chatcolor for the player and color on the map)
- // Start the PlayerCheckTimer to scan for players that carry mafia-loads (be sure the timer has been destroyed first)
- KillTimer(APlayerData[playerid][PlayerCheckTimer]);
- APlayerData[playerid][PlayerCheckTimer] = SetTimerEx("Mafia_CheckMafiaLoads", 1000, true, "i", playerid);
- }
- case ClassCourier: // Courier class
- {
- format(missiontext, sizeof(missiontext), Courier_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassCourier); // Set the playercolor (chatcolor for the player and color on the map)
- }
- case ClassAssistance: // Assistance class
- {
- format(missiontext, sizeof(missiontext), Assistance_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassAssistance); // Set the playercolor (chatcolor for the player and color on the map)
- // Start the PlayerCheckTimer to scan for players who need assistance (be sure the timer has been destroyed first)
- KillTimer(APlayerData[playerid][PlayerCheckTimer]);
- APlayerData[playerid][PlayerCheckTimer] = SetTimerEx("Assistance_CheckPlayers", 1000, true, "i", playerid);
- }
- case ClassRoadWorker: // Roadworker class
- {
- format(missiontext, sizeof(missiontext), RoadWorker_NoJobText); // Preset the missiontext
- SetPlayerColor(playerid, ColorClassRoadWorker); // Set the playercolor (chatcolor for the player and color on the map)
- }
- }
- // Set the missiontext
- TextDrawSetString(APlayerData[playerid][MissionText], missiontext);
- // Show the missiontext for this player
- TextDrawShowForPlayer(playerid, APlayerData[playerid][MissionText]);
- // If the player spawns and his jailtime hasn't passed yet, put him back in jail
- if (APlayerData[playerid][PlayerJailed] != 0)
- Police_JailPlayer(playerid, APlayerData[playerid][PlayerJailed]);
- return 1;
- }
- // This callback gets called whenever a player enters a checkpoint
- public OnPlayerEnterCheckpoint(playerid)
- {
- // Check the player's class
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassTruckDriver: // Truckdriver class
- Trucker_OnPlayerEnterCheckpoint(playerid); // Process the checkpoint (load or unload goods)
- case ClassBusDriver: // BusDriver class
- {
- GameTextForPlayer(playerid, TXT_BusDriverMissionPassed, 3000, 4); // Show a message to let the player know he finished his job
- BusDriver_EndJob(playerid); // End the current mission
- }
- case ClassPilot: // Pilot class
- Pilot_OnPlayerEnterCheckpoint(playerid); // Process the checkpoint (load or unload)
- case ClassMafia: // Mafia class
- Mafia_OnPlayerEnterCheckpoint(playerid);
- case ClassCourier: // Courier class
- Courier_OnPlayerEnterCheckpoint(playerid);
- case ClassRoadWorker: // Roadworker class
- {
- // Only end the mission when doing "repair-speedcamera" jobtype (checkpoint is the base of the roadworker)
- if (APlayerData[playerid][JobID] == 1) // Repairing speedcamera's
- {
- GameTextForPlayer(playerid, TXT_RoadworkerMissionPassed, 3000, 4); // Show a message to let the player know he finished his job
- Roadworker_EndJob(playerid); // End the current mission
- }
- if (APlayerData[playerid][JobID] == 2) // Towing broken vehicle to shredder
- Roadworker_EnterCheckpoint(playerid);
- }
- }
- return 1;
- }
- // This callback gets called when a player enters a race-checkpoint
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- // Check the player's class
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassBusDriver: // BusDriver class
- Bus_EnterRaceCheckpoint(playerid); // Process the checkpoint
- case ClassRoadWorker: // Roadworker class
- Roadworker_EnterRaceCheckpoint(playerid);
- }
- return 1;
- }
- // This callback gets called whenever a player dies
- public OnPlayerDeath(playerid, killerid, reason)
- {
- // Setup local variables
- new VictimName[24], KillerName[24], Msg[128];
- // Clear the missiontext
- TextDrawSetString(APlayerData[playerid][MissionText], " ");
- // Hide the missiontext for this player (when the player is choosing a class, it's not required to show any mission-text)
- TextDrawHideForPlayer(playerid, APlayerData[playerid][MissionText]);
- // Stop any job that may have started
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassTruckDriver: Trucker_EndJob(playerid);
- case ClassBusDriver: BusDriver_EndJob(playerid);
- case ClassPilot: Pilot_EndJob(playerid);
- case ClassPolice: Police_EndJob(playerid);
- case ClassMafia: Mafia_EndJob(playerid);
- case ClassCourier: Courier_EndJob(playerid);
- case ClassAssistance: Assistance_EndJob(playerid);
- case ClassRoadWorker: Roadworker_EndJob(playerid);
- }
- // If the player is part of a convoy,kick him from it
- Convoy_Leave(playerid);
- // If another player kills you, he'll get an extra star of his wanted level
- if (killerid != INVALID_PLAYER_ID)
- {
- // Increase the wanted level of the killer by one star
- SetPlayerWantedLevel(killerid, GetPlayerWantedLevel(killerid) + 1);
- // Get the name of the killed player and the killer
- GetPlayerName(playerid, VictimName, sizeof(VictimName));
- GetPlayerName(killerid, KillerName, sizeof(KillerName));
- // Let the killed know the police are informed about the kill
- format(Msg, 128, "{FF0000}Você matou {FFFF00}%s{FF0000}, e agora está sendo procurado pela polícia.", VictimName);
- SendClientMessage(killerid, 0xFFFFFFFF, Msg);
- // Inform all police players about the kill
- format(Msg, 128, "{00FF00}O jogador {FFFF00}%s{00FF00} matou {FFFF00}%s{00FF00}. [Objetvo]: Persiga-o e Multe-o.", KillerName, VictimName);
- Police_SendMessage(Msg);
- }
- return 1;
- }
- // This callback gets called when the player is selecting a class (but hasn't clicked "Spawn" yet)
- public OnPlayerRequestClass(playerid, classid)
- {
- TextDrawHideForPlayer(playerid, ImagemEntrada);
- SetPlayerInterior(playerid,0);
- SetPlayerFacingAngle(playerid, 90.0);
- SetPlayerPos(playerid,-1932.51,2603.14,47.36);
- SetPlayerCameraPos(playerid,-1938.92,2602.74,47.60);
- SetPlayerCameraLookAt(playerid,-1932.51,2603.14,47.36);
- // Display a short message to inform the player about the class he's about to choose
- switch (classid)
- {
- case 0, 1, 2, 3, 4, 5, 6, 7: // Classes that will be truckdrivers
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassTrucker, 3000, 4);
- // Store the class for the player (truckdriver)
- APlayerData[playerid][PlayerClass] = ClassTruckDriver;
- }
- case 8, 9: // Classes that will be bus-drivers
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassBusDriver, 3000, 4);
- // Store the class for the player (busdriver)
- APlayerData[playerid][PlayerClass] = ClassBusDriver;
- }
- case 10: // Classes that will be Pilot
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassPilot, 3000, 4);
- // Store the class for the player (pilot)
- APlayerData[playerid][PlayerClass] = ClassPilot;
- }
- case 11, 12, 13: // Classes that will be police
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassPolice, 3000, 4);
- // Store the class for the player (police)
- APlayerData[playerid][PlayerClass] = ClassPolice;
- }
- case 14, 15, 16: // Classes that will be mafia
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassMafia, 3000, 4);
- // Store the class for the player (mafia)
- APlayerData[playerid][PlayerClass] = ClassMafia;
- }
- case 17, 18: // Classes that will be courier
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassCourier, 3000, 4);
- // Store the class for the player (courier)
- APlayerData[playerid][PlayerClass] = ClassCourier;
- }
- case 19: // Classes that will be assistance
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassAssistance, 3000, 4);
- // Store the class for the player (assistance)
- APlayerData[playerid][PlayerClass] = ClassAssistance;
- }
- case 20, 21, 22: // Classes that will be roadworker
- {
- // Display the name of the class
- GameTextForPlayer(playerid, TXT_ClassRoadWorker, 3000, 4);
- // Store the class for the player (roadworker)
- APlayerData[playerid][PlayerClass] = ClassRoadWorker;
- }
- }
- return 1;
- }
- // This callback is called when the player attempts to spawn via class-selection
- public OnPlayerRequestSpawn(playerid)
- {
- new Index, Float:x, Float:y, Float:z, Float:Angle, Name[24], Msg[128];
- // Get the player's name
- GetPlayerName(playerid, Name, sizeof(Name));
- // Choose a random spawnlocation based on the player's class
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassTruckDriver:
- {
- Index = random(sizeof(ASpawnLocationsTrucker)); // Get a random array-index to chose a random spawnlocation
- x = ASpawnLocationsTrucker[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsTrucker[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsTrucker[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsTrucker[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{FF8000}O Jogador {FFFFff}%s{FF8000} entrou no server como um {FF8000}Caminhoneiro.", Name);
- }
- case ClassBusDriver:
- {
- Index = random(sizeof(ASpawnLocationsBusDriver));
- x = ASpawnLocationsBusDriver[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsBusDriver[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsBusDriver[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsBusDriver[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{00FFFF}O Jogador {FFFFff}%s{00FFFF} entrou no server como um {00FFFF}Motorista de Onibus.", Name);
- }
- case ClassPilot:
- {
- Index = random(sizeof(ASpawnLocationsPilot));
- x = ASpawnLocationsPilot[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsPilot[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsPilot[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsPilot[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{008080}O Jogador {FFFFff}%s{008080} entrou no server como um {008080}Piloto de Avião.", Name);
- }
- case ClassPolice:
- {
- // Count the number of normal players (all classes except police) and count the amount of police players
- new NormalPlayers, PolicePlayers, bool:CanSpawnAsCop = false;
- // Block this check if PlayersBeforePolice is set to 0 (this allows anyone to join as police)
- if (PlayersBeforePolice > 0)
- {
- // Loop through all players
- for (new pid; pid < MAX_PLAYERS; pid++)
- {
- // Exclude this player, as he doesn't have a class yet, he's still choosing here
- if (pid != playerid)
- {
- // Also exclude all players who are still in the class-selection screen, as they don't have a class selected yet
- if (GetPlayerInterior(pid) != 14)
- {
- // Check if this player is logged in
- if (APlayerData[pid][LoggedIn] == true)
- {
- // Count the amount of normal players and police players
- switch (APlayerData[pid][PlayerClass])
- {
- case ClassPolice:
- PolicePlayers++;
- case ClassTruckDriver, ClassBusDriver, ClassPilot, ClassMafia, ClassCourier, ClassAssistance, ClassRoadWorker:
- NormalPlayers++;
- }
- }
- }
- }
- }
- // Check if there are less police players than allowed
- if (PolicePlayers < (NormalPlayers * PlayersBeforePolice))
- CanSpawnAsCop = true; // There are less police players than allowed, so the player can choose this class
- else
- CanSpawnAsCop = false; // The maximum amount of police players has been reached, the player can't choose to be a cop
- // Check if the player isn't allowed to spawn as police
- if (CanSpawnAsCop == false)
- {
- // Let the player know the maximum amount of cops has been reached
- GameTextForPlayer(playerid, "O número máximo de COP's online foi atingido.", 5000, 4);
- SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}O número máximo de COP's online foi atingido, por favor selecione outra classe.");
- return 0; // Don't allow the player to spawn as police player
- }
- }
- // If the player has less than 100 scorepoints
- if (APlayerData[playerid][PlayerScore] < 200)
- {
- // Let the player know he needs 100 scorepoints
- GameTextForPlayer(playerid, "~r~Voce precisa de ~b~200 ~r~pontos de score, para ser um ~y~policial~r~.", 5000, 4);
- SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Você precisa ter 200 pontos de score para ser um policial.");
- return 0; // Don't allow the player to spawn as police player
- }
- // If the player has a wanted level
- if (GetPlayerWantedLevel(playerid) > 0)
- {
- // Let the player know he cannot have a wanted level to join police
- GameTextForPlayer(playerid, "Voce nao pode ser um policial enquanto estiver sendo procurado", 5000, 4);
- SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Você não pode ser um policial enquanto estiver sendo procurado.");
- return 0; // Don't allow the player to spawn as police player
- }
- Index = random(sizeof(ASpawnLocationsPolice));
- x = ASpawnLocationsPolice[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsPolice[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsPolice[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsPolice[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{0000FF}O Jogador {FFFFff}%s{0000FF} entrou no server como um Policial.", Name);
- }
- case ClassMafia:
- {
- Index = random(sizeof(ASpawnLocationsMafia));
- x = ASpawnLocationsMafia[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsMafia[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsMafia[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsMafia[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{8000FF}O Jogador {FFFFff}%s{8000FF} entrou no server como um {8000FF}Mafioso.", Name);
- }
- case ClassCourier:
- {
- Index = random(sizeof(ASpawnLocationsCourier));
- x = ASpawnLocationsCourier[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsCourier[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsCourier[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsCourier[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{FF00FF}O Jogador {FFFFff}%s{FF00FF} entrou no server como um {FF00FF}Agente dos Correios.", Name);
- }
- case ClassAssistance:
- {
- Index = random(sizeof(ASpawnLocationsAssistance));
- x = ASpawnLocationsAssistance[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsAssistance[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsAssistance[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsAssistance[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{A5ED54}O Jogador {FFFFff}%s{A5ED54} entrou no server como um Mecânico.", Name);
- }
- case ClassRoadWorker:
- {
- Index = random(sizeof(ASpawnLocationsRoadWorker));
- x = ASpawnLocationsRoadWorker[Index][SpawnX]; // Get the X-position for the spawnlocation
- y = ASpawnLocationsRoadWorker[Index][SpawnY]; // Get the Y-position for the spawnlocation
- z = ASpawnLocationsRoadWorker[Index][SpawnZ]; // Get the Z-position for the spawnlocation
- Angle = ASpawnLocationsRoadWorker[Index][SpawnAngle]; // Get the rotation-angle for the spawnlocation
- format(Msg, 128, "{FFFF80}O Jogador {FFFFff}%s{FFFF80} entrou no server como um {FFFF80}Funcionário do DNIT.", Name);
- }
- }
- // Spawn the player with his chosen skin at a random location based on his class
- SetSpawnInfo(playerid, 0, GetPlayerSkin(playerid), x, y, z, Angle, 0, 0, 0, 0, 0, 0);
- // Send the message to all players (who joined which class)
- SendClientMessageToAll(0xFFFFFFFF, Msg);
- return 1;
- }
- // This callback gets called when a vehicle respawns at it's spawn-location (where it was created)
- public OnVehicleSpawn(vehicleid)
- {
- // Set the vehicle as not-wanted by the mafia
- AVehicleData[vehicleid][MafiaLoad] = false;
- // Also reset the fuel to maximum (only for non-owned vehicles)
- if (AVehicleData[vehicleid][Owned] == false)
- AVehicleData[vehicleid][Fuel] = MaxFuel;
- // Re-apply the paintjob (if any was applied)
- if (AVehicleData[vehicleid][PaintJob] != 0)
- {
- // Re-apply the paintjob
- ChangeVehiclePaintjob(vehicleid, AVehicleData[vehicleid][PaintJob] - 1);
- }
- // Also update the car-color
- ChangeVehicleColor(vehicleid, AVehicleData[vehicleid][Color1], AVehicleData[vehicleid][Color2]);
- // Re-add all components that were installed (if they were there)
- for (new i; i < 14; i++)
- {
- // Remove all mods from the vehicle (all added mods applied by hackers will hopefully be removed this way when the vehicle respawns)
- RemoveVehicleComponent(vehicleid, GetVehicleComponentInSlot(vehicleid, i));
- // Check if the componentslot has a valid component-id
- if (AVehicleData[vehicleid][Components][i] != 0)
- AddVehicleComponent(vehicleid, AVehicleData[vehicleid][Components][i]); // Add the component to the vehicle
- }
- return 1;
- }
- // This callback is called when the vehicle leaves a mod shop
- public OnVehicleRespray(playerid, vehicleid, color1, color2)
- {
- // Let the player pay $150 for changing the color (if they have been changed)
- if ((AVehicleData[vehicleid][Color1] != color1) || (AVehicleData[vehicleid][Color2] != color2))
- {
- RewardPlayer(playerid, -150, 0);
- SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Você alterou a cor do seu veículo por R$150.");
- }
- // Save the colors
- AVehicleData[vehicleid][Color1] = color1;
- AVehicleData[vehicleid][Color2] = color2;
- // If the primary color is black, remove the paintjob
- if (color1 == 0)
- AVehicleData[vehicleid][PaintJob] = 0;
- return 1;
- }
- // This callback gets called when a player enters or exits a mod-shop
- public OnEnterExitModShop(playerid, enterexit, interiorid)
- {
- return 1;
- }
- // This callback gets called whenever a player mods his vehicle
- public OnVehicleMod(playerid, vehicleid, componentid)
- {
- // When the player changes a component of his vehicle, reduce the price of the component from the player's money
- APlayerData[playerid][PlayerMoney] = APlayerData[playerid][PlayerMoney] - AVehicleModPrices[componentid - 1000];
- // Store the component in the AVehicleData array
- AVehicleData[vehicleid][Components][GetVehicleComponentType(componentid)] = componentid;
- return 1;
- }
- // This callback gets called whenever a player VIEWS at a paintjob in a mod garage (viewing automatically applies it)
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
- {
- // Store the paintjobid for the vehicle (add 1 to the value, otherwise checking for an applied paintjob is difficult)
- AVehicleData[vehicleid][PaintJob] = paintjobid + 1;
- return 1;
- }
- // This callback gets called whenever a player enters a vehicle
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
- {
- // Setup local variables
- new engine, lights, alarm, doors, bonnet, boot, objective;
- // Check if the vehicle has fuel
- if (AVehicleData[vehicleid][Fuel] > 0)
- {
- // Start the engine and turn on the lights
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vehicleid, 1, 1, alarm, doors, bonnet, boot, objective);
- }
- // Store the player's current location and interior-id, otherwise anti-airbreak hack code could kick you
- GetPlayerPos(playerid, APlayerData[playerid][PreviousX], APlayerData[playerid][PreviousY], APlayerData[playerid][PreviousZ]);
- APlayerData[playerid][PreviousInt] = GetPlayerInterior(playerid);
- return 1;
- }
- // This callback gets called when a player exits his vehicle
- public OnPlayerExitVehicle(playerid, vehicleid)
- {
- // Setup local variables
- new engine, lights, alarm, doors, bonnet, boot, objective;
- // Check if the player is the driver of the vehicle
- if (GetPlayerVehicleSeat(playerid) == 0)
- {
- // Turn off the lights and engine
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vehicleid, 0, 0, alarm, doors, bonnet, boot, objective);
- }
- // Chech if the player is a pilot
- if (APlayerData[playerid][PlayerClass] == ClassPilot)
- {
- // If the pilot started a job --> as soon as a pilot leaves his plane while doing a job, he fails his mission
- if (APlayerData[playerid][JobStarted] == true)
- {
- // End the job (clear data)
- Pilot_EndJob(playerid);
- // Inform the player that he failed the mission
- GameTextForPlayer(playerid, TXT_FailedMission, 5000, 4);
- // Reduce the player's cash by 1000
- RewardPlayer(playerid, -1000, 0);
- }
- }
- return 1;
- }
- // This callback gets called whenever a vehicle enters the water or is destroyed (explodes)
- public OnVehicleDeath(vehicleid)
- {
- // Get the houseid to which this vehicle belongs
- new HouseID = AVehicleData[vehicleid][BelongsToHouse];
- // Check if this vehicle belongs to a house
- if (HouseID != 0)
- {
- // If the house doesn't have insurance for it's vehicles
- if (AHouseData[HouseID][Insurance] == 0)
- {
- // Delete the vehicle, clear the data and remove it from the house it belongs to
- Vehicle_Delete(vehicleid);
- // Save the house (and linked vehicles)
- HouseFile_Save(HouseID);
- }
- }
- return 1;
- }
- // This callback gets called when the player changes state
- public OnPlayerStateChange(playerid,newstate,oldstate)
- {
- // Setup local variables
- new vid, Name[24], Msg[128], engine, lights, alarm, doors, bonnet, boot, objective;
- switch (newstate)
- {
- case PLAYER_STATE_DRIVER: // Player became the driver of a vehicle
- {
- // Get the ID of the player's vehicle
- vid = GetPlayerVehicleID(playerid);
- // Get the player's name (the one who is trying to enter the vehicle)
- GetPlayerName(playerid, Name, sizeof(Name));
- // Check if the vehicle is owned
- if (AVehicleData[vid][Owned] == true)
- {
- // Check if the vehicle is owned by somebody else (strcmp will not be 0)
- if (strcmp(AVehicleData[vid][Owner], Name, false) != 0)
- {
- // Force the player out of the vehicle
- RemovePlayerFromVehicle(playerid);
- // Turn off the lights and engine
- GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
- // Let the player know he cannot use somebody else's vehicle
- format(Msg, 128, TXT_SpeedometerCannotUseVehicle, AVehicleData[vid][Owner]);
- SendClientMessage(playerid, 0xFFFFFFFF, Msg);
- }
- // Check if the vehicle is clamped
- if (AVehicleData[vid][Clamped] == true)
- {
- // Force the player out of the vehicle
- RemovePlayerFromVehicle(playerid);
- // Turn off the lights and engine
- GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
- // Let the player know he cannot use a clamped vehicle
- format(Msg, 128, TXT_SpeedometerClampedVehicle);
- SendClientMessage(playerid, 0xFFFFFFFF, Msg);
- format(Msg, 128, TXT_SpeedometerClampedVehicle2);
- SendClientMessage(playerid, 0xFFFFFFFF, Msg);
- }
- }
- // Check if the player is not a cop
- if (APlayerData[playerid][PlayerClass] != ClassPolice)
- {
- // First check if the vehicle is a static vehicle (player can still use a bought cop-car that he bought in his house,
- // as a bought vehicle isn't static)
- if (AVehicleData[vid][StaticVehicle] == true)
- {
- // Check if the entered vehicle is a cop vehicle
- switch (GetVehicleModel(vid))
- {
- case VehiclePoliceLSPD, VehiclePoliceSFPD, VehiclePoliceLVPD, VehicleHPV1000, VehiclePoliceRanger:
- {
- // Force the player out of the vehicle
- RemovePlayerFromVehicle(playerid);
- // Turn off the lights and engine
- GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
- // Let the player know he cannot use a cop car
- SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Você não pode usar um veículo policial.");
- }
- }
- }
- }
- // Check if the player is not a pilot
- if (APlayerData[playerid][PlayerClass] != ClassPilot)
- {
- // First check if the vehicle is a static vehicle (player can still use a bought plane that he bought in his house,
- // as a bought vehicle isn't static)
- if (AVehicleData[vid][StaticVehicle] == true)
- {
- // Check if the entered vehicle is a plane or helicopter vehicle
- switch (GetVehicleModel(vid))
- {
- case VehicleShamal, VehicleNevada, VehicleStuntPlane, VehicleDodo, VehicleMaverick, VehicleCargobob:
- {
- // Force the player out of the vehicle
- RemovePlayerFromVehicle(playerid);
- // Turn off the lights and engine
- GetVehicleParamsEx(vid, engine, lights, alarm, doors, bonnet, boot, objective);
- SetVehicleParamsEx(vid, 0, 0, alarm, doors, bonnet, boot, objective);
- // Let the player know he cannot use a cop car
- SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Você não pode usar um veículo de piloto.");
- }
- }
- }
- }
- }
- }
- return 1;
- }
- // This callback gets called whenever a player presses a key
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- // Debug the keypresses
- // DebugKeys(playerid, newkeys, oldkeys);
- // ****************************************************************************************
- // NOTE: the keys are messed up, so the code may look strange when testing for certain keys
- // ****************************************************************************************
- // Fining and jailing players when you're police and press the correct keys
- // Check the class of the player
- switch (APlayerData[playerid][PlayerClass])
- {
- case ClassPolice:
- {
- // If the police-player pressed the RMB key (AIM key) when OUTSIDE his vehicle
- if (((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
- Police_FineNearbyPlayers(playerid);
- // If the police-player pressed the LCTRL (SECUNDAIRY key) key when INSIDE his vehicle
- if (((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
- Police_WarnNearbyPlayers(playerid);
- }
- case ClassAssistance:
- {
- // If the assistance-player pressed the RMB key (AIM key) when OUTSIDE his vehicle
- if (((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE)) && (GetPlayerVehicleID(playerid) == 0))
- Assistance_FixVehicle(playerid);
- // If the police-player pressed the LCTRL (SECUNDAIRY key) key when INSIDE his vehicle
- if (((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION)) && (GetPlayerVehicleID(playerid) != 0))
- Assistance_FixOwnVehicle(playerid);
- }
- }
- // Trying to attach the closest vehicle to the towtruck when the player pressed FIRE when inside a towtruck
- // Check if the player is inside a towtruck
- if(GetVehicleModel(GetPlayerVehicleID(playerid)) == VehicleTowTruck)
- {
- // Check if the player pushed the fire-key
- if(newkeys & KEY_FIRE)
- {
- // Get the vehicle-id of the closest vehicle
- new closest = GetClosestVehicle(playerid);
- if(VehicleToPlayer(playerid, closest) < 10) // Check if the closest vehicle is within 10m from the player
- AttachTrailerToVehicle(closest, GetPlayerVehicleID(playerid)); // Attach the vehicle to the towtruck
- }
- }
- // Refuel a vehicle when driving a vehicle and pressing the HORN key
- // Check if the player presses the HORN key
- if ((newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH))
- {
- // Check if the player is driving a vehicle
- if (GetPlayerVehicleSeat(playerid) == 0)
- {
- // Loop through all ARefuelPickups
- for (new i; i < sizeof(ARefuelPickups); i++)
- {
- // Check if the player is in range of a refuelpickup
- if(IsPlayerInRangeOfPoint(playerid, 2.5, ARefuelPickups[i][pux], ARefuelPickups[i][puy], ARefuelPickups[i][puz]))
- {
- // Show a message that the player's vehicle is refuelling
- GameTextForPlayer(playerid, TXT_Refuelling, 3000, 4);
- // Don't allow the player to move again (the timer will allow it after refuelling)
- TogglePlayerControllable(playerid, 0);
- // Start a timer (let the player wait until the vehicle is refuelled)
- SetTimerEx("RefuelVehicle", 5000, false, "i", playerid);
- // Stop the search
- break;
- }
- }
- }
- }
- return 1;
- }
- forward VehicleToPlayer(playerid,vehicleid);
- // Get the distance between the vehicle and the player
- public VehicleToPlayer(playerid, vehicleid)
- {
- // Setup local variables
- new Float:pX, Float:pY, Float:pZ, Float:cX, Float:cY, Float:cZ, Float:distance;
- // Get the player position
- GetPlayerPos(playerid, pX, pY, pZ);
- // Get the vehicle position
- GetVehiclePos(vehicleid, cX, cY, cZ);
- // Calculate the distance
- distance = floatsqroot(floatpower(floatabs(floatsub(cX, pX)), 2) + floatpower(floatabs(floatsub(cY, pY)), 2) + floatpower(floatabs(floatsub(cZ, pZ)), 2));
- // Return the distance to the calling routine
- return floatround(distance);
- }
- forward GetClosestVehicle(playerid);
- // Find the vehicle closest to the player
- public GetClosestVehicle(playerid)
- {
- // Setup local variables
- new Float:distance = 99999.000+1, Float:distance2, result = -1;
- // Loop through all vehicles
- for(new i = 0; i < MAX_VEHICLES; i++)
- {
- // First check if the player isn't driving the current vehicle that needs to be checked for it's distance to the player
- if (GetPlayerVehicleID(playerid) != i)
- {
- // Get the distance between player and vehicle
- distance2 = VehicleToPlayer(playerid, i);
- // Check if the distance is smaller than the previous distance
- if(distance2 < distance)
- {
- // Store the distance
- distance = distance2;
- // Store the vehicle-id
- result = i;
- }
- }
- }
- // Return the vehicle-id of the closest vehicle
- return result;
- }
- // This function is used to debug the key-presses
- stock DebugKeys(playerid, newkeys, oldkeys)
- {
- // Debug keys
- if ((newkeys & KEY_FIRE) && !(oldkeys & KEY_FIRE))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_FIRE key");
- if ((newkeys & KEY_ACTION) && !(oldkeys & KEY_ACTION))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_ACTION key");
- if ((newkeys & KEY_CROUCH) && !(oldkeys & KEY_CROUCH))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_CROUCH key");
- if ((newkeys & KEY_SPRINT) && !(oldkeys & KEY_SPRINT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_SPRINT key");
- if ((newkeys & KEY_SECONDARY_ATTACK) && !(oldkeys & KEY_SECONDARY_ATTACK))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_SECONDARY_ATTACK key");
- if ((newkeys & KEY_JUMP) && !(oldkeys & KEY_JUMP))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_JUMP key");
- if ((newkeys & KEY_LOOK_RIGHT) && !(oldkeys & KEY_LOOK_RIGHT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_LOOK_RIGHT key");
- if ((newkeys & KEY_HANDBRAKE) && !(oldkeys & KEY_HANDBRAKE))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_HANDBRAKE key");
- if ((newkeys & KEY_LOOK_LEFT) && !(oldkeys & KEY_LOOK_LEFT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_LOOK_LEFT key");
- if ((newkeys & KEY_SUBMISSION) && !(oldkeys & KEY_SUBMISSION))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_SUBMISSION key");
- if ((newkeys & KEY_LOOK_BEHIND) && !(oldkeys & KEY_LOOK_BEHIND))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_LOOK_BEHIND key");
- if ((newkeys & KEY_WALK) && !(oldkeys & KEY_WALK))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_WALK key");
- if ((newkeys & KEY_ANALOG_UP) && !(oldkeys & KEY_ANALOG_UP))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_ANALOG_UP key");
- if ((newkeys & KEY_ANALOG_DOWN) && !(oldkeys & KEY_ANALOG_DOWN))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_ANALOG_DOWN key");
- if ((newkeys & KEY_ANALOG_LEFT) && !(oldkeys & KEY_ANALOG_LEFT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_ANALOG_LEFT key");
- if ((newkeys & KEY_ANALOG_RIGHT) && !(oldkeys & KEY_ANALOG_RIGHT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_ANALOG_RIGHT key");
- if ((newkeys & KEY_UP) && !(oldkeys & KEY_UP))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_UP key");
- if ((newkeys & KEY_DOWN) && !(oldkeys & KEY_DOWN))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_DOWN key");
- if ((newkeys & KEY_LEFT) && !(oldkeys & KEY_LEFT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_LEFT key");
- if ((newkeys & KEY_RIGHT) && !(oldkeys & KEY_RIGHT))
- SendClientMessage(playerid, 0x0000FFFF, "You pressed the KEY_RIGHT key");
- return 1;
- public timed(playerid)
- {
- new str2[128];
- new hour;
- new minute;
- new second;
- gettime(hour,minute,second);
- format(str2, sizeof(str2), "%d:%d:%d", hour, minute, second);
- TextDrawSetString(Text:txtTimeDisp, str2);
- SetWorldTime(hour+3);
- }
- stock IsABike(vehicleid)
- {
- new result;
- new model = GetVehicleModel(vehicleid);
- switch(model)
- {
- case 509, 481, 510, 462, 448, 581, 522, 461, 521, 523, 463, 586, 468, 471: result = model;
- default: result = 0;
- }
- return result;
- }
- public Climas()
- {
- new cl = random(13);
- if(cl == 0) { SetWeather(0);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Dia Limpo, Mínima de {0342F8}22°C{FFFFAF}, Máxima de {F80303}26°C{FFFFAF}."); }
- if(cl == 1) { SetWeather(1);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Clima Seco, Mínima de {0342F8}24°C{FFFFAF}, Máxima de {F80303}28°C{FFFFAF}."); }
- if(cl == 2) { SetWeather(3);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Ventos Fortes, Mínima de {0342F8}19°C{FFFFAF}, Máxima de {F80303}22°C{FFFFAF}."); }
- if(cl == 3) { SetWeather(7);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Tempo Nublado com Ventos fortes, Mínima de {0342F8}15°C{FFFFAF}, Máxima de {F80303}18°C{FFFFAF}."); }
- if(cl == 4) { SetWeather(8);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Tempo Chuvoso com Ventos fortes, Mínima de {0342F8}12°C{FFFFAF}, Máxima de {F80303}15°C{FFFFAF}."); }
- if(cl == 5) { SetWeather(9);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Neblina forte, Mínima de {0342F8}2°C{FFFFAF}, Máxima de {F80303}5°C{FFFFAF}."); }
- if(cl == 6) { SetWeather(11);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Céu Limpo, Mínima de {0342F8}22°C{FFFFAF}, Máxima de {F80303}26°C{FFFFAF}."); }
- if(cl == 7) { SetWeather(12);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Nublado com Ventos fracos, Mínima de {0342F8}15°C{FFFFAF}, Máxima de {F80303}18°C{FFFFAF}."); }
- if(cl == 8) { SetWeather(13);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Céu amarelado, Mínima de {0342F8}19°C{FFFFAF}, Máxima de {F80303}21°C{FFFFAF}."); }
- if(cl == 9) { SetWeather(15);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Tempo Nublado, Mínima de {0342F8}12°C{FFFFAF}, Máxima de {F80303}15°C{FFFFAF}."); }
- if(cl == 10) { SetWeather(16);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Chuva Forte, Cuidado com a pista escorregadia, Mínima de {0342F8}4°C{FFFFAF}, Máxima de {F80303}7°C{FFFFAF}."); }
- if(cl == 11) { SetWeather(17);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Céu Alaranjado, Mínima de {0342F8}11°C{FFFFAF}, Máxima de {F80303}14°C{FFFFAF}."); }
- if(cl == 12) { SetWeather(19);SendClientMessageToAll(CLIMATEMPO, "[Rádio] Neblina Densa com Vento forte, Mínima de {0342F8}-2°C{FFFFAF}, Máxima de {F80303}1°C{FFFFAF}."); }
- }
- stock GetOnLinePlayers()
- {
- new OnLine;
- for(new i, g = GetMaxPlayers(); i < g; i++)
- if(IsPlayerConnected(i))
- OnLine++;
- return OnLine;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement