All pastes #956835 Raw Edit

Stuff

public c v1 · immutable
#956835 ·published 2008-03-25 16:28 UTC
rendered paste body
#include <a_samp>
#include <Y_Objects>
#include <core>
#include <float>
#include <file>
#include <dutils>
#include <lethaldudb>

// Configuration
#define READ_PMS 1
#define MAX_ADMIN_LEVEL 4
#define MAX_PING 900
#define columnwidth 275
//SKINS
#define AdminSkin1 217
#define AdminSkin2 211
// Spec
#define ADMIN_SPEC_TYPE_NONE 0
#define ADMIN_SPEC_TYPE_PLAYER 1
#define ADMIN_SPEC_TYPE_VEHICLE 2

#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, this script uses 11 menus so it might conflict with your stuff
				   // if you are using a lot of menus yourself (global limit for SA-MP: 128)
				   // Do note, however, that I plan on retiring most of the commands that can as of now (v0.4) reached
				   // by menus to make the script more "user friendly" (this is depending on feedback I get on the topic)

//########################################################//
// VARIABLES YOU MIGHT WANT TO MODIFY TO SUIT YOUR TASTES //
//  THESE CAN BE CHANGED VIA MENUS INGAME, BUT SETTINGS   //
//  ARE NOT SAVED (YET), SO YOU MIGHT WANT TO SET DEFAULT //
//  VALUES FROM HERE. < THIS SPACE IS LEFT BLANK >        //
//########################################################//
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]
//################################################//
// CHANGE THINGS PAST THIS POINT ON YOUR OWN RISK //
//################################################//

#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

//Color Defines
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_DARKRED 0x660000AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_BLACK 0x000000AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_GREEN1 0x33AA33AA
#define COLOR_PURPLE 0x800080AA
#define COLOR_BROWN 0xA52A2AAA
//Team Defines
#define TEAM_1 0
#define TEAM_2 1
#define TEAM_REF 2
#define MAX_STRING 255

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 strtok(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_STRING], 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_STRING]; // Stores 5 top scores, 6th isn't
new TopRacerTimes[6];              // saved to file, used to simplify
new TopLappers[6][MAX_STRING];// 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];


new gTeam[MAX_PLAYERS];
new gPlayerClass[MAX_PLAYERS];
new tkscore[MAX_PLAYERS];
new TEAM1[256], TEAM2[256], MAXKILLS;
new wpn1, wpn2, wpn3;
new ammogm1, ammogm2, ammogm3;
new DeathCount[MAX_PLAYERS];
new sCount1, sCount2;
new winner[256];
//new astring[256];
new aAutoS;
new Menu:Stunt;
// Variables
new LoggedIn[MAX_PLAYERS];
new MyKills[MAX_PLAYERS];
new MyDeaths[MAX_PLAYERS];
new IsPlayerInJail[MAX_PLAYERS];
new	IsPlayerFrozen[MAX_PLAYERS];
new IsPlayerMuted[MAX_PLAYERS];
new mutedwarning[MAX_PLAYERS];
new Spawned[MAX_PLAYERS];
new TimesSpawned[MAX_PLAYERS];
new PlayerNewName[MAX_PLAYERS];
new LAdmin[MAX_PLAYERS];
new God[MAX_PLAYERS];
new jailnoob[MAX_PLAYERS];
new freezenoob[MAX_PLAYERS];
new Warnings[MAX_PLAYERS];
new DoorsLocked[MAX_PLAYERS];
new Invis[MAX_PLAYERS];
new Float:Pos[MAX_PLAYERS][4];
// Spec
new gSpectateID[MAX_PLAYERS];
new gSpectateType[MAX_PLAYERS];
//Textdraws
new Text:SpecText;
//Timers
new InvisTimer;
new PingTimer;
new GodTimer;
//Duel
new cdt=-1;	new timer;
new InDuel[MAX_PLAYERS];
// Menus
new Menu:XMainMenu;
new Menu:XVehicles, Menu:twodoor, Menu:fourdoor, Menu:fastcar, Menu:Othercars, Menu:bikes, Menu:boats, Menu:planes, Menu:helicopters ;
new Menu:XWeapons, Menu:XWeaponsBig, Menu:XWeaponsSmall, Menu:XWeaponsMore, Menu:LWeather, Menu:LTuneMenu, Menu:LTime, Menu:LCars;
new Menu:XTele, Menu:LasVenturasMenu, Menu:LosSantosMenu, Menu:SanFierroMenu, Menu:DesertMenu, Menu:FlintMenu, Menu:MountChiliadMenu, Menu:InteriorsMenu/*, Menu:SavedTeleMenu */ ;
// Time
new shifthour;
new ghour = 0;
new gminute = 0;
new gsecond = 0;
new timeshift = 0;
// rcon
new max_playerid = 0;

//------------------------------------------------------------------------------

main()
{
	print("\n----------------------------------");
	print("         ClanBattle: v1.0           ");
	print("----------------------------------\n");
	print("Loading Config......\n");
	printf("    | %s VS %s |         ",TEAM1, TEAM2);
	printf("    |First Clan to %d Kills",MAXKILLS);
	//	if(aAutoS > 0){ print("    |Auto-Clan-Detection   [Activated]\n"); }else{ print("    |Auto-Clan-Detection   [Disabled]\n");}
}

//------------------------------------------------------------------------------

