All pastes #884702 Raw Edit

Stuff

public text v1 · immutable
#884702 ·published 2008-01-30 15:23 UTC
rendered paste body
//-----------------------------Credits go to:
//Some of the SF Classes by Cam
//Selection Screen Sounds by CodeMaster
//DM Messages by Yellowblood
//Xtreme Vehicle Management + Streamer by tAxI
//Multi Language Code by Yom
//Race Script by Yagu
//Kapils Instant House Constructions by Kapil
//Gang script taken from Jax's LVDM ~MoneyGrub(+LandGrab)
//Admin System by Xtreme - Incorporated by [SP]JESTER and jthebeast2007
//[CBK]MoNeYPiMp Made this
/*------------------------MULTI LANGUAGE FORMAT EXAMPLE!!!----------------------
    if((strcmp(cmdtext,"/help",true) == 0)||
	(strcmp(cmdtext,"/aide",true) == 0))
   	{
        switch (Language[playerid])
        {
            case 0:
            {
                SendClientMessage(playerid,0xFFD400AA,"HELP:");
                SendClientMessage(playerid,0xFFD400AA,"Type /lock to close your vehicle.");
                SendClientMessage(playerid,0xFFD400AA,"Type /unlock to open your vehicle.");
            }
            case 1:
            {
                SendClientMessage(playerid,0xFFD400AA,"AIDE:");
                SendClientMessage(playerid,0xFFD400AA,"Tape /lock pour fermer ton vehicule.");
                SendClientMessage(playerid,0xFFD400AA,"Tape /unlock pour ouvrir ton vehicule.");
            }
        }
        return 1;
    }
*/
//===============================Include Files==================================
#include <a_samp>
#include <dudb>
#include "xadmin/XtremeAdmin.inc"
#pragma tabsize 4
#pragma dynamic 568000
#pragma unused AddStaticHouse,LoadPly,OnPlayerEnterHousee,SavePly,SetHouseCost,GetHouseOwner

#define V_FILE_LOAD "SYS_SETUP/vehicles_stream_setup.PiMp"
#define B_FILE_LOAD "SYS_SETUP/businesses_stream_setup.PiMp"
#define V_FILE_SAVE "SYS_SAVE/vehicles_stream_perm.PiMp"
#define B_FILE_SAVE "SYS_SAVE/businesses_stream_perm.PiMp"
#define P_FILE "xadmin/Users/%s.ini"
#define B_ICON 1272
#define B_ICON_TYPE 2
#define PD_TIMER 1800000
#define CALL_UNIT_COST 1
#define DEFAULT_OWNER "[null]"
#define B_LIMIT 2000
#define RunOutTime 30000

#define COLOR_AQUA 0x7CFC00AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_INDIGO 0x4B00B0AA
#define yellow 0xFFFF00AA
#define green 0x33FF33AA
#define red 0xFF0000AA
#define white 0xFFFFFFAA
#define pink 0xCCFF00FFAA
#define blue 0x00FFFFAA
#define grey 0xC0C0C0AA
//===============================Class Defines==================================
#define TEAM_WORKER 0
#define TEAM_PIMP 1
#define TEAM_GOLFER 2
#define TEAM_TRIAD 3
#define TEAM_ARMY 4
#define TEAM_VALET 5
#define TEAM_MEDIC 6
#define TEAM_FBI 7
#define TEAM_CHICKEN 8
#define TEAM_RICH 9
#define TEAM_PILOT 10
#define TEAM_DANANG 11

#define TEAM_LVBALLA 12
#define TEAM_LVGROVE 13
#define TEAM_LVVAGO 14
#define TEAM_LVAZTEC 15
#define TEAM_LVTRIAD 16
#define TEAM_LVMEDIC 17
#define TEAM_LVFIRE 18
#define TEAM_LVCOP 19
#define TEAM_LVARMY 20
#define TEAM_LVCIV 21

#define TEAM_LSCOP 22
#define TEAM_LSCOP2 23
#define TEAM_LSGROVE 24
#define TEAM_LSGROVE2 25
#define TEAM_LSVAGO 26
#define TEAM_LSVAGO2 27
#define TEAM_LSAZTECA 28
#define TEAM_LSAZTECA2 29
#define TEAM_LSBALLA 30
#define TEAM_LSBALLA2 31
#define TEAM_LSPIZZABOY 32
//==============Experimental Streamer System Tokens and Symbols=================
#define MAX_MODEL_NUMBER 620
#define MAX_STREAM_VEHICLES 2500
#define MAX_ACTIVE_VEHICLES 695
#define MAX_ACTIVE_PICKUPS 250
#define MAX_ACTIVE_MODELS 68
#define MAX_ACTIVE_MM_ICONS 32
#define DEFAULT_SPAWN_DIST 200
#define PICKUP_TYPE_BIZ 2
#define PICKUP_TYPE_BANK 3
//=====================Xadmin===================================================
static Menu:GiveCar, Menu:Weather,ServerWeather = 0; forward PingKick();
//==============================================================================
new Vstreamcount = 0;
new vehused[MAX_ACTIVE_VEHICLES];
new MMstreamcount[MAX_PLAYERS];
new MIactive[MAX_PLAYERS][B_LIMIT];
new MIidnum[MAX_PLAYERS][B_LIMIT];
new PUstreamcount = 0;
new streamidn[MAX_PLAYERS];
new vstreamid[MAX_PLAYERS];
new avstream [MAX_ACTIVE_VEHICLES];

enum mmapinfo
{
	mmodel,
	Float:mx_spawn,
	Float:my_spawn,
	Float:mz_spawn,
	Float:mspawndist,
	mvalid,
};
new MapIconInfo[B_LIMIT][mmapinfo];

enum PInfo
{
	model,
	Float:x_spawn,
	Float:y_spawn,
	Float:z_spawn,
	spawned,
	idnum,
	valid,
	type,
};
new PickupInfo[B_LIMIT][PInfo];
//================================Text Draws====================================
new Text:vehiclehpbar[12];
new Text:stxt[MAX_PLAYERS];
new sstring[256];
//===============================Gang Defines===================================
#define MAX_GANGS 			32
#define MAX_GANG_MEMBERS	6
#define MAX_GANG_NAME       16
new gangMembers[MAX_GANGS][MAX_GANG_MEMBERS];
new gangNames[MAX_GANGS][MAX_GANG_NAME];
new gangInfo[MAX_GANGS][3]; //0-created,1-members,2-color
new gangBank[MAX_GANGS];
new playerGang[MAX_PLAYERS];
new gangInvite[MAX_PLAYERS];
forward PlayerLeaveGang(playerid);
//===========================Race Defines/Forwards==============================
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#define MAX_RACECHECKPOINTS 64 // Change if you want more room for checkpoints than this
#define MAX_BUILDERS 4 // Change if you want more builderslots than this
#define RACEFILE_VERSION 2 // !!! DO NOT CHANGE !!!
#define MENUSYSTEM // Enable menus, comment to disable.

new MajorityDelay = 120; // Default delay to wait for other racers once half are ready (can be changed ingame via Admin menu)
new RRotation = -1;      // Is automatic Race Rotation enabled by defaul? (can be changed ingame via Admin menu) (-1 = disabled, 0+ = enabled)
new RRotationDelay = 300000; // How often will we poll for new race start if RRotation is enabled? (Default: 5 minutes, can't be changed IG)
new BuildAdmin = 1; //Require admin privileges for building races? 1)  yes, 0) no. (Can be changed ingame in Admin menu)
new RaceAdmin = 1;  //Require admin privileges for starting races? 1)  yes, 0) no. (Can be changed ingame in Admin menu)
new PrizeMode=0;        //Mode for winnings: 0 - Fixed, 1 - Dynamic, 2 - Entry fee, 3 - EF+F, 4 EF+D [Admin menu ingame]
new Prize=30000;        //Fixed prize sum (15,000$ for winner, 12,5000$ for 2nd and 10,000$ for 3rd) [Admin menu ingame]
new DynaMP=1;           //Dynamic prize multiplier. (Default: 1$/m) [Admin menu ingame]
new JoinFee=1000;       //Amount of $ it costs to /join a race      [Admin menu ingame]

#if defined MENUSYSTEM
forward RefreshMenuHeader(playerid,Menu:menu,text[]);
new Menu:MAdmin, Menu:MPMode, Menu:MPrize, Menu:MDyna, Menu:MBuild, Menu:MLaps;
new Menu:MRace, Menu:MRacemode, Menu:MFee, Menu:MCPsize, Menu:MDelay;
#endif

#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA

forward RaceRotation();
forward LockRacers();
forward UnlockRacers();
forward SaveScores();   				// After race, if new best times have been made, saves them.
forward GetRaceTick(playerid);			// Gets amount of ticks the player was racing
forward GetLapTick(playerid); 		 	// Gets amount of ticks the player spend on the lap
forward ReadyRefresh();      	  		// Check the /ready status of players and start the race when ready
forward RaceSound(playerid,sound);      // Plays <sound> for <playerid>
forward BActiveCP(playerid,sele);       // Gives the player selected checkpoint
forward endrace();                      // Ends the race, whether it ended normally or by /endrace. Cleans the variables.
forward countdown();                    // Handles the countdown
forward mscountdown();                  //Majority Start countdown handler
forward rstrtok(const string[],&index);
forward SetNextCheckpoint(playerid);    // Gives the next checkpoint for the player during race
forward CheckBestLap(playerid, laptime);	// Check if <laptime> is better than any of the ones in highscore list, and update.
forward CheckBestRace(playerid,racetime);   // Check if <racetime> is better than any of the ones in highscore list, and update.
forward ChangeLap(playerid);            // Change player's lap, print out time and stuff.
forward SetRaceCheckpoint(playerid,target,next);    // Race-mode checkpoint setter
forward SetBRaceCheckpoint(playerid,target,next);   // Builder-mode checkpoint  setter
forward LoadTimes(playerid,timemode,tmp[]);     // bestlap and bestrace-parameter race loader
forward IsNotAdmin(playerid);          // Is the player admin, if no, return 1 with an error message.
forward GetBuilderSlot(playerid);   // Get next free builderslot, return 0 if none available
forward b(playerid); 		       // Quick and dirty fix for the BuilderSlots
forward Float:Distance(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2);
forward clearrace(playerid);
forward startrace();
forward LoadRace(tmp[]);
forward CreateRaceMenus();
// General variables
new RotationTimer;
new ystring[128];    // ystring
new CBuilder[MAX_PLAYER_NAME], CFile[64], CRaceName[128];        //Creator of the race and the filename, for score changing purposes.
// Racing-related variables
new Pot=0;              //Join fees go here
new Ranking;            //Finishing order for prizes
new PrizeMP;            //Prize multiplier
new Countdown;          //Countdown timer
new cd;                 //Countdown time
new MajStart=0;         //Status of the Majority Start timer
new MajStartTimer;      //Majority Start timer
new mscd;               //Majority Start time
new RaceActive;         //Is a race active?
new RaceStart;          //Has race started?
new Float:RaceCheckpoints[MAX_RACECHECKPOINTS][3];  //Current race CP array
new LCurrentCheckpoint;                             //Current race array pointer
new CurrentCheckpoint[MAX_PLAYERS];                 //Current race array pointer array :V
new CurrentLap[MAX_PLAYERS];                        //Current lap array
new RaceParticipant[MAX_PLAYERS];                   //Has the player /joined the race
  // \_values: 0 - not in race, 1 - joined, 2 - arrived to start CP, 3 - /ready, 4 - racing, 5 - Last CP
new Participants;                                   //Amount of participants
new PlayerVehicles[MAX_PLAYERS];                    //For slapping the player back in their vehicle.
new ORacelaps, ORacemode;   //Saves the laps/mode from file in case they aren't changed
new OAirrace, Float:OCPsize;
new Racelaps, Racemode;		//If mode/laps has been changed, the new scores won't be saved.
new ScoreChange;            //Flag for new best times, so they are saved.
new RaceTick;               //Startime of the race
new LastLapTick[MAX_PLAYERS];       //Array that stores the times when players started the lap
new TopRacers[6][MAX_PLAYER_NAME]; // Stores 5 top scores, 6th isn't
new TopRacerTimes[6];              // saved to file, used to simplify
new TopLappers[6][MAX_PLAYER_NAME];// for() loops on CheckBestLap and
new TopLapTimes[6];                // CheckBestRace.
new Float:CPsize;                        // Checkpoint size for the race
new Airrace;                       // Is the race airrace?
new Float:RLenght, Float:LLenght; //Lap lenght and race lenght
// Building-related variables
new BCurrentCheckpoints[MAX_BUILDERS];               //Buildrace array pointers
new BSelectedCheckpoint[MAX_BUILDERS];               //Selected checkpoint during building
new RaceBuilders[MAX_PLAYERS];                       //Who is building a race?
new BuilderSlots[MAX_BUILDERS];                      //Stores the racebuilder pids
new Float:BRaceCheckpoints[MAX_BUILDERS][MAX_RACECHECKPOINTS][3]; //Buildrace CP array
new Bracemode[MAX_BUILDERS];
new Blaps[MAX_BUILDERS];
new Float:BCPsize[MAX_BUILDERS];
new BAirrace[MAX_BUILDERS];
//======================KIHC Statements/Forwards/Defines========================
new Float:HIX1[150];
new Float:HIY1[150];
new Float:HIZ1[150];
new Float:HOX1[150];
new Float:HOY1[150];
new Float:HOZ1[150];
new HII1[250];
new HDD[256];
new PIH1[200];
new hidd = 0;
new HP1[150];
new Menu:Hmen1;
new Menu:Hexit1;

forward GetHouseCost(houseid);
forward SetHouseOwner(houseid,hpname[]);

forward opem(playerid);
forward ogmi();
forward opct(playerid,cmdtext[]);
forward opsm(playerid,row);
forward oppp(playerid,pickupid);
#if defined MIC_INCLUDED
#endinput
#else
#endif
//==================================Forwards====================================
forward IsPlayerNameOnline(compname[]);
forward ParkVehicle(vehicleid);
forward resetmessage();
forward resetcount();
forward announcer();
forward CheckSpeedo();
forward BackupInfo();
forward GetDriverID(vehicleid);
forward SaveComponent(streamid,componentid);
forward SavePaintjob(streamid,paintjobid);
forward SaveColors(streamid,color1,color2);
forward PhoneCut();
forward KickTimer(playerid);
forward CallVehicleToPlayer(playerid);
forward ctimer();
forward ResetText(playerid);
forward PayDay();
forward VHPBarUpdate();
forward vehiclestreamer();
forward pickupstreamer();
forward minimapstreamer();
forward DeathProcess(vehicleid);
forward ModVehicle(streamid);
forward isPlayerInArea(playerID, Float:data[4]);
forward SystemMsg(playerid,msg[]);
forward GameModeExitFunc();
forward GetPlayers();
forward SetPlayerRandomSpawn(playerid);
//=================================Info stuff===================================
enum bInfo
{
	name[256],
	owner[256],
	bought,
	cost,
	profit,
	cashbox,
 	Float:xpos,
    Float:ypos,
    Float:zpos,
}

new BizInfo[B_LIMIT][bInfo];

enum pInfo
{
	name[256],
	vowned,
	vowner,
	bowner,
	bowned,
	pass,
	pcash,
	bank,
	logged,
	admin,
	team,
	frozen,
	jailed,
	vhpb,
}

new PlayerInfo[MAX_PLAYERS][pInfo];

enum vInfo
{
	limbo,
	fspawn,
	reset,
	model,
	Float:x_spawn,
	Float:y_spawn,
	Float:z_spawn,
 	Float:za_spawn,
 	color_1,
 	color_2,
 	owner[256],
	vehiclecost,
	vused,
	bought,
	secure,
	asecure,
	buybar,
	name[256],
	spawned,
	idnum,
	Float:spawndist,
 	valid,
	mod1,
	mod2,
	mod3,
	mod4,
	mod5,
	mod6,
	mod7,
	mod8,
	mod9,
	mod10,
	mod11,
	mod12,
	mod13,
	mod14,
	mod15,
	mod16,
	mod17,
	paintjob,
 	modding,
};

new bizmsg[MAX_PLAYERS];
new VehicleInfo[MAX_STREAM_VEHICLES][vInfo];
new bizcount = 0;
new vehcount = 0;
//============================Gang Zone Teams defines===========================
new Worker;
new Pimp;
new Golfer;
new Triad;
new Army;
new Valet;
new Medic;
new FBI;
new Chicken;
new Rich;
new Pilot;
new Pilot1;
new Pilot2;
new DaNang;
//============================Kill Timer Defines================================
new checktimer;
new backtimer;
new phonetimer;
new counttimer;
new paytimer;
new vstimer;
new mmstimer;
new pstimer;
//==============================Menu Defines====================================
new Menu:vehiclemain;
new Menu:playervm;
new Menu:buysell;
new Menu:secure1;
new Menu:secure2;
new Menu:templock;
new Menu:adminm;
new Menu:asecure1;
new Menu:asecure2;
new Menu:speedom;
new Menu:buyable;
new Menu:healthbar;
//================================Vehicle Defines===============================
new VehicleName[212][0] = {
   "Landstalker",
   "Bravura",
   "Buffalo",
   "Linerunner",
   "Pereniel",
   "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", //artict1
   "Previon",
   "Coach",
   "Cabbie",
   "Stallion",
   "Rumpo",
   "RC Bandit",
   "Romero",
   "Packer",
   "Monster Truck",
   "Admiral",
   "Squalo",
   "Seasparrow",
   "Pizzaboy",
   "Tram",
   "Trailer", //artict2
   "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", //hotrina
   "Hotring Racer", //hotrinb
   "Bloodring Banger",
   "Rancher",
   "Super GT",
   "Elegant",
   "Journey",
   "Bike",
   "Mountain Bike",
   "Beagle",
   "Cropdust",
   "Stunt",
   "Tanker", //petro
   "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", //firela
   "Hustler",
   "Intruder",
   "Primo",
   "Cargobob",
   "Tampa",
   "Sunrise",
   "Merit",
   "Utility",
   "Nevada",
   "Yosemite",
   "Windsor",
   "Monster Truck", //monstera
   "Monster Truck", //monsterb
   "Uranus",
   "Jester",
   "Sultan",
   "Stratum",
   "Elegy",
   "Raindance",
   "RC Tiger",
   "Flash",
   "Tahoma",
   "Savanna",
   "Bandito",
   "Freight", //freiflat
   "Trailer", //streakc
   "Kart",
   "Mower",
   "Duneride",
   "Sweeper",
   "Broadway",
   "Tornado",
   "AT-400",
   "DFT-30",
   "Huntley",
   "Stafford",
   "BF-400",
   "Newsvan",
   "Tug",
   "Trailer", //petrotr
   "Emperor",
   "Wayfarer",
   "Euros",
   "Hotdog",
   "Club",
   "Trailer", //freibox
   "Trailer", //artict3
   "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", //bagboxa
   "Luggage Trailer", //bagboxb
   "Stair Trailer", //tugstair
   "Boxville",
   "Farm Plow", //farmtr1
   "Utility Trailer" //utiltr1
};

new	heavycar[24][0] = {
	{406},
	{444},
	{556},
	{557},
	{573},
	{601},
	{407},
	{427},
	{433},
	{434},
	{499},
	{498},
	{482},
	{431},
	{524},
	{578},
	{455},
	{403},
	{414},
	{443},
	{515},
	{428},
	{408},
	{456}
};
new	boat[11][0] = {
	{472},
	{473},
	{493},
	{595},
	{484},
	{430},
	{453},
	{452},
	{446},
	{454},
	{539}
};
new	mbike[11][0] = {
	{581},
	{521},
	{462},
	{463},
	{468},
	{471},
	{586},
	{522},
	{523},
	{461},
	{448}
};
new	pbike[3][0] = {
	{481},
	{509},
	{510}
};
new	splane[6][0] = {
	{593},
	{512},
	{513},
	{460},
	{464},
	{465}
};
new	mplane[2][0] = {
	{519},
	{511}
};
new	lplane[2][0] = {
	{553},
	{592}
};
new milair[4][0] = {
	{520},
	{476},
	{447},
	{425}
};
new sheli[4][0] = {
	{487},
	{488},
	{469},
	{497}
};
new lheli[3][0] = {
	{417},
	{548},
	{563}
};
//==============================Important vehicle defines=======================
new gPlayerClass[MAX_PLAYERS];
new tmpname[256];
new cCount[MAX_PLAYERS];
new passenger[MAX_PLAYERS];
new speedo[MAX_PLAYERS];
new aMessage[MAX_PLAYERS];
new tempid[MAX_PLAYERS];
new lockmess[MAX_STREAM_VEHICLES];
new securemess[MAX_STREAM_VEHICLES];
new carmess[999];

enum SavePlayerPosEnum
{
    Float:LastX,
    Float:LastY,
    Float:LastZ
}
new SavePlayerPos[MAX_PLAYERS][SavePlayerPosEnum];
//===============================Tuning Stuff===================================
new Float:ta, Float:tb, Float:tc;
new PlayerInterior[MAX_PLAYERS];
new tuned;
new cseconds,cstring[256];
new spoiler[20][0] = {
	{1000},
	{1001},
	{1002},
	{1003},
	{1014},
	{1015},
	{1016},
	{1023},
	{1058},
	{1060},
	{1049},
	{1050},
	{1138},
	{1139},
	{1146},
	{1147},
	{1158},
	{1162},
	{1163},
	{1164}
};

new nitro[3][0] = {
    {1008},
    {1009},
    {1010}
};

new fbumper[23][0] = {
    {1117},
    {1152},
    {1153},
    {1155},
    {1157},
    {1160},
    {1165},
    {1167},
    {1169},
    {1170},
    {1171},
    {1172},
    {1173},
    {1174},
    {1175},
    {1179},
    {1181},
    {1182},
    {1185},
    {1188},
    {1189},
    {1192},
    {1193}
};

new rbumper[22][0] = {
    {1140},
    {1141},
    {1148},
    {1149},
    {1150},
    {1151},
    {1154},
    {1156},
    {1159},
    {1161},
    {1166},
    {1168},
    {1176},
    {1177},
    {1178},
    {1180},
    {1183},
    {1184},
    {1186},
    {1187},
    {1190},
    {1191}
};

new exhaust[28][0] = {
    {1018},
    {1019},
    {1020},
    {1021},
    {1022},
    {1028},
    {1029},
    {1037},
    {1043},
    {1044},
    {1045},
    {1046},
    {1059},
    {1064},
    {1065},
    {1066},
    {1089},
    {1092},
    {1104},
    {1105},
    {1113},
    {1114},
    {1126},
    {1127},
    {1129},
    {1132},
    {1135},
    {1136}
};

new bventr[2][0] = {
    {1042},
    {1044}
};

new bventl[2][0] = {
    {1043},
    {1045}
};

new bscoop[4][0] = {
	{1004},
	{1005},
	{1011},
	{1012}
};

new rscoop[13][0] = {
    {1006},
    {1032},
    {1033},
    {1035},
    {1038},
    {1053},
    {1054},
    {1055},
    {1061},
    {1067},
    {1068},
    {1088},
    {1091}
};

new lskirt[21][0] = {
    {1007},
    {1026},
    {1031},
    {1036},
    {1039},
    {1042},
    {1047},
    {1048},
    {1056},
    {1057},
    {1069},
    {1070},
    {1090},
    {1093},
    {1106},
    {1108},
    {1118},
    {1119},
    {1133},
    {1122},
    {1134}
};

new rskirt[21][0] = {
    {1017},
    {1027},
    {1030},
    {1040},
    {1041},
    {1051},
    {1052},
    {1062},
    {1063},
    {1071},
    {1072},
    {1094},
    {1095},
    {1099},
    {1101},
    {1102},
    {1107},
    {1120},
    {1121},
    {1124},
    {1137}
};

new hydraulics[1][0] = {
    {1087}
};

new base[1][0] = {
    {1086}
};

new rbbars[2][0] = {
    {1109},
    {1110}
};

new fbbars[2][0] = {
    {1115},
    {1116}
};

new wheels[17][0] = {
    {1025},
    {1073},
    {1074},
    {1075},
    {1076},
    {1077},
    {1078},
    {1079},
    {1080},
    {1081},
    {1082},
    {1083},
    {1084},
    {1085},
    {1096},
    {1097},
    {1098}
};

new lights[2][0] = {
	{1013},
	{1024}
};
//===============================Phone Stuff====================================
new Calling[MAX_PLAYERS];
new Answered[MAX_PLAYERS];
new Callerid[MAX_PLAYERS];

new Float:Pickup[3][3] = {
{-22.2549,-55.6575,1003.5469},//banks
{-23.0664,-90.0882,1003.5469},
{-33.9593,-29.0792,1003.5573}
};
//===============================Random LV Spawns===============================
new iSpawnSet[MAX_PLAYERS];
new Float:gRandomPlayerSpawns[23][3] = {
{1958.3783,1343.1572,15.3746},
{2199.6531,1393.3678,10.8203},
{2483.5977,1222.0825,10.8203},
{2637.2712,1129.2743,11.1797},
{2000.0106,1521.1111,17.0625},
{2024.8190,1917.9425,12.3386},
{2261.9048,2035.9547,10.8203},
{2262.0986,2398.6572,10.8203},
{2244.2566,2523.7280,10.8203},
{2335.3228,2786.4478,10.8203},
{2150.0186,2734.2297,11.1763},
{2158.0811,2797.5488,10.8203},
{1969.8301,2722.8564,10.8203},
{1652.0555,2709.4072,10.8265},
{1564.0052,2756.9463,10.8203},
{1271.5452,2554.0227,10.8203},
{1441.5894,2567.9099,10.8203},
{1480.6473,2213.5718,11.0234},
{1400.5906,2225.6960,11.0234},
{1598.8419,2221.5676,11.0625},
{1318.7759,1251.3580,10.8203},
{1558.0731,1007.8292,10.8125},
//{-857.0551,1536.6832,22.5870},   Out of Town Spawns
//{817.3494,856.5039,12.7891},
//{116.9315,1110.1823,13.6094},
//{-18.8529,1176.0159,19.5634},
//{-315.0575,1774.0636,43.6406},
{1705.2347,1025.6808,10.8203}
};

new Float:gCopPlayerSpawns[2][3] = {
{2297.1064,2452.0115,10.8203},
{2297.0452,2468.6743,10.8203}
};
//===========================Character Selection Music==========================
#define SOUND_MUSIC1							1062
#define SOUND_MUSIC2							1068
#define SOUND_MUSIC3							1076
#define SOUND_OFF                    			1184
//=================================Team Colors==================================
#define COLOR_DARKGREEN 0x009600DD//NEW army Color
#define COLOR_GREEN 0x33AA33AA //SF Grove color
#define COLOR_RED 0xAA3333AA //SF Pimp color
#define COLOR_PINK 0xFF66FFAA //SF Triad color
#define COLOR_BLUE 0x0000BBAA //SF Mechanic color
#define COLOR_LIGHTBLUE 0x33CCFFAA //SF Pilot color
#define COLOR_ORANGE 0xFF9900AA //SF Swat color
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_PURPLE 0x330066AA
#define COLOR_GREY 0xCCCCCAA
#define COLOR_SKIN 0xFFCC99AA
#define COLOR_DARKGREY 0x333333AA
#define COLOR_DARKRED 0x990000AA
#define RED 0xFF0000AA
#define COLOR_INDIGO 0x4B00B0AA
#define COLOR_BRIGHTRED 0xDC143CAA
#define COLOR_AQUA 0x7CFC00AA
#define COLOR_DARKBLUE 0x0000BBFF
#define COLOR_BROWN 0x8B4513AA
#define COLOR_SYSTEM 0xEFEFF7AA
new playerColors[32] = {
COLOR_GREEN,COLOR_RED,COLOR_YELLOW,COLOR_PINK,COLOR_DARKGREEN,COLOR_LIGHTBLUE,COLOR_PURPLE,COLOR_ORANGE,
COLOR_GREY,COLOR_SKIN,COLOR_DARKGREY,COLOR_DARKRED,COLOR_DARKGREEN,COLOR_LIGHTBLUE,COLOR_BLUE,COLOR_YELLOW,
COLOR_RED,COLOR_ORANGE,COLOR_DARKBLUE,COLOR_BROWN,COLOR_WHITE,COLOR_BLUE,COLOR_BLUE,COLOR_GREEN,COLOR_GREEN,
COLOR_YELLOW,COLOR_YELLOW,COLOR_LIGHTBLUE,COLOR_LIGHTBLUE,COLOR_PURPLE,COLOR_PURPLE,COLOR_ORANGE
};
//==================================Defines=====================================
new KillerID[MAX_PLAYERS] = INVALID_PLAYER_ID;
new Menu:TK;
new Float:Pos[MAX_PLAYERS][4];
new Language[MAX_PLAYERS] = 0; //Initialyse with the Default Language = English
//================================Main Info=====================================
main()
{
	print(" ");
	print(">-----------------------------------------------------------------------<");
	print("| HC4L gang server |");
	print(">-----------------------------------------------------------------------<\n");
}
//==================================Exitded menu================================
public OnPlayerExitedMenu(playerid)
{
	TogglePlayerControllable(playerid, true);
	if(!IsValidMenu(GetPlayerMenu(playerid))) return 1;
	ShowMenuForPlayer(GetPlayerMenu(playerid), playerid);
	CallLocalFunction("opem","i",playerid);
	//print("onplayerexitmenu");
	new Menu:current = GetPlayerMenu(playerid);
	HideMenuForPlayer(current,playerid);
	if (current == Hexit1){
		ShowMenuForPlayer(Hexit1,playerid);
		TogglePlayerControllable(playerid,1);
	}
	return 1;
}
//=================================Phone stuff==================================
public PhoneCut()
{
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			if (Calling[i] > -1 && Answered[i] == 1 && Callerid[i] == 1)
			{
				if (GetPlayerMoney(i) >= CALL_UNIT_COST)
				{
					GivePlayerMoney(i, -CALL_UNIT_COST);
				}
				if (GetPlayerMoney(i) < CALL_UNIT_COST)
				{
					SendClientMessage(i, COLOR_BRIGHTRED, "CUT OFF: You don't have enough cash to continue this call");
					SendClientMessage(Calling[i], COLOR_BRIGHTRED, "CUT OFF: Your recipient's phone has been cut off due to lack of credit");
					Calling[Calling[i]] = -1;
					Answered[Calling[i]] = 0;
					Calling[i] = -1;
					Answered[i] = 0;
					Callerid[i] = 0;
				}
			}
		}
	}
	return 1;
}

public OnPlayerText(playerid, text[])
{
	if(text[0] == '#' && IsPlayerXAdmin(playerid)) {
	    new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Admin %s: %s",xname,text[1]); SendMessageToAdmins(string);
	    return 0;
	}
	if(Variables[playerid][Wired]) {
	    Variables[playerid][WiredWarnings]--;
	    new string[256],Name[24];
	    if(Variables[playerid][WiredWarnings]) {
	        format(string,256,"You have been wired thus preventing you from talking or PMing. [Warnings: %d/%d]",Variables[playerid][WiredWarnings],Config[WiredWarnings]);
			SendClientMessage(playerid,white,string); return 0;
		}
		else {
		    GetPlayerName(playerid,Name,24); format(string,256,"%s has been kicked from the server. [REASON: Wired]",Name);
		    SendClientMessageToAll(yellow,string); SetUserInt(playerid,"Wired",0);
		    Kick(playerid); return 0;
		}
	}
	if (Calling[playerid] > -1 && Answered[playerid] == 1)
	{
    	new string[256];
		new sendername[MAX_PLAYER_NAME];
		GetPlayerName(playerid, sendername, sizeof(sendername));
		format(string, sizeof(string), "%s: %s", sendername, text);
		SendClientMessage(Calling[playerid], COLOR_YELLOW, string);
		format(string, sizeof(string), "%s: %s", sendername, text);
		SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
		format(string, sizeof(string), "%s: %s", sendername, text);
		print(string);
		format(string, sizeof(string), "%s: %s", sendername, text);
		print(string);
		return 0;
	}
	if(text[0] == '!') {
		if(playerGang[playerid] > 0) {
		    new gangChat[256];
		    new senderName[MAX_PLAYER_NAME];
		    new string[256];

//		    for(new i = 1; i < strlen(text)+1; i++)
//				gangChat[i]=text[i];

			strmid(gangChat,text,1,strlen(text));

			GetPlayerName(playerid, senderName, sizeof(senderName));
			format(string, sizeof(string),"%s: %s", senderName, gangChat);

			for(new i = 0; i < gangInfo[playerGang[playerid]][1]; i++) {
				SendClientMessage(gangMembers[playerGang[playerid]][i], COLOR_LIGHTBLUE, string);
			}
		}
		return 0;
	}
	return 1;
}

public OnPlayerPrivmsg(playerid, recieverid, text[]) {
	if(!IsPlayerConnected(playerid)||!IsPlayerConnected(recieverid)) return 1;
	new string[256], ToName[24], Name[24]; GetPlayerName(playerid,Name,24);
	if(Config[ExposePMS]) {
	    GetPlayerName(recieverid,ToName,24);
	    format(string,256,"PM: %s [%d] -> %s [%d]: %s",Name,playerid,ToName,recieverid,text);
	    SendMessageToAdmins(string);
	}
    if(Config[WireWithPM] && Variables[playerid][Wired]) {
	    Variables[playerid][WiredWarnings]--;
	    if(Variables[playerid][WiredWarnings]) {
	        format(string,256,"You have been wired thus preventing you from talking and PMing. [Warnings: %d/%d]",Variables[playerid][WiredWarnings],Config[WiredWarnings]);
			SendClientMessage(playerid,white,string); return 0;
		}
		else {
  			format(string,256,"%s has been kicked from the server. [REASON: Wired]",Name);
		    SendClientMessageToAll(yellow,string); SetUserInt(playerid,"Wired",0);
		    Kick(playerid); return 0;
		}
	}
	return 1;
}
//==============================Streamer Statements=============================
public vehiclestreamer()
{
    for(new i = 1;i<vehcount;i++) {
		if(VehicleInfo[i][limbo] == 0) {
			if(VehicleInfo[i][spawned] == 0 && PlayersInRangeV(i,VehicleInfo[i][spawndist]) == 1) {
			    if(Vstreamcount < MAX_ACTIVE_VEHICLES) {
			        if(IsModelActive(VehicleInfo[i][model]) == 0) {
			            if(CountModels(vehcount) < MAX_ACTIVE_MODELS) {
							VehicleInfo[i][idnum] = CreateVehicle(VehicleInfo[i][model], VehicleInfo[i][x_spawn], VehicleInfo[i][y_spawn], VehicleInfo[i][z_spawn], VehicleInfo[i][za_spawn], VehicleInfo[i][color_1], VehicleInfo[i][color_2],20000);
							avstream[VehicleInfo[i][idnum]] = i;
							SetTimerEx("ModVehicle",100,0,"i",i);
							VehicleInfo[i][spawned] = 1;
							Vstreamcount++;
						}
					}
					else if(IsModelActive(VehicleInfo[i][model]) == 1) {
					    VehicleInfo[i][idnum] = CreateVehicle(VehicleInfo[i][model], VehicleInfo[i][x_spawn], VehicleInfo[i][y_spawn], VehicleInfo[i][z_spawn], VehicleInfo[i][za_spawn], VehicleInfo[i][color_1], VehicleInfo[i][color_2],20000);
						avstream[VehicleInfo[i][idnum]] = i;
						SetTimerEx("ModVehicle",100,0,"i",i);
						VehicleInfo[i][spawned] = 1;
						Vstreamcount++;
					}
				}
			}
			else if(VehicleInfo[i][spawned] == 1 && PlayersInRangeV(i,VehicleInfo[i][spawndist]) == 0 && vehused[VehicleInfo[i][idnum]] == 0) {
     			DestroyVehicle(VehicleInfo[i][idnum]);
				VehicleInfo[i][spawned] = 0;
				vehused[VehicleInfo[i][idnum]] = 0;
				Vstreamcount--;
				VehicleInfo[i][idnum] = 0;
			}
		}
	}
}

public pickupstreamer()
{
	new pickupcount = bizcount+3;
    for(new i = 0;i<pickupcount;i++) {
		if(PickupInfo[i][spawned] == 0 && PickupInfo[i][valid] == 1) {
			if(PlayersInRangePU(i,DEFAULT_SPAWN_DIST) == 1) {
			    if(PUstreamcount < MAX_ACTIVE_PICKUPS) {
						PickupInfo[i][idnum] = CreatePickup(PickupInfo[i][model],2, PickupInfo[i][x_spawn], PickupInfo[i][y_spawn], PickupInfo[i][z_spawn]);
						PickupInfo[i][spawned] = 1;
						PUstreamcount++;
				}
			}
		}
		else if(PlayersInRangePU(i,DEFAULT_SPAWN_DIST) == 0) {
		    DestroyPickup(PickupInfo[i][idnum]);
			PickupInfo[i][spawned] = 0;
			PUstreamcount--;
			PickupInfo[i][idnum] = -1;
		}
	}
}

public minimapstreamer()
{
	for(new j = 0;j<MAX_PLAYERS;j++) {
 		if(IsPlayerConnected(j)) {
			for(new K = 1;K<B_LIMIT;K++) {
			    if(MapIconInfo[K][mvalid] == 1) {
					if(MIactive[j][K] == 0) {
					   	if(MMstreamcount[j] < MAX_ACTIVE_MM_ICONS) {
							if(IsPlayerClose(j,MapIconInfo[K][mx_spawn],MapIconInfo[K][my_spawn],MapIconInfo[K][mz_spawn],MapIconInfo[K][mspawndist]) == 1) {
								SetPlayerMapIcon(j,MIidnum[j][K],MapIconInfo[K][mx_spawn],MapIconInfo[K][my_spawn],MapIconInfo[K][mz_spawn],MapIconInfo[K][mmodel],1);
								MMstreamcount[j]++;
								MIactive[j][K] = 1;
							}
						}
					}
					else if(IsPlayerClose(j,MapIconInfo[K][mx_spawn],MapIconInfo[K][my_spawn],MapIconInfo[K][mz_spawn],MapIconInfo[K][mspawndist]) == 0) {
						RemovePlayerMapIcon(j,MIidnum[j][K]);
						MIactive[j][K] = 0;
						MMstreamcount[j]--;
					}
				}
			}
		}
	}
}
//===================================Pay day====================================
public PayDay()
{
    SendClientMessageToAll(COLOR_LIGHTBLUE,"PAYDAY: All business earnings have been updated and all players have recieved a rebate of $10000");
	for (new i = 0; i < MAX_PLAYERS; i++) {
	    if(IsPlayerConnected(i)) {
	    	GivePlayerMoney(i,10000);
	    	if(PlayerInfo[i][bowner] == 1) {
	    		SendClientMessage(i,COLOR_LIGHTBLUE,"To collect you business' earnings return to your business and type '/cashbox'");
			}
		}
	}
	for (new i = 0; i < bizcount; i++) {
	    if(BizInfo[i][bought] == 1) {
	    	new cbmon = BizInfo[i][cashbox], pmon = BizInfo[i][profit];
	    	BizInfo[i][cashbox] = cbmon+pmon;
		}
	}
}
//====================================KIHC======================================
public SetHouseOwner(houseid,hpname[])
{
	SetHouseInfo(houseid,"Owner",hpname);
}

GetHouseOwner(houseid)
{
	new str[256];
	GetHouseInfo(houseid,"Owner",str);
	return str;
}

public GetHouseCost(houseid)
{
	new str[256];
	GetHouseInfo(houseid,"cost",str);
	return strval(str);
}
//=================================Leave Gang===================================
public PlayerLeaveGang(playerid) {
	new string[256];
	new playername[MAX_PLAYER_NAME];
	new gangnum = playerGang[playerid];

    if(gangnum > 0) {
		for(new i = 0; i < gangInfo[gangnum][1]; i++) {
			if(gangMembers[gangnum][i]==playerid) {

			    //One less gang member
			    gangInfo[gangnum][1]--;

      		    for(new j = i; j < gangInfo[gangnum][1]; j++) {
				    //Shift gang members
				    gangMembers[gangnum][j]=gangMembers[gangnum][j+1];
	    		}

			    //Disband gang if no more members
			    if(gangInfo[gangnum][1]<1) {
			        gangInfo[gangnum][0]=0;
			        gangInfo[gangnum][1]=0;
			        gangBank[gangnum]=0;
       			}

				//Notify other members
				for(new j = 0; j < gangInfo[gangnum][1]; j++) {
				    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
					format(string, sizeof(string),"%s has quit your gang.", playername);
					SendClientMessage(gangMembers[gangnum][j], COLOR_ORANGE, string);
				}

				format(string, sizeof(string),"You have quit the gang '%s' (id: %d)", gangNames[gangnum], gangnum);
				SendClientMessage(playerid, COLOR_ORANGE, string);

				playerGang[playerid]=0;

				SetPlayerColor(playerid,playerColors[playerid]);

				return;
			}
		}
	} else {
		SendClientMessage(playerid, COLOR_RED, "You are not in a gang.");
	}
}
//===============================Gamemode Start=================================
public OnGameModeInit()
{
	print("\n \nHC4L gang server");
	SetGameModeText("HC4L gang server");
	printf(" ");
 	printf(" ");
    print(">------------------------------------------------");
	print("HC4L's Vehicle System Is Initialising, Please Wait...");
	printf(">------------------------------------------------");
	printf(" ");
	ShowNameTags(1);
	ShowPlayerMarkers(1);
	SetWorldTime(12);
//----------------------------------Xadmin--------------------------------------
	print("Welcome to the Xtreme Administration Filterscript v2.1");
	print("Checking / creating server configuration...");
	//Check if all configuration files are present.
	if(!dini_Exists("/xadmin/Configuration/Configuration.ini")) {
	    dini_Create("/xadmin/Configuration/Configuration.ini");
	    dini_Set("/xadmin/Configuration/Configuration.ini","ServerMessage","None");
	}
	print("Creating user file variables configuration...");
	// Create the variables to be stored in each user's file.
	CreateLevelConfig(
		"IP","Registered","Level","Cash","Kills","Deaths","Password","Wired",
		"WiredWarnings","Jailed"
	);
	// Create Level Config in pattern 'command name, level, command name, level (case is not sensitive):
	print("Creating command level configuration...");
	CreateCommandConfig(
		// Time Commands
		"morning",1,"afternoon",1,"evening",1,"midnight",1,"settime",1,
		// Miscellaneous Commands
		"goto",5,"gethere",8,"announce",3,"say",1,"flip",1,"slap",6,"wire",8,"unwire",5,"kick",6,
		"ban",9,"akill",7,"eject",6,"freeze",6,"unfreeze",6,"outside",8,"healall",5,"uconfig",10,
		"setsm",10,"givehealth",6,"sethealth",6,"skinall",9,"giveallweapon",7,"resetallweapons",10,
		"setcash",7,"givecash",5,"remcash",7,"resetcash",7,"setallcash",10,"giveallcash",10,"remallcash",
		10,"resetallcash",10,"ejectall",8,"freezeall",10,"unfreezeall",10,"giveweapon",4,"god",10,
		"resetscores",7,"setlevel",10,"setskin",7,"givearmour",5,"setarmour",5,"armourall",5,
		"setammo",5,"setscore",8,"ip",1,"ping",1,"explode",5,"setname",10,"setalltime",10,
		"force",4,"setallworld",5,"setworld",2,"setgravity",7,"setwanted",6,"setallwanted",7
	);
	CreateCommandConfigEx(
		"xlock",1,"xunlock",1,"carcolor",1,"gmx",10,"carhealth",5,"setping",5,
		"givecar",7,"xspec",4,"xjail",7,"xunjail",3,"vr",0,"weather",5
	);
	print("Creating Forbidden Names...");
	// Add the names to prevent from connecting to your server in the following format:
	CreateForbiddenNames("shit","fuck","crap","hax","hacker"
	);
	print("Creating main configuration files...");
	UpdateConfigurationVariables();
	print("Initializing Menus...");

	GiveCar = CreateMenu("~b~Givecar ~w~Administration",1,125,150,300);
	if(IsValidMenu(GiveCar)) {
		SetMenuColumnHeader(GiveCar , 0, "Select a car component to add:");
		AddMenuItem(GiveCar ,0,"Nitrous x10");
		AddMenuItem(GiveCar ,0,"Hydraulics");
		AddMenuItem(GiveCar ,0,"Offroad Wheel");
		AddMenuItem(GiveCar ,0,"Wire Wheels");
	}

	Weather = CreateMenu("~r~Weather ~w~Administration",1,125,150,300);
	if(IsValidMenu(GiveCar)) {
		SetMenuColumnHeader(GiveCar , 0, "Select a car component to add:");
		AddMenuItem(Weather,0,"Sunny");
		AddMenuItem(Weather,0,"Cloudy");
		AddMenuItem(Weather,0,"Thunderstorm");
		AddMenuItem(Weather,0,"Foggy");
		AddMenuItem(Weather,0,"Scorching Hot");
		AddMenuItem(Weather,0,"Sandstorm");
		AddMenuItem(Weather,0,"Polluted");
	}
	print("Complete.");
	SetTimer("PingKick",Config[PingSecondUpdate]*1000,true);
	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) OnPlayerConnect(i);
//----------------------------------Gang Zones----------------------------------
	Worker = GangZoneCreate(-2157.1663,96.6665,-1932.0258,330.8631);
	Pimp = GangZoneCreate(-2716.4243,1292.3812,-2607.6306,1446.0879);
	Golfer = GangZoneCreate(-2797.4963,-420.4095,-2629.8730,-221.8892);
	Triad = GangZoneCreate(-2250.9419,574.2153,-2129.4670,724.6283);
	Army = GangZoneCreate(-1616.7291,294.5811,-1231.8075,503.3318);
	Valet = GangZoneCreate(-1781.3525,932.7036,-1695.9397,1041.9789);
	Medic = GangZoneCreate(-2719.5605,557.5917,-2536.2844,697.6593);
	FBI = GangZoneCreate(-1706.4167,614.7883,-1567.8694,754.1960);
	Chicken = GangZoneCreate(-1898.2987,605.0880,-1777.2820,729.1407);
	Rich = GangZoneCreate(-2685.4111,896.8892,-2655.2393,966.9269);
	Pilot = GangZoneCreate(-1748.1112,-630.1697,-1266.5975,78.1196);
	Pilot1 = GangZoneCreate(-1278.367, 199.5653, -1027.292, 381.0337);
	Pilot2 = GangZoneCreate(-1197.25, 325.8042, -1007.979, 534.8873);
	DaNang = GangZoneCreate(-1499.7189,1445.5778,-1333.4880,1514.5814);
//-------------------------------Load Race Script-------------------------------
	print("\n+--------------------------+");
	print("| Yagu's Race Script v0.4a |");
	print("+-----------LOADED---------+\n");
	RaceActive=0;
	Ranking=1;
	LCurrentCheckpoint=0;
	Participants=0;
	for(new i;i<MAX_BUILDERS;i++)
	{
	    BuilderSlots[i]=MAX_PLAYERS+1;
	}
	if(RRotation != -1) SetTimer("RaceRotation",RRotationDelay,1);
	#if defined MENUSYSTEM
	CreateRaceMenus();
	#endif
//-----------------------------------KIHC Script--------------------------------
	CallLocalFunction("ogmi"," ");
	Hmen1 = CreateMenu("house",1,50,150,50,150);
	AddMenuItem(Hmen1,0,"Info");
	AddMenuItem(Hmen1,0,"Enter");
	AddMenuItem(Hmen1,0,"Rent");
	AddMenuItem(Hmen1,0,"Buy");
	Hexit1 = CreateMenu(" ",1,500,380,50,30);
	AddMenuItem(Hexit1,0,"EXIT");
	#include <../../scriptfiles/houses.req >
//------------------------------Cool Vehicle Stuff------------------------------
	print(">--------------------------------------------------------------------------");
    vehcount = CountVehicles(V_FILE_LOAD);
    bizcount = CountBusinesses(B_FILE_LOAD);
    new vehmes[256];
	format(vehmes,sizeof(vehmes),"Verifying %s (Complete) - %d Vehicle Spawns Verified!", V_FILE_LOAD, vehcount);
	printf(vehmes);
	print(">--------------------------------------------------------------------------");
	printf(" ");
	print(">--------------------------------------------------------------------------");
	LoadVehicles();
	print(">--------------------------------------------------------------------------");
	print(" ");
	print(" ");
	print(">--------------------------------------------------------------------------");
	print(" ");
	new vehmess[256];
	format(vehmess,sizeof(vehmes),"	-Streaming Complete - %d Vehicles Streamed!", vehcount);
	printf(vehmess);
 	for(new c=1;c<=vehcount;c++)
/*	{
	 	new strings[256];
	 	format(strings,sizeof(strings),"Checking Vehicle File For saved Mods - Vehicle ID: %d / Type: %s", c, VehicleName[VehicleInfo[c][model]-400][0]);
		printf(strings);
 	}*/
	format(tmpname,sizeof(tmpname),"	-%d Vehicles Were Tuned On Server Load!     ",tuned);
	printf(tmpname);
	print("	-HC4L's Vehicle System Status - 100% - System Ready...");
	print(">--------------------------------------------------------------------------");
	print(" ");
	print(" ");
	print(">--------------------------------------------------------------------------");
	print("Loading Businesses...Please Wait...");
	print(" ");
	LoadBusinesses();
	for(new i=0;i<bizcount;i++) {
		CreateStreamPickup(B_ICON,BizInfo[i][xpos],BizInfo[i][ypos],BizInfo[i][zpos],PICKUP_TYPE_BIZ);
	}
	for(new i=0;i<bizcount;i++) {
        if(BizInfo[i][bought] == 0) {
            CreateStreamMapIcon(31,BizInfo[i][xpos],BizInfo[i][ypos],BizInfo[i][zpos],DEFAULT_SPAWN_DIST);
		}
		else {
		    CreateStreamMapIcon(32,BizInfo[i][xpos],BizInfo[i][ypos],BizInfo[i][zpos],DEFAULT_SPAWN_DIST);
		}
	}
	for(new i=0;i<3;i++) {
		CreateStreamMapIcon(55,Pickup[i][0],Pickup[i][1],Pickup[i][2],DEFAULT_SPAWN_DIST);
	}
	print(">--------------------------------------------------------------------------");
 	new bizmess[256];
 	format(bizmess,256,"%d Businesses Successfully loaded and created",bizcount);
 	printf(bizmess);
	print(">--------------------------------------------------------------------------");
 	printf("");
	print(">--------------------------------------------------------------------------");
	print("HC4L's Business System Status - 100% - System Ready...");
	print(">--------------------------------------------------------------------------");
//---------------------------------Vehicle Menus--------------------------------
	vehiclemain = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(vehiclemain,0,"Player Vehicle Menu");
	AddMenuItem(vehiclemain,0,"Vehicle Admin System");
	AddMenuItem(vehiclemain,0,"<exit>");

	playervm = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(playervm,0,"Temp Lock");
	AddMenuItem(playervm,0,"Vehicle Health Bar");
	AddMenuItem(playervm,0,"Dash Board Settings");
	AddMenuItem(playervm,0,"Vehicle Ownership");
	AddMenuItem(playervm,0,"Call Your Vehicle");
	AddMenuItem(playervm,0,"Park Your Vehicle");
	AddMenuItem(playervm,0,"Vehicle Security");
	AddMenuItem(playervm,0,"<back>");

	adminm = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(adminm,0,"Sell Current Vehicle");
	AddMenuItem(adminm,0,"Set Purchase Status");
	AddMenuItem(adminm,0,"Set Admin Protection");
	AddMenuItem(adminm,0,"<back>");

	buysell = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(buysell,0,"Buy This Vehicle");
	AddMenuItem(buysell,0,"Sell This Vehicle");
	AddMenuItem(buysell,0,"<back>");

	secure1 = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(secure1,0,"Switch On Alarm");
	AddMenuItem(secure1,0,"Switch Off Alarm");
	AddMenuItem(secure1,0,"<back>");

	secure2 = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(secure2,0,"Lethal Mode");
	AddMenuItem(secure2,0,"Non-Lethal Mode");
	AddMenuItem(secure2,0,"<back>");

	asecure1 = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(asecure1,0,"Switch On Admin Security");
	AddMenuItem(asecure1,0,"Switch Off Admin Security");
	AddMenuItem(asecure1,0,"<back>");

	asecure2 = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(asecure2,0,"Lethal Mode");
	AddMenuItem(asecure2,0,"Non-Lethal Mode");
	AddMenuItem(asecure2,0,"<back>");

	templock = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(templock,0,"Lock Vehicle");
	AddMenuItem(templock,0,"Unlock Vehicle");
	AddMenuItem(templock,0,"<back>");

	speedom = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(speedom,0,"Switch On Dashboard");
	AddMenuItem(speedom,0,"Switch Off Dashboard");
	AddMenuItem(speedom,0,"<back>");

	buyable = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(buyable,0,"Set To Buyable");
	AddMenuItem(buyable,0,"Set To Unbuyable");
	AddMenuItem(buyable,0,"<back>");

	healthbar = CreateMenu("HC4L-XVM",1,440,140,150,40);
	AddMenuItem(healthbar,0,"Switch On");
	AddMenuItem(healthbar,0,"Switch Off");
	AddMenuItem(healthbar,0,"<back>");

	EnableTirePopping(1);
//--------------------------------Team Kill Menu--------------------------------
	TK = CreateMenu("TeamKill", 3, 160.0, 150.0, 250.0, 50.0);
	if (IsValidMenu(TK))
	{
		SetMenuColumnHeader(TK, 0, "TeamKill Punishment");
		AddMenuItem(TK, 0, "Kill");
		AddMenuItem(TK, 0, "Explode");
		AddMenuItem(TK, 0, "-2500");
		AddMenuItem(TK, 0, "Reset Weapons");
	 	AddMenuItem(TK, 0, "Forgive");
	}
//--------------------------------ALL GAME TEAMS--------------------------------
	//Classes Note: Some of the Classes are Cams so give Credit to him too
	AddPlayerClass(260,-2062.5583,237.4662,36.2890,268.8936,23,170,25,60,30,360); //SF Worker
	AddPlayerClass(296,-2653.6443,1388.2767,8.0739,212.8453,26,100,29,360,15,1); //SF Pimp
	AddPlayerClass(259,-2642.2583,-274.9985,8.3506,135.0036,25,80,32,300,2,1); //SF Golfer
	AddPlayerClass(294,-2188.8037,609.8431,36.2624,82.8703,32,300,30,390,4,1); //SF Triad
	AddPlayerClass(287,-1377.4271,466.0897,8.9393,1.0348,26,80,31,300,23,170); //SF ARMY
	AddPlayerClass(253,-1754.9976,958.5851,25.8386,163.2550,28,300,24,100,4,1); //SF Valet
	AddPlayerClass(274,-2665.4282,635.6348,16.0054,179.8403,26,100,23,170,9,1); //SF Medic
	AddPlayerClass(286,-1635.0077,665.8105,8.4054,264.2244,29,360,27,100,3,1); //SF FBI
	AddPlayerClass(167,-1830.9324,638.9214,31.3054,180.9218,26,200,29,390,9,1); //SF Chicken
	AddPlayerClass(295,-2664.8037,938.6110,80.7618,180.7716,27,100,24,100,28,400);//SF Rich
	AddPlayerClass(61,-1358.6774,-243.8737,15.6769,315.6869,22,170,25,60,14,1); //SF pilot
	AddPlayerClass(122,-1430.1825,1492.3381,8.0482,91.3221,24,70,27,77,28,300); //SF Da Nang
	
	AddPlayerClass(102,832.2958,-1080.4476,24.2969,107.7328,0,0,0,0,0,0); //LV Balla
    AddPlayerClass(103,832.2958,-1080.4476,24.2969,107.7328,0,0,0,0,0,0); //LV Balla
    AddPlayerClass(104,832.2958,-1080.4476,24.2969,107.7328,0,0,0,0,0,0); //LV Balla
    AddPlayerClass(105,2495.2207,-1687.3169,13.5152,107.7328,0,0,0,0,0,0); //LV Grove
    AddPlayerClass(106,2495.2207,-1687.3169,13.5152,107.7328,0,0,0,0,0,0); //LV Grove
    AddPlayerClass(107,2495.2207,-1687.3169,13.5152,107.7328,0,0,0,0,0,0); //LV Grove
    AddPlayerClass(108,2459.0442,-949.4450,80.0800,107.7328,0,0,0,0,0,0); //LV Vago
    AddPlayerClass(110,2459.0442,-949.4450,80.0800,107.7328,0,0,0,0,0,0); //LV Vago
    AddPlayerClass(114,1761.7893,-1892.7225,13.5551,107.7328,0,0,0,0,0,0); //LV Azteca
    AddPlayerClass(115,1761.7893,-1892.7225,13.5551,107.7328,0,0,0,0,0,0); //LV Azteca
    AddPlayerClass(116,1761.7893,-1892.7225,13.5551,107.7328,0,0,0,0,0,0); //LV Azteca
    AddPlayerClass(122,1499.2067,-937.3587,37.4407,107.7328,0,0,0,0,0,0); //LV Triad
    AddPlayerClass(123,1499.2067,-937.3587,37.4407,107.7328,0,0,0,0,0,0); //LV Triad
    AddPlayerClass(274,1499.2067,-937.3587,37.4407,107.7328,0,0,0,0,0,0); //LV Medic
    AddPlayerClass(275,1499.2067,-937.3587,37.4407,107.7328,0,0,0,0,0,0); //LV Medic
    AddPlayerClass(277,1499.2067,-937.3587,37.4407,107.7328,0,0,0,0,0,0); //LV Fireman
    AddPlayerClass(280,1552.5618,-1675.3375,16.1953,107.7328,0,0,0,0,0,0); //LV Cop
    AddPlayerClass(281,1552.5618,-1675.3375,16.1953,107.7328,0,0,0,0,0,0); //LV Cop
    AddPlayerClass(283,1552.5618,-1675.3375,16.1953,107.7328,0,0,0,0,0,0); //LV Cop
    AddPlayerClass(287,1552.5618,-1675.3375,16.1953,112.5582,0,0,0,0,0,0); //LV Army
    AddPlayerClass(286,1552.5618,-1675.3375,16.1953,112.5582,0,0,0,0,0,0); //LV Swat
	AddPlayerClass(214,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(215,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(216,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(251,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(253,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(254,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	AddPlayerClass(255,1552.5618,-1675.3375,16.1953,269.1425,0,0,24,300,-1,-1);//LV Civillian
	
    AddPlayerClass(280,1552.4381,-1675.6388,16.1953,91.0541,29,300,22,170,3,1); //LS Cop
    AddPlayerClass(284,1527.4740,-1676.5242,5.8906,221.3641,24,70,31,250,4,1); //LS Cop
    AddPlayerClass(106,2516.3032,-1674.7357,13.9314,62.4839,22,272,30,300,9,1); //LS Grove
	AddPlayerClass(107,2486.7520,-1646.4600,14.0703,183.2633,22,272,30,300,9,1); //LS Grove
    AddPlayerClass(108,2627.3525,-1457.3615,31.0251,5.0687,4,0,22,125,30,300); //LS Vago
    AddPlayerClass(109,2633.3894,-1435.1416,30.4864,232.3824,24,150,25,50,29,200); //LS Vago
    AddPlayerClass(115,1733.9663,-2098.1926,14.0366,171.6405,5,0,23,150,31,200); //LS Aazteca
    AddPlayerClass(116,1804.0708,-2124.1572,13.9424,0.7752,9,0,22,150,26,100); //LS Azteca
    AddPlayerClass(104,768.6387,-1696.5547,5.1554,96.1184,5,0,24,150,30,250); //LS Balla
    AddPlayerClass(103,767.3694,-1655.5189,5.6094,100.1684,4,0,22,200,31,250); //LS Balla
    AddPlayerClass(155,2101.5129,-1806.4567,13.5547,87.8965,4,0,26,150,30,200); //LS PizzaBoy
    //-------------------------51 Classes in total
//---------------------------Vehicle healthbar stuff----------------------------

 	vehiclehpbar[0] = TextDrawCreate(549.0, 50.0, "KABOOM!");
	TextDrawUseBox(vehiclehpbar[0], true);
	TextDrawBoxColor(vehiclehpbar[0], COLOR_BRIGHTRED);
	TextDrawSetShadow(vehiclehpbar[0],0);
	TextDrawTextSize(vehiclehpbar[0], 625, 0);

	vehiclehpbar[1] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[1], true);
	TextDrawBoxColor(vehiclehpbar[1], COLOR_BRIGHTRED);
	TextDrawSetShadow(vehiclehpbar[1],0);
	TextDrawTextSize(vehiclehpbar[1], 551, 0);

	vehiclehpbar[2] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[2], true);
	TextDrawBoxColor(vehiclehpbar[2], COLOR_BRIGHTRED);
	TextDrawSetShadow(vehiclehpbar[2],0);
	TextDrawTextSize(vehiclehpbar[2], 556, 0);

	vehiclehpbar[3] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[3], true);
	TextDrawBoxColor(vehiclehpbar[3], COLOR_BRIGHTRED);
	TextDrawSetShadow(vehiclehpbar[3],0);
	TextDrawTextSize(vehiclehpbar[3], 561, 0);

	vehiclehpbar[4] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[4], true);
	TextDrawBoxColor(vehiclehpbar[4], COLOR_YELLOW);
	TextDrawSetShadow(vehiclehpbar[4],0);
	TextDrawTextSize(vehiclehpbar[4], 566, 0);

	vehiclehpbar[5] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[5], true);
	TextDrawBoxColor(vehiclehpbar[5], COLOR_YELLOW);
	TextDrawSetShadow(vehiclehpbar[5],0);
	TextDrawTextSize(vehiclehpbar[5], 571, 0);

	vehiclehpbar[6] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[6], true);
	TextDrawBoxColor(vehiclehpbar[6], COLOR_YELLOW);
	TextDrawSetShadow(vehiclehpbar[6],0);
	TextDrawTextSize(vehiclehpbar[6], 576, 0);

	vehiclehpbar[7] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[7], true);
	TextDrawBoxColor(vehiclehpbar[7], COLOR_YELLOW);
	TextDrawSetShadow(vehiclehpbar[7],0);
	TextDrawTextSize(vehiclehpbar[7], 581, 0);

	vehiclehpbar[8] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[8], true);
	TextDrawBoxColor(vehiclehpbar[8], COLOR_GREEN);
	TextDrawSetShadow(vehiclehpbar[8],0);
	TextDrawTextSize(vehiclehpbar[8], 586, 0);

	vehiclehpbar[9] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[9], true);
	TextDrawBoxColor(vehiclehpbar[9], COLOR_GREEN);
	TextDrawSetShadow(vehiclehpbar[9],0);
	TextDrawTextSize(vehiclehpbar[9], 591, 0);

	vehiclehpbar[10] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[10], true);
	TextDrawBoxColor(vehiclehpbar[10], COLOR_GREEN);
	TextDrawSetShadow(vehiclehpbar[10],0);
	TextDrawTextSize(vehiclehpbar[10], 596, 0);

	vehiclehpbar[11] = TextDrawCreate(551.0, 59.0, " ");
	TextDrawUseBox(vehiclehpbar[11], true);
	TextDrawBoxColor(vehiclehpbar[11], COLOR_GREEN);
	TextDrawSetShadow(vehiclehpbar[11],0);
	TextDrawTextSize(vehiclehpbar[11], 602, 0);

	SetTimer("VHPBarUpdate",250,1);
	
	for(new i = 0;i<3;i++) {
    	CreateStreamPickup(1274,Pickup[i][0],Pickup[i][1],Pickup[i][2],PICKUP_TYPE_BANK);
	}
//-----------------------------------Pickups------------------------------------
	AddStaticPickup(1242, 15, 1198.6222,-2036.7010,69.0078); //Armor WHITE HOSE
	AddStaticPickup(1242, 15, 2037.5424,1955.0793,12.0647); //Armor hotel2
	AddStaticPickup(1242, 15, -1666.2980,1204.7188,7.2546); //Armor car dealer2
	AddStaticPickup(1242, 15, 2216.9341,-1179.4139,25.8906); //Armor motel
	AddStaticPickup(1242, 15, 1582.2346,-2433.3376,13.5547); //Armor airport2
	AddStaticPickup(1242, 15, 915.7377,-1235.0343,17.2109); //Armor MOVIE
	AddStaticPickup(1242, 15, -1111.8021,-1672.5598,76.3672); //Armor HIPPY
	AddStaticPickup(1242, 15, 1296.5054,-786.7410,88.3125); //Armor ADMIN
	AddStaticPickup(1242, 15, -534.7692,-178.1900,78.4047); //armor FOREST
	AddStaticPickup(1242, 15, -2771.5168,-251.6141,7.1875); //armor hotel
	AddStaticPickup(1242, 15, -1321.9531,2504.2705,89.5703); //armor hobo
	AddStaticPickup(1242, 15, -2241.2661,2321.9829,7.5454); //armor secret
	AddStaticPickup(1242, 15, -2720.7385,231.9487,4.3418); //armor at trans
	AddStaticPickup(1242, 15, 2238.8762,2449.3284,11.0372); //armor at security cop
	AddStaticPickup(1242, 15, -1844.8163,-1708.9067,41.1060); //armor at Rock Quarry
	AddStaticPickup(1242, 15, -2230.1113,-1743.3027,480.8695); //armor at chilliad
	AddStaticPickup(1242, 15, 2184.7224,-1203.6058,1049.8330); //armor at lombardi str
	AddStaticPickup(1242, 15, -1954.3491,303.5424,35.4688); //armor at car dealer
	AddStaticPickup(1242, 15, 2537.5513,-1663.5591,15.1492); //armor at grove str back right behind spwn
	AddStaticPickup(1242, 15, 1331.1685,1257.4764,14.2731); //armor at airort
	AddStaticPickup(1242, 15, 2293.2725,1435.4340,38.4735); //armor at driuft
	AddStaticPickup(1242, 15, 2582.8208,-1717.3884,8.0025); //aromr rbed
	AddStaticPickup(1242, 15, 1654.0404,-1658.1034,22.5156); //armor 3towers
	AddStaticPickup(1242, 15, 2332.5977,-1064.6901,1049.0234); //armor pimp
	AddStaticPickup(1242, 15, 688.0721,841.4696,-39.0077); //armor quarry1
	AddStaticPickup(1242, 15, 538.1361,839.2096,-34.6727); //armor quar 2
	AddStaticPickup(1242, 15, 545.5967,919.9224,-34.7484); //armor quar 3
	AddStaticPickup(1242, 15, 623.2344,894.4736,-35.4231); //armor quar 4
	AddStaticPickup(1242, 15, 2746.5503,-2453.7292,13.8623); //Armor military
	AddStaticPickup(370, 15, -2291.5791,2318.0688,15.2117); //SECRET JETPACK
	AddStaticPickup(371, 15, -2240.2351,-1747.3890,480.8622); //chilliad parachute
	AddStaticPickup(657, 2, -2649.4902, 1383.0055, 7.1826); //Kool Spinning tree
	AddStaticPickup(354, 2, -2649.4902, 1383.0055, 7.1826);//Flare in tree
	AddStaticPickup(354, 2, -2649.4902, 1383.0055, 10.5802);//Flare in tree
	AddStaticPickup(354, 2, -2649.4902, 1383.0055, 14.9802);//Flare in tree
	AddStaticPickup(354, 2, -2649.4902, 1383.0055, 13.9802);//Flare in tree
	//-----------------LV Airport to Army Base Bridge By: [CBK]MoNeYPiMp)
	CreateObject(18449, -1233.426270, 408.714081, 19.839516, 0.0000, 4.2972, 312.4217);
	CreateObject(1634, -1254.233154, 437.918274, 23.900005, 359.1406, 356.5623, 42.4217);
	CreateObject(18449, -1287.145386, 470.368927, 20.625740, 1.7189, 351.4056, 308.9840);
	CreateObject(18449, -1346.924561, 470.706299, 3.755691, 348.8273, 331.6386, 13.4417);
	CreateObject(1634, -1267.565796, 441.659546, 16.474197, 239.6790, 177.7990, 222.7994);
	CreateObject(1634, -1273.401123, 447.661041, 12.705763, 219.9119, 179.5179, 223.6588);
	CreateObject(18449, -1179.892578, 349.856659, 13.299114, 0.0000, 5.1566, 312.4217);
	//---------------Stunt Park By: [LSIB]X_Cutter
	CreateObject(971, -2029.763062, -124.249550, 37.757751, 0, 0, 0);
	CreateObject(971, -2034.172485, -119.812218, 37.760315, 0, 0, 269.7591);
	CreateObject(971, -2025.529541, -119.856903, 37.748856, 0, 0, 272.3375);
	CreateObject(969, -2034.059082, -120.240891, 37.994469, 0, 0, 0);
	CreateObject(969, -2034.200195, -123.931404, 41.288780, 269.7592, 0, 359.1406);
	CreateObject(13648, -2091.278564, -124.417061, 34.266281, 0, 0, 0);
	CreateObject(13648, -2090.648193, -124.404160, 34.266281, 0, 0, 0);
	CreateObject(13647, -2091.029541, -171.607254, 34.316284, 0, 0, 269.7591);
	CreateObject(13641, -2017.510498, -140.976227, 35.459076, 0, 0, 267.1808);
	CreateObject(13641, -2017.711914, -166.224121, 35.339516, 0, 0, 87.5587);
	CreateObject(13638, -2027.937134, -271.354767, 36.417580, 0, 0, 0);
	CreateObject(969, -2034.719727, -280.712860, 40.729832, 0, 0, 0);
	CreateObject(971, -2033.512817, -275.963165, 37.890167, 0, 0, 268.8997);
	CreateObject(971, -2033.345337, -267.078613, 37.890167, 0, 0, 268.8997);
	CreateObject(13666, -2017.970581, -257.768890, 39.150566, 0, 0, 6.0161);
	CreateObject(13666, -2021.652832, -257.602570, 39.150566, 0, 0, 6.0161);
	CreateObject(13666, -2025.379028, -257.444092, 39.149769, 0, 0, 6.0161);
	CreateObject(13666, -2029.010864, -257.287903, 39.140961, 0, 0, 6.0161);
	CreateObject(13592, -2048.899902, -207.144394, 44.065914, 0, 0, 94.4342);
	CreateObject(1503, -2030.108276, -264.293335, 42.100739, 0, 0, 0);
	CreateObject(969, -2018.697144, -245.763580, 43.856308, 269.7591, 0, 267.1808);
	CreateObject(969, -2011.873779, -252.873688, 40.754837, 0, 0, 269.7591);
	CreateObject(969, -2011.930908, -261.741760, 40.779839, 0, 0, 269.7591);
	CreateObject(1245, -2012.014526, -255.663452, 35.807884, 0, 0, 274.0563);
	CreateObject(969, -2011.853149, -252.607895, 40.729836, 0, 0, 90.2408);
	CreateObject(971, -2020.831543, -243.861923, 43.847054, 90.2409, 0, 300.6988);
	CreateObject(971, -2025.311768, -236.276016, 43.844215, 90.2409, 0, 300.6988);
	CreateObject(1632, -2027.354370, -233.358002, 45.331715, 9.4538, 0, 30.0803);
	CreateObject(971, -2035.179932, -220.646255, 51.655159, 270.6186, 359.1406, 304.1366);
	CreateObject(971, -2039.637939, -214.375885, 53.344780, 118.6022, 2.5783, 32.6586);
	CreateObject(969, -2043.155273, -213.700226, 55.292805, 91.1003, 0.8594, 124.6184);
	CreateObject(3279, -2045.254150, -205.034012, 55.192551, 0, 0, 339.3735);
	CreateObject(1633, -2047.360840, -212.829315, 71.570908, 341.0924, 0, 160.6106);
	CreateObject(1633, -2049.487305, -218.707428, 71.234428, 341.0924, 0, 160.6106);
	CreateObject(1634, -2051.833252, -225.535767, 72.295769, 0, 0, 159.7512);
	CreateObject(18262, -2042.169312, -220.294876, 72.434242, 358.2811, 5.1566, 81.6464);
	CreateObject(18367, -2038.766357, -219.659607, 71.949776, 0, 0, 0);
	CreateObject(18367, -2039.419922, -249.538071, 75.039330, 359.1406, 0, 268.0403);
	CreateObject(18367, -2069.020020, -248.742126, 78.449776, 0, 0, 181.2369);
	CreateObject(18367, -2069.920898, -218.865128, 81.433090, 0, 359.1406, 88.418);
	CreateObject(18367, -2040.428467, -220.067886, 84.449341, 0, 0, 0);
	CreateObject(18262, -2046.262573, -249.699524, 88.739952, 0, 0, 83.3653);
	CreateObject(3279, -2048.043701, -246.104614, 88.021889, 0, 0, 0);
	CreateObject(1218, -2048.145508, -246.172028, 104.591705, 0, 0, 0);
	CreateObject(969, -2042.782227, -202.841507, 72.112595, 270.6186, 0, 69.6144);
	CreateObject(18367, -2041.389160, -194.902969, 72.127640, 37.8152, 5.1566, 159.8555);
	CreateObject(18262, -2036.823853, -171.200912, 56.720722, 0, 0, 75.6304);
	CreateObject(3270, -2033.162964, -159.527084, 33.662197, 0, 0, 0);
	CreateObject(3269, -2056.233154, -160.401627, 33.193459, 0, 0, 304.9961);
	CreateObject(3363, -2048.090576, -142.612473, 34.155655, 0, 0, 0);
	CreateObject(3364, -2057.784424, -107.956017, 34.476334, 0, 0, 0);
	CreateObject(12956, -2058.442383, -246.159454, 35.873535, 0, 0, 0);
	CreateObject(13590, -2020.764038, -230.338760, 34.946125, 0, 0, 0);
	CreateObject(13604, -2079.216553, -219.619797, 35.778316, 0, 0, 0);
	CreateObject(13636, -2068.714600, -191.194214, 36.150677, 0, 0, 0);
	CreateObject(3279, -2049.909668, -106.821388, 34.091446, 0, 0, 0);
	CreateObject(3279, -2091.546875, -275.471954, 34.120911, 0, 0, 0);
	CreateObject(971, -2095.781738, -216.648987, 44.307823, 0, 0, 90.2409);
	CreateObject(971, -2011.837402, -239.783264, 44.057869, 0, 0, 270.6186);
	CreateObject(971, -2015.887329, -257.513550, 46.054466, 0, 0, 258.5865);
	CreateObject(971, -2091.330078, -280.941498, 44.232819, 0, 0, 0);
	CreateObject(971, -2091.324707, -280.938171, 51.393135, 0, 0, 0);
	CreateObject(971, -2095.792480, -276.559265, 44.207863, 0, 0, 270.6186);
	CreateObject(971, -2095.785400, -276.518860, 51.358208, 0, 0, 270.6186);
	CreateObject(971, -2095.842529, -267.747314, 44.307823, 0, 0, 269.7591);
	CreateObject(971, -2082.695557, -280.883087, 44.312592, 0, 0, 0);
	CreateObject(971, -2095.829590, -174.308350, 44.328720, 0, 0, 271.478);
	CreateObject(971, -2096.033203, -165.487137, 44.332825, 0, 0, 271.478);
	CreateObject(971, -2096.304443, -156.670258, 44.332886, 0, 0, 271.478);
	CreateObject(971, -2095.623779, -137.767456, 44.307899, 0, 0, 269.7591);
	CreateObject(971, -2095.562012, -128.925003, 44.332855, 0, 0, 269.7591);
	CreateObject(971, -2095.552979, -120.086128, 44.357857, 0, 0, 269.7591);
	CreateObject(971, -2095.778076, -111.679253, 44.307884, 0, 0, 270.6186);
	CreateObject(971, -2095.861328, -102.843391, 44.307854, 0, 0, 270.6186);
	CreateObject(971, -2091.427979, -103.389999, 44.316978, 0, 0, 179.5181);
	CreateObject(971, -2082.551025, -103.364998, 44.251526, 0, 0, 179.5181);
	CreateObject(971, -2073.788086, -103.431046, 44.280823, 0, 0, 0);
	CreateObject(971, -2065.115967, -103.389908, 44.358833, 0, 0, 0);
	CreateObject(971, -2052.744141, -102.656273, 41.456863, 0, 0, 0);
	CreateObject(971, -2052.687744, -102.647896, 48.660263, 0, 0, 0);
	CreateObject(971, -2045.562500, -102.590111, 41.476204, 0, 0, 0.8594);
	CreateObject(971, -2059.413330, -103.415001, 44.337914, 0, 0, 0);
	CreateObject(971, -2045.552368, -102.562973, 48.579254, 0, 0, 0.8594);
	CreateObject(971, -2011.691772, -147.416718, 44.332825, 0, 0, 270.6186);
	CreateObject(971, -2011.752686, -159.865814, 44.307831, 0, 0, 89.3814);
	CreateObject(616, -2053.137207, -114.562286, 34.284336, 0, 0, 0);
	CreateObject(618, -2048.662354, -115.591202, 34.585541, 0, 0, 0);
	CreateObject(617, -2086.480957, -275.459412, 34.314148, 0, 0, 0);
	CreateObject(616, -2090.233887, -269.792480, 34.314148, 0, 0, 0);
	CreateObject(1634,-2034.887,-99.086,35.461,0.0,0.0,-180.000);
	CreateObject(1634,-2030.837,-99.060,35.461,0.0,0.0,-180.000);
	CreateObject(1634,-2026.701,-99.048,35.461,0.0,0.0,-180.000);
	CreateObject(1634,-2022.597,-99.024,35.461,0.0,0.0,-180.000);
	//----------------Chilliad Arena By: ISCV [BRA]
	CreateObject(971,-2270.527343,-1645.016723,478.164978,0.000000,0.000000,0.000000);
    CreateObject(750,-2275.597167,-1639.763916,478.156280,0.000000,0.000000,0.000000);
    CreateObject(971,-2257.711425,-1645.354125,478.159576,0.000000,0.000000,0.000000);
    CreateObject(9833,-2264.194335,-1644.980590,478.154724,0.000000,0.000000,792.000000);
    CreateObject(973,-2253.426025,-1639.964599,478.167938,0.000000,0.000000,5844.000000);
    CreateObject(973,-2252.997314,-1630.495483,478.249755,0.000000,0.000000,7288.000000);
    CreateObject(1634,-2248.282226,-1625.055908,478.282806,0.000000,0.000000,1332.000000);
    CreateObject(1634,-2244.210693,-1626.322998,481.407196,1464.000000,0.000000,3132.000000);
    CreateObject(973,-2252.701171,-1616.333129,478.352142,0.000000,0.000000,13408.000000);
    CreateObject(4650,-2189.161865,-1616.323364,478.525512,368.000000,0.000000,1348.000000);
    CreateObject(1634,-2121.138916,-1616.903930,489.427307,1456.000000,0.000000,1708.000000);
    CreateObject(1634,-2116.833496,-1617.007690,493.588989,2188.000000,0.000000,2068.000000);
    CreateObject(5009,-2032.651489,-1615.157958,497.910034,0.000000,0.000000,0.000000);
    CreateObject(1632,-2236.333007,-1609.791625,473.148315,724.000000,360.000000,448.000000);
    CreateObject(1632,-2240.892578,-1609.632568,476.068756,20.000000,0.000000,448.000000);
    CreateObject(1634,-2238.559082,-1615.410400,473.550109,384.000000,0.000000,1892.000000);
    CreateObject(1633,-2237.075195,-1615.318481,473.495483,368.000000,0.000000,92.000000);
    CreateObject(3524,-2219.694580,-1609.049804,477.158203,0.000000,0.000000,0.000000);
    CreateObject(3524,-2218.145996,-1620.882324,477.158203,0.000000,0.000000,1624.000000);
    CreateObject(3524,-2209.556152,-1609.270019,477.158203,0.000000,0.000000,0.000000);
    CreateObject(3524,-2208.931884,-1621.436523,477.158203,0.000000,0.000000,192.000000);
    CreateObject(971,-2116.598876,-1623.888183,488.772003,0.000000,0.000000,444.000000);
    CreateObject(971,-2120.634277,-1608.590454,488.346282,0.000000,0.000000,0.000000);
    CreateObject(971,-2116.105957,-1612.948486,489.083770,0.000000,0.000000,452.000000);
    CreateObject(971,-2121.046875,-1628.679443,488.677764,0.000000,0.000000,0.000000);
    CreateObject(4638,-2120.725830,-1627.362915,489.073455,0.000000,0.000000,0.000000);
    CreateObject(982,-2111.551757,-1614.860717,496.136596,0.000000,0.000000,0.000000);
    CreateObject(984,-2111.480712,-1634.130615,496.136596,0.000000,0.000000,0.000000);
    CreateObject(984,-2111.482910,-1646.892822,496.136596,0.000000,0.000000,0.000000);
    CreateObject(982,-2111.460937,-1666.236694,496.136596,0.000000,0.000000,0.000000);
    CreateObject(982,-2111.444091,-1691.887207,496.136596,0.000000,0.000000,0.000000);
    CreateObject(982,-2111.538330,-1588.964111,496.136596,0.000000,0.000000,0.000000);
    CreateObject(982,-2111.547607,-1563.219482,496.136596,0.000000,0.000000,0.000000);
    CreateObject(981,-2111.629394,-1538.864257,496.136596,0.000000,0.000000,1528.000000);
    CreateObject(1427,-2109.999511,-1535.344360,496.136596,0.000000,0.000000,272.000000);
    CreateObject(972,-2097.108886,-1707.758666,496.136596,0.000000,0.000000,92.000000);
    CreateObject(972,-2072.137939,-1706.837890,496.136596,0.000000,0.000000,812.000000);
    CreateObject(972,-2047.145996,-1705.820800,496.136596,0.000000,0.000000,452.000000);
    CreateObject(972,-2022.515258,-1706.104370,496.136596,0.000000,0.000000,88.000000);
    CreateObject(972,-1997.491943,-1706.033691,496.136596,0.000000,0.000000,2252.000000);
    CreateObject(972,-1972.407592,-1704.695800,496.136596,0.000000,0.000000,92.000000);
    CreateObject(14781,-2267.243164,-1594.381713,478.816650,0.000000,0.000000,1444.000000);
    CreateObject(971,-2266.658447,-1597.302978,478.582031,0.000000,0.000000,0.000000);
    CreateObject(971,-2267.059814,-1590.094116,478.738525,0.000000,0.000000,4500.000000);
    CreateObject(986,-2288.669921,-1586.208740,478.636779,0.000000,0.000000,1624.000000);
    CreateObject(986,-2280.687988,-1585.955444,478.746948,0.000000,0.000000,0.000000);
    CreateObject(985,-2272.568603,-1585.542724,478.814483,0.000000,0.000000,19804.000000);
    CreateObject(1245,-2252.056884,-1611.428222,478.462677,0.000000,0.000000,2340.000000);
    CreateObject(1245,-2252.010253,-1608.348632,478.447570,0.000000,0.000000,5224.000000);
    CreateObject(4165,-1937.273803,-1668.089843,496.136596,0.000000,0.000000,0.000000);
    CreateObject(4168,-1799.352172,-1668.042968,496.136596,0.000000,0.000000,0.000000);
    CreateObject(1696,-2005.802124,-1680.744750,496.136596,0.000000,0.000000,0.000000);
    CreateObject(1655,-1724.958496,-1662.484619,497.211120,0.000000,0.000000,268.000000);
    CreateObject(1655,-1725.340698,-1673.870483,497.050628,0.000000,0.000000,4224.000000);
    CreateObject(1632,-1726.351196,-1667.717163,497.050628,1084.000000,3600.000000,2788.000000);
    CreateObject(1634,-1720.912231,-1667.889404,500.267852,736.000000,0.000000,7828.000000);
    CreateObject(1633,-1718.319824,-1667.965209,503.413818,32.000000,0.000000,268.000000);
    CreateObject(16778,-1806.542724,-1660.203613,497.042846,0.000000,0.000000,0.000000);
    CreateObject(1227,-1806.147094,-1660.276245,497.207916,0.000000,0.000000,0.000000);
    CreateObject(13801,-1834.301513,-1659.138427,497.058471,0.000000,0.000000,0.000000);
    CreateObject(1358,-1860.409790,-1660.175903,497.215881,0.000000,0.000000,420.000000);
    CreateObject(1634,1559.260864,-1313.433959,333.467376,0.000000,0.000000,352.000000);
    CreateObject(1634,1562.375488,-1314.327270,333.453186,0.000000,0.000000,1412.000000);
    CreateObject(1655,1562.151977,-1310.548461,335.780273,392.000000,0.000000,344.000000);
    CreateObject(11417,-2193.707763,-1623.126708,482.531555,0.000000,0.000000,616.000000);
    CreateObject(3374,-2112.139160,-1617.322753,498.396026,0.000000,0.000000,0.000000);
	return 1;
}

public VHPBarUpdate()
{
	for(new i=0; i<MAX_PLAYERS; i++){
		TextDrawHideForPlayer(i,vehiclehpbar[0]);
		TextDrawHideForPlayer(i,vehiclehpbar[1]);
		TextDrawHideForPlayer(i,vehiclehpbar[2]);
		TextDrawHideForPlayer(i,vehiclehpbar[3]);
		TextDrawHideForPlayer(i,vehiclehpbar[4]);
		TextDrawHideForPlayer(i,vehiclehpbar[5]);
		TextDrawHideForPlayer(i,vehiclehpbar[6]);
		TextDrawHideForPlayer(i,vehiclehpbar[7]);
		TextDrawHideForPlayer(i,vehiclehpbar[8]);
		TextDrawHideForPlayer(i,vehiclehpbar[9]);
		TextDrawHideForPlayer(i,vehiclehpbar[10]);
		TextDrawHideForPlayer(i,vehiclehpbar[11]);
		if(IsPlayerInAnyVehicle(i) == 1 && PlayerInfo[i][vhpb] == 1){
			new vehicleid;
			vehicleid = GetPlayerVehicleID(i);
			new Float:vhp;
			GetVehicleHealth(vehicleid,vhp);
			if(vhp >= 0 && vhp <= 249){
			    TextDrawShowForPlayer(i,vehiclehpbar[0]);
			}
			if(vhp >= 250 && vhp <= 317){
			    TextDrawShowForPlayer(i,vehiclehpbar[1]);
			}
			else if(vhp >= 318 && vhp <= 385){
				TextDrawShowForPlayer(i,vehiclehpbar[2]);
			}
			else if(vhp >= 386 && vhp <= 453){
				TextDrawShowForPlayer(i,vehiclehpbar[3]);
			}
			else if(vhp >= 454 && vhp <= 521){
				TextDrawShowForPlayer(i,vehiclehpbar[4]);
			}
			else if(vhp >= 522 && vhp <= 589){
				TextDrawShowForPlayer(i,vehiclehpbar[5]);
			}
			else if(vhp >= 590 && vhp <= 657){
				TextDrawShowForPlayer(i,vehiclehpbar[6]);
			}
			else if(vhp >= 658 && vhp <= 725){
				TextDrawShowForPlayer(i,vehiclehpbar[7]);
			}
			else if(vhp >= 726 && vhp <= 793){
				TextDrawShowForPlayer(i,vehiclehpbar[8]);
			}
			else if(vhp >= 794 && vhp <= 861){
				TextDrawShowForPlayer(i,vehiclehpbar[9]);
			}
			else if(vhp >= 862 && vhp <= 929){
				TextDrawShowForPlayer(i,vehiclehpbar[10]);
			}
			else if(vhp >= 930 && vhp <= 1000){
				TextDrawShowForPlayer(i,vehiclehpbar[11]);
			}
		}
	}
	return 1;
}

public ctimer()
{
    if (cseconds)
    {
        format(cstring,6,"~w~%d", cseconds-1);
        GameTextForAll(cstring,1100,4);
        SoundForAll(1056);
        cseconds --;
        if (!cseconds)
        {
            GameTextForAll("~r~GO GO GO!!!",2000,4);
            SoundForAll(1057);
            for (new i = 0; i < MAX_PLAYERS; i ++)
    		{
        		if (IsPlayerConnected(i)) SetTimer("resetcount",2000,0);
   			}
        }
    }
}

stock SoundForAll(sound)
{
    for (new i = 0; i <= MAX_PLAYERS; i ++)
    {
        if (IsPlayerConnected(i) == 1) {
			PlayerPlaySound(i,sound,0.0,0.0,0.0);
		}
    }
}
//==========================Selection Screen Stuff==============================
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerClass(playerid, classid);
	gPlayerClass[playerid] = classid;
//--------------------------Selection Screen Colors-----------------------------
	switch (classid)
	{
	    //-------------------------------SF Worker
	    case 0:
		{
			GameTextForPlayer(playerid, "~r~SF WORKER", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2109.7576,184.2289,35.1503);
			SetPlayerFacingAngle(playerid,160.3343);
			SetPlayerCameraPos(playerid, -2108.96,175.01,36.31);
			SetPlayerCameraLookAt(playerid, -2109.7576,184.2289,35.1503);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-2109.7576,184.2289,35.1503);
		}
		//-------------------------------SF Pimp
		case 1:
		{
			GameTextForPlayer(playerid, "~r~SF PIMP", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2718.6787,1369.0715,7.1875);
			SetPlayerFacingAngle(playerid,150.9731);
			SetPlayerCameraPos(playerid, -2722.37,1362.35,9.08);
			SetPlayerCameraLookAt(playerid, -2718.6787,1369.0715,7.1875);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-2718.6787,1369.0715,7.1875);
		}
		//-------------------------------SF Golfer
		case 2:
		{
			GameTextForPlayer(playerid, "~r~SF GOLFER", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2457.8726,-259.3923,39.6499);
			SetPlayerFacingAngle(playerid,91.5298);
			SetPlayerCameraPos(playerid, -2463.7385,-260.9094,39.5841);
			SetPlayerCameraLookAt(playerid, -2457.8726,-259.3923,39.6499);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-2457.8726,-259.3923,39.6499);
		}
		//-------------------------------SF Triad
		case 3:
		{
			GameTextForPlayer(playerid, "~r~SF TRIAD", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2193.5981,641.5383,49.4429);
			SetPlayerFacingAngle(playerid,354.6778);
			SetPlayerCameraPos(playerid, -2194.3101,645.1630,49.4375);
			SetPlayerCameraLookAt(playerid, -2193.5981,641.5383,49.4429);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-2193.5981,641.5383,49.4429);
		}
		//-------------------------------SF Army
	 	case 4:
	 	{
			GameTextForPlayer(playerid, "~r~SF ARMY", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -1314.7040,445.2622,7.1875);
			SetPlayerFacingAngle(playerid,217.3818);
			SetPlayerCameraPos(playerid, -1314.56,435.76,8.94);
			SetPlayerCameraLookAt(playerid, -1314.7040,445.2622,7.1875);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1314.7040,445.2622,7.1875);
		}
		//-------------------------------SF Valet
		case 5:
		{
			GameTextForPlayer(playerid, "~r~SF VALET", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -1731.0652,956.3801,24.8828);
			SetPlayerFacingAngle(playerid,358.6085);
			SetPlayerCameraPos(playerid, -1731.92,960.97,26.35);
			SetPlayerCameraLookAt(playerid, -1731.0652,956.3801,24.8828);
			PlayerPlaySound(playerid,SOUND_MUSIC1, -1731.0652,956.3801,24.8828);
		}
		//-------------------------------SF Medic
	 	case 6:
		{
			GameTextForPlayer(playerid, "~r~SF MEDIC", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2593.1321,608.7902,14.4531);
			SetPlayerFacingAngle(playerid,270.5395);
			SetPlayerCameraPos(playerid, -2590.15,608.88,14.89);
			SetPlayerCameraLookAt(playerid, -2593.1321,608.7902,14.4531);
			PlayerPlaySound(playerid,SOUND_MUSIC1, -2593.1321,608.7902,14.4531);
		}
		//-------------------------------SF FBI
		case 7:
		{
			GameTextForPlayer(playerid, "~r~SF FBI", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -1622.7039,673.5800,-4.9063);
			SetPlayerFacingAngle(playerid,150.9650);
			SetPlayerCameraPos(playerid, -1623.80,670.28,-3.78);
			SetPlayerCameraLookAt(playerid, -1622.7039,673.5800,-4.9063);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1622.7039,673.5800,-4.9063);
		}
		//-------------------------------SF Chicken
		case 8:
		{
			GameTextForPlayer(playerid, "~r~SF CHICKEN", 2000, 5);
			SetPlayerInterior(playerid,9);
			SetPlayerPos(playerid, 369.7185,-4.4895,1001.8147);
			SetPlayerFacingAngle(playerid,180.9218);
			SetPlayerCameraPos(playerid, 369.53,-7.95,1001.86);
			SetPlayerCameraLookAt(playerid, 369.72,-4.49,1001.86);
			PlayerPlaySound(playerid,SOUND_MUSIC1,369.7185,-4.4895,1001.8147);
		}
		//-------------------------------SF Rich
		case 9:
		{
			GameTextForPlayer(playerid, "~r~SF RICH", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -2680.6270,936.2209,79.7031);
			SetPlayerFacingAngle(playerid,2.7078);
			SetPlayerCameraPos(playerid, -2680.65,938.96,80.53);
			SetPlayerCameraLookAt(playerid, -2680.6270,936.2209,79.7031);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-2680.6270,936.2209,79.7031);
		}
		//-------------------------------SF Pilot
		case 10:
		{
			GameTextForPlayer(playerid, "~r~SF PILOT", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -1339.0934,-299.9974,14.1484);
			SetPlayerFacingAngle(playerid,173.2872);
			SetPlayerCameraPos(playerid, -1337.09,-306.75,15.64);
			SetPlayerCameraLookAt(playerid, -1339.0934,-299.9974,14.1484);
			PlayerPlaySound(playerid,SOUND_MUSIC1, -1339.0934,-299.9974,14.1484);
		}
		//-------------------------------SF Da Nang
	  	case 11:
		{
			GameTextForPlayer(playerid, "~r~SF DA NANG", 2000, 5);
			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid, -1421.1034,1488.5735,11.8084);
			SetPlayerFacingAngle(playerid,267.8500);
			SetPlayerCameraPos(playerid, -1417.55,1488.98,11.74);
			SetPlayerCameraLookAt(playerid, -1421.1034,1488.5735,11.8084);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Balla
		case 12:
		{
		    GameTextForPlayer(playerid,"~p~LV Balla",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Balla
	    case 13:
		{
		    GameTextForPlayer(playerid,"~p~LV Balla",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Balla
	    case 14:
		{
		    GameTextForPlayer(playerid,"~p~LV Balla",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Grove
	    case 15:
		{
		    GameTextForPlayer(playerid,"~g~LV Grove",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Grove
	    case 16:
		{
		    GameTextForPlayer(playerid,"~g~LV Grove",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Grove
	    case 17:
		{
		    GameTextForPlayer(playerid,"~g~LV Grove",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Vago
	    case 18:
		{
		    GameTextForPlayer(playerid,"~y~LV Vago",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
		}
		//-------------------------------LV Vago
	    case 19:
		{
		    GameTextForPlayer(playerid,"~y~LV Vago",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Azteca
	    case 20:
		{
		    GameTextForPlayer(playerid,"~h~~b~LV Azteca",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Azteca
	    case 21:
		{
		    GameTextForPlayer(playerid,"~h~~b~LV Azteca",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Azteca
	    case 22:
		{
		    GameTextForPlayer(playerid,"~h~~b~LV Azteca",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Traid
	    case 23:
		{
		    GameTextForPlayer(playerid,"~r~LV Triad",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Traid
	    case 24:
		{
		    GameTextForPlayer(playerid,"~r~LV Triad",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Medic
	    case 25:
		{
		    GameTextForPlayer(playerid,"~b~LV Medic",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Medic
	    case 26:
		{
		    GameTextForPlayer(playerid,"~b~LV Medic",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Fireman
	    case 27:
		{
		    GameTextForPlayer(playerid,"~r~LV Fireman",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Cop
	    case 28:
		{
		    GameTextForPlayer(playerid,"~b~LV Cop",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Cop
	    case 29:
		{
		    GameTextForPlayer(playerid,"~b~LV Cop",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Cop
	    case 30:
		{
		    GameTextForPlayer(playerid,"~b~LV Cop",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Army
	    case 31:
		{
		    GameTextForPlayer(playerid,"~g~LV Army",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LVSwat
	    case 32:
		{
		    GameTextForPlayer(playerid,"~b~LV Swat",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 33:
		{
		    GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 34:
		{
		    GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 35:
		{
		    GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
		    SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 36:
		{
	    	GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
	    	SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 37:
		{
	    	GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
	    	SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 38:
		{
	    	GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
	    	SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
		//-------------------------------LV Civillian
	    case 39:
		{
	    	GameTextForPlayer(playerid,"~w~LV Civilian",700,6);
	    	SetPlayerPos(playerid, 2182.2908,1285.7317,42.9620);
			SetPlayerFacingAngle(playerid, 89.8567);
			SetPlayerCameraPos(playerid, 2177.5269,1285.3782,44.0867);
			SetPlayerCameraLookAt(playerid, 2182.2908,1285.7317,42.9620);
			PlayerPlaySound(playerid,SOUND_MUSIC1,-1421.1034,1488.5735,11.8084);
	    }
	    //-------------------------------LS Cop
	    case 40:
	    {
	    	GameTextForPlayer(playerid, "~g~Cop", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Cop
	    case 41:
	    {
	        GameTextForPlayer(playerid, "~g~Cop", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Grove
	    case 42:
	    {
	    	GameTextForPlayer(playerid, "~g~Grove", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Grove
	    case 43:
	    {
	    	GameTextForPlayer(playerid, "~g~Grove", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Vagos
	    case 44:
	    {
	    	GameTextForPlayer(playerid, "~g~Vagos", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Vagos
	    case 45:
	    {
	    	GameTextForPlayer(playerid, "~g~Vagos", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Aztecas
	    case 46:
	    {
	        GameTextForPlayer(playerid, "~g~Aztecas", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Aztecas
	    case 47:
	    {
	        GameTextForPlayer(playerid, "~g~Aztecas", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Ballas
	    case 48:
	    {
	    	GameTextForPlayer(playerid, "~g~Ballas", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	    //-------------------------------LS Ballas
	    case 49:
	    {
	    	GameTextForPlayer(playerid, "~g~Ballas", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
			    //-------------------------------LS PizzaBoy
	    case 50:
	    {
	    	GameTextForPlayer(playerid, "~g~PizzaBoy", 500, 3);
	    	SetPlayerInterior(playerid,14);
			SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
			SetPlayerFacingAngle(playerid, 90.0);
			SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
			SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);
			PlayerPlaySound(playerid,SOUND_MUSIC1,258.4893,-41.4008,1002.0234);
		}
	}
	return 1;
}

SetPlayerClass(playerid, classid)
{
	switch(classid) {
	    case 0:
		{
	    	PlayerInfo[playerid][team] = TEAM_WORKER;
		}
	    case 1: {
	    	PlayerInfo[playerid][team] = TEAM_PIMP;
		}
		case 2: {
	    	PlayerInfo[playerid][team] = TEAM_GOLFER;
		}
		case 3: {
	    	PlayerInfo[playerid][team] = TEAM_TRIAD;
		}
		case 4: {
	    	PlayerInfo[playerid][team] = TEAM_ARMY;
		}
		case 5: {
	    	PlayerInfo[playerid][team] = TEAM_VALET;
		}
	    case 6: {
	    	PlayerInfo[playerid][team] = TEAM_MEDIC;
		}
		case 7: {
	    	PlayerInfo[playerid][team] = TEAM_FBI;
		}
		case 8: {
	    	PlayerInfo[playerid][team] = TEAM_CHICKEN;
		}
		case 9: {
	    	PlayerInfo[playerid][team] = TEAM_RICH;
		}
		case 10: {
	    	PlayerInfo[playerid][team] = TEAM_PILOT;
		}
	    case 11: {
	    	PlayerInfo[playerid][team] = TEAM_DANANG;
		}
	    case 12: {
	    	PlayerInfo[playerid][team] = TEAM_LVBALLA;
		}
	    case 13: {
	    	PlayerInfo[playerid][team] = TEAM_LVBALLA;
		}
	    case 14: {
		    PlayerInfo[playerid][team] = TEAM_LVBALLA;
		}
	    case 15: {
		    PlayerInfo[playerid][team] = TEAM_LVGROVE;
		}
	    case 16: {
		 	PlayerInfo[playerid][team] = TEAM_LVGROVE;
		}
	    case 17: {
	 		PlayerInfo[playerid][team] = TEAM_LVGROVE;
		}
	    case 18: {
	  	 	PlayerInfo[playerid][team] = TEAM_LVVAGO;
		}
	    case 19: {
	   		PlayerInfo[playerid][team] = TEAM_LVVAGO;
	    }
	    case 20: {
	   		PlayerInfo[playerid][team] = TEAM_LVAZTEC;
	    }
	    case 21: {
	    	PlayerInfo[playerid][team] = TEAM_LVAZTEC;
	    }
	    case 22: {
	    	PlayerInfo[playerid][team] = TEAM_LVAZTEC;
	    }
	    case 23: {
	    	PlayerInfo[playerid][team] = TEAM_LVTRIAD;
	    }
	    case 24: {
	    	PlayerInfo[playerid][team] = TEAM_LVTRIAD;
	    }
	    case 25: {
	    	PlayerInfo[playerid][team] = TEAM_LVMEDIC;
	    }
	    case 26: {
	    	PlayerInfo[playerid][team] = TEAM_LVMEDIC;
	    }
	    case 27: {
	    	PlayerInfo[playerid][team] = TEAM_LVFIRE;
	    }
	    case 28: {
	    	PlayerInfo[playerid][team] = TEAM_LVCOP;
    	}
    	case 29: {
    		PlayerInfo[playerid][team] = TEAM_LVCOP;
    	}
    	case 30: {
    		PlayerInfo[playerid][team] = TEAM_LVCOP;
    	}
    	case 31: {
    		PlayerInfo[playerid][team] = TEAM_LVARMY;
    	}
    	case 32: {
    		PlayerInfo[playerid][team] = TEAM_LVCOP;
    	}
    	case 33: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
	    case 34: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
    	case 35: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
    	case 36: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
    	case 37: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
    	case 38: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
    	}
    	case 39: {
    		PlayerInfo[playerid][team] = TEAM_LVCIV;
		}
    	case 40: {
    		PlayerInfo[playerid][team] = TEAM_LSCOP;
		}
    	case 41: {
    		PlayerInfo[playerid][team] = TEAM_LSCOP2;
		}
    	case 42: {
    		PlayerInfo[playerid][team] = TEAM_LSGROVE;
		}
    	case 43: {
    		PlayerInfo[playerid][team] = TEAM_LSGROVE2;
		}
    	case 44: {
    		PlayerInfo[playerid][team] = TEAM_LSVAGO;
		}
    	case 45: {
    		PlayerInfo[playerid][team] = TEAM_LSVAGO2;
		}
    	case 46: {
    		PlayerInfo[playerid][team] = TEAM_LSAZTECA;
		}
    	case 47: {
    		PlayerInfo[playerid][team] = TEAM_LSAZTECA2;
		}
    	case 48: {
    		PlayerInfo[playerid][team] = TEAM_LSBALLA;
		}
    	case 49: {
    		PlayerInfo[playerid][team] = TEAM_LSBALLA2;
		}
    	case 50: {
    		PlayerInfo[playerid][team] = TEAM_LSPIZZABOY;
		}
	}
}
//================================Random Functions==============================
public SystemMsg(playerid,msg[])
{
	if ((IsPlayerConnected(playerid))&&(strlen(msg)>0))
	{
		SendClientMessage(playerid,COLOR_SYSTEM,msg);
	}
	return 1;
}
//===============================Kick timer=====================================
public KickTimer(playerid)
{
	if(PlayerInfo[playerid][logged] == 0) {
	    SendClientMessage(playerid,COLOR_BRIGHTRED, "You have been kicked from the server for Login Timeout!");
	    Kick(playerid);
	    new kickmess[256];
	    format(kickmess,sizeof(kickmess),"%s was kicked from the server. Reason: Login Timeout!",PlayerInfo[playerid][name]);
        SendClientMessage(playerid,COLOR_BRIGHTRED,kickmess);
	}
}
//==============================On Player Connect===============================
public OnPlayerConnect(playerid)
{
	playerGang[playerid]=0;
	gangInvite[playerid]=0;
	format(sstring, sizeof(sstring), ".");
	stxt[playerid] = TextDrawCreate(200,350,sstring);
	TextDrawHideForPlayer(playerid, stxt[playerid]);
	TextDrawColor(stxt[playerid], 0xFF0000AA);
	TextDrawSetShadow(stxt[playerid], 2);
	new file[256],playername[256],string[256]; file = GetPlayerFile(playerid);
	GetPlayerName(playerid, playername, sizeof(playername));
	if(Config[DisplayServerMessage]) { format(string,sizeof(string),"Server Message: %s",dini_Get("/xadmin/Configuration/Configuration.ini","ServerMessage")); SendClientMessage(playerid,green,string); }
	format(string, sizeof(string), "^^^ %s has joined the server.(Connect) ^^^", playername);
	SendClientMessageToAll(COLOR_GREY, string);
	if(!dini_Exists(file)) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
		format(string, sizeof(string), "Welcome %s, to the new HC4L gang server", playername);
		SendClientMessage(playerid, COLOR_ORANGE, string);
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
		SendClientMessage(playerid,COLOR_YELLOW, "You have been given $25000 starting money since you have no saved money as of yet!");
 		SendClientMessage(playerid,COLOR_YELLOW, "You can register your current player name with '/register [password]'");
       	SendClientMessage(playerid,COLOR_ORANGE, "You must register and login to gain access to money, bank and vehicle saving options!");
       	SendClientMessage(playerid, COLOR_LIGHTBLUE, "Type /help to get started and type /credits for a list of ppl who contributed.");
       	SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
       	Variables[playerid][LoggedIn] = false;
       	Variables[playerid][Registered] = false;
       	Variables[playerid][Level] = 0;
		GivePlayerMoney(playerid,25000);
	}
    if(dini_Exists(file)) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
		format(string, sizeof(string), "Welcome %s, to the new HC4L gang server", playername);
		SendClientMessage(playerid, COLOR_ORANGE, string);
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
		new tmp[50],tmp2[256]; GetPlayerIp(playerid,tmp,50); tmp2 = dini_Get(file,"IP");
		if(!strcmp(tmp,tmp2,true)) {
	  		format(string,256,"Welcome back, %s. You have automatically been logged in.",playername);
	  		SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
	  		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
	  		PlayerInfo[playerid][logged] = 1;
	    	Variables[playerid][LoggedIn] = true;
	    	Variables[playerid][Registered] = GetPlayerFileVar(playerid,"Registered");
			Variables[playerid][Level] = GetPlayerFileVar(playerid,"Level");
			Variables[playerid][Wired] = GetPlayerFileVar(playerid,"Wired");
			Variables[playerid][Jailed] = GetPlayerFileVar(playerid,"Jailed");
			if(Variables[playerid][Wired]) SetUserInt(playerid,"WiredWarnings",Config[WiredWarnings]);
			if(Variables[playerid][Level] > Config[MaxLevel]) { Variables[playerid][Level] = Config[MaxLevel]; SetUserInt(playerid,"Level",Config[MaxLevel]); }
	    	LoadPlayer(playerid);
	   	 	ResetPlayerMoney(playerid);
	      	GivePlayerMoney(playerid,PlayerInfo[playerid][pcash]);
		}
	 	else {
			format(string,sizeof(string),"The name %s, is already registered on this server. Please login or you will be disconnected in 60 seconds!",playername);
	 		SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
	       	SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
	       	PlayerInfo[playerid][logged] = 0;
	       	Variables[playerid][LoggedIn] = false;
	       	Variables[playerid][Registered] = GetPlayerFileVar(playerid,"Registered");
			SetTimerEx("KickTimer",60000,0,"i",playerid);
		}
	}
    speedo[playerid] = 1;
	PlayerInfo[playerid][vhpb] = 1;
	Calling[playerid] = -1;
	Answered[playerid] = 0;
	Callerid[playerid] = 0;
	
	checktimer = SetTimerEx("CheckSpeedo", 500, 1,"i",playerid);
	backtimer = SetTimerEx("BackupInfo",120000,1,"i",playerid);
	phonetimer = SetTimerEx("PhoneCut",1000,1,"i",playerid);
	counttimer = SetTimerEx("ctimer",1000,1,"i",playerid);
	paytimer = SetTimerEx("PayDay",PD_TIMER,1,"i",playerid);
	vstimer = SetTimerEx("vehiclestreamer",300,1,"i",playerid);
	mmstimer = SetTimerEx("minimapstreamer",300,1,"i",playerid);
	pstimer = SetTimerEx("pickupstreamer",300,1,"i",playerid);
	//SendClientMessage(playerid,0xC0C0C0FF,"Please choose a language : /en (default is EN)");
}
//===========================Player and Vehicle Stuff===========================
stock LoadPlayer(playerid)
{
    new playername[256];
	new file[256]; file = GetPlayerFile(playerid);
	GetPlayerName(playerid, playername, sizeof(playername));
 	if(dini_Exists(file)) {
 	        PlayerInfo[playerid][name] = playername;
 	        PlayerInfo[playerid][admin] = Variables[playerid][Level];
			PlayerInfo[playerid][vowned] = GetPlayerFileVar(playerid,"Vehicle");
			PlayerInfo[playerid][vowner] = GetPlayerFileVar(playerid,"Vowner");
			PlayerInfo[playerid][pcash] = GetPlayerFileVar(playerid,"Money");
			PlayerInfo[playerid][bank] = GetPlayerFileVar(playerid,"Bank");
			PlayerInfo[playerid][bowner] = GetPlayerFileVar(playerid,"Bowner");
			PlayerInfo[playerid][bowned] = GetPlayerFileVar(playerid,"Bowned");
	}
}

stock SavePlayer(playerid)
{
    new imoney,playername[256]; imoney = GetPlayerMoney(playerid);
	new file[256]; file = GetPlayerFile(playerid);
	GetPlayerName(playerid, playername, sizeof(playername));
 	if(!dini_Exists(file)) {}
 	else {
	    SetUserInt(playerid,"Money",imoney);
	    SetUserInt(playerid,"Vehicle",PlayerInfo[playerid][vowned]);
	    SetUserInt(playerid,"Vowner",PlayerInfo[playerid][vowner]);
	    SetUserInt(playerid,"Bank",PlayerInfo[playerid][bank]);
	    SetUserInt(playerid,"Bowner",PlayerInfo[playerid][bowner]);
	    SetUserInt(playerid,"Bowned",PlayerInfo[playerid][bowned]);
	    }
}

stock ResetOfflinePlayerFileV(pname[])
{
    new fname[256],intname[256];
    format(intname,sizeof(intname),"%s",pname);
    format(fname,sizeof(fname),"/xadmin/Users/%s.ini",udb_encode(intname));
    if(dini_Exists(fname)) {
        dini_IntSet(fname,"Vehicle",0);
        dini_IntSet(fname,"Vowner",0);
	}
}

stock ResetOfflinePlayerFileB(pname[])
{
    new fname[256],intname[256];
    format(intname,sizeof(intname),"%s",pname);
    format(fname,sizeof(fname),"/xadmin/Users/%s.ini",udb_encode(intname));
    if(dini_Exists(fname)) {
        dini_IntSet(fname,"Bowned",0);
        dini_IntSet(fname,"Bowner",0);
    }
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    for(new i = 0; i < MAX_PLAYERS; i++) if(Spec[i][SpectateID] == playerid && Spec[i][Spectating]) { TogglePlayerSpectating(i,false); SetPlayerInterior(i,GetPlayerInterior(playerid)); TogglePlayerSpectating(i,true); PlayerSpectateVehicle(i,vehicleid); }
    passenger[playerid] = ispassenger;
    /*passenger[playerid] = ispassenger;
	if(passenger[playerid] == 0) {
	        if(PlayerInfo[playerid][logged] == 1) {
	            new playername[256];
			    GetPlayerName(playerid,playername,sizeof(playername));
    	   		 if (strcmp(VehicleInfo[streamid][owner],playername,false) == 0) {
					new string[256];
					format(string, sizeof(string), "Welcome to your %s %s, please drive carefully!", VehicleInfo[streamid][name], PlayerInfo[playerid][name]);
					SendClientMessage(playerid, COLOR_GREEN, string);
					return 1;
				}
    	    	if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
               		 if(VehicleInfo[streamid][buybar] == 1) {
                		new string[256];
			        	format(string,sizeof(string),"This %s has been set as non-buyable by server administration!", VehicleInfo[streamid][name]);
			        	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			        	return 1;
			    	}
			    	new string[256];
    	        	format(string, sizeof(string), "This %s is for sale and costs $%d, type /vmenu to see vehicle options.",VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost]);
    	        	SendClientMessage(playerid, COLOR_YELLOW, string);
    	        	return 1;
				}
   				else {
    	        	new string[256];
    	        	format(string, sizeof(string), "This %s belongs to %s, and cannot be purchased.", VehicleInfo[streamid][name], VehicleInfo[streamid][owner]);
    	        	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
    	        	return 1;
				}
			}
			else {
			    new playername[256];
			    GetPlayerName(playerid,playername,sizeof(playername));
			    if (strcmp(VehicleInfo[streamid][owner],playername,false) == 0) {
					new string[256];
					format(string, sizeof(string), "Welcome to your %s %s, please drive carefully! Remember, you must be logged in to acces vehicle controls.", VehicleInfo[streamid][name], playername);
					SendClientMessage(playerid, COLOR_GREEN, string);
					return 1;
				}
    	    	if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
               		 if(VehicleInfo[streamid][buybar] == 1) {
                		new string[256];
			        	format(string,sizeof(string),"This %s has been set as non-buyable by server administration!", VehicleInfo[streamid][name]);
			        	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			        	return 1;
			    	}
			    	new string[256];
    	        	format(string, sizeof(string), "This %s is for sale and costs $%d, You must be logged in to purchase a vehicle.",VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost]);
    	        	SendClientMessage(playerid, COLOR_YELLOW, string);
    	        	return 1;
				}
   				else {
    	        	new string[256];
    	        	format(string, sizeof(string), "This %s belongs to %s, and cannot be purchased.", VehicleInfo[streamid][name], VehicleInfo[streamid][owner]);
    	        	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
    	        	return 1;
				}
			}
    }
	return 1;*/
}

stock SendVWelcome(playerid)
{
	TextDrawHideForPlayer(playerid, stxt[playerid]);
	TextDrawShowForPlayer(playerid, stxt[playerid]);
	new streamid = GetPlayerVehicleStreamID(playerid);
	SetVehicleUsed(GetPlayerVehicleID(playerid),true);
	for(new d=0; d<3; d++) {
		if(GetVehicleModel(GetPlayerVehicleID(playerid)) == pbike[d][0]) {
			speedo[playerid] = 2;
		}
	}
	if(passenger[playerid] == 0)
	{
		if(PlayerInfo[playerid][logged] == 1)
		{
			new playername[256];
		    GetPlayerName(playerid,playername,sizeof(playername));
			if (strcmp(VehicleInfo[streamid][owner],playername,false) == 0) {
				new string[256];
				format(string, sizeof(string), "Welcome to your %s %s, please drive carefully!", VehicleInfo[streamid][name], PlayerInfo[playerid][name]);
				SendClientMessage(playerid, COLOR_GREEN, string);
				return 1;
			}
    	   	if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
				if(VehicleInfo[streamid][buybar] == 1) {
					new string[256];
			       	format(string,sizeof(string),"This %s has been set as non-buyable by server administration!", VehicleInfo[streamid][name]);
			       	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			       	return 1;
  				}
			   	new string[256];
    	       	format(string, sizeof(string), "This %s is for sale and costs $%d, type /vmenu to see vehicle options.",VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost]);
    	       	SendClientMessage(playerid, COLOR_YELLOW, string);
    	       	return 1;
			}
   			else {
    	       	new string[256];
    	       	format(string, sizeof(string), "This %s belongs to %s, and cannot be purchased.", VehicleInfo[streamid][name], VehicleInfo[streamid][owner]);
    	       	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
    	       	return 1;
			}
		}
		else {
		    new playername[256];
		    GetPlayerName(playerid,playername,sizeof(playername));
		    if (strcmp(VehicleInfo[streamid][owner],playername,false) == 0) {
				new string[256];
				format(string, sizeof(string), "Welcome to your %s %s, please drive carefully! Remember, you must be logged in to acces vehicle controls.", VehicleInfo[streamid][name], playername);
				SendClientMessage(playerid, COLOR_GREEN, string);
				return 1;
			}
   	    	if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
				if(VehicleInfo[streamid][buybar] == 1) {
               		new string[256];
			       	format(string,sizeof(string),"This %s has been set as non-buyable by server administration!", VehicleInfo[streamid][name]);
			       	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			       	return 1;
			   	}
			   	new string[256];
    	       	format(string, sizeof(string), "This %s is for sale and costs $%d, You must be logged in to purchase a vehicle.",VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost]);
    	       	SendClientMessage(playerid, COLOR_YELLOW, string);
    	       	return 1;
			}
   			else {
    	       	new string[256];
    	       	format(string, sizeof(string), "This %s belongs to %s, and cannot be purchased.", VehicleInfo[streamid][name], VehicleInfo[streamid][owner]);
    	       	SendClientMessage(playerid, COLOR_BRIGHTRED, string);
    	       	return 1;
			}
		}
    }
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	if(newstate == PLAYER_STATE_DRIVER) {
	    SendVWelcome(playerid);
	    new streamid = GetPlayerVehicleStreamID(playerid);
	    new string[256];
        if(VehicleInfo[streamid][asecure] == 1) {
            if(PlayerInfo[playerid][admin] > 4) {
				format(carmess,sizeof(carmess),"This %s is currently set for admin use only. It will eject anyone who is not an admin.",VehicleInfo[streamid][name]);
                SendClientMessage(playerid,COLOR_ORANGE,carmess);
 		    	return 1;
			}
     		GetPlayerPos(playerid,ta,tb,tc);
     		SetPlayerPos(playerid,ta,tb,tc+5);
 			format(string, sizeof(string), "This %s has been set to allow admin/moderator control only and you are prohibited from using it.",VehicleInfo[streamid][name]);
			SendClientMessage(playerid, COLOR_ORANGE, string);
			return 1;
		}
		if(VehicleInfo[streamid][asecure] == 2) {
		    if(PlayerInfo[playerid][admin] > 4) {
		        format(carmess,sizeof(carmess),"This %s is currently set for admin use only. It will kill anyone who is not an admin.",VehicleInfo[streamid][name]);
                SendClientMessage(playerid,COLOR_ORANGE,carmess);
 		    	return 1;
			}
			new Float:pos[3];
			GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
			CreateExplosion(pos[0],pos[1],pos[2],4,6);
 			format(string, sizeof(string), "Server administration has set this %s to kill anyone who try's to drive it...R.I.P loser!",VehicleInfo[streamid][name]);
			SendClientMessage(playerid, COLOR_ORANGE, string);
			format(string, sizeof(string), "%s just tried to steal an admin only %s and was killed by the car bomb...R.I.P loser!",PlayerInfo[playerid][name],VehicleInfo[streamid][name]);
			SendClientMessageToAll(COLOR_ORANGE, string);
			return 1;
		}
		if(VehicleInfo[streamid][secure] == 0) {
    	    if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
				SendClientMessage(playerid, COLOR_GREEN, "Your vehicle security system is currently deactivated.");
		    	return 1;
			}
		}
	 	if(VehicleInfo[streamid][secure] == 1) {
    	    if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
				SendClientMessage(playerid, COLOR_GREEN, "Your vehicle security system is currently set to eject intruders.");
		    	return 1;
			}
			if(PlayerInfo[playerid][admin] > 4) {
			    format(string, sizeof(string), "The owner of this %s (%s), has secured this vehicle but as ADMIN you can still use it.",VehicleInfo[streamid][name],VehicleInfo[streamid][owner]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				return 1;
			}
     		GetPlayerPos(playerid,ta,tb,tc);
     		SetPlayerPos(playerid,ta,tb,tc+5);
 			format(string, sizeof(string), "The owner of this %s (%s), has secured this vehicle and you are prohibited from using it.", VehicleInfo[streamid][name],VehicleInfo[streamid][owner]);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			return 1;
		}
 		if(VehicleInfo[streamid][secure] == 2) {
    	    if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
				SendClientMessage(playerid, COLOR_GREEN, "Your vehicle security system is currently set to kill intruders.");
		    	return 1;
			}
			if(PlayerInfo[playerid][admin] > 4) {
			    format(string, sizeof(string), "The owner of this %s (%s), has set the vehicle to kill intruders but as ADMIN you can still use it.", VehicleInfo[streamid][name],VehicleInfo[streamid][owner]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				return 1;
			}
			new Float:pos[3];
			GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
			CreateExplosion(pos[0],pos[1],pos[2],4,6);
 			format(string, sizeof(string), "The owner of this %s (%s), has set this vehicle to kill anyone who try's to drive it...R.I.P loser!",VehicleInfo[streamid][name],VehicleInfo[streamid][owner]);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			format(string, sizeof(string), "%s just tried to steal %s's %s and was killed by the car bomb...R.I.P loser!",PlayerInfo[playerid][name],VehicleInfo[streamid][owner],VehicleInfo[streamid][name]);
			SendClientMessageToAll(COLOR_LIGHTBLUE, string);
			return 1;
		}
	}
	return 1;
}
public OnVehicleDeath(vehicleid)
{
	SetTimerEx("DeathProcess",10000,0,"x",vehicleid);
	VehicleInfo[GetVehicleStreamID(vehicleid)][limbo] = 1;
	return 1;
}

public DeathProcess(vehicleid)
{
	new i = GetVehicleStreamID(vehicleid);
	DestroyVehicle(vehicleid);
	VehicleInfo[i][idnum] = CreateVehicle(VehicleInfo[i][model], VehicleInfo[i][x_spawn], VehicleInfo[i][y_spawn], VehicleInfo[i][z_spawn], VehicleInfo[i][za_spawn], VehicleInfo[i][color_1], VehicleInfo[i][color_2],20000);
    avstream[VehicleInfo[i][idnum]] = i;
 	SetTimerEx("ModVehicle",100,0,"i",i);
	VehicleInfo[i][fspawn] = 0;
	vehused[vehicleid] = 0;
	VehicleInfo[i][limbo] = 0;
}

public OnVehicleMod(vehicleid,componentid)
{
	new streamid = GetVehicleStreamID(vehicleid);
	SaveComponent(streamid,componentid);
	return 1;
}

public OnVehiclePaintjob(vehicleid,paintjobid)
{
    new streamid = GetVehicleStreamID(vehicleid);
    SavePaintjob(streamid,paintjobid);
    return 1;
}

public OnVehicleRespray(vehicleid,color1,color2)
{
    new streamid = GetVehicleStreamID(vehicleid);
   	SaveColors(streamid,color1,color2);
    return 1;
}

public CallVehicleToPlayer(playerid)
{
    new streamid = PlayerInfo[playerid][vowned];
    if(VehicleInfo[streamid][spawned] == 0) {
    	if(Vstreamcount < MAX_ACTIVE_VEHICLES) {
			if(CountModels(vehcount) < MAX_ACTIVE_MODELS) {
			    new Float:x, Float:y, Float:z, Float:a;
				GetPlayerPos(playerid,x,y,z);
				GetPlayerFacingAngle(playerid, a);
				x += (3 * floatsin(-a, degrees));
				y += (3 * floatcos(-a, degrees));
				VehicleInfo[streamid][idnum] = CreateVehicle(VehicleInfo[streamid][model],x,y,z-0.35,a+90,VehicleInfo[streamid][color_1],VehicleInfo[streamid][color_2],20000);
                avstream[VehicleInfo[streamid][idnum]] = streamid;
				SetTimerEx("ModVehicle",100,0,"i",streamid);
                SetVehicleUsed(VehicleInfo[streamid][idnum],true);
				format(carmess,sizeof(carmess),"Your %s has been successfully transported to your location!",VehicleInfo[streamid][name]);
                VehicleInfo[streamid][fspawn] = 1;
				SendClientMessage(playerid, COLOR_GREEN, carmess);
				VehicleInfo[streamid][spawned] = 1;
				Vstreamcount++;
			}
			else {
			    SendClientMessage(playerid, COLOR_BRIGHTRED, "Your vehicle cannot be called to you as this server has reached maximum capacity for vehicles at this time.");
			}
		}
		else {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "Your vehicle cannot be called to you as this server has reached maximum capacity for vehicles at this time.");
		}
	}
	else {
	    new Float:x, Float:y, Float:z, Float:a;
		GetPlayerPos(playerid,x,y,z);
		GetPlayerFacingAngle(playerid, a);
		x += (3 * floatsin(-a, degrees));
		y += (3 * floatcos(-a, degrees));
		DestroyVehicle(VehicleInfo[streamid][idnum]);
		VehicleInfo[streamid][idnum] = CreateVehicle(VehicleInfo[streamid][model],x,y,z-0.35,a+90,VehicleInfo[streamid][color_1],VehicleInfo[streamid][color_2],20000);
        avstream[VehicleInfo[streamid][idnum]] = streamid;
		SetTimerEx("ModVehicle",100,0,"i",streamid);
 		SetVehicleUsed(VehicleInfo[streamid][idnum],true);
		format(carmess,sizeof(carmess),"Your %s has been successfully transported to your location!",VehicleInfo[streamid][name]);
        VehicleInfo[streamid][fspawn] = 1;
		SendClientMessage(playerid, COLOR_GREEN, carmess);
	}
	return 1;
}
//================================Reset Count===================================
public resetcount()
{
	for (new i = 0; i < MAX_PLAYERS; i ++)
	{
		if (IsPlayerConnected(i)) cCount[i] = 0;
	}
}
//=================================Announcer====================================
public announcer()
{
	for(new i=0;i<MAX_PLAYERS;i++) {
		if(IsPlayerConnected(i) && aMessage[i] == 1) {
		    aMessage[i] = 0;
		    return 1;
		}
	}
	return 1;
}
//============================On Player Exit Vehicle============================
public OnPlayerExitVehicle(playerid, vehicleid)
{
    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Spec[i][SpectateID] == playerid  && Spec[i][Spectating]) { TogglePlayerSpectating(i,false); SetPlayerInterior(i,GetPlayerInterior(playerid)); TogglePlayerSpectating(i,true); PlayerSpectatePlayer(i,playerid); }
	TextDrawHideForPlayer(playerid, stxt[playerid]);
	passenger[playerid] = 0;
	return 1;
}
//=============================On Player Spawn==================================
public OnPlayerSpawn(playerid)
{
    if(Variables[playerid][Jailed]) { SetPlayerInterior(playerid,3); SetPlayerPos(playerid,197.6661,173.8179,1003.0234); SetPlayerFacingAngle(playerid,0); }
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
		SendClientMessage(playerid,COLOR_YELLOW, "You have not logged in yet!");
		SendClientMessage(playerid,COLOR_YELLOW, "Please register your current player name with '/register [password]' and login with '/login [password]'");
		SendClientMessage(playerid, COLOR_BRIGHTRED, "-----------------------------------------------------------------------------------------------------------------------");
	}
	SetPlayerColor(playerid,COLOR_GREY);
	switch(PlayerInfo[playerid][team]) {
		case TEAM_WORKER: {
			GivePlayerWeapon(playerid,23,170);
			GivePlayerWeapon(playerid,25,60);
			GivePlayerWeapon(playerid,30,360);
			SetPlayerColor(playerid,COLOR_GREEN);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
				return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_PIMP: {
			GivePlayerWeapon(playerid,26,100);
			GivePlayerWeapon(playerid,29,360);
			GivePlayerWeapon(playerid,15,1);
			SetPlayerColor(playerid,COLOR_RED);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
				return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_GOLFER: {
			GivePlayerWeapon(playerid,25,80);
			GivePlayerWeapon(playerid,32,300);
			GivePlayerWeapon(playerid,2,1);
			SetPlayerColor(playerid,COLOR_YELLOW);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_TRIAD: {
			GivePlayerWeapon(playerid,32,300);
			GivePlayerWeapon(playerid,30,390);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_PINK);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_ARMY: {
			GivePlayerWeapon(playerid,26,80);
			GivePlayerWeapon(playerid,31,300);
			GivePlayerWeapon(playerid,23,170);
			SetPlayerColor(playerid,COLOR_DARKGREEN);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_VALET: {
			GivePlayerWeapon(playerid,28,300);
			GivePlayerWeapon(playerid,24,100);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_LIGHTBLUE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_MEDIC: {
			GivePlayerWeapon(playerid,26,100);
			GivePlayerWeapon(playerid,23,170);
			GivePlayerWeapon(playerid,9,1);
			SetPlayerColor(playerid,COLOR_PURPLE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_FBI: {
			GivePlayerWeapon(playerid,29,360);
			GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,3,1);
			SetPlayerColor(playerid,COLOR_ORANGE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_CHICKEN: {
			GivePlayerWeapon(playerid,26,200);
			GivePlayerWeapon(playerid,29,390);
			GivePlayerWeapon(playerid,9,1);
			SetPlayerColor(playerid,COLOR_GREY);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
	  	}
		case TEAM_RICH: {
	   		GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,24,100);
			GivePlayerWeapon(playerid,28,400);
			SetPlayerColor(playerid,COLOR_SKIN);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_PILOT: {
	   		GivePlayerWeapon(playerid,22,170);
			GivePlayerWeapon(playerid,25,60);
			GivePlayerWeapon(playerid,14,1);
			SetPlayerColor(playerid,COLOR_DARKGREY);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_DANANG: {
	   		GivePlayerWeapon(playerid,24,70);
			GivePlayerWeapon(playerid,27,77);
			GivePlayerWeapon(playerid,28,300);
			SetPlayerColor(playerid,COLOR_DARKRED);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
		}
		case TEAM_LVBALLA: {
			GivePlayerWeapon(playerid,32,100);
			GivePlayerWeapon(playerid,25,100);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_BRIGHTRED);
        	if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
    		}
	   		SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVGROVE: {
			GivePlayerWeapon(playerid,28,200);
		   	GivePlayerWeapon(playerid,30,200);
		  	GivePlayerWeapon(playerid,4,1);
		   	SetPlayerColor(playerid,COLOR_DARKGREEN);
        	if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
				return 1;
			}
	   		if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVVAGO: {
			GivePlayerWeapon(playerid,31,200);
			GivePlayerWeapon(playerid,32,100);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_LIGHTBLUE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
				SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
	    	}
	   		SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVAZTEC: {
			GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,30,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_BLUE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
				SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
				SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVTRIAD: {
			GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,30,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_YELLOW);
        	if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
	    	}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVMEDIC: {
			GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,28,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_RED);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVFIRE: {
			GivePlayerWeapon(playerid,27,100);
			GivePlayerWeapon(playerid,28,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_ORANGE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVCOP: {
			GivePlayerWeapon(playerid,24,100);
			GivePlayerWeapon(playerid,31,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_DARKBLUE);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVARMY: {
			GivePlayerWeapon(playerid,24,100);
			GivePlayerWeapon(playerid,31,200);
			GivePlayerWeapon(playerid,4,1);
			SetPlayerColor(playerid,COLOR_BROWN);
			if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LVCIV: {
		   	GivePlayerWeapon(playerid,28,200);
		   	GivePlayerWeapon(playerid,30,200);
		   	GivePlayerWeapon(playerid,4,1);
		   	SetPlayerColor(playerid,COLOR_WHITE);
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
			SetPlayerRandomSpawn(playerid);
		}
		case TEAM_LSCOP: {
			SetPlayerColor(playerid,COLOR_BLUE); //BLUE
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSCOP2: {
			SetPlayerColor(playerid,COLOR_BLUE); //BLUE
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSGROVE: {
			SetPlayerColor(playerid,COLOR_GREEN); //GREEN
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSGROVE2: {
			SetPlayerColor(playerid,COLOR_GREEN); //GREEN
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSVAGO: {
			SetPlayerColor(playerid,COLOR_YELLOW); //YELLOW
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSVAGO2: {
			SetPlayerColor(playerid,COLOR_YELLOW); //YELLOW
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSAZTECA: {
			SetPlayerColor(playerid,COLOR_LIGHTBLUE); //LIGHT BLUE
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSAZTECA2: {
			SetPlayerColor(playerid,COLOR_LIGHTBLUE); //LIGHT BLUE
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSBALLA: {
			SetPlayerColor(playerid,COLOR_PURPLE); //Dark Red
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSBALLA2: {
			SetPlayerColor(playerid,COLOR_PURPLE); //Dark Red
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
		case TEAM_LSPIZZABOY: {
			SetPlayerColor(playerid,COLOR_ORANGE); //ORANGE
	        if(PlayerInfo[playerid][frozen] == 1) {
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,2031.2622,1343.2483,10.8203);
		        SetPlayerFacingAngle(playerid,270.1700);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...re-frozen!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][jailed] == 1) {
	    		SetPlayerInterior(playerid,6);
				TogglePlayerControllable(playerid,0);
				SetPlayerPos(playerid,265.1273,77.6823,1001.0391);
				SetPlayerFacingAngle(playerid,271.3259);
				SendClientMessage(playerid,COLOR_BRIGHTRED,"You cannot escape your punishment...Welcome back to jail!!!");
	    		return 1;
			}
			if(PlayerInfo[playerid][logged] == 1 && PlayerInfo[playerid][bowner] == 1) {
	   			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
	    		SendClientMessage(playerid,COLOR_GREEN,"You have been spawned at the entrance to your business");
	    		return 1;
			}
		}
	}
	SetPlayerInterior(playerid, 0);
	GameTextForPlayer(playerid,"~y~PwN Them All!!!", 3000, 5);
	PlayerPlaySound(playerid,SOUND_OFF,-1421.1034,1488.5735,11.8084);
	GangZoneShowForAll(Worker, COLOR_GREEN);
	GangZoneShowForAll(Pimp, COLOR_RED);
	GangZoneShowForAll(Golfer, COLOR_YELLOW);
	GangZoneShowForAll(Triad, COLOR_PINK);
	GangZoneShowForAll(Army, COLOR_DARKGREEN);
	GangZoneShowForAll(Valet, COLOR_LIGHTBLUE);
	GangZoneShowForAll(Medic, COLOR_PURPLE);
	GangZoneShowForAll(FBI, COLOR_ORANGE);
	GangZoneShowForAll(Chicken, COLOR_GREY);
	GangZoneShowForAll(Rich, COLOR_SKIN);
	GangZoneShowForAll(Pilot, COLOR_DARKGREY);
	GangZoneShowForAll(Pilot1, COLOR_DARKGREY);
	GangZoneShowForAll(Pilot2, COLOR_DARKGREY);
	GangZoneShowForAll(DaNang, COLOR_DARKRED);
    return 1;
}
//====================================LV Random Spawns==========================
public SetPlayerRandomSpawn(playerid)
{
	if (iSpawnSet[playerid] == 1)
	{
		new rand = random(sizeof(gCopPlayerSpawns));
		SetPlayerPos(playerid, gCopPlayerSpawns[rand][0], gCopPlayerSpawns[rand][1], gCopPlayerSpawns[rand][2]); // Warp the player
		SetPlayerFacingAngle(playerid, 270.0);
    }
    else if (iSpawnSet[playerid] == 0)
    {
		new rand = random(sizeof(gRandomPlayerSpawns));
		SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
	}
	return 1;
}
//==========================Xadmin Spectate=====================================
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) {
	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Spec[i][SpectateID] == playerid  && Spec[i][Spectating]) SetPlayerInterior(i,newinteriorid);
	return 1;
}
//============================Anti-Team kill Script=============================
public OnPlayerDeath(playerid, killerid, reason)
{
	new pname[MAX_PLAYER_NAME];
	new string[256];
	new deathreason[20];
	GameTextForPlayer(playerid,"~r~OWNED",10000,1);
	GetPlayerName(playerid, pname, sizeof(pname));
	GetWeaponName(reason, deathreason, 20);
    new pstring[256]; //player message
    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Spec[i][SpectateID] == playerid  && Spec[i][Spectating]) { TogglePlayerSpectating(i,false); Spec[i][Spectating] = false, Spec[i][SpectateID] = INVALID_PLAYER_ID; }
	if (killerid == INVALID_PLAYER_ID)
	{
		if (reason == WEAPON_DROWN)
		{
			format(string, sizeof(string), "*** %s SANK LIKE A BRICK.", pname);
		}
		else
		{
			if (strlen(deathreason) > 0)
			{
				format(string, sizeof(string), "*** %s GOT OWNED. (%s)", pname, deathreason);
			}
			else
			{
				format(string, sizeof(string), "*** %s GOT OWNED.", pname);
			}
  }
		//SendClientMessageToAll(COLOR_RED, string);
	}
	else
	{
		new killer[MAX_PLAYER_NAME];
		GetPlayerName(killerid, killer, sizeof(killer));
		if (strlen(deathreason) > 0)
		{
			format(string, sizeof(string), "*** %s owned %s. (%s)", killer, pname, deathreason);
		}
		else
		{
			format(string, sizeof(string), "*** %s owned %s.", killer, pname);
		}
        if(killerid != INVALID_PLAYER_ID && gPlayerClass[playerid] == gPlayerClass[killerid])
		{
			KillerID[playerid] = killerid;
			new warning[256];
			format(warning, sizeof(warning), "Be careful! You You may Be punished for Team Killing!");
			SendClientMessage(killerid, 0xFFFF00AA, warning);
	        ShowMenuForPlayer(TK,playerid);
		}
		else
		{
			SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
            new kstring[256]; //killer message
			//new pname[MAX_PLAYER_NAME];   //player name
			GetPlayerName(playerid, pname, sizeof(pname));
			format(kstring, sizeof(kstring), "~b~Haha Ya 0wned %s",pname);
			GameTextForPlayer(killerid, kstring, 4000, 3);
			new kname[MAX_PLAYER_NAME];   //killername
			GetPlayerName(killerid, kname, sizeof(kname));
			format(pstring, sizeof(pstring), "~r~:( you got 0wned by %s",kname);
			GameTextForPlayer(playerid, pstring, 4000, 3);
			return 1;
		}
	}
	SendDeathMessage(killerid,playerid,reason);
	SendClientMessageToAll(COLOR_RED, string);
    new moneytemp;
	moneytemp = GetPlayerMoney(playerid);
    GivePlayerMoney(killerid,moneytemp/2);
	return 1;
}

//==============================Player Disconnect===============================
public OnPlayerDisconnect(playerid,reason)
{
    new playername[MAX_PLAYER_NAME], string[256];
    switch(reason)
    {
        case 0:
        {
             GetPlayerName(playerid, playername, sizeof(playername));
             format(string, sizeof(string), "^^^ %s has left the server.(Timeout) ^^^", playername);
             SendClientMessageToAll(COLOR_GREY, string);
        }
        case 1:
        {
             GetPlayerName(playerid, playername, sizeof(playername));
             format(string, sizeof(string), "^^^ %s has left the server.(Leaving) ^^^", playername);
             SendClientMessageToAll(COLOR_GREY, string);
        }
        case 2:
        {
             GetPlayerName(playerid, playername, sizeof(playername));
             format(string, sizeof(string), "^^^ %s has left the server.(Kicked) ^^^", playername);
             SendClientMessageToAll(COLOR_GREY, string);
        }
    }
	if(RaceParticipant[playerid]>=1)
	{
		if(Participants==1) //Last participant leaving, ending race.
		{
			endrace();
		}
		if(RaceParticipant[playerid] < 3 && RaceStart == 0 && !(RaceParticipant[playerid]==3 && RaceStart == 1))
		{ //Doing readycheck since someone left, but not if they disconnected during countdown.
		    ReadyRefresh();
		}
	    Participants--;
	    RaceParticipant[playerid]=0;
	    DisablePlayerRaceCheckpoint(playerid);
	}
	if(RaceBuilders[playerid] != 0)
	{
   	    DisablePlayerRaceCheckpoint(playerid);
	    for(new i;i<BCurrentCheckpoints[b(playerid)];i++)
	    {
	        BRaceCheckpoints[b(playerid)][i][0]=0.0;
   	        BRaceCheckpoints[b(playerid)][i][1]=0.0;
	        BRaceCheckpoints[b(playerid)][i][2]=0.0;
		}
		BuilderSlots[b(playerid)] = MAX_PLAYERS+1;
		RaceBuilders[playerid] = 0;
	}
	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && Spec[i][SpectateID] == playerid  && Spec[i][Spectating]) { TogglePlayerSpectating(i,false); Spec[i][Spectating] = false, Spec[i][SpectateID] = INVALID_PLAYER_ID; }
	KillTimer(checktimer);
	KillTimer(backtimer);
	KillTimer(phonetimer);
	KillTimer(counttimer);
	KillTimer(paytimer);
	KillTimer(vstimer);
	KillTimer(mmstimer);
	KillTimer(pstimer);
	PlayerLeaveGang(playerid);
    return 1;
}
//===============================Race Statements================================
rstrtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}

public LockRacers()
{
	for(new i;i<MAX_PLAYERS;i++)
	{
		if(RaceParticipant[i] != 0)
		{
			TogglePlayerControllable(i,0);
			if(IsPlayerInAnyVehicle(i)) PlayerVehicles[i]=GetPlayerVehicleID(i);
			else PlayerVehicles[i]=0;
		}
	}
}

public UnlockRacers()
{
	for(new i;i<MAX_PLAYERS;i++)
	{
		if(RaceParticipant[i]>0)
		{
			TogglePlayerControllable(i,1);
			if(PlayerVehicles[i] != 0)
			{
				PutPlayerInVehicle(i,PlayerVehicles[i],0);
				PlayerVehicles[i]=0;
			}
		}
	}
}

public countdown() {
	if(RaceStart == 0)  // Locking players, setting the reward and
	{
		RaceStart=1;
		LockRacers();
		new tmpprize, OPot;
		OPot=Pot;
		if(PrizeMode == 1 || PrizeMode == 4)
		{
			if(Racemode == 0 || Racemode == 3) tmpprize = floatround(RLenght);
			else if(Racemode == 1) tmpprize = floatround(LLenght * Racelaps);
			else if(Racemode == 2) tmpprize = floatround(RLenght * 2 * Racelaps);
		}
		tmpprize *= DynaMP;
		if(PrizeMode == 0 || PrizeMode == 3) Pot += Prize;
		else if(PrizeMode == 1 || PrizeMode == 4) Pot += tmpprize;
		if(Participants == 1) Pot=OPot; // Only 1 racer, force reward to entrance fees.
	}
	if(cd>0)
	{
		format(ystring, sizeof(ystring), "%d...",cd);
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			if(RaceParticipant[i]>1)
			{
				RaceSound(i,1056);
			    GameTextForPlayer(i,ystring,1000,3);
		    }
	    }
	}
	else if(cd == 0)
	{
		format(ystring, sizeof(ystring), "~g~GO!",cd);
	    KillTimer(Countdown);
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			if(RaceParticipant[i]>1)
			{
				RaceSound(i,1057);
			    GameTextForPlayer(i,ystring,3000,3);
				RaceParticipant[i]=4;
				CurrentLap[i]=1;
				if(Racemode == 3) SetRaceCheckpoint(i,LCurrentCheckpoint,LCurrentCheckpoint-1);
				else SetRaceCheckpoint(i,0,1);
		    }
	    }
		UnlockRacers();
		RaceTick=tickcount();
	}
	cd--;
}

public SetNextCheckpoint(playerid)
{
	if(Racemode == 0) // Default Mode
	{
		CurrentCheckpoint[playerid]++;
		if(CurrentCheckpoint[playerid] == LCurrentCheckpoint)
		{
			SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],-1);
			RaceParticipant[playerid]=6;
		}
		else SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
	}
	else if(Racemode == 1) // Ring Mode
	{
		CurrentCheckpoint[playerid]++;
		if(CurrentCheckpoint[playerid] == LCurrentCheckpoint+1 && CurrentLap[playerid] == Racelaps)
		{
			SetRaceCheckpoint(playerid,0,-1);
			RaceParticipant[playerid]=6;
		}
		else if (CurrentCheckpoint[playerid] == LCurrentCheckpoint+1 && CurrentLap[playerid] != Racelaps)
		{
			CurrentCheckpoint[playerid]=0;
			SetRaceCheckpoint(playerid,0,1);
			RaceParticipant[playerid]=5;
		}
		else if(CurrentCheckpoint[playerid] == 1 && RaceParticipant[playerid]==5)
		{
			ChangeLap(playerid);
			if(LCurrentCheckpoint==1)
			{
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],0);
			}
			else
			{
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],2);
            }
  		    RaceParticipant[playerid]=4;
		}
		else
		{
			if(LCurrentCheckpoint==1 || CurrentCheckpoint[playerid] == LCurrentCheckpoint) SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],0);
			else SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
		}
	}
	else if(Racemode == 2) // Yoyo-mode
	{
		if(RaceParticipant[playerid]==4)
		{
			if(CurrentCheckpoint[playerid] == LCurrentCheckpoint) // @ Last CP, trigger last-1
			{
			    RaceParticipant[playerid]=5;
				CurrentCheckpoint[playerid]=LCurrentCheckpoint-1;
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
			}
			else if(CurrentCheckpoint[playerid] == LCurrentCheckpoint-1) // Second last CP, set next accordingly
			{
				CurrentCheckpoint[playerid]++;
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
			}
			else
			{
				CurrentCheckpoint[playerid]++;
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]+1);
			}
		}
		else if(RaceParticipant[playerid]==5)
		{
			if(CurrentCheckpoint[playerid] == 1 && CurrentLap[playerid] == Racelaps) //Set the finish line
			{
				SetRaceCheckpoint(playerid,0,-1);
				RaceParticipant[playerid]=6;
			}
			else if(CurrentCheckpoint[playerid] == 0) //At finish line, change lap.
			{
				ChangeLap(playerid);
				if(LCurrentCheckpoint==1)
				{
					SetRaceCheckpoint(playerid,1,0);
				}
				else
				{
					SetRaceCheckpoint(playerid,1,2);
	            }
	  		    RaceParticipant[playerid]=4;
			}
			else if(CurrentCheckpoint[playerid] == 1)
			{
				CurrentCheckpoint[playerid]--;
				SetRaceCheckpoint(playerid,0,1);
			}
			else
			{
				CurrentCheckpoint[playerid]--;
				SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
			}
		}
	}
	else if(Racemode == 3) // Mirror Mode
	{
		CurrentCheckpoint[playerid]--;
		if(CurrentCheckpoint[playerid] == 0)
		{
			SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],-1);
			RaceParticipant[playerid]=6;
		}
		else
		{
			 SetRaceCheckpoint(playerid,CurrentCheckpoint[playerid],CurrentCheckpoint[playerid]-1);
	    }
	}
}

public SetRaceCheckpoint(playerid,target,next)
{
	if(next == -1 && Airrace == 0) SetPlayerRaceCheckpoint(playerid,1,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],0.0,0.0,0.0,CPsize);
	else if(next == -1 && Airrace == 1) SetPlayerRaceCheckpoint(playerid,4,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],0.0,0.0,0.0,CPsize);
	else if(Airrace == 1) SetPlayerRaceCheckpoint(playerid,3,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],RaceCheckpoints[next][0],
							RaceCheckpoints[next][1],RaceCheckpoints[next][2],CPsize);
	else SetPlayerRaceCheckpoint(playerid,0,RaceCheckpoints[target][0],RaceCheckpoints[target][1],RaceCheckpoints[target][2],RaceCheckpoints[next][0],RaceCheckpoints[next][1],
							RaceCheckpoints[next][2],CPsize);
}
public SetBRaceCheckpoint(playerid,target,next)
{
	new ar = BAirrace[b(playerid)];
	if(next == -1 && ar == 0) SetPlayerRaceCheckpoint(playerid,1,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],
								BRaceCheckpoints[b(playerid)][target][2],0.0,0.0,0.0,BCPsize[b(playerid)]);
	else if(next == -1 && ar == 1) SetPlayerRaceCheckpoint(playerid,4,BRaceCheckpoints[b(playerid)][target][0],
				BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],0.0,0.0,0.0,
				BCPsize[b(playerid)]);
	else if(ar == 1) SetPlayerRaceCheckpoint(playerid,3,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],
						BRaceCheckpoints[b(playerid)][next][0],BRaceCheckpoints[b(playerid)][next][1],BRaceCheckpoints[b(playerid)][next][2],BCPsize[b(playerid)]);
	else SetPlayerRaceCheckpoint(playerid,0,BRaceCheckpoints[b(playerid)][target][0],BRaceCheckpoints[b(playerid)][target][1],BRaceCheckpoints[b(playerid)][target][2],
			BRaceCheckpoints[b(playerid)][next][0],BRaceCheckpoints[b(playerid)][next][1],BRaceCheckpoints[b(playerid)][next][2],BCPsize[b(playerid)]);
}

public GetLapTick(playerid)
{
	new tick, lap;
	tick=tickcount();
	if(CurrentLap[playerid]==1)
	{
		lap=tick-RaceTick;
		LastLapTick[playerid]=tick;
	}
	else
	{
		lap=tick-LastLapTick[playerid];
		LastLapTick[playerid]=tick;
	}
	return lap;
}

public GetRaceTick(playerid)
{
	new tick, race;
	tick=tickcount();
	race=tick-RaceTick;
	return race;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	if(RaceParticipant[playerid]>=1) // See if the player is participating in a race, allows race builders to do their stuff in peace.
	{
		if(RaceParticipant[playerid] == 6) // Player reaches the checkered flag.
	    {
			new rname[MAX_PLAYER_NAME], LapTime, RaceTime;
			LapTime=GetLapTick(playerid);
			RaceTime=GetRaceTick(playerid);
			GetPlayerName(playerid, rname, MAX_PLAYER_NAME);
			RaceParticipant[playerid]=0;
			RaceSound(playerid,1139);
			format(ystring,sizeof(ystring),"%s has finished the race, position: %d",rname,Ranking);
			if (Ranking < 4) SendClientMessageToAll(COLOR_GREEN,ystring);
			else SendClientMessage(playerid,COLOR_GREEN,ystring);
			if(Racemode == ORacemode && ORacelaps == Racelaps)
			{
				new	LapString[10],RaceString[10], laprank, racerank;
				LapString=BeHuman(LapTime);
				RaceString=BeHuman(RaceTime);
				format(ystring,sizeof(ystring),"~w~Racetime: %s",RaceString);
				if(ORacemode!=0) format(ystring,sizeof(ystring),"%s~n~Laptime: %s",ystring,LapString);
				laprank=CheckBestLap(playerid,LapTime);
				if(laprank == 1)
				{
				    format(ystring,sizeof(ystring),"%s~n~~y~LAP RECORD!",ystring);
				}
				racerank=CheckBestRace(playerid,RaceTime);
				if(racerank == 1)
				{
				    format(ystring,sizeof(ystring),"%s~n~~y~TRACK RECORD!",ystring);
				}
			    GameTextForPlayer(playerid,ystring,13000,3);
		    }
			if(Ranking<4)
			{
				new winrar;
				if(Ranking == 1 && Participants == 1) winrar=Pot; // If the player was only participant, give the whole pot.
				else if(Ranking == 1 && Participants == 2) winrar=Pot/6*4; // If only 2 participants, give 4/6ths of the pot.
				else winrar=Pot/6*PrizeMP;  // Otherwise 3/6ths, 2/6ths and 1/6th.
				GivePlayerMoney(playerid,winrar);
				format(ystring,sizeof(ystring),"You have earned $%d from the race!",winrar);
				PrizeMP--;
				SendClientMessage(playerid,COLOR_GREEN,ystring);
			}
			Ranking++;
			Participants--;
	        DisablePlayerRaceCheckpoint(playerid);
	        if(Participants == 0)
	        {
	            endrace();
	        }
	    }
	    else if (RaceStart == 0 && RaceParticipant[playerid]==1) // Player arrives to the start CP for 1st time
	    {
			SendClientMessage(playerid,COLOR_YELLOW,"Type /ready when you are ready to start.");
			SendClientMessage(playerid,COLOR_YELLOW,"NOTE: Your controls will be locked once the countdown starts.");
			RaceParticipant[playerid]=2;
	    }
	    else if (RaceStart==1) // Otherwise switch to the next race CP.
	    {
			RaceSound(playerid,1138);
			SetNextCheckpoint(playerid);
	    }
	}
	return 1;
}

public endrace()
{
    SaveScores(); //If the race had already started, and mode & laps are as originally, save the lapscores and racescores.
	for(new i=0;i<LCurrentCheckpoint;i++)
	{
	    RaceCheckpoints[i][0]=0.0;
	    RaceCheckpoints[i][1]=0.0;
	    RaceCheckpoints[i][2]=0.0;
	}
	LCurrentCheckpoint=0;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
		LastLapTick[i]=0;
        DisablePlayerRaceCheckpoint(i);
		if(RaceParticipant[i]==3) //Player was still /ready-locked, unlocking.
		{
				TogglePlayerControllable(i,1);
		        if(PlayerVehicles[i] != 0)
		        {
		            PutPlayerInVehicle(i,PlayerVehicles[i],0);
		            PlayerVehicles[i]=0;
		        }
		}
        RaceParticipant[i]=0;
    }
	RaceActive=0;
	RaceStart=0;
	Participants=0;
	Pot = 0;
	PrizeMP = 3;
    SendClientMessageToAll(COLOR_YELLOW, "The current race has been finished.");
}

public BActiveCP(playerid,sele)
{
	if(BCurrentCheckpoints[b(playerid)]-1 == sele) SetBRaceCheckpoint(playerid,sele,-1);
	else SetBRaceCheckpoint(playerid,sele,sele+1);
}

public RaceSound(playerid,sound)
{
	new Float:x,Float:y,Float:z;
	GetPlayerPos(playerid,x,y,z);
	PlayerPlaySound(playerid,sound,x,y,z);
}

public ReadyRefresh()
{
	if(RaceActive==1) //No countdown if no race is active (could occur with /leave)
	{
		new Waiting=0, Ready=0;
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			if(RaceParticipant[i] == 1 || RaceParticipant[i] == 2) Waiting++;
			else if(RaceParticipant[i] == 3) Ready++;
		}
		if(Waiting==0)
		{
			SendClientMessageToAll(COLOR_GREEN,"Everyone is ready, the race begins!");
			cd=5;
			Countdown = SetTimer("countdown",1000,1);
		}
		else if(Ready >= Waiting && MajorityDelay > 0 && MajStart == 0)
		{
			MajStart=1;
			format(ystring,sizeof(ystring),"Half of the racers are ready, race starts in %d seconds!", MajorityDelay);
			SendClientMessageToAll(COLOR_GREEN,ystring);
			MajStartTimer = SetTimer("mscountdown",10000,1);
			mscd= MajorityDelay;
		}
	}
}

public mscountdown()
{
	if(RaceStart == 1 || MajStart == 0)
	{
		MajStart=0;
		KillTimer(MajStartTimer);
	}
	else
	{
		mscd-=10;
		if(mscd <= 0)
		{
			for(new i;i<MAX_PLAYERS;i++)
			{
				if(RaceParticipant[i] != 3 && RaceParticipant[i] != 0)
				{
					GameTextForPlayer(i,"~r~You didn't make it in time!",6000,3);
					DisablePlayerRaceCheckpoint(i);
					RaceParticipant[i]=0;
					Participants--;
				}
				else if (RaceParticipant[i]!=0) SendClientMessage(i,COLOR_GREEN,"Pre-race countdown done, the race beings!");
			}
			KillTimer(MajStartTimer);
			cd=5;
			Countdown = SetTimer("countdown",1000,1);
		}
		else
		{

			new hurry_string[64];
			format(ystring,sizeof(ystring),"~y~Race starting in ~w~%d~y~ seconds!",mscd);
			format(hurry_string,sizeof(hurry_string),"%s~n~~r~HURRY UP AND /READY",ystring);
			for(new i;i<MAX_PLAYERS;i++)
			{
				if(RaceParticipant[i] < 3 && mscd < 31) GameTextForPlayer(i,hurry_string,6000,3);
				else if(RaceParticipant[i] > 0) GameTextForPlayer(i,ystring,6000,3);
			}
		}
	}
}

public CheckBestLap(playerid,laptime)
{
	if(TopLapTimes[4]<laptime && TopLapTimes[4] != 0 || Racemode == 0)
	{
		return 0;  // If the laptime is more than the previous 5th on the top list, skip to end
	}              // Or the race is gamemode 0 where laps don't really apply
	for(new i;i<5;i++)
	{
	    if(TopLapTimes[i] == 0)
	    {
			new playername[MAX_PLAYER_NAME];
	        GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
	        TopLappers[i]=playername;
	        TopLapTimes[i]=laptime;
			ScoreChange=1;
			return i+1;
	    }
		else if(TopLapTimes[i] > laptime)
		{
		    for(new j=4;j>=i;j--)
		    {
		        TopLapTimes[j+1]=TopLapTimes[j];
		        TopLappers[j+1]=TopLappers[j];
		    }
			new playername[MAX_PLAYER_NAME];
	        GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
		    TopLapTimes[i]=laptime;
			TopLappers[i]=playername;
			ScoreChange=1;
			return i+1;
		}
	}
	return -1; //Shouldn't get here.
}

public CheckBestRace(playerid,racetime)
{
	if(TopRacerTimes[4]<racetime && TopRacerTimes[4] != 0) return 0;
	for(new i;i<5;i++)
	{
	    if(TopRacerTimes[i] == 0)
	    {
			new playername[MAX_PLAYER_NAME];
	        GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
	        TopRacers[i]=playername;
	        TopRacerTimes[i]=racetime;
			ScoreChange=1;
			return i+1;
	    }
		else if(TopRacerTimes[i] > racetime)
		{
		    for(new j=4;j>=i;j--)
		    {
		        TopRacerTimes[j+1]=TopRacerTimes[j];
		        TopRacers[j+1]=TopRacers[j];
		    }
			new playername[MAX_PLAYER_NAME];
	        GetPlayerName(playerid,playername,MAX_PLAYER_NAME);
		    TopRacerTimes[i]=racetime;
			TopRacers[i]=playername;
			ScoreChange=1;
			return i+1;
		}
	}
	return -1; //Shouldn't get here.
}

public SaveScores()
{
	if(ScoreChange == 1)
	{
		fremove(CFile);
		new File:f,Float:x,Float:y,Float:z, templine[512];
		f = fopen(CFile,io_write);
		format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, CBuilder, ORacemode, ORacelaps, OAirrace, OCPsize);
		fwrite(f,templine);
		format(templine,sizeof(templine),"%s %d %s %d %s %d %s %d %s %d\n",
				TopRacers[0],TopRacerTimes[0],TopRacers[1], TopRacerTimes[1], TopRacers[2],TopRacerTimes[2],
	 			TopRacers[3],TopRacerTimes[3],TopRacers[4], TopRacerTimes[4]);
		fwrite(f,templine);
		format(templine,sizeof(templine),"%s %d %s %d %s %d %s %d %s %d\n",
				TopLappers[0],TopLapTimes[0],TopLappers[1], TopLapTimes[1], TopLappers[2],TopLapTimes[2],
	 			TopLappers[3],TopLapTimes[3],TopLappers[4], TopLapTimes[4]);
		fwrite(f,templine);
		for(new i = 0; i < LCurrentCheckpoint+1;i++)
		{
			x=RaceCheckpoints[i][0];
			y=RaceCheckpoints[i][1];
			z=RaceCheckpoints[i][2];
			format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
			fwrite(f,templine);
		}
		fclose(f);
	}
	ScoreChange=0;
}
public ChangeLap(playerid)
{
	new LapTime, TimeString[10], checklap;
	LapTime=GetLapTick(playerid);
	TimeString=BeHuman(LapTime);
	format(ystring,sizeof(ystring),"~w~Lap %d/%d - time: %s", CurrentLap[playerid], Racelaps, TimeString);
	if(Racemode == ORacemode && ORacelaps == Racelaps)
	{
		checklap=CheckBestLap(playerid,LapTime);
		if(checklap==1) format(ystring,sizeof(ystring),"%s~n~~y~LAP RECORD!",ystring);
	}
	CurrentLap[playerid]++;
	if(CurrentLap[playerid] == Racelaps) format(ystring,sizeof(ystring),"%s~n~~g~Final lap!",ystring);
	GameTextForPlayer(playerid,ystring,6000,3);
}

BeHuman(ticks)
{
	new HumanTime[10], minutes, seconds, secstring[2], msecstring[3];
	minutes=ticks/60000;
	ticks=ticks-(minutes*60000);
	seconds=ticks/1000;
	ticks=ticks-(seconds*1000);
	if(seconds <10) format(secstring,sizeof(secstring),"0%d",seconds);
	else format(secstring,sizeof(secstring),"%d",seconds);
	format(HumanTime,sizeof(HumanTime),"%d:%s",minutes,secstring);
	if(ticks < 10) format(msecstring,sizeof(msecstring),"00%d", ticks);
	else if(ticks < 100) format(msecstring,sizeof(msecstring),"0%d",ticks);
	else format(msecstring,sizeof(msecstring),"%d",ticks);
	format(HumanTime,sizeof(HumanTime),"%s.%s",HumanTime,msecstring);
	return HumanTime;
}

public LoadTimes(playerid,timemode,tmp[])
{
	new temprace[67], idx;
	format(temprace,sizeof(temprace),"%s.yr",tmp);
    if(strlen(tmp))
    {
		if(!fexist(temprace))
		{
			format(ystring,sizeof(ystring),"Race \'%s\' doesn't exist!",tmp);
			SendClientMessage(playerid,COLOR_YELLOW,ystring);
			return 1;
		}
		else
		{
			new File:f, templine[256], TBuilder[MAX_PLAYER_NAME], TempLapper[MAX_PLAYER_NAME], TempLap;
			idx=0;
			f = fopen(temprace, io_read);
			fread(f,templine,sizeof(templine)); // Read header-line
			if(templine[0] == 'Y') //Checking if the racefile is v0.2+
			{
				new fileversion;
			    rstrtok(templine,idx); // read off YRACE
				fileversion = strval(rstrtok(templine,idx)); // read off the file version
				if(fileversion > RACEFILE_VERSION) // Check if the race is made with a newer version of the racefile format
				{
				    format(ystring,sizeof(ystring),"Race \'%s\' is created with a newer version of YRACE, unable to load.",tmp);
				    SendClientMessage(playerid,COLOR_RED,ystring);
				    return 1;
				}
				TBuilder=rstrtok(templine,idx); // read off RACEBUILDER
				fread(f,templine,sizeof(templine)); // read off best race times
				if(timemode ==1) fread(f,templine,sizeof(templine)); // read off best lap times
				idx=0;
				if(timemode == 0) format(ystring,sizeof(ystring),"%s by %s - Best race times:",tmp,TBuilder);
				else if(timemode == 1) format(ystring,sizeof(ystring),"%s by %s - Best laps:",tmp,TBuilder);
				else return 1;
				SendClientMessage(playerid,COLOR_GREEN,ystring);
				for(new i=0;i<5;i++)
				{
				    TempLapper=rstrtok(templine,idx);
				    TempLap=strval(rstrtok(templine,idx));
					if(TempLap == 0)
					{
					    format(ystring,sizeof(ystring),"%d. None yet",i+1);
						i=6;
					}
					else format(ystring,sizeof(ystring),"%d. %s - %s",i+1,BeHuman(TempLap),TempLapper);
					SendClientMessage(playerid,COLOR_GREEN,ystring);
				}
				return 1;
			}
			else
			{
				format(ystring,sizeof(ystring),"Race \'%s\' doesn't contain any time data.",tmp);
				SendClientMessage(playerid,COLOR_GREEN,ystring);
				return 1;
			}
		}
    }
	return 0;
}

public IsNotAdmin(playerid)
{
    if (!IsPlayerAdmin(playerid))
	{
	    SendClientMessage(playerid, COLOR_RED, "You need to be an admin to use this command!");
	    return 1;
    }
    return 0;
}

public GetBuilderSlot(playerid)
{
	for(new i;i < MAX_BUILDERS; i++)
	{
	    if(!(BuilderSlots[i] < MAX_PLAYERS+1))
	    {
	        BuilderSlots[i] = playerid;
	        RaceBuilders[playerid] = i+1;
			return i+1;
	    }
	}
	return 0;
}

public b(playerid) return RaceBuilders[playerid]-1;

public Float:Distance(Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2)
{
	new Float:temp=floatsqroot((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) + (z1-z2) * (z1-z2));
	if(temp < 0) temp=temp*(-1);
	return temp;
}

public clearrace(playerid)
{
	for(new i=0;i<BCurrentCheckpoints[b(playerid)];i++)
	{
		BRaceCheckpoints[b(playerid)][i][0]=0.0;
		BRaceCheckpoints[b(playerid)][i][1]=0.0;
		BRaceCheckpoints[b(playerid)][i][2]=0.0;
	}
	BCurrentCheckpoints[b(playerid)]=0;
	DisablePlayerRaceCheckpoint(playerid);
	SendClientMessage(playerid, COLOR_GREEN, "Your race has been cleared! Use /buildrace to start a new one.");
	BuilderSlots[b(playerid)] = MAX_PLAYERS+1;
	RaceBuilders[playerid]=0;
}

public startrace()
{
	format(ystring,128,"Race \'%s\' is about to start, type /join to join!",CRaceName);
	SendClientMessageToAll(COLOR_GREEN,ystring);
	if(Racemode == 0) format(ystring,sizeof(ystring),"default");
	else if(Racemode == 1) format(ystring,sizeof(ystring),"ring");
	else if(Racemode == 2) format(ystring,sizeof(ystring),"yoyo");
	else if(Racemode == 3) format(ystring,sizeof(ystring),"mirror");
	format(ystring,sizeof(ystring),"Racemode: %s Laps: %d",ystring,Racelaps);
	if(PrizeMode >= 2) format(ystring,sizeof(ystring),"%s Join fee: %d",ystring,JoinFee);
	if(Airrace == 1) format(ystring,sizeof(ystring),"%s AIR RACE",ystring);
	if(Racemode == 0 || Racemode == 3) format(ystring,sizeof(ystring),"%s Track lenght: %0.2fkm", ystring, RLenght/1000);
	else if(Racemode == 1) format(ystring,sizeof(ystring),"%s Lap lenght: %.2fkm, Total: %.2fkm", ystring, LLenght/1000, LLenght * Racelaps / 1000);
	SendClientMessageToAll(COLOR_GREEN,ystring);
	RaceStart=0;
	RaceActive=1;
	ScoreChange=0;
	Ranking=1;
	PrizeMP=3;
}

ReturnModeName(mode)
{
	new modename[8];
	if(mode == 0) modename="Default";
	else if(mode == 1) modename="Ring";
	else if(mode == 2) modename="Yoyo";
	else if(mode == 3) modename="Mirror";
	return modename;
}

public LoadRace(tmp[])
{
	new race_name[32],templine[512];
	format(CRaceName,sizeof(CRaceName), "%s",tmp);
	format(race_name,sizeof(race_name), "%s.yr",tmp);
	if(!fexist(race_name)) return -1; // File doesn't exist
	CFile=race_name;
    LCurrentCheckpoint=-1; RLenght=0; RLenght=0;
	new File:f, i;
	f = fopen(race_name, io_read);
	fread(f,templine,sizeof(templine));
	if(templine[0] == 'Y') //Checking if the racefile is v0.2+
	{
		new fileversion;
	    rstrtok(templine,i); // read off YRACE
		fileversion = strval(rstrtok(templine,i)); // read off the file version
		if(fileversion > RACEFILE_VERSION) return -2; // Check if the race is made with a newer version of the racefile format
		CBuilder=rstrtok(templine,i); // read off RACEBUILDER
		ORacemode = strval(rstrtok(templine,i)); // read off racemode
		ORacelaps = strval(rstrtok(templine,i)); // read off amount of laps
		if(fileversion > 1)
		{
			Airrace = strval(rstrtok(templine,i));   // read off airrace
			CPsize = floatstr(rstrtok(templine,i));    // read off CP size
		}
		else // v1 file format, set to default
		{
			Airrace = 0;
			CPsize = 8.0;
		}
		OAirrace = Airrace;
		OCPsize = CPsize;
		Racemode=ORacemode; Racelaps=ORacelaps; //Allows changing the modes, but disables highscores if they've been changed.
		fread(f,templine,sizeof(templine)); // read off best race times
		i=0;
		for(new j=0;j<5;j++)
		{
		    TopRacers[j]=rstrtok(templine,i);
		    TopRacerTimes[j]=strval(rstrtok(templine,i));
		}
		fread(f,templine,sizeof(templine)); // read off best lap times
		i=0;
		for(new j=0;j<5;j++)
		{
		    TopLappers[j]=rstrtok(templine,i);
		    TopLapTimes[j]=strval(rstrtok(templine,i));
		}
	}
	else //Otherwise add the lines as checkpoints, the file is made with v0.1 (or older) version of the script.
	{
		LCurrentCheckpoint++;
		RaceCheckpoints[LCurrentCheckpoint][0] = floatstr(rstrtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(rstrtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(rstrtok(templine,i));
		Racemode=0; ORacemode=0; Racelaps=0; ORacelaps=0;   //Enables converting old files to new versions
		CPsize = 8.0; Airrace = 0;  			// v2 additions
		OCPsize = CPsize; OAirrace = Airrace;   // v2 additions
		CBuilder="UNKNOWN";
		for(new j;j<5;j++)
		{
		    TopLappers[j]="A"; TopLapTimes[j]=0; TopRacers[j]="A"; TopRacerTimes[j]=0;
		}
	}
	while(fread(f,templine,sizeof(templine),false))
	{
		LCurrentCheckpoint++;
		i=0;
		RaceCheckpoints[LCurrentCheckpoint][0] = floatstr(rstrtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(rstrtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(rstrtok(templine,i));
		if(LCurrentCheckpoint >= 1)
		{
		    RLenght+=Distance(RaceCheckpoints[LCurrentCheckpoint][0],RaceCheckpoints[LCurrentCheckpoint][1],
								RaceCheckpoints[LCurrentCheckpoint][2],RaceCheckpoints[LCurrentCheckpoint-1][0],
								RaceCheckpoints[LCurrentCheckpoint-1][1],RaceCheckpoints[LCurrentCheckpoint-1][2]);
		}
	}
	LLenght = RLenght + Distance(RaceCheckpoints[LCurrentCheckpoint][0],RaceCheckpoints[LCurrentCheckpoint][1],
								RaceCheckpoints[LCurrentCheckpoint][2],RaceCheckpoints[0][0],RaceCheckpoints[0][1],
								RaceCheckpoints[0][2]);
	fclose(f);
	return 1;
}

public RaceRotation()
{
	if(!fexist("yrace.rr"))
	{
	    printf("ERROR in  YRACE's Race Rotation (yrace.rr): yrace.rr doesn't exist!");
	    return -1;
	}

	if(RRotation == -1)
	{
		KillTimer(RotationTimer);
		return -1; // RRotation has been disabled
	}
	if(Participants > 0) return 1; // A race is still active.

	new File:f, templine[32], rotfile[]="yrace.rr", rraces=-1, rracenames[32][32], idx, fback;
	f = fopen(rotfile, io_read);
	while(fread(f,templine,sizeof(templine),false))
	{
		idx = 0;
		rraces++;
		rracenames[rraces]=rstrtok(templine,idx);
	}
	fclose(f);
	RRotation++;
	if(RRotation > rraces) RRotation = 0;
	fback = LoadRace(rracenames[RRotation]);
	if(fback == -1) printf("ERROR in YRACE's Race Rotation (yrace.rr): Race \'%s\' doesn't exist!",rracenames[RRotation]);
	else if (fback == -2) printf("ERROR in YRACE's Race Rotation (yrace.rr): Race \'%s\' is created with a newer version of YRACE",rracenames[RRotation]);
	else startrace();
	return 1;
}

#if defined MENUSYSTEM
public RefreshMenuHeader(playerid,Menu:menu,text[])
{
	SetMenuColumnHeader(menu,0,text);
	ShowMenuForPlayer(menu,playerid);
}

public CreateRaceMenus()
{
	//Admin menu
	MAdmin = CreateMenu("Admin menu", 1, 25, 170, 220, 25);
	AddMenuItem(MAdmin,0,"Set prizemode...");
	AddMenuItem(MAdmin,0,"Set fixed prize...");
	AddMenuItem(MAdmin,0,"Set dynamic prize...");
	AddMenuItem(MAdmin,0,"Set entry fees...");
	AddMenuItem(MAdmin,0,"Majority delay...");
	AddMenuItem(MAdmin,0,"End current race");
	AddMenuItem(MAdmin,0,"Toggle Race Admin [RA]");
	AddMenuItem(MAdmin,0,"Toggle Build Admin [BA]");
	AddMenuItem(MAdmin,0,"Toggle Race Rotation [RR]");
	AddMenuItem(MAdmin,0,"Leave");
	if(RaceAdmin == 1) format(ystring,sizeof(ystring),"RA: ON");
	else format(ystring,sizeof(ystring),"RA: off");
	if(BuildAdmin == 1) format(ystring,sizeof(ystring),"%s BA: ON",ystring);
	else format(ystring,sizeof(ystring),"%s BA: off",ystring);
	if(RRotation >= 0) format(ystring,sizeof(ystring),"%s RR: ON",ystring);
	else format(ystring,sizeof(ystring),"%s RR: off",ystring);
	SetMenuColumnHeader(MAdmin,0,ystring);
	//Prizemode menu [Admin submenu]
	MPMode = CreateMenu("Set prizemode:", 1, 25, 170, 220, 25);
	AddMenuItem(MPMode,0,"Fixed");
	AddMenuItem(MPMode,0,"Dynamic");
	AddMenuItem(MPMode,0,"Entry Fee");
	AddMenuItem(MPMode,0,"Entry Fee + Fixed");
	AddMenuItem(MPMode,0,"Entry Fee + Dynamic");
	AddMenuItem(MPMode,0,"Back");
	SetMenuColumnHeader(MPMode,0,"Mode: Fixed");
	//Fixed prize menu
	MPrize = CreateMenu("Fixed prize:", 1, 25, 170, 220, 25);
	AddMenuItem(MPrize,0,"+100$");
	AddMenuItem(MPrize,0,"+1000$");
	AddMenuItem(MPrize,0,"+10000$");
	AddMenuItem(MPrize,0,"-100$");
	AddMenuItem(MPrize,0,"-1000$");
	AddMenuItem(MPrize,0,"-10000$");
	AddMenuItem(MPrize,0,"Back");
	format(ystring,sizeof(ystring),"Amount: %d",Prize);
	SetMenuColumnHeader(MPrize,0,ystring);
	//Dynamic prize menu
	MDyna = CreateMenu("Dynamic Prize:", 1, 25, 170, 220, 25);
	AddMenuItem(MDyna,0,"+1x");
	AddMenuItem(MDyna,0,"+5x");
	AddMenuItem(MDyna,0,"-1x");
	AddMenuItem(MDyna,0,"-5x");
	AddMenuItem(MDyna,0,"Leave");
	format(ystring,sizeof(ystring),"Multiplier: %dx",DynaMP);
	SetMenuColumnHeader(MDyna,0,ystring);
	//Build Menu
	MBuild = CreateMenu("Build Menu", 1, 25, 170, 220, 25);
	AddMenuItem(MBuild,0,"Set laps...");
	AddMenuItem(MBuild,0,"Set racemode...");
	AddMenuItem(MBuild,0,"Checkpoint size...");
	AddMenuItem(MBuild,0,"Toggle air race");
	AddMenuItem(MBuild,0,"Clear the race and exit");
	AddMenuItem(MBuild,0,"Leave");
	SetMenuColumnHeader(MBuild,0,"Air race: off");
	//Laps menu
	MLaps = CreateMenu("Set laps", 1, 25, 170, 220, 25);
	AddMenuItem(MLaps,0,"+1");
	AddMenuItem(MLaps,0,"+5");
	AddMenuItem(MLaps,0,"+10");
	AddMenuItem(MLaps,0,"-1");
	AddMenuItem(MLaps,0,"-5");
	AddMenuItem(MLaps,0,"-10");
	AddMenuItem(MLaps,0,"Back");
	//Racemode menu
	MRacemode = CreateMenu("Racemode", 1, 25, 170, 220, 25);
	AddMenuItem(MRacemode,0,"Default");
	AddMenuItem(MRacemode,0,"Ring");
	AddMenuItem(MRacemode,0,"Yoyo");
	AddMenuItem(MRacemode,0,"Mirror");
	AddMenuItem(MRacemode,0,"Back");
	//Race menu
	MRace = CreateMenu("Race Menu", 1, 25, 170, 220, 25);
	AddMenuItem(MRace,0,"Set laps...");
	AddMenuItem(MRace,0,"Set racemode...");
	AddMenuItem(MRace,0,"Set checkpoint size...");
	AddMenuItem(MRace,0,"Toggle air race");
	AddMenuItem(MRace,0,"Start race");
	AddMenuItem(MRace,0,"Abort new race");
	//Entry fee menu
	MFee = CreateMenu("Entry fees", 1, 25, 170, 220, 25);
	AddMenuItem(MFee,0,"+100");
	AddMenuItem(MFee,0,"+1000");
	AddMenuItem(MFee,0,"+10000");
	AddMenuItem(MFee,0,"-100");
	AddMenuItem(MFee,0,"-1000");
	AddMenuItem(MFee,0,"-10000");
	AddMenuItem(MFee,0,"Back");
	format(ystring,sizeof(ystring),"Fee: %d$",JoinFee);
	SetMenuColumnHeader(MFee,0,ystring);
	//CP size menu
	MCPsize = CreateMenu("CP size", 1, 25, 170, 220, 25);
	AddMenuItem(MCPsize,0,"+0.1");
	AddMenuItem(MCPsize,0,"+1");
	AddMenuItem(MCPsize,0,"+10");
	AddMenuItem(MCPsize,0,"-0.1");
	AddMenuItem(MCPsize,0,"-1");
	AddMenuItem(MCPsize,0,"-10");
	AddMenuItem(MCPsize,0,"Back");
	//Majority Delay menu
	MDelay = CreateMenu("Majority Delay", 1, 25, 170, 220, 25);
	AddMenuItem(MDelay,0,"+10s");
	AddMenuItem(MDelay,0,"+60s");
	AddMenuItem(MDelay,0,"-10s");
	AddMenuItem(MDelay,0,"-60s");
	AddMenuItem(MDelay,0,"Back");
	if(MajorityDelay == 0) format(ystring,sizeof(ystring),"Delay: disabled");
	else format(ystring,sizeof(ystring),"Delay: %ds",MajorityDelay);
	SetMenuColumnHeader(MDelay,0,ystring);
}
#endif
//====================================Speedo====================================
public CheckSpeedo()
{
	for(new i=0;i<MAX_PLAYERS;i++)
	{
		vstreamid[i] = GetPlayerVehicleStreamID(i);
		if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
		{
			if(speedo[i] == 0) {
				TextDrawHideForPlayer(i, stxt[i]);
            }
          	if(speedo[i] == 1)
	        {
		        new Float:x,Float:y,Float:z;
	            new Float:distance,value;
	            GetPlayerPos(i, x, y, z);
	            distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
	            value = floatround(distance * 11000);
	            format(sstring, sizeof(sstring), "Vehicle: %s / MpH: %d / Km/h:%d",VehicleInfo[vstreamid[i]][name],floatround(value/2200),floatround(value/1400));
	            TextDrawSetString(stxt[i],sstring);
	            SavePlayerPos[i][LastX] = x;
	            SavePlayerPos[i][LastY] = y;
	            SavePlayerPos[i][LastZ] = z;
			}
			if(speedo[i] == 2)
	        {
		        new Float:x,Float:y,Float:z;
	            new Float:distance,value;
	            GetPlayerPos(i, x, y, z);
	            distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
	            value = floatround(distance * 11000);
	            format(sstring, sizeof(sstring), "Vehicle: %s / MpH: %d / Km/h: %d",VehicleInfo[vstreamid[i]][name],floatround(value/2200),floatround(value/1400));
				TextDrawSetString(stxt[i],sstring);
				//TextDrawShowForPlayer(i, stxt[i]);
	            SavePlayerPos[i][LastX] = x;
	            SavePlayerPos[i][LastY] = y;
	            SavePlayerPos[i][LastZ] = z;
			}
		}
	}
	return 1;
}
//===================================Commands===================================
public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256];
	new idx;
	new string[256];
	cmd = strtok(cmdtext, idx);
	new tmp[256];
	new moneys[MAX_PLAYERS];
	new giveplayer[256];
	new giveplayerid;
	new sendername[256];
	new playermoney[MAX_PLAYERS];
	if(!IsPlayerConnected(playerid)) return 0;
	if(Variables[playerid][Jailed] && Config[DisableJailCommands]) return SendClientMessage(playerid,red,"You can NOT use any commands whilst you are jailed.");
//-----------------------------Xadmin commands(DCMD)----------------------------
	dcmd(register,8,cmdtext);
	dcmd(login,5,cmdtext);
	dcmd(logout,6,cmdtext);
	dcmd(goto,4,cmdtext);
	dcmd(gethere,7,cmdtext);
	dcmd(announce,8,cmdtext);
	dcmd(say,3,cmdtext);
	dcmd(flip,4,cmdtext);
	dcmd(serverinfo,10,cmdtext);
	dcmd(slap,4,cmdtext);
	dcmd(wire,4,cmdtext);
	dcmd(unwire,6,cmdtext);
	dcmd(kick,4,cmdtext);
	dcmd(ban,3,cmdtext);
	dcmd(akill,5,cmdtext);
	dcmd(eject,5,cmdtext);
	dcmd(freeze,6,cmdtext);
	dcmd(unfreeze,8,cmdtext);
	dcmd(outside,7,cmdtext);
	dcmd(healall,7,cmdtext);
	dcmd(givehealth,10,cmdtext);
	dcmd(sethealth,9,cmdtext);
	dcmd(skinall,7,cmdtext);
	dcmd(giveallweapon,13,cmdtext);
	dcmd(resetallweapons,15,cmdtext);
	dcmd(ejectall,8,cmdtext);
	dcmd(freezeall,9,cmdtext);
	dcmd(unfreezeall,11,cmdtext);
	dcmd(giveweapon,10,cmdtext);
	dcmd(god,3,cmdtext);
	dcmd(resetscores,11,cmdtext);
	dcmd(setlevel,8,cmdtext);
	dcmd(setskin,7,cmdtext);
	dcmd(midnight,8,cmdtext);
	dcmd(morning,7,cmdtext);
	dcmd(noon,4,cmdtext);
    dcmd(evening,7,cmdtext);
	dcmd(uconfig,7,cmdtext);
	dcmd(sm,2,cmdtext);
	dcmd(setsm,5,cmdtext);
	dcmd(setcash,7,cmdtext);
	dcmd(givecash,9,cmdtext);
	dcmd(remcash,7,cmdtext);
	dcmd(resetcash,9,cmdtext);
	dcmd(setallcash,10,cmdtext);
	dcmd(giveallcash,11,cmdtext);
	dcmd(remallcash,10,cmdtext);
	dcmd(resetallcash,12,cmdtext);
	dcmd(givearmour,10,cmdtext);
	dcmd(setarmour,9,cmdtext);
	dcmd(armourall,9,cmdtext);
	dcmd(setammo,7,cmdtext);
	dcmd(setscore,8,cmdtext);
	dcmd(ip,2,cmdtext);
	dcmd(ping,4,cmdtext);
	dcmd(explode,7,cmdtext);
	dcmd(settime,7,cmdtext);
	dcmd(setalltime,10,cmdtext);
	dcmd(force,5,cmdtext);
	dcmd(setwanted,9,cmdtext);
	dcmd(setallwanted,12,cmdtext);
	dcmd(setworld,8,cmdtext);
	dcmd(setallworld,11,cmdtext);
	dcmd(setgravity,10,cmdtext);
	dcmd(carcolor,8,cmdtext);
	dcmd(gmx,3,cmdtext);
	dcmd(carhealth,9,cmdtext);
	dcmd(xinfo,5,cmdtext);
	dcmd(setping,7,cmdtext);
	dcmd(givecar,7,cmdtext);
	dcmd(xspec,5,cmdtext);
	dcmd(xjail,5,cmdtext);
	dcmd(xunjail,7,cmdtext);
	dcmd(setname,7,cmdtext);
	dcmd(admins,6,cmdtext);
	dcmd(xcommands,9,cmdtext);
	dcmd(vr,2,cmdtext);
	dcmd(weather,7,cmdtext);
	dcmd(giveadmin,9,cmdtext);
//-----------------------------Race commands (DCMD)-----------------------------
	dcmd(racehelp,8,cmdtext);	// Racehelp - there's a lot of commands!
	dcmd(buildhelp,9,cmdtext);	// Buildhelp - there's a lot of commands!
	dcmd(buildrace,9,cmdtext);	// Buildrace - Start building a new race (suprising!)
	dcmd(cp,2,cmdtext);		  	// cp - Add a checkpoint
	dcmd(scp,3,cmdtext);		// scp - Select a checkpoint
	dcmd(rcp,3,cmdtext);		// rcp - Replace the current checkpoint with a new one
	dcmd(mcp,3,cmdtext);		// mcp - Move the selected checkpoint
	dcmd(dcp,3,cmdtext);       	// dcp - Delete the selected waypoint
	dcmd(clearrace,9,cmdtext);	// clearrace - Clear the current (new) race.
	dcmd(editrace,8,cmdtext);	// editrace - Load an existing race into the builder
	dcmd(saverace,8,cmdtext);	// saverace - Save the current checkpoints to a file
	dcmd(setlaps,7,cmdtext);	// setlaps - Set amount of laps to drive
	dcmd(racemode,8,cmdtext);	// racemode - Set the current racemode
	dcmd(loadrace,8,cmdtext);	// loadrace - Load a race from file and start it
	dcmd(startrace,9,cmdtext);  // starts the loaded race
	dcmd(join,4,cmdtext);		// join - Join the announced race.
	dcmd(leave,5,cmdtext);		// leave - leave the current race.
	dcmd(endrace,7,cmdtext);	// endrace - Complete the current race, clear tables & variables, stop the timer.
	dcmd(ready,5,cmdtext);		// ready - Player is ready to start, lock the controls, prepare for CD.
	dcmd(bestlap,7,cmdtext);	// bestlap - Display the best lap times for the current race
	dcmd(bestrace,8,cmdtext);	// bestrace - Display the best race times for the current race
	dcmd(deleterace,10,cmdtext);// deleterace - Remove the race from disk
	dcmd(airrace,7,cmdtext);    // airrace - Changes the checkpoints to air CPs and back
	dcmd(cpsize,6,cmdtext);     // cpsize - changes the checkpoint size
	dcmd(prizemode,9,cmdtext);
	dcmd(setprize,8,cmdtext);
	#if defined MENUSYSTEM
	dcmd(raceadmin,9,cmdtext);
	dcmd(buildmenu,9,cmdtext);
	#endif
//---------------------------------KIHC Commands--------------------------------
	CallLocalFunction("opct","is",playerid,cmdtext);
	if((strcmp(cmdtext,"/build house small",true)==0) || (strcmp(cmdtext,"/bhs",true)==0))
	{
	    if(IsPlayerAdmin(playerid)){
		    new Float:x,Float:y,Float:z;
		    new hstring[256],interior[256];
		    new randm;
		    GetPlayerPos(playerid,x,y,z);
		    CreateObject(1272,x,y,z,0,0,0);
	        randm = random(4);
			if (randm == 0){
				//Houseo = "SetPlayerInterior(playerid,1);";
				//Housep = "SetPlayerPos(playerid,223.043991,1289.259888,1082.199951);";
				//#define HOUSE_SMALL_ONE 223.043991,1289.259888,1082.199951,1
				interior = "223.043991,1289.259888,1082.199951,1";
			}
			else if (randm == 1){
				//Houseo = "SetPlayerInterior(playerid,15);";
				//Housep = "SetPlayerPos(playerid,295.138977,1474.469971,1080.519897);";
				//#define HOUSE_SMALL_TWO 295.138977,1474.469971,1080.519897,15
				interior = "295.138977,1474.469971,1080.519897,15";
			}
			else if (randm == 2){
				//Houseo = "SetPlayerInterior(playerid,15);";
				//Housep = "SetPlayerPos(playerid,328.493988,1480.589966,1084.449951);";
						//#define HOUSE_SMALL_THREE 328.493988,1480.589966,1084.449951,15
				interior = "328.493988,1480.589966,1084.449951,15";
			}
			else if (randm == 3){
				//Houseo = "SetPlayerInterior(playerid,10);";
				//Housep = "SetPlayerPos(playerid,2262.83,-1137.71,1050.63);";
				//#define HOUSE_SMALL_FOUR 2262.83,-1137.71,1050.63,10
				interior = "2262.83,-1137.71,1050.63,10";
			}
			else if (randm == 4){
				//Houseo = "SetPlayerInterior(playerid,9);";
				//Housep = "SetPlayerPos(playerid,2251.85,-1138.16,1050.63);";
				//#define HOUSE_SMALL_FIVE 2251.85,-1138.16,1050.63,9
				interior = "2251.85,-1138.16,1050.63,9";
			}
			//print("39");
			new File:Hand = fopen("houses.req",io_append);
			format(hstring,256,"AddStaticHouse(%f,%f,%f,%s);\r\n",x,y,z,interior);
			fwrite(Hand,hstring);
			fclose(Hand);
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: A small sized HOUSE was successfully BUILT.");
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: Recompile the gamemode and restart the server to see your house!");
		}
		return 1;
	}
	if((strcmp(cmdtext,"/build house medium",true)==0) || (strcmp(cmdtext,"/bhm",true)==0))
	{
	    if(IsPlayerAdmin(playerid)){
		    new Float:x,Float:y,Float:z;
		    new hstring[256],interior[256];
		    new ran;
		    GetPlayerPos(playerid,x,y,z);
		    CreateObject(1272,x,y,z,0,0,0);
	        ran = random(3);
			if (ran == 0)
			{
				//houseo = "SetPlayerInterior(playerid,2);";
				//housep = "SetPlayerPos(playerid,225.756989,1240.000000,1082.149902);";
				//#define HOUSE_MEDIUM_ONE 225.756989,1240.000000,1082.149902,2
				interior = "225.756989,1240.000000,1082.149902,2";

			}
			if (ran == 1)
			{
				//houseo = "SetPlayerInterior(playerid,2);";
				//housep = "SetPlayerPos(playerid,2451.77, -1699.80,1013.51);";
				//#define HOUSE_MEDIUM_TWO 2451.77, -1699.80,1013.51,2
				interior = "2451.77, -1699.80,1013.51,2";
			}
			if (ran == 2)
			{
				//houseo = "SetPlayerInterior(playerid,15);";
				//housep = "SetPlayerPos(playerid,385.803986,1471.769897,1080.209961  );";
				//#define HOUSE_MEDIUM_THREE 385.803986,1471.769897,1080.209961,15
				interior = "385.803986,1471.769897,1080.209961,15";
			}
			if (ran == 3)
			{
				//houseo = "SetPlayerInterior(playerid,10);";
				//housep = "SetPlayerPos(playerid,2260.76,-1210.45,1049.02);";
				//#define HOUSE_MEDIUM_FOUR 2260.76,-1210.45,1049.02,10
				interior = "2260.76,-1210.45,1049.02,10";
			}
			new File:Hand = fopen("houses.req",io_append);
			format(hstring,256,"AddStaticHouse(%f,%f,%f,%s);\r\n",x,y,z,interior);
			fwrite(Hand,hstring);
			fclose(Hand);
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: A medium sized HOUSE was successfully BUILT.");
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: Recompile the gamemode and restart the server to see your house!");
		}
		return 1;
	}

	if((strcmp(cmdtext,"/build house large",true)==0) || (strcmp(cmdtext,"/bhl",true)==0))
	{
		if(IsPlayerAdmin(playerid)){
		    new Float:x,Float:y,Float:z;
		    new hstring[256],interior[256];
		    new ran;
		    GetPlayerPos(playerid,x,y,z);
		    CreateObject(1272,x,y,z,0,0,0);
	        ran = random(3);
			if (ran == 0){
				//houseo = "SetPlayerInterior(playerid,3);";
				//housep = "SetPlayerPos(playerid,235.508994,1189.169897,1080.339966);";
				//#define HOUSE_LARGE_ONE 235.508994,1189.169897,1080.339966,3
				interior = "235.508994,1189.169897,1080.339966,3";
			}
			if (ran == 1){
				//houseo = "SetPlayerInterior(playerid,7);";
				//housep = "SetPlayerPos(playerid,225.630997,1022.479980,1084.069946);";
				//#define HOUSE_LARGE_TWO 225.630997,1022.479980,1084.069946,7
				interior = "225.630997,1022.479980,1084.069946,7";
			}
			if (ran == 2){
				//houseo = "SetPlayerInterior(playerid,8);";
				//housep = "SetPlayerPos(playerid,2807.63,-1170.15,1025.57);";
				//#define HOUSE_LARGE_THREE 2807.63,-1170.15,1025.57,8
				interior = "2807.63,-1170.15,1025.57,8";
			}
			if (ran == 3){
				//houseo = "SetPlayerInterior(playerid,1 );";
				//housep = "SetPlayerPos(playerid,-2158.72,641.29,1052.38);";
				//#define HOUSE_LARGE_FOUR -2158.72,641.29,1052.38,1
				interior = "-2158.72,641.29,1052.38,1";
			}
			new File:Hand = fopen("houses.req",io_append);
			format(hstring,256,"AddStaticHouse(%f,%f,%f,%s);\r\n",x,y,z,interior);
			fwrite(Hand,hstring);
			fclose(Hand);
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: A large sized HOUSE was successfully BUILT.");
			SendClientMessage(playerid,0xFFFFFFAA,"KIHC: Recompile the gamemode and restart the server to see your house!");
		}
		return 1;
	}
//-------------------------------language Choice--------------------------------
	if(strcmp(cmdtext,"/en",true) == 0)
    {
        Language[playerid] = 0;
        SendClientMessage(playerid,0xC0C0C0FF,"You choose the english language.");
        return 1;
    }
//------------------------------------Kill--------------------------------------
	if (strcmp("/kill",cmdtext,true)==0){
	    SetPlayerScore(playerid,GetPlayerScore(playerid)-1);
    	SetPlayerHealth(playerid,0);
		//new pname [MAX_PLAYER_NAME];
	    //new killstring[256];
	    //GetPlayerName(playerid, pname, sizeof(pname));
		//format(killstring, sizeof(killstring), "%s Comit Suicide",pname);
  		//SendClientMessageToAll(COLOR_RED, killstring);
    }
//-------------------------------Vehicle Menu-----------------------------------
	if(strcmp(cmd, "/vmenu", true) == 0)
	{
	    TogglePlayerControllable(playerid, false);
		ShowMenuForPlayer(vehiclemain, playerid);
		return 1;
	}
//---------------------------------Bank System----------------------------------
	if(strcmp(cmd, "/deposit", true) == 0 || strcmp(cmd, "/gdeposit", true) == 0) {
		new gang;
	    if(strcmp(cmd, "/gdeposit", true) == 0)
		gang = 1;
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
	    if(CloseToBank(playerid) == 999) {
	        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a 24/7 in order to use banking!");
			return 1;
	    }
	    if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");
			return 1;
		}
		new tmp8[256];
	    tmp8 = strtok(cmdtext, idx);

	    if(!strlen(tmp8)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /(g)deposit [amount]");
			return 1;
	    }
	    moneys[playerid] = strval(tmp8);
	    if(moneys[playerid] < 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must enter an amount greater than 0!");
			return 1;
		}

		if(GetPlayerMoney(playerid) < moneys[playerid]) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You don't have the money for that!");
			return 1;
		}
		GivePlayerMoney(playerid, 0-moneys[playerid]);
        if(gang)
       	gangBank[playerGang[playerid]] = gangBank[playerGang[playerid]]+moneys[playerid];
		else
		PlayerInfo[playerid][bank] = PlayerInfo[playerid][bank]+moneys[playerid];
		if(gang)
		format(string, sizeof(string), "You have deposited $%d, your gang's balance is $%d.", moneys[playerid], gangBank[playerGang[playerid]]);
		else
		format(string, sizeof(string), "You have deposited $%d, your current balance is $%d.", moneys[playerid], PlayerInfo[playerid][bank]);
  		SendClientMessage(playerid, COLOR_GREEN, string);
		SavePlayer(playerid);
		return 1;
	}
//------------------------------Withdraw from Bank------------------------------
	if(strcmp(cmd, "/withdraw", true) == 0 || strcmp(cmd, "/gwithdraw", true) == 0) {
	    new gang;
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
	    if(CloseToBank(playerid) == 999) {
	        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a 24/7 in order to use banking!");
			return 1;
	    }
	    if(strcmp(cmd, "/gwithdraw", true) == 0)
	 	gang = 1;
	 	if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");
			return 1;
		}
	    new tmp9[256];
	    tmp9 = strtok(cmdtext, idx);
	    if(!strlen(tmp9)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /(g)withdraw [amount]");
			return 1;
	    }
	    moneys[playerid] = strval(tmp9);
	    if(moneys[playerid] < 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must enter an amount greater than 0!");
			return 1;
		}
  		if(moneys[playerid] > PlayerInfo[playerid][bank]) {
    		SendClientMessage(playerid, COLOR_BRIGHTRED, "You don't have the money for that!");
			return 1;
     	}
		if(gang)
       	gangBank[playerGang[playerid]] = gangBank[playerGang[playerid]]-moneys[playerid];
		else
		PlayerInfo[playerid][bank] = PlayerInfo[playerid][bank]-moneys[playerid];
		if(gang)
		format(string, sizeof(string), "You have withdrawn $%d, your gang's balance is $%d.", moneys[playerid], gangBank[playerGang[playerid]]);
		else
		format(string, sizeof(string), "You have withdrawn $%d, your current balance is $%d.", moneys[playerid], PlayerInfo[playerid][bank]);
		SendClientMessage(playerid, COLOR_GREEN, string);
		SavePlayer(playerid);
		return 1;
   	}
//-----------------------------------Balance------------------------------------
	if(strcmp(cmd, "/balance", true) == 0 || strcmp(cmd, "/gbalance", true) == 0) {
		new gang;
		if(strcmp(cmd, "/gbalance", true) == 0)
			gang = 1;
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if(CloseToBank(playerid) == 999) {
	        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a 24/7 in order to use banking!");
			return 1;
	    }
 		if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");
			return 1;
		}
		if(gang)
		format(string, sizeof(string), "Your gang has $%d in the bank.", gangBank[playerGang[playerid]]);
		else
		format(string, sizeof(string), "You have $%d in the bank.", PlayerInfo[playerid][bank]);
		SendClientMessage(playerid, COLOR_GREEN, string);
		return 1;
	}
//----------------------------------Give Cash-----------------------------------
	if(strcmp(cmd, "/givemoney", true) == 0) {
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /givemoney [playerid] [amount]");
			return 1;
		}
		giveplayerid = strval(tmp);
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "USAGE: /givemoney [playerid] [amount]");
			return 1;
		}
		moneys[playerid] = strval(tmp);
		if (IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			playermoney[playerid] = GetPlayerMoney(playerid);
			if (moneys[playerid] > 0 && playermoney[playerid] >= moneys[playerid]) {
	            GivePlayerMoney(playerid, (0 - moneys[playerid]));
	            GivePlayerMoney(giveplayerid, moneys[playerid]);
	            format(string, sizeof(string), "You have sent %s (id: %d), $%d.", giveplayer,giveplayerid, moneys[playerid]);
	            SendClientMessage(playerid, COLOR_GREEN, string);
	            format(string, sizeof(string), "You have recieved $%d from %s (id: %d).", moneys[playerid], sendername, playerid);
	            SendClientMessage(giveplayerid, COLOR_GREEN, string);
	            printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys[playerid], giveplayer, giveplayerid);
			}
			else {
				SendClientMessage(playerid, COLOR_BRIGHTRED, "Invalid transaction amount.");
			}
		}
		else {
			format(string, sizeof(string), "ID:%d is not an active player.", giveplayerid);
            SendClientMessage(playerid, COLOR_BRIGHTRED, string);
		}
		return 1;
	}
//-----------------------------------Count Down---------------------------------
	if(strcmp(cmd, "/count", true) == 0) {
	    new seconds;
		tmp = strtok(cmdtext, idx);
		seconds = strval(tmp);
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if (!seconds)
        	SendClientMessage(playerid, COLOR_BRIGHTRED, "You must enter a duration in seconds.");
  		if (seconds > 20) {
  			SendClientMessage(giveplayerid, COLOR_BRIGHTRED, "You must enter a duration between 1 and 20 seconds");
  			return 1;
  		}

    	else if (cseconds)
        	SendClientMessage(playerid, COLOR_BRIGHTRED, "A countdown is already running.");

    	else
    	{
        	format(cstring,40,"You started a countdown of %d seconds.",seconds);
        	SendClientMessage(playerid,COLOR_LIGHTBLUE, cstring);
        	cseconds = seconds+1;
        	cCount[playerid] = 1;
    	}
    	return 1;
	}
//------------------------------Teleport to Bank--------------------------------
	if(strcmp(cmdtext, "/telebank", true) == 0)
	{
     	if(IsPlayerInAnyVehicle(playerid))
		{
			TextDrawHideForPlayer(playerid, stxt[playerid]);
			SetPlayerInterior(playerid,6);
			SetPlayerPos(playerid,-22.2549,-55.6575,1003.5469);
			GameTextForPlayer(playerid,"The Bank!",2500,3);
			GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]); // save x,y and z for this player.
			GetPlayerFacingAngle(playerid,Pos[playerid][3]); // save the facing angle for this player.
			GetPlayerInterior(playerid);
		}
		else{
			SetPlayerInterior(playerid,6);
			SetPlayerPos(playerid,-22.2549,-55.6575,1003.5469);
			GameTextForPlayer(playerid,"The Bank!",2500,3);
			GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]); // save x,y and z for this player.
			GetPlayerFacingAngle(playerid,Pos[playerid][3]); // save the facing angle for this player.
			GetPlayerInterior(playerid);
		}
		return 1;
	}
	if(strcmp(cmdtext, "/exitbank", true) == 0)
	{
		if(CloseToBank(playerid) == 999) {
	        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a 24/7 in order to exit the bank!");
			return 1;
	    }
		new interiorid;
		SetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]); // set his saved position x,y and z.
		SetPlayerFacingAngle(playerid,Pos[playerid][3]); // set his saved facing angle.
		SetCameraBehindPlayer(playerid); // set the camera..behind the player (looks better).
		SetPlayerInterior(playerid,interiorid);
		return 1;
	}
//-------------------------------Teleport home----------------------------------
	if (strcmp(cmdtext, "/home", true) == 0)
	{
		new vehicleid = GetPlayerVehicleID(playerid);
	    new Team = PlayerInfo[playerid][team];
		if (Team == TEAM_WORKER)
		{
		    if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2062.5583,237.4662,36.2890);
				GameTextForPlayer(playerid,"Worker Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2062.5583,237.4662,36.2890);
				GameTextForPlayer(playerid,"Worker Spawn!",2500,3);
			}
		}
	   	else if (Team == TEAM_PIMP)
		{
			if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2653.6443,1388.2767,8.0739);
				GameTextForPlayer(playerid,"Pimp Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2653.6443,1388.2767,8.0739);
				GameTextForPlayer(playerid,"Pimp Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_GOLFER)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2642.2583,-274.9985,8.3506);
				GameTextForPlayer(playerid,"Golfer Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2642.2583,-274.9985,8.3506);
				GameTextForPlayer(playerid,"Golfer Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_TRIAD)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2188.8037,609.8431,36.2624);
				GameTextForPlayer(playerid,"Triad Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2188.8037,609.8431,36.2624);
				GameTextForPlayer(playerid,"Triad Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_ARMY)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1377.4271,466.0897,8.9393);
				GameTextForPlayer(playerid,"Army Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1377.4271,466.0897,8.9393);
				GameTextForPlayer(playerid,"Army Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_VALET)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1754.9976,958.5851,25.8386);
				GameTextForPlayer(playerid,"Valet Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1754.9976,958.5851,25.8386);
				GameTextForPlayer(playerid,"Valet Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_MEDIC)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2665.4282,635.6348,16.0054);
				GameTextForPlayer(playerid,"Medic Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2665.4282,635.6348,16.0054);
				GameTextForPlayer(playerid,"Medic Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_FBI)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1635.0077,665.8105,8.4054);
				GameTextForPlayer(playerid,"FBI Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1635.0077,665.8105,8.4054);
				GameTextForPlayer(playerid,"FBI Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_CHICKEN)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1830.9324,638.9214,31.3054);
				GameTextForPlayer(playerid,"Chicken Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1830.9324,638.9214,31.3054);
				GameTextForPlayer(playerid,"Chicken Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_RICH)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-2664.8037,938.6110,80.7618);
				GameTextForPlayer(playerid,"Rich Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-2664.8037,938.6110,80.7618);
				GameTextForPlayer(playerid,"Rich Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_PILOT)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1358.6774,-243.8737,15.6769);
				GameTextForPlayer(playerid,"Pilot Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1358.6774,-243.8737,15.6769);
				GameTextForPlayer(playerid,"Pilot Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_DANANG)
		{
			if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),-1430.1825,1492.3381,8.0482);
				GameTextForPlayer(playerid,"Da Nang Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,-1430.1825,1492.3381,8.0482);
				GameTextForPlayer(playerid,"Da Nang Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVBALLA)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),832.2958,-1080.4476,24.2969);
				GameTextForPlayer(playerid,"LV Balla Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,832.2958,-1080.4476,24.2969);
				GameTextForPlayer(playerid,"LV Balla Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVGROVE)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2495.2207,-1687.3169,13.5152);
				GameTextForPlayer(playerid,"LV Grove Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2495.2207,-1687.3169,13.5152);
				GameTextForPlayer(playerid,"LV Grove Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVVAGO)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2459.0442,-949.4450,80.0800);
				GameTextForPlayer(playerid,"LV Vago Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2459.0442,-949.4450,80.0800);
				GameTextForPlayer(playerid,"LV Vago Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVAZTEC)
		{
     		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1761.7893,-1892.7225,13.5551);
				GameTextForPlayer(playerid,"LV Azteca Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1761.7893,-1892.7225,13.5551);
				GameTextForPlayer(playerid,"LV Azteca Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVTRIAD)
		{
	 		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Triad Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Triad Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVMEDIC)
		{
			if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Medic Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Medic Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVFIRE)
		{
    		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Fire Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1499.2067,-937.3587,37.4407);
				GameTextForPlayer(playerid,"LV Fire Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVCOP)
		{
     		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Cop Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Cop Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVARMY)
		{
			if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Army Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Army Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LVCIV)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Civ Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1552.5618,-1675.3375,16.1953);
				GameTextForPlayer(playerid,"LV Civ Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSCOP)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1527.4740,-1676.5242,5.8906);
				GameTextForPlayer(playerid,"LS Cop Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1527.4740,-1676.5242,5.8906);
				GameTextForPlayer(playerid,"LS Cop Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSCOP2)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1527.4740,-1676.5242,5.8906);
				GameTextForPlayer(playerid,"LS Cop 2 Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1527.4740,-1676.5242,5.8906);
				GameTextForPlayer(playerid,"LS Cop 2 Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSGROVE)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2516.3032,-1674.7357,13.9314);
				GameTextForPlayer(playerid,"LS Grove Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2516.3032,-1674.7357,13.9314);
				GameTextForPlayer(playerid,"LS Grove Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSGROVE2)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2486.7520,-1646.4600,14.0703);
				GameTextForPlayer(playerid,"LS Grove 2 Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2486.7520,-1646.4600,14.0703);
				GameTextForPlayer(playerid,"LS Grove 2 Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSVAGO)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2627.3525,-1457.3615,31.0251);
				GameTextForPlayer(playerid,"LS Vago Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2627.3525,-1457.3615,31.0251);
				GameTextForPlayer(playerid,"LS Vago Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSVAGO2)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2633.3894,-1435.1416,30.4864);
				GameTextForPlayer(playerid,"LS Vago 2 Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2633.3894,-1435.1416,30.4864);
				GameTextForPlayer(playerid,"LS Vago 2 Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSAZTECA)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1733.9663,-2098.1926,14.0366);
				GameTextForPlayer(playerid,"LS Azteca Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1733.9663,-2098.1926,14.0366);
				GameTextForPlayer(playerid,"LS Azteca Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSAZTECA2)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),1804.0708,-2124.1572,13.9424);
				GameTextForPlayer(playerid,"LS Azteca 2 Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,1804.0708,-2124.1572,13.9424);
				GameTextForPlayer(playerid,"LS Azteca 2 Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSBALLA)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),768.6387,-1696.5547,5.1554);
				GameTextForPlayer(playerid,"LS Balla Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,768.6387,-1696.5547,5.1554);
				GameTextForPlayer(playerid,"LS Balla Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSBALLA2)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),767.3694,-1655.5189,5.6094);
				GameTextForPlayer(playerid,"LS Balla 2 Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,767.3694,-1655.5189,5.6094);
				GameTextForPlayer(playerid,"LS Balla 2 Spawn!",2500,3);
			}
		}
		else if (Team == TEAM_LSPIZZABOY)
		{
      		if(GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_DRIVER || GetPlayerState(GetDriverID(vehicleid)) == PLAYER_STATE_PASSENGER)
		    {
				SetVehiclePos(GetPlayerVehicleID(playerid),2101.5129,-1806.4567,13.5547);
				GameTextForPlayer(playerid,"LS Pizza Boy Spawn!",2500,3);
			}
			else{
				SetPlayerInterior(playerid,0);
				SetPlayerPos(playerid,2101.5129,-1806.4567,13.5547);
				GameTextForPlayer(playerid,"LS Pizza Boy Spawn!",2500,3);
			}
		}
/*		else if (Team == TEAM_YAKUSA)
		{
   			SetPlayerInterior(playerid,0);
			SetPlayerPos(playerid,-1951.9547,706.1971,46.9492);
			GameTextForPlayer(playerid,"Yakusa Spawn!",2500,3);
		}*/
		return 1;
	}
//------------------------------------Credits-----------------------------------
	if(strcmp(cmd, "/credits", true) == 0) {
        switch (Language[playerid])
        {
            case 0:
            {
SendClientMessage(playerid, COLOR_LIGHTBLUE, "San Andreas Team Death Match ~ Role Play + Biz + Race + KIHC + Gangs + XSVM + XAdmin Script by -=[CBK]MoNeYPiMp=-");
				SendClientMessage(playerid, COLOR_YELLOW, "Original Script designer and concept - [CBK]MoNeYPiMp (email <::> moneypimp2@hotmail.com)");
				SendClientMessage(playerid, COLOR_YELLOW, "Extreme Vehicle Management + Streamer Script - By -=tAxI=-");
				SendClientMessage(playerid, COLOR_YELLOW, "XtremeAdmin administrator script by Xtreme embedded by Hellboy!");
				SendClientMessage(playerid, COLOR_YELLOW, "Original code for Vehicle HP bar was made by Mr-Tape - Highly modified by tAxI aka Necrioss");
				SendClientMessage(playerid, COLOR_YELLOW, "Cellphone system code designed and made by [eLg]Beckzyboi (www.elg.uk.tt)");
				SendClientMessage(playerid, COLOR_YELLOW, "Selection Screen Sounds made by CodeMaster");
				SendClientMessage(playerid, COLOR_YELLOW, "Multi Language Code made by Yom");
				SendClientMessage(playerid, COLOR_YELLOW, "Race Script by Yagu, Gang script taken from Jax's LVDM ~MoneyGrub(+LandGrab)");
				SendClientMessage(playerid, COLOR_YELLOW, "Kapils Instant House Constructions by Kapil");
				SendClientMessage(playerid, COLOR_GREEN, "If you wish to use this script or any parts of it in your own gamemode please feel free but you must GIVE CREDIT!!!");
			}
		}
		return 1;
	}
//-------------------------------------Help-------------------------------------
	if(strcmp(cmd, "/help", true) == 0)
	{
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "HC4L gang server");
				SendClientMessage(playerid, COLOR_YELLOW, "For GENERAL commands, please type /commands, For ADMIN commands, please type /xcommands.");
				SendClientMessage(playerid, COLOR_YELLOW, "For BANK commands please type /bankhelp, For GANG commands, please type /ganghelp.");
				SendClientMessage(playerid, COLOR_YELLOW, "For XVM(vehicle) SYSTEM info, please type /vehiclehelp.");
				SendClientMessage(playerid, COLOR_YELLOW, "For BUSINESS help please type /bizhelp.");
				SendClientMessage(playerid, COLOR_YELLOW, "For CELLPHONE help please type /cellhelp.");
				SendClientMessage(playerid, COLOR_YELLOW, "For TELEPORT commands, please type /telehelp.");
				SendClientMessage(playerid, COLOR_YELLOW, "For RACE commands, please type /racehelp.");
				SendClientMessage(playerid, COLOR_ORANGE, "All your stats are saved permanently, including your own car and any mods you make to it!");
				SendClientMessage(playerid, COLOR_ORANGE, "Type /credits to see a list of the ppl who contributed to this script.");
			}
		}
		return 1;
	}
//---------------------------------Business Help--------------------------------
	if(strcmp(cmd, "/bizhelp", true) == 0) {
		switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Business System Help ----------");
				SendClientMessage(playerid, COLOR_YELLOW, "Businesses are indicated on the map by the yellow circle icons and in the gameworld by a spinning blue house pickup.");
				SendClientMessage(playerid, COLOR_YELLOW, "Type /buybiz to purchase the business. Must be within 7-8m of business icon.");
				SendClientMessage(playerid, COLOR_YELLOW, "Type /sellbiz to sell your business. Must be within 7-8m of business icon.");
				SendClientMessage(playerid, COLOR_YELLOW, "Type /cashbox to transfer you business' earnings to your personal bank account. Must be within 7-8m of business icon.");
				//SendClientMessage(playerid, COLOR_YELLOW, "Type /gotobiz to teleport to your biz");
			}
		}
		return 1;
	}
//-----------------------------------Phone Help---------------------------------
	if(strcmp(cmd, "/cellhelp", true) == 0) {
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Cellphone System Help ----------");
				SendClientMessage(playerid, COLOR_YELLOW, "Every person has their own cellphone - calls cost $1/second.");
				SendClientMessage(playerid, COLOR_YELLOW, "To make a call - /call [player id].");
				SendClientMessage(playerid, COLOR_YELLOW, "To answer a call - /answer.");
				SendClientMessage(playerid, COLOR_YELLOW, "To end a call - /hangup.");
			}
		}
		return 1;
	}
//-----------------------------------Bank Help----------------------------------
	if(strcmp(cmd, "/bankhelp", true) == 0) {
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Bank Help ----------");
				SendClientMessage(playerid, COLOR_YELLOW, "Teleport to the Bank - /telebank");
				SendClientMessage(playerid, COLOR_YELLOW, "Exit the Bank - /exitbank");
				SendClientMessage(playerid, COLOR_YELLOW, "You must be in an ATM area (located in the 24/7 shops):");
				SendClientMessage(playerid, COLOR_YELLOW, "Deposit Amount - /deposit [amount]");
				SendClientMessage(playerid, COLOR_YELLOW, "Withdraw Amount - /withdraw [amount]");
				SendClientMessage(playerid, COLOR_YELLOW, "Check Balance - /balance");
				SendClientMessage(playerid, COLOR_YELLOW, "Give Cash - /givemoney [recipient id] [amount] - sends a specified amount of money to the specified player id");
				SendClientMessage(playerid, COLOR_ORANGE, "Bank will not be reset when you die or reconnect.");
			}
		}
		return 1;
	}
//---------------------------------Vehicle Help---------------------------------
	if(strcmp(cmd, "/vehiclehelp", true) == 0) {
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Vehicle Help ----------");
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "In order to gain access to your vehicles controls please type /vmenu - can be used in or outside your owned vehicle.");
			}
		}
		return 1;
	}
//--------------------------------Commands list---------------------------------
	if(strcmp(cmd, "/commands", true) == 0) {
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- General Commands ----------");
				SendClientMessage(playerid, COLOR_RED, "To See the server rules type /rules");
				//SendClientMessage(playerid,	COLOR_RED, "Type /CBK if you wanna join the [CBK] Clan!");
				SendClientMessage(playerid, COLOR_YELLOW, "You can use the /register and /login and /logout.");
				SendClientMessage(playerid, COLOR_YELLOW, "To see what admins are online type /admins");
				SendClientMessage(playerid, COLOR_YELLOW, "To start a countdown type /count [time]");
				SendClientMessage(playerid, COLOR_YELLOW, "To slap another player type /slap [player id] [object]");
				SendClientMessage(playerid, COLOR_YELLOW, "To clear Chat Type /clear");
				SendClientMessage(playerid, COLOR_YELLOW, "To commit suicide Type /kill");
			}
		}
		return 1;
	}
//---------------------------------Admin Sell Biz-------------------------------
	if(strcmp(cmd, "/asellbiz", true) == 0) {
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if(IsPlayerInAnyVehicle(playerid) == 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be on foot in order to sell a business!");
			return 1;
		}
		if(ClosestBiz(playerid) == 99) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not close enough to any of the current business icons to use this command");
			return 1;
		}
   	    if (PlayerInfo[playerid][admin] > 0) {
    	    if (strcmp(BizInfo[ClosestBiz(playerid)][owner],DEFAULT_OWNER,false) == 0) {
				format(string,sizeof(string),"This Business (%d) does not have an owner yet!",BizInfo[ClosestBiz(playerid)][name]);
 				SendClientMessage(playerid,COLOR_BRIGHTRED,string);
				return 1;
			}
			new file[256];
			format(file,sizeof(file),P_FILE,udb_encode(BizInfo[ClosestBiz(playerid)][owner]));
			if(fexist(file)) {
			    tempid[playerid] = IsPlayerNameOnline(BizInfo[ClosestBiz(playerid)][owner]);
			    if(tempid[playerid] >= 0 && tempid[playerid] <= MAX_PLAYERS) {
                    BizInfo[ClosestBiz(playerid)][bought] = 0;
					strmid(BizInfo[ClosestBiz(playerid)][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
                    new cbmon = BizInfo[ClosestBiz(playerid)][cashbox],bmon = PlayerInfo[playerid][bank];
					PlayerInfo[tempid[playerid]][bank] = cbmon+bmon;
					BizInfo[ClosestBiz(playerid)][cashbox] = 0;
					PlayerInfo[tempid[playerid]][bowned] = 0;
					PlayerInfo[tempid[playerid]][bowner] = 0;
					format(string, sizeof(string), "You just sold %s's Business (%s).", PlayerInfo[tempid[playerid]][name], BizInfo[ClosestBiz(playerid)][name]);
					SendClientMessage(playerid, COLOR_ORANGE, string);
					format(string, sizeof(string), "Admin (%s) has just sold your Business (%s)! Your cashbox money was sent to your personal bank account", PlayerInfo[playerid][name],BizInfo[ClosestBiz(playerid)][name]);
                    SendClientMessage(tempid[playerid], COLOR_ORANGE, string);
                    new iconid = ClosestBiz(playerid)+1;
					ChangeMapIconModel(iconid,31);
					return 1;
				}
				else {
				    ResetOfflinePlayerFileB(BizInfo[ClosestBiz(playerid)][owner]);
					format(string, sizeof(string), "You just sold %s's Business (%s).", BizInfo[ClosestBiz(playerid)][owner], BizInfo[ClosestBiz(playerid)][name]);
					SendClientMessage(playerid, COLOR_ORANGE, string);
                    BizInfo[ClosestBiz(playerid)][bought] = 0;
                    BizInfo[ClosestBiz(playerid)][cashbox] = 0;
					strmid(BizInfo[ClosestBiz(playerid)][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
                    new iconid = ClosestBiz(playerid)+1;
					ChangeMapIconModel(iconid,31);
					return 1;
				}
			}
			if(!fexist(file)) {
				format(string, sizeof(string), "You just sold %s's Business (%s). The player file was not found and cannot be altered.", PlayerInfo[tempid[playerid]][name], BizInfo[ClosestBiz(playerid)][name]);
				SendClientMessage(playerid, COLOR_GREEN, string);
				BizInfo[ClosestBiz(playerid)][bought] = 0;
				BizInfo[ClosestBiz(playerid)][cashbox] = 0;
				strmid(BizInfo[ClosestBiz(playerid)][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
                new iconid = ClosestBiz(playerid)+1;
				ChangeMapIconModel(iconid,31);
				return 1;
			}
		}
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not a server administrator and cannot use this command!");
		return 1;
	}
//--------------------------------Gang Commands List
	if(strcmp(cmd, "/ganghelp", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Gang commands:");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang create [name]");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang join");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang invite [playerID]");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang quit");
		SendClientMessage(playerid, COLOR_YELLOW,"/ganginfo [number] (no number given shows your gang's info)");
		SendClientMessage(playerid, COLOR_YELLOW,"/gdeposit [money] /gwithdraw [money] /gbalance");
		SendClientMessage(playerid, COLOR_YELLOW,"! (prefix text for gang-chat)");
		return 1;
	}
//------------------------------House admin Help--------------------------------
	if(strcmp(cmd, "houseadmin", true) == 0) {
		switch (Language[playerid]){
			case 0:{
            	if(IsPlayerAdmin(playerid) == 0) {
		   	        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged on to the server RCON to use this command!");
		   	        SendClientMessage(playerid, COLOR_BRIGHTRED, "Type /rcon login [rcon password] to login to the server rcon!");
		  			return 1;
				}
	   	    	if(IsPlayerAdmin(playerid) == 1 && PlayerInfo[playerid][logged] == 1) {
	   	    	    SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Admin House Help ----------");
            	    SendClientMessage(playerid, COLOR_YELLOW, "Go to the door of any house and type:");
            	    SendClientMessage(playerid, COLOR_YELLOW, "/build house small or /bhs for a small house.");
            	    SendClientMessage(playerid, COLOR_YELLOW, "/build house medium or /bhm for a medium house.");
            	    SendClientMessage(playerid, COLOR_YELLOW, "/build house large or /bhl for a large house.");
                    SendClientMessage(playerid, COLOR_BRIGHTRED, "For the changes to apply you must simply recompile the script and restart the server!");
                    return 1;
				}
			}
		}
		return 1;
	}
//--------------------------------Teleport Help---------------------------------
	if (strcmp(cmdtext, "/telehelp", true)==0){
        switch (Language[playerid])
        {
            case 0:
            {
			    SendClientMessage(playerid, COLOR_LIGHTBLUE, "---------- Teleport Help ----------");
				SendClientMessage(playerid,COLOR_SYSTEM,"/home will teleport you home");
				SendClientMessage(playerid,COLOR_SYSTEM,"/sp will save your position");
				SendClientMessage(playerid,COLOR_SYSTEM,"/lp will teleport you to the position you saved");
				SendClientMessage(playerid,COLOR_SYSTEM,"/telebank will teleport you to the bank");
				SendClientMessage(playerid,COLOR_SYSTEM,"/exitbank will teleport you to your location before teleporting to the bank");
			}
		}
		return 1;
	}
//-----------------------------------Save pos-----------------------------------
	if (strcmp(cmdtext, "/sp", true)==0){
        switch (Language[playerid])
        {
            case 0:
            {
				GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]); // save x,y and z for this player.
				GetPlayerFacingAngle(playerid,Pos[playerid][3]); // save the facing angle for this player.
				SendClientMessage(playerid,RED,"Position saved!"); // send him a red message.
			}
		}
		return 1;
	}
//-----------------------------------Load pos-----------------------------------
	else if (strcmp(cmdtext, "/lp", true)==0){
        switch (Language[playerid])
        {
            case 0:
            {
				SetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]); // set his saved position x,y and z.
				SetPlayerFacingAngle(playerid,Pos[playerid][3]); // set his saved facing angle.
				SetCameraBehindPlayer(playerid); // set the camera..behind the player (looks better).
				SendClientMessage(playerid,RED,"You teleported!"); // send him a red message.
			}
		}
	   	return 1;
	}
//-------------------------------------Rules------------------------------------
	if (strcmp(cmdtext, "/rules", true)== 0){
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, 0x33AA33AA, ".:[SFTDM Reloaded™].:.[Rules and Regulations]:.");
				SendClientMessage(playerid, COLOR_RED, "NO CHEATING OR USING HACKS!! Or You will GET BANNED");
				SendClientMessage(playerid, COLOR_RED, "No Flaming or Abuse!!!");
				SendClientMessage(playerid, COLOR_RED, "No Spawn Killing or Team killing!!");
				SendClientMessage(playerid, COLOR_RED, "No Car Jacking!! Respect other peoples rides, Get your Own!!");
			}
		}
		return 1;
	}
//--------------------------Recrutment for [CBK] Clan---------------------------
	if (strcmp(cmdtext, "/CBK", true)==0){
        switch (Language[playerid])
        {
            case 0:
            {
				SendClientMessage(playerid, 0x99FF00AA, "-=[CBK] Rectuitment Info=-");
				SendClientMessage(playerid, 0x99FF00AA, "1.Read server Rules first (/rules)");
				SendClientMessage(playerid, 0x99FF00AA, "2.Dont cheat");
				SendClientMessage(playerid, 0x99FF00AA, "3.Go to http://cbk.110mb.com and go to forum then recruitment :D");
				SendClientMessage(playerid, 0x99FF00AA, "4.Put an Application Forward");
				SendClientMessage(playerid, 0x99FF00AA, "5.Wait to be contacted by admin, if your ok you will be told to go on tryouts");
				SendClientMessage(playerid, 0x99FF00AA, "6.Good Luck!");
			}
		}
		return 1;
	}
//-------------------------------Admin Clear Chat-------------------------------
	if (strcmp(cmdtext, "/clearall", true)==0) {
		if (PlayerInfo[playerid][admin] > 0){
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			SendClientMessageToAll(COLOR_SYSTEM, " ");
			return 1;
		}
	}
//-------------------------------Player Clear Chat------------------------------
	if (strcmp(cmdtext, "/clear", true)==0) {
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		SendClientMessage(playerid, COLOR_SYSTEM, " ");
		return 1;
	}
//-------------------------------------Slap-------------------------------------
	if(strcmp(cmd, "/slap", true) == 0)
	{
 		if(PlayerInfo[playerid][jailed] == 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "Usage: /slap [playerid] [object]");
			return 1;
		}
		giveplayerid = strval(tmp);
		tmp = strtok(cmdtext, idx, strlen(cmdtext));
		if (!strlen(tmp)){
  			SendClientMessage(playerid, COLOR_LIGHTBLUE, "Usage: /slap [playerid] [object]");
       		return 1;
    	}
		if (IsPlayerConnected(giveplayerid))
		{
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
		 	format(string, sizeof(string), "%s bitch slaps %s across the face with a %s", sendername, giveplayer, tmp);
			SendClientMessageToAll(COLOR_INDIGO, string);
			for(new i=0; i < MAX_PLAYERS; i++) {
   				new Float:fx, Float:fy, Float:fz;
				GetPlayerPos(i, fx,fy,fz);
				PlayerPlaySound(i, 1190, fx,fy,fz);
    		}
    		return 1;
		}
		else
		{
		 	format(string, sizeof(string), "ID:%d is not an active player ID number.", giveplayerid);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
		}
		return 1;
	}
//-----------------------------------Buy Biz------------------------------------
	if(strcmp(cmd, "/buybiz", true) == 0) {
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if(IsPlayerInAnyVehicle(playerid) == 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be on foot in order to purchase a business!");
			return 1;
		}
		if(ClosestBiz(playerid) == 99) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not close enough to any of the current business icons to use this command");
            return 1;
		}
		if (strcmp(BizInfo[ClosestBiz(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
			format(string, sizeof(string), "You already own this Business (%s)", BizInfo[ClosestBiz(playerid)][name]);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			return 1;
		}
		if(BizInfo[ClosestBiz(playerid)][bought] == 1) {
			format(string, sizeof(string), "This Business (%s) is owned by %s, and is not for sale!", BizInfo[ClosestBiz(playerid)][name], BizInfo[ClosestBiz(playerid)][owner]);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			return 1;
		}
		if(PlayerInfo[playerid][bowner] == 1) {
  			SendClientMessage(playerid, COLOR_BRIGHTRED, "You can only own ONE Business at a time! You must sell your other Business first!");
     		return 1;
		}
		new cash[MAX_PLAYERS];
		cash[playerid] = GetPlayerMoney(playerid);
		if(cash[playerid] >= BizInfo[ClosestBiz(playerid)][cost]) {
		    new stringa[256];
   	 		strmid(BizInfo[ClosestBiz(playerid)][owner], PlayerInfo[playerid][name], 0, strlen(PlayerInfo[playerid][name]), 255);
            BizInfo[ClosestBiz(playerid)][bought] = 1;
            PlayerInfo[playerid][bowner] = 1;
            PlayerInfo[playerid][bowned] = ClosestBiz(playerid);
			GivePlayerMoney(playerid, -BizInfo[ClosestBiz(playerid)][cost]);
			format(stringa, sizeof(stringa), "You just bought this Business (%s) for $%d. Your Business will earn you $%d/hour", BizInfo[ClosestBiz(playerid)][name], BizInfo[ClosestBiz(playerid)][cost],BizInfo[ClosestBiz(playerid)][profit]*2);
			SendClientMessage(playerid, COLOR_GREEN, stringa);
			SavePlayer(playerid);
			SaveBusinesses();
			new iconid = ClosestBiz(playerid)+1;
    		ChangeMapIconModel(iconid,32);
			return 1;
		}
		if(cash[playerid] < BizInfo[ClosestBiz(playerid)][cost]) {
		    new string6[256];
			format(string6, sizeof(string6), "You do not have $%d and cannot afford this Business (%s)!", BizInfo[ClosestBiz(playerid)][cost],BizInfo[ClosestBiz(playerid)][name]);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string6);
		}
		return 1;
	}
//-------------------------------------Sell Biz---------------------------------
	if(strcmp(cmd, "/sellbiz", true) == 0) {
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if(IsPlayerInAnyVehicle(playerid) == 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be on foot in order to sell a business!");
			return 1;
		}
		if(ClosestBiz(playerid) == 99) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not close enough to any of the current business icons to use this command");
			return 1;
		}
		if(PlayerInfo[playerid][bowner] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not currently own any business!");
			return 1;
		}
  		if (strcmp(BizInfo[ClosestBiz(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
    		PlayerInfo[playerid][bowned] = 0;
			PlayerInfo[playerid][bowner] = 0;
			strmid(BizInfo[ClosestBiz(playerid)][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
			BizInfo[ClosestBiz(playerid)][bought] = 0;
			new cbmon = BizInfo[ClosestBiz(playerid)][cashbox],bmon = PlayerInfo[playerid][bank];
			BizInfo[ClosestBiz(playerid)][cashbox] = 0;
			PlayerInfo[playerid][bank] = cbmon+bmon;
			GivePlayerMoney(playerid, BizInfo[ClosestBiz(playerid)][cost]);
			format(string, sizeof(string), "You just sold your Business (%s) for $%d, the money that was in the cashbox ($%d) has been sent to your bank!!!", BizInfo[ClosestBiz(playerid)][name], BizInfo[ClosestBiz(playerid)][cost],cbmon);
			SendClientMessage(playerid, COLOR_GREEN, string);
			SavePlayer(playerid);
			SaveBusinesses();
			new iconid = ClosestBiz(playerid)+1;
			ChangeMapIconModel(iconid,31);
			return 1;
  		}
  		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "What are you trying to pull here, you don't own this Business!!!");
			return 1;
		}
	}
//---------------------------------Get Biz Profit-------------------------------
	if(strcmp(cmd, "/cashbox", true) == 0) {
	    if(PlayerInfo[playerid][logged] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this command");
		    return 1;
		}
		if(PlayerInfo[playerid][jailed] == 1) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this command");
		    return 1;
		}
		if(IsPlayerInAnyVehicle(playerid) == 1) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be on foot in order to collect a business' earnings!");
			return 1;
		}
		if(ClosestBiz(playerid) == 99) {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not close enough to any of the current business icons to use this command");
			return 1;
		}
		if(PlayerInfo[playerid][bowner] == 0) {
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not currently own any business!");
			return 1;
		}
  		if (strcmp(BizInfo[ClosestBiz(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
			new cbmon = BizInfo[ClosestBiz(playerid)][cashbox],bmon = PlayerInfo[playerid][bank];
			PlayerInfo[playerid][bank] = cbmon+bmon;
			format(string, sizeof(string), "The earnings for your Business (%s - $%d), have been wired to your personal bank account!!!", BizInfo[ClosestBiz(playerid)][name], BizInfo[ClosestBiz(playerid)][cashbox]);
			SendClientMessage(playerid, COLOR_GREEN, string);
			BizInfo[ClosestBiz(playerid)][cashbox] = 0;
			SavePlayer(playerid);
			return 1;
  		}
  		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "What are you trying to pull here, you don't own this Business!!!");
			return 1;
		}
	}
//------------------------------------GOTO Biz----------------------------------
/*	if(strcmp(cmd, "/gotobiz", true) == 0)
	(
		if(PlayerInfo[playerid][bowner] == 1) {
			SetPlayerPos(playerid,BizInfo[PlayerInfo[playerid][bowned]][xpos],BizInfo[PlayerInfo[playerid][bowned]][ypos],BizInfo[PlayerInfo[playerid][bowned]][zpos]);
			SendClientMessage(playerid,COLOR_GREEN,"Welcome to your business");
			return 1;
		}
	}*/
//------------------------------Tempoerily Remove Car---------------------------
	if(strcmp(cmd, "/tempRemCar", true) == 0)
	{
		if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "Must be an rcon admin to use this command.");
	    cmd = strtok(cmdtext,idx);
		if(strlen(!cmd)) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "USAGE: /tempRemCar [vehicleid]");
		if(strval(cmd) > 400 || strval(cmd) < 0) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "Please enter a valid vehicleid to be used.");
		SetVehicleVirtualWorld(strval(cmd), 911);
		format(string,sizeof(string),"Vehicle [%d] has been temporarily removed from server. To unremove, /tempAddCar [vehicleid]",strval(cmd));
		SendClientMessage(playerid,COLOR_GREEN,string);
		return 1;
	}
//------------------------------Tempoerily Add Car------------------------------
	if(strcmp(cmd, "/tempAddCar", true) == 0)
	{
		if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "Must be an rcon admin to use this command.");
	    cmd = strtok(cmdtext,idx);
		if(strlen(!cmd)) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "USAGE: /tempAddCar [vehicleid]");
		if(strval(cmd) > 400 || strval(cmd) < 0) return SendClientMessage(playerid,COLOR_LIGHTBLUE, "Please enter a valid vehicleid to be used.");
		SetVehicleVirtualWorld(strval(cmd), 0);
		format(string,sizeof(string),"Vehicle [%d] has been returned to the server",strval(cmd));
		SendClientMessage(playerid,COLOR_GREEN,string);
		return 1;
	}
//---------------------------------Gang Commands--------------------------------
	if(strcmp(cmd, "/gang", true) == 0) {
	    //new tmp[256];
	    new gangcmd, gangnum;
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gang [create/join/invite/quit] [name/number]");
			return 1;
		}
		giveplayerid = strval(tmp);

		if(strcmp(tmp, "create", true)==0)
		    gangcmd = 1;
		else if(strcmp(tmp, "invite", true)==0)
		    gangcmd = 2;
		else if(strcmp(tmp, "join", true)==0)
		    gangcmd = 3;
		else if(strcmp(tmp, "quit", true)==0)
		    gangcmd = 4;

		tmp = strtok(cmdtext, idx);
		if(gangcmd < 3 && !strlen(tmp)) {
		    if(gangcmd==0)
				SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gang [create/join/invite/quit] [name/number]");
			else if(gangcmd==1)
				SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gang [create] [name]");
			else if(gangcmd==2)
				SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gang [invite] [playerID]");
			return 1;
		}

		//Create Gang//
		if(gangcmd==1) {
		    if(playerGang[playerid]>0) {
				SendClientMessage(playerid, COLOR_RED, "You are already in a gang!");
				return 1;
		    }

			for(new i = 1; i < MAX_GANGS; i++) {
				if(gangInfo[i][0]==0) {
				    //name gang
					format(gangNames[i], MAX_GANG_NAME, "%s", tmp);
					//Gang exists
					gangInfo[i][0]=1;
					//There is one member
					gangInfo[i][1]=1;
					//Gang color is player's color
					gangInfo[i][2]=playerColors[playerid];

					//Player is the first gang member
					gangMembers[i][0] = playerid;
					format(string, sizeof(string),"You have created the gang '%s' (id: %d)", gangNames[i], i);
					SendClientMessage(playerid, COLOR_GREEN, string);

					playerGang[playerid]=i;

					return 1;
				}
			}

			return 1;

		//Join Gang//
		} else if (gangcmd==3) {
	 		gangnum = gangInvite[playerid];

		    if(playerGang[playerid]>0) {
				SendClientMessage(playerid, COLOR_RED, "You are already in a gang!");
				return 1;
		    }
	 		if(gangInvite[playerid]==0) {
				SendClientMessage(playerid, COLOR_RED, "You have not been invited to a gang.");
				return 1;
			}
			if(gangInfo[gangnum][0]==0) {
				SendClientMessage(playerid, COLOR_RED, "That gang does not exist!");
				return 1;
			}

			if(gangInfo[gangnum][1] < MAX_GANG_MEMBERS) {
			    new i = gangInfo[gangnum][1];

				gangInvite[playerid]=0;

				gangMembers[gangnum][i] = playerid;

			    GetPlayerName(playerid, sendername, MAX_PLAYER_NAME);
				for(new j = 0; j < gangInfo[gangnum][1]; j++) {
					format(string, sizeof(string),"%s has joined your gang.", sendername);
					SendClientMessage(gangMembers[gangnum][j], COLOR_ORANGE, string);
				}

				gangInfo[gangnum][1]++;
				playerGang[playerid] = gangnum;

				SetPlayerColor(playerid,gangInfo[gangnum][2]);

				format(string, sizeof(string),"You have joined the gang '%s' (id: %d)", gangNames[gangnum], gangnum);
				SendClientMessage(playerid, COLOR_GREEN, string);

				return 1;
			}

			SendClientMessage(playerid, COLOR_RED, "That gang is full.");
			return 1;

		//Invite to Gang//
		} else if (gangcmd==2) {
	 		giveplayerid = strval(tmp);

			if(playerGang[playerid]==0) {
				SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");
				return 1;
			}
//			if(gangMembers[playerGang[playerid]][0]!=playerid) {
//				SendClientMessage(playerid, COLOR_RED, "You need to be the gang leader to send an invite.");
//				return 1;
//			}

			if(IsPlayerConnected(giveplayerid)) {
				GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
				GetPlayerName(playerid, sendername, sizeof(sendername));

				format(string, sizeof(string),"You have sent a gang invite to %s.", giveplayer);
				SendClientMessage(playerid, COLOR_GREEN, string);
				format(string, sizeof(string),"You have recieved a gang invite from %s to '%s' (id: %d)", sendername, gangNames[playerGang[playerid]],playerGang[playerid]);
				SendClientMessage(giveplayerid, COLOR_GREEN, string);

				gangInvite[giveplayerid]=playerGang[playerid];

			} else
				SendClientMessage(playerid, COLOR_RED, "No such player exists!");

		//Leave Gang//
		} else if (gangcmd==4) {
		    PlayerLeaveGang(playerid);
		}

		return 1;
	}

	//------------------- /ganginfo

	if(strcmp(cmd, "/ganginfo", true) == 0) {
	    //new tmp[256];
	    new gangnum;
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp) && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ganginfo [number]");
			return 1;
		} else if (!strlen(tmp))
			gangnum = playerGang[playerid];
		else
			gangnum = strval(tmp);

		if(gangInfo[gangnum][0]==0) {
			SendClientMessage(playerid, COLOR_RED, "No such gang exists!");
			return 1;
		}

		format(string, sizeof(string),"'%s' Gang Members (id: %d)", gangNames[gangnum], gangnum);
		SendClientMessage(playerid, COLOR_GREEN, string);

		for(new i = 0; i < gangInfo[gangnum][1]; i++) {
			GetPlayerName(gangMembers[gangnum][i], giveplayer, sizeof(giveplayer));
			format(string, sizeof(string),"%s (%d)", giveplayer, gangMembers[gangnum][i]);
			SendClientMessage(playerid, COLOR_YELLOW, string);
		}

		return 1;
	}

	//------------------- /gangs

	if(strcmp(cmd, "/gangs", true) == 0)
	{
		new x;

		SendClientMessage(playerid, COLOR_GREEN, "Current Gangs:");
	    for(new i=0; i < MAX_GANGS; i++) {
			if(gangInfo[i][0]==1) {
				format(string, sizeof(string), "%s%s(%d) - %d members", string,gangNames[i],i,gangInfo[i][1]);

				x++;
				if(x > 2) {
				    SendClientMessage(playerid, COLOR_YELLOW, string);
				    x = 0;
					format(string, sizeof(string), "");
				} else {
					format(string, sizeof(string), "%s, ", string);
				}
			}
		}

		if(x <= 2 && x > 0) {
			string[strlen(string)-2] = '.';
		    SendClientMessage(playerid, COLOR_YELLOW, string);
		}

		return 1;
	}
//---------------------------------Call on Phone--------------------------------
	if(strcmp(cmd, "/call", true) == 0)
	{
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_LIGHTBLUE, "Usage: /call [playerid]");
			return 1;
		}
		giveplayerid = strval(tmp);
		if (PlayerInfo[playerid][logged] != 1)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to make a phone call!");
			return 1;
		}
		if (GetPlayerMoney(playerid) < CALL_UNIT_COST)
		{
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not have enough money to make a phone call!");
			return 1;
		}
		if (giveplayerid == playerid)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You cannot call yourself!");
		    return 1;
		}
		if (!(IsPlayerConnected(giveplayerid)))
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "Inactive player id!");
		    return 1;
		}
		if (Calling[playerid] > -1)
		{
			GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer));
			format(string, sizeof(string), "You are already on the phone to %s!", giveplayer);
			SendClientMessage(playerid, COLOR_BRIGHTRED, string);
			return 1;
		}
		if (Calling[giveplayerid] > -1)
		{
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			format(string, sizeof(string), "%s is already on the phone, try again later", giveplayer);
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
			return 1;
		}
		else
		GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
		GetPlayerName(playerid, sendername, sizeof(sendername));
		format(string, sizeof(string), "%s is ringing you, type /answer to answer the call or /hangup to ignore it", sendername);
		SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, string);
		format(string, sizeof(string), "You are ringing %s", giveplayer);
		SendClientMessage(playerid, COLOR_GREEN, string);
		Calling[playerid] = giveplayerid;
		Calling[giveplayerid] = playerid;
		Callerid[playerid] = 1;
		return 1;
	}
//---------------------------------Answer Phone---------------------------------
	if(strcmp(cmd, "/answer", true) == 0)
		{
		if (PlayerInfo[playerid][logged] != 1)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to answer a phone call!");
			return 1;
		}
		if (Calling[playerid] == -1)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "Nobody is calling you!");
		    return 1;
		}
		if (Answered[playerid] == 1)
		{
		    SendClientMessage(playerid, COLOR_LIGHTBLUE, "You are already on the phone!");
		    return 1;
		}
		else
		GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer));
		GetPlayerName(playerid, sendername, sizeof(sendername));
		format(string, sizeof(string), "%s has answered your call, talk away", sendername);
		SendClientMessage(Calling[playerid], COLOR_GREEN, string);
		format(string, sizeof(string), "You have answered %s's call, talk away", giveplayer);
		SendClientMessage(playerid, COLOR_GREEN, string);
   		Answered[playerid] = 1;
   		Answered[Calling[playerid]] = 1;
		Callerid[Calling[playerid]] = 1;
	    return 1;
	}
//---------------------------------HangUp Phone---------------------------------
	if(strcmp(cmd, "/hangup", true) == 0)
	{
		if (PlayerInfo[playerid][logged] != 1)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to hang up a phone call!");
			return 1;
		}
		if (Calling[playerid] == -1)
		{
		    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not on the phone!");
		    return 1;
		}
		else
		{
			GetPlayerName(Calling[playerid], giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "%s has hung up the phone on you", sendername);
			SendClientMessage(Calling[playerid], COLOR_LIGHTBLUE, string);
			format(string, sizeof(string), "You have hung up on %s", giveplayer);
			SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
   			new bCalling = Calling[playerid];
   			Calling[playerid] = -1;
   			Answered[playerid] = 0;
			Callerid[playerid] = 0;
   			Calling[bCalling] = -1;
   			Answered[bCalling] = 0;
			Callerid[bCalling] = 0;
		}
		return 1;
	}
	return 0;
}
//================================Xadmin Commands===============================
//-----------------------------[REGISTRATION SYSTEM]----------------------------
dcmd_register(playerid,params[]) {
	if(!strlen(params)) { new string[256]; format(string,256,"Syntax Error: \"/REGISTER <PASSWORD>\" [Password must be %d+].",Config[MinimumPasswordLength]); return SendClientMessage(playerid,red,string); }
	new index = 0,Password[256],string[256],PlayerFile[256]; Password = strtok(params,index); PlayerFile = GetPlayerFile(playerid);
	if(!Variables[playerid][Registered] && !Variables[playerid][LoggedIn]) {
	    if(strlen(Password) >= Config[MinimumPasswordLength]) {
	        format(string,sizeof(string),"You have registered your account with the password \"%s\" and automatically been logged in.",Password);
	        CreateUserConfigFile(playerid);
			SetUserInt(playerid,"Password",udb_hash(Password));
            SetUserInt(playerid,"Registered",1);
            SetUserInt(playerid,"LoggedIn",1);
            SavePlayer(playerid);
	        Variables[playerid][LoggedIn] = true, Variables[playerid][Registered] = true;
	        PlayerInfo[playerid][logged] = 1;
	        LoadPlayer(playerid);
	        SendClientMessage(playerid,blue,string);
	        new tmp3[100]; GetPlayerIp(playerid,tmp3,100); SetUserString(playerid,"IP",tmp3); OnPlayerRegister(playerid);
	    } else SendClientMessage(playerid,red,"Syntax Error: \"/REGISTER <PASSWORD>\" [Password must be 3+].");
	} else SendClientMessage(playerid,red,"Error: Make sure that you have not registered and are logged out.");
	return 1;
}
dcmd_login(playerid,params[]) {
    if(!strlen(params)) { SendClientMessage(playerid,red,"Syntax Error: \"/LOGIN <PASSWORD>\"."); return 1; }
	new index = 0;
	new Password[256], string[256]; Password = strtok(params,index);
	new PlayerFile[256]; PlayerFile = GetPlayerFile(playerid);
    if(Variables[playerid][Registered] && !Variables[playerid][LoggedIn]) {
        if(udb_hash(Password) == dini_Int(PlayerFile,"Password")) {
            switch(Variables[playerid][Level]) {
                case 0: format(string,sizeof(string),"You have logged into your account. [Status Level: Member]");
                default: format(string,sizeof(string),"You have logged into your account. [Status Level: Administrator Lv. %d]",Variables[playerid][Level]);
			}
            SendClientMessage(playerid,blue,string);
	        SetUserInt(playerid,"LoggedIn",1); Variables[playerid][LoggedIn] = true;
	        PlayerInfo[playerid][logged] = 1;
	        LoadPlayer(playerid);
	        ResetPlayerMoney(playerid);
      		GivePlayerMoney(playerid,PlayerInfo[playerid][pcash]);
	        new tmp3[100]; GetPlayerIp(playerid,tmp3,100); SetUserString(playerid,"IP",tmp3);
	        OnPlayerLogin(playerid,true);
        } else { OnPlayerLogin(playerid,false); SendClientMessage(playerid,red,"Syntax Error: \"/LOGIN <PASSWORD>\"."); }
	} else SendClientMessage(playerid,red,"Error: You must be registered to log in; if you have make sure you haven't already logged in.");
	return 1;
}
dcmd_logout(playerid,params[]) {
	#pragma unused params
	new PlayerFile[256]; PlayerFile = GetPlayerFile(playerid);
    if(Variables[playerid][Registered] && Variables[playerid][LoggedIn]) {
		SendClientMessage(playerid,blue,"You have logged out of your account. You may log back in later by typing \"/LOGIN <PASSWORD>\".");
	 	SetUserInt(playerid,"LoggedIn",0); Variables[playerid][LoggedIn] = false; OnPlayerLogout(playerid);
	 	PlayerInfo[playerid][logged] = 0;
	} else SendClientMessage(playerid,red,"Error: You must be registered and logged into your account first.");
	return 1;
}
//----------------------------[ADMINISTRATION SYSTEM]---------------------------
dcmd_goto(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"goto")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/GOTO <NICK OR ID>\".");
        new id;
		if(!IsNumeric(params)) id = ReturnPlayerID(params);
		else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"GOTO");
			new string[256],PlayerName[24],ActionName[24],Float:X,Float:Y,Float:Z; GetPlayerName(playerid,PlayerName,24); GetPlayerName(id,ActionName,24);
			new Interior = GetPlayerInterior(id); SetPlayerInterior(playerid,Interior); SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(id)); GetPlayerPos(id,X,Y,Z); if(IsPlayerInAnyVehicle(playerid)) { SetVehiclePos(GetPlayerVehicleID(playerid),X+Config[TeleportXOffset],Y+Config[TeleportYOffset],Z+Config[TeleportZOffset]); LinkVehicleToInterior(GetPlayerVehicleID(playerid),Interior); } else SetPlayerPos(playerid,X+Config[TeleportXOffset],Y+Config[TeleportYOffset],Z+Config[TeleportZOffset]);
			format(string,256,"\"%s\" has teleported to your location.",PlayerName); SendClientMessage(id,yellow,string);
			format(string,256,"You have teleported to \"%s's\" location.",ActionName); return SendClientMessage(playerid,yellow,string);
  		} else return SendClientMessage(playerid,red,"ERROR: You can not teleport to yourself or disconnected players.");
	} else return SendLevelErrorMessage(playerid,"goto");
}
dcmd_gethere(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"gethere")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/GETHERE <NICK OR ID>\".");
        new id;
		if(!IsNumeric(params)) id = ReturnPlayerID(params);
		else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
			SendCommandMessageToAdmins(playerid,"GETHERE");
			new string[256],PlayerName[24],ActionName[24],Float:X,Float:Y,Float:Z; GetPlayerName(playerid,PlayerName,24); GetPlayerName(id,ActionName,24);
			new Interior = GetPlayerInterior(playerid); SetPlayerInterior(id,Interior); SetPlayerVirtualWorld(id,GetPlayerVirtualWorld(playerid)); GetPlayerPos(playerid,X,Y,Z); if(IsPlayerInAnyVehicle(id)) { SetVehiclePos(GetPlayerVehicleID(id),X+Config[TeleportXOffset],Y+Config[TeleportYOffset],Z+Config[TeleportZOffset]); LinkVehicleToInterior(GetPlayerVehicleID(id),Interior); } else SetPlayerPos(id,X+Config[TeleportXOffset],Y+Config[TeleportYOffset],Z+Config[TeleportZOffset]);
   			format(string,256,"You have teleported \"%s\" to your location.",ActionName); SendClientMessage(playerid,yellow,string);
			format(string,256,"You have been teleported to \"%s's\" location.",PlayerName); return SendClientMessage(id,yellow,string);
  		} else return SendClientMessage(playerid,red,"ERROR: You can not teleport yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"gethere");
}
dcmd_announce(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"announce")) {
        SendCommandMessageToAdmins(playerid,"ANNOUNCE");
    	if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/ANNOUNCE <TEXT>\".");
		return GameTextForAll(params,4000,3);
    } else return SendLevelErrorMessage(playerid,"announce");
}
dcmd_say(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"say")) {
        SendCommandMessageToAdmins(playerid,"SAY");
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/SAY <TEXT>\".");
		new string[256],xname[24];GetPlayerName(playerid,xname,24); format(string,256,"** Admin %s: %s",xname,params);
		return SendClientMessageToAll(pink,string);
	} else return SendLevelErrorMessage(playerid,"say");
}
dcmd_flip(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"flip")) {
	    if(IsPlayerInAnyVehicle(playerid)) {
	        SendCommandMessageToAdmins(playerid,"FLIP");
			new Float:X,Float:Y,Float:Z,Float:Angle,string[256],xname[24]; GetPlayerName(playerid,xname,24); GetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z); GetVehicleZAngle(GetPlayerVehicleID(playerid),Angle);
			SetVehiclePos(GetPlayerVehicleID(playerid),X,Y,Z+2); SetVehicleZAngle(GetPlayerVehicleID(playerid),Angle);
   			format(string,256,"Admin Chat: Administrator \"%s\" has flipped their vehicle.",xname); return SendMessageToAdmins(string);
		} else return SendClientMessage(playerid,red,"ERROR: You must be in a vehicle.");
	} else return SendLevelErrorMessage(playerid,"flip");
}
dcmd_morning(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"morning")) {
        SendCommandMessageToAdmins(playerid,"MORNING");
        for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(playerid,7,0); return SendClientMessageToAll(yellow,"The world time has been changed to 7:00.");
    } else return SendLevelErrorMessage(playerid,"morning");
}
dcmd_noon(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"noon")) {
    	SendCommandMessageToAdmins(playerid,"NOON");
        for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(playerid,12,0); return SendClientMessageToAll(yellow,"The world time has been changed to 12:00.");
    } else return SendLevelErrorMessage(playerid,"noon");
}
dcmd_evening(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"evening")) {
        SendCommandMessageToAdmins(playerid,"EVENING");
        for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(playerid,18,0); return SendClientMessageToAll(yellow,"The world time has been changed to 18:00.");
    } else return SendLevelErrorMessage(playerid,"evening");
}
dcmd_midnight(playerid,params[]) {
	#pragma unused params
    if(IsPlayerCommandLevel(playerid,"midnight")) {
        SendCommandMessageToAdmins(playerid,"MIDNIGHT");
        for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(playerid,0,0); return SendClientMessageToAll(yellow,"The world time has been changed to 0:00.");
    } else return SendLevelErrorMessage(playerid,"midnight");
}
dcmd_serverinfo(playerid,params[]) {
	#pragma unused params
	new string[256]; format(string,256,"Server Information: [Players Connected: %d || Maximum Players: %d || Ratio: %.2f]",GetConnectedPlayers(),GetMaxPlayers(),floatdiv(GetConnectedPlayers(),GetMaxPlayers()));
	return SendClientMessage(playerid,green,string);
}
dcmd_slap(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"slap")) {
   		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/SLAP <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"SLAP");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    format(string,256,"Administrator \"%s\" has bitch-slapped \"%s\".",xname,ActionName); SendClientMessageToAll(yellow,string);
			new Float:Health; GetPlayerHealth(id,Health); return SetPlayerHealth(id,Health-Config[SlapDecrement]);
		} else return SendClientMessage(playerid,red,"ERROR: You can not slap yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"slap");
}
dcmd_wire(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"wire")) {
   		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/WIRE <NICK OR ID> (<REASON>)\".");
        new tmp[256],Index; tmp = strtok(params,Index);
	   	new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    if(!Variables[id][Wired]) {
		        SendCommandMessageToAdmins(playerid,"WIRE");
			    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			    if(!strlen(params[strlen(tmp)+1])) format(string,256,"\"%s\" has been wired by Administrator \"%s\".",ActionName,xname);
				else format(string,256,"\"%s\" has been wired by Administrator \"%s\". (Reason: %s)",ActionName,xname,params[strlen(tmp)+1]);
				Variables[id][Wired] = true, Variables[id][WiredWarnings] = Config[WiredWarnings];
		    	return SendClientMessageToAll(yellow,string);
			} else return SendClientMessage(playerid,red,"ERROR: This player has already been wired.");
		} else return SendClientMessage(playerid,red,"ERROR: You can not wire yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"wire");
}
dcmd_unwire(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"unwire")) {
   		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/UNWIRE <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    if(Variables[id][Wired]) {
		        SendCommandMessageToAdmins(playerid,"UNWIRE");
			    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
				Variables[id][Wired] = false, Variables[id][WiredWarnings] = Config[WiredWarnings];
			    if(id != playerid) { format(string,256,"\"%s\" has been unwired by Administrator \"%s\".",ActionName,xname); return SendClientMessageToAll(yellow,string); }
			    else return SendClientMessage(playerid,yellow,"You have successfully unwired yourself.");
        	} else return SendClientMessage(playerid,red,"ERROR: This player is not wired.");
		} else return SendClientMessage(playerid,red,"ERROR: You can not unwire a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"unwire");
}
dcmd_kick(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"kick")) {
   		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/KICK <NICK OR ID> (<REASON>)\".");
   		new tmp[256],Index; tmp = strtok(params,Index);
	   	new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"KICK");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
	    	if(!strlen(params[strlen(tmp)+1])) format(string,256,"\"%s\" has been Kicked from the game by Administrator \"%s\".",ActionName,xname);
			else format(string,256,"\"%s\" has been Kicked from the game by Administrator \"%s\". (Reason: %s)",ActionName,xname,params[strlen(tmp)+1]);
			SendClientMessageToAll(yellow,string); return Kick(id);
		} else return SendClientMessage(playerid,red,"ERROR: You can not kick yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"kick");
}
dcmd_ban(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"ban")) {
   		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/BAN <NICK OR ID> (<REASON>)\".");
   		new tmp[256],Index; tmp = strtok(params,Index);
	   	new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"BAN");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    if(!strlen(params[strlen(tmp)+1])) format(string,256,"\"%s\" has been Banned by Administrator \"%s\".",ActionName,xname);
			else format(string,256,"\"%s\" has been Banned by Administrator \"%s\". (Reason: %s)",ActionName,xname,params[strlen(tmp)+1]);
			SendClientMessageToAll(yellow,string); return Ban(id);
		} else return SendClientMessage(playerid,red,"ERROR: You can not ban yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"ban");
}
dcmd_akill(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"akill")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/AKILL <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"AKILL");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    format(string,256,"You have been killed by Administrator \"%s\".",xname); SendClientMessage(id,yellow,string);
		    format(string,256,"You have killed Player \"%s\".",ActionName); SendClientMessage(playerid,yellow,string); return SetPlayerHealth(id,0.0);
		} else return SendClientMessage(playerid,red,"ERROR: You can not auto-kill yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"akill");
}
dcmd_eject(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"eject")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/EJECT <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    if(IsPlayerInAnyVehicle(id)) {
		        SendCommandMessageToAdmins(playerid,"EJECT");
			    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24); RemovePlayerFromVehicle(id);
			    if(id != playerid) {
					format(string,256,"You have been ejected from your vehicle by Administrator \"%s\".",xname); SendClientMessage(id,yellow,string);
			    	format(string,256,"You have ejected Player \"%s\".",ActionName); return SendClientMessage(playerid,yellow,string);
				} else return SendClientMessage(playerid,yellow,"You have ejected yourself from your vehicle.");
			} else return SendClientMessage(playerid,red,"ERROR: This player must be in a vehicle.");
		} else return SendClientMessage(playerid,red,"ERROR: You can not eject a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"eject");
}
dcmd_freeze(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"freeze")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/FREEZE <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"FREEZE");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    TogglePlayerControllable(id,false); format(string,256,"Admin Chat: Admnistrator \"%s\" has frozen \"%s\".",xname,ActionName); return SendMessageToAdmins(string);
		} else return SendClientMessage(playerid,red,"ERROR: You can not freeze yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"freeze");
}
dcmd_unfreeze(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"unfreeze")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/UNFREEZE <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"UNFREEZE");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    TogglePlayerControllable(id,true); format(string,256,"Admin Chat: Admnistrator \"%s\" has unfrozen \"%s\".",xname,ActionName);
			if(id != playerid) return SendMessageToAdmins(string); else return SendClientMessage(playerid,yellow,"You have unfrozen yourself.");
		} else return SendClientMessage(playerid,red,"ERROR: You can not unfreeze a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"unfreeze");
}
dcmd_outside(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"outside")) {
	    SendCommandMessageToAdmins(playerid,"OUTSIDE");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerInterior(i,0);
	    new string[256],xname[24]; GetPlayerName(playerid,xname,24);
	    format(string,256,"Admnistrator \"%s\" has transfered everyone outside.",xname); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"outside");
}
dcmd_healall(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"healall")) {
	    SendCommandMessageToAdmins(playerid,"HEALALL");
 		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerHealth(i,100.0);
 		new string[256],xname[24]; GetPlayerName(playerid,xname,24);
	    format(string,256,"Everyone has been healed by Administrator \"%s\".",xname); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"healall");
}
dcmd_sm(playerid,params[]) {
	#pragma unused params
	if(Config[DisplayServerMessage]) { new string[256]; format(string,sizeof(string),"Server Message: %s",dini_Get("/xadmin/Configuration/Configuration.ini","ServerMessage")); return SendClientMessage(playerid,green,string); }
	else return SendClientMessage(playerid,red,"ERROR: The server message has been disabled.");
}
dcmd_setsm(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setsm")) {
	    SendCommandMessageToAdmins(playerid,"SETSM");
		if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETSM <TEXT>\".");
		dini_Set("/xadmin/Configuration/Configuration.ini","ServerMessage",params);
    	new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Admin Chat: New Server Message: %s",params); SendMessageToAdmins(string); return 1;
	} else return SendLevelErrorMessage(playerid,"setsm");
}
dcmd_uconfig(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"uconfig")) {
		SendCommandMessageToAdmins(playerid,"UCONFIG"); UpdateConfigurationVariables();
    	new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Admin Chat: Administrator \"%s\" has updated the configuration variables.",xname); SendMessageToAdmins(string);
		return 1;
	} else return SendLevelErrorMessage(playerid,"uconfig");
}
dcmd_givehealth(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"givehealth")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 100)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVEHEALTH <NICK OR ID> <1-100>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"GIVEHEALTH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has given you %d percent health.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have given \"%s\" %d percent health.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have given yourself %d percent health.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			new Float:Health; GetPlayerHealth(id,Health); return SetPlayerHealth(id,Health+strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not give a disconnected player health.");
	} else return SendLevelErrorMessage(playerid,"givehealth");
}
dcmd_sethealth(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"sethealth")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 0 && strval(tmp2) <= 100)) return SendClientMessage(playerid,red,"Syntax Error: \"/SET <NICK OR ID> <0-100>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETHEALTH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your health to %d percent.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" health to %d percent.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You've set your health to %d percent.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerHealth(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's health.");
	} else return SendLevelErrorMessage(playerid,"sethealth");
}
dcmd_skinall(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"skinall")) {
	    if(!strlen(params)||!IsNumeric(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/SKINALL <SKINID>\".");
		if(IsSkinValid(strval(params))) {
		    SendCommandMessageToAdmins(playerid,"SKINALL");
			new string[256],xname[24]; GetPlayerName(playerid,xname,24); for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerSkin(i,strval(params));
			format(string,256,"Everyone's skin has been changed to ID %d.",strval(params)); return SendClientMessageToAll(yellow,string);
		} else return SendClientMessage(playerid,red,"ERROR: Invalid skin ID.");
	} else return SendLevelErrorMessage(playerid,"skinall");
}
dcmd_giveallweapon(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"giveallweapon")) {
	    new tmp[256], tmp2[256], Index; tmp = strtok(params,Index); tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) <= 0 || strval(tmp2) <= 10000)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVEALLWEAPON <WEAPON NAME | ID> <1-10,000>\".");
		new id; if(!IsNumeric(tmp)) id = ReturnWeaponID(tmp); else id = strval(tmp);
		if(id == -1||id==19||id==20||id==21||id==0||id==44||id==45) return SendClientMessage(playerid,red,"ERROR: You have selected an invalid weapon ID.");
        SendCommandMessageToAdmins(playerid,"GIVEALLWEAPON");
		new string[256],xname[24],WeaponName[24]; GetWeaponName(id,WeaponName,24); if(id == 18) WeaponName = "Molotov"; GetPlayerName(playerid,xname,24); for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) GivePlayerWeapon(i,id,strval(tmp2));
		format(string,256,"Everyone has been given %d \'%s\' by Administrator \"%s\".",strval(tmp2),WeaponName,xname); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"giveallweapon");
}
dcmd_resetallweapons(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"resetallweapons")) {
	    SendCommandMessageToAdmins(playerid,"RESETALLWEAPONS");
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) ResetPlayerWeapons(i);
		format(string,256,"Administrator \"%s\" has reseted everyone's weapons.",xname); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"resetallweapons");
}
dcmd_setcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setcash")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETCASH <NICK OR ID> <1 - 1,000,000>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETCASH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your cash to $%d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" cash to $%d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your cash to $%d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			ResetPlayerMoney(id); return GivePlayerMoney(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's cash.");
	} else return SendLevelErrorMessage(playerid,"setcash");
}
dcmd_givecash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"givecash")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVECASH <NICK OR ID> <1 - 1,000,000>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"GIVECASH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has given you $%d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have given \"%s\" $%d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have given yourself $%d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return GivePlayerMoney(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not give a disconnected player cash.");
	} else return SendLevelErrorMessage(playerid,"givecash");
}
dcmd_remcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"remcash")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/REMCASH <NICK OR ID> <1 - 1,000,000>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"REMCASH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has removed $%d from your cash.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have removed $%d from \"%s's\" cash.",strval(tmp2),ActionName); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have removed $%d from your cash.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return GivePlayerMoney(id,-strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not remove a disconnected player's cash.");
	} else return SendLevelErrorMessage(playerid,"remcash");
}
dcmd_resetcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"resetcash")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/RESETCASH <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"RESETCASH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has reseted your cash.",xname); SendClientMessage(id,yellow,string); format(string,256,"You have reseted \"%s's\" cash.",ActionName); SendClientMessage(playerid,yellow,string); }
			else SendClientMessage(playerid,yellow,"You have reseted your cash.");
			return ResetPlayerMoney(id);
		} return SendClientMessage(playerid,red,"ERROR: You can not reset a disconnected player's cash.");
	} else return SendLevelErrorMessage(playerid,"resetcash");
}
dcmd_setallcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setallcash")) {
	    if(!strlen(params)||!IsNumeric(params)||!(strval(params)>=0&&strval(params)<=1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETALLCASH <1 - 1,000,000>\".");
        SendCommandMessageToAdmins(playerid,"SETALLCASH");
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) { ResetPlayerMoney(i); GivePlayerMoney(i,strval(params)); }
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" has set every player's cash to $%d.",xname,strval(params)); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"setallcash");
}
dcmd_giveallcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"giveallcash")) {
	    if(!strlen(params)||!IsNumeric(params)||!(strval(params)>=0&&strval(params)<=1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVEALLCASH <1 - 1,000,000>\".");
        SendCommandMessageToAdmins(playerid,"GIVEALLCASH");
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) GivePlayerMoney(i,strval(params));
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" has given every player $%d.",xname,strval(params)); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"giveallcash");
}
dcmd_remallcash(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"remallcash")) {
	    if(!strlen(params)||!(strval(params)>=0&&strval(params)<=1000000)) return SendClientMessage(playerid,red,"Syntax Error: \"/REMALLCASH <1 - 1,000,000>\".");
        SendCommandMessageToAdmins(playerid,"REMALLCASH");
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) GivePlayerMoney(i,-strval(params));
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" has removed $%d from everyone's cash.",xname,strval(params)); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"remallcash");
}
dcmd_resetallcash(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"resetallcash")) {
	    SendCommandMessageToAdmins(playerid,"RESETALLCASH");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) ResetPlayerMoney(i);
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" resetted everyone's cash.",xname); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"resetallcash");
}
dcmd_ejectall(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"ejectall")) {
	    SendCommandMessageToAdmins(playerid,"EJECTALL");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) RemovePlayerFromVehicle(i);
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" reseted ejected everyone from their vehicle.",xname); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"ejectall");
}
dcmd_freezeall(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"freezeall")) {
	    SendCommandMessageToAdmins(playerid,"FREEZEALL");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) TogglePlayerControllable(i,false);
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" frozen everyone.",xname); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"freezeall");
}
dcmd_unfreezeall(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"unfreezeall")) {
		SendCommandMessageToAdmins(playerid,"UNFREEZEALL");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) TogglePlayerControllable(i,true);
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" unfrozen everyone.",xname); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"unfreezeall");
}
dcmd_giveweapon(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"giveweapon")) {
	    new tmp[256], tmp2[256], tmp3[256], Index; tmp = strtok(params,Index),tmp2 = strtok(params,Index),tmp3 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!strlen(tmp3)||!IsNumeric(tmp3)||!(strval(tmp3) <= 0 || strval(tmp3) <= 10000)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVEWEAPON <NICK OR ID> <WEAPON NAME | ID> <1-10,000>\".");
		new id,id2; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp); if(!IsNumeric(tmp2)) id2 = ReturnWeaponID(tmp2); else id2 = strval(tmp2);
        if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
        	if(id2==-1||id2==19||id2==20||id2==21||id2==0||id2==44||id2==45) return SendClientMessage(playerid,red,"ERROR: You have selected an invalid weapon ID.");
            SendCommandMessageToAdmins(playerid,"GIVEWEAPON");
			new string[256],xname[24],ActionName[24],WeaponName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24); GetWeaponName(id2,WeaponName,24); if(id2 == 18) WeaponName = "Molotov";
            if(id != playerid) { format(string,256,"Administrator \"%s\" has given you %d %s.",xname,strval(tmp3),WeaponName); SendClientMessage(id,yellow,string); format(string,256,"You have given \"%s\" %d %s.",ActionName,strval(tmp3),WeaponName); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have given yourself %d %s.",strval(tmp3),WeaponName); SendClientMessage(playerid,yellow,string); }
			return GivePlayerWeapon(id,id2,strval(tmp3));
	    } else return SendClientMessage(playerid,red,"ERROR: You can not give a disconnected player a weapon.");
	} else return SendLevelErrorMessage(playerid,"giveweapon");
}
dcmd_god(playerid,params[]) {
    #pragma unused params
	if(IsPlayerCommandLevel(playerid,"god")) {
	    SendCommandMessageToAdmins(playerid,"GOD");
		if(!Config[GodWeapons]) { SetPlayerHealth(playerid,100000); return SendClientMessage(playerid,yellow,"You have given yourself infinite health."); }
	    else { SetPlayerHealth(playerid,100000); GivePlayerWeapon(playerid,38,50000); GivePlayerWeapon(playerid,WEAPON_GRENADE,50000); return SendClientMessage(playerid,yellow,"You have given yourself infinite health, minigun,grenades."); }
    } else return SendLevelErrorMessage(playerid,"god");
}
dcmd_resetscores(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"resetscores")) {
	    SendCommandMessageToAdmins(playerid,"RESETSCORES");
	    for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerScore(i,0);
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" resetted everyone's score.",xname); return SendClientMessage(playerid,yellow,string);
	} else return SendLevelErrorMessage(playerid,"resetscores");
}
dcmd_setlevel(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setlevel")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 0 && strval(tmp2) <= Config[MaxLevel])) { new string[256]; format(string,256,"Syntax Error: \"SETLEVEL <NICK OR ID> <0 - %d>\".",Config[MaxLevel]); return SendClientMessage(playerid,red,string); }
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
  			if(Variables[id][Level] == strval(tmp2)) return SendClientMessage(playerid,red,"ERROR: That player is already that level.");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
            SendCommandMessageToAdmins(playerid,"SETLEVEL");
			format(string,256,"Administrator \"%s\" has %s you to %s [%d].",xname,((strval(tmp2) >= Variables[id][Level])?("promoted"):("demoted")),((strval(tmp2))?("Administrator"):("Member Status")),strval(tmp2)); SendClientMessage(id,yellow,string);
			format(string,256,"You have %s \"%s\" to %s [%d].",((strval(tmp2) >= Variables[id][Level])?("promoted"):("demoted")),ActionName,((strval(tmp2))?("Administrator"):("Member Status")),strval(tmp2)); SendClientMessage(playerid,yellow,string);
			Variables[id][Level] = strval(tmp2); PlayerInfo[playerid][admin] = strval(tmp2); return SetUserInt(id,"Level",strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set set your or a disconnected player's level.");
	} else return SendLevelErrorMessage(playerid,"setlevel");
}
dcmd_setskin(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setskin")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETSKIN <NICK OR ID> <SKINID>\".");
		if(!IsSkinValid(strval(tmp2))) return SendClientMessage(playerid,red,"ERROR: Invalid skin ID.");
  		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
            SendCommandMessageToAdmins(playerid,"SETSKIN");
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your skin to ID %d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" skin ID to %d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your skin ID to %d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerSkin(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's skin.");
	} else return SendLevelErrorMessage(playerid,"setskin");
}
dcmd_givearmour(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"givearmour")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 100)) return SendClientMessage(playerid,red,"Syntax Error: \"/GIVEARMOUR <NICK OR ID> <1-100>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"GIVEARMOUR");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has given you %d armour.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You have given \"%s\" %d armour.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have given yourself %d armour.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			new Float:Armour; GetPlayerArmour(id,Armour); return SetPlayerArmour(id,Armour+strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not give a disconnected player armour.");
	} else return SendLevelErrorMessage(playerid,"givearmour");
}
dcmd_setarmour(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setarmour")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 100)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETARMOUR <NICK OR ID> <1-100>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETARMOUR");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your armour to %d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You set \"%s\'s\" armour to %d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your armour to %d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerArmour(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's armour.");
	} else return SendLevelErrorMessage(playerid,"setarmour");
}
dcmd_armourall(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"armourall")) {
	    SendCommandMessageToAdmins(playerid,"ARMOURALL");
 		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerArmour(i,100.0);
 		new string[256],xname[24]; GetPlayerName(playerid,xname,24);
	    format(string,256,"Everyone's armour has been restored by Administrator \"%s\".",xname); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"armourall");
}
dcmd_setammo(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setammo")) {
	    new tmp[256], tmp2[256], tmp3[256], Index; tmp = strtok(params,Index),tmp2 = strtok(params,Index),tmp3 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!strlen(tmp3)||!IsNumeric(tmp3)||!IsNumeric(tmp2)||!(strval(tmp3) <= 0 || strval(tmp3) <= 10000)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETAMMO <NICK OR ID> <WEAPON SLOT> <1-10,000>\".");
		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
        if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
        	if(!(strval(tmp2) >= 0 && strval(tmp) <= 12)) return SendClientMessage(playerid,red,"ERROR: Invalid weapon slot! Range: 0 - 12");
            SendCommandMessageToAdmins(playerid,"SETAMMO");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
            if(id != playerid) { format(string,256,"Administrator \"%s\" has set your ammunition in slot \'%d\' to %d.",xname,strval(tmp2),strval(tmp3)); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s\'s\" ammunition in slot %d to %d.",ActionName,strval(tmp2),strval(tmp3)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your ammunition in slot \'%d\' to %d.",strval(tmp2),strval(tmp3)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerAmmo(id,strval(tmp2),strval(tmp3));
	    } else return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's ammunition.");
	} else return SendLevelErrorMessage(playerid,"setammo");
}
dcmd_setscore(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setscore")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 1 && strval(tmp2) <= 100000)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETSCORE <NICK OR ID> <1-100,000>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETSCORE");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your score to %d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You set \"%s\'s\" score to %d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your score to %d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerScore(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's score.");
	} else return SendLevelErrorMessage(playerid,"setscore");
}
dcmd_ip(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"ip")) {
	    SendCommandMessageToAdmins(playerid,"IP");
	    if(!strlen(params)) { new IP[256],string[256]; GetPlayerIp(playerid,IP,256); format(string,256,"Your IP: \'%s\'",IP); return SendClientMessage(playerid,yellow,string); }
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    new string[256],ActionName[24],IP[256]; GetPlayerName(id,ActionName,24); GetPlayerIp(id,IP,256);
		    format(string,256,"\"%s\'s\" IP: \'%s\'",ActionName,IP); return SendClientMessage(playerid,yellow,string);
		} else return SendClientMessage(playerid,red,"ERROR: You can not get the ip of a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"ip");
}
dcmd_ping(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"ping")) {
    	SendCommandMessageToAdmins(playerid,"PING");
	    if(!strlen(params)) { new string[256]; format(string,256,"Your Ping: \'%d\'",GetPlayerPing(playerid)); return SendClientMessage(playerid,yellow,string); }
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    new string[256],ActionName[24],IP[256]; GetPlayerName(id,ActionName,24); GetPlayerIp(id,IP,256);
		    format(string,256,"\"%s\'s\" Ping: \'%d\'",ActionName,GetPlayerPing(id)); return SendClientMessage(playerid,yellow,string);
		} else return SendClientMessage(playerid,red,"ERROR: You can not get the ping of a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"ping");
}
dcmd_explode(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"explode")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/EXPLODE <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"EXPLODE");
  			new string[256],xname[24],ActionName[24],Float:X,Float:Y,Float:Z; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(!IsPlayerInAnyVehicle(id)) GetPlayerPos(id,X,Y,Z); else GetVehiclePos(GetPlayerVehicleID(id),X,Y,Z); for(new i = 1; i <= 5; i++) CreateExplosion(X,Y,Z,10,0);
		    if(id != playerid) {
				format(string,256,"You have been exploded by Administrator \"%s\".",xname); SendClientMessage(id,yellow,string);
		    	format(string,256,"You have exploded Player \"%s\".",ActionName); return SendClientMessage(playerid,yellow,string);
			} else return SendClientMessage(playerid,yellow,"You have exploded yourself.");
		} else return SendClientMessage(playerid,red,"ERROR: You can not explode a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"explode");
}
dcmd_settime(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"settime")) {
	    new tmp[256], tmp2[256], tmp3[256], Index; tmp = strtok(params,Index),tmp2 = strtok(params,Index),tmp3 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!strlen(tmp3)||!IsNumeric(tmp2)||!IsNumeric(tmp3)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETTIME <NICK OR ID> <HOUR> <MINUTE>\".");
		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
        if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
            SendCommandMessageToAdmins(playerid,"SETTIME");
            new xname[24],string[256],Hour[5],Minute[5],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
        	format(Hour,5,"%s%d",((strval(tmp2)<10)?("0"):("")),strval(tmp2)); format(Minute,5,"%s%d",((strval(tmp3)<10)?("0"):("")),strval(tmp3));
            if(id != playerid) { format(string,256,"Administrator \"%s\" has set your time to \'%s:%s\'.",xname,Hour,Minute); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" time to \'%s:%s\'.",ActionName,Hour,Minute); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your time to \'%s:%s\'.",Hour,Minute); SendClientMessage(playerid,yellow,string); }
			return SetPlayerTime(id,strval(tmp2),strval(tmp3));
	    } else return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's time.");
	} else return SendLevelErrorMessage(playerid,"settime");
}
dcmd_setalltime(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setalltime")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp)||!IsNumeric(tmp2)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETALLTIME <HOUR> <MINUTE>\".");
		SendCommandMessageToAdmins(playerid,"SETALLTIME");
		new xname[24],string[256],Hour[5],Minute[5]; GetPlayerName(playerid,xname,24);
        format(Hour,5,"%s%d",((strval(tmp)<10)?("0"):("")),strval(tmp)); format(Minute,5,"%s%d",((strval(tmp2)<10)?("0"):("")),strval(tmp2));
        format(string,256,"Administrator \"%s\" has set everyone's time to \'%s:%s\'.",xname,Hour,Minute);
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,strval(tmp),strval(tmp2)); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"setalltime");
}
dcmd_force(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"force")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/FORCE <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"FORCE");
		    new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
		    ForceClassSelection(id); SetPlayerHealth(id,0); format(string,256,"Admnistrator \"%s\" has forced you to the spawn selection screen.",xname); SendClientMessage(id,yellow,string);
            format(string,256,"You have forced Player \"%s\" to the spawn selection screen.",ActionName); return SendClientMessage(playerid,yellow,string);
		} else return SendClientMessage(playerid,red,"ERROR: You can not force yourself or a disconnected player to the spawn selection screen.");
	} else return SendLevelErrorMessage(playerid,"force");
}
dcmd_setwanted(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setwanted")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 0 && strval(tmp2) <= 6)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETWANTED <NICK OR ID> <0-6>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETWANTED");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your wanted level to %d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You set \"%s\'s\" wanted level to %d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your wanted level to %d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerWantedLevel(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's wanted level.");
	} else return SendLevelErrorMessage(playerid,"setwanted");
}
dcmd_setallwanted(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setallwanted")) {
	    if(!strlen(params)||!IsNumeric(params)||!(strval(params) >= 0 && strval(params) <= 6)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETALLWANTED <0-6>\".");
		new xname[24],string[256]; GetPlayerName(playerid,xname,24);
		SendCommandMessageToAdmins(playerid,"SETALLWANTED");
        format(string,256,"Administrator \"%s\" has set everyone's wanted level to %d.",xname,strval(params));
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerWantedLevel(i,strval(params)); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"setallwanted");
}
dcmd_setworld(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setworld")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 0 && strval(tmp2) <= 255)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETWORLD <NICK OR ID> <VIRT. WORLD ID>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    SendCommandMessageToAdmins(playerid,"SETWORLD");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your virtual world to %d.",xname,strval(tmp2)); SendClientMessage(id,yellow,string); format(string,256,"You set \"%s\'s\" virtual world to %d.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You have set your virtual world to %d.",strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			return SetPlayerVirtualWorld(id,strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's virtual world.");
	} else return SendLevelErrorMessage(playerid,"setworld");
}
dcmd_setallworld(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setallworld")) {
	    if(!strlen(params)||!IsNumeric(params)||!(strval(params) >= 0 && strval(params) <= 255)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETALLWORLD <VIRT. WORLD ID>\".");
		new xname[24],string[256]; GetPlayerName(playerid,xname,24);
		SendCommandMessageToAdmins(playerid,"SETALLWORLD");
        format(string,256,"Administrator \"%s\" has set everyone's virtual world to %d.",xname,strval(params));
		for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerVirtualWorld(i,strval(params)); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"setallworld");
}
dcmd_setgravity(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setgravity")) {
	    if(!strlen(params)||!(strval(params)<=50&&strval(params)>=-50)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETGRAVITY <-50.0 - 50.0>\".");
        SendCommandMessageToAdmins(playerid,"SETGRAVITY");
		new string[256],xname[24]; GetPlayerName(playerid,xname,24); new Float:Gravity = floatstr(params);format(string,256,"Admnistrator \"%s\" has set the gravity to: \'%f\'.",xname,Gravity);
		SetGravity(Gravity); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"setgravity");
}
dcmd_carcolor(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"carcolor")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!(strval(tmp) >= 0 && strval(tmp) <= 126)||!IsNumeric(tmp)||!IsNumeric(tmp2)) return SendClientMessage(playerid,red,"Syntax Error: \"/CARCOLOR <COLOR 1> (<COLOR 2>)\".");
		if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,red,"ERROR: You must be in a vehicle.");
        SendCommandMessageToAdmins(playerid,"CARCOLOR");
		if(!strlen(tmp2)) tmp2 = tmp;
		new string[256],xname[24]; GetPlayerName(playerid,xname,24);
		format(string,256,"You have set your color data to: [Color 1: %d || Color 2: %d]",strval(tmp),strval(tmp2));
		return ChangeVehicleColor(GetPlayerVehicleID(playerid),strval(tmp),strval(tmp2));
	} else return SendLevelErrorMessage(playerid,"carcolor");
}
dcmd_gmx(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"gmx")) {
        SendCommandMessageToAdmins(playerid,"GMX");
        new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" has restarted the game mode.",xname); SendClientMessageToAll(yellow,string); return GameModeExit();
    } else return SendLevelErrorMessage(playerid,"gmx");
}
dcmd_carhealth(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"carhealth")) {
	    new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
	    if(!strlen(tmp)||!strlen(tmp2)||!IsNumeric(tmp2)||!(strval(tmp2) >= 0 && strval(tmp2) <= 1000)) return SendClientMessage(playerid,red,"Syntax Error: \"/CARHEALTH <NICK OR ID> <0-1000>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
		    if(!IsPlayerInAnyVehicle(id)) return SendClientMessage(playerid,red,"ERROR: This player must be in a vehicle.");
            SendCommandMessageToAdmins(playerid,"CARHEALTH");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your car's health to %.f percent.",xname,floatdiv(strval(tmp2),10)); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" car's health to %d percent.",ActionName,strval(tmp2)); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You've set your car's health to %.f percent.",floatdiv(strval(tmp2),10)); SendClientMessage(playerid,yellow,string); }
			return SetVehicleHealth(GetPlayerVehicleID(id),strval(tmp2));
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's car health.");
	} else return SendLevelErrorMessage(playerid,"carhealth");
}
dcmd_xinfo(playerid,params[]) {
	#pragma unused params
	return SendClientMessage(playerid,green,"X-Treme Administration Info: [Creator: Xtreme || Version: 2.2 || Release: 1 || Rel. Date: Sept. 13, 2007]");
}
dcmd_setping(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"setping")) {
	    if(!strlen(params)||!(strval(params) >= 0 && strval(params) <= 10000)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETPING <[0 / OFF] - 10,000>\".");
   		if(!IsNumeric(params)) {
   		    if(!strcmp(params,"off",true)) { Config[MaxPing] = 0; SetConfigInt("MaxPing",0); }
   		    else return SendClientMessage(playerid,red,"Syntax Error: \"/SETPING <[0 / OFF] - 10,000>\".");
   	    }
        Config[MaxPing] = strval(params); SetConfigInt("MaxPing",strval(params));
    	SendCommandMessageToAdmins(playerid,"SETPING");
		new string[256],xname[24],Fo[30]; GetPlayerName(playerid,xname,24); format(Fo,30,"to %d",Config[MaxPing]); if(!Config[MaxPing]) Fo = "off";
		format(string,256,"Administrator \"%s\" has set the Maximum Ping %s.",xname,Fo); return SendClientMessageToAll(yellow,string);
	} else return SendLevelErrorMessage(playerid,"setping");
}
dcmd_givecar(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"givecar")) {
        if(Spec[playerid][Spectating]) return SendClientMessage(playerid,red,"ERROR: You must not be spectating.");
        if(IsPlayerInAnyVehicle(playerid)) {
            new Car = GetPlayerVehicleID(playerid), Model = GetVehicleModel(Car);
            switch(Model) { case 448,461,462,463,468,471,509,510,521,522,523,581,586: return SendClientMessage(playerid,red,"ERROR: You can not add components to bikes!"); }
        	TogglePlayerControllable(playerid,false);
        	SetCameraBehindPlayer(playerid);
        	return ShowMenuForPlayer(GiveCar,playerid);
        } else return SendClientMessage(playerid,red,"ERROR: You must be in a vehicle.");
    } else return SendLevelErrorMessage(playerid,"givecar");
}
dcmd_xspec(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"xspec")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/XSPEC <NICK OR ID | OFF>\".");
        new id;
		if(!IsNumeric(params)) {
		    if(!strcmp(params,"off",true)) {
		        if(!Spec[playerid][Spectating]) return SendClientMessage(playerid,red,"ERROR: You must be spectating.");
		        SendCommandMessageToAdmins(playerid,"XSPEC");
		        TogglePlayerSpectating(playerid,false);
		        Spec[playerid][Spectating] = false;
		        return SendClientMessage(playerid,yellow,"You have turned your spectator mode off.");
		    }
		  	id = ReturnPlayerID(params);
		}
		else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    SendCommandMessageToAdmins(playerid,"SPEC");
		    new string[256],xname[24]; GetPlayerName(id,xname,24);
		    if(Spec[id][Spectating]) return SendClientMessage(playerid,red,"Error: You can not spectate a player already spectating.");
	        if(Spec[playerid][Spectating] && Spec[playerid][SpectateID] == id) return SendClientMessage(playerid,red,"ERROR: You are already spectating this player.");
			Spec[playerid][Spectating] = true, Spec[playerid][SpectateID] = id;
	        SetPlayerInterior(playerid,GetPlayerInterior(id));
	        TogglePlayerSpectating(playerid,true);
			if(!IsPlayerInAnyVehicle(id)) PlayerSpectatePlayer(playerid,id);
			else PlayerSpectateVehicle(playerid,GetPlayerVehicleID(id));
	    	format(string,256,"You are now spectating player \"%s\".",xname); return SendClientMessage(playerid,yellow,string);
		} else return SendClientMessage(playerid,red,"ERROR: You can not spectate yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"spec");
}
dcmd_xjail(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"xjail")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/XJAIL <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
		    if(Variables[id][Jailed]) return SendClientMessage(playerid,red,"ERROR: This player has already been jailed.");
		    SendCommandMessageToAdmins(playerid,"XJAIL");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			format(string,256,"Administrator \"%s\" has jailed you.",xname); SendClientMessage(id,yellow,string); format(string,256,"You have jailed \"%s\".",ActionName); SendClientMessage(playerid,yellow,string);
			SetUserInt(id,"Jailed",1); Variables[id][Jailed] = true; SetPlayerInterior(id,3); SetPlayerPos(id,197.6661,173.8179,1003.0234); return SetPlayerFacingAngle(id,0);
		} return SendClientMessage(playerid,red,"ERROR: You can not jail yourself or a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"xjail");
}
dcmd_xunjail(playerid,params[]) {
	if(IsPlayerCommandLevel(playerid,"xunjail")) {
	    if(!strlen(params)) return SendClientMessage(playerid,red,"Syntax Error: \"/XUNJAIL <NICK OR ID>\".");
   		new id; if(!IsNumeric(params)) id = ReturnPlayerID(params); else id = strval(params);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID && id != playerid) {
            if(!Variables[id][Jailed]) return SendClientMessage(playerid,red,"ERROR: This player has already been unjailed.");
			SendCommandMessageToAdmins(playerid,"XUNJAIL");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has unjailed you.",xname); SendClientMessage(id,yellow,string); format(string,256,"You have unjailed \"%s\".",ActionName); SendClientMessage(playerid,yellow,string); }
			else SendClientMessage(playerid,yellow,"You have unjailed yourself.");
			SetUserInt(id,"Jailed",0); Variables[id][Jailed] = false; return SpawnPlayer(id);
		} return SendClientMessage(playerid,red,"ERROR: You can not unjail a disconnected player.");
	} else return SendLevelErrorMessage(playerid,"xunjail");
}
dcmd_setname(playerid,params[]) {
    if(IsPlayerCommandLevel(playerid,"setname")) {
    	new tmp[256],tmp2[256],Index; tmp = strtok(params,Index), tmp2 = strtok(params,Index);
   	 	if(!strlen(tmp)||!strlen(tmp2)) return SendClientMessage(playerid,red,"Syntax Error: \"/SETNAME <NICK OR ID> <NEW NAME>\".");
   		new id; if(!IsNumeric(tmp)) id = ReturnPlayerID(tmp); else id = strval(tmp);
		if(IsPlayerConnected(id) && id != INVALID_PLAYER_ID) {
            SendCommandMessageToAdmins(playerid,"SETNAME");
			new string[256],xname[24],ActionName[24]; GetPlayerName(playerid,xname,24); GetPlayerName(id,ActionName,24);
			if(id != playerid) { format(string,256,"Administrator \"%s\" has set your name to %s.",xname,tmp2); SendClientMessage(id,yellow,string); format(string,256,"You have set \"%s's\" name to %s.",ActionName,tmp2); SendClientMessage(playerid,yellow,string); }
			else { format(string,256,"You've set your name to %s.",tmp2); SendClientMessage(playerid,yellow,string); }
			OnPlayerConnect(id); return SetPlayerName(id,tmp2);
		} return SendClientMessage(playerid,red,"ERROR: You can not set a disconnected player's name.");
	} else return SendLevelErrorMessage(playerid,"setname");
}
dcmd_admins(playerid,params[]) {
	#pragma unused params
	new ACount,i,xname[24],string[256];
	for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerXAdmin(i)) ACount++;
	if(!ACount) return SendClientMessage(playerid,green,"Admins Online: None");
	if(ACount == 1) {
	    for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerXAdmin(i)) break;
	    GetPlayerName(i,xname,24); format(string,256,"Admins Online: %s (%d)",xname,Variables[i][Level]);
	    return SendClientMessage(playerid,green,string);
	}
	if(ACount >= 1) {
	    new bool:First = false;
	    for(i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && IsPlayerXAdmin(i)) {
     		GetPlayerName(i,xname,24);
			if(!First) { format(string,256,"Admins Online: %s (%d),",xname,Variables[i][Level]); First = true; }
	        else format(string,256,"%s %s (%d)",string,xname,Variables[i][Level]);
	    }
	    return SendClientMessage(playerid,green,string);
	}
	return 1;
}
dcmd_xcommands(playerid,params[]) {
    #pragma unused params
	if(!IsPlayerXAdmin(playerid)) return SendClientMessage(playerid,red,"ERROR: You must be an administrator to view these commands.");
    SendClientMessage(playerid,COLOR_LIGHTBLUE,"-=Xtreme's Administration Commands=-");
	SendClientMessage(playerid,yellow,"Environment: /weather - /morning - /afternoon - /evening - /midnight - /set(all)time - /say - /set(all)world - /setgravity");
	SendClientMessage(playerid,yellow,"Player: /goto - /gethere - /slap - /(un)wire - /kick - /ban - /akill - /(un)freeze(all) - /healall - /give(all)weapon - /force");
	SendClientMessage(playerid,yellow,"        /givehealth - /sethealth - /skinall- /armourall - /outside - /resetallweapons - /set/give/rem/reset(all)cash - /ip");
	SendClientMessage(playerid,yellow,"        /setskin - /givearmour - /setarmour - /setammo - /setscore - /ping - /explode - /setname - /set(all)wanted");
	SendClientMessage(playerid,yellow,"Vehicle: /flip - /eject(all) - /givecar - /carcolor - /carhealth - /x(un)lock");
	return SendClientMessage(playerid,yellow,"Console: /resetscores - /announce - /setsm - /setlevel - /god - /uconfig - /setping - /gmx - /xspec");
}
dcmd_vr(playerid,params[]) {
	#pragma unused params
	if(IsPlayerCommandLevel(playerid,"vr")) {
    	if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,red,"ERROR: You must be in a vehicle to repair.");
		SetVehicleHealth(GetPlayerVehicleID(playerid),1000.0);
		return SendClientMessage(playerid,yellow,"You have successfully repaired your vehicle!");
	} else return SendLevelErrorMessage(playerid,"vr");
}
dcmd_weather(playerid,params[]) {
    #pragma unused params
    if(IsPlayerCommandLevel(playerid,"weather")) {
   		TogglePlayerControllable(playerid,false);
    	SetCameraBehindPlayer(playerid);
    	return ShowMenuForPlayer(Weather,playerid);
    } else return SendLevelErrorMessage(playerid,"weather");
}
dcmd_giveadmin(playerid,params[]) {
	#pragma unused params
	if(IsPlayerAdmin(playerid)) {
	    SetUserInt(playerid,"Level",10);
	    Variables[playerid][Level] = 10;
	    PlayerInfo[playerid][admin] = 10;
	    return SendClientMessage(playerid,yellow,"You have set yourself as a level 10 admin!");
	} else return SendClientMessage(playerid,red,"You must be a rcon admin to use this!");
}
//================================Race Commands=================================
dcmd_racehelp(playerid, params[])
{
    #pragma unused params
	SendClientMessage(playerid, COLOR_GREEN, "Yagu's race script racing help:");
	SendClientMessage(playerid, COLOR_WHITE, "/loadrace [name] to load a track and start it.");
	SendClientMessage(playerid, COLOR_WHITE, "/join to join a race");
	SendClientMessage(playerid, COLOR_WHITE, "/ready to begin the race once others are also ready");
	SendClientMessage(playerid, COLOR_WHITE, "/leave to leave the race");
	SendClientMessage(playerid, COLOR_WHITE, "/endrace to abort the race");
	SendClientMessage(playerid, COLOR_WHITE, "/bestlap and /bestrace to display record times for races, or specify a race to see the times for it");
	SendClientMessage(playerid, COLOR_WHITE, "/buildhelp for info on builing race");
	SendClientMessage(playerid, COLOR_WHITE, "/raceadmin for admin settings");
	return 1;
}

dcmd_buildhelp(playerid, params[])
{
    #pragma unused params
	SendClientMessage(playerid, COLOR_GREEN, "Yagu's race script building help:");
	SendClientMessage(playerid, COLOR_WHITE, "/buildrace to start building a race");
	SendClientMessage(playerid, COLOR_WHITE, "/cp for a new checkpoint - /scp to select an old checkpoint");
	SendClientMessage(playerid, COLOR_WHITE, "/dcp to delete a checkpoint - /mcp to move a checkpoint");
	SendClientMessage(playerid, COLOR_WHITE, "/rcp to replace checkpoint with a new one");
	SendClientMessage(playerid, COLOR_WHITE, "/editrace to load a race in the editor");
	SendClientMessage(playerid, COLOR_WHITE, "/saverace [name] to save the race");
	SendClientMessage(playerid, COLOR_WHITE, "/buildmenu to set racemode/laps/etc");
	SendClientMessage(playerid, COLOR_WHITE, "/racehelp for info on racing itself");
	SendClientMessage(playerid, COLOR_WHITE, "/raceadmin for admin settings");
	return 1;
}

dcmd_buildrace(playerid, params[])
{
    #pragma unused params
	if(BuildAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceBuilders[playerid] != 0)
	{
		SendClientMessage(playerid, COLOR_YELLOW, "You are already building a race.");
	}
	else if(RaceParticipant[playerid]>0)
	{
	    SendClientMessage(playerid, COLOR_YELLOW, "You are participating in a race, can't build a race.");
	}
	else
	{
		new slot;
		slot=GetBuilderSlot(playerid);
		if(slot == 0)
		{
			SendClientMessage(playerid, COLOR_YELLOW, "No builderslots available!");
			return 1;
		}
		format(ystring,sizeof(ystring),"You are now building a race (Slot: %d)",slot);
		SendClientMessage(playerid, COLOR_GREEN, ystring);
		RaceBuilders[playerid]=slot;
		BCurrentCheckpoints[b(playerid)]=0;
		Bracemode[b(playerid)]=0;
		Blaps[b(playerid)]=0;
		BAirrace[b(playerid)] = 0;
		BCPsize[b(playerid)] = 8.0;
	}
	return 1;
}

dcmd_cp(playerid, params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] != 0 && BCurrentCheckpoints[b(playerid)] < MAX_RACECHECKPOINTS)
	{
		new Float:x, Float:y, Float:z;
		GetPlayerPos(playerid,x,y,z);
		format(ystring,sizeof(ystring),"Checkpoint %d created: %f,%f,%f.",BCurrentCheckpoints[b(playerid)],x,y,z);
		SendClientMessage(playerid, COLOR_GREEN, ystring);
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0]=x;
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1]=y;
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2]=z;
		BSelectedCheckpoint[b(playerid)]=BCurrentCheckpoints[b(playerid)];
		SetBRaceCheckpoint(playerid,BCurrentCheckpoints[b(playerid)],-1);
		BCurrentCheckpoints[b(playerid)]++;
	}
	else if(RaceBuilders[playerid] != 0 && BCurrentCheckpoints[b(playerid)] == MAX_RACECHECKPOINTS)
	{
		format(ystring,sizeof(ystring),"Sorry, maximum amount of checkpoints reached (%d).",MAX_RACECHECKPOINTS);
		SendClientMessage(playerid, COLOR_YELLOW, ystring);
	}
	else
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
	}
	return 1;
}

dcmd_scp(playerid, params[])
{
	new sele, tmp[256], idx;
    tmp = rstrtok(params, idx);
    if(!strlen(tmp)) {
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /scp [checkpoint]");
		return 1;
    }
    sele = strval(tmp);
	if(RaceBuilders[playerid] != 0)
	{
		if(sele>BCurrentCheckpoints[b(playerid)]-1 || BCurrentCheckpoints[b(playerid)] < 1 || sele < 0)
		{
			SendClientMessage(playerid, COLOR_YELLOW, "Invalid checkpoint!");
			return 1;
		}
		format(ystring,sizeof(ystring),"Selected checkpoint %d.",sele);
		SendClientMessage(playerid, COLOR_GREEN, ystring);
		BActiveCP(playerid,sele);
		BSelectedCheckpoint[b(playerid)]=sele;
	}
	else
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
	}
	return 1;
}

dcmd_rcp(playerid, params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] == 0)
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
		return 1;
	}
	else if(BCurrentCheckpoints[b(playerid)] < 1)
	{
		SendClientMessage(playerid, COLOR_YELLOW, "No checkpoint to replace!");
		return 1;
	}
	new Float:x,Float:y,Float:z;
	GetPlayerPos(playerid,x,y,z);
	format(ystring,sizeof(ystring),"Checkpoint %d replaced: %f,%f,%f.",BSelectedCheckpoint[b(playerid)],x,y,z);
	SendClientMessage(playerid, COLOR_GREEN, ystring);
	BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][0]=x;
	BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][1]=y;
	BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][2]=z;
	BActiveCP(playerid,BSelectedCheckpoint[b(playerid)]);
    return 1;
}

dcmd_mcp(playerid, params[])
{
	if(RaceBuilders[playerid] == 0)
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
		return 1;
	}
	else if(BCurrentCheckpoints[b(playerid)] < 1)
	{
		SendClientMessage(playerid, COLOR_YELLOW, "No checkpoint to move!");
		return 1;
	}
	new idx, direction, dir[32];
	dir=rstrtok(params, idx);
	new Float:amount=floatstr(rstrtok(params,idx));
	if(amount == 0.0 || (dir[0] != 'x' && dir[0]!='y' && dir[0]!='z'))
	{
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mcp [x,y or z] [amount]");
		return 1;
	}
    if(dir[0] == 'x') direction=0;
    else if (dir[0] == 'y') direction=1;
    else if (dir[0] == 'z') direction=2;
    BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][direction]=BRaceCheckpoints[b(playerid)][BSelectedCheckpoint[b(playerid)]][direction]+amount;
	BActiveCP(playerid,BSelectedCheckpoint[b(playerid)]);
	return 1;
}

dcmd_dcp(playerid, params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] == 0)
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
		return 1;
	}
	else if(BCurrentCheckpoints[b(playerid)] < 1)
	{
		SendClientMessage(playerid, COLOR_YELLOW, "No checkpoint to delete!");
		return 1;
	}
	for(new i=BSelectedCheckpoint[b(playerid)];i<BCurrentCheckpoints[b(playerid)];i++)
	{
		BRaceCheckpoints[b(playerid)][i][0]=BRaceCheckpoints[b(playerid)][i+1][0];
		BRaceCheckpoints[b(playerid)][i][1]=BRaceCheckpoints[b(playerid)][i+1][1];
		BRaceCheckpoints[b(playerid)][i][2]=BRaceCheckpoints[b(playerid)][i+1][2];
	}
	BCurrentCheckpoints[b(playerid)]--;
	BSelectedCheckpoint[b(playerid)]--;
	if(BCurrentCheckpoints[b(playerid)] < 1)
	{
	    DisablePlayerRaceCheckpoint(playerid);
	    BSelectedCheckpoint[b(playerid)]=0;
		return 1;
	}
	else if(BSelectedCheckpoint[b(playerid)] < 0)
	{
	    BSelectedCheckpoint[b(playerid)]=0;
	}
	BActiveCP(playerid,BSelectedCheckpoint[b(playerid)]);
	SendClientMessage(playerid,COLOR_GREEN,"Checkpoint deleted!");
	return 1;
}

dcmd_clearrace(playerid,params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] != 0) clearrace(playerid);
	else SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
	return 1;
}

dcmd_editrace(playerid,params[])
{
	if(RaceBuilders[playerid] == 0)
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
		return 1;
	}
	if(BCurrentCheckpoints[b(playerid)]>0) //Clear the old race if there is such.
	{
		for(new i=0;i<BCurrentCheckpoints[b(playerid)];i++)
		{
			BRaceCheckpoints[b(playerid)][i][0]=0.0;
			BRaceCheckpoints[b(playerid)][i][1]=0.0;
			BRaceCheckpoints[b(playerid)][i][2]=0.0;
		}
		BCurrentCheckpoints[b(playerid)]=0;
	}
	new tmp[256],idx;
    tmp = rstrtok(params, idx);
    if(!strlen(tmp))
	{
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /editrace [name]");
		return 1;
    }
	new race_name[32],templine[42];
	format(race_name,sizeof(race_name), "%s.yr",tmp);
	if(!fexist(race_name))
	{
		format(ystring,sizeof(ystring), "The race \"%s\" doesn't exist.",tmp);
		SendClientMessage(playerid, COLOR_RED, ystring);
		return 1;
	}
    BCurrentCheckpoints[b(playerid)]=-1;
	new File:f, i;
	f = fopen(race_name, io_read);
	fread(f,templine,sizeof(templine));
	if(templine[0] == 'Y') //Checking if the racefile is v0.2+
	{
		new fileversion;
	    rstrtok(templine,i); // read off YRACE
		fileversion = strval(rstrtok(templine,i)); // read off the file version
		if(fileversion > RACEFILE_VERSION) // Check if the race is made with a newer version of the racefile format
		{
		    format(ystring,128,"Race \'%s\' is created with a newer version of YRACE, unable to load.",tmp);
		    SendClientMessage(playerid,COLOR_RED,ystring);
		    return 1;
		}
		rstrtok(templine,i); // read off RACEBUILDER
		Bracemode[b(playerid)] = strval(rstrtok(templine,i)); // read off racemode
		Blaps[b(playerid)] = strval(rstrtok(templine,i)); // read off amount of laps
		if(fileversion >= 2)
		{
		    BAirrace[b(playerid)] = strval(rstrtok(templine,i));
		    BCPsize[b(playerid)] = floatstr(rstrtok(templine,i));
		}
		else
		{
			BAirrace[b(playerid)] = 0;
			BCPsize[b(playerid)] = 8.0;
		}
		fread(f,templine,sizeof(templine)); // read off best race times, not saved due to editing the track
		fread(f,templine,sizeof(templine)); // read off best lap times,          -||-
	}
	else //Otherwise add the lines as checkpoints, the file is made with v0.1 (or older) version of the script.
	{
		BCurrentCheckpoints[b(playerid)]++;
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0] = floatstr(rstrtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(rstrtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(rstrtok(templine,i));
	}
	while(fread(f,templine,sizeof(templine),false))
	{
		BCurrentCheckpoints[b(playerid)]++;
		i=0;
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0] = floatstr(rstrtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(rstrtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(rstrtok(templine,i));
	}
	fclose(f);
	BCurrentCheckpoints[b(playerid)]++; // # of next CP to be created
	format(ystring,sizeof(ystring),"Race \"%s\" has been loaded for editing. (%d checkpoints)",tmp,BCurrentCheckpoints[b(playerid)]);
	SendClientMessage(playerid, COLOR_GREEN,ystring);
    return 1;
}

dcmd_saverace(playerid, params[])
{
	if(RaceBuilders[playerid] != 0)
	{
		new tmp[256], idx;
	    tmp = rstrtok(params, idx);
	    if(!strlen(tmp))
		{
			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /saverace [name]");
			return 1;
	    }
	    if(BCurrentCheckpoints[b(playerid)] < 2)
	    {
	        SendClientMessage(playerid, COLOR_YELLOW, "You need atleast 2 checkpoints to save!");
	        return 1;
	    }
		new race_name[32],templine[42];
		format(race_name, 32, "%s.yr",tmp);
		if(fexist(race_name))
		{
			format(ystring,sizeof(ystring), "Race \"%s\" already exists.",tmp);
			SendClientMessage(playerid, COLOR_RED, ystring);
			return 1;
		}
		new File:f,Float:x,Float:y,Float:z, Bcreator[MAX_PLAYER_NAME];
		GetPlayerName(playerid, Bcreator, MAX_PLAYER_NAME);
		f = fopen(race_name,io_write);
		format(templine,sizeof(templine),"YRACE %d %s %d %d %d %f\n", RACEFILE_VERSION, Bcreator, Bracemode[b(playerid)], Blaps[b(playerid)], BAirrace[b(playerid)], BCPsize[b(playerid)]);
		fwrite(f,templine);
		format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best complete race times
		fwrite(f,templine);
		format(templine,sizeof(templine),"A 0 A 0 A 0 A 0 A 0\n"); //Best lap times
		fwrite(f,templine);
		for(new i = 0; i < BCurrentCheckpoints[b(playerid)];i++)
		{
			x=BRaceCheckpoints[b(playerid)][i][0];
			y=BRaceCheckpoints[b(playerid)][i][1];
			z=BRaceCheckpoints[b(playerid)][i][2];
			format(templine,sizeof(templine),"%f %f %f\n",x,y,z);
			fwrite(f,templine);
		}
		fclose(f);
		format(ystring,sizeof(ystring),"Your race \"%s\" has been saved.",tmp);
   		SendClientMessage(playerid, COLOR_GREEN, ystring);
	}
	else
	{
		SendClientMessage(playerid, COLOR_RED, "You are not building a race!");
	}
	return 1;
}

dcmd_setlaps(playerid,params[])
{
	new tmp[256], idx;
    tmp = rstrtok(params, idx);
    if(!strlen(tmp) || strval(tmp) <= 0)
	{
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /setlaps [amount of laps (min: 1)]");
		return 1;
   	}
	if(RaceBuilders[playerid] != 0)
    {
		Blaps[b(playerid)] = strval(tmp);
		format(tmp,sizeof(tmp),"Amount of laps set to %d.", Blaps[b(playerid)]);
		SendClientMessage(playerid, COLOR_GREEN, tmp);
        return 1;
    }
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceActive == 1 || RaceStart == 1) SendClientMessage(playerid, COLOR_RED, "Race already in progress!");
	else if(LCurrentCheckpoint == 0) SendClientMessage(playerid, COLOR_YELLOW, "No race loaded.");
	else
	{
	    Racelaps=strval(tmp);
		format(tmp,sizeof(tmp),"Amount of laps set to %d for current race.", Racelaps);
		SendClientMessage(playerid, COLOR_GREEN, tmp);
	}
	return 1;
}

dcmd_racemode(playerid,params[])
{
	new tmp[256], idx, tempmode;
    tmp = rstrtok(params, idx);
    if(!strlen(tmp))
	{
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /racemode [0/1/2/3]");
		return 1;
   	}
	if(tmp[0] == 'd') tempmode=0;
	else if(tmp[0] == 'r') tempmode=1;
	else if(tmp[0] == 'y') tempmode=2;
	else if(tmp[0] == 'm') tempmode=3;
	else tempmode=strval(tmp);

	if (0 > tempmode || tempmode > 3)
   	{
   	    SendClientMessage(playerid, COLOR_YELLOW, "Invalid racemode!");
		return 1;
   	}
	if(RaceBuilders[playerid] != 0)
    {
		if(tempmode == 2 && BCurrentCheckpoints[b(playerid)] < 3)
		{
		    SendClientMessage(playerid, COLOR_YELLOW, "Can't set racemode 2 on races with only 2 CPs. Changing to mode 1 instead.");
		    Bracemode[b(playerid)] = 1;
		    return 1;
		}
		Bracemode[b(playerid)] = tempmode;
		format(tmp,sizeof(tmp),"Racemode set to %d.", Bracemode[b(playerid)]);
		SendClientMessage(playerid, COLOR_GREEN, tmp);
        return 1;
    }
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceActive == 1 || RaceStart == 1) SendClientMessage(playerid, COLOR_RED, "Race already in progress!");
	else if(LCurrentCheckpoint == 0) SendClientMessage(playerid, COLOR_YELLOW, "No race loaded.");
	else
	{
		if(tempmode == 2 && LCurrentCheckpoint < 2)
		{
		    SendClientMessage(playerid, COLOR_YELLOW, "Can't set racemode 2 on races with only 2 CPs. Changing to mode 1 instead.");
		    Racemode = 1;
		    return 1;
		}
	    Racemode=tempmode;
		format(tmp,sizeof(tmp),"Racemode set to %d.", Racemode);
		SendClientMessage(playerid, COLOR_GREEN, tmp);
	}
	return 1;
}

dcmd_loadrace(playerid, params[])
{
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	Racemode = 0; Racelaps = 1;
	new tmp[128], idx, fback;
    tmp = rstrtok(params, idx);
    if(!strlen(tmp))
	{
		SendClientMessage(playerid, COLOR_WHITE, "USAGE: /loadrace [name]");
		return 1;
    }
    if(RaceActive == 1)
    {
		SendClientMessage(playerid, COLOR_RED, "A race is already active!");
		return 1;
    }
	fback=LoadRace(tmp);
	if(fback == -1) format(ystring,sizeof(ystring),"Race \'%s\' doesn't exist!",tmp);
	else if (fback == -2) format(ystring,sizeof(ystring),"Race \'%s\' is created with a newer version of YRACE, cannot load.",tmp);
	if(fback < 0)
	{
	    SendClientMessage(playerid,COLOR_RED,ystring);
	    return 1;
	}
	format(ystring,sizeof(ystring),"Race \'%s\' loaded, /startrace to start it. You can change laps and mode before that.",CRaceName);
	SendClientMessage(playerid,COLOR_GREEN,ystring);
	if(LCurrentCheckpoint<2 && Racemode == 2)
	{
	    Racemode = 1; // Racemode 2 doesn't work well with only 2CPs, and mode 1 is just the same when playing with 2 CPs.
	}                 // Setting racemode 2 is prevented from racebuilder so this shouldn't happen anyways.
#if defined MENUSYSTEM
	if(!IsValidMenu(MRace)) CreateRaceMenus();
	if(Airrace == 0) SetMenuColumnHeader(MRace,0,"Air race: off");
	else SetMenuColumnHeader(MRace,0,"Air race: ON");
	TogglePlayerControllable(playerid,0);
	ShowMenuForPlayer(MRace,playerid);
#endif
	return 1;
}

dcmd_startrace(playerid, params[])
{
	#pragma unused params
    if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(LCurrentCheckpoint == 0) SendClientMessage(playerid,COLOR_YELLOW,"No race loaded!");
	else if (RaceActive == 1) SendClientMessage(playerid,COLOR_YELLOW,"Race is already active!");
	else startrace();
	return 1;
}


dcmd_deleterace(playerid, params[])
{
	if((RaceAdmin == 1 || BuildAdmin == 1) && IsNotAdmin(playerid)) return 1;
	new filename[128], idx;
	filename = rstrtok(params,idx);
	if(!(strlen(filename)))
	{
	    SendClientMessage(playerid, COLOR_WHITE, "USAGE: /deleterace [race]");
	    return 1;
	}
	format(filename,sizeof(filename),"%s.yr",filename);
	if(!fexist(filename))
	{
		format(ystring,sizeof(ystring), "The race \"%s\" doesn't exist.",filename);
		SendClientMessage(playerid, COLOR_RED, ystring);
		return 1;
	}
	fremove(filename);
	format(ystring,sizeof(ystring), "The race \"%s\" has been deleted.",filename);
	SendClientMessage(playerid, COLOR_GREEN, ystring);
	return 1;
}

dcmd_join(playerid,params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] != 0)
	{
	    SendClientMessage(playerid, COLOR_YELLOW, "You are currently building a race, can't join. Use /clearrace to exit build mode.");
	    return 1;
	}
	if(RaceParticipant[playerid]>0)
	{
	    SendClientMessage(playerid, COLOR_YELLOW, "You've already joined the race!");
	}
	else if(RaceActive==1 && RaceStart==0)
	{
		if(PrizeMode >= 2 && GetPlayerMoney(playerid) < JoinFee)
		{
			format(ystring,sizeof(ystring),"You don't have enough money to join the race! (Join fee: %d$)",JoinFee);
			SendClientMessage(playerid, COLOR_YELLOW, ystring);
			return 1;
		}
		else if (PrizeMode >= 2)
		{
			new tempval;
			tempval=(-1)*JoinFee;
		    GivePlayerMoney(playerid,tempval);
		    Pot+=JoinFee;
		}
		CurrentCheckpoint[playerid]=0;
		if(Racemode == 3)
		{
			SetRaceCheckpoint(playerid,LCurrentCheckpoint,LCurrentCheckpoint-1);
			CurrentCheckpoint[playerid]=LCurrentCheckpoint;
		}
		else SetRaceCheckpoint(playerid,0,1);
		RaceParticipant[playerid]=1;
		CurrentLap[playerid]=0;
		SendClientMessage(playerid, COLOR_GREEN, "You have joined the race, go to the start!");
		Participants++;
	}
	else if(RaceActive==1 && RaceStart==1)
	{
	    SendClientMessage(playerid, COLOR_YELLOW, "The race has already started, can't join.");
	}
	else
	{
	    SendClientMessage(playerid, COLOR_YELLOW, "There is no race you can join.");
	}
	return 1;
}

dcmd_leave(playerid,params[])
{
	#pragma unused params
	if(RaceParticipant[playerid] > 0)
	{
       	if(RaceParticipant[playerid]==3 && RaceStart == 1) //Countdown in progress, no leaving during it.
		{
			SendClientMessage(playerid,COLOR_RED,"Unable to leave at this time: Countdown in progress.");
			return 1;
		}
		DisablePlayerRaceCheckpoint(playerid);
		RaceParticipant[playerid]=0;
		Participants--;
		SendClientMessage(playerid,COLOR_YELLOW,"You have left the race.");
		if(PrizeMode >= 2 && RaceStart == 0)
		{
		    GivePlayerMoney(playerid,JoinFee/2);
		    Pot-=JoinFee/2;
		}
        if(Participants == 0) endrace();
		else if(RaceStart == 0)ReadyRefresh();
	}
	else SendClientMessage(playerid, COLOR_YELLOW, "You aren't in a race.");
    return 1;
}

dcmd_endrace(playerid, params[])
{
	#pragma unused params
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
    if(RaceActive==0)
    {
        SendClientMessage(playerid, COLOR_YELLOW, "There is no race active.");
		return 1;
    }
    endrace();
	return 1;
}

dcmd_ready(playerid, params[])
{
	#pragma unused params
	new PState=GetPlayerState(playerid);
	if(RaceParticipant[playerid]==2 && PState != PLAYER_STATE_PASSENGER)
	{
		SendClientMessage(playerid,COLOR_GREEN,"You are now ready. Type /ready again to cancel.");
		RaceParticipant[playerid]=3;
		ReadyRefresh();
	}
	else if (RaceParticipant[playerid]==3 && RaceStart==0)
	{
	    SendClientMessage(playerid,COLOR_YELLOW,"You are now not ready. Type /ready when you are.");
	    RaceParticipant[playerid]=2;
	}
	else if (PState == PLAYER_STATE_PASSENGER) SendClientMessage(playerid,COLOR_YELLOW,"You need to be driving for yourself!");
	else if(RaceParticipant[playerid] == 1) SendClientMessage(playerid,COLOR_YELLOW,"You must have visited the starting CP to /ready.");
	else SendClientMessage(playerid,COLOR_YELLOW,"You have not participated in a race.");
    return 1;
}

dcmd_bestlap(playerid,params[])
{
	new tmp[64], idx;
    tmp = rstrtok(params, idx);
	if(LoadTimes(playerid,1,tmp)) return 1;
	if(TopLapTimes[0] == 0)
	{
	    SendClientMessage(playerid,COLOR_YELLOW,"No scores available.");
		return 1;
	}
	else if(ORacemode == 0)
	{
	    SendClientMessage(playerid,COLOR_YELLOW,"This race doesn't have any laps.");
		return 1;
	}
	format(ystring,sizeof(ystring),"%s by %s - Best Laps:",CRaceName,CBuilder);
	SendClientMessage(playerid,COLOR_GREEN,ystring);
	for(new i;i<5;i++)
	{
		if(TopLapTimes[i] == 0)
		{
		    format(ystring,sizeof(ystring),"%d. None yet",i+1);
			i=6;
		}
		else
		{
	 	   format(ystring,sizeof(ystring),"%d. %s - %s",i+1,BeHuman(TopLapTimes[i]),TopLappers[i]);
	    }
	    SendClientMessage(playerid,COLOR_GREEN,ystring);
	}
    return 1;
}

dcmd_bestrace(playerid,params[])
{
	new tmp[64], idx;
    tmp = rstrtok(params, idx);
	if(LoadTimes(playerid,0,tmp)) return 1;
	if(TopRacerTimes[0] == 0)
	{
	    SendClientMessage(playerid,COLOR_YELLOW,"No scores available.");
		return 1;
	}
	format(ystring,sizeof(ystring),"%s by %s - Best Race times:",CRaceName,CBuilder);
	SendClientMessage(playerid,COLOR_GREEN,ystring);
	for(new i;i<5;i++)
	{
		if(TopRacerTimes[i] == 0)
		{
		    format(ystring,sizeof(ystring),"%d. None yet",i+1);
			i=6;
		}
		else
		{
	 	   format(ystring,sizeof(ystring),"%d. %s - %s",i+1,BeHuman(TopRacerTimes[i]),TopRacers[i]);
	    }
	    SendClientMessage(playerid,COLOR_GREEN,ystring);
	}
    return 1;
}

dcmd_airrace(playerid,params[])
{
	#pragma unused params
	if(RaceBuilders[playerid] != 0)
	{
	    if(BAirrace[b(playerid)] == 0)
	    {
	        SendClientMessage(playerid,COLOR_GREEN,"Air race enabled.");
			BAirrace[b(playerid)]=1;
	    }
	    else
	    {
	        SendClientMessage(playerid,COLOR_GREEN,"Air race disabled.");
			BAirrace[b(playerid)]=0;
	    }
		return 1;
	}
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceActive == 1 || RaceStart == 1) SendClientMessage(playerid, COLOR_YELLOW, "Race is already in progress!");
	else if(LCurrentCheckpoint == 0) SendClientMessage(playerid, COLOR_YELLOW, "No race loaded!");
	else if(Airrace == 0)
    {
        SendClientMessage(playerid,COLOR_GREEN,"Air race enabled.");
		Airrace = 1;
    }
    else if(Airrace == 1)
    {
        SendClientMessage(playerid,COLOR_GREEN,"Air race disabled.");
		Airrace = 0;
    }
    else printf("Error in /airrace detected. RaceActive: %d, RaceStart: %d LCurrentCheckpoint: %d, Airrace: %d", RaceActive,RaceStart,LCurrentCheckpoint,Airrace);
	return 1;
}

dcmd_cpsize(playerid,params[])
{
	new idx, tmp[32];
	tmp = rstrtok(params,idx);
	if(!(strlen(tmp)) || floatstr(tmp) <= 0.0)
	{
	    SendClientMessage(playerid,COLOR_WHITE,"USAGE: /cpsize [size]");
	    return 1;
	}
	if(RaceBuilders[playerid] != 0)
	{
	    BCPsize[b(playerid)] = floatstr(tmp);
	    format(ystring,sizeof(ystring),"Checkpoint size set to %f",floatstr(tmp));
		SendClientMessage(playerid,COLOR_GREEN,ystring);
	    return 1;
	}
	if(RaceAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceActive == 1) SendClientMessage(playerid, COLOR_YELLOW, "Race has already been activated!");
	else if(LCurrentCheckpoint == 0) SendClientMessage(playerid, COLOR_YELLOW, "No race loaded!");
	else
	{
	    CPsize = floatstr(tmp);
	    format(ystring,sizeof(ystring),"Checkpoint size set to %f",floatstr(tmp));
		SendClientMessage(playerid,COLOR_GREEN,ystring);
	}
	return 1;
}

dcmd_prizemode(playerid,params[])
{
	if(IsNotAdmin(playerid)) return 1;
	new idx, tmp;
	tmp=strval(rstrtok(params,idx));
    if(tmp < 0 || tmp > 4) SendClientMessage(playerid,COLOR_WHITE,"USAGE: /prizemode [0-4]");
	else if(RaceActive == 1) SendClientMessage(playerid,COLOR_YELLOW,"Race is already active!");
    else
    {
        PrizeMode = tmp;
        format(ystring,sizeof(ystring),"Prizemode set to %d",PrizeMode);
		SendClientMessage(playerid,COLOR_GREEN,ystring);
    }
	return 1;
}

dcmd_setprize(playerid,params[])
{
	if(IsNotAdmin(playerid)) return 1;
	new idx, tmp;
    tmp = strval(rstrtok(params, idx));
    if(0 >= tmp) SendClientMessage(playerid,COLOR_WHITE,"USAGE: /setprize [amount]");
	else if(RaceActive == 1) SendClientMessage(playerid,COLOR_YELLOW,"Race is already active!");
    else
    {
        Prize = tmp;
        format(ystring,sizeof(ystring),"Prize set to %d",Prize);
		SendClientMessage(playerid,COLOR_GREEN,ystring);
    }
	return 1;
}

#if defined MENUSYSTEM
dcmd_raceadmin(playerid,params[])
{
	#pragma unused params
	if(IsNotAdmin(playerid)) return 1;
	if(!IsValidMenu(MAdmin)) CreateRaceMenus();
	TogglePlayerControllable(playerid,0);
	ShowMenuForPlayer(MAdmin,playerid);
	return 1;
}

dcmd_buildmenu(playerid,params[])
{
	#pragma unused params
	if(BuildAdmin == 1 && IsNotAdmin(playerid)) return 1;
	if(RaceBuilders[playerid] == 0)
	{
		SendClientMessage(playerid,COLOR_YELLOW,"You are not building a race!");
		return 1;
	}
	if(BAirrace[b(playerid)] == 0) SetMenuColumnHeader(MBuild,0,"Air race: off");
	else SetMenuColumnHeader(MBuild,0,"Air race: on");
	if(!IsValidMenu(MBuild)) CreateRaceMenus();
	TogglePlayerControllable(playerid,0);
	ShowMenuForPlayer(MBuild,playerid);
	return 1;
}
#endif
//=================================KIHC Stuff===================================
LoadPly(playerid,info[],value[]){
	new filen[256],hpname[256];
	GetPlayerName(playerid,hpname,255);
	format(filen,256,"%s.zip",hpname);
	new data[256];
	new front;
	new len;
	if (fexist(filen)){}
	else{
		new File:open = fopen(filen,io_write);
		fclose(open);
	}
	new File:Read = fopen(filen,io_read);
	fread(Read,data);
	len = strlen(data);
	front = strfind(data,info,true);
	if (front == -1){
		return 0;
	}
	else{
		strdel(data,0,front);
		front = strfind(data,"=");
		strdel(data,0,front);
		front = strfind(data,";");
		strdel(data,0,1);
		strdel(data,front-1,len);
		format(value,sizeof(data),data);
		return 1;
	}
}

SavePly(playerid,info[],value[]){
	new sta[256];
	new filen[256],hpname[256];
	GetPlayerName(playerid,hpname,255);
	format(filen,256,"%s.zip",hpname);
	if (fexist(filen)){}
	else{
		new File:open = fopen(filen,io_write);
		fclose(open);
	}
	format(sta,256,"%s=",info);
	new data[256],fnd;
	new File:Check = fopen(filen,io_read);
	fread(Check,data);
	fclose(Check);
	fnd = strfind(data,sta);
	if(fnd ==-1){
		new File:Read = fopen(filen,io_append);
		format(data,256,"%s=%s;",info,value);
		fwrite(Read,data);
		fclose(Read);
		////print("meee");
	}
	else{
		new len,str;
		new hstring[256];
		new File:Read = fopen(filen,io_read);
		fread(Read,data);
		////print(data);
		str = strfind(data,info);
		len = strfind(data,";",true,str);
		strdel(data,str,len+1);
		////print(data);
		format(hstring,256,"%s=%s;",info,value);
		strins(data,hstring,str);
		////print(data);
		fclose(Read);
		new File:Write = fopen(filen,io_write);
		fwrite(Write,data);
		fclose(Write);
		////print("me");
	}
}

Loadpropertt(hpname[],info[],value[]){
	new filen[256];
	format(filen,256,"%s.zip",hpname);
	new data[256];
	new front;
	new len;
	if (fexist(filen)){}
	else{
		new File:open = fopen(filen,io_write);
		fclose(open);
	}
	new File:Read = fopen(filen,io_read);
	fread(Read,data);
	len = strlen(data);
	front = strfind(data,info,true);
	if (front == -1){
		////print("loop ");
		return 0;
	}
	else{
		strdel(data,0,front);
		front = strfind(data,"=");
		strdel(data,0,front);
		front = strfind(data,";");
		strdel(data,0,1);
		strdel(data,front-1,len);
		format(value,sizeof(data),data);
		////print("loop ");
		return 1;
	}
}

Savepropertt(hpname[],info[],value[]){
	new sta[256];
	new filen[256];
	format(filen,256,"%s.zip",hpname);
	format(sta,256,"%s=",info);
	new data[256],fnd;
	if (fexist(filen)){}
	else{
		new File:open = fopen(filen,io_write);
		fclose(open);
	}
	new File:Check = fopen(filen,io_read);
	fread(Check,data);
	fclose(Check);
	fnd = strfind(data,sta);
	if(fnd ==-1){
		new File:Read = fopen(filen,io_append);
		format(data,256,"%s=%s;",info,value);
		fwrite(Read,data);
		fclose(Read);
		////print("meee");
	}
	else{
		new len,str;
		new hstring[256];
		new File:Read = fopen(filen,io_read);
		fread(Read,data);
		////print(data);
		str = strfind(data,info);
		len = strfind(data,";",true,str);
		strdel(data,str,len+1);
		////print(data);
		format(hstring,256,"%s=%s;",info,value);
		strins(data,hstring,str);
		////print(data);
		fclose(Read);
		new File:Write = fopen(filen,io_write);
		fwrite(Write,data);
		fclose(Write);
		////print("me");
	}
}

SetHouseCost(Houseid,hcost){
	new str[256];
	valstr(str,hcost);
	SetHouseInfo(Houseid,"cost",str);
}

MakeTenent1(playerid,Houseid){
	////print("MakeTenent1");
	new str1[256],str2[256],d;
	new str3[100];
	format(str3,100,"house%d",Houseid);
	d = 0;
	GetPlayerName(playerid,str2,256);
	Loadpropertt(str3,"Tenent1",str1);
	////printf("%d",d);
	if (strcmp(str1,"none")==0){
		d = 1;
		////printf("%d",d);
		Savepropertt(str3,"Tenent1",str2);
	}
	Loadpropertt(str3,"Tenent2",str1);
	if (strcmp(str1,"none")==0 && d == 0){
		d = 1;////printf("%d",d);
		Savepropertt(str3,"Tenent2",str2);
	}
	Loadpropertt(str3,"Tenent3",str1);
	if (strcmp(str1,"none")==0 && d == 0){
		d = 1;////printf("%d",d);
		Savepropertt(str3,"Tenent3",str2);
	}
	Loadpropertt(str3,"Tenent4",str1);
	if (strcmp(str1,"none")==0 && d == 0){
		d = 1;////printf("%d",d);
		Savepropertt(str3,"Tenent4",str2);
	}
	Loadpropertt(str3,"Tenent5",str1);
	if (strcmp(str1,"none")==0 && d == 0){
		d = 1;////printf("%d",d);
		Savepropertt(str3,"Tenent5",str2);
	}
	if (d == 0){
		////printf("%d",d);
		GameTextForPlayer(playerid,"~r~There are no empty rooms AVAILABLE",5000,1);
	}
	else{
		format(str3,100,"house%d",Houseid);
		Loadpropertt(str3,"Rent",str2);
		new hcost = strval(str2);
		GivePlayerMoney(playerid,-hcost);
		GivePlayerMoney(playerid,-hcost);
		GameTextForPlayer(playerid,"~g~Congrats for you new house.",5000,1);
	}
}
SetPlayerInHouse(playerid,Houseid){
	PIH1[playerid] = Houseid;
	SetPlayerPos(playerid,HIX1[Houseid],HIY1[Houseid],HIZ1[Houseid]);
	SetPlayerInterior(playerid,HII1[Houseid]);
	ShowMenuForPlayer(Hexit1,playerid);
}

SetHouseInfo(Houseid,info[],value[]){
	new str[100];
	format(str,100,"house%d",Houseid);
	Savepropertt(str,info,value);
}

GetHouseInfo(Houseid,info[],value[]){
	new str[100];
	new ret;
	format(str,100,"house%d",Houseid);
	ret = Loadpropertt(str,info,value);
	return ret;
}

SetPlayerOutHouse(playerid,Houseid){
	PIH1[playerid] = 0;
	SetPlayerPos(playerid,HOX1[Houseid],HOY1[Houseid],HOZ1[Houseid]);
	SetPlayerInterior(playerid,0);
}

IsPlayerAllowedInHouse(playerid,Houseid){
	new str1[256],str2[256];
	GetPlayerName(playerid,str2,256);
	GetHouseInfo(Houseid,"Owner",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	GetHouseInfo(Houseid,"Tenent1",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	GetHouseInfo(Houseid,"Tenent2",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	GetHouseInfo(Houseid,"Tenent3",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	GetHouseInfo(Houseid,"Tenent4",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	GetHouseInfo(Houseid,"Tenent5",str1);
	if (strcmp(str1,str2)==0){
		return 1;
	}
	else{
		return 0;
	}
}

AddStaticHouse(Float:x,Float:y,Float:z,Float:ix,Float:iy,Float:iz,ii){
	//print("addstaticHouse");
	hidd++;
	HP1[CreatePickup(1273,2,x,y,z)] = hidd;
	HIX1[hidd] = ix;
	HIY1[hidd] = iy;
	HIZ1[hidd] = iz;
	HII1[hidd] = ii;
	HOX1[hidd] = x;
	HOY1[hidd] = y;
	HOZ1[hidd] = z;
	new str[256];
	format(str,256,"house%d.zip",hidd);
	if (!fexist(str)){
		new File:House = fopen(str,io_write);
		fclose(House);
		SetHouseInfo(hidd,"Owner","none");
		SetHouseInfo(hidd,"Rent","0");
		SetHouseInfo(hidd,"Cost","50000");
		SetHouseInfo(hidd,"Tenent1","none");
		SetHouseInfo(hidd,"Tenent2","none");
		SetHouseInfo(hidd,"Tenent3","none");
		SetHouseInfo(hidd,"Tenent4","none");
		SetHouseInfo(hidd,"Tenent5","none");
	}
	return hidd;
}

OnPlayerEnterHousee(playerid,Houseid)
{
	ShowMenuForPlayer(Hmen1,playerid);
	HDD[playerid] = Houseid;
}
//=================================Save Stuff===================================
public SaveComponent(streamid,componentid)
{
	new playerid = GetDriverID(VehicleInfo[streamid][idnum]);
	if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
		for(new s=0; s<20; s++) {
   			if(componentid == spoiler[s][0]) {
      			VehicleInfo[streamid][mod1] = componentid;
          	}
		}
		for(new s=0; s<3; s++) {
     		if(componentid == nitro[s][0]) {
       			VehicleInfo[streamid][mod2] = componentid;
   	     	}
		}
		for(new s=0; s<23; s++) {
    		if(componentid == fbumper[s][0]) {
       			VehicleInfo[streamid][mod3] = componentid;
    		}
		}
		for(new s=0; s<22; s++) {
     		if(componentid == rbumper[s][0]) {
       			VehicleInfo[streamid][mod4] = componentid;
   	    	}
		}
		for(new s=0; s<28; s++) {
     		if(componentid == exhaust[s][0]) {
       			VehicleInfo[streamid][mod5] = componentid;
     		}
		}
		for(new s=0; s<2; s++) {
     		if(componentid == bventr[s][0]) {
       			VehicleInfo[streamid][mod6] = componentid;
     		}
		}
		for(new s=0; s<2; s++) {
     		if(componentid == bventl[s][0]) {
   				VehicleInfo[streamid][mod7] = componentid;
     		}
		}
		for(new s=0; s<4; s++) {
			if(componentid == bscoop[s][0]) {
       			VehicleInfo[streamid][mod8] = componentid;
 			}
		}
		for(new s=0; s<13; s++) {
     		if(componentid == rscoop[s][0]) {
       			VehicleInfo[streamid][mod9] = componentid;
     		}
		}
		for(new s=0; s<21; s++) {
			if(componentid == lskirt[s][0]) {
       			VehicleInfo[streamid][mod10] = componentid;
 			}
		}
		for(new s=0; s<21; s++) {
     		if(componentid == rskirt[s][0]) {
       			VehicleInfo[streamid][mod11] = componentid;
	       	}
		}
		for(new s=0; s<1; s++) {
     		if(componentid == hydraulics[s][0]) {
       			VehicleInfo[streamid][mod12] = componentid;
     		}
		}
		for(new s=0; s<1; s++) {
     		if(componentid == base[s][0]) {
       			VehicleInfo[streamid][mod13] = componentid;
   	       	}
		}
		for(new s=0; s<2; s++) {
     		if(componentid == rbbars[s][0]) {
       			VehicleInfo[streamid][mod14] = componentid;
     		}
		}
		for(new s=0; s<2; s++) {
     		if(componentid == fbbars[s][0]) {
       			VehicleInfo[streamid][mod15] = componentid;
     		}
		}
		for(new s=0; s<17; s++) {
		if(componentid == wheels[s][0]) {
       			VehicleInfo[streamid][mod16] = componentid;
   	       	}
		}
		for(new s=0; s<2; s++) {
			if(componentid == lights[s][0]) {
       			VehicleInfo[streamid][mod17] = componentid;
 			}
		}
		SaveVehicles();
		return 1;
	}
	return 0;
}

stock SavePaintjob(streamid,paintjobid)
{
    new playerid = GetDriverID(VehicleInfo[streamid][idnum]);
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
		if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
			VehicleInfo[streamid][paintjob] = paintjobid;
			return 1;
		}
	}
	SaveVehicles();
	return 0;
}

stock SaveColors(streamid,color1,color2)
{
    new playerid = GetDriverID(VehicleInfo[streamid][idnum]);
	if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER) {
		if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
			VehicleInfo[streamid][color_1] = color1;
   			VehicleInfo[streamid][color_2] = color2;
			return 1;
		}
	}
	return 0;
}
//================================Get Driver Id=================================
stock GetDriverID(vehicleid)
{
    for(new i=0; i<MAX_PLAYERS; i++) {
        if(IsPlayerConnected(i)) {
            if(IsPlayerInAnyVehicle(i)) {
                if(GetPlayerVehicleID(i) == vehicleid && GetPlayerState(i) == PLAYER_STATE_DRIVER) {
					return i;
                }
            }
        }
    }
    return -1;
}
//==============================Is Player in Area===============================
public isPlayerInArea(playerID, Float:data[4])
{
	new Float:X, Float:Y, Float:Z;
	GetPlayerPos(playerID, X, Y, Z);
	if(X >= data[0] && X <= data[2] && Y >= data[1] && Y <= data[3]) {
		return 1;
	}
	return 0;
}
//=============================Gamemode Exit Stuff==============================
public GameModeExitFunc()
{
	GameModeExit();
	return 1;
}
//=================================Team Chat====================================
public GetPlayers() //By rapidZ
{
	new i;
	new player;
	player = 0;
	for (i=0;i<MAX_PLAYERS;i++){
		if(IsPlayerConnected(i)){
			player++;
		}
	}
	return player;
}
//=========================Tram/RC Entering by !damo!===========================
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if(newkeys == KEY_SECONDARY_ATTACK ){
		if(!IsPlayerInAnyVehicle(playerid)){
			new Float:x, Float:y, Float:z, vehicle;
			GetPlayerPos(playerid, x, y, z );
			GetVehicleWithinDistance(playerid, x, y, z, 20.0, vehicle);
			if(IsVehicleRcTram(vehicle)){
			    PutPlayerInVehicle(playerid, vehicle, 0);
			}
		}

		else {
			new vehicleID = GetPlayerVehicleID(playerid);
			if(IsVehicleRcTram(vehicleID) || GetVehicleModel(vehicleID) == 594){
			    if(GetVehicleModel(vehicleID) != 449){
			    	new Float:x, Float:y, Float:z;
			   	 	GetPlayerPos(playerid, x, y, z);
		    		SetPlayerPos(playerid, x+0.5, y, z+1.0);
				}
			}
		}
	}
}

GetVehicleWithinDistance( playerid, Float:x1, Float:y1, Float:z1, Float:dist, &veh){
	for(new i = 1; i < MAX_VEHICLES; i++){
		if(GetVehicleModel(i) > 0){
			if(GetPlayerVehicleID(playerid) != i ){
	        	new Float:x, Float:y, Float:z;
	        	new Float:x2, Float:y2, Float:z2;
				GetVehiclePos(i, x, y, z);
				x2 = x1 - x; y2 = y1 - y; z2 = z1 - z;
				new Float:vDist = (x2*x2+y2*y2+z2*z2);
				if( vDist < dist){
					veh = i;
					dist = vDist;
				}
			}
		}
	}
}

IsVehicleRcTram( vehicleid )
{
   	switch(GetVehicleModel(vehicleid))
	{
		case 449, 501, 464, 441, 465, 564: return 1;
		default: return 0;
	}
	return 0;
}
//==================================Menu Selection==============================
public OnPlayerSelectedMenuRow(playerid, row)
{
	new Menu:Current = GetPlayerMenu(playerid);
	if(Current == MAdmin)
	{
		if(row <=4 && RaceActive == 1)
		{
		    SendClientMessage(playerid,COLOR_RED,"Race active, cannot change this setting!");
			ShowMenuForPlayer(MAdmin,playerid);
		    return 1;
		}
		if(row == 0) ShowMenuForPlayer(MPMode,playerid);
		else if (row == 1) ShowMenuForPlayer(MPrize,playerid);
		else if (row == 2) ShowMenuForPlayer(MDyna,playerid);
		else if (row == 3) ShowMenuForPlayer(MFee,playerid);
		else if (row == 4) ShowMenuForPlayer(MDelay,playerid);
		else if (row == 5)
		{
		    if(RaceActive == 1) endrace();
		    else SendClientMessage(playerid,COLOR_YELLOW,"No race active!");
		    ShowMenuForPlayer(MAdmin,playerid);
		}
		else if (row == 9)
		{
			TogglePlayerControllable(playerid,1);
			HideMenuForPlayer(MAdmin,playerid);
		}
		else
		{
			if(row == 6 && RaceAdmin == 1) RaceAdmin=0;
			else if(row == 6 && RaceAdmin == 0) RaceAdmin=1;
			else if(row == 7 && BuildAdmin == 1) BuildAdmin=0;
			else if(row == 7 && BuildAdmin == 0) BuildAdmin=1;
			else if(row == 8 && RRotation >= 0) RRotation = -1;
			else RRotation = 0;
			if(RaceAdmin == 1) format(ystring,sizeof(ystring),"RA: ON");
			else format(ystring,sizeof(ystring),"RA: off");
			if(BuildAdmin == 1) format(ystring,sizeof(ystring),"%s BA: ON",ystring);
			else format(ystring,sizeof(ystring),"%s BA: off",ystring);
			if(RRotation >= 0) format(ystring,sizeof(ystring),"%s RR: ON",ystring);
			else format(ystring,sizeof(ystring),"%s RR: off",ystring);
			if(RRotation >= 0 && row == 8)  RotationTimer = SetTimer("RaceRotation",RRotationDelay,1);
			else if(RRotation -1 && row == 8) KillTimer(RotationTimer);
			RefreshMenuHeader(playerid,MAdmin,ystring);
		}
	}
	else if(Current == MPMode)
	{
		if(row == 5)
		{
			 ShowMenuForPlayer(MAdmin,playerid);
			 return 1;
		}
		PrizeMode = row;
		if     (PrizeMode == 0) ystring = "Fixed";
		else if(PrizeMode == 1) ystring = "Dynamic";
		else if(PrizeMode == 2) ystring = "Join Fee";
		else if(PrizeMode == 3) ystring = "Join Fee + Fixed";
		else if(PrizeMode == 4) ystring = "Join Fee + Dynamic";
		format(ystring,sizeof(ystring),"Mode: %s",ystring);
		RefreshMenuHeader(playerid,MPMode,ystring);
	}
	else if(Current == MPrize)
	{
	    if(row == 6)
	    {
	        ShowMenuForPlayer(MAdmin,playerid);
	        return 1;
	    }
	    if     (row == 0) Prize += 100;
	    else if(row == 1) Prize += 1000;
	    else if(row == 2) Prize += 10000;
	    else if(row == 3) Prize -= 100;
	    else if(row == 4) Prize -= 1000;
	    else if(row == 5) Prize -= 10000;
	    if(Prize < 0) Prize = 0;
		format(ystring,sizeof(ystring),"Amount: %d",Prize);
		RefreshMenuHeader(playerid,MPrize,ystring);
	}
	else if(Current == MDyna)
	{
		if(row == 4)
		{
		    ShowMenuForPlayer(MAdmin,playerid);
		    return 1;
		}
		if     (row == 0) DynaMP++;
		else if(row == 1) DynaMP+=5;
		else if(row == 2) DynaMP--;
		else if(row == 3) DynaMP-=5;
		else if(DynaMP < 1) DynaMP = 1;
		format(ystring,sizeof(ystring),"Multiplier: %dx",DynaMP);
		RefreshMenuHeader(playerid,MDyna,ystring);
	}
	else if(Current == MBuild)
	{

	    if (row == 0)
		{
			format(ystring,sizeof(ystring),"Laps: %d",Blaps[b(playerid)]);
			SetMenuColumnHeader(MLaps,0,ystring);
			ShowMenuForPlayer(MLaps,playerid);
		}
	    else if (row == 1)
		{
			format(ystring,sizeof(ystring),"Mode: %s",ReturnModeName(Bracemode[b(playerid)]));
			SetMenuColumnHeader(MRacemode,0,ystring);
			ShowMenuForPlayer(MRacemode,playerid);
		}
		else if (row == 2)
		{
		    format(ystring,sizeof(ystring),"Size: %0.2f",BCPsize[b(playerid)]);
		    SetMenuColumnHeader(MCPsize,0,ystring);
		    ShowMenuForPlayer(MCPsize,playerid);
		}
	    else if (row == 3)
	    {
	        if(BAirrace[b(playerid)] == 0)
			{
				BAirrace[b(playerid)] = 1;
				format(ystring,sizeof(ystring),"Air race: ON");
			}
   	        else if(BAirrace[b(playerid)] == 1)
			{
				BAirrace[b(playerid)] = 0;
				format(ystring,sizeof(ystring),"Air race: off");
			}
   	        RefreshMenuHeader(playerid,MBuild,ystring);
	    }
	    else if(row == 4)
	    {
	        clearrace(playerid);
	        HideMenuForPlayer(MBuild,playerid);
	        TogglePlayerControllable(playerid,1);
			return 1;
	    }
	    else if(row == 5)
	    {
	        HideMenuForPlayer(MBuild,playerid);
			TogglePlayerControllable(playerid,1);
	    }
	}
	else if(Current == MLaps)
	{

	    if(row == 6)
	    {
	        if(RaceBuilders[playerid] != 0) ShowMenuForPlayer(MBuild,playerid);
	        else ShowMenuForPlayer(MRace,playerid);
	        return 1;
		}
		new change=0;
	    if     (row == 0) change++;
		else if(row == 1) change+=5;
		else if(row == 2) change+=10;
		else if(row == 3) change--;
		else if(row == 4) change-=5;
		else if(row == 5) change-=10;
		if(RaceBuilders[playerid] != 0)
		{
		    Blaps[b(playerid)] += change;
			if(Blaps[b(playerid)] < 1) Blaps[b(playerid)] = 1;
			format(ystring,sizeof(ystring),"Laps: %d",Blaps[b(playerid)]);
			RefreshMenuHeader(playerid,MLaps,ystring);
		}
		else
		{
			Racelaps += change;
			if(Racelaps < 1) Racelaps = 1;
			format(ystring,sizeof(ystring),"Laps: %d",Racelaps);
			RefreshMenuHeader(playerid,MLaps,ystring);
		}

	}
	else if(Current == MRacemode)
	{
		if(row == 4)
		{
		    if(RaceBuilders[playerid] != 0) ShowMenuForPlayer(MBuild,playerid);
		    else ShowMenuForPlayer(MRace,playerid);
		    return 1;
		}
		if(RaceBuilders[playerid] != 0)
		{
		    Bracemode[b(playerid)]=row;
			if(Bracemode[b(playerid)] == 2 && BCurrentCheckpoints[b(playerid)] < 3)
			{
				SendClientMessage(playerid,COLOR_YELLOW,"Cannot set racemode 2 with only 2 CPs!");
				Bracemode[b(playerid)] = 1;
			}
			format(ystring,sizeof(ystring),"Mode: %s",ReturnModeName(Bracemode[b(playerid)]));
			RefreshMenuHeader(playerid,MRacemode,ystring);
			return 1;
		}
		else
		{
		    Racemode = row;
			if(Racemode == 2 && LCurrentCheckpoint < 2)
			{
				SendClientMessage(playerid,COLOR_YELLOW,"Cannot set racemode 2 with only 2 CPs!");
				Racemode = 1;
			}
			format(ystring,sizeof(ystring),"Mode: %s",ReturnModeName(Racemode));
			RefreshMenuHeader(playerid,MRacemode,ystring);
			return 1;
		}
	}
	else if(Current == MRace)
	{
	    if(row == 0)
		{
			format(ystring,sizeof(ystring),"Laps: %d",Racelaps);
			SetMenuColumnHeader(MLaps,0,ystring);
			ShowMenuForPlayer(MLaps,playerid);
		}
	    else if(row == 1)
		{
			format(ystring,sizeof(ystring),"Mode: %s",ReturnModeName(Racemode));
			SetMenuColumnHeader(MRacemode,0,ystring);
            ShowMenuForPlayer(MRacemode,playerid);
		}
		else if(row == 2)
		{
		    format(ystring,sizeof(ystring),"Size: %0.2f",CPsize);
		    SetMenuColumnHeader(MCPsize,0,ystring);
		    ShowMenuForPlayer(MCPsize,playerid);
		}
	    else if(row == 3)
	    {
	        if(Airrace == 0)
			{
				Airrace = 1;
				format(ystring,sizeof(ystring),"Air race: ON");
			}
			else if(Airrace == 1)
			{
				Airrace = 0;
				format(ystring,sizeof(ystring),"Air race: off");
			}
			RefreshMenuHeader(playerid,MRace,ystring);
	    }
		else if(row == 4)
		{
			if(RaceActive == 0)
			{
				startrace();
		        HideMenuForPlayer(MRace,playerid);
				TogglePlayerControllable(playerid,1);
			}
			else
			{
			    SendClientMessage(playerid,COLOR_YELLOW,"Race is already active!");

			}
		}
		else if(row == 5)
		{
	        HideMenuForPlayer(MRace,playerid);
			TogglePlayerControllable(playerid,1);
		}
	}
	else if(Current == MFee)
	{
	    if(row == 6)
	    {
	        ShowMenuForPlayer(MAdmin,playerid);
	        return 1;
	    }
	    if(row == 0) JoinFee +=100;
	    if(row == 1) JoinFee +=1000;
	    if(row == 2) JoinFee +=10000;
	    if(row == 3) JoinFee -=100;
	    if(row == 4) JoinFee -=1000;
	    if(row == 5) JoinFee -=10000;
	    if(JoinFee < 0) JoinFee = 0;
		format(ystring,sizeof(ystring),"Fee: %d$",JoinFee);
	    RefreshMenuHeader(playerid,MFee,ystring);
	}
	else if(Current == MCPsize)
	{
	    if(row == 6)
	    {
			if(RaceBuilders[playerid] != 0) ShowMenuForPlayer(MBuild,playerid);
			else ShowMenuForPlayer(MRace,playerid);
	        return 1;
	    }
		new Float:change;
	    if(row == 0) change +=0.1;
	    if(row == 1) change +=1.0;
	    if(row == 2) change +=10.0;
		if(row == 3) change -=0.1;
		if(row == 4) change -=1.0;
		if(row == 5) change -=10.0;
		if(RaceBuilders[playerid] != 0)
		{
		    BCPsize[b(playerid)] += change;
			if(BCPsize[b(playerid)] < 1.0) BCPsize[b(playerid)] = 1.0;
			if(BCPsize[b(playerid)] > 32.0) BCPsize[b(playerid)] = 32.0;
			format(ystring,sizeof(ystring),"Size %0.2f",BCPsize[b(playerid)]);
			RefreshMenuHeader(playerid,MCPsize,ystring);
		}
		else
		{
		    CPsize += change;
		    if(CPsize < 1.0) CPsize = 1.0;
		    if(CPsize > 32.0) CPsize = 32.0;
		    format(ystring,sizeof(ystring),"Size %0.2f",CPsize);
		    RefreshMenuHeader(playerid,MCPsize,ystring);
		}
	}
	else if(Current == MDelay)
	{
	    if(row == 4)
	    {
	        ShowMenuForPlayer(MAdmin,playerid);
	        return 1;
	    }
		if      (row == 0) MajorityDelay+=10;
		else if (row == 1) MajorityDelay+=60;
		else if (row == 2) MajorityDelay-=10;
		else if (row == 3) MajorityDelay-=60;
		if(MajorityDelay <= 0)
		{
			MajorityDelay=0;
			format(ystring,sizeof(ystring),"Delay: disabled");
		}
		else format(ystring,sizeof(ystring),"Delay: %ds",MajorityDelay);
		RefreshMenuHeader(playerid,MDelay,ystring);
	}
	if(GetPlayerMenu(playerid) == TK)
	{
	 	switch(row)
		{
		  	case 0:
			{
				SendClientMessage(playerid, COLOR_YELLOW, "You Have Killed your TeamKiller!");
				SendClientMessage(KillerID[playerid], COLOR_YELLOW, "You have Been Killed By The person you TeamKilled!");
			 	SetPlayerHealth(KillerID[playerid],0);
			    KillerID[playerid] = INVALID_PLAYER_ID;
			}
		  	case 1:
			{
				SendClientMessage(playerid, COLOR_YELLOW, "You Have Exploded Your TeamKiller!");
			    SendClientMessage(KillerID[playerid], COLOR_YELLOW, "You have Been Exploded By The person you TeamKilled!");
				new Float:KX,Float:KY,Float:KZ;
				GetPlayerPos(KillerID[playerid], KX, KY, KZ);
				CreateExplosion(KX, KY, KZ, 1, 1);
			    KillerID[playerid] = INVALID_PLAYER_ID;
			}
			case 2:
			{
				SendClientMessage(playerid, COLOR_YELLOW, "You have Taken $2500 From your TeamKiller!");
			    SendClientMessage(KillerID[playerid], COLOR_YELLOW, "You have had $2500 Stolen By The person you TeamKilled!");
				GivePlayerMoney(KillerID[playerid], GetPlayerMoney(KillerID[playerid]) -2500);
			    GivePlayerMoney(playerid, GetPlayerMoney(playerid) +2500);
				KillerID[playerid] = INVALID_PLAYER_ID;
			}
			case 3:
			{
				SendClientMessage(playerid, COLOR_YELLOW, "You have Reseted Your TeamKillers weapons!");
			    SendClientMessage(KillerID[playerid], COLOR_YELLOW, "You have Had Your Weapons Reseted By The person you TeamKilled!");
				ResetPlayerWeapons(KillerID[playerid]);
				KillerID[playerid] = INVALID_PLAYER_ID;
			}
			case 4:
			{
				SendClientMessage(playerid, COLOR_YELLOW, "You have Forgiven your TeamKiller (You Softy :D)!");
			    SendClientMessage(KillerID[playerid], COLOR_YELLOW, "You have Been Forgiven By The person you TeamKilled!");
				KillerID[playerid] = INVALID_PLAYER_ID;
			}
		}
	}
	else if(Current == vehiclemain) {
    	switch(row){
        	case 0:ShowMenuForPlayer(playervm, playerid);
        	case 1:ShowMenuForPlayer(adminm, playerid);
        	case 2:{HideMenuForPlayer(Current, playerid);TogglePlayerControllable(playerid, true);}
		}
	}
	else if(Current == playervm) {
		switch(row){
			case 0:ShowMenuForPlayer(templock, playerid);
			case 1:ShowMenuForPlayer(healthbar, playerid);
			case 2:ShowMenuForPlayer(speedom, playerid);
			case 3:ShowMenuForPlayer(buysell, playerid);
			case 4:{callcar(playerid);HideMenuForPlayer(Current, playerid);TogglePlayerControllable(playerid, true);}
	        case 5:{HideMenuForPlayer(Current, playerid);park(playerid);TogglePlayerControllable(playerid, true);}
	        case 6:ShowMenuForPlayer(secure1, playerid);
	        case 7:ShowMenuForPlayer(vehiclemain, playerid);
		}
	}
	else if(Current == adminm) {
		switch(row){
		    case 0:{HideMenuForPlayer(Current, playerid);asellcar(playerid);TogglePlayerControllable(playerid, true);}
			case 1:ShowMenuForPlayer(buyable, playerid);
			case 2:ShowMenuForPlayer(asecure1, playerid);
			case 3:ShowMenuForPlayer(vehiclemain, playerid);
		}
	}
	else if(Current == templock) {
		switch(row){
		    case 0:{HideMenuForPlayer(Current, playerid);lock(playerid);TogglePlayerControllable(playerid, true);}
			case 1:{HideMenuForPlayer(Current, playerid);unlock(playerid);TogglePlayerControllable(playerid, true);}
	        case 2:ShowMenuForPlayer(playervm, playerid);
		}
	}
	else if(Current == speedom) {
	switch(row){
		    case 0:{ShowMenuForPlayer(Current, playerid);dashboardon(playerid);}
	        case 1:{ShowMenuForPlayer(Current, playerid);dashboardoff(playerid);}
	        case 2:ShowMenuForPlayer(playervm, playerid);
      	}
	}
	else if(Current == buysell) {
		switch(row){
	    	case 0:{ShowMenuForPlayer(Current, playerid);buycar(playerid);}
	        case 1:{ShowMenuForPlayer(Current, playerid);sellcar(playerid);}
	        case 2:ShowMenuForPlayer(playervm, playerid);
		}
	}
	else if(Current == secure1) {
		switch(row){
		    case 0:ShowMenuForPlayer(secure2, playerid);
		    case 1:{HideMenuForPlayer(Current, playerid);unsecure(playerid);TogglePlayerControllable(playerid, true);}
		    case 2:ShowMenuForPlayer(playervm, playerid);
	    }
	}
	else if(Current == secure2) {
		switch(row){
		    case 0:{HideMenuForPlayer(Current, playerid);securekill(playerid);TogglePlayerControllable(playerid, true);}
		    case 1:{HideMenuForPlayer(Current, playerid);securekick(playerid);TogglePlayerControllable(playerid, true);}
		    case 2:ShowMenuForPlayer(secure1, playerid);
		}
	}
	else if(Current == buyable) {
		switch(row){
		    case 0:{HideMenuForPlayer(Current, playerid);setbuy(playerid);TogglePlayerControllable(playerid, true);}
			case 1:{HideMenuForPlayer(Current, playerid);setunbuy(playerid);TogglePlayerControllable(playerid, true);}
		    case 2:ShowMenuForPlayer(adminm, playerid);
	    }
	}
	else if(Current == asecure1) {
		switch(row){
		    case 0:ShowMenuForPlayer(asecure2, playerid);
		    case 1:{HideMenuForPlayer(Current, playerid);aunsecure(playerid);TogglePlayerControllable(playerid, true);}
		    case 2:ShowMenuForPlayer(adminm, playerid);
	    }
	}
	else if(Current == asecure2) {
		switch(row){
		    case 0:{HideMenuForPlayer(Current, playerid);asecurekill(playerid);TogglePlayerControllable(playerid, true);}
		    case 1:{HideMenuForPlayer(Current, playerid);asecurekick(playerid);TogglePlayerControllable(playerid, true);}
		    case 2:ShowMenuForPlayer(asecure1, playerid);
	    }
	}
	else if(Current == healthbar) {
		switch(row){
		    case 0:{ShowMenuForPlayer(Current, playerid);PlayerInfo[playerid][vhpb] = 1;SendClientMessage(playerid,COLOR_GREEN,"Vehicle HP Bar is now active!");}
		    case 1:{ShowMenuForPlayer(Current, playerid);PlayerInfo[playerid][vhpb] = 0;SendClientMessage(playerid,COLOR_BRIGHTRED,"Vehicle HP Bar is now in-active!");}
		    case 2:ShowMenuForPlayer(playervm, playerid);
		}
	}
	//print("onplayerselectedmenu");
	CallLocalFunction("opsm","ii",playerid,row);
	new Menu:Cur = GetPlayerMenu(playerid);
	if (Cur == Hmen1){
		////print("Hmen1 Select");
		switch(row){
			case 0:{
				//print("House Menu Case 0");
				new str1[150],str2[150],str3[150],hstring[150];
				GetHouseInfo(HDD[playerid],"Owner",str1);
				GetHouseInfo(HDD[playerid],"Rent",str2);
				GetHouseInfo(HDD[playerid],"Cost",str3);
				format(hstring,255,"Owner: %s~n~Rent: %s~n~Cost: %s",str1,str2,str3);
				GameTextForPlayer(playerid,hstring,5000,5);
			}
			case 1:{
				new str1[256];
				//print("House Menu Case 1");
				GetHouseInfo(HDD[playerid],"Lock",str1);
				if (strcmp(str1,"no")==0){
					SetPlayerInHouse(playerid,HDD[playerid]);
				}
				else if (IsPlayerAllowedInHouse(playerid,HDD[playerid])==1){
					SetPlayerInHouse(playerid,HDD[playerid]);
				}
				else {
					GameTextForPlayer(playerid,"~r~house is LOCKED",5000,1);
				}
			}
			case 2:{
				new str2[256];
				GetHouseInfo(HDD[playerid],"Rent",str2);
				new hcost = strval(str2);
				new str1[256];
				GetHouseInfo(HDD[playerid],"Owner",str1);
				if (strcmp(str1,"none")==0){
					GameTextForPlayer(playerid,"~r~house has no OWNER",5000,1);
				}
				else {
					if (GetPlayerMoney(playerid) >= hcost){
						CallLocalFunction("OnPlayerRentHouse","ii",playerid,HDD[playerid]);
						MakeTenent1(playerid,HDD[playerid]);
					}
					else{
						GameTextForPlayer(playerid,"~r~You dont have enough MONEY",5000,1);
					}
				}
			}
			case 3:{
				new str1[256];
				new str2[256];
				new str3[100];
				format(str3,100,"house%d",HDD[playerid]);
				new hname[256];
				Loadpropertt(str3,"Cost",str2);
				new hcost = strval(str2);
				GetPlayerName(playerid,hname,255);
				Loadpropertt(str3,"Owner",str1);
				if (strcmp(str1,"none")==0){
					if (GetPlayerMoney(playerid) >= hcost){
						GivePlayerMoney(playerid,-hcost);
						Savepropertt(str3,"Owner",hname);
						GameTextForPlayer(playerid,"~g~Congrats for your new house.",5000,5);
					}
					else{
						GameTextForPlayer(playerid,"~r~You dont have enough MONEY",5000,5);
					}
				}
				else{
					GameTextForPlayer(playerid,"~r~This house is not FOR SALE",5000,5);
				}
			}
		}
	}
	else if (Cur == Hexit1){
		SetPlayerOutHouse(playerid,PIH1[playerid]);
	}
	if(Current == GiveCar) {
		new Component[20],id,carid;
	    switch(row) {
	      case 0: Component = "Nitrous x10", id = 1010;
	      case 1: Component = "Hydraulics", id = 1087;
	      case 2: Component = "Offroad Wheels", id = 1025;
	      case 3: Component = "Wire Wheels", id = 1081;
	    }
	    SendCommandMessageToAdmins(playerid,"GIVECAR");
	    new string[256]; format(string,sizeof(string),"You have selected \'%s\'.",Component); SendClientMessage(playerid,yellow,string);
        TogglePlayerControllable(playerid,true);
		carid = GetPlayerVehicleID(playerid); AddVehicleComponent(carid,id);
	}
	if(Current == Weather) {
	    new id, Part[20];
	    switch(row) {
	      case 0: Part = "Sunny", id = 15;
	      case 1: Part = "Cloudy", id = 7;
	      case 2: Part = "Thunderstorm", id = 16;
	      case 3: Part = "Foggy", id = 9;
	      case 4: Part = "Scorching Hot", id = 17;
	      case 5: Part = "Sandstorm", id = 19;
	      case 6: Part = "Polluted", id = 35;
	    }
	    if(id == ServerWeather) return SendClientMessage(playerid,red,"ERROR: The server weather is already the one you have selected.");
	    SendCommandMessageToAdmins(playerid,"WEATHER");
	    new string[256],xname[24]; GetPlayerName(playerid,xname,24); format(string,256,"Administrator \"%s\" has changed the weather to \'%s\'.",xname,Part); SendClientMessageToAll(yellow,string);
        TogglePlayerControllable(playerid,true); ServerWeather = id, SetWeather(id);
	}
	return 1;
}
//==============================Gamemode exit stuff=============================
public OnGameModeExit()
{
    DestroyMenu(vehiclemain);
    DestroyMenu(playervm);
    DestroyMenu(buysell);
    DestroyMenu(secure1);
    DestroyMenu(secure2);
    DestroyMenu(templock);
    DestroyMenu(adminm);
    DestroyMenu(asecure1);
    DestroyMenu(asecure2);
    DestroyMenu(speedom);
    DestroyMenu(buyable);
    DestroyMenu(GiveCar);
    DestroyMenu(Weather);
//-----------------------------Unload Race Scrpt--------------------------------
	print("\n+--------------------------+");
	print("| Yagu's Race script v0.4a |");
	print("+---------UNLOADED---------+\n");
	#if defined MENUSYSTEM
	DestroyMenu(MAdmin);
	DestroyMenu(MPMode);
	DestroyMenu(MPrize);
	DestroyMenu(MDyna);
	DestroyMenu(MBuild);
	DestroyMenu(MLaps);
	DestroyMenu(MRace);
	DestroyMenu(MRacemode);
	DestroyMenu(MFee);
	DestroyMenu(MCPsize);
	DestroyMenu(MDelay);
	#endif
	return 1;
}
//=================================Backup Info==================================
public BackupInfo()
{
	SaveVehicles();
	SaveBusinesses();
	for(new i=0;i<MAX_PLAYERS;i++) {
	if(PlayerInfo[i][logged] == 1) {
	SavePlayer(i);
	}
	}
}
//===============================Vehicle Stocks=================================
stock buycar(playerid)
{
	new string[256];
	new streamid = GetPlayerVehicleStreamID(playerid);
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
		return 1;
	}
  	if(passenger[playerid] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in the drivers' seat of this vehicle to buy it!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle in order to buy one!");
		return 1;
	}
	if(VehicleInfo[streamid][buybar] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is currently set as un-buyable!");
		return 1;
	}
	if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
		format(string, sizeof(string), "You already own this %s, %s", VehicleInfo[streamid][name], PlayerInfo[playerid][name]);
		SendClientMessage(playerid, COLOR_BRIGHTRED, string);
		return 1;
	}
	if(VehicleInfo[streamid][bought] == 1) {
		format(string, sizeof(string), "This %s is owned by %s, and is not for sale!", VehicleInfo[streamid][name], VehicleInfo[streamid][owner]);
		SendClientMessage(playerid, COLOR_BRIGHTRED, string);
		return 1;
	}
	if(PlayerInfo[playerid][vowner] == 1) {
  		SendClientMessage(playerid, COLOR_BRIGHTRED, "You can only own ONE vehicle at a time! You must sell your other vehicle first!");
	 	return 1;
	}
	new cash[MAX_PLAYERS];
	cash[playerid] = GetPlayerMoney(playerid);
	if(cash[playerid] >= VehicleInfo[streamid][vehiclecost]) {
		new stringa[256];
		strmid(VehicleInfo[streamid][owner], PlayerInfo[playerid][name], 0, strlen(PlayerInfo[playerid][name]), 255);
		VehicleInfo[streamid][bought] = 1;
		PlayerInfo[playerid][vowner] = 1;
		PlayerInfo[playerid][vowned] = streamid;
		GivePlayerMoney(playerid, -VehicleInfo[streamid][vehiclecost]);
		format(stringa, sizeof(stringa), "You just bought this %s for $%d.", VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost],VehicleInfo[streamid][name]);
		SendClientMessage(playerid, COLOR_GREEN, stringa);
		SaveVehicles();
		SavePlayer(playerid);
		return 1;
	}
	if(cash[playerid] < VehicleInfo[streamid][vehiclecost]) {
		new string6[256];
		format(string6, sizeof(string6), "You do not have $%d and cannot afford this %s!", VehicleInfo[streamid][vehiclecost],VehicleInfo[streamid][name]);
		SendClientMessage(playerid, COLOR_BRIGHTRED, string6);
		return 1;
	}
	return 1;
}

stock sellcar(playerid)
{
	new string[256];
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
		return 1;
	}
	if(passenger[playerid] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in the drivers' seat of your vehicle to sell it!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be inside your vehicle in order to sell it");
		return 1;
	}
  	new streamid = GetPlayerVehicleStreamID(playerid);
  	if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
		SetVehicleToRespawn(GetPlayerVehicleID(playerid));
	 	SetVehicleUsed(GetPlayerVehicleID(playerid),false);
		PlayerInfo[playerid][vowned] = 0;
		PlayerInfo[playerid][vowner] = 0;
		strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
		VehicleInfo[streamid][bought] = 0;
		VehicleInfo[streamid][secure] = 0;
		GivePlayerMoney(playerid, VehicleInfo[streamid][vehiclecost]);
		format(string, sizeof(string), "You just sold your %s for $%d, enjoy the walk!!", VehicleInfo[streamid][name], VehicleInfo[streamid][vehiclecost]);
		SendClientMessage(playerid, COLOR_BRIGHTRED, string);
		SavePlayer(playerid);
		SaveVehicles();
		return 1;
  	}
  	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "What are you trying to pull here, you don't own the vehicle!!!");
		return 1;
	}
}

stock asellcar(playerid)
{
	new string[256];
	new streamid = GetPlayerVehicleStreamID(playerid);
    if(PlayerInfo[playerid][logged] == 0) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
	    return 1;
	}
	if(passenger[playerid] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in the drivers seat to use this feature");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle in order to use this feature");
		return 1;
	}
	if (PlayerInfo[playerid][admin] > 4) {
		if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
			format(string,sizeof(string),"This %d does not have an owner yet!",VehicleInfo[streamid][name]);
 			SendClientMessage(playerid,COLOR_ORANGE,string);
			return 1;
		}
		new file[256];
		SetVehicleToRespawn(GetPlayerVehicleID(playerid));
	 	SetVehicleUsed(GetPlayerVehicleID(playerid),false);
		format(file,sizeof(file),P_FILE,udb_encode(VehicleInfo[streamid][owner]));
		if(fexist(file)) {
			tempid[playerid] = IsPlayerNameOnline(VehicleInfo[streamid][owner]);
			if(tempid[playerid] >= 0 && tempid[playerid] <= MAX_PLAYERS) {
		        strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
				PlayerInfo[tempid[playerid]][vowned] = 0;
				PlayerInfo[tempid[playerid]][vowner] = 0;
				VehicleInfo[streamid][bought] = 0;
				VehicleInfo[streamid][secure] = 0;
				VehicleInfo[streamid][asecure] = 0;
				format(string, sizeof(string), "You just sold %s's %s.", PlayerInfo[tempid[playerid]][name], VehicleInfo[streamid][name]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				format(string, sizeof(string), "Admin (%s) has just sold your %s!", PlayerInfo[playerid][name], VehicleInfo[streamid][name]);
                SendClientMessage(tempid[playerid], COLOR_ORANGE, string);
				return 1;
			}
			else {
			    ResetOfflinePlayerFileV(VehicleInfo[streamid][owner]);
				format(string, sizeof(string), "You just sold %s's %s.", VehicleInfo[streamid][owner], VehicleInfo[streamid][name]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
                VehicleInfo[streamid][bought] = 0;
                VehicleInfo[streamid][secure] = 0;
				VehicleInfo[streamid][asecure] = 0;
				strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
				return 1;
			}
		}
		if(!fexist(file)) {
			format(string, sizeof(string), "You just sold %s's %s. The player file was not found and cannot be altered.", VehicleInfo[streamid][owner], VehicleInfo[streamid][name]);
			SendClientMessage(playerid, COLOR_GREEN, string);
            VehicleInfo[streamid][bought] = 0;
			strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
			return 1;
		}
	}
	SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not a server administrator and cannot use this feature!");
	return 1;
}

stock setbuy(playerid)
{
	new string[256];
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(passenger[playerid] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in the drivers seat to use this feature");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle in order to use this feature");
		return 1;
	}
	if(VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is already set as buyable!");
		return 1;
	}
   	if (PlayerInfo[playerid][admin] > 4) {
   		if(VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] == 1) {
   			format(string,sizeof(string),"You have set this %s to buyable!", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
   			SendClientMessage(playerid,COLOR_ORANGE,string);
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] = 0;
			return 1;
		}
	}
	SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not a server administrator and cannot use this feature!");
	return 1;
}

stock setunbuy(playerid)
{
	new string[256];
	new streamid = GetPlayerVehicleStreamID(playerid);
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(passenger[playerid] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in the drivers seat to use this feature");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle in order to use this feature");
		return 1;
	}
	if(VehicleInfo[streamid][buybar] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is already set as un-buyable!");
		return 1;
	}
   	if (PlayerInfo[playerid][admin] > 4) {
   		VehicleInfo[streamid][bought] = 0;
		VehicleInfo[streamid][secure] = 0;
		VehicleInfo[streamid][buybar] = 1;
		if (strcmp(VehicleInfo[streamid][owner],DEFAULT_OWNER,false) == 0) {
			strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
			format(string,sizeof(string),"You have set this %s to non-buyable!",VehicleInfo[streamid][name]);
 			SendClientMessage(playerid,COLOR_ORANGE,string);
			return 1;
		}
		new file[256];
		format(file,sizeof(file),P_FILE,VehicleInfo[streamid][owner]);
		if(fexist(file)) {
			tempid[playerid] = IsPlayerNameOnline(VehicleInfo[streamid][owner]);
			if(tempid[playerid] >= 0 || tempid[playerid] <= MAX_PLAYERS) {
				strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
				PlayerInfo[tempid[playerid]][vowned] = 0;
				PlayerInfo[tempid[playerid]][vowner] = 0;
				format(string, sizeof(string), "You just sold %s's %s and set it to non-buyable.", PlayerInfo[tempid[playerid]][name], VehicleInfo[streamid][name]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				format(string, sizeof(string), "Admin (%s) has just sold your %s and set it to non-buyable!", PlayerInfo[playerid][name], VehicleInfo[streamid][name]);
				SendClientMessage(tempid[playerid], COLOR_ORANGE, string);
				return 1;
			}
			else {
				ResetOfflinePlayerFileV(VehicleInfo[streamid][owner]);
				format(string, sizeof(string), "You just sold %s's %s and set it to non-buyable.", VehicleInfo[streamid][owner], VehicleInfo[streamid][name]);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
				return 1;
			}
		}
		if(!fexist(file)) {
			format(string, sizeof(string), "You just sold %s's %s and set it to non-buyable. The player file was not found and cannot be altered.", VehicleInfo[streamid][owner], VehicleInfo[streamid][name]);
			SendClientMessage(playerid, COLOR_ORANGE, string);
			strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
			return 1;
		}
	}
	SendClientMessage(playerid, COLOR_BRIGHTRED, "You are not a server administrator and cannot use this feature!");
	return 1;
}

stock lock(playerid)
{
	if(IsPlayerInAnyVehicle(playerid))
	{
		new State=GetPlayerState(playerid);
		if(State!=PLAYER_STATE_DRIVER)
		{
			SendClientMessage(playerid,COLOR_YELLOW,"You need to be in the drivers seat.");
			return 1;
		}
		new i;
		for(i=0;i<MAX_PLAYERS;i++)
		{
			if(i != playerid)
			{
				SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
			}
		}
		format(lockmess,sizeof(lockmess),"Your %s is now locked.",VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
		SendClientMessage(playerid,COLOR_GREEN, lockmess);
		new Float:pX, Float:pY, Float:pZ;
		GetPlayerPos(playerid,pX,pY,pZ);
		PlayerPlaySound(playerid,1056,pX,pY,pZ);
	}
	else
	{
		SendClientMessage(playerid, COLOR_YELLOW, "You are not in a vehicle.");
	}
	return 1;
}


stock unlock(playerid)
{
	if(IsPlayerInAnyVehicle(playerid))
	{
		new State=GetPlayerState(playerid);
		if(State!=PLAYER_STATE_DRIVER)
		{
			SendClientMessage(playerid,COLOR_YELLOW, "You need to be in the drivers seat.");
			return 1;
		}
		new i;
		for(i=0;i<MAX_PLAYERS;i++)
		{
			SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 0);
		}
		format(lockmess,sizeof(lockmess),"Your %s is now unlocked.",VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
		SendClientMessage(playerid,COLOR_GREEN, lockmess);
		new Float:pX, Float:pY, Float:pZ;
		GetPlayerPos(playerid,pX,pY,pZ);
		PlayerPlaySound(playerid,1057,pX,pY,pZ);
	}
	else
	{
		SendClientMessage(playerid, COLOR_YELLOW, "You are not in a vehicle.");
	}
	return 1;
}

stock securekick(playerid)
{
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
		return 1;
	}
  	if(VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is un-buyable and these features will not work!");
		return 1;
	}
	if(PlayerInfo[playerid][vowner] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must first own a vehicle before you can use this feature!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
		if (strcmp(VehicleInfo[GetPlayerVehicleStreamID(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][secure] = 1;
			format(securemess,sizeof(securemess),"You have set your %s as secure, no other player will be able to use it even when you are offline.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not own this vehicle and cannot secure it!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock asecurekick(playerid)
{

	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if (PlayerInfo[playerid][admin] > 4) {
		if(IsPlayerInAnyVehicle(playerid)) {
		VehicleInfo[GetPlayerVehicleStreamID(playerid)][asecure] = 1;
		format(securemess,sizeof(securemess),"You have set this %s as admin only.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
		SendClientMessage(playerid, COLOR_GREEN, securemess);
		return 1;
	}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not have permission to use this feature!");
		return 1;
	}
}

stock asecurekill(playerid)
{
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
		if (PlayerInfo[playerid][admin] > 4) {
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][asecure] = 2;
			format(securemess,sizeof(securemess),"You have set this %s as admin only with lethal protection.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not have permission to use this feature!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock aunsecure(playerid)
{
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
		if (PlayerInfo[playerid][admin] > 4) {
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][asecure] = 0;
			format(securemess,sizeof(securemess),"You have set this %s as accessable to everyone.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not have permission to use this feature!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock unsecure(playerid)
{
	if(PlayerInfo[playerid][logged] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
		return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
		return 1;
	}
  	if(VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is un-buyable and these features will not work!");
		return 1;
		}
	if(PlayerInfo[playerid][vowner] == 0) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must first own a vehicle before you can use this feature!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
		if (strcmp(VehicleInfo[GetPlayerVehicleStreamID(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][secure] = 0;
			format(securemess,sizeof(securemess),"You have set your %s as accessable to everyone.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not own this vehicle and cannot secure it!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock securekill(playerid)
{
    if(PlayerInfo[playerid][logged] == 0) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
	    return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
	    return 1;
	}
  	if(VehicleInfo[GetPlayerVehicleStreamID(playerid)][buybar] == 1) {
   		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is un-buyable and these features will not work!");
		return 1;
   	}
	if(PlayerInfo[playerid][vowner] == 0) {
     	SendClientMessage(playerid, COLOR_BRIGHTRED, "You must first own a vehicle before you can use this feature!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
   	    if (strcmp(VehicleInfo[GetPlayerVehicleStreamID(playerid)][owner],PlayerInfo[playerid][name],false) == 0) {
			VehicleInfo[GetPlayerVehicleStreamID(playerid)][secure] = 2;
			format(securemess,sizeof(securemess),"You have set your %s as secure with lethal protection, no other player will be able to use it even when you are offline.", VehicleInfo[GetPlayerVehicleStreamID(playerid)][name]);
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not own this vehicle and cannot secure it!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock callcar(playerid)
{
    if(PlayerInfo[playerid][logged] == 0) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
	    return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
	    return 1;
	}
	if(PlayerInterior[playerid] > 0) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must outside to call a vehicle to you!");
		return 1;
	}
	if(PlayerInfo[playerid][vowner] == 0) {
        SendClientMessage(playerid, COLOR_BRIGHTRED, "You must first own a vehicle before you can use this feature!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid) == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You can't call a vehicle to you if you are in one!");
		return 1;
	}
	if(VehicleInfo[PlayerInfo[playerid][vowned]][modding] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "Vehicle currently Busy, try again in a few seconds!");
		return 1;
	}
	if(VehicleInfo[PlayerInfo[playerid][vowned]][limbo] == 1) {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "Your vehicle cannot be called to you at the moment, please wait and try again later.");
		return 1;
	}
	for(new i=0; i < MAX_PLAYERS; i++) {
		if (IsPlayerConnected(i) == 1) {
			if (IsPlayerInAnyVehicle(i) == 1) {
				if (GetPlayerVehicleStreamID(i) == PlayerInfo[playerid][vowned]) {
				    if(GetPlayerInterior(i) == 1) {
				        SendClientMessage(playerid, COLOR_BRIGHTRED, "Vehicle currently Busy, try again in a few seconds!");
						return 1;
				    }
					SendClientMessage(i, COLOR_BRIGHTRED, "This vehicle has been recalled by its owner, enjoy the walk!");
				}
			}
		}
	}
	if(VehicleInfo[PlayerInfo[playerid][vowned]][spawned] == 1) {
		SetVehicleToRespawn(VehicleInfo[PlayerInfo[playerid][vowned]][idnum]);
		SetVehicleVirtualWorld(VehicleInfo[PlayerInfo[playerid][vowned]][idnum],10);
		SetVehicleUsed(VehicleInfo[PlayerInfo[playerid][vowned]][idnum],true);
	}
	SendClientMessage(playerid, COLOR_ORANGE, "Your vehicle is on its way, It will take 8 seconds to arrive at your location...");
	SetTimerEx("CallVehicleToPlayer",8000,0,"i",playerid);
	return 1;
}

stock park(playerid)
{
	new streamid = GetPlayerVehicleStreamID(playerid);
    if(PlayerInfo[playerid][logged] == 0) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be logged in to use this feature");
	    return 1;
	}
	if(PlayerInfo[playerid][jailed] == 1) {
	    SendClientMessage(playerid, COLOR_BRIGHTRED, "You are in jail and cannot use this feature");
	    return 1;
	}
  	if(VehicleInfo[streamid][buybar] == 1) {
   		SendClientMessage(playerid, COLOR_BRIGHTRED, "This vehicle is un-buyable and these features will not work!");
		return 1;
   	}
	if(PlayerInfo[playerid][vowner] == 0) {
    	SendClientMessage(playerid, COLOR_BRIGHTRED, "You must first own a vehicle before you can use this feature!");
		return 1;
	}
	if(IsPlayerInAnyVehicle(playerid)) {
   	    if (strcmp(VehicleInfo[streamid][owner],PlayerInfo[playerid][name],false) == 0) {
			new Float:spx,Float:spy,Float:spz;
       		new Float:spa;
			GetVehiclePos(GetPlayerVehicleID(playerid),spx,spy,spz);
        	GetVehicleZAngle(GetPlayerVehicleID(playerid),spa);
         	VehicleInfo[streamid][x_spawn] = spx;
			VehicleInfo[streamid][y_spawn] = spy;
			VehicleInfo[streamid][z_spawn] = spz;
			VehicleInfo[streamid][za_spawn] = spa;
			format(securemess,sizeof(securemess),"You have just parked your %s at your current location...it will respawn here in future!", VehicleInfo[streamid][name]);
			SaveVehicles();
			SendClientMessage(playerid, COLOR_GREEN, securemess);
			return 1;
		}
		else {
			SendClientMessage(playerid, COLOR_BRIGHTRED, "You do not own this vehicle and cannot park it!");
			return 1;
		}
	}
	else {
		SendClientMessage(playerid, COLOR_BRIGHTRED, "You must be in a vehicle to use this feature");
		return 1;
	}
}

stock dashboardon(playerid)
{
	speedo[playerid] = 1;
	if(IsPlayerInAnyVehicle(playerid)) {
		for(new d=0; d<3; d++) {
			if(GetVehicleModel(GetPlayerVehicleID(playerid)) == pbike[d][0]) {
				speedo[playerid] = 2;
			}
		}
	}
	TextDrawShowForPlayer(playerid, stxt[playerid]);
	SendClientMessage(playerid,COLOR_GREEN,"Your dashboard display is now switched ON!");
	return 1;
}

stock dashboardoff(playerid)
{
	speedo[playerid] = 0;
	SendClientMessage(playerid,COLOR_BRIGHTRED,"Your dashboard display is now switched OFF!");
	if(IsPlayerInAnyVehicle(playerid)) {
	    TextDrawHideForPlayer(playerid, stxt[playerid]);
	}
	return 1;
}
//=============================Stream Stuff=====================================
stock CountVehicles(filename[]) {
    new File:VehicleFile;
    new blank[256];
    new count = 0;
    if (fexist(V_FILE_SAVE)) {
        VehicleFile = fopen(V_FILE_SAVE);
        while(fread(VehicleFile, blank, sizeof blank)) {
            count++;
        }
        fclose(VehicleFile);
    }
    else {
        VehicleFile = fopen(filename);
        while(fread(VehicleFile, blank, sizeof blank)) {
            count++;
        }
        fclose(VehicleFile);
    }

    return count;
}

stock CountBusinesses(filename[]) {
    new File:BusinessFile;
    new blank[256];
    new count = 0;
    if (fexist(B_FILE_SAVE)) {
        BusinessFile = fopen(B_FILE_SAVE);
        while(fread(BusinessFile, blank, sizeof blank)) {
            count++;
        }
        fclose(BusinessFile);
    }
    else {
        BusinessFile = fopen(filename);
        while(fread(BusinessFile, blank, sizeof blank)) {
            count++;
        }
        fclose(BusinessFile);
    }

    return count;
}

stock split(const strsrc[], strdest[][], delimiter)
{
	new i, li;
	new aNum;
	new len;

	while(i <= strlen(strsrc)){
	    if(strsrc[i]==delimiter || i==strlen(strsrc)){
	        len = strmid(strdest[aNum], strsrc, li, i, 128);
	        strdest[aNum][len] = 0;
	        li = i+1;
	        aNum++;
		}
		i++;
	}
	return 1;
}

stock SetupVehiclesFile()
{
    new File: file;
    file = fopen(V_FILE_SAVE, io_write);
    new SplitDiv[99][55];
	new filestring[256];
	file = fopen(V_FILE_LOAD, io_read);
	new carcost[MAX_STREAM_VEHICLES];
	for(new streamid=1;streamid<=vehcount;streamid++)
	{
		if (file)
		{
			fread(file, filestring);
		 	split(filestring, SplitDiv, ',');
			VehicleInfo[streamid][model] = strval(SplitDiv[0]);
			VehicleInfo[streamid][x_spawn] = floatstr(SplitDiv[1]);
			VehicleInfo[streamid][y_spawn] = floatstr(SplitDiv[2]);
			VehicleInfo[streamid][z_spawn] = floatstr(SplitDiv[3]);
			VehicleInfo[streamid][za_spawn] = floatstr(SplitDiv[4]);
			VehicleInfo[streamid][color_1] = strval(SplitDiv[5]);
			VehicleInfo[streamid][color_2] = strval(SplitDiv[6]);
            CreateStreamVehicle(VehicleInfo[streamid][model], VehicleInfo[streamid][x_spawn], VehicleInfo[streamid][y_spawn], VehicleInfo[streamid][z_spawn], VehicleInfo[streamid][za_spawn], VehicleInfo[streamid][color_1], VehicleInfo[streamid][color_2],DEFAULT_SPAWN_DIST);
			carcost[streamid] = 50000;
    		for(new s=0; s<24; s++) {
     			if(VehicleInfo[streamid][model] == heavycar[s][0]) {
       				carcost[streamid] = 100000;
   	        	}
			}
			for(new a=0; a<11; a++) {
     			if(VehicleInfo[streamid][model] == boat[a][0]) {
       				carcost[streamid] = 50000;
   	   		     }
			}
			for(new c=0; c<11; c++) {
	     		if(VehicleInfo[streamid][model] == mbike[c][0]) {
   	    			carcost[streamid] = 40000;
	   	        }
			}
			for(new d=0; d<3; d++) {
   		  		if(VehicleInfo[streamid][model] == pbike[d][0]) {
       				carcost[streamid] = 3000;
   	   		     }
			}
			for(new e=0; e<6; e++) {
    	 		if(VehicleInfo[streamid][model] == splane[e][0]) {
       				carcost[streamid] = 500000;
   	        	}
			}
			for(new f=0; f<2; f++) {
     			if(VehicleInfo[streamid][model] == mplane[f][0]) {
       					carcost[streamid] = 1500000;
   	    	    }
			}
			for(new v=0; v<2; v++) {
     			if(VehicleInfo[streamid][model] == lplane[v][0]) {
       				carcost[streamid] = 2000000;
   	    	    }
			}
			for(new n=0; n<4; n++) {
     			if(VehicleInfo[streamid][model] == milair[n][0]) {
       				carcost[streamid] = 4000000;
   	        	}
			}
			for(new j=0; j<4; j++) {
     			if(VehicleInfo[streamid][model] == sheli[j][0]) {
       				carcost[streamid] = 750000;
   	        	}
			}
			for(new k=0; k<3; k++) {
     			if(VehicleInfo[streamid][model] == lheli[k][0]) {
       				carcost[streamid] = 1250000;
   	        	}
			}
			VehicleInfo[streamid][vehiclecost] = carcost[streamid];
			VehicleInfo[streamid][vused] = 0;
			VehicleInfo[streamid][bought] = 0;
			VehicleInfo[streamid][secure] = 0;
			VehicleInfo[streamid][asecure] = 0;
			VehicleInfo[streamid][buybar] = 0;
			VehicleInfo[streamid][mod1] = 0;
			VehicleInfo[streamid][mod2] = 0;
			VehicleInfo[streamid][mod3] = 0;
			VehicleInfo[streamid][mod4] = 0;
			VehicleInfo[streamid][mod5] = 0;
			VehicleInfo[streamid][mod6] = 0;
			VehicleInfo[streamid][mod7] = 0;
			VehicleInfo[streamid][mod8] = 0;
			VehicleInfo[streamid][mod9] = 0;
			VehicleInfo[streamid][mod10] = 0;
			VehicleInfo[streamid][mod11] = 0;
			VehicleInfo[streamid][mod12] = 0;
			VehicleInfo[streamid][mod13] = 0;
			VehicleInfo[streamid][mod14] = 0;
			VehicleInfo[streamid][mod15] = 0;
			VehicleInfo[streamid][mod16] = 0;
			VehicleInfo[streamid][mod17] = 0;
			VehicleInfo[streamid][paintjob] = -1;
			strmid(VehicleInfo[streamid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
            strmid(VehicleInfo[streamid][name], VehicleName[VehicleInfo[streamid][model]-400][0], 0, strlen(VehicleName[VehicleInfo[streamid][model]-400][0]), 255);
			new addmess[256];
			format(addmess,sizeof(addmess),"--:: Streaming vehicle %d (%s) successfully setup ::--",streamid,VehicleInfo[streamid][name]);
			print(addmess);
		}
	}
	fclose(file);
	print(">------------------------------------------------");
	print(" ");
	print(">------------------------------------------------");
	print("Initialising Vehicle File System - Please Wait For Confirmation...");
	print(" ");
	SaveVehicles();
	print(" ");
	print("Vehicle File System 100% Initialised...");
	print(">------------------------------------------------");
	printf(" ");
}

stock LoadVehicles()
{
	if(fexist(V_FILE_SAVE)) {
        new SplitDiv[99][55];
		new filestring[256];
		new File: file = fopen(V_FILE_SAVE, io_read);
		if (file) {
	    	for(new streamid = 1;streamid<=vehcount;streamid++)
			{
		    	fread(file, filestring);
				split(filestring, SplitDiv, ',');
				VehicleInfo[streamid][model] = strval(SplitDiv[0]);
				VehicleInfo[streamid][x_spawn] = floatstr(SplitDiv[1]);
				VehicleInfo[streamid][y_spawn] = floatstr(SplitDiv[2]);
				VehicleInfo[streamid][z_spawn] = floatstr(SplitDiv[3]);
				VehicleInfo[streamid][za_spawn] = floatstr(SplitDiv[4]);
				VehicleInfo[streamid][color_1] = strval(SplitDiv[5]);
				VehicleInfo[streamid][color_2] = strval(SplitDiv[6]);
				VehicleInfo[streamid][vehiclecost] = strval(SplitDiv[7]);
				VehicleInfo[streamid][bought] = strval(SplitDiv[8]);
				VehicleInfo[streamid][secure] = strval(SplitDiv[9]);
				VehicleInfo[streamid][asecure] = strval(SplitDiv[10]);
				VehicleInfo[streamid][vused] = 0;
				VehicleInfo[streamid][buybar] = strval(SplitDiv[12]);
				VehicleInfo[streamid][mod1] = strval(SplitDiv[13]);
				VehicleInfo[streamid][mod2] = strval(SplitDiv[14]);
				VehicleInfo[streamid][mod3] = strval(SplitDiv[15]);
				VehicleInfo[streamid][mod4] = strval(SplitDiv[16]);
				VehicleInfo[streamid][mod5] = strval(SplitDiv[17]);
				VehicleInfo[streamid][mod6] = strval(SplitDiv[18]);
				VehicleInfo[streamid][mod7] = strval(SplitDiv[19]);
				VehicleInfo[streamid][mod8] = strval(SplitDiv[20]);
				VehicleInfo[streamid][mod9] = strval(SplitDiv[21]);
				VehicleInfo[streamid][mod10] = strval(SplitDiv[22]);
				VehicleInfo[streamid][mod11] = strval(SplitDiv[23]);
				VehicleInfo[streamid][mod12] = strval(SplitDiv[24]);
				VehicleInfo[streamid][mod13] = strval(SplitDiv[25]);
				VehicleInfo[streamid][mod14] = strval(SplitDiv[26]);
				VehicleInfo[streamid][mod15] = strval(SplitDiv[27]);
				VehicleInfo[streamid][mod16] = strval(SplitDiv[28]);
				VehicleInfo[streamid][mod17] = strval(SplitDiv[29]);
				VehicleInfo[streamid][paintjob] = strval(SplitDiv[32]);
				strmid(VehicleInfo[streamid][owner], SplitDiv[30], 0, strlen(SplitDiv[30]), 255);
				strmid(VehicleInfo[streamid][name], SplitDiv[31], 0, strlen(SplitDiv[31]), 255);
			 	CreateStreamVehicle(VehicleInfo[streamid][model], VehicleInfo[streamid][x_spawn], VehicleInfo[streamid][y_spawn], VehicleInfo[streamid][z_spawn], VehicleInfo[streamid][za_spawn], VehicleInfo[streamid][color_1], VehicleInfo[streamid][color_2],DEFAULT_SPAWN_DIST);
				new addmess[256];
				format(addmess,sizeof(addmess),"--:: Streaming vehicle %d (%s) successfully setup - owner: %s ::--",streamid,VehicleInfo[streamid][name],VehicleInfo[streamid][owner]);
				print(addmess);
			}
		}
		fclose(file);
	}
	else {
		SetupVehiclesFile();
	}
}

stock LoadBusinesses()
{
	if(fexist(B_FILE_SAVE)) {
        new SplitDiv[99][B_LIMIT];
		new filestring[256];
		new File: file = fopen(B_FILE_SAVE, io_read);
		if (file) {
	    	for(new bizid = 0;bizid<bizcount;bizid++)
			{
		    	fread(file, filestring);
				split(filestring, SplitDiv, ',');
				BizInfo[bizid][xpos] = floatstr(SplitDiv[0]);
				BizInfo[bizid][ypos] = floatstr(SplitDiv[1]);
				BizInfo[bizid][zpos] = floatstr(SplitDiv[2]);
				strmid(BizInfo[bizid][owner], SplitDiv[3], 0, strlen(SplitDiv[3]), 255);
				strmid(BizInfo[bizid][name], SplitDiv[4], 0, strlen(SplitDiv[4]), 255);
				BizInfo[bizid][bought] = strval(SplitDiv[5]);
				BizInfo[bizid][cost] = strval(SplitDiv[6]);
				BizInfo[bizid][profit] = strval(SplitDiv[7]);
				BizInfo[bizid][cashbox] = strval(SplitDiv[8]);
			 	AddStaticPickup(B_ICON,B_ICON_TYPE, BizInfo[bizid][xpos], BizInfo[bizid][ypos], BizInfo[bizid][zpos]);
				new addmess[256];
				format(addmess,sizeof(addmess),"--:: Business %d (%s) successfully spawned - owner: %s ::--",bizid,BizInfo[bizid][name],BizInfo[bizid][owner]);
				print(addmess);
			}
		}
		fclose(file);
	}
	else {
		SetupBizFile();
	}
}

stock SaveBusinesses()
{
	new filestring[256];
	new File: bfile = fopen(B_FILE_SAVE, io_write);
	for(new bizid = 0;bizid<bizcount;bizid++)
   	{
		format(filestring, sizeof(filestring), "%f,%f,%f,%s,%s,%d,%d,%d,%d\n",
		BizInfo[bizid][xpos],
		BizInfo[bizid][ypos],
		BizInfo[bizid][zpos],
		BizInfo[bizid][owner],
		BizInfo[bizid][name],
		BizInfo[bizid][bought],
		BizInfo[bizid][cost],
		BizInfo[bizid][profit],
		BizInfo[bizid][cashbox]
		);
		fwrite(bfile, filestring);
	}
	fclose(bfile);
}

stock SetupBizFile()
{
    new File: file;
    new SplitDiv[99][B_LIMIT];
	new filestring[256];
	file = fopen(B_FILE_LOAD, io_read);
	for(new bizid=0;bizid<bizcount;bizid++)
	{
		if (file)
		{
			fread(file, filestring);
		 	split(filestring, SplitDiv, ',');
			BizInfo[bizid][xpos] = floatstr(SplitDiv[0]);
			BizInfo[bizid][ypos] = floatstr(SplitDiv[1]);
			BizInfo[bizid][zpos] = floatstr(SplitDiv[2]);
			strmid(BizInfo[bizid][owner], DEFAULT_OWNER, 0, strlen(DEFAULT_OWNER), 255);
			strmid(BizInfo[bizid][name], SplitDiv[3], 0, strlen(SplitDiv[3]), 255);
			BizInfo[bizid][bought] = 0;
			BizInfo[bizid][cost] = strval(SplitDiv[4]);
			BizInfo[bizid][profit] = strval(SplitDiv[5]);
			BizInfo[bizid][cashbox] = 0;
            AddStaticPickup(B_ICON,B_ICON_TYPE, BizInfo[bizid][xpos], BizInfo[bizid][ypos], BizInfo[bizid][zpos]);
			new addmess[256];
			format(addmess,sizeof(addmess),"--:: Business %d (%s) successfully spawned ::--",bizid,BizInfo[bizid][name]);
			print(addmess);
		}
	}
	fclose(file);
	print(">------------------------------------------------");
	print(" ");
	print(">------------------------------------------------");
	print("Initialising Business File System - Please Wait For Confirmation...");
	print(" ");
	SaveBusinesses();
	print(" ");
	print("Business File System 100% Initialised...");
	print(">------------------------------------------------");
	printf(" ");
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	streamidn[playerid] = GetPickupStreamID(pickupid);
 	if(PickupInfo[streamidn[playerid]][type] == PICKUP_TYPE_BIZ) {
		new bizowner[25];
		format(bizowner,256,"%s",BizInfo[streamidn[playerid]][owner]);
		if(strcmp(BizInfo[streamidn[playerid]][owner],DEFAULT_OWNER,false) == 0) {
	    	format(bizowner,256,"Not Owned");
		}
		new bizmes[256];
		format(bizmes,256,"~n~~n~~r~Business: ~g~%s~n~~r~Price: ~g~$%d ~r~~n~~r~Profit: ~g~$%d/hr ~n~~r~Owner: ~g~%s",BizInfo[streamidn[playerid]][name],BizInfo[streamidn[playerid]][cost],BizInfo[streamidn[playerid]][profit]*2,bizowner);
    	GameTextForPlayer(playerid,bizmes,5000,3);
		bizmsg[playerid] = 1;
		SetTimerEx("ResetText",5000,0,"i",playerid);
		return 1;
	}
 	if(PickupInfo[streamidn[playerid]][type] == PICKUP_TYPE_BANK) {
    	GameTextForPlayer(playerid,"~b~Type ~y~/bankhelp ~b~to see how to use the bank.",5000,3);
		bizmsg[playerid] = 1;
		SetTimerEx("ResetText",5000,0,"i",playerid);
		return 1;
	}
	if(HP1[pickupid] != 0)
	{
		OnPlayerEnterHousee(playerid,HP1[pickupid]);
	}
	return 1;
}

public ResetText(playerid)
{
	bizmsg[playerid] = 0;
}

stock CloseToBank(playerid)
{
    new Float:maxdis = 20.0;
	new Float:ppos[3];
    GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
	for(new i = 0;i<3;i++) {
    	if (ppos[0] >= floatsub(Pickup[i][0], maxdis) && ppos[0] <= floatadd(Pickup[i][0], maxdis)
    	&& ppos[1] >= floatsub(Pickup[i][1], maxdis) && ppos[1] <= floatadd(Pickup[i][1], maxdis)
    	&& ppos[2] >= floatsub(Pickup[i][2], maxdis) && ppos[2] <= floatadd(Pickup[i][2], maxdis))
    	{
        	return i;
    	}
	}
	return 999;
}

stock ClosestBiz(playerid)
{
    new Float:ppos[3];
    new Float:maxdis = 7.0;
    GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
    for(new i = 0;i<bizcount;i++) {
    	if (ppos[0] >= floatsub(BizInfo[i][xpos], maxdis) && ppos[0] <= floatadd(BizInfo[i][xpos], maxdis)
    	&& ppos[1] >= floatsub(BizInfo[i][ypos], maxdis) && ppos[1] <= floatadd(BizInfo[i][ypos], maxdis)
    	&& ppos[2] >= floatsub(BizInfo[i][zpos], maxdis) && ppos[2] <= floatadd(BizInfo[i][zpos], maxdis))
    	{
        	return i;
    	}
	}
	return 99;
}

stock IsModelActive(vmodel)
{
    for(new i = 1;i<=vehcount;i++) {
        if(VehicleInfo[i][spawned] == 1) {
            if(VehicleInfo[i][model] == vmodel) {
                return 1;
            }
        }
    }
    return 0;
}

stock CountModels(maxstream)
{
	new modelcount = 0;
	new modelcounted[MAX_MODEL_NUMBER];
    for(new i = 1;i<=maxstream;i++) {
        if(VehicleInfo[i][spawned] == 1) {
            if(modelcounted[VehicleInfo[i][model]] == 0) {
                modelcount++;
                modelcounted[VehicleInfo[i][model]] = 1;
            }
        }
    }
    return modelcount;
}

stock SaveVehicles()
{
	new filestring[256];
	new File: vfile = fopen(V_FILE_SAVE, io_write);
	for(new vehicleid = 1;vehicleid<=vehcount;vehicleid++)
   	{
		format(filestring, sizeof(filestring), "%d,%f,%f,%f,%f,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%s,%s,%d\n",
		VehicleInfo[vehicleid][model],
		VehicleInfo[vehicleid][x_spawn],
		VehicleInfo[vehicleid][y_spawn],
		VehicleInfo[vehicleid][z_spawn],
		VehicleInfo[vehicleid][za_spawn],
		VehicleInfo[vehicleid][color_1],
		VehicleInfo[vehicleid][color_2],
		VehicleInfo[vehicleid][vehiclecost],
		VehicleInfo[vehicleid][bought],
		VehicleInfo[vehicleid][secure],
		VehicleInfo[vehicleid][asecure],
		VehicleInfo[vehicleid][vused],
		VehicleInfo[vehicleid][buybar],
		VehicleInfo[vehicleid][mod1],
		VehicleInfo[vehicleid][mod2],
		VehicleInfo[vehicleid][mod3],
		VehicleInfo[vehicleid][mod4],
		VehicleInfo[vehicleid][mod5],
		VehicleInfo[vehicleid][mod6],
		VehicleInfo[vehicleid][mod7],
		VehicleInfo[vehicleid][mod8],
		VehicleInfo[vehicleid][mod9],
		VehicleInfo[vehicleid][mod10],
		VehicleInfo[vehicleid][mod11],
		VehicleInfo[vehicleid][mod12],
		VehicleInfo[vehicleid][mod13],
		VehicleInfo[vehicleid][mod14],
		VehicleInfo[vehicleid][mod15],
		VehicleInfo[vehicleid][mod16],
		VehicleInfo[vehicleid][mod17],
		VehicleInfo[vehicleid][owner],
		VehicleInfo[vehicleid][name],
		VehicleInfo[vehicleid][paintjob]
		);
		fwrite(vfile, filestring);
	}
	fclose(vfile);
}

public ModVehicle(streamid)
{
    new tuned2 = 0;
	if(VehicleInfo[streamid][mod1] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod1]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod2] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod2]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod3] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod3]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod4] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod4]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod5] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod5]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod6] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod6]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod7] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod7]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod8] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod8]);}
		tuned2 = 1;
 	}
	if(VehicleInfo[streamid][mod9] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod9]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod10] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod10]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod11] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod11]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod12] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod12]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod13] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod13]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod14] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod14]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod15] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod15]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod16] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod16]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][mod17] != 0) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {AddVehicleComponent(VehicleInfo[streamid][idnum],VehicleInfo[streamid][mod17]);}
		tuned2 = 1;
	}
	if(VehicleInfo[streamid][color_1] > -1 || VehicleInfo[streamid][color_2] > -1) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {ChangeVehicleColor(VehicleInfo[streamid][idnum],VehicleInfo[streamid][color_1],VehicleInfo[streamid][color_2]);}
		tuned2 = 1;
 	}
	if(VehicleInfo[streamid][paintjob] > -1) {
		if(VehicleInfo[streamid][spawned] == 1 && VehicleInfo[streamid][reset] == 0) {ChangeVehiclePaintjob(VehicleInfo[streamid][idnum],VehicleInfo[streamid][paintjob]);}
		tuned2 = 1;
 	}
	if(tuned2 == 1) {
	    tuned++;
	}
}

stock IsPlayerNameOnline(compname[])
{
	new playername[MAX_PLAYER_NAME];
    for(new i=0;i<=MAX_PLAYERS;i++) {
        if(IsPlayerConnected(i)) {
            GetPlayerName(i, playername, sizeof(playername));
            if(strcmp(playername,compname,false) == 0) {
                return i;
			}
		}
	}
	return 1000;
}

stock PlayersInRangeV(streamid,Float:MAX)
{
	for(new i = 0;i<MAX_PLAYERS;i++) {
   	    if(IsPlayerConnected(i)) {
   	        new Float:PPos[3];
  			GetPlayerPos(i, PPos[0], PPos[1], PPos[2]);
			if (PPos[0] >= floatsub(VehicleInfo[streamid][x_spawn], MAX) && PPos[0] <= floatadd(VehicleInfo[streamid][x_spawn], MAX)
			&& PPos[1] >= floatsub(VehicleInfo[streamid][y_spawn], MAX) && PPos[1] <= floatadd(VehicleInfo[streamid][y_spawn], MAX)
			&& PPos[2] >= floatsub(VehicleInfo[streamid][z_spawn], MAX) && PPos[2] <= floatadd(VehicleInfo[streamid][z_spawn], MAX))
			{
				return 1;
			}
		}
	}
	return 0;
}

stock PlayersInRangePU(streamid,Float:MAX)
{
	for(new i = 0;i<MAX_PLAYERS;i++) {
   	    if(IsPlayerConnected(i)) {
   	        new Float:PPos[3];
  			GetPlayerPos(i, PPos[0], PPos[1], PPos[2]);
			if (PPos[0] >= floatsub(PickupInfo[streamid][x_spawn], MAX) && PPos[0] <= floatadd(PickupInfo[streamid][x_spawn], MAX)
			&& PPos[1] >= floatsub(PickupInfo[streamid][y_spawn], MAX) && PPos[1] <= floatadd(PickupInfo[streamid][y_spawn], MAX)
			&& PPos[2] >= floatsub(PickupInfo[streamid][z_spawn], MAX) && PPos[2] <= floatadd(PickupInfo[streamid][z_spawn], MAX))
			{
				return 1;
			}
		}
	}
	return 0;
}

stock CreateStreamVehicle(modelid,Float:x,Float:y,Float:z,Float:a,col1,col2,Float:spawn_distance)
{
	for(new i = 1;i<MAX_STREAM_VEHICLES;i++) {
	    if(VehicleInfo[i][valid] == 0) {
			VehicleInfo[i][model] = modelid;
			VehicleInfo[i][x_spawn] = x;
			VehicleInfo[i][y_spawn] = y;
			VehicleInfo[i][z_spawn] = z;
			VehicleInfo[i][za_spawn] = a;
			VehicleInfo[i][color_1] = col1;
			VehicleInfo[i][color_2] = col2;
			VehicleInfo[i][spawndist] = spawn_distance;
			VehicleInfo[i][valid] = 1;
			VehicleInfo[i][idnum] = 0;
			VehicleInfo[i][paintjob] = -1;
			return i;
		}
	}
	return 0;
}

stock CreateStreamPickup(modelid,Float:x,Float:y,Float:z,ptype)
{
	for(new i = 0;i<B_LIMIT;i++) {
	    if(PickupInfo[i][valid] == 0) {
			PickupInfo[i][model] = modelid;
			PickupInfo[i][x_spawn] = x;
			PickupInfo[i][y_spawn] = y;
   			PickupInfo[i][z_spawn] = z;
			PickupInfo[i][type] = ptype;
			PickupInfo[i][idnum] = -1;
			PickupInfo[i][valid] = 1;
			return i;
		}
	}
	return 0;
}

stock GetPickupStreamID(pickupid)
{
	for(new i = 0;i<B_LIMIT;i++) {
		if(pickupid == PickupInfo[i][idnum]) {
   			return i;
		}
	}
	return -1;
}

stock GetPlayerVehicleStreamID(playerid)
{
	return avstream[GetPlayerVehicleID(playerid)];
}

stock GetVehicleStreamID(vehicleid)
{
	return avstream[vehicleid];
}

stock SetVehicleUsed(vehicleid,bool:toggle)
{
	vehused[vehicleid] = toggle;
	return 1;
}

stock IsPlayerClose(playerid,Float:x,Float:y,Float:z,Float:MAX)
{
	new Float:PPos[3];
	GetPlayerPos(playerid, PPos[0], PPos[1], PPos[2]);
	if (PPos[0] >= floatsub(x, MAX) && PPos[0] <= floatadd(x, MAX)
	&& PPos[1] >= floatsub(y, MAX) && PPos[1] <= floatadd(y, MAX)
	&& PPos[2] >= floatsub(z, MAX) && PPos[2] <= floatadd(z, MAX))
	{
		return 1;
	}
	return 0;
}

stock CreateStreamMapIcon(markermodel,Float:x,Float:y,Float:z,Float:spawn_distance)
{
	for(new i = 1;i<B_LIMIT;i++) {
		if(MapIconInfo[i][mvalid] == 0) {
			MapIconInfo[i][mmodel] = markermodel;
			for(new j=0;j<MAX_PLAYERS;j++) {
				MIidnum[j][i] = i;
			}
			MapIconInfo[i][mx_spawn] = x;
			MapIconInfo[i][my_spawn] = y;
			MapIconInfo[i][mz_spawn] = z;
			MapIconInfo[i][mspawndist] = spawn_distance;
			MapIconInfo[i][mvalid] = 1;
			return i;
		}
	}
	return 0;
}

stock ChangeMapIconModel(streamid,newmodel)
{
	for(new i = 0;i<MAX_PLAYERS;i++) {
	    if(IsPlayerConnected(i)) {
			new iconid = MIidnum[i][streamid];
    		MapIconInfo[streamid][mmodel] = newmodel;
    		if(MIactive[i][streamid] == 1) {
        		RemovePlayerMapIcon(i,iconid);
				SetPlayerMapIcon(i,iconid,MapIconInfo[streamid][mx_spawn],MapIconInfo[streamid][my_spawn],MapIconInfo[streamid][mz_spawn],MapIconInfo[streamid][mmodel],1);
			}
		}
	}
}
//==============================================================================
public PingKick() {
	if(Config[MaxPing]) {
	    for(new i = 0,string[256],xname[24]; i < MAX_PLAYERS; i++)
	    if(IsPlayerConnected(i) && (GetPlayerPing(i) > Config[MaxPing])) {
	        if(!IsPlayerXAdmin(i) || (IsPlayerXAdmin(i) && !Config[AdminImmunity])) {
	        	GetPlayerName(i,xname,24); format(string,256,"\"%s\" has been kicked from the server. (Reason: High Ping || Max Allowed: %d)",xname,Config[MaxPing]);
	        	SendClientMessageToAll(yellow,string); Kick(i);
	        }
	    }
	}
}