public OnGameModeInit()
{
    Object_Object();
    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
	SetGameModeText("HC4L Gang Server");
	SetTeamCount(6);
	ShowNameTags(1);
	ShowPlayerMarkers(1);
	SetWorldTime(12);
	rConfig();
	UsePlayerPedAnims();
	max_playerid = GetMaxPlayers() - 1;
	gettime(ghour, gminute, gsecond);
	FixHour(ghour);
	ghour = shifthour;

	XMainMenu = CreateMenu("Main Menu", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(XMainMenu, 0, "Choose an option below");
	AddMenuItem(XMainMenu, 0, "Teleports");//0
	AddMenuItem(XMainMenu, 0, "All Vehicles");
	AddMenuItem(XMainMenu, 0, "Choose Weapon");
	AddMenuItem(XMainMenu, 0, "Restore Health");
	AddMenuItem(XMainMenu, 0, "Restore Armour");
	AddMenuItem(XMainMenu, 0, "Admin Cars");
	AddMenuItem(XMainMenu, 0, "Fix car");
	AddMenuItem(XMainMenu, 0, "Tuning Menu");
    AddMenuItem(XMainMenu, 0, "Server Weather");
    AddMenuItem(XMainMenu, 0, "Server Time");
	AddMenuItem(XMainMenu, 0, "Exit Menu");//

	LWeather = CreateMenu("~b~Weather ~g~ Menu",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(LWeather, 0, "Set Weather");
	AddMenuItem(LWeather, 0, "Clear Blue Sky");
	AddMenuItem(LWeather, 0, "Sand Storm");
	AddMenuItem(LWeather, 0, "Thunderstorm");
	AddMenuItem(LWeather, 0, "Foggy");
	AddMenuItem(LWeather, 0, "Cloudy");
	AddMenuItem(LWeather, 0, "High Tide");
	AddMenuItem(LWeather, 0, "Purple Sky");
	AddMenuItem(LWeather, 0, "Black/White Sky");
	AddMenuItem(LWeather, 0, "Dark, Green Sky");
	AddMenuItem(LWeather, 0, "Heatwave");
	AddMenuItem(LWeather,0,"Return");

	LTime = CreateMenu("~b~Time ~g~ Menu", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(LTime, 0, "Set Time");
	AddMenuItem(LTime, 0, "Morning");//0
	AddMenuItem(LTime, 0, "Mid day");
	AddMenuItem(LTime, 0, "Afternoon");
	AddMenuItem(LTime, 0, "Evening");
	AddMenuItem(LTime, 0, "Midnight");
    AddMenuItem(LTime, 0, "Return");

	LCars = CreateMenu("~b~ ~g~Cars", 2,  55.0, 150.0, 100.0, 80.0); //200
	SetMenuColumnHeader(LCars, 0, "Choose a car");
	AddMenuItem(LCars, 0, "Turismo");//0
	AddMenuItem(LCars, 0, "Bandio");
	AddMenuItem(LCars, 0, "Vortex");
	AddMenuItem(LCars, 0, "NRG");
	AddMenuItem(LCars, 0, "Dumper");
	AddMenuItem(LCars, 0, "S.W.A.T");
    AddMenuItem(LCars, 0, "Hunter");
    AddMenuItem(LCars, 0, "Jetmax (boat)");
    AddMenuItem(LCars, 0, "Rhino");
    AddMenuItem(LCars, 0, "Monster Truck");
    AddMenuItem(LCars, 0, "Sea Sparrow");
	AddMenuItem(LCars, 0, "Return");

	LTuneMenu = CreateMenu("~b~Tuning ~g~ Menu",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(LTuneMenu, 0, "Add to car");
	AddMenuItem(LTuneMenu,0,"NOS");
	AddMenuItem(LTuneMenu,0,"Hydraulics");
	AddMenuItem(LTuneMenu,0,"Wire Wheels");
	AddMenuItem(LTuneMenu,0,"Twist Wheels");
	AddMenuItem(LTuneMenu,0,"Access Wheels");
	AddMenuItem(LTuneMenu,0,"Mega Wheels");
	AddMenuItem(LTuneMenu,0,"Import Wheels");
	AddMenuItem(LTuneMenu,0,"Atomic Wheels");
	AddMenuItem(LTuneMenu,0,"Offroad Wheels");
	AddMenuItem(LTuneMenu,0,"Classic Wheels");
	AddMenuItem(LTuneMenu,0,"Return");

// vehicles
	XVehicles = CreateMenu("~b~Vehicles ~g~ Menu",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(XVehicles, 0, "Choose a car");
	AddMenuItem(XVehicles,0,"2-door Cars");
	AddMenuItem(XVehicles,0,"4-door Cars");
	AddMenuItem(XVehicles,0,"Fast Cars");
	AddMenuItem(XVehicles,0,"Other Vehicles");
	AddMenuItem(XVehicles,0,"Bikes");
	AddMenuItem(XVehicles,0,"Boats");
	AddMenuItem(XVehicles,0,"Planes");
	AddMenuItem(XVehicles,0,"Helicopters");
	AddMenuItem(XVehicles,0,"Return");

 	twodoor = CreateMenu("~b~2-door Cars",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(twodoor, 0, "Choose a car");
	AddMenuItem(twodoor,0,"Feltzer");//533
	AddMenuItem(twodoor,0,"Stallion");//139
	AddMenuItem(twodoor,0,"Windsor");//555
	AddMenuItem(twodoor,0,"Bobcat");//422
	AddMenuItem(twodoor,0,"Yosemite");//554
	AddMenuItem(twodoor,0,"Broadway");//575
	AddMenuItem(twodoor,0,"Blade");//536
	AddMenuItem(twodoor,0,"Slamvan");//535
	AddMenuItem(twodoor,0,"Tornado");//576
	AddMenuItem(twodoor,0,"Bravura");//401
	AddMenuItem(twodoor,0,"Fortune");//526
	AddMenuItem(twodoor,0,"Return");

 	fourdoor = CreateMenu("~b~4-door Cars",2,145,150,columnwidth,columnwidth);
	SetMenuColumnHeader(fourdoor, 0, "Choose a car");
	AddMenuItem(fourdoor,0,"Perenniel");//404
	AddMenuItem(fourdoor,0,"Tahoma");//566
	AddMenuItem(fourdoor,0,"Voodoo");//414
	AddMenuItem(fourdoor,0,"Admiral");//445
	AddMenuItem(fourdoor,0,"Elegant");//507
	AddMenuItem(fourdoor,0,"Glendale");//466
	AddMenuItem(fourdoor,0,"Intruder");//546
	AddMenuItem(fourdoor,0,"Merit");//551
	AddMenuItem(fourdoor,0,"Oceanic");//467
	AddMenuItem(fourdoor,0,"Premier");//426
	AddMenuItem(fourdoor,0,"Sentinel");//405
	AddMenuItem(fourdoor,0,"Return");

 	fastcar = CreateMenu("~b~Fast Cars",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(fastcar, 0, "Choose a car");
	AddMenuItem(fastcar,0,"Comet");//480
	AddMenuItem(fastcar,0,"Buffalo");//402
	AddMenuItem(fastcar,0,"Cheetah");//415
	AddMenuItem(fastcar,0,"Euros");//587
	AddMenuItem(fastcar,0,"Hotring Racer");//494
	AddMenuItem(fastcar,0,"Infernus");//411
	AddMenuItem(fastcar,0,"Phoenix");//603
	AddMenuItem(fastcar,0,"Super GT");//506
	AddMenuItem(fastcar,0,"Turismo");//451
	AddMenuItem(fastcar,0,"ZR-350");//477
	AddMenuItem(fastcar,0,"Bullet");//541
	AddMenuItem(fastcar,0,"Return");

 	Othercars = CreateMenu("~b~Other Vehicles",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(Othercars, 0, "Choose a car?");
	AddMenuItem(Othercars,0,"Monster Truck");//556
	AddMenuItem(Othercars,0,"Trashmaster");//408
	AddMenuItem(Othercars,0,"Bus");//431
	AddMenuItem(Othercars,0,"Coach");//437
	AddMenuItem(Othercars,0,"Enforcer");//427
	AddMenuItem(Othercars,0,"Rhino (Tank)");//432
	AddMenuItem(Othercars,0,"S.W.A.T. Tank");//601
	AddMenuItem(Othercars,0,"Cement Truck");//524
	AddMenuItem(Othercars,0,"Flatbed");//455
	AddMenuItem(Othercars,0,"BF Injection");//424
	AddMenuItem(Othercars,0,"Dune");//573
	AddMenuItem(Othercars,0,"Return");

 	bikes = CreateMenu("~b~Bikes",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(bikes, 0, "Choose a bike");
	AddMenuItem(bikes,0,"BF-400");
	AddMenuItem(bikes,0,"BMX");
	AddMenuItem(bikes,0,"Faggio");
	AddMenuItem(bikes,0,"FCR-900");
	AddMenuItem(bikes,0,"Freeway");
	AddMenuItem(bikes,0,"NRG-500");
	AddMenuItem(bikes,0,"PCJ-600");
	AddMenuItem(bikes,0,"Pizzaboy");
	AddMenuItem(bikes,0,"Quad");
	AddMenuItem(bikes,0,"Sanchez");
	AddMenuItem(bikes,0,"Wayfarer");
	AddMenuItem(bikes,0,"Return");

 	boats = CreateMenu("~b~Boats",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(boats, 0, "Choose a boat");
	AddMenuItem(boats,0,"Coastguard");//472
	AddMenuItem(boats,0,"Dingy");//473
	AddMenuItem(boats,0,"Jetmax");//493
	AddMenuItem(boats,0,"Launch");//595
	AddMenuItem(boats,0,"Marquis");//484
	AddMenuItem(boats,0,"Predator");//430
	AddMenuItem(boats,0,"Reefer");//453
	AddMenuItem(boats,0,"Speeder");//452
	AddMenuItem(boats,0,"Squallo");//446
	AddMenuItem(boats,0,"Tropic");//454
	AddMenuItem(boats,0,"Return");

 	planes = CreateMenu("~b~Planes",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(planes, 0, "Choose a plane");
	AddMenuItem(planes,0,"Andromada");//592
	AddMenuItem(planes,0,"AT400");//577
	AddMenuItem(planes,0,"Beagle");//511
	AddMenuItem(planes,0,"Cropduster");//512
	AddMenuItem(planes,0,"Dodo");//593
	AddMenuItem(planes,0,"Hydra");//520
	AddMenuItem(planes,0,"Nevada");//553
	AddMenuItem(planes,0,"Rustler");//476
	AddMenuItem(planes,0,"Shamal");//519
	AddMenuItem(planes,0,"Skimmer");//460
	AddMenuItem(planes,0,"Stuntplane");//513
	AddMenuItem(planes,0,"Return");

	helicopters = CreateMenu("~b~Helicopters",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(helicopters, 0, "Choose a helicopter");
	AddMenuItem(helicopters,0,"Cargobob");//
	AddMenuItem(helicopters,0,"Hunter");//
	AddMenuItem(helicopters,0,"Leviathan");//
	AddMenuItem(helicopters,0,"Maverick");//
	AddMenuItem(helicopters,0,"News Chopper");//
	AddMenuItem(helicopters,0,"Police Maverick");//
	AddMenuItem(helicopters,0,"Raindance");//
	AddMenuItem(helicopters,0,"Seasparrow");//
	AddMenuItem(helicopters,0,"Sparrow");//
	AddMenuItem(helicopters,0,"Return");

 	XWeapons = CreateMenu("~b~Weapons ~g~Main Menu",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(XWeapons, 0, "Choose a weapon");
	AddMenuItem(XWeapons,0,"Desert Eagle");//0
	AddMenuItem(XWeapons,0,"M4");
	AddMenuItem(XWeapons,0,"Sawnoff Shotgun");
	AddMenuItem(XWeapons,0,"Combat Shotgun");
	AddMenuItem(XWeapons,0,"UZI");
	AddMenuItem(XWeapons,0,"Rocket Launcher");
	AddMenuItem(XWeapons,0,"Minigun");//6
	AddMenuItem(XWeapons,0,"Sniper Rifle");
	AddMenuItem(XWeapons,0,"Big Weapons");
	AddMenuItem(XWeapons,0,"Small Weapons");//9
	AddMenuItem(XWeapons,0,"More");
	AddMenuItem(XWeapons,0,"Return");//11

 	XWeaponsBig = CreateMenu("~b~Weapons ~g~Big Weapons",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(XWeaponsBig, 0, "Choose a weapon");
	AddMenuItem(XWeaponsBig,0,"Shotgun");
	AddMenuItem(XWeaponsBig,0,"AK-47");
	AddMenuItem(XWeaponsBig,0,"Country Rifle");
	AddMenuItem(XWeaponsBig,0,"HS Rocket Launcher");
	AddMenuItem(XWeaponsBig,0,"Flamethrower");
	AddMenuItem(XWeaponsBig,0,"SMG");
	AddMenuItem(XWeaponsBig,0,"TEC9");
	AddMenuItem(XWeaponsBig,0,"Return");

 	XWeaponsSmall = CreateMenu("~b~Weapons ~g~Small Weapons",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(XWeaponsBig, 0, "Choose a weapon");
	AddMenuItem(XWeaponsSmall,0,"9mm");
	AddMenuItem(XWeaponsSmall,0,"Silenced 9mm");
	AddMenuItem(XWeaponsSmall,0,"Molotov Cocktail");
	AddMenuItem(XWeaponsSmall,0,"Fire Extinguisher");
	AddMenuItem(XWeaponsSmall,0,"Spraycan");
	AddMenuItem(XWeaponsSmall,0,"Frag Grenades");
	AddMenuItem(XWeaponsSmall,0,"Katana");
	AddMenuItem(XWeaponsSmall,0,"Chainsaw");
	AddMenuItem(XWeaponsSmall,0,"Return");//8

 	XWeaponsMore = CreateMenu("~b~Weapons ~g~More Weapons",2,125,150,columnwidth,columnwidth);
	SetMenuColumnHeader(XWeaponsBig, 0, "Choose a weapon");
	AddMenuItem(XWeaponsMore,0,"Jetpack");
	AddMenuItem(XWeaponsMore,0,"Knife");
	AddMenuItem(XWeaponsMore,0,"Flowers");
	AddMenuItem(XWeaponsMore,0,"Camera");
	AddMenuItem(XWeaponsMore,0,"Pool Cue");
	AddMenuItem(XWeaponsMore,0,"Baseball Bat");
	AddMenuItem(XWeaponsMore,0,"Golf Club");
	AddMenuItem(XWeaponsMore,0,"MAX AMMO");
	AddMenuItem(XWeaponsMore,0,"Return");//8

// teleports
	XTele = CreateMenu("Teleports", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(XTele, 0, "Teleport to where?");
	AddMenuItem(XTele, 0, "Las Venturas");//0
	AddMenuItem(XTele, 0, "Los Santos");//1
	AddMenuItem(XTele, 0, "San Fierro");//2
	AddMenuItem(XTele, 0, "The Desert");//3
	AddMenuItem(XTele, 0, "Flint Country");//4
	AddMenuItem(XTele, 0, "Mount Chiliad");//5
	AddMenuItem(XTele, 0, "Interiors");//6
	AddMenuItem(XTele, 0, "Return");//8

	LasVenturasMenu = CreateMenu("Las Venturas", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(LasVenturasMenu, 0, "Teleport to where?");
	AddMenuItem(LasVenturasMenu, 0, "The Strip");//0
	AddMenuItem(LasVenturasMenu, 0, "Come-A-Lot");//1
	AddMenuItem(LasVenturasMenu, 0, "LV Airport");//2
	AddMenuItem(LasVenturasMenu, 0, "KACC Military Fuels");//3
	AddMenuItem(LasVenturasMenu, 0, "Yellow Bell Golf Club");//4
	AddMenuItem(LasVenturasMenu, 0, "Baseball Pitch");//5
	AddMenuItem(LasVenturasMenu, 0, "Return");//6

	LosSantosMenu = CreateMenu("Los Santos", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(LosSantosMenu, 0, "Teleport to where?");
	AddMenuItem(LosSantosMenu, 0, "Ganton");//0
	AddMenuItem(LosSantosMenu, 0, "LS Airport");//1
	AddMenuItem(LosSantosMenu, 0, "Ocean Docks");//2
	AddMenuItem(LosSantosMenu, 0, "Pershing Square");//3
	AddMenuItem(LosSantosMenu, 0, "Verdant Bluffs");//4
	AddMenuItem(LosSantosMenu, 0, "Santa Maria Beach");//5
	AddMenuItem(LosSantosMenu, 0, "Mulholland");//6
	AddMenuItem(LosSantosMenu, 0, "Richman");//7
	AddMenuItem(LosSantosMenu, 0, "Return");//8

	SanFierroMenu = CreateMenu("San Fierro", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(SanFierroMenu, 0, "Teleport to where?");
	AddMenuItem(SanFierroMenu, 0, "SF Station");//0
	AddMenuItem(SanFierroMenu, 0, "SF Airport");//1
	AddMenuItem(SanFierroMenu, 0, "Ocean Flats");//2
	AddMenuItem(SanFierroMenu, 0, "Avispa Country Club");//3
	AddMenuItem(SanFierroMenu, 0, "Easter Basin (docks)");//4
	AddMenuItem(SanFierroMenu, 0, "Esplanade North");//5
	AddMenuItem(SanFierroMenu, 0, "Battery Point");//6
	AddMenuItem(SanFierroMenu, 0, "Return");//7

	DesertMenu = CreateMenu("The Desert", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(DesertMenu, 0, "Teleport to where?");
	AddMenuItem(DesertMenu, 0, "Aircraft Graveyard");//0
	AddMenuItem(DesertMenu, 0, "Area 51");//1
	AddMenuItem(DesertMenu, 0, "The Big Ear");//2
	AddMenuItem(DesertMenu, 0, "The Sherman Dam");//3
	AddMenuItem(DesertMenu, 0, "Las Barrancas");//4
	AddMenuItem(DesertMenu, 0, "El Quebrados");//5
	AddMenuItem(DesertMenu, 0, "Octane Springs");//6
	AddMenuItem(DesertMenu, 0, "Return");//7

	FlintMenu = CreateMenu("Flint Country", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(FlintMenu, 0, "Teleport to where?");
	AddMenuItem(FlintMenu, 0, "The Lake");//0
	AddMenuItem(FlintMenu, 0, "Leafy Hollow");//1
	AddMenuItem(FlintMenu, 0, "The Farm");//2
	AddMenuItem(FlintMenu, 0, "Shady Cabin");//3
	AddMenuItem(FlintMenu, 0, "Flint Range");//4
	AddMenuItem(FlintMenu, 0, "Becon Hill");//5
	AddMenuItem(FlintMenu, 0, "Fallen Tree");//6
	AddMenuItem(FlintMenu, 0, "Return");//7

	MountChiliadMenu = CreateMenu("Mount Chiliad", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(MountChiliadMenu, 0, "Teleport to where?");
	AddMenuItem(MountChiliadMenu, 0, "Chiliad Jump");//0
	AddMenuItem(MountChiliadMenu, 0, "Bottom Of Chiliad");//1
	AddMenuItem(MountChiliadMenu, 0, "Highest Point");//2
	AddMenuItem(MountChiliadMenu, 0, "Chiliad Path");//3
	AddMenuItem(MountChiliadMenu, 0, "Return");//7

	InteriorsMenu = CreateMenu("Interiors", 2,  55.0, 200.0, 100.0, 80.0);
	SetMenuColumnHeader(InteriorsMenu, 0, "Teleport to where?");
	AddMenuItem(InteriorsMenu, 0, "Planning Department");//0
	AddMenuItem(InteriorsMenu, 0, "LV PD");//1
	AddMenuItem(InteriorsMenu, 0, "Pizza Stack");//2
	AddMenuItem(InteriorsMenu, 0, "RC Battlefield");//3
	AddMenuItem(InteriorsMenu, 0, "Caligula's Casino");//4
	AddMenuItem(InteriorsMenu, 0, "Big Smoke's Crack Palace");//5
	AddMenuItem(InteriorsMenu, 0, "Madd Dogg's Mansion");//6
	AddMenuItem(InteriorsMenu, 0, "Dirtbike Stadium");//7
	AddMenuItem(InteriorsMenu, 0, "Vice Stadium (duel)");//8
	AddMenuItem(InteriorsMenu, 0, "Ammu-nation");//9
	AddMenuItem(InteriorsMenu, 0, "Atrium");//7
	AddMenuItem(InteriorsMenu, 0, "Return");//8

	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) OnPlayerConnect(i);

	PingTimer = SetTimer("PingKick",10000,1);
	GodTimer = SetTimer("GodUpdate",10000,1);
	InvisTimer = SetTimer("HideNameTag",1000,1);

	AddPlayerClass(85,1410.8242,2102.9089,12.0156,352.7742,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team1 spawn
	AddPlayerClass(161,1410.8242,2102.9089,12.0156,352.7742,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team1 spawn
	AddPlayerClass(162,1410.8242,2102.9089,12.0156,352.7742,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team1 spawn
	if(aAutoS == 0){
	AddPlayerClass(206,1306.5330,2211.8743,12.0156,270.3902,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team2 spawn
	AddPlayerClass(154,1306.5330,2211.8743,12.0156,270.3902,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team2 spawn
	AddPlayerClass(29,1306.5330,2211.8743,12.0156,270.3902,wpn1,ammogm1,wpn2,ammogm2,wpn3,ammogm3); // Team2 spawn
	AddPlayerClass(201,1368.5774,2196.8315,9.7578,176.8027,43,500,0,0,0,0); //Ref spawn
	AddStaticVehicle(481,-1649.9448,-92.1460,37.5102,6.2672,39,39); //
	AddStaticVehicle(481,-1642.7786,-91.7281,37.5127,2.7632,39,39); //
	AddStaticVehicle(481,-1634.2982,-91.1786,37.5053,359.9003,39,39); //
	AddStaticVehicle(481,-1626.6525,-91.3181,37.5058,5.9759,39,39); //
	AddStaticVehicle(481,-1620.8448,-91.3222,37.5061,359.7626,39,39); //
	AddStaticVehicle(481,-1615.5537,-93.0928,37.4812,357.2204,39,39); //
	AddStaticVehicle(522,-1609.5023,-45.4868,37.4224,89.4565,0,1); //
	AddStaticVehicle(522,-1610.2457,-53.9566,37.5900,91.3982,0,1); //
  	AddStaticVehicle(522,-1609.6157,-62.8500,37.4255,88.8547,0,1); //
	AddStaticVehicle(522,-1608.7144,-72.8470,37.4259,93.0790,0,1); //
   	AddStaticVehicle(522,-1608.9572,-83.0813,37.4669,97.8294,0,1); //
   	AddStaticVehicle(522,-1626.8253,123.2108,37.4335,177.6410,0,1); //
   	AddStaticVehicle(522,-1627.2292,115.9341,37.4274,175.8456,0,1); //
   	AddStaticVehicle(522,-1627.8545,107.3249,37.5483,175.8444,0,1); //
   	AddStaticVehicle(522,-1628.9008,92.9161,37.4121,175.8445,0,1); //
   	AddStaticVehicle(522,-1622.6770,120.2043,37.4191,354.0764,0,1); //
   	AddStaticVehicle(522,-1623.4337,112.9080,37.5966,354.0763,0,1); //
   	AddStaticVehicle(522,-1623.4955,105.6214,37.4988,359.2211,0,1); //
   	AddStaticVehicle(522,-1623.6136,96.8732,37.4149,359.2213,0,1); //
   	AddStaticVehicle(522,-1624.0718,86.8879,37.5800,355.9452,0,1); //
   	AddStaticVehicle(522,-1704.4041,104.2230,37.4088,91.5239,0,1); //
   	AddStaticVehicle(522,-1713.7544,103.9742,37.3956,91.5238,0,1); //
   	AddStaticVehicle(522,-1725.7816,104.3655,37.4034,87.6309,0,1); //
   	AddStaticVehicle(522,-1738.4615,104.8901,37.4036,87.6308,0,1); //
   	AddStaticVehicle(522,-1754.1567,105.5395,37.4039,87.6308,0,1); //
   	AddStaticVehicle(522,-1740.9899,-96.0913,37.4534,273.2650,0,1); //
   	AddStaticVehicle(522,-1726.2412,-95.7798,37.4650,268.8230,0,1); //
   	AddStaticVehicle(522,-1710.0853,-96.1117,37.4396,268.8230,0,1); //
   	AddStaticVehicle(522,-1690.7932,-95.7704,37.4535,270.8209,0,1); //
   	AddStaticVehicle(522,-1660.8601,-254.5956,13.7187,1.9927,0,1); //
   	AddStaticVehicle(522,-1678.1626,-252.7200,13.7202,346.2105,0,1); //
   	AddStaticVehicle(522,-1624.2158,-170.0735,14.1116,132.1488,0,1); //
   	AddStaticVehicle(522,-1626.7196,-168.2083,14.1144,133.2674,0,1); //
   	AddStaticVehicle(522,-1683.0768,-160.2556,14.0591,222.8418,0,1); //
   	AddStaticVehicle(522,-1679.9928,-157.2367,14.0572,226.5825,0,1); //
   	AddStaticVehicle(522,-1675.7986,-153.7077,14.0190,225.3400,0,1); //
   	AddStaticVehicle(468,-1614.1957,-40.2481,37.5154,95.4050,6,101); //
   	AddStaticVehicle(468,-1623.8351,-39.6389,37.5114,87.3320,6,101); //
   	AddStaticVehicle(468,-1626.8661,-32.6021,37.5814,5.6737,6,101); //
   	AddStaticVehicle(468,-1632.5492,-25.8806,37.5300,89.6088,6,101); //
   	AddStaticVehicle(468,-1617.6410,9.8276,37.5176,166.2070,6,101); //
	AddStaticVehicle(468,-1615.5165,3.5158,37.5174,185.9072,6,101); //
   	AddStaticVehicle(468,-1614.8235,-3.1687,37.5920,185.9096,6,101); //
   	AddStaticVehicle(468,-1629.0563,2.9612,37.5175,66.5134,6,101); //
	AddStaticVehicle(468,-1640.9414,6.8178,37.5183,74.4839,6,101); //
    //================[Vehicles]=============================================================================================
    AddStaticVehicle(522,2104.7639,-2580.1467,13.1221,268.2100,3,3); // bike1
    AddStaticVehicle(522,2104.8569,-2576.8528,13.1213,271.5352,3,3); // bike2
    AddStaticVehicle(522,2105.0952,-2573.8479,13.1238,270.3297,3,3); // bike3
    AddStaticVehicle(522,2105.1077,-2570.6697,13.1224,268.7588,3,3); // bike4
    AddStaticVehicle(522,2105.1982,-2567.4341,13.1225,268.5932,3,3); // bike5
    AddStaticVehicle(522,2104.9307,-2564.1589,13.1225,270.2980,3,3); // bike6
    AddStaticVehicle(522,2105.0308,-2560.8535,13.1152,269.5416,3,3); // bike7
    AddStaticVehicle(522,2105.2122,-2557.8047,13.1226,268.9983,3,3); // bike8
    AddStaticVehicle(522,2104.8298,-2554.5857,13.1225,268.6398,3,3); // bike9
    AddStaticVehicle(522,2104.9524,-2551.5171,13.1166,268.5184,3,3); // bike10
    AddStaticVehicle(411,2094.0696,-2545.0752,13.2790,89.4762,3,3); // car1
    AddStaticVehicle(411,2094.4246,-2551.5166,13.3064,89.8517,3,3); // car2
    AddStaticVehicle(411,2094.1362,-2557.8447,13.2787,91.1417,3,3); // car3
    AddStaticVehicle(411,2094.4946,-2564.1511,13.2926,88.5476,3,3); // car4
    AddStaticVehicle(411,2094.4580,-2570.7627,13.2788,90.5472,3,3); // car5
    AddStaticVehicle(411,2094.4482,-2577.0569,13.2791,91.9080,3,3); // car6
//================[Vehicles] van stunt park2==============================================================================
	AddStaticVehicle(411,-2082.2407,-276.2535,35.0473,179.5881,0,0);
	AddStaticVehicle(451,-2077.9363,-276.2973,35.0284,180.0988,123,123);
	AddStaticVehicle(429,-2073.8857,-276.2755,34.9999,181.0099,3,1);
	AddStaticVehicle(522,-2073.7415,-266.5278,34.8927,217.2764,8,82);
	AddStaticVehicle(522,-2067.8000,-274.3333,34.8868,217.2762,8,82);
	AddStaticVehicle(522,-2093.6592,-238.7684,34.8910,268.8545,36,105);
	AddStaticVehicle(468,-2093.5190,-235.9875,34.9892,265.5127,46,46);
	AddStaticVehicle(444,-2043.1442,-152.6287,39.2713,288.4476,32,42);
	AddStaticVehicle(504,-2084.0488,-108.8488,35.1126,358.6101,65,9);
	AddStaticVehicle(504,-2080.3799,-108.7750,35.1125,359.3471,14,1);
	AddStaticVehicle(522,-2023.6782,-122.6857,34.7585,5.6476,39,106);
	AddStaticVehicle(522,-2019.4063,-122.7911,34.7770,357.5882,51,118);
	AddStaticVehicle(522,-2021.8099,-122.7494,34.7680,0.7533,3,3);
	AddStaticVehicle(477,-2043.9205,-177.0054,35.0801,180.7196,0,1);
	AddStaticVehicle(477,-2044.0931,-193.2543,35.0760,358.0864,0,1);
	AddStaticVehicle(522,-2035.2681,-278.0305,34.8860,182.2931,3,8);
	AddStaticVehicle(451,-2043.1597,-277.1660,35.0299,178.2078,125,125);
	AddStaticVehicle(451,-2046.9794,-277.0523,35.0314,180.0980,36,36);
	AddStaticVehicle(411,-2063.8237,-245.2278,35.0473,359.8873,116,1);
	AddStaticVehicle(411,-2063.7954,-230.8184,35.0512,359.9517,116,1);
	AddStaticVehicle(429,-2086.3411,-189.1079,34.9999,358.3580,10,10);
	AddStaticVehicle(429,-2086.1006,-180.6557,34.9999,358.3728,10,10);
	AddStaticVehicle(560,-2088.3621,-143.7436,35.0253,359.9523,37,0);
	AddStaticVehicle(560,-2088.5134,-138.0053,35.0258,1.1943,41,29);
	AddStaticVehicle(562,-2075.0696,-108.9343,34.9828,0.7072,11,1);
	AddStaticVehicle(468,-2094.1638,-149.8703,34.9895,266.7468,53,53);
	AddStaticVehicle(468,-2093.8865,-144.1561,34.9777,91.8026,3,3);
	AddStaticVehicle(522,-2056.2927,-168.1383,34.8896,243.8430,6,25);
	AddStaticVehicle(522,-2019.3164,-219.0912,34.8928,82.0377,6,25);
	AddStaticVehicle(468,-2019.1146,-221.6978,34.9892,267.5063,6,6);
	AddStaticVehicle(468,-2019.2758,-216.8506,34.9892,270.0094,6,6);
	AddStaticVehicle(468,-2024.2158,-278.6094,34.9889,91.2338,6,6);
	AddStaticVehicle(463,-2029.8383,-269.1547,34.8602,92.1952,11,11);
	AddStaticVehicle(522,-2012.8832,-269.3011,34.8950,359.9014,7,79);
	AddStaticVehicle(468,-2016.6353,-258.1417,45.5522,171.3577,46,46);
	AddStaticVehicle(522,-2051.8887,-206.2548,56.1679,168.3855,7,79);
	AddStaticVehicle(468,-2047.1726,-204.0825,71.9399,156.7968,53,53);
	AddStaticVehicle(522,-2037.3829,-171.0797,57.3106,78.6981,7,79);
	AddStaticVehicle(522,-2048.4644,-247.8668,104.6692,273.8113,8,82);
	AddStaticVehicle(522,-2048.5732,-244.9206,104.6677,86.4598,8,82);
	AddStaticVehicle(468,-2075.0078,-216.8356,34.9888,63.1467,3,3);
	AddStaticVehicle(468,-2075.8591,-209.0480,34.9919,129.7876,3,3);
	//STUNT LV AIRPORT
	AddStaticVehicle(476,1451.9950,1295.0398,10.8203,3.8893,3,3);
	AddStaticVehicle(476,1438.1582,1294.9824,10.8203,0.4426,3,3);
	AddStaticVehicle(476,1425.9156,1293.3722,10.8203,8.5893,3,3);
	AddStaticVehicle(476,1412.2642,1310.0707,10.8203,3.5759,3,3);
	AddStaticVehicle(476,1421.3707,1310.1958,10.8203,356.6825,3,3);
	AddStaticVehicle(476,1438.3256,1310.1167,10.8203,0.7559,3,3);
	AddStaticVehicle(476,1451.8146,1315.0363,10.8203,6.0827,3,3);
	CreateDynamicObject(978,-1040.364746,484.653411,14.513484,0.000000,0.000000,136.881851);
	CreateDynamicObject(978,-1033.963378,478.717956,14.479036,0.000000,0.000000,138.135116);
	CreateDynamicObject(978,-1027.704223,472.795166,14.447924,0.000000,0.000000,134.447570);
	CreateDynamicObject(978,-1021.518249,466.407714,14.458445,0.000000,0.000000,134.520065);
	CreateDynamicObject(978,-1016.035766,460.684509,14.488340,0.000000,0.000000,134.279251);
	CreateDynamicObject(978,-1010.023376,454.445709,14.509010,0.000000,0.000000,134.978393);
	CreateDynamicObject(1655,-1670.328857,-253.121444,14.148437,0.000000,0.000000,173.008560);
	CreateDynamicObject(1655,-1671.044555,-257.905792,17.194814,16.000000,0.000000,172.767761);
	CreateDynamicObject(1655,-1671.735839,-261.825469,22.102491,36.000000,0.000000,173.281463);
	CreateDynamicObject(1655,-1672.063110,-263.688812,28.949913,63.000000,0.000000,173.837905);
	CreateDynamicObject(1655,-1671.740478,-262.216308,36.363113,91.000000,0.000000,173.931503);
	CreateDynamicObject(1655,-1671.133544,-257.334045,42.573940,119.000000,0.000000,172.686767);
	CreateDynamicObject(5500,-1672.348144,-168.768798,37.152725,0.000000,0.000000,88.000000);
	CreateDynamicObject(5500,-1668.953979,-87.485389,36.975746,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1668.861206,-64.213890,36.934757,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1669.342407,-40.178050,36.924484,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1679.578491,-16.896022,36.939273,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1682.060546,6.269431,36.927349,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1684.978271,29.481634,36.913993,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1685.118896,53.724411,36.936515,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1684.747070,77.284820,36.914951,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1683.261962,100.352111,36.923503,0.000000,0.000000,0.000000);
	CreateDynamicObject(5500,-1683.036743,124.551887,36.940254,0.000000,0.000000,0.000000);
	CreateDynamicObject(13648,-1625.734741,105.717460,36.738964,0.000000,0.000000,356.119384);
	CreateDynamicObject(13666,-1661.118530,-91.855659,41.937419,0.000000,0.000000,8.774361);
	CreateDynamicObject(13666,-1674.209228,-91.671531,42.025959,0.000000,0.000000,10.000000);
	CreateDynamicObject(18367,-1696.831054,-36.731914,36.491909,-40.000000,0.000000,0.000000);
	CreateDynamicObject(1632,-1696.942016,-60.077293,61.759880,35.000000,0.000000,180.310287);
	CreateDynamicObject(1632,-1696.911254,-63.071113,67.620811,45.000000,0.000000,179.374359);
	CreateDynamicObject(1632,-1696.826416,-63.698753,74.457015,75.000000,-2.000000,182.533569);
	CreateDynamicObject(1632,-1696.964843,-37.250892,37.838546,8.000000,0.000000,180.029998);
	CreateDynamicObject(1632,-1696.945190,-61.258407,79.269004,106.000000,0.000000,181.027801);
	CreateDynamicObject(3279,-1751.720825,-93.890914,36.733486,0.000000,0.000000,361.684783);
	CreateDynamicObject(3279,-1768.483642,132.279174,36.697929,0.000000,0.000000,5.535367);
	CreateDynamicObject(3279,-1617.545532,132.231613,36.879005,0.000000,0.000000,270.622955);
	CreateDynamicObject(3279,-1603.609252,-99.720794,36.936511,0.000000,0.000000,179.880371);
	CreateDynamicObject(1632,-1617.768920,70.917976,37.836826,0.000000,0.000000,275.899383);
	CreateDynamicObject(1632,-1773.188232,55.488563,38.723381,22.000000,0.000000,88.388557);
	CreateDynamicObject(13592,-1717.545288,117.718566,46.606224,0.000000,0.000000,275.180358);
	CreateDynamicObject(13592,-1724.606079,118.228424,46.509651,0.000000,0.000000,272.716857);
	CreateDynamicObject(13592,-1731.376586,118.954017,46.489486,0.000000,0.000000,271.724334);
	CreateDynamicObject(13592,-1738.832641,119.839103,46.387519,0.000000,0.000000,272.145874);
	CreateDynamicObject(13592,-1746.293090,120.561096,46.504570,0.000000,0.000000,272.276336);
	CreateDynamicObject(13592,-1710.138671,117.427108,46.575756,0.000000,0.000000,94.841224);
	CreateDynamicObject(13592,-1702.853759,117.060646,46.579879,0.000000,0.000000,96.540878);
	CreateDynamicObject(1655,-1749.749633,127.248893,37.884929,0.000000,0.000000,355.269317);
	CreateDynamicObject(1655,-1749.367919,131.482208,40.984817,24.000000,0.000000,355.414215);
	CreateDynamicObject(1655,-1749.347900,133.330047,45.999942,55.000000,0.000000,356.354217);
	CreateDynamicObject(1655,-1749.651611,133.591018,53.710922,77.000000,0.000000,0.000000);
	CreateDynamicObject(13590,-1754.924316,26.488542,37.828056,0.000000,0.000000,196.509078);
	CreateDynamicObject(13604,-1662.814086,95.585403,37.850376,0.000000,0.000000,2.600707);
	CreateDynamicObject(13636,-1623.885131,-27.656970,38.914577,0.000000,0.000000,189.662475);
	CreateDynamicObject(12956,-1643.761230,9.534469,37.857017,0.000000,0.000000,250.473251);
	CreateDynamicObject(13641,-1670.273803,33.754009,37.831161,0.000000,0.000000,288.459350);
	CreateDynamicObject(13638,-1724.255737,-59.217052,38.012882,0.000000,0.000000,182.160812);
	CreateDynamicObject(13638,-1729.403808,-60.601196,46.380729,0.000000,0.000000,2.000000);
	CreateDynamicObject(1655,-1733.493774,-5.636405,38.005474,-16.000000,-29.000000,131.783798);
	CreateDynamicObject(1655,-1727.498168,-0.947145,37.450485,-17.000000,-29.000000,106.090217);
	CreateDynamicObject(1655,-1722.080688,0.716551,37.691326,-26.000000,-28.000000,85.166862);
	CreateDynamicObject(1655,-1715.727783,-1.526445,39.105354,-40.000000,-47.000000,33.803112);
	CreateDynamicObject(1655,-1709.353515,-7.496567,43.448673,13.000000,35.000000,238.989303);
	CreateDynamicObject(5500,-1684.312622,136.258331,40.317234,50.000000,360.000000,0.000000);
	CreateDynamicObject(13592, 1897.8182, -2433.5710, 22.5098, 0.0, 0.0, 0.0);
	CreateDynamicObject(13592, 1896.7965, -2440.8845, 22.5097, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1898.8053, -2426.2280, 22.4847, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1899.8500, -2418.9204, 22.5329, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1900.8741, -2412.1902, 22.5156, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1901.9164, -2404.8066, 22.5097, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1903.0034, -2397.4102, 22.5097, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1904.1133, -2390.0610, 22.5024, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1905.1808, -2382.9067, 22.4990, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1906.2250, -2375.9580, 22.5000, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1907.2742, -2368.9126, 22.4925, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1908.3317, -2361.7639, 22.4850, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1909.4431, -2354.4390, 22.4965, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1910.5336, -2347.0840, 22.4839, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1911.6005, -2339.8948, 22.4717, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1912.6567, -2332.8264, 22.4647, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1913.7457, -2325.4932, 22.4529, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1914.8424, -2318.3108, 22.4387, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13592, 1915.9572, -2310.9404, 22.4404, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(1633, 1926.2206, -2310.0686, 13.5972, 0.0000, 0.0000, 263.7430);
	CreateDynamicObject(1633, 1926.7015, -2305.9480, 13.5972, 0.0000, 0.0000, 263.7430);
	CreateDynamicObject(971, 1944.2140, -2309.3572, 18.3418, 289.5262, 1.7189, 265.4620);
	CreateDynamicObject(971, 1950.1670, -2310.0176, 20.4668, 289.5262, 1.7189, 265.4620);
	CreateDynamicObject(971, 1956.7354, -2310.7217, 22.8366, 289.5262, 1.7189, 265.4620);
	CreateDynamicObject(971, 1963.6230, -2311.4866, 24.0771, 271.4780, 0.8594, 264.6025);
	CreateDynamicObject(971, 1970.4226, -2312.1829, 25.3031, 289.5262, 1.7189, 265.4620);
	CreateDynamicObject(3997, 2053.9277, -2316.8267, 26.5086, 0.0000, 0.0000, 353.9839);
	CreateDynamicObject(3279, 1965.3022, -2330.8801, 29.4717, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(1465, 1968.3535, -2334.3503, 28.6115, 0.0000, 0.0000, 269.7591);
	CreateDynamicObject(969, 1962.3265, -2332.6516, 46.3417, 91.1003, 4.2972, 176.9399);
	CreateDynamicObject	(969, 1953.5040, -2332.8560, 46.3667, 91.1003, 4.2972, 176.9399);
	CreateDynamicObject(1633, 1942.0563, -2331.4775, 46.7251, 352.2651, 1.7189, 92.7152);
	CreateDynamicObject(1633, 1934.0547, -2331.8418, 46.0141, 329.9197, 0.8594, 92.7152);
	CreateDynamicObject(971, 1927.6216, -2332.1152, 44.7489, 282.6507, 87.3514, 271.1651);
	CreateDynamicObject(971, 1919.3566, -2332.6931, 42.8603, 282.6507, 87.3514, 271.1651);
	CreateDynamicObject(971, 1911.6375, -2333.4136, 41.6732, 265.4620, 87.3514, 170.6107);
	CreateDynamicObject(971, 1910.6332, -2342.0190, 40.1421, 254.2893, 87.3514, 170.6107);
	CreateDynamicObject(971, 1909.6877, -2350.1594, 37.1573, 244.8355, 87.3514, 170.6107);
	CreateDynamicObject(971, 1908.8835, -2357.1523, 34.9197, 257.7270, 87.3514, 170.6107);
	CreateDynamicObject(971, 1973.2617, -2334.1721, 28.3035, 286.9479, 87.3514, 87.2444);
	CreateDynamicObject(1634, 1897.6360, -2437.7571, 34.8717, 0.0000, 0.0000, 170.9239);
	CreateDynamicObject(1634, 1896.6036, -2443.3538, 38.5989, 16.3293, 1.7189, 169.2049);
	CreateDynamicObject(16071, 1893.0171, -2351.7639, 36.8587, 350.5462, 352.2651, 45.4463);
	CreateDynamicObject(1683, 2051.7727, -2303.7031, 32.8112, 0.0000, 0.8594, 215.6146);
	CreateDynamicObject(16302, 2102.0808, -2355.7937, 32.8432, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(18367, 1925.7238, -2335.5627, 43.8907, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(18367, 1925.7201, -2366.3230, 47.3113, 359.1406, 0.0000, 0.0000);
	CreateDynamicObject(18367, 1925.6399, -2394.6812, 50.9064, 359.1406, 0.0000, 0.0000);
	CreateDynamicObject(18367, 1924.8998, -2424.5137, 54.2307, 359.1406, 0.0000, 93.5746);
	CreateDynamicObject(18367, 1952.4341, -2422.8840, 57.6669, 359.1406, 0.0000, 93.5746);
	CreateDynamicObject(1633, 1987.3795, -2420.5957, 63.8268, 11.1727, 0.0000, 275.6719);
	CreateDynamicObject(13641, 1989.7424, -2420.4219, 65.5389, 0.0000, 351.4056, 4.2972);
	CreateDynamicObject	(13592, 2098.7864, -2301.3689, 36.4541, 0.0000, 0.0000, 256.8676);
	CreateDynamicObject(13643, 2026.4196, -2334.3298, 27.8046, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13647, 2021.9780, -2350.7815, 26.5045, 0.0000, 0.0000, 353.9839);
	CreateDynamicObject(13647, 2060.3721, -2354.3931, 26.5045, 0.0000, 0.0000, 175.2211);
	CreateDynamicObject(18569, 2089.9187, -2327.9399, 27.8346, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(1697, 2031.3932, -2297.0747, 27.7354, 0.0000, 0.0000, 47.2690);
	CreateDynamicObject(1697, 2034.2371, -2299.6821, 30.1443, 0.0000, 0.0000, 47.2690);
	CreateDynamicObject(3743, 2036.4727, -2378.0413, 30.4176, 0.0000, 0.0000, 355.7028);
	CreateDynamicObject(13638, 2029.7020, -2389.5654, 35.6687, 0.0000, 0.0000, 85.8398);
	CreateDynamicObject(13638, 2029.8702, -2382.4480, 43.7496, 0.0000, 0.0000, 267.0774);
	CreateDynamicObject(13638, 2029.5970, -2389.3267, 51.8361, 0.0000, 0.0000, 86.5961);
	CreateDynamicObject(13638, 2029.4900, -2382.3496, 59.8839, 0.0000, 0.0000, 268.6931);
	CreateDynamicObject(4007, 1556.7688, -2542.1260, 42.1261, 0.0000, 0.0000, 12.8916);
	CreateDynamicObject(18367, 1590.8649, -2565.2488, 6.4933, 342.8113, 0.0000, 251.7110);
	CreateDynamicObject(18367, 1555.8951, -2556.5078, 18.8201, 342.8113, 0.0000, 292.0009);
	CreateDynamicObject(18367, 1529.3217, -2568.6726, 31.0444, 358.2811, 359.1406, 200.9009);
	CreateDynamicObject(18367, 1516.9598, -2540.3396, 35.3451, 358.2811, 359.1406, 132.1466);
	CreateDynamicObject(18367, 1539.5216, -2519.8008, 39.6802, 358.2811, 359.1406, 132.1466);
	CreateDynamicObject(18367, 1561.6139, -2498.7104, 43.8284, 358.2811, 359.1406, 41.9060);
	CreateDynamicObject(18367, 1581.7650, -2519.0686, 47.7423, 358.2811, 359.1406, 354.6371);
	CreateDynamicObject(18367, 1579.3627, -2547.8008, 51.6451, 358.2811, 359.1406, 298.7738);
	CreateDynamicObject(18367, 1553.2212, -2562.1306, 55.8735, 358.2811, 359.1406, 268.6937);
	CreateDynamicObject(18367, 1522.7363, -2562.3430, 59.9381, 358.2811, 359.1406, 165.5615);
	CreateDynamicObject(18367, 1529.9294, -2534.2656, 64.0353, 358.2811, 359.1406, 152.6703);
	CreateDynamicObject(18367, 1542.7040, -2508.7483, 67.9012, 358.2811, 359.1406, 96.8064);
	CreateDynamicObject(18367, 1573.1494, -2503.7163, 71.9316, 358.2811, 359.1406, 7.4244);
	CreateDynamicObject(18367, 1577.1191, -2532.2781, 76.0076, 358.2811, 359.1406, 351.9546);
	CreateDynamicObject(18367, 1573.6512, -2561.5747, 80.0185, 358.2811, 359.1406, 274.6045);
	CreateDynamicObject(18367, 1542.9602, -2565.4143, 84.2364, 358.2811, 359.1406, 197.2544);
	CreateDynamicObject(18367, 1533.9576, -2537.1646, 88.4790, 358.2811, 359.1406, 162.8766);
	CreateDynamicObject(18367, 1541.5863, -2508.1682, 92.6726, 358.2811, 359.1406, 94.1209);
	CreateDynamicObject(18367, 1571.2469, -2504.5408, 96.5320, 358.2811, 359.1406, 8.1764);
	CreateDynamicObject(18367, 1575.3285, -2534.3848, 100.8060, 358.2811, 359.1406, 355.2847);
	CreateDynamicObject(18367, 1573.1521, -2563.7478, 104.9507, 358.2811, 359.1406, 269.3402);
	CreateDynamicObject(18367, 1544.4730, -2564.3503, 108.9064, 358.2811, 359.1406, 217.7739);
	CreateDynamicObject(18367, 1525.6320, -2541.8169, 112.9825, 358.2811, 359.1406, 144.7210);
	CreateDynamicObject(18367, 1541.9326, -2518.2720, 117.0135, 358.2811, 359.1406, 114.6405);
	CreateDynamicObject(18367, 1568.6726, -2505.1038, 120.9658, 358.2811, 359.1406, 11.5070);
	CreateDynamicObject(18367, 1575.5369, -2533.5679, 125.0195, 11.1727, 359.1406, 298.4541);
	CreateDynamicObject(3996, 1493.7701, -2561.0479, 109.0439, 0.0000, 342.8113, 13.7510);
	CreateDynamicObject(3996, 1398.8179, -2584.2695, 78.7797, 0.0000, 342.8113, 13.7510);
	CreateDynamicObject(3996, 1303.5618, -2607.5720, 48.4273, 0.0000, 342.8113, 13.7510);
	CreateDynamicObject(3996, 1206.0140, -2631.4473, 31.6450, 0.0000, 358.2811, 13.7510);
	CreateDynamicObject(3996, 1136.7521, -2605.1145, 29.8918, 0.0000, 0.0000, 283.5101);
	CreateDynamicObject(3996, 1163.2472, -2536.9592, 29.7693, 0.0000, 0.0000, 193.2692);
	CreateDynamicObject(3996, 1261.7574, -2513.7222, 29.7718, 0.0000, 0.0000, 193.2692);
	CreateDynamicObject(3996, 1362.0685, -2490.0601, 29.7743, 0.0000, 0.0000, 193.2692);
	CreateDynamicObject(13592, 1409.0919, -2475.0354, 39.4462, 0.0000, 0.0000, 19.7670);
	CreateDynamicObject(13592, 1455.6934, -2569.7771, 107.3470, 358.2811, 14.6104, 196.7070);
	CreateDynamicObject(1633, 1419.4629, -2469.5364, 31.6597, 13.7510, 0.0000, 285.2290);
	CreateDynamicObject(1633, 1418.5259, -2465.9915, 31.6519, 13.7510, 0.0000, 285.2290);
	CreateDynamicObject(969, 1139.3518, -2657.2078, 30.1446, 0.0000, 0.0000, 12.8916);
	CreateDynamicObject(969, 1147.9048, -2655.2471, 30.1555, 0.0000, 0.0000, 12.8916);
	CreateDynamicObject(969, 1156.2504, -2653.3198, 30.1696, 0.0000, 0.0000, 12.8916);
	CreateDynamicObject(969, 1137.3132, -2648.7317, 30.1446, 0.0000, 0.0000, 282.6507);
	CreateDynamicObject(969, 1135.3945, -2640.1606, 30.1446, 0.0000, 0.0000, 282.6507);
	CreateDynamicObject(969, 1133.4728, -2631.5229, 30.1446, 0.0000, 0.0000, 282.6507);
	CreateDynamicObject(969, 1162.4334, -2631.8181, 30.4155, 0.0000, 0.0000, 194.9881);
	CreateDynamicObject(969, 1153.9568, -2633.9448, 30.1433, 0.0000, 0.0000, 104.7473);
	CreateDynamicObject(1632, 1881.4158, -2543.1692, 18.0948, 17.1887, 0.0000, 269.7591);
	CreateDynamicObject(1632, 1885.2377, -2543.2114, 21.8529, 26.6425, 0.0000, 269.7591);
	CreateDynamicObject(16111, 1893.0697, -2635.8401, 15.1310, 359.1406, 0.0000, 304.1366);
	CreateDynamicObject(16111, 1901.9874, -2641.2473, 15.5761, 359.1406, 0.0000, 304.1366);
	CreateDynamicObject(16111, 1925.7902, -2649.9004, 20.9351, 359.1406, 0.0000, 274.9158);
	CreateDynamicObject(16111, 1853.0209, -2631.8394, 16.7851, 359.1406, 0.0000, 317.8876);
	CreateDynamicObject(16111, 1822.1106, -2636.3999, 17.7851, 359.1406, 0.0000, 315.3093);
	CreateDynamicObject(16111, 1789.1711, -2634.6377, 17.1851, 359.1406, 0.0000, 341.0924);
	CreateDynamicObject(7073, 1851.5056, -2625.7087, 30.8136, 0.0000, 0.0000, 274.0564);
	CreateDynamicObject(7392, 1819.4919, -2626.8633, 22.7669, 0.0000, 0.0000, 265.4620);
	CreateDynamicObject(16480, 1837.0343, -2626.4407, 18.5601, 0.0000, 0.0000, 140.8435);
	CreateDynamicObject(17565, 1791.3636, -2489.1072, 15.0634, 0.0000, 0.0000, 269.7591);
	CreateDynamicObject(18451, 1909.4324, -2493.7080, 13.0515, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13641, 1969.4808, -2587.1865, 14.2661, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13639, 1773.1559, -2552.5862, 12.5652, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13639, 1773.1584, -2568.3096, 12.5401, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13604, 1602.0161, -2600.4763, 14.2549, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13636, 1486.4277, -2582.7788, 14.8273, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(13590, 1524.9982, -2485.0862, 13.7805, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject(12956, 1671.5946, -2506.4924, 15.8829, 0.0000, 0.0000, 269.7591);
	CreateDynamicObject(6052, 1720.4082, -2426.5120, 15.3023, 0.0000, 0.0000, 0.0000);
	CreateDynamicObject	(8040, 2100.0337, -2563.0029, 13.3173, 0.0000, 0.0000, 90.2409);
	CreateDynamicObject(8841, 2099.3787, -2562.1497, 15.8779, 0.0000, 0.0000, 270.6186);
	CreateDynamicObject(4641, 2108.2886, -2524.7239, 14.2482, 0.0000, 0.0000, 267.0773);
	CreateDynamicObject(4641, 2091.8601, -2524.8167, 14.2559, 0.0000, 0.0000, 86.5960);
	CreateDynamicObject(1633, 2057.4597, -2560.2500, 13.8472, 0.0000, 0.0000, 269.7591);
	CreateDynamicObject(1633, 2064.3909, -2560.3274, 17.6990, 22.3454, 0.0000, 269.7591);
	CreateDynamicObject(971,-2029.763062,-124.249550,37.757751,0.0,0.0,0.0);
	CreateDynamicObject(971,-2034.172485,-119.812218,37.760315,0.0,0.0,269.7591);
	CreateDynamicObject(971,-2025.529541,-119.856903,37.748856,0.0,0.0,272.3375);
	CreateDynamicObject(969,-2034.059082,-120.240891,37.994469,0.0,0.0,0.0);
	CreateDynamicObject(969,-2034.200195,-123.931404,41.288780,269.7592,0.0,359.1406);
	CreateDynamicObject(13648,-2091.278564,-124.417061,34.266281,0.0,0.0,0.0);
	CreateDynamicObject(13648,-2090.648193,-124.404160,34.266281,0.0,0.0,0.0);
	CreateDynamicObject(13647,-2091.029541,-171.607254,34.316284,0.0,0.0,269.7591);
	CreateDynamicObject(13641,-2017.510498,-140.976227,35.459076,0.0,0.0,267.1808);
	CreateDynamicObject(13641,-2017.711914,-166.224121,35.339516,0.0,0.0,87.5587);
	CreateDynamicObject	(13638,-2027.937134,-271.354767,36.417580,0.0,0.0,0.0);
	CreateDynamicObject(969,-2034.719727,-280.712860,40.729832,0.0,0.0,0.0);
	CreateDynamicObject(971,-2033.512817,-275.963165,37.890167,0.0,0.0,268.8997);
	CreateDynamicObject(971,-2033.345337,-267.078613,37.890167,0.0,0.0,268.8997);
	CreateDynamicObject(13666,-2017.970581,-257.768890,39.150566,0.0,0.0,6.0161);
	CreateDynamicObject(13666,-2021.652832,-257.602570,39.150566,0.0,0.0,6.0161);
	CreateDynamicObject(13666,-2025.379028,-257.444092,39.149769,0.0,0.0,6.0161);
	CreateDynamicObject(13666,-2029.010864,-257.287903,39.140961,0.0,0.0,6.0161);
	CreateDynamicObject(13592,-2048.899902,-207.144394,44.065914,0.0,0.0,94.4342);
	CreateDynamicObject(1503,-2030.108276,-264.293335,42.100739,0.0,0.0,0.0);
	CreateDynamicObject(969,-2018.697144,-245.763580,43.856308,269.7591,0.0,267.1808);
	CreateDynamicObject(969,-2011.873779,-252.873688,40.754837,0.0,0.0,269.7591);
	CreateDynamicObject(969,-2011.930908,-261.741760,40.779839,0.0,0.0,269.7591);
	CreateDynamicObject(1245,-2012.014526,-255.663452,35.807884,0.0,0.0,274.0563);
	CreateDynamicObject(969,-2011.853149,-252.607895,40.729836,0.0,0.0,90.2408);
	CreateDynamicObject(971,-2020.831543,-243.861923,43.847054,90.2409,0.0,300.6988);
	CreateDynamicObject(971,-2025.311768,-236.276016,43.844215,90.2409,0.0,300.6988);
	CreateDynamicObject(1632,-2027.354370,-233.358002,45.331715,9.4538,0.0,30.0803);
	CreateDynamicObject(971,-2035.179932,-220.646255,51.655159,270.6186,359.1406,304.1366);
	CreateDynamicObject(971,-2039.637939,-214.375885,53.344780,118.6022,2.5783,32.6586);
	CreateDynamicObject(969,-2043.155273,-213.700226,55.292805,91.1003,0.8594,124.6184);
	CreateDynamicObject(3279,-2045.254150,-205.034012,55.192551,0.0,0.0,339.3735);
	CreateDynamicObject(1633,-2047.360840,-212.829315,71.570908,341.0924,0.0,160.6106);
	CreateDynamicObject(1633,-2049.487305,-218.707428,71.234428,341.0924,0.0,160.6106);
	CreateDynamicObject(1634,-2051.833252,-225.535767,72.295769,0.0,0.0,159.7512);
	CreateDynamicObject(18262,-2042.169312,-220.294876,72.434242,358.2811,5.1566,81.6464);
	CreateDynamicObject(18367,-2038.766357,-219.659607,71.949776,0.0,0.0,0.0);
	CreateDynamicObject(18367,-2039.419922,-249.538071,75.039330,359.1406,0.0,268.0403);
	CreateDynamicObject(18367,-2069.020020,-248.742126,78.449776,0.0,0.0,181.2369);
	CreateDynamicObject(18367,-2069.920898,-218.865128,81.433090,0.0,359.1406,88.418);
	CreateDynamicObject(18367,-2040.428467,-220.067886,84.449341,0.0,0.0,0.0);
	CreateDynamicObject(18262,-2046.262573,-249.699524,88.739952,0.0,0.0,83.3653);
	CreateDynamicObject(3279,-2048.043701,-246.104614,88.021889,0.0,0.0,0.0);
	CreateDynamicObject(1218,-2048.145508,-246.172028,104.591705,0.0,0.0,0.0);
	CreateDynamicObject(969,-2042.782227,-202.841507,72.112595,270.6186,0.0,69.6144);
	CreateDynamicObject(18367,-2041.389160,-194.902969,72.127640,37.8152,5.1566,159.8555);
	CreateDynamicObject(18262,-2036.823853,-171.200912,56.720722,0.0,0.0,75.6304);
	CreateDynamicObject(3270,-2033.162964,-159.527084,33.662197,0.0,0.0,0.0);
	CreateDynamicObject(3269,-2056.233154,-160.401627,33.193459,0.0,0.0,304.9961);
	CreateDynamicObject(3363,-2048.090576,-142.612473,34.155655,0.0,0.0,0.0);
	CreateDynamicObject(3364,-2057.784424,-107.956017,34.476334,0.0,0.0,0.0);
	CreateDynamicObject(12956,-2058.442383,-246.159454,35.873535,0.0,0.0,0.0);
	CreateDynamicObject(13590,-2020.764038,-230.338760,34.946125,0.0,0.0,0.0);
	CreateDynamicObject(13604,-2079.216553,-219.619797,35.778316,0.0,0.0,0.0);
	CreateDynamicObject(13636,-2068.714600,-191.194214,36.150677,0.0,0.0,0.0);
	CreateDynamicObject(3279,-2049.909668,-106.821388,34.091446,0.0,0.0,0.0);
	CreateDynamicObject(3279,-2091.546875,-275.471954,34.120911,0.0,0.0,0.0);
	CreateDynamicObject(971,-2095.781738,-216.648987,44.307823,0.0,0.0,90.2409);
	CreateDynamicObject	(971,-2011.837402,-239.783264,44.057869,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2015.887329,-257.513550,46.054466,0.0,0.0,258.5865);
	CreateDynamicObject(971,-2091.330078,-280.941498,44.232819,0.0,0.0,0.0);
	CreateDynamicObject(971,-2091.324707,-280.938171,51.393135,0.0,0.0,0.0);
	CreateDynamicObject(971,-2095.792480,-276.559265,44.207863,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2095.785400,-276.518860,51.358208,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2095.842529,-267.747314,44.307823,0.0,0.0,269.7591);
	CreateDynamicObject(971,-2082.695557,-280.883087,44.312592,0.0,0.0,0.0);
	CreateDynamicObject(971,-2095.829590,-174.308350,44.328720,0.0,0.0,271.478);
	CreateDynamicObject(971,-2096.033203,-165.487137,44.332825,0.0,0.0,271.478);
	CreateDynamicObject(971,-2096.304443,-156.670258,44.332886,0.0,0.0,271.478);
	CreateDynamicObject	(971,-2095.623779,-137.767456,44.307899,0.0,0.0,269.7591);
	CreateDynamicObject(971,-2095.562012,-128.925003,44.332855,0.0,0.0,269.7591);
	CreateDynamicObject(971,-2095.552979,-120.086128,44.357857,0.0,0.0,269.7591);
	CreateDynamicObject(971,-2095.778076,-111.679253,44.307884,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2095.861328,-102.843391,44.307854,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2091.427979,-103.389999,44.316978,0.0,0.0,179.5181);
	CreateDynamicObject(971,-2082.551025,-103.364998,44.251526,0.0,0.0,179.5181);
	CreateDynamicObject(971,-2073.788086,-103.431046,44.280823,0.0,0.0,0.0);
	CreateDynamicObject(971,-2065.115967,-103.389908,44.358833,0.0,0.0,0.0);
	CreateDynamicObject(971,-2052.744141,-102.656273,41.456863,0.0,0.0,0.0);
	CreateDynamicObject(971,-2052.687744,-102.647896,48.660263,0.0,0.0,0.0);
	CreateDynamicObject(971,-2045.562500,-102.590111,41.476204,0.0,0.0,0.8594);
	CreateDynamicObject(971,-2059.413330,-103.415001,44.337914,0.0,0.0,0.0);
	CreateDynamicObject(971,-2045.552368,-102.562973,48.579254,0.0,0.0,0.8594);
	CreateDynamicObject(971,-2011.691772,-147.416718,44.332825,0.0,0.0,270.6186);
	CreateDynamicObject(971,-2011.752686,-159.865814,44.307831,0.0,0.0,89.3814);
	CreateDynamicObject(616,-2053.137207,-114.562286,34.284336,0.0,0.0,0.0);
	CreateDynamicObject(618,-2048.662354,-115.591202,34.585541,0.0,0.0,0.0);
	CreateDynamicObject(617,-2086.480957,-275.459412,34.314148,0.0,0.0,0.0);
	CreateDynamicObject(616,-2090.233887,-269.792480,34.314148,0.0,0.0,0.0);
	//CASTLE http://forum.sa-mp.com/index.php?topic=34198.0
	CreateDynamicObject(8500,1666.138550,-2767.152588,5.701475,359.1406,359.1406,297.2611);
	CreateDynamicObject(8881,1694.141113,-2837.312256,32.334969,0.0,0.0,117.7429);
	CreateDynamicObject(8882,1703.853394,-2885.523682,32.395432,0.0,0.0,117.7428);
	CreateDynamicObject(9078,1651.510010,-2924.151367,29.328777,7.7349,15.4699,83.3654);
	CreateDynamicObject(9078,1669.489014,-2964.544189,45.725800,22.3454,14.6104,165.8713);
	CreateDynamicObject(9078,1717.401245,-2950.165527,42.945137,13.751,337.6546,254.2893);
	CreateDynamicObject(8881,1747.313843,-2851.688477,28.072512,0.0,0.0,32.6586);
	CreateDynamicObject(969,1630.374023,-2941.736572,33.103256,0.0,16.3293,57.5822);
	CreateDynamicObject(969,1638.991577,-2953.422119,34.263676,14.6104,0.0,146.9636);
	CreateDynamicObject(969,1684.444702,-2986.376953,53.638187,14.6104,23.2048,138.3691);
	CreateDynamicObject(969,1691.235840,-2985.494629,54.441494,341.9518,13.751,53.2849);
	CreateDynamicObject(969,1737.188477,-2928.063232,30.231504,352.2651,337.6546,312.731);
	CreateDynamicObject(969,1742.163452,-2939.927002,36.454067,17.1887,347.1084,225.0684);
	CreateDynamicObject(1245,1694.498413,-2746.201904,6.892519,0.0,0.0,86.8031);
	CreateDynamicObject(1632,1685.070068,-2788.052734,7.894250,20.6265,0.0,181.3412);
	CreateDynamicObject(1634,1683.333984,-2835.807129,17.962843,8.5944,0.0,180.4818);
	CreateDynamicObject(1633,1683.129639,-2841.760498,23.845125,29.2208,2.5783,177.0441);
	CreateDynamicObject(1633,1682.806763,-2846.122314,29.611897,42.9718,2.5783,177.0441);
	CreateDynamicObject(1633,1682.546509,-2849.273438,36.506714,55.0039,2.5783,177.0441);
	CreateDynamicObject(1634,1688.755005,-2836.134033,17.837845,3.4377,0.0,183.0601);
	CreateDynamicObject(1633,1679.938721,-2868.975830,22.966045,16.3293,0.0,270.6185);
	CreateDynamicObject(1633,1685.300781,-2868.910889,26.805128,23.2048,0.0,270.6185);
	CreateDynamicObject(13666,1711.910400,-2868.020020,33.894493,23.2048,357.4217,277.4941);
	CreateDynamicObject(1633,1709.405396,-2870.110840,28.289490,353.1245,0.0,270.6185);
	CreateDynamicObject(13592,1721.513916,-2869.596924,29.430567,359.1406,348.8273,278.3535);
	CreateDynamicObject(1634,1713.814087,-2895.446045,18.601534,21.4859,0.0,90.2409);
	CreateDynamicObject(1245,1684.090088,-2814.326416,15.077228,0.0,3.4377,85.9437);
	CreateDynamicObject(13592,1714.621338,-2815.113281,32.757137,292.1045,21.4859,257.7271);
	CreateDynamicObject(1633,1702.678833,-2820.186523,23.797922,5.1566,42.9718,0.0);
	CreateDynamicObject(1633,1701.276489,-2827.448975,21.661747,5.1566,36.9558,0.0);
	CreateDynamicObject(1633,1700.199463,-2834.947021,19.833044,357.4217,32.6586,0.0);
	CreateDynamicObject(1633,1701.967529,-2818.213867,25.926388,5.1566,67.0361,339.3735);
	CreateDynamicObject(1633,1699.978882,-2837.394043,19.882034,343.6707,32.6586,0.0);
	CreateDynamicObject(1633,1699.210815,-2843.160645,20.210768,343.6707,30.0803,0.0);
	CreateDynamicObject(13592,1712.525757,-2813.615479,39.752396,292.1045,21.4859,257.7271);
	CreateDynamicObject(13592,1710.421875,-2812.223145,46.561020,292.1045,21.4859,257.7271);
	CreateDynamicObject(8620,1718.120972,-2784.669678,49.539291,315.3093,357.4217,316.1687);
	CreateDynamicObject(9078,1685.957275,-2780.481445,44.426659,0.0,0.0,0.0);
	CreateDynamicObject(1634,1654.711182,-2765.123779,40.970161,0.0,0.0,61.8794);
	CreateDynamicObject(1634,1725.894775,-2902.229248,21.430077,3.4377,81.6465,105.7107);
	CreateDynamicObject(13666,1704.961670,-2958.099121,47.785187,345.3896,339.3735,318.747);
	CreateDynamicObject(13647,1724.448975,-2930.157471,25.510275,0.0,0.0,320.4659);
	CreateDynamicObject(13641,1732.361572,-2855.458740,21.009214,0.0,0.0,0.0);
	CreateDynamicObject(18367,1769.311401,-2847.216797,1.235021,328.2008,0.0,269.7591);
	CreateDynamicObject(18451,1747.547974,-2884.987061,14.086502,20.6265,0.0,97.9758);
	CreateDynamicObject(13638,1765.619507,-2858.942627,14.671503,0.8594,0.0,184.6748);
	CreateDynamicObject(13638,1762.110229,-2862.743408,19.025969,2.5783,1.7189,94.4341);
	CreateDynamicObject(13638,1758.688843,-2860.442627,22.771498,0.0,0.0,2.5783);
	CreateDynamicObject(13593,1755.591553,-2850.659668,29.078421,0.0,0.0,0.0);
	CreateDynamicObject(13590,1643.945313,-2866.503662,21.741594,0.0,0.0,87.5586);
	CreateDynamicObject(13593,1625.087646,-2867.178955,24.285576,347.1084,357.4217,168.4497);
	CreateDynamicObject(13593,1624.466431,-2871.009521,23.849463,359.1406,2.5783,348.8273);
	CreateDynamicObject(1633,1645.542236,-2874.865479,22.632210,0.0,0.0,268.8997);
	CreateDynamicObject(1633,1650.532227,-2921.100098,28.413399,48.1285,0.0,146.0002);
	Stunt = CreateMenu("Teleport Places", 1, 50.0, 180.0, 200.0, 200.0);
    AddMenuItem(Stunt, 0, "Los Santos Airport");
    AddMenuItem(Stunt, 0, "San Fierro School Yard");
    AddMenuItem(Stunt, 0, "Stunt Castle");
    AddMenuItem(Stunt, 0, "Stunt Park");
    AddMenuItem(Stunt, 0, "LV Airfight Airport");
	}
	return 1;
}
public OnGameModeExit()
{
    KillTimer(PingTimer);
	KillTimer(InvisTimer);
	KillTimer(GodTimer);
	#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;
}

//------------------------------------------------------------------------------
public OnPlayerConnect(playerid)
{
	MyDeaths[playerid] = 0;
	MyKills[playerid] = 0;
	IsPlayerInJail[playerid] = 0;
	LAdmin[playerid] = 0;
	LoggedIn[playerid] = 0;
	God[playerid] = 0;
	TimesSpawned[playerid] = 0;
	IsPlayerMuted[playerid] = 0;
	Invis[playerid] = 0;
	DoorsLocked[playerid] = 0;
	//---------------------------------
	new PlayerName[30], string[256], ip[200];	GetPlayerName(playerid, PlayerName, 30);
	format(string,256,"*** %s has joined the server.",PlayerName);
	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && playerid != i) SendClientMessage(i,COLOR_GREY,string);
	//---------------------------------
	GetPlayerIp(playerid,ip,sizeof(ip));
	format(string,sizeof(string),"Name: %s id: %d ip: %s ping: %d",PlayerName,playerid,ip,GetPlayerPing(playerid));
	SaveToFile("ConnectLog",string);
	//---------------------------------
//    format(str, sizeof(str), "users/%s.sav", PlayerName);
	if (!udb_Exists(PlayerName2(playerid)))
	  {
		SendClientMessage(playerid,COLOR_BLUE, "ACCOUNT: Type /register [password] to create an account");
		return 1;
	}
	else
	{
		new file[256],name[24]; GetPlayerName(playerid,name,24); format(file,256,"/users/%s.sav",udb_encode(name));
		new tmp[MAX_STRING],tmp2[256]; GetPlayerIp(playerid,tmp,50); tmp2 = dini_Get(file,"ip");
		if(!strcmp(tmp,tmp2,true)) {
		SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: You have been automatically logged in");
        GivePlayerMoney(playerid,dUserINT(PlayerName2(playerid)).("money")-GetPlayerMoney(playerid));
        MyDeaths[playerid] = (dUserINT(PlayerName2(playerid)).("deaths"));
        MyKills[playerid] = (dUserINT(PlayerName2(playerid)).("kills"));
        LAdmin[playerid] = (dUserINT(PlayerName2(playerid)).("level"));
        dUserSetINT(PlayerName2(playerid)).("LoggedIn",1);
		LoggedIn[playerid] = 1;
		return 1;
	    } else {
		SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: This nickname is registed!  You can now login by typing /login <password>");
	    return 1;   }
	}
}

//=========================[PlayerName2]========================================
stock PlayerName2(playerid) {
  new name[255];
  GetPlayerName(playerid, name, 255);
  return name;
}
//====================== [REGISTER  &  LOGIN] ==================================
   dcmd_register(playerid,params[]) {

    if (LoggedIn[playerid] == 1) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: You are already registered and logged in.");
    if (udb_Exists(PlayerName2(playerid))) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: This account already exists, please use '/login password'.");
    if (strlen(params)==0) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: Correct usage: '/register password'");
    if (udb_Create(PlayerName2(playerid),params)) {

    new file[256],name[24]; GetPlayerName(playerid,name,24); format(file,256,"/users/%s.sav",udb_encode(name));
    new tmp3[100]; GetPlayerIp(playerid,tmp3,100);	dini_Set(file,"ip",tmp3);
    dini_Set(file,"password",params);
    dUserSetINT(PlayerName2(playerid)).("registered",1);
   	new strdate[20], year,month,day;	getdate(year, month, day);
	format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
	dini_Set(file,"RegisteredDate",strdate);
	dUserSetINT(PlayerName2(playerid)).("LoggedIn",1);
	dUserSetINT(PlayerName2(playerid)).("level",0);
    dUserSetINT(PlayerName2(playerid)).("LastOn",0);
    LoggedIn[playerid] = 1;
    SendClientMessage(playerid, COLOR_GREEN, "ACCOUNT: You have been automaticaly logged in"); PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
    if(Spawned[playerid] == 1)  {   TogglePlayerControllable(playerid,true); }
	return 1;   }
    return true;
 }
//==============================================================================
  dcmd_login(playerid,params[]) {

    if (LoggedIn[playerid] == 1) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: You are already logged in.");
    if (!udb_Exists(PlayerName2(playerid))) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: Account doesn't exist, please use '/register password'.");
    if (strlen(params)==0) return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: Correct usage: '/login password'");
    if (udb_CheckLogin(PlayerName2(playerid),params)) {  // Login was correct

       GivePlayerMoney(playerid,dUserINT(PlayerName2(playerid)).("money")-GetPlayerMoney(playerid));
       MyDeaths[playerid] = (dUserINT(PlayerName2(playerid)).("deaths"));
       MyKills[playerid] = (dUserINT(PlayerName2(playerid)).("kills"));
       LAdmin[playerid] = (dUserINT(PlayerName2(playerid)).("level"));

	   new file[256],name[24]; GetPlayerName(playerid,name,24); format(file,256,"/users/%s.sav",udb_encode(name)); // users
       new tmp3[100]; GetPlayerIp(playerid,tmp3,100);	dini_Set(file,"ip",tmp3);

       if(Spawned[playerid] == 1)  {   TogglePlayerControllable(playerid,true); }
       LoggedIn[playerid] = 1;  PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
       dUserSetINT(PlayerName2(playerid)).("LoggedIn",1);

       return SendClientMessage(playerid,COLOR_GREEN,"ACCOUNT: Successfully Logged In");
    }
    return SendClientMessage(playerid,COLOR_RED,"ACCOUNT: Login failed! Incorrect Password");
 }

//==============================================================================
  dcmd_logout(playerid,params[]) {
  #pragma unused params
  if (LoggedIn[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"You are not logged in.");

  //if (LoggedIn[playerid] == 1 && LAdmin[playerid] >= 1)	{
  //LoggedIn[playerid] = 0;   LAdmin[playerid] = 0;   }
  return SendClientMessage(playerid,COLOR_GREEN,"This command does nothing");

  }

public OnPlayerPrivmsg(playerid, recieverid, text[])
{
	if(READ_PMS == 1 && LAdmin[playerid] != MAX_ADMIN_LEVEL)    {
    new string[64],playername[MAX_PLAYER_NAME],recievername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, sizeof(playername));  GetPlayerName(recieverid, recievername, sizeof(recievername));
	format(string, sizeof(string), "[PM: %s To %s] %s", playername,recievername, text);
	for (new a = 0; a < MAX_PLAYERS; a++)
	if (IsPlayerConnected(a) && (LAdmin[a] >= 1) && a != playerid)
	SendClientMessage(a, COLOR_GREY, string); }

	return 1;
}
//------------------------------------------------------------------------------

public OnPlayerCommandText(playerid, cmdtext[])
{
    new cmd[256], string[256], idx;
	new adminname[MAX_PLAYER_NAME], playername[MAX_PLAYER_NAME];
	cmd = strtok(cmdtext, idx);

	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
	dcmd(scores,6,cmdtext);
	dcmd(reset,5,cmdtext);
	dcmd(help,4,cmdtext);
	dcmd(kill,4,cmdtext);
	dcmd(me,2,cmdtext);
	dcmd(stunt,5,cmdtext);
	dcmd(stunthelp,9,cmdtext);
	dcmd(login,5,cmdtext);
	dcmd(logout,6,cmdtext);
  	dcmd(register,8,cmdtext);
	dcmd(setgravity,10,cmdtext);
    dcmd(adminarea,9,cmdtext);
 	dcmd(ladmincredits,13,cmdtext);
 	dcmd(serverinfo,10,cmdtext);
    dcmd(lmenu,5,cmdtext);
    dcmd(ltele,5,cmdtext);
    dcmd(lvehicle,8,cmdtext);
    dcmd(lweapons,8,cmdtext);
    dcmd(lweather,8,cmdtext);
    dcmd(ltmenu,6,cmdtext);
    dcmd(ltime,5,cmdtext);
    dcmd(announce,8,cmdtext);
    dcmd(cm,2,cmdtext);

	if(strcmp(cmd, "/kill", true) == 0) 	{
 	SetPlayerHealth(playerid,0.0); return 1;    }

 	if(strcmp(cmd, "/lhelp", true) == 0)   {
	if(LoggedIn[playerid] && LAdmin[playerid] >= 1)	{
	SendClientMessage(playerid,COLOR_BLUE,"For admin commands type /lcommands");
	SendClientMessage(playerid,COLOR_BLUE,"There are 4 levels. Level 1 = Member||Level 2 = New Admin||Level 3 = Full Admin||Level 4 = Sever Owner");
	SendClientMessage(playerid,COLOR_BLUE,"Remember the highest level admins are immune from commands");
	} else    {
 	SendClientMessage(playerid,COLOR_GREEN, "Your commands are: report, stats, time");   }
	return 1;	}
//------------------------------------------------------------------------------
 	if(strcmp(cmd, "/lcommands", true) == 0)   {
	if(LoggedIn[playerid] && LAdmin[playerid] == 1)	{
	SendClientMessage(playerid,COLOR_BLUE,"Your Member Commands");
	SendClientMessage(playerid,COLOR_GREEN,"(1)WRITE, FLIP, FIX, LP, CARCOLOUR, LTUNE, SETMYTIME, LINKCAR"); }
	if(LAdmin[playerid] > 1) {
	SendClientMessage(playerid,COLOR_BLUE,"Your Admin Commands");
	SendClientMessage(playerid,COLOR_GREEN,"(1)WRITE, FLIP, FIX, LP, CARCOLOUR, LTUNE, SETMYTIME, LINKCAR");
	SendClientMessage(playerid,COLOR_GREEN,"(2) ANNOUNCE, (UN) LOCKCAR, DISARM, GOTO, ADMINAREA, LCAR, LBIKE, LTC, CM (giveme)");
	SendClientMessage(playerid,COLOR_GREEN,"(2) SLAP, SPEC (OFF), BURN, WARN, MUTE, UNMUTE, GIVEWEAPON, SPAWN, LSLOWMO, GETINFO, LASTON");
    SendClientMessage(playerid,COLOR_GREEN,"(2) SETCASH, SETSKIN, SETWANTED, LMENU, LTELE, LVEHICLE, SETINTERIOR, LWEAPONS, LTUNEMENU, LJETPACK, ASAY"); }
	if(LAdmin[playerid] > 2) {
	SendClientMessage(playerid,COLOR_GREEN,"(3) KICK, BAN, GOD, EXPLODE,  EJECT, LJAIL, LUNJAIL,FREEZE, UNFREEZE, LADMIN, LWEAPS, LAMMO");
    SendClientMessage(playerid,COLOR_GREEN,"(3)DUEL, COUNTDOWN, INVISIBLECAR, GETHERE, TELEPLAYER, CAR, CARHEALTH, (UN) INVIS");
    SendClientMessage(playerid,COLOR_GREEN,"(3) SETHEALTH, SETARMOUR, SETGRAVITY, SETNAME, SETTIME, SETTEMPLEVEL, SETALLWANTED, SETWORLD");
    SendClientMessage(playerid,COLOR_GREEN,"(3) LTIME, SETWEATHER, LWEATHER, HEALALL, ARMOURALL, KILLALL, DISARMALL, KICKALL, EJECTALL, SETALLWORLD"); }
	if(LAdmin[playerid] > 3) {
    SendClientMessage(playerid,COLOR_GREEN,"(4) SETLEVEL, DIE, OBJECT, PICKUP, LOADFS"); }

	if(LAdmin[playerid] < 1) {
 	SendClientMessage(playerid,COLOR_GREEN, "Your commands are: report, stats, time");   }
 	if(LAdmin[playerid] == 0 && IsPlayerAdmin(playerid)) {
 	SendClientMessage(playerid,COLOR_GREEN, "Your are rcon admin but not ladmin, type /levelme");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/colourme", true) == 0) {
	if(LAdmin[playerid] >= 4) {
	SetPlayerColor(playerid,0x2C2727AA);
	} else {
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command"); }
	return 1; }
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/ljetpack", true) == 0) {
	if(LAdmin[playerid] >= 1) {
	SetPlayerSpecialAction(playerid, 2); CMDMessageToAdmins(playerid,"LJETPACK");
	} else {
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command"); }
	return 1; }
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lslowmo", true) == 0) {
	if(LAdmin[playerid] >= 1) {
	new Float:x, Float:y, Float:z; GetPlayerPos(playerid, x, y, z); CreatePickup(1241, 4, x, y, z);
	CMDMessageToAdmins(playerid,"LSLOWMO");
	} else {
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command"); }
	return 1; }
//------------------------------------------------------------------------------
	if(strcmp(cmdtext,"/invis",true)==0)	{
	if(LAdmin[playerid] >= 4) {
	if(IsPlayerInAnyVehicle(playerid)) {
	new LVehicleID = GetPlayerVehicleID(playerid);	new int1 = GetPlayerInterior(playerid);
	LinkVehicleToInterior(LVehicleID,int1 + 1); SetPlayerColor(playerid,0xFFFFFF00);
	SendClientMessage(playerid,COLOR_RED,"[Cmd]: You Are Now Invisible"); Invis[playerid] = 1;
	CMDMessageToAdmins(playerid,"INVIS");
	} else  {
	new Float:X,Float:Y,Float:Z,Float:Angle,LVehicleID;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle); SetPlayerColor(playerid,0xFFFFFF00); new int1 = GetPlayerInterior(playerid);
    LVehicleID = CreateVehicle(457,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,LVehicleID,0); LinkVehicleToInterior(LVehicleID,int1 + 1);
	SendClientMessage(playerid,COLOR_RED,"[Cmd]: You Are Now Invisible");} Invis[playerid] = 1;
	CMDMessageToAdmins(playerid,"INVIS");
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"LEVEL ERROR!");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext,"/uninvis",true)==0)	{
	if(LAdmin[playerid] >= 4) {
		if(IsPlayerInAnyVehicle(playerid)) {
		new LVehicleID = GetPlayerVehicleID(playerid);	new int1 = GetPlayerInterior(playerid);	LinkVehicleToInterior(LVehicleID,int1); SetPlayerColor(playerid,0xAFAFAFAA);
		SendClientMessage(playerid,COLOR_RED,"[Cmd]: You Are Now Visible"); Invis[playerid] = 0;
		} else  {
		SetPlayerColor(playerid,0xAFAFAFAA); SendClientMessage(playerid,COLOR_RED,"[Cmd]: You Are Now Visible"); Invis[playerid] = 0;  }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 4 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/destroycar", true) == 0) if(LAdmin[playerid] >= 4) return EraseVehicle(GetPlayerVehicleID(playerid));

//-------------------Admin Chat-------------------------------------------------
	if(strcmp(cmd,"/asay",true)==0)	{
	if(LAdmin[playerid] >= 2) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp)) {
		SendClientMessage(playerid, COLOR_RED, "USAGE: /asay [text]");
		return 1;		}

		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string, sizeof(string), "**Admin %s: %s",adminname,cmdtext[6]);
		SendClientMessageToAll(COLOR_PINK,string);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//-------------------SPECTATE A PLAYER------------------------------------------
 	if(strcmp(cmd, "/lspec", true) == 0) {
	if(LAdmin[playerid] >= 2) {
	    new tmp[256], specplayerid;
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_RED, "USAGE: /specplayer [playerid]");
			return 1;		}

		specplayerid = strval(tmp);

		if(!IsPlayerConnected(specplayerid) || (LAdmin[specplayerid] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) ) {
      	SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;		}

		if(specplayerid == playerid) {
  			SendClientMessage(playerid, COLOR_RED, "ERROR: You cannot spectate yourself");
			return 1;
		}
		if(GetPlayerState(specplayerid) == PLAYER_STATE_SPECTATING && gSpectateID[specplayerid] != INVALID_PLAYER_ID) {
	   		SendClientMessage(playerid, COLOR_RED, "Spectate: Player spectating someone else");
	   		return 1;
		}
		if(GetPlayerState(specplayerid) != 1 && GetPlayerState(specplayerid) != 2 && GetPlayerState(specplayerid) != 3) {
 			SendClientMessage(playerid, COLOR_RED, "Spectate: Player not spawned");
	   		return 1;
		}

		StartSpectate(playerid, specplayerid);
		SendClientMessage(playerid,COLOR_BLUE,"Now Spectating");
		CMDMessageToAdmins(playerid,"LSPEC");
		GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]);
		GetPlayerFacingAngle(playerid,Pos[playerid][3]);

	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//---------------------SPECTATE A VEHICLE---------------------------------------
 	if(strcmp(cmd, "/lspecvehicle", true) == 0) {
	if(LAdmin[playerid] >= 2) {
	    new tmp[256],specvehicleid;
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_RED, "USAGE: /specvehicle [vehicleid]");
			return 1;	}

		specvehicleid = strval(tmp);

		if(specvehicleid < MAX_VEHICLES) {
			TogglePlayerSpectating(playerid, 1);
			PlayerSpectateVehicle(playerid, specvehicleid);
			gSpectateID[playerid] = specvehicleid;
			gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
			SendClientMessage(playerid,COLOR_BLUE,"Now Spectating");
			CMDMessageToAdmins(playerid,"SPEC VEHICLE");
			GetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]);
			GetPlayerFacingAngle(playerid,Pos[playerid][3]);
		}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//--------------------STOP SPECTATING-------------------------------------------
 	if(strcmp(cmd, "/lspecoff", true) == 0) {
		StopSpectate(playerid);
		SendClientMessage(playerid,COLOR_BLUE,"No Longer Spectating");
		SetTimerEx("PosAfterSpec",3000,0,"d",playerid);
		return 1;	}
//=====================[ REPORT ]===============================================
	if(strcmp(cmd, "/report", true) == 0)	{
	    new tmp[256];
     	tmp = strtok(cmdtext, idx);
 		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /report [playerid] [reason]");
			return 1;	}

		new reported;
		reported = strval(tmp);
		if(!IsPlayerConnected(reported) || reported == INVALID_PLAYER_ID || (LAdmin[reported] == MAX_ADMIN_LEVEL) || playerid == reported)	{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;		}
		tmp = strtok(cmdtext, idx);

		new length = strlen(cmdtext);
		new minlength = 14;
		if(length < minlength)	{
			SendClientMessage(playerid,COLOR_RED,"ERROR: What Is The Reason");
			return 1;	}
		new reportedname[MAX_PLAYER_NAME], reporter[MAX_PLAYER_NAME], str[100];
		GetPlayerName(reported, reportedname, sizeof(reportedname));	GetPlayerName(playerid, reporter, sizeof(reporter));
		format(str, sizeof(str), "||NewReport||  %s(ID %d) reported %s(ID %d) reason = %s", reporter,playerid, reportedname, reported, cmdtext[9]);
		MessageToAdmins(COLOR_WHITE,str);	SaveToFile("ReportLog",str);
		SendClientMessage(playerid,COLOR_YELLOW, "Report Sent.");
	    return 1;
		}
//==============================================================================
	if(strcmp(cmd, "/setworld", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
     	tmp = strtok(cmdtext, idx);
 		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setworld [playerid] [virtual world]");
			return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;		}
		tmp = strtok(cmdtext, idx);

		new world;
		world = strval(tmp);
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your virtual world to %d",adminname,world);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's virtual world to %d",playername,world); SendClientMessage(playerid,COLOR_BLUE,string);
		CMDMessageToAdmins(playerid,"SETWORLD"); SetPlayerVirtualWorld(player1,world);
		PlayerPlaySound(playerid,1057,0.0,0.0,0.0); PlayerPlaySound(player1,1057,0.0,0.0,0.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}

//------------------------------------------------------------------------------
	if(strcmp(cmd, "/teleplayer", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /teleplayer [playerid] to [playerid]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;		}
		tmp = strtok(cmdtext, idx);

		new player2;
		player2 = strval(tmp);
		if(!IsPlayerConnected(player1) || player2 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;		}
		tmp = strtok(cmdtext, idx);

	    new Float:plocx,Float:plocy,Float:plocz;
		GetPlayerPos(player2, plocx, plocy, plocz);	new intid = GetPlayerInterior(player2);	SetPlayerInterior(player1,intid);
		SetPlayerVirtualWorld(player1,GetPlayerVirtualWorld(player2));
		CMDMessageToAdmins(playerid,"TELEPLAYER");
		if (GetPlayerState(player1) == 2)
		{
		new VehicleID = GetPlayerVehicleID(player1);
		SetVehiclePos(VehicleID, plocx, plocy+4, plocz);   LinkVehicleToInterior(VehicleID,intid);
		SetVehicleVirtualWorld(VehicleID, GetPlayerVirtualWorld(player2) );
		} else	{
		SetPlayerPos(player1,plocx,plocy+2, plocz);		}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//===================================[WARN]=====================================
	if(strcmp(cmd, "/warn", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	new tmp[256];	new str[256];	new pname[256];	new aname[256];	new tmp2[256];
	tmp = strtok(cmdtext, idx);
	tmp2 = strtok(cmdtext, idx);

	if(!strlen(tmp))	{
	SendClientMessage(playerid, COLOR_RED, "USAGE: /warn [PlayerID] [Reason]");
	return 1;	}

	new warned;
	warned = strval(tmp);
	if(!IsPlayerConnected(warned) || warned == INVALID_PLAYER_ID || (LAdmin[warned] == MAX_ADMIN_LEVEL) || (warned == playerid))	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
	return 1;	}
	tmp = strtok(cmdtext, idx);

    CMDMessageToAdmins(playerid,"WARN");
	if(Warnings[warned] == 0)	{
	Warnings[warned]+=1;
	GetPlayerName(warned, pname, sizeof (str));
	GetPlayerName(playerid, aname, sizeof (str));
	format(str, sizeof (str), "***Administrator %s has given %s a warning [Reason: %s] [1/3 Warnings]***", aname, pname, cmdtext[8]);
	SendClientMessageToAll(COLOR_YELLOW, str);
	return 1;	}
	else if(Warnings[warned] == 1)	{
	GetPlayerName(warned, pname, sizeof (str));
	GetPlayerName(playerid, aname, sizeof (str));
	format(str, sizeof (str), "***Administrator %s has given %s a warning [Reason: %s] [2/3 Warnings]***", aname, pname, cmdtext[8]);
	SendClientMessageToAll(COLOR_YELLOW, str);
	Warnings[warned]+=1;
	return 1;	}
	else if(Warnings[warned] == 2)	{
	GetPlayerName(warned, pname, sizeof (str));
	GetPlayerName(playerid, aname, sizeof (str));
	format(str, sizeof (str), "***Administrator %s has Kicked %s [Reason: %s] [3/3 Warnings]***", aname, pname, cmdtext[8]);
	SendClientMessageToAll(COLOR_GREY, str);
	SaveToFile("BanKickLog",string);	Kick(warned);
	return 1;	}
	} else	{
 	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/car", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256], car,colour1,colour2;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /car [carid] [colour1] [colour2]");
			return 1;	}
		car = strval(tmp);
		if(car < 400 || car > 611)		{
			SendClientMessage(playerid, COLOR_RED, "Vehicle Number can't be below 400 or above 611");
			return 1;		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))		{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /car [carid] [colour1] [colour2]");
			return 1;		}
		colour1 = strval(tmp);
		if(colour1 < 0 || colour1 > 126)		{
			SendClientMessage(playerid, COLOR_RED, "ERROR: Colour Number can't be below 0 or above 126");
			return 1;		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))		{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /car [carid] [colour1] [colour2]");
			return 1;		}
		colour2 = strval(tmp);
		if(colour2 < 0 || colour2 > 126)		{
			SendClientMessage(playerid, COLOR_RED, "ERROR: Colour Number can't be below 0 or above 126");
		 	return 1;	 	}
		new LVehicleID,Float:X,Float:Y,Float:Z, Float:Angle,int1 ;	GetPlayerPos(playerid, X,Y,Z);	GetPlayerFacingAngle(playerid,Angle);   int1 = GetPlayerInterior(playerid);
		LVehicleID = CreateVehicle(car, X+3,Y,Z, Angle, colour1, colour2, 60000); LinkVehicleToInterior(LVehicleID,int1);
		CMDMessageToAdmins(playerid,"CAR");
		new pname[MAX_PLAYER_NAME];
 		GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
		format(string, sizeof(string), "You have spawned car (%d) colour1 (%d) colour2 (%d), at %0.2f, %0.2f, %0.2f", car, colour1, colour2, X, Y, Z);
		SendClientMessage(playerid,COLOR_YELLOW, string);
		format(string, sizeof(string), "%s has spawned car (%d) colour1 (%d) colour2 (%d), at %0.2f, %0.2f, %0.2f", pname, car, colour1, colour2, X, Y, Z);
        SaveToFile("CarSpawns",string);
	} else	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//---------------------------------------
	if(strcmp(cmd, "/pickup", true) == 0)	{
	if(LAdmin[playerid] >= 4) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /pickup [pickup-id]");
			return 1;	}
		new pick,Float:px,Float:py,Float:pz;	GetPlayerPos(playerid, px,py,pz);
		pick = strval(tmp);
	    CMDMessageToAdmins(playerid,"PICKUP");
		CreatePickup(pick, 2, px, py, pz);
		format(string, sizeof(string), "CreatePickup(%d, 2, %0.2f, %0.2f, %0.2f);", pick, px, py, pz);
		SendClientMessage(playerid,COLOR_YELLOW, string);
       	SaveToFile("Pickups",string);
	} else	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/object", true) == 0)	{
    if(LAdmin[playerid] >= 4) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /object [object-id]");
			return 1;	}
		new object, Float:px,Float:py,Float:pz;	GetPlayerPos(playerid, px,py,pz);
		object = strval(tmp);
	    CMDMessageToAdmins(playerid,"OBJECT");
		CreateObject(object, px, py, pz, 0, 0, 0);
		format(string, sizeof(string), "You Have Created Object %d, at %0.2f, %0.2f, %0.2f", object, px, py, pz);
		SendClientMessage(playerid,COLOR_YELLOW, string);
		format(string, sizeof(string), "CreateObject(%d, %0.2f, %0.2f, %0.2f, 0.00, 0.00, 0.00);", object, px, py, pz);
       	SaveToFile("Objects",string);
	} else	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//==============================================================================
   	if(strcmp(cmd, "/linkcar", true) == 0)	{
		if(IsPlayerInAnyVehicle(playerid)) {
	    LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(playerid));
	    SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(playerid));
		}
		return 1;   }
//==============================================================================
	if(strcmp(cmd, "/setinterior", true) == 0)	{
		if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setinterior [playerid] [interiorid]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;	}
		tmp = strtok(cmdtext, idx);

		new interior;
		interior = strval(tmp);
		if(interior < 0 || interior > 25)		{
			SendClientMessage(playerid, COLOR_RED, "Interior can't be below 0 or above 26");
			return 1;	}
		tmp = strtok(cmdtext, idx);

		CMDMessageToAdmins(playerid,"SETINTERIOR");
		SetPlayerInterior(player1,interior);
		} else	{
 		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
		return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/duel", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /duel [player1 id] [player2 id] [location (1) or (2) or (3)]");
			SendClientMessage(playerid, COLOR_RED, "If location isnt stated then players duel at their present location");
			return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;	}
		tmp = strtok(cmdtext, idx);

		new player2;
		player2 = strval(tmp);
		if(!IsPlayerConnected(player1) || player2 == INVALID_PLAYER_ID)		{
			SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
			return 1;	}
		tmp = strtok(cmdtext, idx);

        new location;
		location = strval(tmp);
		tmp = strtok(cmdtext, idx);

		if(location == 1)   {
		SetPlayerInterior(player1,16);	SetPlayerPos(player1,-1404.067, 1270.3706, 1042.8672);	SetPlayerHealth(player1,100.0);	SetPlayerArmour(player1,100.0);	GivePlayerWeapon(player1,26,400);	GivePlayerWeapon(player1,24,300);	GivePlayerWeapon(player1,28,500);
		SetPlayerInterior(player2,16);	SetPlayerPos(player2,-1395.067, 1261.3706, 1042.8672);  SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0);	GivePlayerWeapon(player2,26,400);	GivePlayerWeapon(player2,24,300);	GivePlayerWeapon(player2,28,500);
		InDuel[player1] = 1;
		InDuel[player2] = 1;
		CMDMessageToAdmins(playerid,"DUEL");
		cdt=6;
		timer=SetTimer("duel",1000,1);
		} else if(location == 2)   {
		SetPlayerInterior(player1,0);	SetPlayerPos(player1,1353.407,2188.155,11.02344);    SetPlayerHealth(player1,100.0); SetPlayerArmour(player1,100.0);	GivePlayerWeapon(player1,26,400);	GivePlayerWeapon(player1,24,300);	GivePlayerWeapon(player1,28,500);
		SetPlayerInterior(player2,0);	SetPlayerPos(player2,1346.255,2142.843,11.01563);    SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0);	GivePlayerWeapon(player2,26,400);	GivePlayerWeapon(player2,24,300);	GivePlayerWeapon(player2,28,500);
		InDuel[player1] = 1;
		InDuel[player2] = 1;
		CMDMessageToAdmins(playerid,"DUEL");
		cdt=6;
		timer=SetTimer("duel",1000,1);
		} else if(location == 3)   {
		SetPlayerInterior(player1,10);	SetPlayerPos(player1,-1041.037,1078.729,1347.678); SetPlayerFacingAngle(player1,135);	SetPlayerHealth(player1,100.0); SetPlayerArmour(player1,100.0);	GivePlayerWeapon(player1,26,400);	GivePlayerWeapon(player1,24,300);	GivePlayerWeapon(player1,28,500);
		SetPlayerInterior(player2,10);	SetPlayerPos(player2,-1018.061,1052.502,1346.327); SetPlayerFacingAngle(player2,45);   SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0);	GivePlayerWeapon(player2,26,400);	GivePlayerWeapon(player2,24,300);	GivePlayerWeapon(player2,28,500);
		InDuel[player1] = 1;
		InDuel[player2] = 1;
		CMDMessageToAdmins(playerid,"DUEL");
		cdt=6;
		timer=SetTimer("duel",1000,1);
		} else  {
		InDuel[player1] = 1;
		InDuel[player2] = 1;
		CMDMessageToAdmins(playerid,"DUEL");
		cdt=6;
		timer=SetTimer("duel",1000,1);  }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext,"/countdown",true)==0)	{
    if(LAdmin[playerid] >= 3) {
	CMDMessageToAdmins(playerid,"COUNTDOWN");
	cdt=6;
	timer=SetTimer("countdown",1000,1);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar", true)==0 || strcmp(cmdtext, "/ltc", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,LVehicleIDt;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        LVehicleIDt = CreateVehicle(560,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,LVehicleIDt,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(LVehicleIDt, 1028);	AddVehicleComponent(LVehicleIDt, 1030);	AddVehicleComponent(LVehicleIDt, 1031);	AddVehicleComponent(LVehicleIDt, 1138);	AddVehicleComponent(LVehicleIDt, 1140);  AddVehicleComponent(LVehicleIDt, 1170);
	    AddVehicleComponent(LVehicleIDt, 1080);	AddVehicleComponent(LVehicleIDt, 1086); AddVehicleComponent(LVehicleIDt, 1087); AddVehicleComponent(LVehicleIDt, 1010);	PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	ChangeVehiclePaintjob(LVehicleIDt,0);
		SetVehicleVirtualWorld(LVehicleIDt, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar2", true)==0 || strcmp(cmdtext, "/ltc2", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,LVehicleIDt;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        LVehicleIDt = CreateVehicle(560,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,LVehicleIDt,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(LVehicleIDt, 1028);	AddVehicleComponent(LVehicleIDt, 1030);	AddVehicleComponent(LVehicleIDt, 1031);	AddVehicleComponent(LVehicleIDt, 1138);	AddVehicleComponent(LVehicleIDt, 1140);  AddVehicleComponent(LVehicleIDt, 1170);
	    AddVehicleComponent(LVehicleIDt, 1080);	AddVehicleComponent(LVehicleIDt, 1086); AddVehicleComponent(LVehicleIDt, 1087); AddVehicleComponent(LVehicleIDt, 1010);	PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	ChangeVehiclePaintjob(LVehicleIDt,1);
	    SetVehicleVirtualWorld(LVehicleIDt, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar3", true)==0 || strcmp(cmdtext, "/ltc3", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,LVehicleIDt;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        LVehicleIDt = CreateVehicle(560,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,LVehicleIDt,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(LVehicleIDt, 1028);	AddVehicleComponent(LVehicleIDt, 1030);	AddVehicleComponent(LVehicleIDt, 1031);	AddVehicleComponent(LVehicleIDt, 1138);	AddVehicleComponent(LVehicleIDt, 1140);  AddVehicleComponent(LVehicleIDt, 1170);
	    AddVehicleComponent(LVehicleIDt, 1080);	AddVehicleComponent(LVehicleIDt, 1086); AddVehicleComponent(LVehicleIDt, 1087); AddVehicleComponent(LVehicleIDt, 1010);	PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	ChangeVehiclePaintjob(LVehicleIDt,2);
	    SetVehicleVirtualWorld(LVehicleIDt, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar4", true)==0 || strcmp(cmdtext, "/ltc4", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(559,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
    	AddVehicleComponent(carid,1065);    AddVehicleComponent(carid,1067);    AddVehicleComponent(carid,1162); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1073);	ChangeVehiclePaintjob(carid,1);
    	SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar5", true)==0 || strcmp(cmdtext, "/ltc5", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(565,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(carid,1046); AddVehicleComponent(carid,1049); AddVehicleComponent(carid,1053); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1073); ChangeVehiclePaintjob(carid,1);
	    SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar6", true)==0 || strcmp(cmdtext, "/ltc6", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(558,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
    	AddVehicleComponent(carid,1088); AddVehicleComponent(carid,1092); AddVehicleComponent(carid,1139); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1073); ChangeVehiclePaintjob(carid,1);
    	SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar7", true)==0 || strcmp(cmdtext, "/ltc7", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(561,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
    	AddVehicleComponent(carid,1055); AddVehicleComponent(carid,1058); AddVehicleComponent(carid,1064); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1073); ChangeVehiclePaintjob(carid,1);
    	SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar8", true)==0 || strcmp(cmdtext, "/ltc8", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(562,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(carid,1034); AddVehicleComponent(carid,1038); AddVehicleComponent(carid,1147); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1073); ChangeVehiclePaintjob(carid,1);
	    SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar9", true)==0 || strcmp(cmdtext, "/ltc9", true)==0)	{
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(567,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
	    AddVehicleComponent(carid,1102); AddVehicleComponent(carid,1129); AddVehicleComponent(carid,1133); AddVehicleComponent(carid,1186); AddVehicleComponent(carid,1188); ChangeVehiclePaintjob(carid,1); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1085); AddVehicleComponent(carid,1087); AddVehicleComponent(carid,1086);
	    SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext, "/ltunedcar10", true)==0 || strcmp(cmdtext, "/ltc10", true)==0)	{
		if(IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else  {
		new Float:X,Float:Y,Float:Z,Float:Angle,carid;	GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
        carid = CreateVehicle(558,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,carid,0); CMDMessageToAdmins(playerid,"LTunedCar");
   		AddVehicleComponent(carid,1092); AddVehicleComponent(carid,1166); AddVehicleComponent(carid,1165); AddVehicleComponent(carid,1090);
	    AddVehicleComponent(carid,1094); AddVehicleComponent(carid,1010); AddVehicleComponent(carid,1087); AddVehicleComponent(carid,1163);//SPOILER
	    AddVehicleComponent(carid,1091); ChangeVehiclePaintjob(carid,2);
	    SetVehicleVirtualWorld(carid, GetPlayerVirtualWorld(playerid)); }
		return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lp", true) == 0)	{
	if(LAdmin[playerid] >= 1) {
		if (GetPlayerState(playerid) == 2)
		{
		new VehicleID = GetPlayerVehicleID(playerid), LModel = GetVehicleModel(VehicleID);
        switch(LModel) { case 448,461,462,463,468,471,509,510,521,522,523,581,586: return SendClientMessage(playerid,COLOR_RED,"ERROR: You can not tune bikes!"); }
		new str[256], Float:pos[3];	format(str, sizeof(str), "%s", cmdtext[2]);
		SetVehicleNumberPlate(VehicleID, str);
		GetPlayerPos(playerid, pos[0], pos[1], pos[2]);	SetPlayerPos(playerid, pos[0]+1, pos[1], pos[2]);
		SetVehicleToRespawn(VehicleID); SetVehiclePos(VehicleID, pos[0], pos[1], pos[2]);
		SetTimerEx("TuneLCar",4000,0,"d",VehicleID);    PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
		SendClientMessage(playerid, COLOR_BLUE, "You have changed your licence plate");   CMDMessageToAdmins(playerid,"LP");
		} else {
		SendClientMessage(playerid,COLOR_RED,"Error: You have to be the driver of a vehicle to change its licence plate");	}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lcar", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
		if (IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else {
		new Float:X,Float:Y,Float:Z,Float:Angle,VehicleID;
		GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
	    VehicleID = CreateVehicle(415,X,Y,Z,Angle,1,-1,-1);	SetVehicleNumberPlate(VehicleID, "admin"); PutPlayerInVehicle(playerid,VehicleID,0);
		if(GetPlayerInterior(playerid)) LinkVehicleToInterior(VehicleID,GetPlayerInterior(playerid));
		SetVehicleVirtualWorld(VehicleID,GetPlayerVirtualWorld(playerid));
		ChangeVehicleColor(VehicleID,0,7);  AddVehicleComponent(VehicleID, 1010); /*Nitro x10*/  AddVehicleComponent(VehicleID, 1087); /*Hydraulic*/
		SendClientMessage(playerid,COLOR_BLUE,"Enjoy your new car");	CMDMessageToAdmins(playerid,"LCAR"); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lbike", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
		if (IsPlayerInAnyVehicle(playerid)) {
		SendClientMessage(playerid,COLOR_RED,"Error: You already have a vehicle");
		} else {
		new Float:X,Float:Y,Float:Z,Float:Angle,VehicleID;
		GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
	    VehicleID = CreateVehicle(522,X,Y,Z,Angle,1,-1,-1);	PutPlayerInVehicle(playerid,VehicleID,0);
		if(GetPlayerInterior(playerid)) LinkVehicleToInterior(VehicleID,GetPlayerInterior(playerid));
		SetVehicleVirtualWorld(VehicleID,GetPlayerVirtualWorld(playerid));
		ChangeVehicleColor(VehicleID,0,7);
		SendClientMessage(playerid,COLOR_BLUE,"Enjoy your new bike");	CMDMessageToAdmins(playerid,"LBIKE"); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/flip", true) == 0)	{
	if(LAdmin[playerid] >= 1) {
		if (IsPlayerInAnyVehicle(playerid)) {
		new VehicleID, Float:X, Float:Y, Float:Z, Float:Angle;	GetPlayerPos(playerid, X, Y, Z); 	VehicleID = GetPlayerVehicleID(playerid);
		GetVehicleZAngle(VehicleID, Angle);
		SetVehiclePos(VehicleID, X, Y, Z);
		SetVehicleZAngle(VehicleID, Angle); SetVehicleHealth(VehicleID,1200.0);
		SendClientMessage(playerid, COLOR_BLUE,"Vehicle Flipped"); CMDMessageToAdmins(playerid,"FLIP");
		} else {
		SendClientMessage(playerid,COLOR_RED,"Error: You are not in a vehicle");	}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/fix", true) == 0)	{
	if(LAdmin[playerid] >= 1) {
		if (IsPlayerInAnyVehicle(playerid)) {
		new VehicleID = GetPlayerVehicleID(playerid);	SetVehicleHealth(VehicleID,1000.0);
		SendClientMessage(playerid,COLOR_BLUE,"Vehicle Fixed");
		} else {
		SendClientMessage(playerid,COLOR_RED,"Error: You are not in a vehicle");	}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext,"/ltune",true)==0){
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
        new LVehicleID = GetPlayerVehicleID(playerid), LModel = GetVehicleModel(LVehicleID);
        switch(LModel) { case 448,461,462,463,468,471,509,510,521,522,523,581,586: return SendClientMessage(playerid,COLOR_RED,"ERROR: You can not tune bikes!"); }
        CMDMessageToAdmins(playerid,"LTUNE"); SetVehicleHealth(GetPlayerVehicleID(playerid),2000.0);  TuneLCar(LVehicleID);   PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
		} else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You must be in a vehicle."); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmdtext,"/nos",true)==0){
	if(LAdmin[playerid] >= 1) {
		if(IsPlayerInAnyVehicle(playerid)) {
        new LVehicleID = GetPlayerVehicleID(playerid), LModel = GetVehicleModel(LVehicleID);
        switch(LModel) { case 448,461,462,463,468,471,509,510,521,522,523,581,586: return SendClientMessage(playerid,COLOR_RED,"ERROR: You can not tune bikes!"); }
        AddVehicleComponent(LVehicleID, 1010); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);
		} else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You must be in a vehicle."); }
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if (strcmp(cmd, "/ladmin", true) ==0 )	{
	if(LAdmin[playerid] >= 3) {
	new tmp[256], Float:X, Float:Y, Float:Z;
	tmp = strtok(cmdtext,idx);
	if(!strlen(tmp))	{
		SendClientMessage(playerid,COLOR_RED,"USAGE: /ladmin [up / down / +x / -x / +y / -y / off]");	}
	else if(strcmp(tmp,"up",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X,Y,Z+5); SetCameraBehindPlayer(playerid);	}
	else if(strcmp(tmp,"down",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X,Y,Z-5); SetCameraBehindPlayer(playerid);	}
	else if(strcmp(tmp,"+x",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X+5,Y,Z);	}
	else if(strcmp(tmp,"-x",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X-5,Y,Z); }
	else if(strcmp(tmp,"+y",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X,Y+5,Z);	}
	else if(strcmp(tmp,"-y",true) == 0)	{
		TogglePlayerControllable(playerid,false); GetPlayerPos(playerid,X,Y,Z);	SetPlayerPos(playerid,X,Y-5,Z);	}
    else if(strcmp(tmp,"off",true) == 0)	{
		TogglePlayerControllable(playerid,true);	}
	else	{
		SendClientMessage(playerid,COLOR_RED,"USAGE: /ladmin [up / down / +x / -x / +y / -y / off]");	}
	return 1;
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//==================[ Save More To File ]============================================================
	if(strcmp(cmd, "/gotoplace", true) == 0)   {
	if(LoggedIn[playerid] && LAdmin[playerid] >= 1)	{
	    if (dUserINT(PlayerName2(playerid)).("x")!=0) {
	    PutAtPos(playerid);
	    SetPlayerVirtualWorld(playerid, (dUserINT(PlayerName2(playerid)).("world")) );
		SendClientMessage(playerid,COLOR_YELLOW,"You have successfully teleported to your saved place");
		} else {
		SendClientMessage(playerid,COLOR_RED,"ERROR: You must save a place before you can teleport to it");   }
	} else    {
 	SendClientMessage(playerid,COLOR_RED, "ERROR: You must be an administrator to use this command");   }
	return 1;	}
//------------
	if(strcmp(cmd, "/saveplace", true) == 0)	{
	if(LoggedIn[playerid] && LAdmin[playerid] >= 1)	{
	new Float:x,Float:y,Float:z, interior;
	GetPlayerPos(playerid,x,y,z);	interior = GetPlayerInterior(playerid);
	dUserSetINT(PlayerName2(playerid)).("x",floatround(x));
	dUserSetINT(PlayerName2(playerid)).("y",floatround(y));
	dUserSetINT(PlayerName2(playerid)).("z",floatround(z));
	dUserSetINT(PlayerName2(playerid)).("interior",interior);
	dUserSetINT(PlayerName2(playerid)).("world", (GetPlayerVirtualWorld(playerid)) );
	SendClientMessage(playerid,COLOR_YELLOW,"You have successfully saved these coordinates");
	} else    {
	SendClientMessage(playerid,COLOR_RED, "ERROR: You must be an administrator to use this command");   }
	return 1;	}
//-----------------------------------------
	if(strcmp(cmd, "/saveskin", true) == 0)
	{
 	if((LAdmin[playerid] >= 1) && (LoggedIn[playerid] == 1))  {
	new skinid, tmp[256],str[256];
	tmp = strtok(cmdtext, idx);
	if(!strlen(tmp))	{
	SendClientMessage(playerid, COLOR_RED, "USAGE: /saveskin [Skinid]");
	return 1;
	}
	skinid = strval(tmp);

 	if(skinid >= 0 && skinid <= 300)	{
 		dUserSetINT(PlayerName2(playerid)).("FavSkin",skinid);
	 	format(str, sizeof(str), "You have successfully saved this skin[%d]",skinid);
	 	SendClientMessage(playerid,COLOR_YELLOW,str);	SendClientMessage(playerid,COLOR_YELLOW,"Type: /useskin to use this skin when you spawn or /dontuseskin to stop using skin");
		dUserSetINT(PlayerName2(playerid)).("UseSkin",1);
	 	CMDMessageToAdmins(playerid,"SAVESKIN");
		return 1;
	} else {
 	SendClientMessage(playerid, COLOR_GREEN, "ERROR: Invalid Skin ID");
 	return 1; 	}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You must be an administrator to use this command");   }
	return 1;
	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/useskin", true) == 0)	{
	if((LAdmin[playerid] >= 1) && (LoggedIn[playerid] == 1))  {
    dUserSetINT(PlayerName2(playerid)).("UseSkin",1);
    SetPlayerSkin(playerid,dUserINT(PlayerName2(playerid)).("FavSkin"));
	SendClientMessage(playerid,COLOR_YELLOW,"Skin now in use");   }
	return 1;	}
	if(strcmp(cmd, "/dontuseskin", true) == 0)	{
	if((LAdmin[playerid] >= 1) && (LoggedIn[playerid] == 1))  {
	dUserSetINT(PlayerName2(playerid)).("UseSkin",0);
	SendClientMessage(playerid,COLOR_YELLOW,"Skin will no longer be used");   }
	return 1;	}
//------------------------------------------------------------------------------

//         REMOVED
//__________________________________

/*	if(strcmp(cmd, "/levelme", true) == 0) 	{
	if(IsPlayerAdmin(playerid))		{
	if (LoggedIn[playerid] == 0) return SendClientMessage(playerid,COLOR_RED,"You Must be Registered And logged In To Be An Admin.");
	LAdmin[playerid] = MAX_ADMIN_LEVEL;
	dUserSetINT(PlayerName2(playerid)).("level",(MAX_ADMIN_LEVEL));
	LAdmin[playerid] = MAX_ADMIN_LEVEL;
	new str1[100];	format(str1, sizeof(str1),"You are now the highest level admin [level %d ]", MAX_ADMIN_LEVEL);
	SendClientMessage(playerid, COLOR_GREEN, str1);
	return 1;	}
	}*/
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/resetstats", true) == 0)	{
	if(LoggedIn[playerid] == 1)	{
		// save as backup
	   	dUserSetINT(PlayerName2(playerid)).("oldkills",MyKills[playerid]);
	   	dUserSetINT(PlayerName2(playerid)).("olddeaths",MyDeaths[playerid]);
		// stats reset
		MyKills[playerid] = 0;
		MyDeaths[playerid] = 0;
		dUserSetINT(PlayerName2(playerid)).("kills",MyKills[playerid]);
	   	dUserSetINT(PlayerName2(playerid)).("deaths",MyDeaths[playerid]);
        PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
		SendClientMessage(playerid,COLOR_YELLOW,"ACCOUNT: You have successfully reset your stats. Your kills and deaths are: 0");
	} else    {
		SendClientMessage(playerid,COLOR_RED, "ERROR: You must have an account to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/changepass", true) == 0)	{
	if(LoggedIn[playerid] ==1)	{
//		GetPlayerName(playerid,playername,sizeof(playername));
//		format(file,sizeof(file),"users/%s.ini",playername);

	    new tmp[256];
     	tmp = strtok(cmdtext, idx);
 		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /changepass [password]");
			return 1;	}

		if(strlen(cmdtext) < 15)	{
			SendClientMessage(playerid,COLOR_RED,"ACCOUNT: Incorrect password length");
			return 1;	}

		dUserSetINT(PlayerName2(playerid)).("password_hash",udb_hash(cmdtext[12]) );
		dUserSet(PlayerName2(playerid)).("Password",cmdtext[12]);
		PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
        format(string, sizeof(string),"ACCOUNT: You have successfully changed your password to [ %s ]",cmdtext[12]);
		SendClientMessage(playerid,COLOR_YELLOW,string);
	} else    {
		SendClientMessage(playerid,COLOR_RED, "ERROR: You must have an account to use this command");   }
	return 1;	}

//==============================================================================
	if(strcmp(cmd, "/stats", true) == 0)	 {
	    new idplayer, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		    ShowScore(playerid);
			return 1;	}
		idplayer = strval(tmp);

	 	if(IsPlayerConnected(idplayer))		{
			GetPlayerName(idplayer, playername, sizeof(playername));
 			format(string, sizeof(string), "<> %s's Stats:  Kills: %d | Deaths: %d | Ratio: %0.2f | Money: $%d ",playername,MyKills[idplayer],MyDeaths[idplayer],Float:MyKills[idplayer]/Float:MyDeaths[idplayer],GetPlayerMoney(idplayer));
			SendClientMessage(playerid, COLOR_GREEN, string);
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_WHITE, "Player Not Connected!");
 		return 1;	}
	 }
//------------------------------------------------------------------------------
	if (strcmp(cmd, "/moveplayer", true) ==0 )	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256], Float:X, Float:Y, Float:Z;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /moveplayer [playerid] [up / down / +x / -x / +y / -y ]");
			return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is max admin level");
		return 1;	}
		tmp = strtok(cmdtext, idx);

	//if(!strlen(tmp))	{
	//	SendClientMessage(playerid,COLOR_RED,"USAGE: /moveplayer [playerid] [up / down / +x / -x / +y / -y / off]");	}
		if(strcmp(tmp,"up",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X,Y,Z+5); SetCameraBehindPlayer(player1);	}
		else if(strcmp(tmp,"down",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X,Y,Z-5); SetCameraBehindPlayer(player1);	}
		else if(strcmp(tmp,"+x",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X+5,Y,Z);	}
		else if(strcmp(tmp,"-x",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X-5,Y,Z); }
		else if(strcmp(tmp,"+y",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X,Y+5,Z);	}
		else if(strcmp(tmp,"-y",true) == 0)	{
			GetPlayerPos(player1,X,Y,Z);	SetPlayerPos(player1,X,Y-5,Z);	}
		else	{
			SendClientMessage(playerid,COLOR_RED,"USAGE: /moveplayer [playerid] [up / down / +x / -x / +y / -y ]");	}
		return 1;
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lweaps", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	GivePlayerWeapon(playerid,9,1); GivePlayerWeapon(playerid,24,1000); GivePlayerWeapon(playerid,26,1000); GivePlayerWeapon(playerid,28,1000); GivePlayerWeapon(playerid,31,1000); GivePlayerWeapon(playerid,34,1000); GivePlayerWeapon(playerid,38,1000); GivePlayerWeapon(playerid,16,1000); GivePlayerWeapon(playerid,42,1000); GivePlayerWeapon(playerid,14,1000); GivePlayerWeapon(playerid,46,1000);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/lammo", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	MaxAmmo(playerid);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if((strcmp(cmdtext,"/god",true)==0)||(strcmp(cmdtext,"/god",true)==0))    {
	if(LAdmin[playerid] >= 3) {
    	if(God[playerid] == 0)	{
        	God[playerid] = 1;
	        SetPlayerHealth(playerid,100000);
			GivePlayerWeapon(playerid,38,50000); GivePlayerWeapon(playerid,15,50000); GivePlayerWeapon(playerid,26,50000);
            SendClientMessage(playerid,COLOR_GREEN,"GODMODE ON");
		} else	{
            God[playerid] = 0;
            SendClientMessage(playerid,COLOR_RED,"GODMODE OFF");
	        SetPlayerHealth(playerid, 100); GivePlayerWeapon(playerid,35,0);	}
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/die", true) == 0) {
	if(LAdmin[playerid] >= 4) {
		new Float:x, Float:y, Float:z ;
		GetPlayerPos( playerid, Float:x, Float:y, Float:z );
		CreateExplosion(Float:x+10, Float:y, Float:z, 8,10.0);
		CreateExplosion(Float:x-10, Float:y, Float:z, 8,10.0);
		CreateExplosion(Float:x, Float:y+10, Float:z, 8,10.0);
		CreateExplosion(Float:x, Float:y-10, Float:z, 8,10.0);
		CreateExplosion(Float:x+10, Float:y+10, Float:z, 8,10.0);
		CreateExplosion(Float:x-10, Float:y+10, Float:z, 8,10.0);
		CreateExplosion(Float:x-10, Float:y-10, Float:z, 8,10.0);
	} else	{
    SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 4 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/burn", true) == 0)	{
    if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /burn [playerid]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID && LAdmin[playerid] == 1)	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));
		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"BURN");
		format(string,256,"You have been flamed by Administrator \"%s\".",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
		new Float:burnx, Float:burny, Float:burnz;
		GetPlayerPos(player1,burnx, burny, burnz);
		CreateExplosion(burnx, burny , burnz + 3, 1, 10);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/explode", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /explode [playerid] [reason]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is max admin level");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));
		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"EXPLODE");
		format(string,256,"You have been exploded by Administrator %s [reason: %d]",adminname,cmdtext[11]);	SendClientMessage(player1,COLOR_BLUE,string);
		format(string,256,"You have exploded %s [reason: %d]", playername,cmdtext[11]); SendClientMessage(playerid,COLOR_BLUE,string);
		new Float:burnx, Float:burny, Float:burnz;
		GetPlayerPos(player1,burnx, burny, burnz);
		CreateExplosion(burnx, burny , burnz, 7,10.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/spawnplayer", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /spawnplayer [playerid]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"SPAWNPLAYER");
		format(string,256,"You have been spawned by Administrator %s",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
		format(string,256,"You have spawned %s ", playername); SendClientMessage(playerid,COLOR_BLUE,string);
		SpawnPlayer(player1);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setweather", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setweather [playerid] [weatherid]");
			return 1;	}

      	new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		new weather;
		weather = strval(tmp);
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has changed your weather",adminname);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have changed %s's weather ",playername); SendClientMessage(playerid,COLOR_BLUE,string);
		CMDMessageToAdmins(playerid,"SETWEATHER");	SetPlayerWeather(player1,weather); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); PlayerPlaySound(player1,1057,0.0,0.0,0.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/settime", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /settime [playerid] [hour] [minute]");
			return 1;	}

      	new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

        if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /settime [playerid] [hour] [minute]");
			return 1;	}

		new timeh;
		timeh = strval(tmp);
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /settime [playerid] [hour] [minute]");
			return 1;	}

		new timem;
		timem = strval(tmp);
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has changed your time to %d : %d",adminname,timeh,timem);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have changed %s's time to %d:%d",playername,timeh,timem); SendClientMessage(playerid,COLOR_BLUE,string);
		CMDMessageToAdmins(playerid,"SETTIME"); SetPlayerTime(player1,timeh,timem); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); PlayerPlaySound(player1,1057,0.0,0.0,0.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setmytime", true) == 0)	{
	if(LAdmin[playerid] >= 1) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setmytime [hour] [minute]");
			return 1;	}

        if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setmytime [hour] [minute]");
			return 1;	}

		new timeh;
		timeh = strval(tmp);
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setmytime [hour] [minute]");
			return 1;	}

		new timem;
		timem = strval(tmp);
		tmp = strtok(cmdtext, idx);

		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"You have changed your time to %d:%d",adminname,timeh,timem); SendClientMessage(playerid,COLOR_BLUE,string);
		CMDMessageToAdmins(playerid,"SETMYTIME"); SetPlayerTime(playerid,timeh,timem); PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}

//------------------------------------------------------------------------------
	if(strcmp(cmd, "/disarm", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /disarm [playerid]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"DISARM");  PlayerPlaySound(player1,1057,0.0,0.0,0.0);
		format(string,256,"You have been disarmed by Administrator %s",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
		format(string,256,"You have disarmed %s ", playername); SendClientMessage(playerid,COLOR_BLUE,string);
		ResetPlayerWeapons(player1);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/kick", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /kick [playerid] [reason]");
		return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"KICK");
		format(string,256,"%s has been kicked by Administrator %s [reason: %s] ",playername,adminname,cmdtext[7]);	SendClientMessageToAll(COLOR_GREY,string);
		SaveToFile("BanKickLog",string); Kick(player1);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/ban", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /ban [playerid] [reason]");
		return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
	   	new year,month,day;	getdate(year, month, day);	new strdate[20];	format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
		CMDMessageToAdmins(playerid,"BAN");
		format(string,256,"%s has been banned by Administrator %s [Reason: %s] [Date: %s] ",playername,adminname,cmdtext[6],strdate);	SendClientMessageToAll(COLOR_GREY,string);
		SaveToFile("BanKickLog",string); Ban(player1);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/slap", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /slap [playerid] [reason]");
		return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"SLAP");
		format(string,256,"You have been slapped by Administrator %s %s ",adminname,cmdtext[7]);	SendClientMessage(player1,COLOR_RED,string);
		format(string,256,"You have slapped %s %s ",playername,cmdtext[7]);	SendClientMessage(playerid,COLOR_BLUE,string);
        new Float:Health, Float:x, Float:y, Float:z; GetPlayerHealth(player1,Health); SetPlayerHealth(player1,Health-25); GetPlayerPos(player1,x,y,z);	SetPlayerPos(player1,x,y,z+5); PlayerPlaySound(playerid,1190,0.0,0.0,0.0); PlayerPlaySound(player1,1190,0.0,0.0,0.0);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/mute", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /mute [playerid] [reason]");
		return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL))	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"MUTE");
		PlayerPlaySound(player1,1057,0.0,0.0,0.0);  IsPlayerMuted[player1] = 1; mutedwarning[player1] = 0;
		format(string,256,"You have been muted by Administrator %s [reason: %s] ",adminname,cmdtext[8]);	SendClientMessage(player1,COLOR_RED,string);
		format(string,256,"You have muted %s [reason: %s] ",playername,cmdtext[8]);	SendClientMessage(playerid,COLOR_BLUE,string);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/unmute", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /unmute [playerid] [reason]");
		return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		CMDMessageToAdmins(playerid,"UNMUTE");
		PlayerPlaySound(player1,1057,0.0,0.0,0.0);  IsPlayerMuted[player1] = 0; mutedwarning[player1] = 0;
		format(string,256,"You have been unmuted by Administrator %s",adminname);	SendClientMessage(player1,COLOR_RED,string);
		format(string,256,"You have unmuted %s",playername);	SendClientMessage(playerid,COLOR_BLUE,string);
	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setlevel", true) == 0)
	{
	if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setlevel [playerid] [level]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		if(LoggedIn[player1] == 0)	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player must be registered to be an admin");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setlevel [playerid] [level]");
			return 1;	}

		new level;
		level = strval(tmp);
		if(level > MAX_ADMIN_LEVEL )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Level");
		return 1;	}
		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETLEVEL");
		GetPlayerName(player1, playername, sizeof(playername));
		GetPlayerName(playerid, adminname, sizeof(adminname));
       	new year,month,day;   getdate(year, month, day);
		if(level==1) { format(string,256,"Administrator %s has set you to Member Status [ level  %d ]",adminname,level); SendClientMessage(player1,COLOR_BLUE,string);
		} else { format(string,256,"Administrator %s has set you to Administrator Status [ level  %d ]",adminname,level); SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have made %s [Level %d] on %d/%d/%d", playername, level, day, month, year); SendClientMessage(playerid,COLOR_BLUE,string);
		format(string,256,"Administrator %s has made %s [Level %d] on %d/%d/%d",adminname, playername, level, day, month, year); SaveToFile("AdminLog",string);
		dUserSetINT(PlayerName2(player1)).("level",(level));
		LAdmin[player1] = level;
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/settemplevel", true) == 0)
	{
	if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /settemplevel [playerid] [level]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || player1 == playerid || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected Or is yourself" );
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /settemplevel [playerid] [level]");
			return 1;	}

		new level;
		level = strval(tmp);
		if(level > LAdmin[playerid] )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Level");
		return 1;	}
		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETTEMPLEVEL");
		GetPlayerName(player1, playername, sizeof(playername));
		GetPlayerName(playerid, adminname, sizeof(adminname));
       	new year,month,day;   getdate(year, month, day);
		if(level==1) { format(string,256,"Administrator %s has temporarily set you to Member Status [ level  %d ]",adminname,level); SendClientMessage(player1,COLOR_BLUE,string);
		} else { format(string,256,"Administrator %s has temporarily set you to Administrator Status [ level  %d ]",adminname,level); SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have temporarily made %s [Level %d] on %d/%d/%d", playername, level, day, month, year); SendClientMessage(playerid,COLOR_BLUE,string);
		format(string,256,"Administrator %s has temporarily made %s [Level %d] on %d/%d/%d",adminname, playername, level, day, month, year); SaveToFile("TempAdminLog",string);
		LAdmin[player1] = level;
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/ljail", true) == 0)
	{
	if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /ljail [playerid] [time] [reason]");
			return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL))	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /ljail [playerid] [time] [reason]");
			return 1;	}

		new jtime;
		jtime = strval(tmp);
		if(jtime < 10 )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Time (must be higher)");
		return 1;	}
		tmp = strtok(cmdtext, idx);

        if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /ljail [playerid] [time] [reason]");
			return 1;	}

       	CMDMessageToAdmins(playerid,"LJail");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has jailed you for %d seconds[reason: %s]",adminname,jtime,cmdtext[12]);	SendClientMessage(player1,COLOR_BLUE,string);
		format(string,256,"Administrator %s has jailed %s for %d seconds [reason: %s]",adminname, playername, jtime, cmdtext[12]); SendClientMessageToAll(COLOR_BLUE,string);
		jailnoob[player1] = jtime;
        SetTimerEx("JailPlayer",5000,0,"d",player1, jtime);
        SetTimerEx("Jail1",1000,0,"d",player1);
        IsPlayerInJail[player1] = 1;
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/freeze", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /freeze [playerid] [time] [reason]");
			return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID  || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL))	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /freeze [playerid] [time] [reason]");
			return 1;	}

		new ftime;
		ftime = strval(tmp);
		if(ftime < 5 )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Time (must be higher)");
		return 1;	}
		tmp = strtok(cmdtext, idx);

        if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /freeze [playerid] [time] [reason]");
			return 1;	}

       	CMDMessageToAdmins(playerid,"Freeze");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has frozen you for %d seconds [reason: %s]",adminname,ftime,cmdtext[12]);	SendClientMessage(player1,COLOR_BLUE,string);
		format(string,256,"Administrator %s has frozen %s for %d seconds [reason: %s]",adminname, playername, ftime, cmdtext[12]); SendClientMessageToAll(COLOR_BLUE,string);
		TogglePlayerControllable(player1,false); IsPlayerFrozen[player1] = 1;   PlayerPlaySound(player1,1057,0.0,0.0,0.0);
		freezenoob[player1] = ftime;
        SetTimerEx("UnFreezeMe",freezenoob[player1]*1000,0,"d",player1);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
 	if(strcmp(cmd, "/write", true) == 0)	{
	if(LAdmin[playerid] >= 1) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /write [Colour] [Text]");
		SendClientMessage(playerid, COLOR_RED, "Colours: 0=black 1=white 2=red 3=orange 4=yellow 5=green 6=blue 7=purple 8=brown 9=pink");
		return 1;	}

		new Colour;
		Colour = strval(tmp);
		if(Colour > 9 )	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /write [Colour] [Text]");
		SendClientMessage(playerid, COLOR_RED, "Colours: 0=black 1=white 2=red 3=orange 4=yellow 5=green 6=blue 7=purple 8=brown 9=pink");
		return 1;	}
		tmp = strtok(cmdtext, idx);

        CMDMessageToAdmins(playerid,"WRITE");

        if(Colour == 0) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_BLACK,string); return 1;	}
        else if(Colour == 1) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_WHITE,string); return 1;	}
        else if(Colour == 2) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_RED,string); return 1;	}
        else if(Colour == 3) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_ORANGE,string); return 1;	}
        else if(Colour == 4) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_YELLOW,string); return 1;	}
        else if(Colour == 5) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_GREEN1,string); return 1;	}
        else if(Colour == 6) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_BLUE,string); return 1;	}
        else if(Colour == 7) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_PURPLE,string); return 1;	}
        else if(Colour == 8) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_BROWN,string); return 1;	}
        else if(Colour == 9) {	format(string,256,"%s",cmdtext[9]);	SendClientMessageToAll(COLOR_PINK,string); return 1;	}

	} else	{
  	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}
 //-----------------------------------------------------------------------------
	if(strcmp(cmd, "/lockdoors", true) == 0)	 {
    if(LAdmin[playerid] >= 2) {
	    if(IsPlayerInAnyVehicle(playerid)) {
	 	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i,false,true);
		CMDMessageToAdmins(playerid,"LOCKDOORS");
		DoorsLocked[playerid] = 1;
		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has locked his car",adminname);	SendClientMessageToAll(COLOR_BLUE,string);
		} else {
		SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be in a vehicle to lock the doors"); }
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/unlockdoors", true) == 0)	 {
	if(LAdmin[playerid] >= 2) {
		if(IsPlayerInAnyVehicle(playerid)) {
	 	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i,false,false);
		CMDMessageToAdmins(playerid,"UNLOCKDOORS");
		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has unlocked his car",adminname);	SendClientMessageToAll(COLOR_BLUE,string);
        } else {
		SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be in a vehicle to lock the doors"); }
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 2 to use this command");   }
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/lunjail", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
	    new player1, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
   		SendClientMessage(playerid, COLOR_RED, "USAGE: /lunjail [playerid]");
		return 1;	}
		player1 = strval(tmp);

	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"LUnJail");
			GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
			format(string,256,"Administrator %s has unjailed you",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
			format(string,256,"Administrator %s has unjailed %s",adminname, playername); SendClientMessageToAll(COLOR_BLUE,string);
			TogglePlayerControllable(player1,true); SpawnPlayer(player1); IsPlayerInJail[player1] = 0;
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/unfreeze", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
	    new player1, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
   		SendClientMessage(playerid, COLOR_RED, "USAGE: /unfreeze [playerid]");
		return 1;	}
		player1 = strval(tmp);

	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"Unfreeze");
			GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
			format(string,256,"Administrator %s has unfrozen you",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
			format(string,256,"Administrator %s has unfrozen %s",adminname, playername); SendClientMessageToAll(COLOR_BLUE,string);
			TogglePlayerControllable(player1,true); IsPlayerFrozen[player1] = 0;    PlayerPlaySound(player1,1057,0.0,0.0,0.0);
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/akill", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
	    new player1, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
   		SendClientMessage(playerid, COLOR_RED, "USAGE: /akill [playerid]");
		return 1;	}
		player1 = strval(tmp);

	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"AKILL");
			GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
			format(string,256,"Administrator %s has killed you",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
			format(string,256,"You have killed %s",playername); SendClientMessage(playerid,COLOR_BLUE,string);
			SetPlayerHealth(player1,0.0);
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}

//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/goto", true) == 0)	 {
    if(LAdmin[playerid] >= 2) {
	    new player1, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
   		SendClientMessage(playerid, COLOR_RED, "USAGE: /goto [playerid]");
		return 1;	}
		player1 = strval(tmp);

	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"GOTO");
			new Float:x, Float:y, Float:z;	GetPlayerPos(player1,x,y,z); SetPlayerInterior(playerid,GetPlayerInterior(player1));
			SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(player1));
			if(GetPlayerState(playerid) == 2)	{
				SetVehiclePos(GetPlayerVehicleID(playerid),x+3,y,z);	LinkVehicleToInterior(GetPlayerVehicleID(playerid),GetPlayerInterior(player1));
				SetVehicleVirtualWorld(GetPlayerVehicleID(playerid),GetPlayerVirtualWorld(player1));
			} else	{
				SetPlayerPos(playerid,x+2,y,z);	}
			GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
			//format(string,256,"Administrator %s has teleported to you",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
			format(string,256,"You have teleported to %s", playername); SendClientMessage(playerid,COLOR_BLUE,string);
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/gethere", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
	    new player1, tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
   		SendClientMessage(playerid, COLOR_RED, "USAGE: /gethere [playerid]");
		return 1;	}
		player1 = strval(tmp);

	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"GETHERE");
			new Float:x, Float:y, Float:z;	GetPlayerPos(playerid,x,y,z); SetPlayerInterior(player1,GetPlayerInterior(playerid));
			SetPlayerVirtualWorld(player1,GetPlayerVirtualWorld(playerid));
			if(GetPlayerState(player1) == 2)	{
			    new VehicleID = GetPlayerVehicleID(player1);
				SetVehiclePos(VehicleID,x+3,y,z);   LinkVehicleToInterior(VehicleID,GetPlayerInterior(playerid));
				SetVehicleVirtualWorld(GetPlayerVehicleID(player1),GetPlayerVirtualWorld(playerid));
			} else	{
				SetPlayerPos(player1,x+2,y,z);		}
			GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
			format(string,256,"You have been teleported to Administrator %s's location",adminname);	SendClientMessage(player1,COLOR_BLUE,string);
			format(string,256,"You have teleported %s to your location", playername); SendClientMessage(playerid,COLOR_BLUE,string);
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/giveweapon", true) == 0)
	{
	if(LAdmin[playerid] >= 2) {
	    new player1, tmp[256],weap,ammo;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /giveweapon [playerid] [weapon id]");
		return 1;	}

		player1 = strval(tmp);
		tmp = strtok(cmdtext, idx);
		weap = strval(tmp);
		if(!IsValidWeapon(weap))	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Weapon ID");
		return 1;	}
		tmp = strtok(cmdtext, idx);
		ammo = strval(tmp);
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
	 	if(IsPlayerConnected(player1))		{
			CMDMessageToAdmins(playerid,"GIVEWEAPON");
			GivePlayerWeapon(player1, weap, ammo);
			format(string, sizeof(string), "You have given %s weapon id: %d with %d rounds of ammo", playername,weap,ammo);	SendClientMessage(playerid,COLOR_BLUE,string);
			format(string,256,"Administrator %s has given you weapon id: %d with %d rounds of ammo",adminname,weap,ammo); if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
   			return 1;
		} else {
 		SendClientMessage(playerid, COLOR_RED, "Player is not connected");
 		return 1;	}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/sethealth", true) == 0)
	{
    if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /sethealth [playerid] [Amount]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /sethealth [playerid] [Amount]");
			return 1;
			}

		new amount;
		amount = strval(tmp);
		if((amount > 100) && (LAdmin[player1] != MAX_ADMIN_LEVEL) && (LAdmin[playerid] != MAX_ADMIN_LEVEL)  )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Health Amount");  }

		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETHEALTH");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your health to %d",adminname,amount);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's health to %d",playername,amount); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerHealth(player1,amount);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setarmour", true) == 0)
	{
    if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setarmour [playerid] [Amount]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setarmour [playerid] [Amount]");
			return 1;
			}

		new amount;
		amount = strval(tmp);
		if((amount > 100) && (LAdmin[player1] != MAX_ADMIN_LEVEL) && (LAdmin[playerid] != MAX_ADMIN_LEVEL)  )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Armour Amount");	}

		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETARMOUR");
		GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your armour to %d",adminname,amount);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's armour to %d",playername,amount); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerArmour(player1,amount);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setcash", true) == 0)
	{
    if(LAdmin[playerid] >= 2) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setcash [playerid] [Amount]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setcash [playerid] [Amount]");
			return 1;	}

		new amount;
		amount = strval(tmp);
 		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETCASH");
		GetPlayerName(player1, playername, sizeof(playername));	GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your cash to $%d",adminname,amount);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's cash to $%d",playername,amount); SendClientMessage(playerid,COLOR_BLUE,string);
		ResetPlayerMoney(player1);	GivePlayerMoney(player1,amount);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/setscore", true) == 0)
	{
    if(LAdmin[playerid] >= 2) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setscore [playerid] [Amount]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setscore [playerid] [Amount]");
			return 1;
			}

		new score;
		score = strval(tmp);
		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETSCORE");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your score to %d",adminname,score);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's score to %d",playername,score); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerScore(player1,score);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/setskin", true) == 0)
	{
    if(LAdmin[playerid] >= 2) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setskin [playerid] [skinid]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setskin [playerid] [skinid]");
			return 1;	}

		new SkinID;
		SkinID = strval(tmp);
		if((SkinID == 0)||(SkinID == 7)||(SkinID >= 9 && SkinID <= 41)||(SkinID >= 43 && SkinID <= 64)||(SkinID >= 66 && SkinID <= 73)||(SkinID >= 75 && SkinID <= 85)||(SkinID >= 87 && SkinID <= 118)||(SkinID >= 120 && SkinID <= 148)||(SkinID >= 150 && SkinID <= 207)||(SkinID >= 209 && SkinID <= 264)||(SkinID >= 274 && SkinID <= 288)||(SkinID >= 290 && SkinID <= 299)) {

		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETSKIN");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your skin to %d",adminname,SkinID);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's skin to %d",playername,SkinID); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerSkin(player1,SkinID);
		} else  {   SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect skin id");  return 1;	}
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/setwanted", true) == 0)
	{
    if(LAdmin[playerid] >= 1) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setwanted [playerid] [level]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setwanted [playerid] [level]");
			return 1;	}

		new SkinID;
		SkinID = strval(tmp);
		if(SkinID < 7) {

		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"SETWANTED");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your wanted level to %d",adminname,SkinID);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's wanted level to %d",playername,SkinID); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerWantedLevel(player1,SkinID);
		} else  {   SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect wanted level");  return 1;	}
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/setname", true) == 0)
	{
    if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setname [playerid] [Name]");
			return 1;
			}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setname [playerid] [Name]");
			return 1;	}

		new NewName;
        NewName = strval(tmp);
		new length = strlen(cmdtext);
		if(length < 14 || length > 30 )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Name Length");
		return 1;	}
		tmp = strtok(cmdtext, idx);

        PlayerNewName[player1] = NewName;
        CMDMessageToAdmins(playerid,"SETNAME");
		new strname[30];    format(strname,30,"%s",cmdtext[11]);
		GetPlayerName(player1, playername, sizeof(playername));
		SetPlayerName(player1,cmdtext[11]);	//OnPlayerConnect(player1);
  		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your name to %s",adminname,cmdtext[11]);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's name to %s",playername,cmdtext[11]); SendClientMessage(playerid,COLOR_BLUE,string);
	} else	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd,"/carcolour",true) == 0)	{
	if(LAdmin[playerid] >= 1) {
		new tmp[256], colour1, colour2;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /carcolour [playerid] [colour 1] [colour 2]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);
		colour1 = strval(tmp);
		if(colour1 < 0 || colour1 > 126)		{
			SendClientMessage(playerid, COLOR_RED, "ERROR: Colour Number can't be below 0 or above 126");
			return 1;		}
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))		{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /carcolour [playerid] [colour 1] [colour 2]");
			return 1;		}
		colour2 = strval(tmp);
		if(colour2 < 0 || colour2 > 126)		{
			SendClientMessage(playerid, COLOR_RED, "ERROR: Colour Number can't be below 0 or above 126");
		 	return 1;	 	}

       	CMDMessageToAdmins(playerid,"CARCOLOUR");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your vehicle's colour to: Colour1 ID %d || Colour2 ID %d",adminname,colour1,colour2);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's vehicle's colour to: Colour1 ID %d || Colour2 ID %d",playername,colour1,colour2); SendClientMessage(playerid,COLOR_BLUE,string);
		ChangeVehicleColor(GetPlayerVehicleID(player1),colour1,colour2);
	} else	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");   }
	return 1;	}

//------------------------------------------------------------------------------
	if(strcmp(cmd,"/carhealth",true) == 0)	{
		if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /carhealth [playerid] [Amount]");
			return 1;	}
		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected or is yourself");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /carhealth [playerid] [Amount]");
			return 1;		}

		new amount;
		amount = strval(tmp);
		if((amount < 0  || amount > 1000000) && (LAdmin[player1] != MAX_ADMIN_LEVEL) && (LAdmin[playerid] != MAX_ADMIN_LEVEL)  )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Health Amount ");
        return 1;   }
		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"CARHEALTH");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has set your vehicle health to %d",adminname,amount);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have set %s's vehicle health to %d",playername,amount); SendClientMessage(playerid,COLOR_BLUE,string);
		SetVehicleHealth(GetPlayerVehicleID(player1),amount);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
		return 1;	}
//=========================[EJECT]==============================================
	if(strcmp(cmd, "/eject", true) == 0)	{
	if(LAdmin[playerid] >= 3) {
		new tmp[256];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /eject [playerid]");
		return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

       	CMDMessageToAdmins(playerid,"EJECT");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s has ejects you",adminname);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have ejected %s",playername); SendClientMessage(playerid,COLOR_BLUE,string);
		RemovePlayerFromVehicle(player1);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/fu", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
		new tmp[256],NewName[20];
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /fu [playerid]");
		return 1;	}

		new player1;
		player1 = strval(tmp);
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID || (LAdmin[player1] == MAX_ADMIN_LEVEL && LAdmin[playerid] != MAX_ADMIN_LEVEL) )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		CMDMessageToAdmins(playerid,"F U");
		GetPlayerName(player1, playername, sizeof(playername));		GetPlayerName(playerid, adminname, sizeof(adminname));
		format(string,256,"Administrator %s says fuck you",adminname);	if(player1 != playerid)	{	SendClientMessage(player1,COLOR_BLUE,string); }
		format(string,256,"You have told %s fuck you",playername); SendClientMessage(playerid,COLOR_BLUE,string);
		SetPlayerHealth(player1,1.0); SetPlayerArmour(player1,0.0); ResetPlayerWeapons(player1);ResetPlayerMoney(player1);GivePlayerWeapon(player1,24,1);
		SetPlayerSkin(player1, 137); SetPlayerScore(player1, 0); SetPlayerColor(player1,COLOR_PINK); SetPlayerWeather(player1,19);
		format(NewName,sizeof(NewName),"[Noob]%s",playername); SetPlayerName(player1,NewName);
		if(IsPlayerInAnyVehicle(player1)) EraseVehicle(GetPlayerVehicleID(player1));
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/laston", true) == 0)	{
	if(LAdmin[playerid] >= 2) {
    new file[256],name[24],str[256]; GetPlayerName(playerid,name,24); format(file,256,"/users/%s.sav",udb_encode(name));
	new tmp2[256];

	if(dUserINT(PlayerName2(playerid)).("LastOn")==0) {
		format(str, sizeof(str),"Never");
		tmp2 = str;
	} else {
		tmp2 = dini_Get(file,"LastOn");		}

	format(str, sizeof(str),"Last on = %s",tmp2);
	SendClientMessage(playerid, COLOR_RED, str);
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");   }
	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/getinfo", true) == 0)
	{
    if(LAdmin[playerid] >= 2) {
	    new tmp[256];
		tmp = strtok(cmdtext, idx);
		new player1;
		player1 = strval(tmp);

		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /getinfo [playerid]");
			}
		if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID )	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Player is not connected");
		return 1;	}
		tmp = strtok(cmdtext, idx);

		GetPlayerName(player1, playername, sizeof(playername));
	    new Float:player1health, Float:player1armour; GetPlayerHealth(player1,player1health); GetPlayerArmour(player1,player1armour);
	    new playerip[256]; GetPlayerIp(player1, playerip, sizeof(playerip));
	    new Float:x, Float:y, Float:z; GetPlayerPos(player1,x,y,z);

		if(LoggedIn[player1] == 1)
		{
			new getinfotext[256];
			format(getinfotext, sizeof(getinfotext),"INFO: 			[ ID: %d   ||  Name: %s ]",player1, playername);
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Health[%d] Armour[%d] Ammo[%d] Score[%d] Cash[%d] Skin[%d]  IP[%s]  Ping[%d]",floatround(player1health),floatround(player1armour),GetPlayerAmmo(player1),
			GetPlayerScore(player1),GetPlayerMoney(player1),GetPlayerSkin(player1),playerip,GetPlayerPing(player1) );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Interior[%d] Virtual World[%d] Wanted Level[%d] X[%0.2f] Y[%0.2f] Z[%0.2f]", GetPlayerInterior(player1), GetPlayerVirtualWorld(player1), GetPlayerWantedLevel(player1),
			Float:x,Float:y,Float:z);
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Times On Server [%d] Kills[%d] Deaths[%d] Ratio[%0.2f] AdminLevel[%d]", (dUserINT(PlayerName2(player1)).("TimesOnServer")),
			MyKills[player1] ,MyDeaths[player1],Float:MyKills[player1]/Float:MyDeaths[player1],(dUserINT(PlayerName2(player1)).("level")) );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Registered[%d] Logged[%d] In Jail[%d] Frozen [%d]",(dUserINT(PlayerName2(player1)).("Registered")), (dUserINT(PlayerName2(player1)).("LoggedIn")),
	        IsPlayerInJail[player1], IsPlayerFrozen[player1] );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			} else {
			new getinfotext[256];
			format(getinfotext, sizeof(getinfotext),"INFO: 			[ ID: %d   ||  Name: %s ]",player1, playername);
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Health:[%d] Armour:[%d] Ammo[%d] Score[%d] Cash[%d] Skin[%d]  IP[%s]  Ping[%d]",floatround(player1health),floatround(player1armour),GetPlayerAmmo(player1),
			GetPlayerScore(player1),GetPlayerMoney(player1),GetPlayerSkin(player1),playerip,GetPlayerPing(player1) );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Interior[%d] Virtual World[%d] Wanted Level[%d] X[%0.2f] Y[%0.2f] Z[%0.2f]", GetPlayerInterior(player1), GetPlayerVirtualWorld(player1), GetPlayerWantedLevel(player1),
			Float:x,Float:y,Float:z);
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: Times On Server [%d] Kills[%d] Deaths[%d] Ratio[%0.2f] AdminLevel[%d]", (dUserINT(PlayerName2(player1)).("TimesOnServer")),
			MyKills[player1] ,MyDeaths[player1],Float:MyKills[player1]/Float:MyDeaths[player1],(dUserINT(PlayerName2(player1)).("level")) );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			format(getinfotext, sizeof(getinfotext),"INFO: [ Not Registered ] [ Not Logged In ] In Jail[%d] Frozen [%d]", IsPlayerInJail[player1], IsPlayerFrozen[player1] );
			SendClientMessage(playerid,COLOR_BLUE,getinfotext);
			}
		} else	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be administrator level 2 to use this command");   }
	return 1;	}

//==============================================================================
	if(strcmp(cmd, "/getall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
		new Float:x,Float:y,Float:z, interior;
    	GetPlayerPos(playerid,x,y,z);	interior = GetPlayerInterior(playerid);
    	SendClientMessage(playerid,COLOR_BLUE,"All players are now at your location");
    	CMDMessageToAdmins(playerid,"GETALL");  GetPlayerName(playerid, adminname, sizeof(adminname));
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) && i != playerid)	{
		SetPlayerPos(i,x+2,y+2,z);	SetPlayerInterior(i,interior); PlayerPlaySound(i,1057,0.0,0.0,0.0);	format(string,256,"Administrator %s has teleported you",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/healall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"HEALALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have healed all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		SetPlayerHealth(i,100.0); PlayerPlaySound(i,1057,0.0,0.0,0.0);	format(string,256,"Administrator %s has restored your health",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/armourall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"ARMOURALL");   GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have given all players armour");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		SetPlayerArmour(i,100.0); PlayerPlaySound(i,1057,0.0,0.0,0.0);	format(string,256,"Administrator %s has restored your armour",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/killall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"KILLALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have killed all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1 && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		SetPlayerHealth(i,0.0);	format(string,256,"Administrator %s has killed you",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/freezeall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"FREEZEALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have frozen all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1 && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		TogglePlayerControllable(playerid,false);	format(string,256,"Administrator %s has frozen you",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/unfreezeall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"UNFREEZEALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have unfrozen all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1 && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has unfrozen you",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/kickall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"KICKALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have kicked all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1 && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		format(string,256,"Administrator %s has kick everyone",adminname);	SendClientMessage(i,COLOR_BLUE,string); Kick(i);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------
	if(strcmp(cmd, "/disarmall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"DISARMALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	SendClientMessage(playerid,COLOR_BLUE,"You have disarmed all players");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		ResetPlayerWeapons(i); PlayerPlaySound(i,1057,0.0,0.0,0.0);	format(string,256,"Administrator %s has disarmed you",adminname);	SendClientMessage(i,COLOR_BLUE,string);	}
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/ejectall", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
    	CMDMessageToAdmins(playerid,"EJECTALL"); GetPlayerName(playerid, adminname, sizeof(adminname));
       	SendClientMessage(playerid,COLOR_BLUE,"You have ejected everyone from their vehicle");
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i) && (i != playerid) && i != MAX_ADMIN_LEVEL)	{
		RemovePlayerFromVehicle(i); PlayerPlaySound(i,1057,0.0,0.0,0.0); format(string,256,"Administrator %s has ejected you",adminname); if(i != playerid) { SendClientMessage(i,COLOR_BLUE,string); } }
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
	if(strcmp(cmd, "/setllwanted", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {

	    new tmp[256],wanted;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /setallwanted [level]");
		return 1;	}

		wanted = strval(tmp);
		if(wanted > 6)	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Wanted Level");
		return 1;	}
		tmp = strtok(cmdtext, idx);

    	CMDMessageToAdmins(playerid,"SETALLWANTED"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	format(string, sizeof(string), "You have set everyone's wanted level to %d",wanted);	SendClientMessage(playerid,COLOR_BLUE,string);
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		PlayerPlaySound(i,1057,0.0,0.0,0.0); format(string,256,"Administrator %s has set your wanted level to %d",adminname,wanted); if(i != playerid)	{	SendClientMessage(i,COLOR_BLUE,string); }
		SetPlayerWantedLevel(i,wanted); }
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}

 //------------------------------------------------------------------------------ //------------------------------------------------------------------------------
	if(strcmp(cmd, "/giveallweapon", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {

	    new tmp[256],weap,ammo;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /giveallweapon [playerid] [weapon id]");
		return 1;	}

		weap = strval(tmp);
		if(!IsValidWeapon(weap))	{
		SendClientMessage(playerid,COLOR_RED,"ERROR: Incorrect Weapon ID");
		return 1;	}
		tmp = strtok(cmdtext, idx);
		ammo = strval(tmp);

    	CMDMessageToAdmins(playerid,"GIVEALLWEAPON"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	format(string, sizeof(string), "You have given everyone weapon id: %d with %d rounds of ammo",weap,ammo);	SendClientMessage(playerid,COLOR_BLUE,string);
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		PlayerPlaySound(i,1057,0.0,0.0,0.0); format(string,256,"Administrator %s has given you weapon id: %d with %d rounds of ammo",adminname,weap,ammo); if(i != playerid)	{	SendClientMessage(i,COLOR_BLUE,string); }
		GivePlayerWeapon(i,weap,ammo); }
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setallworld", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {
	    new tmp[256];
     	tmp = strtok(cmdtext, idx);
 		if(!strlen(tmp))	{
			SendClientMessage(playerid, COLOR_RED, "USAGE: /setallworld [virtual world]");
			return 1;	}

		new world;
		world = strval(tmp);
		tmp = strtok(cmdtext, idx);

		CMDMessageToAdmins(playerid,"SETALLWORLD");
		GetPlayerName(playerid, adminname, sizeof(adminname)); PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
		format(string,256,"You have set everyones virtual world to %d",world); SendClientMessage(playerid,COLOR_BLUE,string);
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		format(string,256,"Administrator %s has set your virtual world to %d",adminname,world);
        SendClientMessage(i,COLOR_BLUE,string); SetPlayerVirtualWorld(i,world); PlayerPlaySound(i,1057,0.0,0.0,0.0); }
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}

//------------------------------------------------------------------------------
	if(strcmp(cmd, "/setallscore", true) == 0)	 {
    if(LAdmin[playerid] >= 3) {

	    new tmp[256],score;
		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))	{
		SendClientMessage(playerid, COLOR_RED, "USAGE: /setallscore [score]");
		return 1;	}

		score = strval(tmp);
		tmp = strtok(cmdtext, idx);


    	CMDMessageToAdmins(playerid,"SETALLWANTED"); GetPlayerName(playerid, adminname, sizeof(adminname));
    	format(string, sizeof(string), "You have set everyone's score to %d",score);	SendClientMessage(playerid,COLOR_BLUE,string);
	   	for(new i = 0; i <= MAX_PLAYERS; i++)
		{
		if(IsPlayerConnected(i) == 1)	{
		PlayerPlaySound(i,1057,0.0,0.0,0.0); format(string,256,"Administrator %s has set your score to %d",adminname,score); if(i != playerid)	{	SendClientMessage(i,COLOR_BLUE,string); }
		SetPlayerScore(i,score); }
		}
	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}

//==================================[ REMOTE CONSOLE ]==========================
	if(strcmp(cmd, "/loadfs", true) == 0)	 {
    if(LAdmin[playerid] >= 4) {
    new str[256]; format(str,256,"%s",cmdtext[1]); SendRconCommand(str);
   	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
	if(strcmp(cmd, "/unloadfs", true) == 0)	 {
    if(LAdmin[playerid] >= 4) {
    new str[256]; format(str,256,"%s",cmdtext[1]); SendRconCommand(str);
   	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
/*	if(strcmp(cmd, "/changemode", true) == 0)	 {
    if(LAdmin[playerid] >= 4) {
    new str[256]; format(str,256,"%s",cmdtext[1]); SendRconCommand(str);
   	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}
	if(strcmp(cmd, "/gmx", true) == 0)	 {
    if(LAdmin[playerid] >= 4) {
    new str[256]; format(str,256,"%s",cmdtext[1]); SendRconCommand(str);
   	} else 	{
	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");	}
 	return 1;	}*/
//------------------------------------------------------------------------------
	if (strcmp(cmd, "/admins", true) == 0)
	{
    new count=0;
    SendClientMessage(playerid, COLOR_GREEN, "________________________________________");
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(LAdmin[i] > 1)
            {
	        GetPlayerName(i, adminname, sizeof(adminname));
			format(string, 256, "Admin: %s [ID %d] [Level %d]", adminname,i,LAdmin[i]);
			SendClientMessage(playerid, COLOR_BLUE, string);
     		count++;
            }
            if(LAdmin[i] == 1)
            {
	        GetPlayerName(i, adminname, sizeof(adminname));
			format(string, 256, "Member: %s [ID %d] [Level %d]", adminname,i,LAdmin[i]);
			SendClientMessage(playerid, COLOR_BLUE, string);
     		count++;
            }
        }
    }
//-----=[ rcon  ]=------------------
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
            if(IsPlayerAdmin(i))
            {
	        GetPlayerName(i, adminname, sizeof(adminname));
			format(string, 256, "%s [ID %d] [rcon admin]", adminname,i);
			if(LAdmin[playerid] >= 1) SendClientMessage(playerid, COLOR_WHITE, string);
            }
        }
	}
    if(count == 0)    {
    SendClientMessage(playerid, COLOR_BLUE, "LAdmin Found No Administrators online");    }
    SendClientMessage(playerid, COLOR_GREEN, "________________________________________");
    return 1;
}
//========================[Time]================================================
	if(strcmp(cmd, "/time", true) == 0)	{
		new hour,minuite,second;	gettime(hour,minuite,second);
		FixHour(hour);		hour = shifthour;
		format(string, sizeof(string), "~g~|~w~%d:%d~g~|", hour, minuite);
		GameTextForPlayer(playerid, string, 5000, 1);
		return 1;	}
//========
	return 0;
}

dcmd_setgravity(playerid,params[]) {
	if(LAdmin[playerid] >= 3) {
	    if(!strlen(params)||!(strval(params)<=50&&strval(params)>=-50)) return SendClientMessage(playerid,COLOR_RED,"USAGE: /setgravity <-50.0 - 50.0>");
        CMDMessageToAdmins(playerid,"SETGRAVITY");
		new string[256],adminname[24]; GetPlayerName(playerid, adminname, sizeof(adminname)); new Float:Gravity = floatstr(params);format(string,256,"Admnistrator %s has set the gravity to %f",adminname,Gravity);
		SetGravity(Gravity); return SendClientMessageToAll(COLOR_BLUE,string);
	} else return SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");
}
dcmd_ladmincredits(playerid,params[]) {
	#pragma unused params
	return SendClientMessage(playerid,COLOR_GREEN,"LAdmin Info: [Creator: LethaL ] [Car Shop Menu: Darkimmortal] [Warn: Andre9977]");
}
dcmd_serverinfo(playerid,params[]) {
	#pragma unused params

    new TotalVehicles = CreateVehicle(411, 0, 0, 0, 0, 0, 0, 1000);
    DestroyVehicle(TotalVehicles);

	new Text:TT = TextDrawCreate(1,1,"Test");
	TextDrawDestroy(TT);
	new numo = CreateObject(1245,0,0,1000,0,0,0);
	DestroyObject(numo);
	new nump = CreatePickup(371,2,0,0,1000);
	DestroyPickup(nump);
	new gz = GangZoneCreate(3,3,5,5);
	GangZoneDestroy(gz);

	new model[250], nummodel;
	for(new i=1;i<TotalVehicles;i++) {
		model[GetVehicleModel(i)-400]++;
		}
	for(new i=0;i<250;i++) {
		if(model[i]!=0) {
		nummodel++; }
		}

	new string[256];
	format(string,256,"Server Info: [ Players Connected: %d || Maximum Players: %d ] [Ratio %0.2f ]",ConnectedPlayers(),GetMaxPlayers(),Float:ConnectedPlayers() / Float:GetMaxPlayers() );
	SendClientMessage(playerid,COLOR_GREEN,string);
	format(string,256,"Server Info: [ Vehicles: %d || Models %d || Players In Vehicle: %d || InCar %d / OnBike %d ]",TotalVehicles-1,nummodel, InVehCount(),InCarCount(),OnBikeCount() );
	SendClientMessage(playerid,COLOR_GREEN,string);
	format(string,256,"Server Info: [ Textdraws: %d || Objects: %d || Pickups %d || Gangzones %d ]",_:TT, numo,nump,gz);
	SendClientMessage(playerid,COLOR_GREEN,string);
	format(string,256,"Server Info: [ Player In Jail %d || Players Frozen %d ]",JailedPlayers(),FrozenPlayers() );
	return SendClientMessage(playerid,COLOR_GREEN,string);
}
dcmd_announce(playerid,params[]) {
    if(LAdmin[playerid] >= 1) {
        CMDMessageToAdmins(playerid,"ANNOUNCE");
    	if(!strlen(params)) return SendClientMessage(playerid,COLOR_RED,"Syntax Error: \"/ANNOUNCE <TEXT>\".");
		return GameTextForAll(params,4000,3);
    } else return SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 1 to use this command");
}
//=====================================[ Menus ]===========================================================
dcmd_lmenu(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 2) {
        if(IsPlayerInAnyVehicle(playerid)) {
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(XMainMenu,playerid);
        } else {  ShowMenuForPlayer(XMainMenu,playerid);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_ltele(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 2) {
        if(IsPlayerInAnyVehicle(playerid)) {
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(XTele,playerid);
        } else {  ShowMenuForPlayer(XTele,playerid);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_lweather(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 3) {
        if(IsPlayerInAnyVehicle(playerid)) {
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(LWeather,playerid);
        } else {  ShowMenuForPlayer(LWeather,playerid);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_ltime(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 3) {
        if(IsPlayerInAnyVehicle(playerid)) {
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(LTime,playerid);
        } else {  ShowMenuForPlayer(LTime,playerid);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_cm(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 2) {
        if(IsPlayerInAnyVehicle(playerid)) {
        SendClientMessage(playerid,COLOR_RED,"ERROR: You already have a car.");
        } else {  ShowMenuForPlayer(LCars,playerid); TogglePlayerControllable(playerid,false);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_ltmenu(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 2) {
        if(IsPlayerInAnyVehicle(playerid)) {
		new LVehicleID = GetPlayerVehicleID(playerid), LModel = GetVehicleModel(LVehicleID);
        switch(LModel) { case 448,461,462,463,468,471,509,510,521,522,523,581,586: return SendClientMessage(playerid,COLOR_RED,"ERROR: You can not tune bikes!"); }
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(LTuneMenu,playerid);
        } else {  SendClientMessage(playerid,COLOR_RED,"ERROR: You do not have a vehicle to tune");  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_lweapons(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 3) {
        if(IsPlayerInAnyVehicle(playerid)) {
        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(XWeapons,playerid);
        } else {  ShowMenuForPlayer(XWeapons,playerid);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
dcmd_lvehicle(playerid,params[]) {
    #pragma unused params
    if(LAdmin[playerid] >= 2) {
        if(IsPlayerInAnyVehicle(playerid)) {
        SendClientMessage(playerid,COLOR_RED,"ERROR: You already have a car.");
        } else {  ShowMenuForPlayer(XVehicles,playerid); TogglePlayerControllable(playerid,false);  }
    } else {	SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");    }
    return 1;
}
//========================[ADMIN AREA]==========================================
dcmd_adminarea(playerid,params[]) {
	#pragma unused params
    if(LAdmin[playerid] >= 2) {
        CMDMessageToAdmins(playerid,"ADMINAREA");
	    GameTextForPlayer(playerid,"Welcome Admin",1000,3);	SetPlayerPos(playerid,377.9259,170.8513,1008.383); 	SetPlayerInterior(playerid,3);
      	} else	{
   		SendClientMessage(playerid,COLOR_RED, "ERROR: You must be an administrator to use this command.");
   		SetPlayerHealth(playerid,1.0);	new pname[MAX_PLAYER_NAME], string[256];	GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
   		format(string, sizeof(string), "SERVER MESSAGE: %s has been used adminarea (non admin)", pname);
   		MessageToAdmins(COLOR_RED,string);
   		}
		}
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. Use /join to jo in, and /ready");
	SendClientMessage(playerid, COLOR_WHITE, "once at start to begin the race once others are ready as well. /leave to leave");
	SendClientMessage(playerid, COLOR_WHITE, "the race./endrace to aborts the race. /bestlap and /bestrace can be used to");
	SendClientMessage(playerid, COLOR_WHITE, "display record times for the races, you can also specify a race to see the");
	SendClientMessage(playerid, COLOR_WHITE, "times for it. For info on building races, see /buildhelp. For additional");
	SendClientMessage(playerid, COLOR_WHITE, "settings, see /raceadmin.");
	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, /cp for new a checkpoint, /scp to select an old");
	SendClientMessage(playerid, COLOR_WHITE, "checkpoint, /dcp to delete, /mcp to move and /rcp to replace with a new one.");
	SendClientMessage(playerid, COLOR_WHITE, "/editrace to load a race to editor. /saverace [name] to save the race and");
	SendClientMessage(playerid, COLOR_WHITE, "/buildmenu to set racemode/laps/etc. For info on racing itself, see /racehelp");
	SendClientMessage(playerid, COLOR_WHITE, "For additional settings, see /raceadmin.");
	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, dork.");
	}
	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 = strtok(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[MAX_STRING];
	dir = strtok(params, idx);
	new Float:amount=floatstr(strtok(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 = strtok(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;
	    strtok(templine,i); // read off YRACE
		fileversion = strval(strtok(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;
		}
		strtok(templine,i); // read off RACEBUILDER
		Bracemode[b(playerid)] = strval(strtok(templine,i)); // read off racemode
		Blaps[b(playerid)] = strval(strtok(templine,i)); // read off amount of laps
		if(fileversion >= 2)
		{
		    BAirrace[b(playerid)] = strval(strtok(templine,i));
		    BCPsize[b(playerid)] = floatstr(strtok(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(strtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(strtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(strtok(templine,i));
	}
	while(fread(f,templine,sizeof(templine),false))
	{
		BCurrentCheckpoints[b(playerid)]++;
		i=0;
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][0] = floatstr(strtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][1] = floatstr(strtok(templine,i));
		BRaceCheckpoints[b(playerid)][BCurrentCheckpoints[b(playerid)]][2] = floatstr(strtok(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 = strtok(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 = strtok(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 = strtok(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[MAX_STRING], idx, fback;
    tmp = strtok(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[MAX_STRING], idx;
	filename = strtok(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[MAX_STRING], idx;
    tmp = strtok(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[MAX_STRING], idx;
    tmp = strtok(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[MAX_STRING];
	tmp = strtok(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(strtok(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(strtok(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

dcmd_scores(playerid,params[])
{
	#pragma unused playerid, params
	new sstring[256], sstring2[256];

	format(sstring, sizeof(sstring), "%s: %d Kills", TEAM1, sCount1);
	format(sstring2, sizeof(sstring2), "%s: %d Kills", TEAM2, sCount2);
	SendClientMessageToAllEx(COLOR_YELLOW, sstring);
	SendClientMessageToAllEx(COLOR_YELLOW, sstring2);
	return 1;
}
dcmd_reset(playerid,params[])
{
	#pragma unused params
	if(IsPlayerConnected(playerid) && IsPlayerAdmin(playerid))
	{
		SendClientMessageToAllEx(COLOR_YELLOW, "Clan War Reset!");
		sCount1 = 0;
		sCount2 = 0;
		for(new i=0;i<MAX_PLAYERS;i++)
		{
			TogglePlayerControllable(i,1);
			SpawnPlayer(i);
			DeathCount[i] = 0;
			SetPlayerScore(i, 0);
		}
	}
}

dcmd_help(playerid,params[])
{
	#pragma unused params
	SendClientMessage(playerid, COLOR_YELLOW, "/scores, /reset(Admin Only)");
	return 1;
}

dcmd_kill(playerid,params[])
{
	#pragma unused params
	SetPlayerHealth(playerid, 0.0);
	return 1;
}

dcmd_me(playerid,params[])
{
	if(!strlen(params)) {
		SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /me [text]");
		return 1;
	}
	new str[128];
	new playerColor = GetPlayerColor(playerid);
	GetPlayerName(playerid, str, sizeof(str));
	format(str, sizeof(str), "%s %s", str, params);
	SendClientMessageToAll(playerColor, str);
	return 1;
}

dcmd_stunt(playerid,params[])
{
	#pragma unused params
	ShowMenuForPlayer(Stunt, playerid);
	return 1;
}

dcmd_stunthelp(playerid,params[])
{
	#pragma unused params
	SendClientMessage(playerid, COLOR_RED, "================Commands=================");
	SendClientMessage(playerid, COLOR_RED, "            /stunt /fixveh");
	SendClientMessage(playerid, COLOR_RED, "=============Commands End================");
	return 1;
}

//==============================================================================
ChangeMenu(playerid,Menu:oldmenu,Menu:newmenu){
	if(IsValidMenu(oldmenu))
		HideMenuForPlayer(oldmenu,playerid);
	ShowMenuForPlayer(newmenu,playerid);
	return 1;
}
CloseMenu(playerid,Menu:oldmenu){
	HideMenuForPlayer(oldmenu,playerid);
	TogglePlayerControllable(playerid,1);
	return 1;
}
BuyCar(playerid,vehid,Menu:mnu){
		new Float:X,Float:Y,Float:Z,Float:A;
		CloseMenu(playerid,mnu);
		SetCameraBehindPlayer(playerid);
		GetPlayerPos(playerid,X,Y,Z);
		GetPlayerFacingAngle(playerid,A);
		new carid = CreateVehicle(vehid,X,Y,Z,A,-1,-1,600);
		PutPlayerInVehicle(playerid,carid,0);
		return 0;
	}
//------------------------------------------------------------------------------
MaxAmmo(playerid)   {
new slot, weap, ammo;
for (slot = 0; slot < 14; slot++)
	{
    GetPlayerWeaponData(playerid, slot, weap, ammo);
	if (IsValidWeapon(weap))
	{
   	GivePlayerWeapon(playerid, weap, 99999);
	}
}
return 1;
}

//==============================================================================
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	new x = 0;
	while(x!=MAX_PLAYERS) {
	    if( IsPlayerConnected(x) &&	GetPlayerState(x) == PLAYER_STATE_SPECTATING &&
			gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_PLAYER )
   		{
   		    SetPlayerInterior(x,newinteriorid);
		}
		x++;
	}
}
//==============================================================================
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID) {
		if(newkeys == KEY_JUMP) {
			AdvanceSpectate(playerid);
		}
		else if(newkeys == KEY_SPRINT) {
	    	ReverseSpectate(playerid);
		}
	}
	return 1; }
//==============================================================================
public OnPlayerEnterVehicle(playerid, vehicleid) {
	for(new x=0; x<MAX_PLAYERS; x++) {
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid) {
	        TogglePlayerSpectating(x, 1);
	        PlayerSpectateVehicle(x, vehicleid);
	        gSpectateType[x] = ADMIN_SPEC_TYPE_VEHICLE;
		}
	}
	return 1; }
//==============================================================================
public OnPlayerStateChange(playerid, newstate, oldstate){
	switch(newstate){
		case PLAYER_STATE_ONFOOT:{
			switch(oldstate){
				case PLAYER_STATE_DRIVER:OnPlayerExitVehicle(playerid,255);
				case PLAYER_STATE_PASSENGER:OnPlayerExitVehicle(playerid,255);
			}
		}
	}
	return 1; }
//==============================================================================
stock StartSpectate(playerid, specplayerid)
{
	for(new x=0; x<MAX_PLAYERS; x++) {
	    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid) {
	       AdvanceSpectate(x);
		}
	}
	if(IsPlayerInAnyVehicle(specplayerid)) {
		SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
		TogglePlayerSpectating(playerid, 1);
		PlayerSpectateVehicle(playerid, GetPlayerVehicleID(specplayerid));
		gSpectateID[playerid] = specplayerid;
		gSpectateType[playerid] = ADMIN_SPEC_TYPE_VEHICLE;
	}
	else {
		SetPlayerInterior(playerid,GetPlayerInterior(specplayerid));
		TogglePlayerSpectating(playerid, 1);
		PlayerSpectatePlayer(playerid, specplayerid);
		gSpectateID[playerid] = specplayerid;
		gSpectateType[playerid] = ADMIN_SPEC_TYPE_PLAYER;
	}
	new string[100];
	GetPlayerName(specplayerid,string,sizeof(string));
	format(string,sizeof(string),"~w~%s - ID:%d~n~< sprint - jump >", string,specplayerid);//sprint  jump
	SpecText = TextDrawCreate(271.000000,427.000000,string);
	TextDrawTextSize(SpecText,437.000000,0.000000);
	TextDrawSetOutline(SpecText,1);
	TextDrawSetShadow(SpecText,1);

    TextDrawShowForPlayer(playerid,SpecText);

	return 1;
}
//------------------------------------------------------------------------------
stock StopSpectate(playerid)
{
	TogglePlayerSpectating(playerid, 0);
	gSpectateID[playerid] = INVALID_PLAYER_ID;
	gSpectateType[playerid] = ADMIN_SPEC_TYPE_NONE;
	GameTextForPlayer(playerid,"~n~~n~~n~~w~Spectate off",1000,3);
	TextDrawDestroy(SpecText);
	return 1;
}
//------------------------------------------------------------------------------
stock AdvanceSpectate(playerid)
{
    if(ConnectedPlayers() == 2) { StopSpectate(playerid); return 1; }
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID) {
	    for(new x=gSpectateID[playerid]+1; x<=MAX_PLAYERS; x++) {
	    	if(x == MAX_PLAYERS) { x = 0; }
	        if(IsPlayerConnected(x) && x != playerid) {
				if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] != INVALID_PLAYER_ID ||
					(GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
				{
					continue;
				}
				else {
					StartSpectate(playerid, x);
					break;
				}
			}
		}
	}
	return 1;
}
//------------------------------------------------------------------------------
stock ReverseSpectate(playerid)
{
    if(ConnectedPlayers() == 2) { StopSpectate(playerid); return 1; }
	if(GetPlayerState(playerid) == PLAYER_STATE_SPECTATING && gSpectateID[playerid] != INVALID_PLAYER_ID) {
	    for(new x=gSpectateID[playerid]-1; x>=0; x--) {
	    	if(x == 0) { x = MAX_PLAYERS; }
	        if(IsPlayerConnected(x) && x != playerid) {
				if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] != INVALID_PLAYER_ID ||
					(GetPlayerState(x) != 1 && GetPlayerState(x) != 2 && GetPlayerState(x) != 3))
				{
					continue;
				}
				else {
					StartSpectate(playerid, x);
					break;
				}
			}
		}
	}
	return 1;
}
//-------------------------------------------
forward PosAfterSpec(playerid);
public PosAfterSpec(playerid) {
	SetPlayerPos(playerid,Pos[playerid][0],Pos[playerid][1],Pos[playerid][2]);
	SetPlayerFacingAngle(playerid,Pos[playerid][3]);
}
//==============================================================================
EraseVehicle(vehicleid)
{
    for(new players=0;players<=MAX_PLAYERS;players++)
    {
        new Float:X,Float:Y,Float:Z;
        if (IsPlayerInVehicle(players,vehicleid))
        {
            GetPlayerPos(players,X,Y,Z);
            SetPlayerPos(players,X,Y,Z+2);
            SetVehicleToRespawn(vehicleid);
        }
        SetVehicleParamsForPlayer(vehicleid,players,0,1);
    }
    SetTimerEx("VehRes",3000,0,"d",vehicleid);
    return 1;
}
//==============================================================================
forward VehRes(vehicleid);
public VehRes(vehicleid)
{
    DestroyVehicle(vehicleid);
}
//==============================================================================
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(Invis[playerid] == 1) EraseVehicle(vehicleid);
if(DoorsLocked[playerid] == 1) SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),playerid,false,false);
//spec
for(new x=0; x<MAX_PLAYERS; x++) {
    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid && gSpectateType[x] == ADMIN_SPEC_TYPE_VEHICLE) {
        TogglePlayerSpectating(x, 1);
        PlayerSpectatePlayer(x, playerid);
        gSpectateType[x] = ADMIN_SPEC_TYPE_PLAYER;
	}
}
return 1;
}
//==============================================================================
public OnRconCommand(cmd[]) {

	if (strlen(cmd) > 50)
	{
		print("Invalid command length (exceeding 50 characters)");
		return true;
	}
//------------------------------------------

	else if(strcmp(cmd, "info", true)==0) {

    new TotalVehicles = CreateVehicle(411, 0, 0, 0, 0, 0, 0, 1000);
    DestroyVehicle(TotalVehicles);
	new Text:TT = TextDrawCreate(1,1,"Test");
	TextDrawDestroy(TT);
	new numo = CreateObject(1245,0,0,1000,0,0,0);
	DestroyObject(numo);
	new nump = CreatePickup(371,2,0,0,1000);
	DestroyPickup(nump);
	new gz = GangZoneCreate(3,3,5,5);
	GangZoneDestroy(gz);
	new model[250], nummodel;
	for(new i=1;i<TotalVehicles;i++) {
		model[GetVehicleModel(i)-400]++;
		}
	for (new i=0;i<250;i++) {
			if(model[i]!=0) {
			nummodel++; }
	}
	new string[256];
	print(" ===========================================================================");
	printf("                           Server Info:");
	format(string,256,"[ Players Connected: %d || Maximum Players: %d ] [Ratio %0.2f ]",ConnectedPlayers(),GetMaxPlayers(),Float:ConnectedPlayers() / Float:GetMaxPlayers() );
	printf(string);
	format(string,256,"[ Vehicles: %d || Models %d || Players In Vehicle: %d ]",TotalVehicles-1,nummodel, InVehCount() );
	printf(string);
	format(string,256,"[ InCar %d  ||  OnBike %d ]",InCarCount(),OnBikeCount() );
	printf(string);
	format(string,256,"[ Textdraws: %d || Objects: %d || Pickups %d  || Gangzones %d]",_:TT, numo-1,nump,gz);
	printf(string);
	format(string,256,"[ Players In Jail %d || Players Frozen %d ]",JailedPlayers(),FrozenPlayers() );
    printf(string);
    format(string,256,"[ Admins online %d ]",AdminCount() );
    printf(string);
	print(" ===========================================================================");
	return 1;
	}

	else if (!strcmp(cmd, "msg", .length = 3))
	{
	    new arg_1 = argpos(cmd),
	        arg_2 = argpos(cmd, arg_1),
	        targetid = strval(cmd[arg_1]),
    	    message[128];

    	if ( !cmd[arg_1] || cmd[arg_1] < '0' || cmd[arg_1] > '9' || targetid > max_playerid || targetid < 0 || !cmd[arg_2])
	        printf("Usage: \"msg <playerid(0-%d)> <message>\"",max_playerid);

	    else if ( !IsPlayerConnected(targetid) )
	        print("This player is not connected!");
    	else
	    {
	        format(message, sizeof(message), "[RCON] Message from an admin: %s", cmd[arg_2]);
	        SendClientMessage(targetid, 0xFFFFFFFF, message);
    	}
	    return true;
	}
//--------------------------------------------
	else if (!strcmp(cmd, "asay", .length = 4))
	{
	    new arg_1 = argpos(cmd),
    	    message[128];

    	if ( !cmd[arg_1] || cmd[arg_1] < '0')
	        print("Usage: \"asay  <message>\"");
	    else
	    {
	        format(message, sizeof(message), "[RCON] MessageToAdmins: %s", cmd[arg_1]);
	        MessageToAdmins(0xFFFFFFFF, message);
    	}
	    return true;
	}
//
	return 0;
}
//==============================================================================
forward HideNameTag();
public HideNameTag()
{
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
		for (new x = 0; x < MAX_PLAYERS; x++)
		{
	    	if(!LAdmin[i] && Invis[x] == 1)
			{
	   		ShowPlayerNameTagForPlayer(i,x,0);
			}
			else
			{
			ShowPlayerNameTagForPlayer(i,x,1);
			}
	    }
	}
  	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
        Object_OnPlayerDisconnect(playerid, reason);
	    if (LoggedIn[playerid] == 1) {
		dUserSetINT(PlayerName2(playerid)).("LoggedIn",0);
    	dUserSetINT(PlayerName2(playerid)).("money",GetPlayerMoney(playerid));
    	dUserSetINT(PlayerName2(playerid)).("kills",MyKills[playerid]);
	   	dUserSetINT(PlayerName2(playerid)).("deaths",MyDeaths[playerid]);
/*     	new Float:x,Float:y,Float:z, interior;
    	GetPlayerPos(playerid,x,y,z);	interior = GetPlayerInterior(playerid);
	    dUserSetINT(PlayerName2(playerid)).("x",floatround(x));
		dUserSetINT(PlayerName2(playerid)).("y",floatround(y));
		dUserSetINT(PlayerName2(playerid)).("z",floatround(z));
        dUserSetINT(PlayerName2(playerid)).("interior",interior);*/
		//weapons
 		new weap1, ammo1, weap2, ammo2, weap3, ammo3, weap4, ammo4, weap5, ammo5, weap6, ammo6;
		GetPlayerWeaponData(playerid,2,weap1,ammo1);// hand gun
		GetPlayerWeaponData(playerid,3,weap2,ammo2);//shotgun
		GetPlayerWeaponData(playerid,4,weap3,ammo3);// SMG
		GetPlayerWeaponData(playerid,5,weap4,ammo4);// AK47 / M4
		GetPlayerWeaponData(playerid,6,weap5,ammo5);// rifle
		GetPlayerWeaponData(playerid,7,weap6,ammo6);// rocket launcher
	   	dUserSetINT(PlayerName2(playerid)).("weap1",weap1); dUserSetINT(PlayerName2(playerid)).("weap1ammo",ammo1);
   		dUserSetINT(PlayerName2(playerid)).("weap2",weap2);	dUserSetINT(PlayerName2(playerid)).("weap2ammo",ammo2);
    	dUserSetINT(PlayerName2(playerid)).("weap3",weap3);	dUserSetINT(PlayerName2(playerid)).("weap3ammo",ammo3);
   		dUserSetINT(PlayerName2(playerid)).("weap4",weap4); dUserSetINT(PlayerName2(playerid)).("weap4ammo",ammo4);
   		dUserSetINT(PlayerName2(playerid)).("weap5",weap5);	dUserSetINT(PlayerName2(playerid)).("weap5ammo",ammo5);
   		dUserSetINT(PlayerName2(playerid)).("weap6",weap6); dUserSetINT(PlayerName2(playerid)).("weap6ammo",ammo6);

		new	Float:health;	GetPlayerHealth(playerid, Float:health);
		dUserSetINT(PlayerName2(playerid)).("health",floatround(health));
        new	Float:armour;	GetPlayerArmour(playerid, Float:armour);
		dUserSetINT(PlayerName2(playerid)).("armour",floatround(armour));
	   	new year,month,day;	getdate(year, month, day);
		new strdate[20];	format(strdate, sizeof(strdate), "%d.%d.%d",day,month,year);
		new file[256],name[24]; GetPlayerName(playerid,name,24); format(file,256,"/users/%s.sav",udb_encode(name));
		dini_Set(file,"LastOn",strdate);
		dUserSetINT(PlayerName2(playerid)).("TimesOnServer",(dUserINT(PlayerName2(playerid)).("TimesOnServer"))+1);
	}
		LoggedIn[playerid] = 0;
//spec--------------
		for(new x=0; x<MAX_PLAYERS; x++) {
		    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid) {
        	AdvanceSpectate(x);
			}
		}
		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;
	}
    	Object_OnPlayerDisconnect(playerid, reason);
		tkscore[playerid] = 0;
		new pName[MAX_PLAYER_NAME];
    	new string[56];
 		GetPlayerName(playerid, pName, sizeof(pName));
    	format(string, sizeof(string), "%s has left the server.", pName);
    	SendClientMessageToAllEx(COLOR_RED, string);
		return 1;
}

//==============================================================================
forward PutAtPos(playerid);
public PutAtPos(playerid) {
  if (dUserINT(PlayerName2(playerid)).("x")!=0) {
      //SendClientMessage(playerid,COLOR_BLUE,"Setting you to your last position. Welcome back!");
      SetPlayerPos(playerid,
                   float(dUserINT(PlayerName2(playerid)).("x")),
                   float(dUserINT(PlayerName2(playerid)).("y")),
                   float(dUserINT(PlayerName2(playerid)).("z")));
      SetPlayerInterior(playerid,	(dUserINT(PlayerName2(playerid)).("interior"))	);
  }
}




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 name[MAX_PLAYER_NAME], LapTime, RaceTime;
			LapTime=GetLapTick(playerid);
			RaceTime=GetRaceTick(playerid);
			GetPlayerName(playerid, name, MAX_PLAYER_NAME);
			RaceParticipant[playerid]=0;
			RaceSound(playerid,1139);
			format(ystring,sizeof(ystring),"%s has finished the race, position: %d",name,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_STRING], TempLapper[MAX_STRING], 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;
			    strtok(templine,idx); // read off YRACE
				fileversion = strval(strtok(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=strtok(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=strtok(templine,idx);
				    TempLap=strval(strtok(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;
	    strtok(templine,i); // read off YRACE
		fileversion = strval(strtok(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=strtok(templine,i); // read off RACEBUILDER
		ORacemode = strval(strtok(templine,i)); // read off racemode
		ORacelaps = strval(strtok(templine,i)); // read off amount of laps
		if(fileversion > 1)
		{
			Airrace = strval(strtok(templine,i));   // read off airrace
			CPsize = floatstr(strtok(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]=strtok(templine,i);
		    TopRacerTimes[j]=strval(strtok(templine,i));
		}
		fread(f,templine,sizeof(templine)); // read off best lap times
		i=0;
		for(new j=0;j<5;j++)
		{
		    TopLappers[j]=strtok(templine,i);
		    TopLapTimes[j]=strval(strtok(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(strtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(strtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(strtok(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(strtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][1] = floatstr(strtok(templine,i));
		RaceCheckpoints[LCurrentCheckpoint][2] = floatstr(strtok(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[255][255], idx, fback;
	f = fopen(rotfile, io_read);
	while(fread(f,templine,sizeof(templine),false))
	{
		idx = 0;
		rraces++;
		rracenames[rraces]=strtok(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;
}

//------------------------------------------------------------------------------



public OnPlayerSpawn(playerid)
{
	SetPlayerInterior(playerid,0);
	if(gTeam[playerid] == TEAM_1)
	{
		SetPlayerColor(playerid,COLOR_RED);// Red
		SetPlayerArmour(playerid, 100);
	}
	else if(gTeam[playerid] == TEAM_2)
	{
		SetPlayerColor(playerid,COLOR_BLUE); // Blue
		SetPlayerArmour(playerid, 100);
	}
	else if(gTeam[playerid] == TEAM_REF)
	{
		SetPlayerColor(playerid,COLOR_LIGHTBLUE); // Light Blue
		SetPlayerArmour(playerid, 100);
	}

	if(aAutoS == 1) // AUTO SPAWN IMPLEMENTATION
	{
		if(gTeam[playerid] == TEAM_1)
		{
			SetPlayerPos(playerid,1410.8242,2102.9089,12.0156);
			SetPlayerFacingAngle(playerid, 270);
			return 1;
		}
		else if(gTeam[playerid] == TEAM_2)
		{
			SetPlayerPos(playerid,1306.5330,2211.8743,12.0156);
			SetPlayerFacingAngle(playerid, 90);
			return 1;
		}
		else if(gTeam[playerid] == TEAM_REF)
		{
			SetPlayerPos(playerid,1368.5774,2196.8315,9.7578);
			SetPlayerFacingAngle(playerid, 90);
			ResetPlayerWeapons(playerid);
			GivePlayerWeapon(playerid, 43,500);
			return 1;
		}
	}
	Spawned[playerid] = 1;

	if(IsPlayerFrozen[playerid] == 1)   {
	TogglePlayerControllable(playerid,false); SendClientMessage(playerid,COLOR_RED,"You Are Still Frozen");   }

	if(IsPlayerInJail[playerid] == 1)   {
	SetTimerEx("JailPlayerAfterDeath",1500,0,"d",playerid); TogglePlayerControllable(playerid,false); SendClientMessage(playerid,COLOR_RED,"You Are Still In Jail");	}

	if((GetPlayerSkin(playerid) == AdminSkin1) || (GetPlayerSkin(playerid) == AdminSkin2)) {
		if(LAdmin[playerid] >= 1)   {
		GameTextForPlayer(playerid,"~b~Welcome~n~~w~Admin",4000,1);
		} else {
		GameTextForPlayer(playerid,"~r~This Skin Is For~n~Administrators~n~Only",4000,1);
		ForceClassSelection(playerid);	SetPlayerHealth(playerid,0.0);	}
	}
	if((dUserINT(PlayerName2(playerid)).("UseSkin")) == 1)   {
		if((LAdmin[playerid] >= 1) && (LoggedIn[playerid] == 1))  {
    	SetPlayerSkin(playerid,(dUserINT(PlayerName2(playerid)).("FavSkin")) );		}
	}

	if(LoggedIn[playerid] == 1)		{
	TimesSpawned[playerid]++;
	if(TimesSpawned[playerid] == 1) {
//	GivePlayerMoney(playerid,dUserINT(PlayerName2(playerid)).("money")-GetPlayerMoney(playerid));
//	SetTimerEx("PutAtPos",4000,0,"d",playerid);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap1"), dUserINT(PlayerName2(playerid)).("weap1ammo")	);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap2"), dUserINT(PlayerName2(playerid)).("weap2ammo")	);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap3"), dUserINT(PlayerName2(playerid)).("weap3ammo")	);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap4"), dUserINT(PlayerName2(playerid)).("weap4ammo")	);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap5"), dUserINT(PlayerName2(playerid)).("weap5ammo")	);
	GivePlayerWeapon(playerid, dUserINT(PlayerName2(playerid)).("weap6"), dUserINT(PlayerName2(playerid)).("weap6ammo")	);
	}
	}

/*	if (LoggedIn[playerid] == 0)    {
    TogglePlayerControllable(playerid,false);
    SendClientMessage(playerid, COLOR_RED, "You must be registered and logged in before playing");	}
*/
	return 1;
}

forward SetupPlayerForClassSelection(playerid);
public SetupPlayerForClassSelection(playerid) // CHANGE ALL
{
	SetPlayerInterior(playerid, 0);
	SetPlayerPos(playerid,1410.5830,2109.2654,12.0156);
	SetPlayerFacingAngle(playerid, 90);
	SetPlayerCameraPos(playerid,1368.5774,2196.8315,9.7578);
	SetPlayerCameraLookAt(playerid,1368.5774,2196.8315,9.7578);
	return 1;
}

//------------------------------------------------------------------------------

public OnPlayerDeath(playerid, killerid, reason)
{
	if(gTeam[killerid] != gTeam[playerid])
	{
		SendDeathMessage(killerid,playerid,reason);
		SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
	}
	else {
		new warning[256];
		format(warning, sizeof(warning), "Be careful! Do Not Team-Kill");
		SendClientMessage(killerid, 0xFFFF00AA, warning);
		SendDeathMessage(killerid,playerid,reason);
		SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
		tkscore[playerid]++;
		return 1;
	}
	new string[256], string2[256], string3[256], gtstring[256];
	DeathCount[playerid]++;

	if(killerid == INVALID_PLAYER_ID) {
		SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
		SetPlayerScore(playerid, GetPlayerScore(playerid)-1);
	}

	if(IsPlayerConnected(killerid))
	{
		if(gTeam[killerid] == TEAM_1)
		{
			sCount1++;
			format(string2, sizeof(string2), "%s Score: %d", TEAM1, sCount1);
			SendClientMessageToAllEx(COLOR_YELLOW, string2);
			for(new z=0;z<MAX_PLAYERS;z++)
			{
				if(gTeam[z] == 0)
				{
					format(gtstring, sizeof(gtstring), "~b~%s Score: ~r~%d", TEAM1, sCount1);
					GameTextForPlayer(z,gtstring,3500,3);
				}
			}
		}
		if(gTeam[killerid] == TEAM_2)
		{
			sCount2++;
			format(string3, sizeof(string3), "%s Score: %d", TEAM2, sCount2);
			SendClientMessageToAllEx(COLOR_YELLOW, string3);
			for(new y=0;y<MAX_PLAYERS;y++)
			{
				if(gTeam[y] == 1)
				{
					format(gtstring, sizeof(gtstring), "~b~%s Score: ~r~%d", TEAM2, sCount2);
					GameTextForPlayer(y,gtstring,3500,3);
				}
			}
		}
	}
	if(sCount1 == MAXKILLS)
	{
		format(string, sizeof(string), "%s has WON the CLAN WAR!", TEAM1);
		strins(winner,TEAM1,0,sizeof(winner));
		iStats();
		sStats();
		iFreeze();
		TogglePlayerControllable(playerid,0);
		SendClientMessageToAllEx(COLOR_YELLOW, string);
	}
	else if(sCount2 == MAXKILLS)
	{
		format(string, sizeof(string), "%s has WON the CLAN WAR!", TEAM2);
		strins(winner,TEAM2,0,sizeof(winner));
		iStats();
		sStats();
		iFreeze();
		TogglePlayerControllable(playerid,0);
		SendClientMessageToAllEx(COLOR_YELLOW, string);
	}
	if(InDuel[playerid] == 1)   {
GameTextForPlayer(killerid,"Winner !",3000,3);  SpawnPlayer(killerid);
GameTextForPlayer(playerid,"Loser !",3000,3);
for(new i = 0; i < MAX_PLAYERS; i++) {
InDuel[playerid] = 0;	}
}
//------
	for(new x=0; x<MAX_PLAYERS; x++) {
    if(GetPlayerState(x) == PLAYER_STATE_SPECTATING && gSpectateID[x] == playerid) {
       AdvanceSpectate(x);
	}
}
//------
	if (LoggedIn[playerid] == 1)
    {
    MyDeaths[playerid]++;
	MyKills[killerid]++;
	return 1;   }
	return 1;
	}


//------------------------------------------------------------------------------

public OnPlayerRequestClass(playerid, classid)
{
	if(aAutoS == 1)
	{

		if(gTeam[playerid] == TEAM_1)
		{
			GameTextForPlayer(playerid,TEAM1,1000,3);
			SetPlayerInterior(playerid, 0);
			SetPlayerPos(playerid,2789.9348,-2418.5481,13.6331);
			SetPlayerFacingAngle(playerid, 87);
			SetPlayerCameraPos(playerid,2783.6499,-2418.1187,13.6347);
			SetPlayerCameraLookAt(playerid,2789.9348,-2418.5481,13.6331);
		}
		else if(gTeam[playerid] == TEAM_2)
		{
			GameTextForPlayer(playerid,TEAM2,1000,3);
			SetPlayerInterior(playerid, 0);
			SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
			SetPlayerFacingAngle(playerid, 278);
			SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
			SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
		}
		else if(gTeam[playerid] == TEAM_REF)
		{
			GameTextForPlayer(playerid,"~g~Ref",1000,3);
			SetPlayerInterior(playerid, 0);
			SetPlayerPos(playerid,2731.3306,-2451.0273,17.5937);
			SetPlayerFacingAngle(playerid, 277);
			SetPlayerCameraPos(playerid,2734.3848,-2450.4028,17.5938);
			SetPlayerCameraLookAt(playerid,2731.3306,-2451.0273,17.5937);
		}
	}

	if(aAutoS == 0)
	{
		SetPlayerClass(playerid, classid);
		gPlayerClass[playerid] = classid;
		SetupPlayerForClassSelection(playerid);
		switch (classid) {

			case 0:
			{
				GameTextForPlayer(playerid,TEAM1,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2789.9348,-2418.5481,13.6331);
				SetPlayerFacingAngle(playerid, 87);
				SetPlayerCameraPos(playerid,2783.6499,-2418.1187,13.6347);
				SetPlayerCameraLookAt(playerid,2789.9348,-2418.5481,13.6331);
			}
			case 1:
			{
				GameTextForPlayer(playerid,TEAM1,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
				SetPlayerFacingAngle(playerid, 278);
				SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
				SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
			}
            case 2:
			{
				GameTextForPlayer(playerid,TEAM1,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
				SetPlayerFacingAngle(playerid, 278);
				SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
				SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
			}
			case 3:
			{
				GameTextForPlayer(playerid,TEAM2,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
				SetPlayerFacingAngle(playerid, 278);
				SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
				SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
			}
			case 4:
			{
				GameTextForPlayer(playerid,TEAM2,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
				SetPlayerFacingAngle(playerid, 278);
				SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
				SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
			}
			case 5:
			{
				GameTextForPlayer(playerid,TEAM2,1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2640.1646,-2502.8940,13.4922);
				SetPlayerFacingAngle(playerid, 278);
				SetPlayerCameraPos(playerid,2647.3855,-2503.3369,13.4922);
				SetPlayerCameraLookAt(playerid,2640.1646,-2502.8940,13.4922);
			}
			case 6:
			{
				GameTextForPlayer(playerid,"~g~Ref",1000,3);
				SetPlayerInterior(playerid, 0);
				SetPlayerPos(playerid,2731.3306,-2451.0273,17.5937);
				SetPlayerFacingAngle(playerid, 277);
				SetPlayerCameraPos(playerid,2734.3848,-2450.4028,17.5938);
				SetPlayerCameraLookAt(playerid,2731.3306,-2451.0273,17.5937);
			}
		}
	}
	return 1;
}

//------------------------------------------------------------------------------


SetPlayerClass(playerid, classid)
{
	if(classid == 0){ gTeam[playerid] = TEAM_1;
	}
	else if(classid == 1){ gTeam[playerid] = TEAM_1;
	}
	else if(classid == 2){ gTeam[playerid] = TEAM_1;
	}
	else if(classid == 3){ gTeam[playerid] = TEAM_2;
	}
	else if(classid == 4){ gTeam[playerid] = TEAM_2;
	}
	else if(classid == 5){ gTeam[playerid] = TEAM_2;
	}
	else if(classid == 6){ gTeam[playerid] = TEAM_REF;
	}
	return 1;
}

//------------------------------------------------------------------------------

// READ FILE CONFIG

rConfig()
{
	new File:fhandle;
	new cname[256];
	new temp[256];
	new value[256];
	fhandle = fopen("ClanConfig.txt",io_readwrite);
	while(fread(fhandle,temp,sizeof(temp),false))
	{
		new idx;
		cname = strtok(temp, idx);
		value = strtok(temp, idx);

		if(strcmp(cname,"Team-1",true) == 0) strins(TEAM1,value,0,MAX_STRING);
		else if(strcmp(cname,"Team-2",true) == 0) strins(TEAM2,value,0,MAX_STRING);
		else if(strcmp(cname,"Max-Clan-Kills",true) == 0) MAXKILLS = strval(value);
		else if(strcmp(cname,"Weapon1",true) == 0) wpn1 = strval(value);
		else if(strcmp(cname,"Weapon2",true) == 0) wpn2 = strval(value);
		else if(strcmp(cname,"Weapon3",true) == 0) wpn3 = strval(value);
		else if(strcmp(cname,"Ammogm1",true) == 0) ammogm1 = strval(value);
		else if(strcmp(cname,"Ammogm2",true) == 0) ammogm2 = strval(value);
		else if(strcmp(cname,"Ammogm3",true) == 0) ammogm3 = strval(value);
		//			else if(strcmp(cname,"Clan-Detect",true) == 0) aAutoS = strval(value);
	}
	fclose(fhandle);
	return 1;
}

/*
========================
Team Chat
========================
*/

public OnPlayerText(playerid, text[])
{
	new strName[MAX_PLAYER_NAME];
	new strOut[MAX_STRING];
	new i;
	i++;

	GetPlayerName(playerid, strName, sizeof(strName));
	if(text[0] == '!')
	{
		new string[MAX_STRING];
		strmid(string, text, 1, strlen(text), MAX_STRING);
		format(strOut, MAX_STRING, "[TC] [%s]: %s", strName, string);

		for(i = 0; i<MAX_PLAYERS; i++)
		{
			if(gTeam[i] == gTeam[playerid])
				SendClientMessage(i, COLOR_LIGHTBLUE, strOut);
		}
		return 0;
	}
	if(text[0] == '#' && LAdmin[playerid] >= 1) {
	    new string[256],name[24]; GetPlayerName(playerid,name,24); format(string,256,"Admin Chat: %s says: %s",name,text[1]); MessageToAdmins(COLOR_GREEN,string);
	    return 0;	}

 	if(IsPlayerMuted[playerid] == 1)    {
 	mutedwarning[playerid]++;
	if(mutedwarning[playerid] < 5)  {
	SendClientMessage(playerid,COLOR_RED,"WARNING: You are muted, if you continue to speak you will be kicked");
	} else {
	SendClientMessage(playerid,COLOR_RED,"You have been warned ! Now you have been kicked");
	new string[100], playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, sizeof(playername));
	format(string, sizeof(string),"%s [ID %d ] Kicked For exceeding Mute warnings", playername,playerid);
	SaveToFile("BanKickLog",string); Kick(playerid); }
	return 0;	}
	return 1;
}

/*
========================
Save Stats
========================
*/

iStats()
{
	new File:fhandle;
	new temp[256], temp2[256], temp3[256];

	fhandle = fopen("ClanStats.txt",io_append);
	format(temp,sizeof(temp),"ClanWar %s VS %s\r\n",TEAM1,TEAM2);
	format(temp2, sizeof(temp2), "Winner: %s\r\n",winner);
	format(temp3, sizeof(temp3), "%s: %d  ||  %s: %d\r\n", TEAM1, sCount1, TEAM2, sCount2);
	fwrite(fhandle,temp);
	fwrite(fhandle,temp2);
	fwrite(fhandle,temp3);
	fclose(fhandle);
}

sStats()
{
	for(new i=0;i<MAX_PLAYERS;i++)
	{
		if(IsPlayerConnected(i))
		{
			new File:fhandle;
			new temp[256];
			new Score;
			Score = GetPlayerScore(i);
			new Float:ratio = Float:Score / Float:DeathCount[i];

			fhandle = fopen("ClanStats.txt",io_append);
			format(temp,sizeof(temp),"%s Kills: %d Deaths: %d Ratio: %0.2f\r\n",PlayerName(i),Score,DeathCount[i],ratio);
			fwrite(fhandle,temp);
			fclose(fhandle);
		}
	}
}

/*
========================
GetPlayerName
========================
*/
forward PlayerName(playerid);
public PlayerName(playerid)
{
	new pName[256];
	GetPlayerName(playerid, pName, sizeof(pName));
	return 1;
}

/*
========================
AutoSpawn
========================
*/

forward ClanDetect(playerid);
public ClanDetect(playerid)
{
	if(IsPlayerConnected(playerid))
	{
		SendClientMessage(playerid, COLOR_YELLOW, "Detecting Clan...");
		new tmpnick[MAX_PLAYER_NAME];
		new ctxt[256];
		GetPlayerName(playerid, tmpnick, sizeof(tmpnick));
		for(new n=0; n<strlen(tmpnick); n++)
		{
			if(TEAM1[0] == tmpnick[n])
			{
				if(TEAM1[1] == tmpnick[(n+1)])
				{
					if(TEAM1[2] == tmpnick[(n+2)])
					{
						format(ctxt, sizeof(ctxt), "Detected Clan: %s", TEAM1);
						SendClientMessage(playerid, COLOR_YELLOW, ctxt);
						return TEAM_1;
					}
				}
			}
			else if(TEAM2[0] == tmpnick[n])
			{
				if(TEAM2[1] == tmpnick[(n+1)])
				{
					if(TEAM2[2] == tmpnick[(n+2)])
					{
						format(ctxt, sizeof(ctxt), "Detected Clan: %s", TEAM2);
						SendClientMessage(playerid, COLOR_YELLOW, ctxt);
						return TEAM_2;
					}
				}
			}
		}
		SendClientMessage(playerid, COLOR_YELLOW, "Clan not detected, Set as REF!");
		return TEAM_REF;
	}
	return 0;
}

/*
========================
Commands
========================
*/


public OnPlayerSelectedMenuRow(playerid, row)
{
      	new Menu:onscreenmenu = GetPlayerMenu(playerid);
//==============[ new menus ]===================================================
    	if(onscreenmenu == XMainMenu)	{
        switch(row)
		{
			case 0:	{ ShowMenuForPlayer(XTele,playerid);  }
   			case 1:	{ ShowMenuForPlayer(XVehicles,playerid); }
   			case 2: { if(LAdmin[playerid] >= 3) { ShowMenuForPlayer(XWeapons,playerid); } else { SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command"); TogglePlayerControllable(playerid,true);   }}
			case 3:	{ SetPlayerHealth(playerid,100.0);  TogglePlayerControllable(playerid,true); }
			case 4:	{ SetPlayerArmour(playerid,100.0);  TogglePlayerControllable(playerid,true); }
			case 5:	{ ShowMenuForPlayer(LCars,playerid);  }
			case 6:
			{
	      	if(LAdmin[playerid] >= 1) {
    		if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,COLOR_RED,"ERROR: You must be in a vehicle to repair.");
			SetVehicleHealth(GetPlayerVehicleID(playerid),1000.0); TogglePlayerControllable(playerid,true);
			return SendClientMessage(playerid,COLOR_YELLOW,"You have successfully repaired your vehicle!");
			} else return SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command");
 			}
 			case 7:
            {   if(LAdmin[playerid] >= 2) {
        				if(IsPlayerInAnyVehicle(playerid)) {
						new LVehicleID = GetPlayerVehicleID(playerid), LModel = GetVehicleModel(LVehicleID);
				        switch(LModel) { case 448,461,462,463,468,471,509,510,521,522,523,581,586:
						{ SendClientMessage(playerid,COLOR_RED,"ERROR: You can not tune bikes!");  TogglePlayerControllable(playerid,true); return 1; }  }
				        TogglePlayerControllable(playerid,false);	ShowMenuForPlayer(LTuneMenu,playerid);
				        } else {
						SendClientMessage(playerid,COLOR_RED,"ERROR: You do not have a vehicle to tune"); TogglePlayerControllable(playerid,true);
						}
		    	} else {
				SendClientMessage(playerid,COLOR_RED,"ERROR: You are not a high enough level to use this command"); TogglePlayerControllable(playerid,true);
				}
			}
 			case 8: { ShowMenuForPlayer(LWeather,playerid); }
 			case 9: { ShowMenuForPlayer(LTime,playerid); }
			case 10:
			{
			new Menu:Currentxmenu = GetPlayerMenu(playerid);
    		HideMenuForPlayer(Currentxmenu,playerid);   TogglePlayerControllable(playerid,true);
		    }
		}
	}//-------------------------------------------------------------------------
		if(onscreenmenu==XVehicles){
		switch(row){
			case 0: ChangeMenu(playerid,onscreenmenu,twodoor);
			case 1: ChangeMenu(playerid,onscreenmenu,fourdoor);
			case 2: ChangeMenu(playerid,onscreenmenu,fastcar);
			case 3: ChangeMenu(playerid,onscreenmenu,Othercars);
			case 4: ChangeMenu(playerid,onscreenmenu,bikes);
			case 5: ChangeMenu(playerid,onscreenmenu,boats);
			case 6: ChangeMenu(playerid,onscreenmenu,planes);
			case 7: ChangeMenu(playerid,onscreenmenu,helicopters);
			case 8: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}
		if(onscreenmenu==twodoor){
		new vehid;
		switch(row){
			case 0: vehid = 533;
			case 1: vehid = 139;
			case 2: vehid = 555;
			case 3: vehid = 422;
			case 4: vehid = 554;
			case 5: vehid = 575;
			case 6: vehid = 536;
			case 7: vehid = 535;
			case 8: vehid = 576;
			case 9: vehid = 401;
			case 10: vehid = 526;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==fourdoor){
		new vehid;
		switch(row){
			case 0: vehid = 404;
			case 1: vehid = 566;
			case 2: vehid = 414;
			case 3: vehid = 445;
			case 4: vehid = 507;
			case 5: vehid = 466;
			case 6: vehid = 546;
			case 7: vehid = 511;
			case 8: vehid = 467;
			case 9: vehid = 426;
			case 10: vehid = 405;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==fastcar){
		new vehid;
		switch(row){
			case 0: vehid = 480;
			case 1: vehid = 402;
			case 2: vehid = 415;
			case 3: vehid = 587;
			case 4: vehid = 494;
			case 5: vehid = 411;
			case 6: vehid = 603;
			case 7: vehid = 506;
			case 8: vehid = 451;
			case 9: vehid = 477;
			case 10: vehid = 541;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==Othercars){
		new vehid;
		switch(row){
			case 0: vehid = 556;
			case 1: vehid = 408;
			case 2: vehid = 431;
			case 3: vehid = 437;
			case 4: vehid = 427;
			case 5: vehid = 432;
			case 6: vehid = 601;
			case 7: vehid = 524;
			case 8: vehid = 455;
			case 9: vehid = 424;
			case 10: vehid = 573;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==bikes){
		new vehid;
		switch(row){
			case 0: vehid = 581;
			case 1: vehid = 481;
			case 2: vehid = 462;
			case 3: vehid = 521;
			case 4: vehid = 463;
			case 5: vehid = 522;
			case 6: vehid = 461;
			case 7: vehid = 448;
			case 8: vehid = 471;
			case 9: vehid = 468;
			case 10: vehid = 586;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==boats){
		new vehid;
		switch(row){
			case 0: vehid = 472;
			case 1: vehid = 473;
			case 2: vehid = 493;
			case 3: vehid = 595;
			case 4: vehid = 484;
			case 5: vehid = 430;
			case 6: vehid = 453;
			case 7: vehid = 452;
			case 8: vehid = 446;
			case 9: vehid = 454;
			case 10: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==planes){
		new vehid;
		switch(row){
			case 0: vehid = 592;
			case 1: vehid = 577;
			case 2: vehid = 511;
			case 3: vehid = 512;
			case 4: vehid = 593;
			case 5: vehid = 520;
			case 6: vehid = 553;
			case 7: vehid = 476;
			case 8: vehid = 519;
			case 9: vehid = 460;
			case 10: vehid = 513;
			case 11: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
		if(onscreenmenu==helicopters){
		new vehid;
		switch(row){
			case 0: vehid = 548;
			case 1: vehid = 425;
			case 2: vehid = 417;
			case 3: vehid = 487;
			case 4: vehid = 488;
			case 5: vehid = 497;
			case 6: vehid = 563;
			case 7: vehid = 447;
			case 8: vehid = 469;
			case 9: return ChangeMenu(playerid,onscreenmenu,XVehicles);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
//------------------------------------------------------
		if(onscreenmenu==XWeapons){
		switch(row){
			case 0: { GivePlayerWeapon(playerid,24,500); TogglePlayerControllable(playerid,true); }
			case 1: { GivePlayerWeapon(playerid,31,500); TogglePlayerControllable(playerid,true); }
			case 2: { GivePlayerWeapon(playerid,26,500); TogglePlayerControllable(playerid,true); }
			case 3: { GivePlayerWeapon(playerid,27,500); TogglePlayerControllable(playerid,true); }
			case 4: { GivePlayerWeapon(playerid,28,500); TogglePlayerControllable(playerid,true); }
			case 5: { GivePlayerWeapon(playerid,35,500); TogglePlayerControllable(playerid,true); }
			case 6: { GivePlayerWeapon(playerid,38,1000); TogglePlayerControllable(playerid,true); }
			case 7: { GivePlayerWeapon(playerid,34,500); TogglePlayerControllable(playerid,true); }
			case 8: ChangeMenu(playerid,onscreenmenu,XWeaponsBig);
        	case 9: ChangeMenu(playerid,onscreenmenu,XWeaponsSmall);
        	case 10: ChangeMenu(playerid,onscreenmenu,XWeaponsMore);
        	case 11: ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}

		if(onscreenmenu==XWeaponsBig){
		switch(row){
			case 0: { GivePlayerWeapon(playerid,25,500);  TogglePlayerControllable(playerid,true); }
			case 1: { GivePlayerWeapon(playerid,30,500); TogglePlayerControllable(playerid,true); }
			case 2: { GivePlayerWeapon(playerid,33,500); TogglePlayerControllable(playerid,true); }
			case 3: { GivePlayerWeapon(playerid,36,500); TogglePlayerControllable(playerid,true); }
			case 4: { GivePlayerWeapon(playerid,37,500); TogglePlayerControllable(playerid,true); }
			case 5: { GivePlayerWeapon(playerid,29,500); TogglePlayerControllable(playerid,true); }
			case 6: { GivePlayerWeapon(playerid,32,1000); TogglePlayerControllable(playerid,true); }
			case 7: ChangeMenu(playerid,onscreenmenu,XWeapons);
		}
		return 1;
	}
		if(onscreenmenu==XWeaponsSmall){
		switch(row){
			case 0: { GivePlayerWeapon(playerid,22,500); TogglePlayerControllable(playerid,true); }//9mm
			case 1: { GivePlayerWeapon(playerid,23,500); TogglePlayerControllable(playerid,true); }//s9
			case 2: { GivePlayerWeapon(playerid,18,500); TogglePlayerControllable(playerid,true); }// MC
			case 3: { GivePlayerWeapon(playerid,42,500); TogglePlayerControllable(playerid,true); }//FE
			case 4: { GivePlayerWeapon(playerid,41,500); TogglePlayerControllable(playerid,true); }//spraycan
			case 5: { GivePlayerWeapon(playerid,16,500); TogglePlayerControllable(playerid,true); }//grenade
			case 6: { GivePlayerWeapon(playerid,8,500); TogglePlayerControllable(playerid,true); }//Katana
			case 7: { GivePlayerWeapon(playerid,9,1000); TogglePlayerControllable(playerid,true); }//chainsaw
			case 8: ChangeMenu(playerid,onscreenmenu,XWeapons);
		}
		return 1;
	}
		if(onscreenmenu==XWeaponsMore){
		switch(row){
			case 0: { SetPlayerSpecialAction(playerid, 2); TogglePlayerControllable(playerid,true); }
			case 1: { GivePlayerWeapon(playerid,4,500); TogglePlayerControllable(playerid,true); }
			case 2: { GivePlayerWeapon(playerid,14,500); TogglePlayerControllable(playerid,true); }
			case 3: { GivePlayerWeapon(playerid,43,500); TogglePlayerControllable(playerid,true); }
			case 4: { GivePlayerWeapon(playerid,7,500); TogglePlayerControllable(playerid,true); }
			case 5: { GivePlayerWeapon(playerid,5,500); TogglePlayerControllable(playerid,true); }
			case 6: { GivePlayerWeapon(playerid,2,1000); TogglePlayerControllable(playerid,true); }
			case 7: { MaxAmmo(playerid);  TogglePlayerControllable(playerid,true); }
			case 8: ChangeMenu(playerid,onscreenmenu,XWeapons);
		}
		return 1;
	}
    	if(onscreenmenu == XTele)
	{
        switch(row)
		{
			case 0: ChangeMenu(playerid,onscreenmenu,LasVenturasMenu);
			case 1: ChangeMenu(playerid,onscreenmenu,LosSantosMenu);
			case 2: ChangeMenu(playerid,onscreenmenu,SanFierroMenu);
			case 3: ChangeMenu(playerid,onscreenmenu,DesertMenu);
			case 4: ChangeMenu(playerid,onscreenmenu,FlintMenu);
			case 5: ChangeMenu(playerid,onscreenmenu,MountChiliadMenu);
			case 6: ChangeMenu(playerid,onscreenmenu,InteriorsMenu);
			case 7: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}
    	if(onscreenmenu == LasVenturasMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,2037.0,1343.0,12.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// strip
			case 1: { SetPlayerPos(playerid,2163.0,1121.0,23); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// come a lot
			case 2: { SetPlayerPos(playerid,1688.0,1615.0,12.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// lv airport
			case 3: { SetPlayerPos(playerid,2503.0,2764.0,10.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// military fuel
			case 4: { SetPlayerPos(playerid,1418.0,2733.0,10.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// golf lv
			case 5: { SetPlayerPos(playerid,1377.0,2196.0,9.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// pitch match
			case 6: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == LosSantosMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,2495.0,-1688.0,13.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// ganton
			case 1: { SetPlayerPos(playerid,1979.0,-2241.0,13.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// ls airport
			case 2: { SetPlayerPos(playerid,2744.0,-2435.0,15.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// docks
			case 3: { SetPlayerPos(playerid,1481.0,-1656.0,14.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// square
			case 4: { SetPlayerPos(playerid,1150.0,-2037.0,69.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// veradant bluffs
			case 5: { SetPlayerPos(playerid,425.0,-1815.0,6.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// santa beach
			case 6: { SetPlayerPos(playerid,1240.0,-744.0,95.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// mullholland
			case 7: { SetPlayerPos(playerid,679.0,-1070.0,49.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// richman
			case 8: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == SanFierroMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,-1990.0,137.0,27.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); } // sf station
			case 1: { SetPlayerPos(playerid,-1528.0,-206.0,14.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// sf airport
			case 2: { SetPlayerPos(playerid,-2709.0,198.0,4.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// ocean flats
			case 3: { SetPlayerPos(playerid,-2738.0,-295.0,6.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// avispa country club
			case 4: { SetPlayerPos(playerid,-1457.0,465.0,7.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// easter basic docks
			case 5: { SetPlayerPos(playerid,-1853.0,1404.0,7.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// esplanadae north
			case 6: { SetPlayerPos(playerid,-2620.0,1373.0,7.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// battery point
			case 7: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == DesertMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,416.0,2516.0,16.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); } // plane graveyard
			case 1: { SetPlayerPos(playerid,81.0,1920.0,17.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// area51
			case 2: { SetPlayerPos(playerid,-324.0,1516.0,75.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// big ear
			case 3: { SetPlayerPos(playerid,-640.0,2051.0,60.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// dam
			case 4: { SetPlayerPos(playerid,-766.0,1545.0,27.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// las barrancas
			case 5: { SetPlayerPos(playerid,-1514.0,2597.0,55.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// el qyebrados
			case 6: { SetPlayerPos(playerid,442.0,1427.0,9.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// actane springs
			case 7: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == FlintMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,-849.0,-1940.0,13.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// lake
			case 1: { SetPlayerPos(playerid,-1107.0,-1619.0,76.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// leafy hollow
			case 2: { SetPlayerPos(playerid,-1049.0,-1199.0,128.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// the farm
			case 3: { SetPlayerPos(playerid,-1655.0,-2219.0,32.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// shady cabin
			case 4: { SetPlayerPos(playerid,-375.0,-1441.0,25.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// flint range
			case 5: { SetPlayerPos(playerid,-367.0,-1049.0,59.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// beacon hill
			case 6: { SetPlayerPos(playerid,-494.0,-555.0,25.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// fallen tree
			case 7: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == MountChiliadMenu)
	{
        switch(row)
		{
			case 0: { SetPlayerPos(playerid,-2308.0,-1657.0,483.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// chiliad jump
			case 1: { SetPlayerPos(playerid,-2331.0,-2180.0,35.0); TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// bottom chiliad
			case 2: { SetPlayerPos(playerid,-2431.0,-1620.0,526.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// highest point
			case 3: { SetPlayerPos(playerid,-2136.0,-1775.0,208.0);  TogglePlayerControllable(playerid,true); SetPlayerInterior(playerid,0); }// chiliad path
			case 4: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == InteriorsMenu)
	{
        switch(row)
		{
			case 0: {	SetPlayerPos(playerid,386.5259, 173.6381, 1008.3828);	SetPlayerInterior(playerid,3); TogglePlayerControllable(playerid,true);   }
			case 1: {	SetPlayerPos(playerid,288.4723, 170.0647, 1007.1794);	SetPlayerInterior(playerid,3); TogglePlayerControllable(playerid,true);   }
			case 2: {	SetPlayerPos(playerid,372.5565, -131.3607, 1001.4922);	SetPlayerInterior(playerid,5); TogglePlayerControllable(playerid,true);   }
			case 3: {	SetPlayerPos(playerid,-1129.8909, 1057.5424, 1346.4141);	SetPlayerInterior(playerid,10); TogglePlayerControllable(playerid,true);   }
			case 4: {	SetPlayerPos(playerid,2233.9363, 1711.8038, 1011.6312);	SetPlayerInterior(playerid,1); TogglePlayerControllable(playerid,true);   }
			case 5: {	SetPlayerPos(playerid,2536.5322, -1294.8425, 1044.125);	SetPlayerInterior(playerid,2); TogglePlayerControllable(playerid,true);   }
			case 6: {	SetPlayerPos(playerid,1267.8407, -776.9587, 1091.9063);	SetPlayerInterior(playerid,5); TogglePlayerControllable(playerid,true);   }
  			case 7: {	SetPlayerPos(playerid,-1421.5618, -663.8262, 1059.5569);	SetPlayerInterior(playerid,4); TogglePlayerControllable(playerid,true);   }
   			case 8: {	SetPlayerPos(playerid,-1401.067, 1265.3706, 1039.8672);	SetPlayerInterior(playerid,16); TogglePlayerControllable(playerid,true);   }
   			case 9: {	SetPlayerPos(playerid,285.8361, -39.0166, 1001.5156);	SetPlayerInterior(playerid,1); TogglePlayerControllable(playerid,true);   }
    		case 10: {	SetPlayerPos(playerid,1727.2853, -1642.9451, 20.2254);	SetPlayerInterior(playerid,18); TogglePlayerControllable(playerid,true);   }
			case 11: return ChangeMenu(playerid,onscreenmenu,XTele);
		}
		return 1;
	}
    	if(onscreenmenu == LWeather)
	{
		new adminname[MAX_PLAYER_NAME],string[256]; GetPlayerName(playerid, adminname, sizeof(adminname));
        switch(row)
		{
			case 0:	{	SetWeather(5);	PlayerPlaySound(playerid,1057,0.0,0.0,0.0);	CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true); format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
   			case 1:	{	SetWeather(19); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 2:	{	SetWeather(8);  PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 3:	{	SetWeather(20);	PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 4:	{	SetWeather(9);  PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 5:	{	SetWeather(16); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 6:	{	SetWeather(45); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 7:	{	SetWeather(44); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 8:	{	SetWeather(22); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 9:	{	SetWeather(11); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"SETWEATHER"); TogglePlayerControllable(playerid,true);	format(string,256,"Administrator %s has changed the weather",adminname); SendClientMessageToAll(COLOR_BLUE,string); }
			case 10: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}
    	if(onscreenmenu == LTuneMenu)
	{
        switch(row)
		{
			case 0:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1010); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true);}
   			case 1:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1087); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added"); TogglePlayerControllable(playerid,true); }
			case 2:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1081); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 3: {	AddVehicleComponent(GetPlayerVehicleID(playerid),1078); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 4:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1098); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 5:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1074); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 6:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1082); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 7:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1085); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 8:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1025); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 9:	{	AddVehicleComponent(GetPlayerVehicleID(playerid),1077); PlayerPlaySound(playerid,1133,0.0,0.0,0.0);	SendClientMessage(playerid,COLOR_BLUE,"Vehicle Component Added");	TogglePlayerControllable(playerid,true); }
			case 10: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}
    	if(onscreenmenu == LTime)
	{
		new adminname[MAX_PLAYER_NAME],string[256]; GetPlayerName(playerid, adminname, sizeof(adminname));
        switch(row)
		{
			case 0:	{	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,7,0);	PlayerPlaySound(playerid,1057,0.0,0.0,0.0);	CMDMessageToAdmins(playerid,"LTIME MENU");	format(string,256,"Administrator %s has changed the time",adminname); SendClientMessageToAll(COLOR_BLUE,string); TogglePlayerControllable(playerid,true); }
   			case 1:	{	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,12,0); PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"LTIME MENU");	format(string,256,"Administrator %s has changed the time",adminname); SendClientMessageToAll(COLOR_BLUE,string); TogglePlayerControllable(playerid,true); }
			case 2:	{	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,16,0);  PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"LTIME MENU");	format(string,256,"Administrator %s has changed the time",adminname); SendClientMessageToAll(COLOR_BLUE,string); TogglePlayerControllable(playerid,true); }
			case 3:	{	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,20,0);	PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"LTIME MENU");	format(string,256,"Administrator %s has changed the time",adminname); SendClientMessageToAll(COLOR_BLUE,string); TogglePlayerControllable(playerid,true); }
			case 4:	{	for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i)) SetPlayerTime(i,0,0);  PlayerPlaySound(playerid,1057,0.0,0.0,0.0); CMDMessageToAdmins(playerid,"LTIME MENU");	format(string,256,"Administrator %s has changed the time",adminname); SendClientMessageToAll(COLOR_BLUE,string); TogglePlayerControllable(playerid,true); }
			case 5: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return 1;
	}
//=====
    	if(onscreenmenu == LCars)
	{
		new vehid;
        switch(row) {
			case 0: vehid = 451;
			case 1: vehid = 568;
			case 2: vehid = 539;
			case 3: vehid = 522;
			case 4: vehid = 406;
			case 5: vehid = 601;//s.w.a.t
			case 6: vehid = 425;
			case 7: vehid = 493;//jetmax
			case 8: vehid = 432;
			case 9: vehid = 444;
			case 10: vehid = 447; //sea sparrow
			case 11: return ChangeMenu(playerid,onscreenmenu,XMainMenu);
		}
		return BuyCar(playerid,vehid,onscreenmenu);
	}
    	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(Current == Stunt)
    	{
    switch(row)
    {
        case 0: //LS Airport
        {
			SetPlayerPos(playerid, 2097.5430,-2556.9167,13.8623);
			SendClientMessage(playerid, COLOR_BLUE, "Welcome To The Los Santos Airport Stunt area!");
        }
		case 1:
  		{
            SetPlayerPos(playerid,-2029.8400,-125.3162,35.2194);
            SendClientMessage(playerid, COLOR_BLUE, "Welcome To The San Fierro School Yard Stunt area!");
		}
		case 2:
		{
		    SetPlayerPos(playerid, 1690.881592, -2720.665283, 16.035704);
			SendClientMessage(playerid, COLOR_BLUE, "Welcome To The Stunt Castle Area!");
		}
		case 3:
		{
            SetPlayerPos(playerid, -1645.2598,-201.1026,13.9188);
            SendClientMessage(playerid, COLOR_BLUE, "Welcome To The Stunt Park!");
		}
		case 4:
		{
            SetPlayerPos(playerid, 1451.8146, 1315.0363, 10.8203/*,6.0827*/);
            SendClientMessage(playerid, COLOR_BLUE, "Welcome To The LV Airfight Airport!");
		}
	}
	}
		return 1;
}
#if defined MENUSYSTEM
public OnPlayerExitedMenu(playerid) {
    new Menu:onscreenmenu = GetPlayerMenu(playerid);
    HideMenuForPlayer(onscreenmenu,playerid);
    return TogglePlayerControllable(playerid,true);
}

//------------------------------------------
forward duel();
public duel()
{
if(cdt==6) {
GameTextForAll("~p~Duel Starting...",1000,6);
}
else if (cdt>=5)	{
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~w~five",1000,6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
TogglePlayerControllable(i,0); }
}
}
else if (cdt>=4) {
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~w~four",1000,6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); }
}
}
else if (cdt>=3) {
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~w~three",1000,6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); }
}
}
else if (cdt>=2) {
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~y~two",1000,6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); }
}
}
else if (cdt>=1) {
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~r~one",1000,6);
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0); }
}
}
else if (cdt==0) {
for(new i = 0; i < MAX_PLAYERS; i++) {
if(InDuel[i] == 1) {
GameTextForPlayer(i,"~g~GO~ r~!",1000,6);
TogglePlayerControllable(i,1);
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0); }
}
}
cdt--;
if (cdt==-1){
KillTimer(timer);
//for(new i = 0; i < MAX_PLAYERS; i++) {
//InDuel[i] = 0;
}
}
//}

//==============================================================================
ShowScore(playerid)
{
new tmpTotal[128];
new playername[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername, sizeof(playername));
format(tmpTotal, sizeof(tmpTotal), "<> %s's Stats:  Kills: %d | Deaths: %d | Ratio: %0.2f | Money: $%d",playername,MyKills[playerid],MyDeaths[playerid], (Float:MyKills[playerid]/Float:MyDeaths[playerid]),GetPlayerMoney(playerid));
SendClientMessage(playerid,COLOR_GREEN, tmpTotal);
}
//==============================================================================
forward MessageToAdmins(color,const string[]);
public MessageToAdmins(color,const string[])
{
	for(new i = 0; i <= MAX_PLAYERS; i++)
	{
		if(IsPlayerConnected(i) == 1)
		{
			if (LAdmin[i] >= 1)
			{
				SendClientMessage(i, color, string);
			}
		}
	}
	return 1;
}
//==============================================================================
forward TuneLCar(VehicleID);
public TuneLCar(VehicleID)	{
ChangeVehicleColor(VehicleID,0,7);  AddVehicleComponent(VehicleID, 1010); /*Nitro x10*/  AddVehicleComponent(VehicleID, 1087); /*Hydraulic*/
}

forward Jail1(player1);
public Jail1(player1)	{
TogglePlayerControllable(player1,false);
new Float:x, Float:y, Float:z;	GetPlayerPos(player1,x,y,z);
SetPlayerCameraPos(player1,x+10,y,z+10);SetPlayerCameraLookAt(player1,x,y,z);
SetTimerEx("Jail2",1000,0,"d",player1);
}
forward Jail2(player1);
public Jail2(player1)	{
new Float:x, Float:y, Float:z;	GetPlayerPos(player1,x,y,z);
SetPlayerCameraPos(player1,x+7,y,z+5);	SetPlayerCameraLookAt(player1,x,y,z);
if(GetPlayerState(player1) == PLAYER_STATE_ONFOOT) {
SetPlayerSpecialAction(player1,SPECIAL_ACTION_HANDSUP);    }
SetTimerEx("Jail3",1000,0,"d",player1);
}
forward Jail3(player1);
public Jail3(player1)	{
new Float:x, Float:y, Float:z;	GetPlayerPos(player1,x,y,z);
SetPlayerCameraPos(player1,x+3,y,z);SetPlayerCameraLookAt(player1,x,y,z);
GameTextForPlayer(player1,"~r~Busted By Admins",3000,3);
}
forward JailPlayer(player1,jtime);
public JailPlayer(player1,jtime)	{
TogglePlayerControllable(player1,true);
SetPlayerPos(player1,-689.1971,-2012.466,150.255);
SetPlayerInterior(player1,0);
SetCameraBehindPlayer(player1);
SetTimerEx("JailRelease",jailnoob[player1]*1000,0,"d",player1);
jailnoob[player1] = 0;  IsPlayerInJail[player1] = 1;
}
forward JailRelease(player1);
public JailRelease(player1)	{
SetPlayerInterior(player1,0);	SpawnPlayer(player1);  IsPlayerInJail[player1] = 0;	PlayerPlaySound(player1,1057,0.0,0.0,0.0);	GameTextForPlayer(player1,"~g~Released ~n~From Jail",3000,3);
}
//-------------------------
forward JailPlayerAfterDeath(player1,jtime);
public JailPlayerAfterDeath(player1,jtime)	{
TogglePlayerControllable(player1,true);
SetPlayerPos(player1,-689.1971,-2012.466,150.255);
SetCameraBehindPlayer(player1);
}
//------------------------
forward UnFreezeMe(player1);
public UnFreezeMe(player1)	{
TogglePlayerControllable(player1,true);   IsPlayerFrozen[player1] = 0;	PlayerPlaySound(player1,1057,0.0,0.0,0.0);	GameTextForPlayer(player1,"~g~Unfrozen",3000,3);
}
//==============================================================================
forward PingKick();
public PingKick() {
	    for(new i = 0,string[256],name[24]; i < MAX_PLAYERS; i++)
	    if(IsPlayerConnected(i) && (GetPlayerPing(i) > MAX_PING)) {
	        if(LAdmin[i] < 1) {
	        	GetPlayerName(i,name,24); format(string,256,"%s has been kicked from the server. (Reason: High Ping || Max Allowed: %d)",name,MAX_PING);
	        	SendClientMessageToAll(COLOR_GREY,string); Kick(i);
	        }
	    }
}
forward GodUpdate();
public GodUpdate() {
for(new i = 0; i < MAX_PLAYERS; i++) if(IsPlayerConnected(i) && God[i] == 1) SetPlayerHealth(i,100000);
}

//==============================================================================
forward ConnectedPlayers();
public ConnectedPlayers() {
new Connected;
for(new i = 0; i < MAX_PLAYERS; i++)    {
if(IsPlayerConnected(i)) {
Connected++; }
}
return Connected++;  }

forward JailedPlayers();
public JailedPlayers() {
new JailedCount;
for(new i = 0; i < MAX_PLAYERS; i++)    {
if(IsPlayerConnected(i) && IsPlayerInJail[i]) {
JailedCount++; }
}
return JailedCount++; }

forward FrozenPlayers();
public FrozenPlayers() {
new FrozenCount;
for(new i = 0; i < MAX_PLAYERS; i++)    {
if(IsPlayerConnected(i) && IsPlayerFrozen[i]) {
FrozenCount++; }
}
return FrozenCount++; }

//----------------------------------------
forward InVehCount();
public InVehCount()
{
new InVeh;
for(new i = 0; i < MAX_PLAYERS; i++)    {
if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) {
InVeh++; }
}
return InVeh++;
}
//----------------------------------------
forward OnBikeCount();
public OnBikeCount()
{
new BikeCount;
for(new i = 0; i < MAX_PLAYERS; i++)    {
	if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) {
	new LModel = GetVehicleModel(GetPlayerVehicleID(i));
	switch(LModel)
	{
	case 448,461,462,463,468,471,509,510,521,522,523,581,586: BikeCount++;
	}
	}
	}
return BikeCount++;
}
//----------------------------------------
forward InCarCount();
public InCarCount()
{
new PInCarCount;
for(new i = 0; i < MAX_PLAYERS; i++)    {
	if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)) {
		new LModel = GetVehicleModel(GetPlayerVehicleID(i));
		if(LModel != 448 || 461 || 462 || 463 || 468 || 471 || 509 || 510 || 521 || 522 || 523 || 581 || 586) PInCarCount++;
		}
	}
return PInCarCount++;
}
forward AdminCount();
public AdminCount()
{
new LAdminCount;
for(new i = 0; i < MAX_PLAYERS; i++)    {
	if(IsPlayerConnected(i) && LAdmin[i] >= 1) {
    	LAdminCount++;
		}
	}
return LAdminCount++;
}

//=============================[FixHour]========================================
forward FixHour(hour);
public FixHour(hour)	{
	hour = timeshift+hour;
	if (hour < 0)	{
		hour = hour+24;
	} else if (hour > 23)	{
		hour = hour-24;	}
	shifthour = hour;
	return 1;}
//==============================================================================
stock IsValidWeapon(weaponid)
{
    if (weaponid > 0 && weaponid < 19 || weaponid > 21 && weaponid < 47)
    {
        return 1;
    }
    return 0;
}
//==============================================================================
//Small but nice function to get arguments positions (by yom)
argpos(const string[], idx = 0, sep = ' ')
{
    for(new i = idx, j = strlen(string); i < j; i++)
        if (string[i] == sep && string[i+1] != sep)
            return i+1;

    return -1;
}
//===============================================================================
stock CMDMessageToAdmins(playerid,command[]) { new string[200],name[30]; GetPlayerName(playerid,name,30); format(string,200,"[Admin]: %s has used the command %s",name,command); return MessageToAdmins(COLOR_BLUE,string); }
//=====================[ SAVING DATA ] =========================================
forward SaveToFile(filename[],text[]);
public SaveToFile(filename[],text[])
{
	new File:LAdminfile;
	new filepath[256], string[256], year,month,day, hour,minute,second;
	getdate(year,month,day); gettime(hour,minute,second);

	format(filepath,sizeof(filepath),"users/logs/%s.txt",filename);
	LAdminfile = fopen(filepath,io_append);
	format(string,sizeof(string),"[%d.%d.%d %d:%d:%d] %s\r\n",year,month,day,hour,minute,second,text);
	fwrite(LAdminfile,string);
	fclose(LAdminfile);
	return 1;
}
//============================[ EOF ]===========================================

/*
=========================
TogglePlayerControllable
=========================
*/
forward iFreeze();
public iFreeze()
{
	for(new i=0;i<MAX_PLAYERS;i++)
	{
		if(IsPlayerConnected(i))
		{
			TogglePlayerControllable(i,0);
		}
	}
}

/*
========================
String Defines
========================
*/

stock SendClientMessageToAllEx(color,msg[])
{
	SendClientMessageToAll(color,msg);
	CallRemoteFunction("explain", "s", msg);
}
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