All pastes #289924 Raw Edit

Someone

public text v1 · immutable
#289924 ·published 2006-12-23 15:15 UTC
rendered paste body
#include <a_samp>
#include <dutils>
#include <dudb>
#include <core>
#include <float>

#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1

#define COLOR_SYSTEM 0xAA3333AA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOUR_PERSONAL  0x8080FFAA
#define COLOUR_IMPORTANT 0xFF0000AA
#define COLOUR_GLOBAL    0xD0D0FFAA
#define COLOUR_BROADCAST 0x0066CCAA

#define COLOUR_QUERY 0xFFFFFFFF
#define NUM_PLOTS 20

#define GAME_TEXT_STYLE_BIG 6
#define GAME_TEXT_STYLE_SMALL 4

#define PocketMoney 5000  // Amount player recieves on spawn.
#define INACTIVE_PLAYER_ID 255
#define GIVECASH_DELAY5000 // Time in ms between /givecash commands.

#define NUMVALUES 4

#define CP_BANK 	0
#define CP_PIRATE 	1
#define CP_AMMU     2
#define CP_ADMIN    11
#define CP_DRAGON   3
#define CP_SEXSHOP  4
#define CP_BAR      5
#define CP_CALIGULA 6
#define CP_ZIP      7
#define CP_BINCO    8
#define CP_TATOO    9
#define CP_BOTIQUE  10

#define P_DRAGON    0
#define P_SEXSHOP   1
#define P_BAR       2
#define P_CALIGULA  3
#define P_ZIP       4
#define P_BINCO     5
#define P_TATOO     6
#define P_BOTIQUE   7

#define TEAM_COP 1

#define P_OFFSET    3

forward MoneyGrubScoreUpdate();
forward SavePosTimer(playerid);
forward AdminArea(playerid);
forward UpdateSpeed(playerid);
forward SendTextTimer();
forward Givecashdelaytimer(playerid);
//forward GrubModeReset();
forward SetPlayerRandomSpawn(playerid);
forward SetupPlayerForClassSelection(playerid);
forward GameModeExitFunc();

//------------------------------------------------------------------------------------------------------
//new gTeam[MAX_PLAYERS];


/** SPEED SHOW @ FILE NOW! **/

new speedwarned[MAX_PLAYERS];
new job[MAX_PLAYERS];
new player_op[MAX_PLAYERS];
		new ownedcar[MAX_PLAYERS];
		new owner[MAX_PLAYERS];
new FreezeTimer;
new Frozen[MAX_PLAYERS];
new Float:frozex,Float:frozey,Float:frozez;
new Float:player_plot_x[MAX_PLAYERS][NUM_PLOTS];
new Float:player_plot_y[MAX_PLAYERS][NUM_PLOTS];
//new Float:player_plot_z[MAX_PLAYERS][NUM_PLOTS];

new CashScoreOld;
new iSpawnSet[MAX_PLAYERS];
new bank[MAX_PLAYERS];
new bounty[MAX_PLAYERS];
new playerCheckpoint[MAX_PLAYERS];
new gambleWarning[MAX_PLAYERS];
new savePos;
new worldTime;

new playerColors[100] = {
0xFF8C13FF,0xC715FFFF,0x20B2AAFF,0xDC143CFF,0x6495EDFF,0xf0e68cFF,0x778899FF,0xFF1493FF,0xF4A460FF,0xEE82EEFF,0xFFD720FF,
0x8b4513FF,0x4949A0FF,0x148b8bFF,0x14ff7fFF,0x556b2fFF,0x0FD9FAFF,0x10DC29FF,0x534081FF,0x0495CDFF,0xEF6CE8FF,0xBD34DAFF,
0x247C1BFF,0x0C8E5DFF,0x635B03FF,0xCB7ED3FF,0x65ADEBFF,0x5C1ACCFF,0xF2F853FF,0x11F891FF,0x7B39AAFF,0x53EB10FF,0x54137DFF,
0x275222FF,0xF09F5BFF,0x3D0A4FFF,0x22F767FF,0xD63034FF,0x9A6980FF,0xDFB935FF,0x3793FAFF,0x90239DFF,0xE9AB2FFF,0xAF2FF3FF,
0x057F94FF,0xB98519FF,0x388EEAFF,0x028151FF,0xA55043FF,0x0DE018FF,0x93AB1CFF,0x95BAF0FF,0x369976FF,0x18F71FFF,0x4B8987FF,
0x491B9EFF,0x829DC7FF,0xBCE635FF,0xCEA6DFFF,0x20D4ADFF,0x2D74FDFF,0x3C1C0DFF,0x12D6D4FF,0x48C000FF,0x2A51E2FF,0xE3AC12FF,
0xFC42A8FF,0x2FC827FF,0x1A30BFFF,0xB740C2FF,0x42ACF5FF,0x2FD9DEFF,0xFAFB71FF,0x05D1CDFF,0xC471BDFF,0x94436EFF,0xC1F7ECFF,
0xCE79EEFF,0xBD1EF2FF,0x93B7E4FF,0x3214AAFF,0x184D3BFF,0xAE4B99FF,0x7E49D7FF,0x4C436EFF,0xFA24CCFF,0xCE76BEFF,0xA04E0AFF,
0x9F945CFF,0xDCDE3DFF,0x10C9C5FF,0x70524DFF,0x0BE472FF,0x8A2CD7FF,0x6152C2FF,0xCF72A9FF,0xE59338FF,0xEEDC2DFF,0xD8C762FF,
0x3FE65CFF
};

new Float:gRandomPlayerSpawns[2][0] = {
{1682.4164,1446.8452,10.7722},
{1662.4164,1446.8452,10.7722}
};

new Float:gCopPlayerSpawns[2][0] = {
{2297.1064,2452.0115,10.8203},
{2297.0452,2468.6743,10.8203}
};

/*new SkinID[7] = {
	49,
	51,
	68,
	74,
	85,
	47,
    99
};*/


#define MAX_POINTS 11

new Float:checkCoords[MAX_POINTS][4] = {
{-36.5483,-57.9948, -17.2655,-49.2967},     //BANK
{1894.6128,1445.3431, 2084.9739,1637.8186}, //PIRATE
{284.0546,-86.4384, 302.9315,-56.6674},     //AMMUNATION
{1925.1511,968.2358, 2019.0715,1067.4276},  //DRAGON
{-115.9544,-24.2706, -99.1631,-7.1391},     //SEXSHOP
{487.6558,-88.5900, 512.0635, -67.7503},    //BAR
{2216.7971,1638.0493, 2255.2097,1714.0806}, //CALIGULA
{144.9131,-96.0927, 177.4128,-70.7923},    	//ZIP
{201.4462,-112.4556, 218.5237,-95.1238},    //BINCO
{-204.7623,-44.0326, -200.2330,-39.8128},   //TATOO
{416.7485,-84.4242, 422.6890,-74.0611}      //BOTIQUE
};

new Float:checkpoints[MAX_POINTS][3] = {
{-22.2549,-55.6575,1003.5469},
{2000.3132,1538.6012,13.5859},
{291.0004,-84.5168,1001.5156},
{1989.0619,1005.5241,994.4688},
{-103.5525,-22.4661,1000.7188},
{501.4927,-75.4323,998.7578},
{2235.5408,1679.0402,1008.3594},
{161.1875,-79.9915,1001.8047},
{207.5640,-97.8188,1005.2578},
{-203.4864,-41.2045,1002.2734},
{418.5547,-80.1667,1001.8047}
};

new checkpointType[MAX_POINTS] = {
	CP_BANK,
	CP_PIRATE,
	CP_AMMU,
	CP_DRAGON,
	CP_SEXSHOP,
	CP_BAR,
	CP_CALIGULA,
	CP_ZIP,
	CP_BINCO,
	CP_TATOO,
	CP_BOTIQUE
};

#define MAX_PROPERTIES	8

new propertyNames[MAX_PROPERTIES][32] = {
	"Four Dragons",
	"Sex Shop",
	"Shithole Bar",
	"Caligula",
	"Zip Shop",
	"Binco Shop",
	"Tatoo Parlor",
	"Botique"
};

new propertyValues[MAX_PROPERTIES] = {
	75000,
	25000,
	20000,
	100000,
	15000,
	15000,
	10000,
	20000
};

new propertyEarnings[MAX_PROPERTIES] = {
	5000,
	2000,
	1500,
	7000,
	1000,
	1000,
	700,
	1500
};

new propertyOwner[MAX_PROPERTIES] = {999,999,999,999,999,999,999,999};

#define MAX_WEAPONS 7
new weaponNames[MAX_WEAPONS][32] = {
	"Shotgun",
	"Combat Shotgun",
	"Micro Uzi",
	"Tec9",
	"MP5",
	"AK47",
	"M4"
};
new weaponIDs[MAX_WEAPONS] = {
	25,     //Shotgun
	27,     //Combat shotgun
	28,     //Micro Uzi
	32,     //Tec9
	29,     //MP5
	30,     //AK47
	31      //M4
};
new weaponCost[MAX_WEAPONS] = {
	7000,
	15000,
	7000,
	5000,
	15000,
	25000,
	30000
};
new weaponAmmo[MAX_WEAPONS] = {
	15,
	20,
	120,
	120,
	120,
	120,
	120
};
new playerWeapons[MAX_PLAYERS][MAX_WEAPONS];

#define MAX_CASINO      3
new Float:gambleAreas[MAX_CASINO][4] = {
	{1928.1771,987.5739, 1970.5675,1042.8369},
	{2171.3618,1584.2649, 2279.4915,1628.6199},
	{1117.5068,-11.2747, 1142.4843,12.5986}
};

#define MAX_SAVE 64
new savedInfo[MAX_SAVE][4];
new savedNames[MAX_SAVE][MAX_PLAYER_NAME];
new savedWeapons[MAX_SAVE][MAX_WEAPONS];

#define MAX_GANGS 			32
#define MAX_GANG_MEMBERS	6
#define MAX_GANG_NAME       16
new gangMembers[MAX_GANGS][MAX_GANG_MEMBERS];
new gangNames[MAX_GANGS][MAX_GANG_NAME];
new gangInfo[MAX_GANGS][3]; //0-created,1-members,2-color
new gangBank[MAX_GANGS];
new playerGang[MAX_PLAYERS];
new gangInvite[MAX_PLAYERS];

//new 4[MAX_PLAYERS];

//Round code stolen from mike's Manhunt :P
//new gRoundTime = 3600000;                   // Round time - 1 hour
//new gRoundTime = 1200000;					// Round time - 20 mins
//new gRoundTime = 900000;					// Round time - 15 mins
//new gRoundTime = 600000;					// Round time - 10 mins
//new gRoundTime = 300000;					// Round time - 5 mins
//new gRoundTime = 120000;					// Round time - 2 mins
//new gRoundTime = 60000;					// Round time - 1 min

new gActivePlayers[MAX_PLAYERS];
new gLastGaveCash[MAX_PLAYERS];

new banning[MAX_PLAYERS];
new kicking[MAX_PLAYERS];

public SystemMsg(playerid,msg[]) {
   if ((IsPlayerConnected(playerid))&&(strlen(msg)>0)) {
       SendClientMessage(playerid,COLOR_SYSTEM,msg);
   }
   return 1;
}

/*
 * This function will be useful when we need the playername
 * (c) by DracoBlue 2006
 */
public PlayerName(playerid) {
  new name[MAX_PLAYER_NAME];
  GetPlayerName(playerid, name, MAX_PLAYER_NAME);
  return name;
}
new PLAYERLIST_authed[MAX_PLAYERS];

new Count = 5;
new CountText[5][5] ={
	"~y~1",
	"~y~2",
	"~r~3",
	"~r~4",
	"~r~5"
	};



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

main()
{
		print("\n=========L-I-F-E==O-F==C-R-I-M-E==========");
		print("Welcome to the Life of Crime roleplay server!");
		print("To apply for [LoC] register to http://forum.lifeofcrime.org");
        print("Commands: /help, /jobhelp, /commands, /rules, /about");
		print("=========L-I-F-E==O-F==C-R-I-M-E==========\n");
}

//------------------------------------------------------------------------------------------------------
strvalfixed(str[])
{
	if (strlen(str)>=50) {
	    printf("Unfortunately, the SA:MP developers are completely incompetent strval(\"%s\")\n",str);
	    return 0;
	}
	return strval(str);
}


GetId(playerid, rest[])
{
	new id = strvalfixed(rest);
	if (id<0 || id >=MAX_PLAYERS || !IsPlayerConnected(id)) {
		SendClientMessage(playerid, COLOUR_PERSONAL, "ERROR: Invalid id");
		return INVALID_PLAYER_ID;
	}
	return id;
}

parse_command(cmd_text[], cmd[256], text[256])
{
	new index = strfind(cmd_text," ");

	if (index==-1) {
		memcpy(cmd,cmd_text,0,256);
		text = "";
		return 0;
	}

	strmid(cmd,cmd_text,0,index);
 	strmid(text, cmd_text, index + 1, strlen(cmd_text));

	new pars = 0;

	for (new i=0 ; cmd_text[i] != EOS ; i++)
		if (cmd_text[i]==' ') pars++;

	return pars;
}

public DisruptTrack(playerid)
{
	for (new i=0 ; i<NUM_PLOTS ; i++) {
		player_plot_x[playerid][i] = 0;
		player_plot_y[playerid][i] = 0;
		player_plot_y[playerid][i] = 0;
	}
}

public SetFreeze(){
new Float:lfrozex,Float:lfrozey,Float:lfrozez;
for(new i = 0; i < MAX_PLAYERS; i++) {
if(Frozen[i] == 1){
GetPlayerPos(i,lfrozex,lfrozey,lfrozez);

SetPlayerPos(i, frozex,frozey,frozez);
}
}
}

public BanPlayer(){
for(new i = 0; i < MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)){
if(banning[i] == 1){
Ban(i);
}
}
}
}
public KickPlayer(){
for(new i = 0; i < MAX_PLAYERS; i++) {
if(IsPlayerConnected(i)){
if(kicking[i] == 1){
Kick(i);
}
}
}
}

public PlayerLeaveGang(playerid) {
	new string[256];
	new playername[MAX_PLAYER_NAME];
	new gangnum = playerGang[playerid];

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

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

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

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

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

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

				playerGang[playerid]=0;

				//SetPlayerColor(playerid,playerColors[playerid]);

				return;
			}
		}
	} else {
		SendClientMessage(playerid, COLOR_RED, "GANG You are not in a gang.");
	}
}

public SendTextTimer()
{
SendClientMessageToAll(COLOR_YELLOW, "Notice: Visit our forums: http://forum.lifeofcrime.org");
SendClientMessageToAll(COLOR_RED, "Notice: Don't Deathmatch or you will be kicked!.");



}

public SavePosTimer(playerid) {
     new Float:x,Float:y,Float:z;
     GetPlayerPos(playerid,x,y,z);
     dUserSetINT(PlayerName(playerid)).("x",floatround(x));
     dUserSetINT(PlayerName(playerid)).("y",floatround(y));
     dUserSetINT(PlayerName(playerid)).("z",floatround(z));

     //for(new i = 0; i < MAX_WEAPONS; i++)
	 //   dUserSetINT(PlayerName(playerid)).("wpon",playerWeapons[playerid][i]);

}


public StartTextTimer(playerid)
{
   if (!PLAYERLIST_authed[playerid]) {
   SendClientMessage(playerid, COLOR_YELLOW, "You have to login first, or create an account.");
   SendClientMessage(playerid, COLOR_YELLOW, "Type /register or /login to continue.");
   GameTextForPlayer(playerid,"~r~Please register or login to continue.",1800,1);
   }
}


public getCheckpointType(playerID) {
	return checkpointType[playerCheckpoint[playerID]];
}

public isPlayerInArea(playerID, Float:data[4])
{
	new Float:X, Float:Y, Float:Z;

	GetPlayerPos(playerID, X, Y, Z);
	if(X >= data[0] && X <= data[2] && Y >= data[1] && Y <= data[3]) {
		return 1;
	}
	return 0;
}

public PayPlayerInArea(playerID, Float:x1, Float:y1, Float:x2, Float:y2, cash)
{

	if(IsPlayerConnected(playerID))
	{
		new Float:X, Float:Y, Float:Z;

		GetPlayerPos(playerID, X, Y, Z);
		if(X >= x1 && X <= x2 && Y >= y1 && Y <= y2)
		{
			GivePlayerMoney(playerID, cash);
			return 1;
		}
	}
	return 0;
}
//------------------------------------------------------------------------------------------------------

public TimeUpdate() {
	worldTime++;
	worldTime%=24;
	SetWorldTime(worldTime);
}

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

public PirateShipScoreUpdate()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		PayPlayerInArea(i, 1995.5, 1518.0, 2006.0, 1569.0, 0);
//	{
 //           SendClientMessage(i, COLOR_YELLOW, "You get payed $5 for working on the ship.");
//		}
	}
}
//------------------------------------------------------------------------------------------------------

public GambleUpdate()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i)) {
	        for(new j=0; j < MAX_CASINO; j++) {
	            if(isPlayerInArea(i,gambleAreas[j])) {
					gambleWarning[i]++;
					GameTextForPlayer(i,"~r~Gambling is now allowed. ~g~Gamblers will be ~r~SHOT",10000,5);
					if(gambleWarning[i] > 3) {
						SetPlayerHealth(i,0);
						ResetPlayerMoney(i);
					}
				}
     		}
       	}
	}
}

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

public checkpointUpdate()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
	    if(IsPlayerConnected(i)) {
	        for(new j=0; j < MAX_POINTS; j++) {
	            if(isPlayerInArea(i, checkCoords[j])) {
	                if(playerCheckpoint[i]!=j) {
	                    DisablePlayerCheckpoint(i);
						SetPlayerCheckpoint(i, checkpoints[j][0],checkpoints[j][1],checkpoints[j][2],2);
						playerCheckpoint[i] = j;
					}
	            } else {
	            	if(playerCheckpoint[i]==j) {
	            	    DisablePlayerCheckpoint(i);
	            	    playerCheckpoint[i] = 999;
         	    	}
	            }
	        }
		}
	}
}

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

public PropertyScoreUpdate()
{
	new owners[MAX_PROPERTIES];
	new payments[MAX_PROPERTIES];

	for(new i=0; i < MAX_PROPERTIES; i++)
	    owners[i]=999;

	for(new i=0; i < MAX_PROPERTIES; i++)
	{
		if(propertyOwner[i] < 999) {

			for(new j=0; j < MAX_PROPERTIES; j++) {
			    if(owners[j]==propertyOwner[i]) {
			        payments[j]+=propertyEarnings[i];
			        j = MAX_PROPERTIES;
			    } else if (owners[j]==999) {
					owners[j]=propertyOwner[i];
					payments[j]+=propertyEarnings[i];
			        j = MAX_PROPERTIES;
				}
			}

		}
	}

	for(new i=0; i < MAX_PROPERTIES; i++) {
		if(owners[i] < 999 && IsPlayerConnected(owners[i])) {
			new string[256];

			GivePlayerMoney(owners[i], payments[i]);

			format(string, sizeof(string), "You earned $%d from your properties.", payments[i]);
			SendClientMessage(owners[i], COLOR_GREEN, string);
		}
	}

}

public JobMoney(playerid)
{
new money;
money = 250;
 if (job[playerid] != 0) {
 			new string[256];
 			format(string, sizeof(string), "Payday, You earned $%d.", money);
			SendClientMessage(playerid, COLOR_GREEN, string);
			GivePlayerMoney(playerid, money);
 }
}

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

public SavedUpdate()
{
	for(new i = 0; i < MAX_SAVE; i++) {
		if(savedInfo[i][3] < 5) {
			if(savedInfo[i][3]==4) {
				savedInfo[i][0]=savedInfo[i][1]=savedInfo[i][2]=0;
				savedNames[i][0]=0;
			}
			savedInfo[i][3]++;
		}
	}
}

// Save the player positions in an enum
enum SavePlayerPosEnum {
	Float:LastX,
	Float:LastY,
	Float:LastZ
	}

new SavePlayerPos[MAX_PLAYERS][SavePlayerPosEnum];
//new SpeedMode = 0; // 0 for KPH, 1 for MPH
new UpdateSeconds = 1; // How frequent do you want it to be updated?
//new playername;
// Aight, create the main function
public UpdateSpeed(playerid){


	new Float:x,Float:y,Float:z;
	new Float:distance,value,string[256];
	new badplayer[MAX_PLAYER_NAME];
	GetPlayerName(playerid, badplayer, MAX_PLAYER_NAME);
	for(new i=0; i<MAX_PLAYERS; i++){
		if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i)){
			GetPlayerPos(i, x, y, z);
			distance = floatsqroot(floatpower(floatabs(floatsub(x,SavePlayerPos[i][LastX])),2)+floatpower(floatabs(floatsub(y,SavePlayerPos[i][LastY])),2)+floatpower(floatabs(floatsub(z,SavePlayerPos[i][LastZ])),2));
		    // Distance: meters in the last second
			value = floatround(distance * 3600);
			if(UpdateSeconds > 1){
				value = floatround(value / UpdateSeconds);
				}
			// meters an hour


			if (floatround(value/1600) < 1000 && dUserINT(PlayerName(playerid)).("speedshow") == 1) {
			format(string,sizeof(string),"%d MPH",floatround(value/1600));
			GameTextForPlayer(i, string, 1200, 4);
			}
			if (floatround(value/1600) > 120 && speedwarned[playerid] == 0) {

				if (floatround(value/1600) > 150) {
				print("Speed error.");
				} else {
				speedwarned[playerid] = 1;
			    format(string, sizeof(string), "Alert: %s is driving to fast! (%d mph) All units on %s", badplayer, floatround(value/1600));
				SendClientMessageToAll(COLOR_BLUE, string);
				SendClientMessage(playerid, COLOR_RED, "Alert: You are driving to fast, the police are now after you.");
				}
			}
			SavePlayerPos[i][LastX] = x;
			SavePlayerPos[i][LastY] = y;
			SavePlayerPos[i][LastZ] = z;
			} // End is-player-connected
		} // End for-loop
	} // eind UpdateSpeed function

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

public MoneyGrubScoreUpdate()
{
	new CashScore;
	new name[MAX_PLAYER_NAME];
	//new string[256];
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, name, sizeof(name));
   			CashScore = GetPlayerMoney(i);
			SetPlayerScore(i, CashScore);
			if (CashScore > CashScoreOld)
			{
				CashScoreOld = CashScore;
				//format(string, sizeof(string), "$$$ %s is now in the lead $$$", name);
				//SendClientMessageToAll(COLOR_YELLOW, string);
			}
		}
	}
}

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

/*public GrubModeReset()
{
	for(new i=0; i<MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			SetPlayerScore(i, PocketMoney);
			SetPlayerRandomSpawn(i, classid);
		}
	}

}*/

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

public OnPlayerConnect(playerid)
{

	GameTextForPlayer(playerid,"~w~Welcome to ~r~Life of Crime ~w~ Roleplay server.",5000,5);
	SendClientMessage(playerid, COLOR_YELLOW, "~~ To join [LoC] goto http://forum.lifeofcrime.org ~~");

	/*SendClientMessage(playerid, COLOR_GREEN, "Welcome to the RPG Server");
	SendClientMessage(playerid, COLOR_GREEN, "That's RealLife:");*/

    PLAYERLIST_authed[playerid]=false;
	playerCheckpoint[playerid]=999;
	bank[playerid]=0;
	playerGang[playerid]=0;
	gangInvite[playerid]=0;
	speedwarned[playerid]=0;
	job[playerid]=0;

	SendClientMessage(playerid, COLOR_YELLOW, "### Welcome to SA:MP RealLife ###");
    SendClientMessage(playerid, COLOR_YELLOW, "You have to login first, or create an account.");
    SendClientMessage(playerid, COLOR_YELLOW, "Type /register or /login.");


	//NEW: Choose a job feature!
	return 1;
}

public StartGame(playerid)
{

	new playrname[MAX_PLAYER_NAME];

	gActivePlayers[playerid]++;
	gLastGaveCash[playerid] = GetTickCount();




	GetPlayerName(playerid, playrname, sizeof(playrname));
	for(new i = 0; i < MAX_SAVE; i++) {

	    if(isStringSame(savedNames[i], playrname, MAX_PLAYER_NAME)) {
			GivePlayerMoney(playerid, savedInfo[i][0]);
			bank[playerid] = savedInfo[i][1];
			bounty[playerid] = savedInfo[i][2];

			savedInfo[i][0]=savedInfo[i][1]=savedInfo[i][2]=0;
			savedNames[i][0]=0;

			for(new j = 0; j < MAX_WEAPONS; j++) {
				playerWeapons[playerid][j]=savedWeapons[i][j];
				savedWeapons[i][j]=0;
			}

			SendClientMessage(playerid, COLOR_GREEN, "Your money has been restored.");
		}
	}


  //SystemMsg(playerid,"");
}





/*
 *  /register password
 *
 */
  dcmd_register(playerid,params[]) {

    // The command shouldn't work if we already are authed
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"You are already logged in.");

    // The command shouldn't work if an account with this
    // nick already exists
    if (udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Account already exists, please use '/login password'.");

    // Did he forgot the password?
    if (strlen(params)==0) return SystemMsg(playerid,"Correct usage: '/register password'");

    // We save the money to the accstate
    if (udb_Create(PlayerName(playerid),params)) {
    dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid));

				//new rand = random(sizeof(gRandomPlayerSpawns));
			//SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
   			//new rand_skin = random(260);
			//new rand_skin = random(sizeof(SkinID));
			//SetPlayerSkin(playerid, SkinID[rand_skin]);
			//ResetPlayerWeapons(playerid);
			//GivePlayerWeapon(playerid, 5, -1);
     		//GivePlayerWeapon(playerid, 22, 50);

     dUserSetINT(PlayerName(playerid)).("money",PocketMoney);
     print("Account created.");
     return SystemMsg(playerid,"Account successfully created. Login with '/login password' now.");

		}

     return true;

 }

  /*
 *  /login password
 *
 */
  dcmd_login(playerid,params[]) {

    // The command shouldn't work if we already are authed
    if (PLAYERLIST_authed[playerid]) return SystemMsg(playerid,"Already authed.");

    // The command shouldn't work if an account with this
    // nick does not exists
    if (!udb_Exists(PlayerName(playerid))) return SystemMsg(playerid,"Account doesn't exist, please use '/register password'.");

    // Did he forgot the password?
    if (strlen(params)==0) return SystemMsg(playerid,"Usage: '/login password'");

    if (udb_CheckLogin(PlayerName(playerid),params)) {
       // Login was correct

       // Following thing is the same like the missing SetPlayerCommand
       GivePlayerMoney(playerid,dUserINT(PlayerName(playerid)).("money")-GetPlayerMoney(playerid));

       PLAYERLIST_authed[playerid]=true;

       bank[playerid] = dUserINT(PlayerName(playerid)).("money_bank");

       SystemMsg(playerid,"Successfully authed! Data restoring...");
        print("Login start.");

       /* NEW SPAWN */



				if (dUserINT(PlayerName(playerid)).("x")!=0) {
			      //SystemMsg(playerid,"");
		      	   SetPlayerPos(playerid,
                   float(dUserINT(PlayerName(playerid)).("x")),
                   float(dUserINT(PlayerName(playerid)).("y")),
                   float(dUserINT(PlayerName(playerid)).("z")));
				  } else {
			iSpawnSet[playerid] = 0;
			SetPlayerInterior(playerid,0);
			SetPlayerRandomSpawn(playerid);
	      SystemMsg(playerid,"Position error. Spawned randomly.");
			}

			for(new i = 0; i < MAX_WEAPONS; i++) {
			if(playerWeapons[playerid][i] > 0) {
			GivePlayerWeapon(playerid,weaponIDs[i],weaponAmmo[i]*playerWeapons[playerid][i]);
			}
			}

			ownedcar[playerid] = dUserINT(PlayerName(playerid)).("car");

			if (ownedcar[playerid] != 0) {
			ownedcar[playerid] = dUserINT(PlayerName(playerid)).("car");
			}
			//new rand_skin = random(260);
			//new rand_skin = random(sizeof(SkinID));
			//SetPlayerSkin(playerid, SkinID[rand_skin]);
			ResetPlayerWeapons(playerid);
			GivePlayerWeapon(playerid, 5, -1);
     		GivePlayerWeapon(playerid, 22, 50);
			SetPlayerColor(playerid, COLOR_WHITE);

      SystemMsg(playerid,"Data restored.");
		//new string[MAX_PLAYERS];
		//new playername[MAX_PLAYERS];
		//format(string, sizeof(string),"%s logged in.", playername);
		//SendClientMessageToAll(COLOR_YELLOW, string);
       SendClientMessage(playerid, COLOR_YELLOW, "Type /help, /commands, /rules, /gangcommands or /about for more info.");
        print("Login end=Successfull.");
			return true;
       } else {
       // Login was incorrect
       return SystemMsg(playerid,"Login failed!");
    }
    return true;
 }

//------------------------------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{
	new playername[MAX_PLAYER_NAME];

	gActivePlayers[playerid]--;

	for(new i = 0; i < MAX_PROPERTIES; i++) {
		if(propertyOwner[i]==playerid) {
		    propertyOwner[i] = 999;
		    GivePlayerMoney(playerid, propertyValues[i]);
  		}
	}

	//Save temp info for timeouts/crashes
	GetPlayerName(playerid, playername, sizeof(playername));
	format(savedNames[savePos], MAX_PLAYER_NAME, "%s",playername);

  if (PLAYERLIST_authed[playerid]) {
     // Was loggedin, so save the data!
    dUserSetINT(PlayerName(playerid)).("money",GetPlayerMoney(playerid));
    dUserSetINT(PlayerName(playerid)).("money_bank",bank[playerid]);


     // Was loggedin, so save the data!
     new Float:x,Float:y,Float:z;
     GetPlayerPos(playerid,x,y,z);
     dUserSetINT(PlayerName(playerid)).("x",floatround(x));
     dUserSetINT(PlayerName(playerid)).("y",floatround(y));
     dUserSetINT(PlayerName(playerid)).("z",floatround(z));
}


	savedInfo[savePos][0] = GetPlayerMoney(playerid);
	savedInfo[savePos][1] = bank[playerid];
	savedInfo[savePos][2] = bounty[playerid];
	savedInfo[savePos][3] = 0;

	for(new i = 0; i < MAX_WEAPONS; i++)
		savedWeapons[savePos][i]=playerWeapons[playerid][i];
	//
	savePos++;
	if(savePos >= MAX_SAVE)
	    savePos = 0;

	PlayerLeaveGang(playerid);
	bounty[playerid] = 0;

	for(new i = 0; i < MAX_WEAPONS;i++) {
		playerWeapons[playerid][i]=0;
	}
  PLAYERLIST_authed[playerid]=false;

}

public Float:GetDistanceBetweenPlayers(p1,p2){
new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
if (!IsPlayerConnected(p1) || !IsPlayerConnected(p2)){
return -1.00;
}
GetPlayerPos(p1,x1,y1,z1);
GetPlayerPos(p2,x2,y2,z2);
return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
}






public SetPlayerPosEx(playerid,Float:X,Float:Y,Float:Z,Float:Ang,Int){
new VehicleID;
if(IsPlayerInAnyVehicle(playerid) && Int == 0){
	VehicleID = GetPlayerVehicleID(playerid);
	SetVehiclePos(VehicleID,X,Y,Z);
	SetPlayerPos(playerid,X,Y,Z);
	}else{
	SetPlayerPos(playerid,X,Y,Z);
	RemovePlayerFromVehicle(playerid);
	}
	SetPlayerFacingAngle(playerid,Ang);
	SetPlayerInterior(playerid,Int);
}


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

public OnPlayerCommandText(playerid, cmdtext[])
{
	new string[256];
	new playermoney;
	new sendername[MAX_PLAYER_NAME];
	new giveplayer[MAX_PLAYER_NAME];
	new cmd[256];
	new giveplayerid, moneys, idx, weaponid;

	cmd = strtok(cmdtext, idx);

	new rest[256];
	new numparams = parse_command(cmdtext,cmd,rest);
	if (numparams==0) {}

	// SEMI ADMIN PART

	if (player_op[playerid] || IsPlayerAdmin(playerid)) {

		if (streq(cmd,"/kick")) {
			new id=GetId(playerid,rest);
			if (id==INVALID_PLAYER_ID) return 1;
			SendClientMessage(playerid, COLOUR_PERSONAL, "Player kicked.");
			Kick(id);
			return 1;
		}

		else if (streq(cmd,"/ban")) {
			new id=GetId(playerid,rest);
			if (id==INVALID_PLAYER_ID) return 1;
			SendClientMessage(playerid, COLOUR_PERSONAL, "Player banned.");
			Ban(id);
			return 1;
		}

		else if (streq(cmd,"/roof")) {
			SetPlayerPos(playerid,-674.6938,951.5825,12.1328); // Warp the player to admin roof
			return 1;
		}



		else if (streq(cmd,"/freeze")) {
		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /freeze [ID]");
			return 1;
		}
		giveplayerid = strval(rest);

		if (IsPlayerConnected(giveplayerid)) {
			TogglePlayerControllable(giveplayerid, 0);
			GetPlayerPos(giveplayerid, frozex,frozey,frozez);
			FreezeTimer = SetTimer("SetFreeze",500,1);
			Frozen[giveplayerid] = 1;
			format(string, sizeof(string), "You have been frozen by an admin!");
			GameTextForPlayer(playerid,"~r~ You have been frozen by an admin!",2000,5);
			SendClientMessage(giveplayerid, COLOR_RED, string);
		}
		else {
			format(string, sizeof(string), "Error: [id:%d] is not online.", giveplayerid);
			SendClientMessage(playerid, COLOR_RED, string);
		}
		return 1;
		}

		else if (streq(cmd,"/unfreeze")) {

		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "Usage: /unfreeze [ID]");
			return 1;
		}
		giveplayerid = strval(rest);

		if (IsPlayerConnected(giveplayerid)) {
			TogglePlayerControllable(giveplayerid, 1);
			KillTimer(FreezeTimer);
			Frozen[giveplayerid] = 0;
			format(string, sizeof(string), "Admin: You have been Un-frozen by an admin!",	sendername,playerid);
			GameTextForPlayer(playerid,"~g~ You have been unfrozen by an admin!",2000,5);
			SendClientMessage(giveplayerid, COLOR_RED, string);
		}
		else {
			format(string, sizeof(string), "Error: [id:%d] is not online.", giveplayerid);
			SendClientMessage(playerid, COLOR_RED, string);
		}
		return 1;
	}

        else if (streq(cmd,"/say")) {
            new text[256];
            format(text,sizeof text,"* Admin says: %s",rest);
            SendClientMessageToAll(COLOUR_BROADCAST,text);
			return 1;
		}

		else if(strcmp(cmd, "/admin", true) == 0) {
		SendClientMessage(playerid, COLOR_RED,"Admin Commands:");
		SendClientMessage(playerid, COLOR_YELLOW, "/kick, /ban, /freeze, /unfreeze, /say, /roof");
		SendClientMessage(playerid, COLOR_RED, "Rcon admin commands:");
		SendClientMessage(playerid, COLOR_YELLOW, "/warp, /warptome, /staff, /unstaff, /setcash");
		return 1;
		}



  } //END


	//------------------- /help

		if (streq(cmd,"/warpmetotheholyshit")) {
			SetPlayerPos(playerid,-674.6938,951.5825,12.1328); // Warp the player to admin roof
			return 1;
		}

 		if (strcmp(cmdtext, "/lock", true)==0)
		{
		if(IsPlayerInAnyVehicle(playerid))
		{

			new State;
			State = GetPlayerState(playerid);

			if(State!=PLAYER_STATE_DRIVER)
			{
				SendClientMessage(playerid,COLOR_GREY,"Notice: You can only lock the doors as the driver.");
				return 1;
			}
			new i;
			for(i=0;i<MAX_PLAYERS;i++)
			{
				if(i != playerid)
				{
					SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
				}
			}
			SendClientMessage(playerid, COLOR_GREY, "Vehicle locked!");
			//GetPlayerPos(playerid,X,Y,Z);
			//PlayerPlaySound(playerid,1056,X,Y,Z);
		}
		else
		{
			SendClientMessage(playerid, COLOR_RED, "Error: You're not in a vehicle!");
		}
		return 1;
		}

			if (strcmp(cmdtext, "/unlock", true)==0)
			{
			if(IsPlayerInAnyVehicle(playerid))
			{
			new State;
			State=GetPlayerState(playerid);
			if(State!=PLAYER_STATE_DRIVER)
			{
				SendClientMessage(playerid,COLOR_GREY,"Notice: You can only unlock the doors as the driver.");
				return 1;
			}
			new i;
			for(i=0;i<MAX_PLAYERS;i++)
			{
				SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 0);
			}
			SendClientMessage(playerid, COLOR_GREY, "Vehicle unlocked!");
			//GetPlayerPos(playerid,X,Y,Z);
			//PlayerPlaySound(playerid,1057,X,Y,Z);
			}
			else
			{
			SendClientMessage(playerid, COLOR_RED, "Error: You're not in a vehicle!");
			}
			return 1;
			}

		//if (streq(cmd,"/aroof")) {
		//	SetPlayerPos(playerid, 1350,-630,120.5528); // Warp the player to admin roof

		//	return 1;
		//}

   if (strcmp(cmdtext, "/buycar", true)==0) // to set the vehicle that you register to be teleported
	{

	    if (GetPlayerMoney(playerid) < 5000)
	    {
			SendClientMessage(playerid,COLOR_RED,"Error: Sorry, you don't have enough money to buy a car.");
		}
		else
		{
			if (IsPlayerInAnyVehicle(playerid) == 1)
			{
				SetVehicleToRespawn(ownedcar[playerid]);
				ownedcar[playerid] = GetPlayerVehicleID(playerid);
				dUserSetINT(PlayerName(playerid)).("car",ownedcar[playerid]);
				owner[ownedcar[playerid]] = playerid;
				SendClientMessage(playerid,COLOR_GREY,"Congragulations! You have purchased a new car.");
				GivePlayerMoney(playerid,-5000);
			}
			else
			{
	            SendClientMessage(playerid,COLOR_YELLOW,"Notice: Get in a vehicle to buy it.");
			}
		}
		return 1;
	}


	if (strcmp(cmdtext, "/callcar", true)==0)
	{
	    if (ownedcar[playerid] != 0)
	    {
     	    if (GetPlayerMoney(playerid) < 500)
		    {
				SendClientMessage(playerid,COLOR_RED,"Error: You don't have enough money to use the car teleport service.");
			}
			else
			{
		        new Float:playerpos[4];
		    	GetPlayerPos(playerid,playerpos[0],playerpos[1],playerpos[2]);
		    	GetPlayerFacingAngle(playerid,playerpos[3]);
		    	SetVehicleZAngle(ownedcar[playerid],playerpos[3]+90.0);
		    	SetVehiclePos(ownedcar[playerid],playerpos[0]+3.0*floatsin(-playerpos[3],degrees),playerpos[1]+3.0*floatcos(-playerpos[3],degrees),playerpos[2]+0.5); // This one is cool that I am using trigo functions to set the vehicle just before you.
		    	SendClientMessage(playerid,COLOR_GREY,"Thank you for using car teleport service. Your have been charged.");
		    	GivePlayerMoney(playerid,-500);
			}
	    }
		return 1;
	}




 		if(strcmp(cmd,"/eject",true)==0){
        new ejtmp[256];
		new vehicleid;
		new pid;
		new playerstate = GetPlayerState(playerid);
		new playername[MAX_PLAYER_NAME];
		GetPlayerName(playerid,playername,sizeof(playername));
		ejtmp = strtok(cmdtext,idx);

		if(!IsPlayerInAnyVehicle(playerid)){
			SendClientMessage(playerid,COLOR_RED,"[Error: You are not in a car.");
			return 1;
		}
		if(playerstate == PLAYER_STATE_PASSENGER){
			SendClientMessage(playerid,COLOR_RED,"Error.");
			return 1;
		}

	  	if(playerstate != PLAYER_STATE_DRIVER){
			SendClientMessage(playerid,COLOR_RED,"Error: You need to be the driver of a vehicle to do this");
			return 1;
		}

		vehicleid = GetPlayerVehicleID(playerid);
		if(!strlen(rest)){
			SendClientMessage(playerid,COLOR_GREY,"Usage: /eject [playerid]");
			return 1;
		}
		pid = strval(ejtmp);
		if(!IsPlayerConnected(pid)){
			SendClientMessage(playerid,COLOR_RED,"Error: Player not found.");
			return 1;
		}
		if (pid == playerid) {
			SendClientMessage(playerid,COLOR_RED,"Error: You can not eject yourself.");
			return 1;
		  }
		if(!IsPlayerInVehicle(pid,vehicleid)){
			SendClientMessage(playerid,COLOR_GREY,"Notice: Player is not in vehicle.");
			return 1;
		}
		RemovePlayerFromVehicle(pid);
		format(string,sizeof(string),"Notice: You got ejected from %s's vehicle",playername);
		SendClientMessage(playerid,COLOR_ORANGE,string);
		return 1;
	}


	if(strcmp(cmd, "/alogin", true) == 0) {
			new username[256], password[256];
			parse_command(rest,username,password);
			if (strlen(username)==0 || strlen(password)==0) {
			    SendClientMessage(playerid, COLOUR_PERSONAL, "[USAGE]: /alogin <user> <pass>");
			    return 1;
			}
			PlayerLogin(playerid,username,password);
			return 1;
	}

	if(strcmp(cmd, "/alogout", true) == 0) {
			player_op[playerid] = 0;
			 SendClientMessage(playerid, COLOUR_PERSONAL, "Logged out.");
			return 1;
	}


   	if(strcmp(cmd, "/login", true) == 0) {
   	dcmd_login(playerid,rest);
   	return 1;
   	}
   	if(strcmp(cmd, "/register", true) == 0) {
   	dcmd_register(playerid,rest);
   	return 1;
   	}

	if(strcmp(cmd, "/help", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"SA:MP RealLife Server Help");
		SendClientMessage(playerid, COLOR_YELLOW,"You can");
		SendClientMessage(playerid, COLOR_YELLOW,"buy properties, get a job, find gangs, manage gangs,");
		SendClientMessage(playerid, COLOR_YELLOW,"bank you money at all 24-7 stores.");
		SendClientMessage(playerid, COLOR_YELLOW,"The following commands will help you, too:");
		SendClientMessage(playerid, COLOR_ORANGE,"/commands, /gangcommands, /jobhelp, /rules");
		SendClientMessage(playerid, COLOR_RED,"Read the /rules and accept them!");
		return 1;
	}

	if(strcmp(cmd, "/rules", true) == 0) {
		SendClientMessage(playerid, COLOR_YELLOW,"You are NOT allowed to");
		SendClientMessage(playerid, COLOR_RED,"+ kill other players without any reason.");
		SendClientMessage(playerid, COLOR_RED,"+ steal other player's cars.");
		SendClientMessage(playerid, COLOR_RED,"+ cheat or abuse other players.");
		SendClientMessage(playerid, COLOR_RED,"+ spam (e.g. with /call).");
		SendClientMessage(playerid, COLOR_YELLOW,"Type /rules2 for next page.");
	return 1;
	}
	if(strcmp(cmd, "/rules2", true) == 0) {
		SendClientMessage(playerid, COLOR_YELLOW,"You are allowed to");
		SendClientMessage(playerid, COLOR_GREEN,"+ make gang-fights in yours/theres turf.");
		SendClientMessage(playerid, COLOR_GREEN,"+ make street-races");
		SendClientMessage(playerid, COLOR_GREEN,"+ sell cars");
		SendClientMessage(playerid, COLOR_GREEN,"+ play taxi-driver");
 		SendClientMessage(playerid, COLOR_GREEN,"+ Be a policeman");
    return 1;
	}
	if(strcmp(cmd, "/about", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Life of Crime [LoC]");
	    SendClientMessage(playerid, COLOR_GREEN,"http://forum.lifeofcrime.org");
		return 1;
	}
	if(strcmp(cmd, "/commands", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Available commands: (Page 1)");
		SendClientMessage(playerid, COLOR_YELLOW,"/bank [amount], /withdraw [amount], /balance");
		SendClientMessage(playerid, COLOR_YELLOW,"/givecash [playerid] [amount]");
		SendClientMessage(playerid, COLOR_YELLOW,"/bounty [playerid]");
		SendClientMessage(playerid, COLOR_RED,"Type /commands2 for next page");
	return 1;
	}
	if(strcmp(cmd, "/commands2", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Available commands: (Page 2)");
		SendClientMessage(playerid, COLOR_YELLOW,"/buy, /properties");
		SendClientMessage(playerid, COLOR_YELLOW,"/buyweapon, /weaponlist");
		SendClientMessage(playerid, COLOR_YELLOW,"/gangs");
		SendClientMessage(playerid, COLOR_YELLOW,"/call taxi");
    	SendClientMessage(playerid, COLOR_YELLOW,"/call cops");
		SendClientMessage(playerid, COLOR_YELLOW,"/dive - (1000$)");
		SendClientMessage(playerid, COLOR_RED,"Type /commands3 for next page");
		return 1;
	}

	 if(strcmp(cmd, "/commands3", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Available commands: (Page 3)");
		SendClientMessage(playerid, COLOR_YELLOW,"/about, /jobhelp, /job");
		SendClientMessage(playerid, COLOR_YELLOW,"/eject, /lock, /unlock, /purchase, /callcar");
		SendClientMessage(playerid, COLOR_YELLOW,"/report [id]");
		return 1;
	}

		if (strcmp(cmd, "/report") == 0)

	{
		if (strlen(cmdtext) > 8)
		{
				new playername[MAX_PLAYERS];
		    GetPlayerName(playerid, playername, sizeof(playername));
		    format(string, sizeof(string), "Report from %s(%d): %s", playername, playerid, cmdtext[8]);
		    SendMessageToAdmins(string);
			format(string, sizeof(string), "Report sent to currently online admins.");
			SendMessage(playerid, string);
		}
		else {
	        format(string, sizeof(string), "Usage: /report <text to send>");
	        SendMessage(playerid, string);
		}
	    return 1;
	}


	if(strcmp(cmd, "/gangcommands", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN,"Gang commands:");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang create [name]");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang join");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang invite [playerID]");
		SendClientMessage(playerid, COLOR_YELLOW,"/gang quit");
		SendClientMessage(playerid, COLOR_YELLOW,"/ganginfo [number] (no number given shows your gang's info)");
		SendClientMessage(playerid, COLOR_YELLOW,"/gbank [money] /gwithdraw [money] /gbalance");
		SendClientMessage(playerid, COLOR_YELLOW,"! (prefix text for gang-chat)");
		return 1;
	}

    	if(strcmp(cmd, "/mph", true) == 0) {

		new temp1[256];
		new kcmd;
		new playername[MAX_PLAYER_NAME];
	    temp1 = strtok(cmdtext, idx);

	    if(!strlen(temp1)) {
			SendClientMessage(playerid, COLOR_WHITE, "Usage: /mph on/off");
			return 1;
	    }
	    moneys = strval(temp1);

   		if(strcmp(temp1, "on", true)==0)
		    kcmd = 1;
		else if(strcmp(temp1, "off", true)==0)
		    kcmd = 2;

		temp1 = strtok(cmdtext, idx);
	    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
		if(kcmd < 3 && !strlen(temp1)) {
		    if(kcmd==0) {
			SendClientMessage(playerid, COLOR_WHITE, "Usage: /mph on/off");
			}
			else if(kcmd==1) {

			        if (dUserINT(PlayerName(playerid)).("speedshow") == 1) {
       				SendClientMessage(playerid, COLOR_WHITE, "Notice: Allready activated.");
       				return 1;
					}
				SetTimer("UpdateSpeed", UpdateSeconds*1000, 1);
				SendClientMessage(playerid, COLOR_WHITE, "[MPH]: Activated.");
			    GetPlayerName(playerid, playername, sizeof(playername));
			    format(string, sizeof(string), "%s(%d): Speedshow on", playername, playerid);
			    SendMessageToAdmins(string);
			    dUserSetINT(PlayerName(playerid)).("speedshow",1);
				return 1;
			}
			else if(kcmd==2) {
  			        if (dUserINT(PlayerName(playerid)).("speedshow") == 0) {
       				SendClientMessage(playerid, COLOR_WHITE, "[MPH]: Allready deactivated.");
       				return 1;
					}
   			    GetPlayerName(playerid, playername, sizeof(playername));
			    format(string, sizeof(string), "%s(%d): Speedshow off", playername, playerid);
			    SendMessageToAdmins(string);
				SendClientMessage(playerid, COLOR_WHITE, "[MPH]: Deactivated.");
			    dUserSetINT(PlayerName(playerid)).("speedshow",0);
			    KillTimer(UpdateSpeed(playerid));
				return 1;
			}
		}



		return 1;
	}



	if(strcmp(cmd, "/dive", true) == 0) {
	if (GetPlayerMoney(playerid) > 999){
	GivePlayerMoney(playerid,-1000);
	new Float:x;
	new Float:y;
	new Float:z;
	GivePlayerWeapon(playerid,46,1);
	GetPlayerPos(playerid,x,y,z);
	SetPlayerPos(playerid,x,y,z+500);
	GameTextForPlayer(playerid,"~r~SkyDiving-Tour ~b~- ~g~have fun!",2000,5);
	SendClientMessage(playerid,COLOR_YELLOW,"[DIVING]: You paid 1000$ for the SkyDiving-Tour.");
	}
	else{
	SendClientMessage(playerid,COLOR_RED,"[DIVING]: Not enough cash.");
	}
	return 1;
	}

	if (IsPlayerAdmin(playerid)) {

	if(strcmp(cmd, "/staff", true) == 0) {
	SendClientMessage(playerid,COLOR_RED,"[STAFF]: You are staff now, means, you are invincible, special skin & all weapons.");
	SetPlayerSkin(playerid, 217);
	ResetPlayerWeapons(playerid);
	GivePlayerWeapon(playerid, 25, 10000);
	GivePlayerWeapon(playerid, 27, 10000);
	GivePlayerWeapon(playerid, 28, 10000);
	GivePlayerWeapon(playerid, 32, 10000);
	GivePlayerWeapon(playerid, 29, 10000);
	GivePlayerWeapon(playerid, 30, 10000);
	GivePlayerWeapon(playerid, 31, 10000);
	SetPlayerHealth(playerid, 100000);
	return 1;
	}

	else if(strcmp(cmd, "/unstaff", true) == 0) {
	SendClientMessage(playerid,COLOR_RED,"[STAFF]: Unstaffed.");
	//SetPlayerSkin(playerid, 215);
	ResetPlayerWeapons(playerid);
	SetPlayerHealth(playerid, 100);
	return 1;
	}


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

 			new warptoid[256];
		    new warpid;
   			warptoid = strtok(cmdtext,idx);
   			warpid = strval(warptoid);

		if(!strlen(warptoid)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /warp [ID]");
			return 1;
		}


			new Float:x,Float:y,Float:z,Float:a;
			GetPlayerPos(warpid, x, y, z);
			GetPlayerFacingAngle(warpid, a);

			if(IsPlayerInAnyVehicle(playerid))
			{
	        new car;
		    car = GetPlayerVehicleID(playerid);
			SetVehiclePos(car,x+3,y,z+2);
			SetVehicleZAngle(car,a);
			SetPlayerFacingAngle(car,a);
			SetPlayerInterior(playerid, 0);
			SetCameraBehindPlayer(playerid);
			}
			else
			{
			SetPlayerPos(playerid,x+3,y,z+1);
			SetPlayerFacingAngle(playerid,a);
			SetPlayerInterior(playerid, 0);
			SetCameraBehindPlayer(playerid);
			}

			SendClientMessage(playerid, COLOUR_PERSONAL, "[WARP]: Done.");
			return 1;
	}



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

 			new warptoid[256];
		    new warpid;
   			warptoid = strtok(cmdtext,idx);
   			warpid = strval(warptoid);

		if(!strlen(warptoid)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /warptome [ID]");
			return 1;
		}


			new Float:x,Float:y,Float:z,Float:a;
			GetPlayerPos(playerid, x, y, z);
			GetPlayerFacingAngle(playerid, a);

			if(IsPlayerInAnyVehicle(warpid))
			{
	        new car;
		    car = GetPlayerVehicleID(warpid);
			SetVehiclePos(car,x+3,y,z+2);
			SetVehicleZAngle(car,a);
			SetPlayerFacingAngle(car,a);
			SetPlayerInterior(warpid, 0);
			SetCameraBehindPlayer(warpid);
			}
			else
			{
			SetPlayerPos(warpid,x+3,y,z+1);
			SetPlayerFacingAngle(warpid,a);
			SetPlayerInterior(warpid, 0);
			SetCameraBehindPlayer(warpid);
			}

			SendClientMessage(playerid, COLOUR_PERSONAL, "[WARP]: Done.");
			return 1;
	}



	else if(strcmp(cmd, "/freeze", true) == 0 && IsPlayerAdmin(playerid) == 1) {
 	//new giveplayerid;
		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /freeze [ID]");
			return 1;
		}
	giveplayerid = strval(rest);

		if (IsPlayerConnected(giveplayerid)) {
			TogglePlayerControllable(giveplayerid, 0);
			GetPlayerPos(giveplayerid, frozex,frozey,frozez);
			FreezeTimer = SetTimer("SetFreeze",500,1);
			Frozen[giveplayerid] = 1;
			format(string, sizeof(string), "[ADMIN]: You have been frozen by an admin!");
			GameTextForPlayer(playerid,"~r~ You have been frozen by an admin!",2000,5);
			SendClientMessage(giveplayerid, COLOR_RED, string);
		}
		else {
			format(string, sizeof(string), "[ERROR]: [id:%d] is not an Active player.", giveplayerid);
			SendClientMessage(playerid, COLOR_RED, string);
		}
		return 1;
 }
	else if(strcmp(cmd, "/unfreeze", true) == 0 && IsPlayerAdmin(playerid) == 1) {

		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /unreeze [ID]");
			return 1;
		}
	giveplayerid = strval(rest);

		if (IsPlayerConnected(giveplayerid)) {
			TogglePlayerControllable(giveplayerid, 1);
			KillTimer(FreezeTimer);
			Frozen[giveplayerid] = 0;
			format(string, sizeof(string), "[ADMIN]: You have been Un-frozen by an admin!",	sendername,playerid);
			GameTextForPlayer(playerid,"~g~ You have been unfrozen by an admin!",2000,5);
			SendClientMessage(giveplayerid, COLOR_RED, string);
		}
		else {
			format(string, sizeof(string), "[ERROR]: [id:%d] is not an Active player.", giveplayerid);
			SendClientMessage(playerid, COLOR_RED, string);
		}
		return 1;
	}

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

		if (strlen(rest)==0) {
			SendClientMessage(playerid, COLOUR_PERSONAL, "You didn't enter a message.");
			return 1;
		}
			GameTextForAll(rest,4000,GAME_TEXT_STYLE_SMALL);
			return 1;
		}



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

		new la[256];
		la = strtok(cmdtext, idx);

		if(!strlen(la)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /setcash [playerid] [playerid] [amount]");
			return 1;
		}
		giveplayerid = strval(la);

		la = strtok(cmdtext, idx);
		if(!strlen(la)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /setcash [playerid] [playerid] [amount]");
			return 1;
		}
			moneys = strval(la);

		//printf("givecash_command: %d %d",giveplayerid,moneys);


		if (IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			//playermoney = GetPlayerMoney(playerid);

				GivePlayerMoney(giveplayerid, moneys);
				format(string, sizeof(string), "[SETCASH]: You have send %s (id: %d), $%d.", giveplayer,giveplayerid, moneys);
				SendClientMessage(playerid, COLOR_YELLOW, string);
				format(string, sizeof(string), "[SETCASH]: You have recieved $%d from %s (id: %d).", moneys, sendername, playerid);
				SendClientMessage(giveplayerid, COLOR_YELLOW, string);
				printf("%s(playerid:%d) has (ADMINSETCASH) transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
			}
		return 1;

	 }

	 }

	//------------------- /bnk

	if(strcmp(cmd, "/bank", true) == 0 || strcmp(cmd, "/gbank", true) == 0) {
	    new gang;
	    if(strcmp(cmd, "/gbank", true) == 0)
	        gang = 1;

	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK) {
	        SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: You must be at a bank area to use this. ATMs are located in convenience stores.");
			return 1;
		}

		if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "[GANG]: You are not in a gang!");
			return 1;
		}

		new tmp[256];
	    tmp = strtok(cmdtext, idx);
	    if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /(g)bank [amount]");
			return 1;
	    }
	    moneys = strval(tmp);

	    if(moneys < 1) {
			SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: Invalid.");
			return 1;
		}

		if(GetPlayerMoney(playerid) < moneys) {
			moneys = GetPlayerMoney(playerid);
		}

		GivePlayerMoney(playerid, 0-moneys);

		if(gang)
		    gangBank[playerGang[playerid]]+=moneys;
		else
			bank[playerid]+=moneys;

		if(gang)
			format(string, sizeof(string), "[BANk]: You have deposited $%d, your gang's balance is $%d.", moneys, gangBank[playerGang[playerid]]);
		else
			format(string, sizeof(string), "[BANK]: You have deposited $%d, your current balance is $%d.", moneys, bank[playerid]);

		SendClientMessage(playerid, COLOR_YELLOW, string);

		return 1;
	}


	//------------------- /call

	if(strcmp(cmd, "/call", true) == 0) {

		new temp[256];
		new callcmd;
		new playername[MAX_PLAYER_NAME];
	    temp = strtok(cmdtext, idx);

	    if(!strlen(temp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /call taxi or cops");
			return 1;
	    }
	    moneys = strval(temp);

   		if(strcmp(temp, "cops", true)==0)
		    callcmd = 1;
		else if(strcmp(temp, "taxi", true)==0)
		    callcmd = 2;

		temp = strtok(cmdtext, idx);
	    GetPlayerName(playerid, playername, MAX_PLAYER_NAME);
		if(callcmd < 3 && !strlen(temp)) {
		    if(callcmd==0) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /call taxi or cops");
			}
			else if(callcmd==1) {
				SendClientMessage(playerid, COLOR_WHITE, "[CALL]: You've called the police.");
				format(string, sizeof(string),"[POLICE-CALL]: %s called the police.", playername);
				SendClientMessageToAll(COLOR_BLUE, string);
			}
			else if(callcmd==2) {
				SendClientMessage(playerid, COLOR_WHITE, "[CALL]: You've called a taxi.");
				format(string, sizeof(string),"[TAXI-CALL]: %s called a taxi.", playername);
  				SendClientMessageToAll(COLOR_YELLOW, string);
			}
		}



		return 1;
	}


	//------------------- /withdraw

	if(strcmp(cmd, "/withdraw", true) == 0 || strcmp(cmd, "/gwithdraw", true) == 0) {
	    new gang;

	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK) {
	        SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: You must be at a bank area to use this. ATMs are located in convenience stores.");
			return 1;
		}

		if(strcmp(cmd, "/gwithdraw", true) == 0)
		    gang = 1;

		if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "[GANG]: You are not in a gang!");
			return 1;
		}

	    new tmp[256];
	    tmp = strtok(cmdtext, idx);

	    if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /(g)withdraw [amount]");
			return 1;
	    }
	    moneys = strval(tmp);

	    if(moneys < 1) {
			SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: Invalid.");
			return 1;
		}

	    if(gang) {
			if(moneys > gangBank[playerGang[playerid]])
			    moneys = gangBank[playerGang[playerid]];
	    } else {
		    if(moneys > bank[playerid])
		        moneys = bank[playerid];
     	}

		GivePlayerMoney(playerid, moneys);
		if(gang)
			gangBank[playerGang[playerid]] -= moneys;
		else
			bank[playerid] -= moneys;

		if(gang)
			format(string, sizeof(string), "[BANK]: You have withdrawn $%d, your gang's balance is $%d.", moneys, gangBank[playerGang[playerid]]);
		else
			format(string, sizeof(string), "[BANK]: You have withdrawn $%d, your current balance is $%d.", moneys, bank[playerid]);
		SendClientMessage(playerid, COLOR_YELLOW, string);

		return 1;
   	}

	//------------------- /balance

	if(strcmp(cmd, "/balance", true) == 0 || strcmp(cmd, "/gbalance", true) == 0) {
		new gang;
		if(strcmp(cmd, "/gbalance", true) == 0)
			gang = 1;

	    if(IsPlayerInCheckpoint(playerid) == 0 || getCheckpointType(playerid) != CP_BANK) {
	        SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: You must be at a bank area to use this. ATMs are located in convenience stores.");
			return 1;
		}

		if(gang && playerGang[playerid]==0) {
			SendClientMessage(playerid, COLOR_RED, "[GANG]: You are not in a gang!");
			return 1;
		}

		if(gang)
			format(string, sizeof(string), "[BANK]: Your gang has $%d in the bank.", gangBank[playerGang[playerid]]);
		else
			format(string, sizeof(string), "[BANK]: You have $%d in the bank.", bank[playerid]);
		SendClientMessage(playerid, COLOR_YELLOW, string);

		return 1;
	}



	//------------------- /givecash

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

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /givecash [playerid] [amount]");
			return 1;
		}
		giveplayerid = strval(tmp);

		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /givecash [playerid] [amount]");
			return 1;
		}
 		moneys = strval(tmp);

		//printf("givecash_command: %d %d",giveplayerid,moneys);


		if (IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			playermoney = GetPlayerMoney(playerid);
			if (moneys > 0 && playermoney >= moneys) {
				GivePlayerMoney(playerid, (0 - moneys));
				GivePlayerMoney(giveplayerid, moneys);
				format(string, sizeof(string), "[CASH]: You have sent %s (id: %d), $%d.", giveplayer,giveplayerid, moneys);
				SendClientMessage(playerid, COLOR_YELLOW, string);
				format(string, sizeof(string), "[CASH]: You have recieved $%d from %s (id: %d).", moneys, sendername, playerid);
				SendClientMessage(giveplayerid, COLOR_YELLOW, string);
				printf("%s(playerid:%d) has transfered %d to %s(playerid:%d)",sendername, playerid, moneys, giveplayer, giveplayerid);
			}
			else {
				SendClientMessage(playerid, COLOR_YELLOW, "[CASH]: Invalid transaction amount.");
			}
		}
		else {
				format(string, sizeof(string), "[CASH]: %d is not an active player.", giveplayerid);
				SendClientMessage(playerid, COLOR_YELLOW, string);
			}
		return 1;
	}

		//------------------- /job function

	if(strcmp(cmd, "/job", true) == 0) {
   		new jobcmd;
		new playername[MAX_PLAYER_NAME];
		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /job id. To get a list of all jobs type /jobhelp");
			return 1;
		}

		if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /job id. To get a list of all jobs type /jobhelp");
			return 1;
  		}

		if (!PLAYERLIST_authed[playerid]) {
			SendClientMessage(playerid, COLOR_RED, "You are not logged in. Please /login first or /register.");
			return 1;
		}

       		if(strcmp(rest, "1", true)==0) //cop
		    jobcmd = 1;
			else if(strcmp(rest, "2", true)==0) //taxi
		    jobcmd = 2;
 			else if(strcmp(rest, "3", true)==0) //taxi
		    jobcmd = 4;
    		else if(strcmp(rest, "leave", true)==0) //taxi
		    jobcmd = 3;

			GetPlayerName(playerid, playername, MAX_PLAYER_NAME);

		if(strlen(rest)) {
		    if(jobcmd==0) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /job id. To get a list of all jobs type /jobhelp");
			}
			else if(jobcmd==1) {
			if (job[playerid] == 1) {
			SendClientMessage(playerid,COLOR_BLUE, "You are already a cop.");
			} else {
			job[playerid] = 1;
			GameTextForPlayer(playerid,"~b~You are now a cob.~n~Type /jobhelp 1 for more information.",10000,5);
			SendClientMessage(playerid,COLOR_BLUE, "You are now a cob. Type /jobhelp 1 for more information.");
			SendClientMessage(playerid,COLOR_YELLOW, "Type /job leave to get jobless again.");
			new rand = random(sizeof(gCopPlayerSpawns));
			SetPlayerPos(playerid, gCopPlayerSpawns[rand][0], gCopPlayerSpawns[rand][1], gCopPlayerSpawns[rand][2]); // Warp the player
 		    format(string, sizeof(string), "[JOB]: %s is now a cop.", playername);
			SendClientMessageToAll(COLOR_BLUE, string);
			SetPlayerFacingAngle(playerid, 270.0);
			//SetPlayerSkin(playerid, 281);
			ResetPlayerWeapons(playerid);
			GivePlayerWeapon(playerid, 22, 200);
			GivePlayerWeapon(playerid, 25, 50);
			GivePlayerWeapon(playerid, 29, 250);
			SetPlayerColor(playerid, COLOR_BLUE);
			}
			}
			else if(jobcmd==2) {
			if (job[playerid] == 2) {
			SendClientMessage(playerid,COLOR_BLUE, "You are already a taxidriver.");
			} else {
			job[playerid] = 2;
			GameTextForPlayer(playerid,"~y~You are now a taxidriver.~n~Type /jobhelp 2 for more information.",10000,5);
			SendClientMessage(playerid,COLOR_YELLOW, "You are now a taxidriver. Type /jobhelp 2 for more information.");
			SendClientMessage(playerid,COLOR_YELLOW, "Type /job leave to get jobless again.");
 		    format(string, sizeof(string), "[JOB]: %s is now a taxidriver.", playername);
			SendClientMessageToAll(COLOR_YELLOW, string);
			SetPlayerPos(playerid, 1933.1060,1344.4202,9.9688); // Warp the player
			//SetPlayerSkin(playerid, 220);
			ResetPlayerWeapons(playerid);
			GivePlayerWeapon(playerid, 4, -1);
			SetPlayerColor(playerid, COLOR_YELLOW);
			}
			}
			else if(jobcmd==3) {

			if (job[playerid] == 0) {
			SendClientMessage(playerid,COLOR_BLUE, "You are already jobless.");
			} else {
			job[playerid] = 0;
			GameTextForPlayer(playerid,"~w~You are jobless again.",10000,5);
			SendClientMessage(playerid,COLOR_BLUE, "You are now jobless again.");
			new rand = random(sizeof(gRandomPlayerSpawns));
			SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
   		    format(string, sizeof(string), "[JOB]: %s is now a jobless.", playername);
			SendClientMessageToAll(COLOR_WHITE, string);
			//new rand_skin = random(260);
			//new rand_skin = random(sizeof(SkinID));
			//SetPlayerSkin(playerid, SkinID[rand_skin]);
			ResetPlayerWeapons(playerid);
			SetPlayerColor(playerid, COLOR_WHITE);
			}
			}
			else if(jobcmd==4) {

			if (job[playerid] == 4) {
			SendClientMessage(playerid,COLOR_BLUE, "You are already a pilot.");
			} else {
			job[playerid] = 4;
			GameTextForPlayer(playerid,"~g~You are now a pilot.~n~Type /jobhelp 3 for more information.",10000,5);
			SendClientMessage(playerid,COLOR_GREEN, "You are now a pilot. Type /jobhelp 3 for more information.");
			//1596.3649,1559.2081,10.8203,265.4183 FLUGHAFEN
     		SetPlayerPos(playerid, 1596.3649,1559.2081,10.8203); // Warp the player
   		    format(string, sizeof(string), "[JOB]: %s is now a pilot.", playername);
			SendClientMessageToAll(COLOR_GREEN, string);
			//new rand_skin = random(260);
			//new rand_skin = random(sizeof(SkinID));
			//SetPlayerSkin(playerid, SkinID[rand_skin]);
			ResetPlayerWeapons(playerid);
			GivePlayerWeapon(playerid, 41, 50);
			GivePlayerWeapon(playerid, 42, 50);
			GivePlayerWeapon(playerid, 46, -1);
			SetPlayerColor(playerid, COLOR_GREEN);
			}
			}




	}
		return 1;
	}


    		//------------------- /job help function

	if(strcmp(cmd, "/jobhelp", true) == 0) {
   		new jobhelpcmd;

   			if(!strlen(rest)) {
			SendClientMessage(playerid, COLOR_WHITE, "To get easy money, you can apply to some jobs.");
			SendClientMessage(playerid, COLOR_WHITE, "You will earn regular some $$ for doing your job.");
			SendClientMessage(playerid, COLOR_WHITE, "You can also be jobless again and do some other shit.");
			SendClientMessage(playerid, COLOR_WHITE, "Availible jobs:");
			SendClientMessage(playerid, COLOR_WHITE, "ID: 1, Name: Cop");
			SendClientMessage(playerid, COLOR_WHITE, "ID: 2, Name: TaxiDriver");
			SendClientMessage(playerid, COLOR_WHITE, "ID: 3, Name: Pilot");
			SendClientMessage(playerid, COLOR_WHITE, "Type /jobhelp ID for more information");
			return 1;
		}

       		if(strcmp(rest, "1", true)==0) //cop
		    jobhelpcmd = 1;
			else if(strcmp(rest, "2", true)==0) //taxi
		    jobhelpcmd = 2;

		if(strlen(rest)) {
			if(jobhelpcmd==1) {
			SendClientMessage(playerid, COLOR_WHITE, "Cop Help");
			SendClientMessage(playerid, COLOR_WHITE, "As a cop, you have to kill speed-abusers and killers.");
			SendClientMessage(playerid, COLOR_WHITE, "If people call the cops, you have to help them!");
			SendClientMessage(playerid, COLOR_WHITE, "Type /job 1 to become a cop.");
			}
			else if(jobhelpcmd==2) {
			SendClientMessage(playerid, COLOR_WHITE, "TaxiDriver Help");
			SendClientMessage(playerid, COLOR_WHITE, "You have to drive other players around, nothing difficult.");
			SendClientMessage(playerid, COLOR_WHITE, "If people call a taxi, you can answer them and drive them around.");
			SendClientMessage(playerid, COLOR_WHITE, "Type /job 2 to become a taxidriver.");
			}

			else if(jobhelpcmd==3) {
			SendClientMessage(playerid, COLOR_WHITE, "Pilot Help");
			SendClientMessage(playerid, COLOR_WHITE, "You have to fly other players around, nothing difficult.");
			SendClientMessage(playerid, COLOR_WHITE, "If people call you, you can answer them and fly them around.");
			SendClientMessage(playerid, COLOR_WHITE, "Type /job 3 to become a pilot.");
			}

	}
		return 1;
	}


	//------------------- /hitman

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

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /hitman [playerid] [amount]");
			return 1;
		}
		giveplayerid = strval(tmp);

		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /hitman [playerid] [amount]");
			return 1;
		}
 		moneys = strval(tmp);

	    if(moneys > GetPlayerMoney(playerid)) {
			SendClientMessage(playerid, COLOR_RED, "[HITMAN]: You don't have enough money!");
			return 1;
	    }
	    if(moneys < 1) {
			SendClientMessage(playerid, COLOR_YELLOW, "[HITMAN]: Invalid.");
			return 1;
		}
		if(IsPlayerConnected(giveplayerid)==0) {
			SendClientMessage(playerid, COLOR_RED, "[HITMAN]: No such player exists.");
			return 1;
		}

		bounty[giveplayerid]+=moneys;
		GivePlayerMoney(playerid, 0-moneys);

		GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
		GetPlayerName(playerid, sendername, sizeof(sendername));

//		format(string, sizeof(string), "You have put a $%d bounty on the head of %s (id: %d).", moneys, giveplayer,giveplayerid);
//		SendClientMessage(playerid, COLOR_YELLOW, string);

		format(string, sizeof(string), "[BOUNTY]: %s has had a $%d bounty put on his head from %s (total: $%d).", giveplayer, moneys, sendername, bounty[giveplayerid]);
		SendClientMessageToAll(COLOR_ORANGE, string);

		format(string, sizeof(string), "[BOUNTY]: You have had a $%d bounty put on you from %s (id: %d).", moneys, sendername, playerid);
		SendClientMessage(giveplayerid, COLOR_RED, string);

		return 1;
	}

	//------------------- /bounty

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

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /bounty [playerid]");
			return 1;
		}
		giveplayerid = strval(tmp);

		if(IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			format(string, sizeof(string), "[BOUNTY]: Player %s (id: %d) has a  $%d bounty on his head.", giveplayer,giveplayerid,bounty[giveplayerid]);
			SendClientMessage(playerid, COLOR_YELLOW, string);
		} else {
			SendClientMessage(playerid, COLOR_RED, "[BOUNTY]: No such player exists!");
		}

		return 1;
	}

	//------------------- /bounties

	if(strcmp(cmd, "/bounties", true) == 0)
	{
//		new tmp[256];
		new x;

		SendClientMessage(playerid, COLOR_GREEN, "Current Bounties:");
	    for(new i=0; i < MAX_PLAYERS; i++) {
			if(IsPlayerConnected(i) && bounty[i] > 0) {
				GetPlayerName(i, giveplayer, sizeof(giveplayer));
				format(string, sizeof(string), "%s%s(%d): $%d", string,giveplayer,i,bounty[i]);

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

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

		return 1;
	}

	//------------------- /buy

	if(strcmp(cmd, "/buy", true) == 0) {
		new property=999;

		if(IsPlayerInCheckpoint(playerid)) {
			switch (playerCheckpoint[playerid]) {
				case CP_DRAGON:{
					property = P_DRAGON;
				}
				case CP_SEXSHOP:{
					property = P_SEXSHOP;
				}
				case CP_BAR:{
					property = P_BAR;
				}
				case CP_CALIGULA:{
					property = P_CALIGULA;
				}
				case CP_ZIP:{
					property = P_ZIP;
				}
				case CP_BINCO:{
					property = P_BINCO;
				}
				case CP_TATOO:{
					property = P_TATOO;
				}
				case CP_BOTIQUE:{
					property = P_BOTIQUE;
				}
			}

			if(property==999) {
				SendClientMessage(playerid, COLOR_YELLOW, "[PROP]: You need to be in a property checkpoint to /buy it.");
				return 1;
			}

//			property--;

			if(GetPlayerMoney(playerid) < propertyValues[property]) {
				SendClientMessage(playerid, COLOR_RED, "[PROP]: You don't have enough money to buy this property.");
				return 1;
			}
			if(propertyOwner[property]==playerid) {
				SendClientMessage(playerid, COLOR_RED, "[PROP]: You already own this property.");
				return 1;
			}

			if(propertyOwner[property] < 999) {
				GetPlayerName(playerid, giveplayer, sizeof(giveplayer));
				GivePlayerMoney(propertyOwner[property], propertyValues[property]);
				format (string, sizeof(string), "[PROP]: Your property, the %s, has been bought out by %s (id: %d).",propertyNames[property],giveplayer,playerid);
				SendClientMessage(propertyOwner[property], COLOR_RED, string);
			}

			GivePlayerMoney(playerid, 0-propertyValues[property]);

			propertyOwner[property]=playerid;

			format(string, sizeof(string), "[PROP]: You have purchased the %s!", propertyNames[property]);
			SendClientMessage(playerid, COLOR_GREEN, string);

		} else {
			SendClientMessage(playerid, COLOR_YELLOW, "[PROP]: You need to be in a property checkpoint to /buy it.");
			return 1;
		}


		return 1;
	}

	//------------------- /properties

	if(strcmp(cmd, "/properties", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN, "Property Owners:");
		for(new i = 0; i < MAX_PROPERTIES; i++) {
			if(propertyOwner[i] < 999) {
				GetPlayerName(propertyOwner[i], giveplayer, sizeof(giveplayer));
				format(string, sizeof(string), "%d. %s - %s", i, propertyNames[i], giveplayer);
			} else
				format(string, sizeof(string), "%d. %s - None", i, propertyNames[i]);

			SendClientMessage(playerid, COLOR_YELLOW, string);
		}

		return 1;
	}

	//------------------- /buyweapon

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

		if(!strlen(tmp)) {
			SendClientMessage(playerid, COLOR_WHITE, "[USAGE]: /buyweapon [weapon number]");
			return 1;
		}

		weaponid = strval(tmp);

		if(IsPlayerInCheckpoint(playerid)==0 || playerCheckpoint[playerid]!=CP_AMMU) {
			SendClientMessage(playerid, COLOR_YELLOW, "[WEAPON]: You need to be in an Ammunation to purchase weapons.");
			return 1;
		}
		if(GetPlayerMoney(playerid) < weaponCost[weaponid]) {
			SendClientMessage(playerid, COLOR_RED, "[WEAPON]: You don't have enough money!");
			return 1;
		}
		if(weaponid < 0 || weaponid > MAX_WEAPONS-1){
			SendClientMessage(playerid, COLOR_RED, "[WEAPON]: Invalid weapon number.");
			return 1;
		}

		format (string, sizeof(string), "[WEAPON]: You purchased 1 %s for when you spawn.",weaponNames[weaponid]);
		SendClientMessage(playerid, COLOR_GREEN, string);

		GivePlayerWeapon(playerid, weaponIDs[weaponid], weaponAmmo[weaponid]);
		playerWeapons[playerid][weaponid]++;

		GivePlayerMoney(playerid, 0-weaponCost[weaponid]);

		return 1;
	}

	//------------------- /weaponlist

	if(strcmp(cmd, "/weaponlist", true) == 0) {
		SendClientMessage(playerid, COLOR_GREEN, "Weapons List:");
		for(new i = 0; i < MAX_WEAPONS; i++) {
			format (string, sizeof(string), "%d. %s - $%d",i,weaponNames[i],weaponCost[i]);
			SendClientMessage(playerid, COLOR_YELLOW, string);
		}
		return 1;
	}

	//------------------- /gang

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

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

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

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

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

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

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

					playerGang[playerid]=i;

					return 1;
				}
			}

			return 1;

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

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

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

				gangInvite[playerid]=0;

				gangMembers[gangnum][i] = playerid;

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

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

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

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

				return 1;
			}

			SendClientMessage(playerid, COLOR_RED, "[GANG]: That gang is full.");
			return 1;

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

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

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

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

				gangInvite[giveplayerid]=playerGang[playerid];

			} else
				SendClientMessage(playerid, COLOR_RED, "[GANG]: No such player exists!");

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

		return 1;
	}

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

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

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

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

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

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

		return 1;
	}

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

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

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

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

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

		return 1;
	}

	//-----------teleports

	if(strcmp(cmd, "/lv", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),1713.4164,1446.8452,10.7722);
	 else SetPlayerPos(playerid,1682.4164,1446.8452,10.7722);
	return 1;
	}

	if(strcmp(cmd, "/wang", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),-2003.3442,288.9917,34.6972);
	 else SetPlayerPos(playerid,-1929.3132,249.4710,40.7176);
	return 1;
	}

	if(strcmp(cmd, "/Grove", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),2491.2063,-1665.5610,13.3438);
	 else SetPlayerPos(playerid,2466.0586,-1669.8325,13.4758);
	return 1;
	}
/*
		if(strcmp(cmd, "/bobafett20", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),-2625.08,1401.04,7.10);
	 else SetPlayerPos(playerid,-2625.08,1401.04,7.10);
	 SendClientMessage(playerid,COLOR_RED,"[RS]: You Are Now Logged in.");
 	ResetPlayerWeapons(playerid);
    SetPlayerColor(playerid, COLOR_ORANGE);
	GivePlayerWeapon(playerid, 25, 500);
	return 1;
	}

		if(strcmp(cmd, "/armyiuserazor", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),218.57,1868.16,13.14);
	 else SetPlayerPos(playerid,218.57,1868.16,13.14);
	 SendClientMessage(playerid,COLOR_GREEN,"Army: You Are Now Logged in.");
	 	SetPlayerColor(playerid, COLOR_GREEN);
 	ResetPlayerWeapons(playerid);
	GivePlayerWeapon(playerid, 25, 500);
	return 1;
	}

			if(strcmp(cmd, "/swat07uk", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),950.40,1711.16,8.73);
	 else SetPlayerPos(playerid,950.40,1711.16,8.73);
	 SendClientMessage(playerid,COLOR_BLUE,"SWAT: You Are Now Logged in.");
	 	SetPlayerColor(playerid, COLOR_BLUE);
 	ResetPlayerWeapons(playerid);
	GivePlayerWeapon(playerid, 25, 500);
	return 1;
	}



			if(strcmp(cmd, "/redadminftw", true) == 0)
	{
  SendClientMessage(playerid,COLOR_RED,"Admin: You Are Now Red.");
	 	SetPlayerColor(playerid, COLOR_RED);
 	ResetPlayerWeapons(playerid);
	GivePlayerWeapon(playerid, 25, 500);
	return 1;
	}
*/
	if(strcmp(cmd, "/Drift", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),2289.8887,1393.3649,42.5641);
  	 else SetPlayerPos(playerid,2327.1433,1386.7778,42.8203);
	 SendClientMessageToAll(COLOR_YELLOW,"A player has entered a drift race");
 	 SendClientMessageToAll(COLOR_YELLOW,"Type /Drift to join");
 	 SendClientMessage(playerid,COLOR_YELLOW,"Type /Countdown to Begin");
	 SendClientMessage(playerid,COLOR_YELLOW,"Welcome to Drift");
	return 1;
	}
	if(strcmp(cmd, "/Park", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),1880.7683,-1384.0571,13.4099);
	 else SetPlayerPos(playerid,1958.3021,-1457.9878,13.2228);
	return 1;
	}
		if(strcmp(cmd, "/Loco", true) == 0)
	{
	 if (IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid),2657.1306,-2003.4412,12.9530);
	 else SetPlayerPos(playerid,2659.3164,-2010.1752,13.1287);
	return 1;
	}
			if(strcmp(cmd, "/Dm", true) == 0)
	{
	 SetPlayerPos(playerid,2585.8291,2825.6921,19.9922);
//	 SendClientMessageToAll(COLOR_RED,"A player has entered the deathmatch arena!");
//	 SendClientMessageToAll(COLOR_YELLOW,"Type /DM to join them!");
	return 1;
	}
		if(strcmp(cmd, "/me", true) == 0)
{
	    new dir[256];
	    new tmp[256];
		dir = strtok(cmdtext, idx);

	    strmid(tmp, cmdtext, 4, strlen(cmdtext));
		if(!strlen(dir)) {
			SendClientMessage(playerid,COLOR_YELLOW,"USAGE: /me [message]");
			return 1;
		}

		dir = strtok(cmdtext, idx);
			GetPlayerName(playerid, sendername, sizeof(sendername));
			format(string, sizeof(string), "***%s %s", sendername, tmp);
			SendClientMessageToAll(COLOR_GREEN,string);
			format(string, sizeof(string), "***%s %s", sendername, tmp);
			print(string);
		return 1;
        }
        if(strcmp(cmd, "/jail", true) == 0) {
	if(IsPlayerAdmin(playerid) == 1) {
	    new dir[256];
		dir = strtok(cmdtext, idx);

		if(!strlen(dir)) {
			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /jail [playerid]");
			return 1;
		}
		giveplayerid = strval(dir);
		dir = strtok(cmdtext, idx);
		if (IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			SetPlayerInterior(giveplayerid,3);
			SetPlayerPos(giveplayerid,197.7029,174.8801,1003.0234);
			SendClientMessage(playerid, COLOR_RED, "Jailed!");
			SendClientMessage(giveplayerid, COLOR_RED, "You have been jailed by the police. You will be");
			SendClientMessage(giveplayerid, COLOR_RED, "released by the admins when they deem it fit.");
		}
		else {
				format(string, sizeof(string), "%d is not an active player.", giveplayerid);
				SendClientMessage(playerid, COLOR_YELLOW, string);
			}
		return 1;
} else {
  SendClientMessage(playerid, COLOR_RED, "Permission denied, you are not an admin!");
}
	}
	if(strcmp(cmd, "/unjail", true) == 0) {
	if(IsPlayerAdmin(playerid) == 1) {
	    new dir1[256];
		dir1 = strtok(cmdtext, idx);

		if(!strlen(dir1)) {
			SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unjail [playerid]");
			return 1;
		}
		giveplayerid = strval(dir1);
		dir1 = strtok(cmdtext, idx);
		if (IsPlayerConnected(giveplayerid)) {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			GivePlayerMoney(giveplayerid,(0 - 3000));
			GivePlayerMoney(playerid, 3000);
			SetPlayerInterior(giveplayerid,0);
			SetPlayerPos(giveplayerid,2297.1064,2452.0115,10.8203);
			SendClientMessage(playerid, COLOR_GREEN, "Released!");
			SendClientMessage(giveplayerid, COLOR_GREEN, "You have been released and fined $3000 by the police.");
		}
		else {
				format(string, sizeof(string), "%d is not an active player.", giveplayerid);
				SendClientMessage(playerid, COLOR_YELLOW, string);
			}
		return 1;

} else {
  SendClientMessage(playerid, COLOR_RED, "Permission denied, you are not an admin!");
}
	}
	if (strcmp(cmdtext, "/countdown", true)==0)
	{
	    if(Count >= 5)
            {
	           SendClientMessageToAll(COLOR_GREEN, "Countdown Started......");
                   CountDown();
                   return 1;
	    }
	    else
	    {
		   SendClientMessage(playerid, COLOR_RED, "Countdown in progress");
		   return 1;
	    }
	}
	return 0;
}


//------------------------------------------------------------------------------------------------------
public CountDown(){

     if (Count > 0){

        GameTextForAll( CountText[Count-1], 999, 5);
        Count--;
        SetTimer("CountDown", 1000, 0);
	}
   else{
     GameTextForAll("~g~Go! Go! Go!", 999, 5);
     Count = 5;
 }
}

public OnPlayerText(playerid, text[])
{
	if(text[0] == '!') {
		if(playerGang[playerid] > 0) {
		    new gangChat[256];
		    new senderName[MAX_PLAYER_NAME];
		    new string[256];

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

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

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

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

		return 0;
	}
	return 1;
}

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

public OnPlayerSpawn(playerid)
{
//	SetVehicleParamsForPlayer(CAR_MARKER_PIRATE,playerid,1,1);
//	SetVehicleParamsForPlayer(CAR_MARKER_STORE,playerid,1,1);
	//SendClientMessage(playerid, COLOR_GREEN, "You are jobless at the moment.");
	//SendClientMessage(playerid, COLOR_YELLOW, "Type /job to get a job and /jobhelp for more information.");
	//SendClientMessage(playerid, COLOR_RED, "Type /help for a general help.");

	/*if(GetPlayerMoney(playerid)>=0)
	{
		GivePlayerMoney(playerid, PocketMoney);
	}
	iSpawnSet[playerid] = 0;
	SetPlayerInterior(playerid,0);
	SetPlayerRandomSpawn(playerid);

	for(new i = 0; i < MAX_WEAPONS; i++) {
		if(playerWeapons[playerid][i] > 0) {
			GivePlayerWeapon(playerid,weaponIDs[i],weaponAmmo[i]*playerWeapons[playerid][i]);
		}
	}*/
	//new rand_skin = random(sizeof(SkinID));
	//SetPlayerSkin(playerid, SkinID[rand_skin]);
	GivePlayerMoney(playerid, PocketMoney);
	if (PLAYERLIST_authed[playerid]) {
	 new rand = random(sizeof(gRandomPlayerSpawns));
     dUserSetINT(PlayerName(playerid)).("x",floatround(gRandomPlayerSpawns[rand][0]));
     dUserSetINT(PlayerName(playerid)).("y",floatround(gRandomPlayerSpawns[rand][1]));
     dUserSetINT(PlayerName(playerid)).("z",floatround(gRandomPlayerSpawns[rand][2]));
     SetTimer("PutAtPos",2000,0);
   			GivePlayerWeapon(playerid, 5, -1);
     		GivePlayerWeapon(playerid, 22, 50);
    /* 	iSpawnSet[playerid] = 0;
	SetPlayerInterior(playerid,0);
	SetPlayerRandomSpawn(playerid);*/
	} else {


	SetPlayerPos(playerid,1682.4164,1446.8452,10.7722);
	gambleWarning[playerid]=0;
	speedwarned[playerid]=0;
	SetPlayerColor(playerid, COLOR_WHITE);
	job[playerid] = 0;
}






}

public SetPlayerRandomSpawn(playerid)
{
	if (iSpawnSet[playerid] == 1)
	{
		new rand = random(sizeof(gCopPlayerSpawns));
		SetPlayerPos(playerid, gCopPlayerSpawns[rand][0], gCopPlayerSpawns[rand][1], gCopPlayerSpawns[rand][2]); // Warp the player
		SetPlayerFacingAngle(playerid, 270.0);
    }
    else if (iSpawnSet[playerid] == 0)
    {
		new rand = random(sizeof(gRandomPlayerSpawns));
		SetPlayerPos(playerid, gRandomPlayerSpawns[rand][0], gRandomPlayerSpawns[rand][1], gRandomPlayerSpawns[rand][2]); // Warp the player
	}
	return 1;
}

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

public OnPlayerDeath(playerid, killerid, reason)
{
    new playercash;
   	new playercashkiller;
	new killedplayer[MAX_PLAYER_NAME];
	new string[256];

	playercash = GetPlayerMoney(playerid);
	GameTextForPlayer(playerid,"~r~You are dead. You money has been reset.",5000,3);
	speedwarned[playerid] = 0;
	SetPlayerColor(playerid, COLOR_WHITE);
	job[playerid] = 0;
	if(killerid == INVALID_PLAYER_ID)
	{
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
	}
	 else
	{
    	SendDeathMessage(killerid,playerid,reason);
		SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
		if(bounty[playerid] > 0 && (playerGang[killerid] == 0 || playerGang[playerid] != playerGang[killerid])) {
			GetPlayerName(playerid, killedplayer, sizeof(killedplayer));
			format(string, sizeof(string), "[BOUNTY]: You earned a bounty of %d for killing %s.", bounty[playerid], killedplayer);
			SendClientMessage(killerid, COLOR_GREEN, string);

			GivePlayerMoney(killerid, bounty[playerid]);
			bounty[playerid] = 0;
		}
		if(playercash > 0)  {
            playercashkiller = playercash / 2;
			GivePlayerMoney(killerid, playercashkiller);
			ResetPlayerMoney(playerid);
		}
   	}

   	if(playercash > 0)
   	{
	    ResetPlayerMoney(playerid);
    }
 	return 1;
}

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

public OnPlayerEnterCheckpoint(playerid)
{
	new string[256];
	new ownplayer[MAX_PLAYER_NAME];

	switch(getCheckpointType(playerid))
	{
		case CP_BANK: {
			SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: To store money use '/bank amount', to withdraw");
			SendClientMessage(playerid, COLOR_YELLOW, "[BANK]: money use '/withdraw amount', and '/balance' to see your balance.");
		}
		case CP_PIRATE: {
			SendClientMessage(playerid, COLOR_YELLOW, "[PIRATE]: You can hold the pirate ship area to gain money.");
		}
		case CP_AMMU: {
			SendClientMessage(playerid, COLOR_GREEN, "[WEAPONS]: You can purchase weapons here so that you have them every");
			SendClientMessage(playerid, COLOR_GREEN, "[WEAPONS]: time you spawn. You can purchase more than once for more ammo.");
			SendClientMessage(playerid, COLOR_YELLOW, "[WEAPONS]: Type /buyweapon [weapon number] and /weaponlist for a list of weapons.");
		}
/*		case CP_ADMIN: {
                	if (!player_op[playerid] || !IsPlayerAdmin(playerid)) {
						   GameTextForPlayer(playerid,"~r~This is the admin roof.~n~KEEP OUT.",1800,1);
	                       SetPlayerPos(playerid,-372.5452,2127.5845,133.1091);
					   }
		}*/
/*		case CP_SEXSHOP: {
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Sex Shop for $25,000 with /buy.");
			SendClientMessage(playerid, COLOR_YELLOW, "You will earn $2,000 regularly.");
		}
		case CP_BAR: {
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Shithole Bar for $20,000 with /buy.");
			SendClientMessage(playerid, COLOR_YELLOW, "You will earn $1,500 regularly.");
		}
		case CP_CALIGULA: {
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Caligula Casino for $100,000 with /buy.");
			SendClientMessage(playerid, COLOR_YELLOW, "You will earn $7,000 regularly.");
		}
		case CP_ZIP: {
			SendClientMessage(playerid, COLOR_YELLOW, "You can buy the Zip clothes store for $15,000 with /buy.");
			SendClientMessage(playerid, COLOR_YELLOW, "You will earn $1,000 regularly.");
		}*/
	}
	if(getCheckpointType(playerid)>= P_OFFSET) {
		format(string, sizeof(string), "[PROP]: You can buy the %s for $%d with /buy.", propertyNames[playerCheckpoint[playerid]-P_OFFSET], propertyValues[playerCheckpoint[playerid]-P_OFFSET]);
		SendClientMessage(playerid, COLOR_YELLOW, string);
		format(string, sizeof(string), "[PROP]: You will earn $%d regularly.", propertyEarnings[playerCheckpoint[playerid]-P_OFFSET]);
		SendClientMessage(playerid, COLOR_YELLOW, string);
		if(propertyOwner[playerCheckpoint[playerid]-P_OFFSET]<999) {
			GetPlayerName(propertyOwner[playerCheckpoint[playerid]-P_OFFSET], ownplayer, sizeof(ownplayer));
			format(string, sizeof(string), "[PROP]: This property is currently owned by %s.", ownplayer);
			SendClientMessage(playerid, COLOR_RED, string);
		}
	}
}



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

/*public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {


new string[256];
//for (new i=0 ; i<MAX_PLAYERS ; i++) {
	if (IsPlayerConnected(playerid)) {

			vehicleid = GetPlayerVehicleID(playerid);
			format(string, sizeof(string), "admin_vehicle: %d",vehicleid);
			SendClientMessage(playerid, COLOR_RED, string);
			if (vehicleid == 0 || vehicleid == 1 || vehicleid == 2  || vehicleid == 3) {
				if ( !IsPlayerAdmin(playerid) || player_op[playerid] != 1 ) {
					RemovePlayerFromVehicle(playerid);
					SetVehicleParamsForPlayer(vehicleid,playerid,0,1);
					SetPlayerHealth(playerid, 0);
					format(string, sizeof(string), "[WANING]: %d tried to enter admin_vehicle: %d. Autokilled.", playerid, vehicleid);
					SendClientMessage(playerid, COLOR_RED, string);
				}
      			}

	}
//}
}*/

public OnPlayerRequestClass(playerid, classid)
{
	//if(classid == 0 || classid == 1 || classid == 2 || classid == 3 || classid == 4 || classid == 5 || classid == 6)
	//{
	//	iSpawnSet[playerid] = 1;
	//}
	//else
	//{
	//iSpawnSet[playerid] = 0;
	//	}
	//SetupPlayerForClassSelection(playerid);
	SetPlayerPos(playerid, 1682.4164,1446.8452,10.7722);
	SetPlayerCameraPos(playerid, 1688.6171,1447.4791,10.7676);
	SetPlayerCameraLookAt(playerid, 1682.4164,1446.8452,10.7722);
    SetTimer("StartTextTimer",9000,0);
	return 1;

}

public SetupPlayerForClassSelection(playerid)
{
 	SetPlayerInterior(playerid,14);
	//SetPlayerPos(playerid,1958.3783,1343.1572,15.3746);
	SetPlayerFacingAngle(playerid,90.0);
	SetPlayerCameraPos(playerid,1958.3783,1347.1572,16.3746);
	SetPlayerCameraLookAt(playerid,1958.3783,1343.1572,15.3746);
	//GameTextForPlayer(playerid,"~r~Press SHIFT to start the game.",1800,1);
}

public GameModeExitFunc()
{
	GameModeExit();
}

public OnGameModeInit()
{
	SetGameModeText("Real Life/Freeroam");
    //new count = 1;
	ShowPlayerMarkers(1);
	ShowNameTags(1);

	//AddPlayerClass(15,197.9883,162.7670,1004.0,269.1425,0,0,-1,-1,-1,-1);
    //SetPlayerPos(giveplayerid,197.9883,162.7670,1004.0); JAIL!
	AddPlayerClass(176,1682.4164,1446.8452,10.7722,269.3783,0,0,-1,-1,-1,-1);
	//AddPlayerClass(106,1958.3783,1343.1572,15.3746,269.1425,0,0,5,-1,-1,-1);
	//AddPlayerClass(64,1958.3783,1343.1572,15.3746,269.1425,0,0,5,-1,-1,-1);


	// ADMIN CAR START


    AddStaticVehicle(522,-707.4567,954.8340,12.0236,106.5217,0,0); // adminnrg
	AddStaticVehicle(522,-708.8447,958.7545,12.0097,109.6339,0,0); // adminnrg
	AddStaticVehicle(541,-682.8561,965.8600,11.8393,91.2706,3,1); // admincar
	AddStaticVehicle(572,-705.4576,966.8726,12.0124,128.0759,0,0); // lawnmower
	AddStaticVehicle(571,-709.4250,972.2729,11.9861,160.8809,0,0); // gokart
	AddStaticVehicle(522,-708.9827,939.8375,12.0118,90.7647,0,0); // faggio
	AddStaticVehicle(260,-625.5062,863.8073,-0.5877,162.6789,0,0); // seaplane
	AddStaticVehicle(452,-659.1215,873.6771,-0.5667,224.0928,0,0); // speeder


	//ADMIN CAR END

	// Player Class's
	/*AddPlayerClass(280,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);*/
	AddPlayerClass(281,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
	AddPlayerClass(282,1958.3783,1343.1572,15.3746,270.1425,0,0,24,300,-1,-1);
	AddPlayerClass(283,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(284,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(285,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(286,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(287,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(254,1958.3783,1343.1572,15.3746,0.0,0,0,24,300,-1,-1);
	AddPlayerClass(255,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(256,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(257,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(258,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(259,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(260,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(261,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(262,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(263,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(264,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(274,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(275,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(276,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
    AddPlayerClass(1,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(2,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(290,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(291,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(292,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(293,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(294,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(295,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(296,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(297,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(298,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
    AddPlayerClass(299,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(277,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(278,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(279,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(288,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(47,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(48,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(49,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(50,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(51,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(52,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(53,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(54,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(55,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(56,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(57,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(91,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(92,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(93,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(95,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(96,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(97,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(98,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(99,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(100,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(101,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(102,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(103,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(104,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(105,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(106,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(107,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(108,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(109,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(110,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(111,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(112,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(113,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(114,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(115,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(116,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(117,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(118,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(120,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(121,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(122,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(123,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(124,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(125,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(126,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(127,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(128,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(251,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	AddPlayerClass(253,1958.3783,1343.1572,15.3746,269.1425,0,0,24,300,-1,-1);
	// Car Spawns
	//AddStaticVehicle(535,2002.0654,1542.9290,11.0,180.1496,123,1); // piratemarker
	//AddStaticVehicle(411,2179.1169,1985.1921,9.0,359.2931,116,1); // 711marker



//army start
AddStaticVehicle(470,220.47,1917.65,17.40,0,86,86); // patriot
//army end -- swat start
AddStaticVehicle(415,983.96,1774.41,8.71,0,0,0); //cheetah black
//swat end -- other spawns

	AddStaticVehicle(549,1532.6139,2258.0173,10.5176,359.1516,84,36);
	AddStaticVehicle(460,2293.4219,517.5514,1.7537,270.7889,1,3); //
	AddStaticVehicle(460,2354.4690,518.5284,1.7450,270.2214,1,3); //
	AddStaticVehicle(460,772.4293,2912.5579,1.0753,69.6706,1,3); //
	AddStaticVehicle(560,2133.0769,1019.2366,10.5259,90.5265,9,39); //
	AddStaticVehicle(560,2142.4023,1408.5675,10.5258,0.3660,17,1); //
	AddStaticVehicle(560,2196.3340,1856.8469,10.5257,179.8070,21,1); //
	AddStaticVehicle(560,2103.4146,2069.1514,10.5249,270.1451,33,0); //
	AddStaticVehicle(560,2361.8042,2210.9951,10.3848,178.7366,37,0); //
	AddStaticVehicle(560,-1993.2465,241.5329,34.8774,310.0117,41,29); //
	AddStaticVehicle(559,-1989.3235,270.1447,34.8321,88.6822,58,8); //
	AddStaticVehicle(559,-1946.2416,273.2482,35.1302,126.4200,60,1); //
	AddStaticVehicle(558,-1956.8257,271.4941,35.0984,71.7499,24,1); //
	AddStaticVehicle(562,-1952.8894,258.8604,40.7082,51.7172,17,1); //
	AddStaticVehicle(411,-1949.8689,266.5759,40.7776,216.4882,112,1); //
	AddStaticVehicle(429,-1988.0347,305.4242,34.8553,87.0725,2,1); //
	AddStaticVehicle(559,-1657.6660,1213.6195,6.9062,282.6953,13,8); //
	AddStaticVehicle(560,-1658.3722,1213.2236,13.3806,37.9052,52,39); //
	AddStaticVehicle(558,-1660.8994,1210.7589,20.7875,317.6098,36,1); //
	AddStaticVehicle(550,-1645.2401,1303.9883,6.8482,133.6013,7,7); //
	AddStaticVehicle(460,-1333.1960,903.7660,1.5568,0.5095,46,32); //
	AddStaticVehicle(411,113.8611,1068.6182,13.3395,177.1330,116,1); //
	AddStaticVehicle(429,159.5199,1185.1160,14.7324,85.5769,1,2); //
	AddStaticVehicle(411,612.4678,1694.4126,6.7192,302.5539,75,1); //
	AddStaticVehicle(522,661.7609,1720.9894,6.5641,19.1231,6,25); //
	AddStaticVehicle(522,660.0554,1719.1187,6.5642,12.7699,8,82); //
	AddStaticVehicle(567,711.4207,1947.5208,5.4056,179.3810,90,96); //
	AddStaticVehicle(567,1031.8435,1920.3726,11.3369,89.4978,97,96); //
	AddStaticVehicle(567,1112.3754,1747.8737,10.6923,270.9278,102,114); //
	AddStaticVehicle(567,1641.6802,1299.2113,10.6869,271.4891,97,96); //
	AddStaticVehicle(567,2135.8757,1408.4512,10.6867,180.4562,90,96); //
	AddStaticVehicle(567,2262.2639,1469.2202,14.9177,91.1919,99,81); //
	AddStaticVehicle(567,2461.7380,1345.5385,10.6975,0.9317,114,1); //
	AddStaticVehicle(567,2804.4365,1332.5348,10.6283,271.7682,88,64); //
	AddStaticVehicle(560,2805.1685,1361.4004,10.4548,270.2340,17,1); //
	AddStaticVehicle(506,2853.5378,1361.4677,10.5149,269.6648,7,7); //
	AddStaticVehicle(567,2633.9832,2205.7061,10.6868,180.0076,93,64); //
	AddStaticVehicle(567,2119.9751,2049.3127,10.5423,180.1963,93,64); //
	AddStaticVehicle(567,2785.0261,-1835.0374,9.6874,226.9852,93,64); //
	AddStaticVehicle(567,2787.8975,-1876.2583,9.6966,0.5804,99,81); //
	AddStaticVehicle(411,2771.2993,-1841.5620,9.4870,20.7678,116,1); //
 //park
AddStaticVehicle(522,1971.3477,-1423.8048,13.1231,37.9276,6,25); // nrgspot
AddStaticVehicle(522,1970.7039,-1427.6030,13.1170,64.9409,6,25); // nrg2
AddStaticVehicle(510,1909.7827,-1362.4442,13.1180,156.8242,6,25); // mountainbike
AddStaticVehicle(510,1913.6904,-1362.6309,13.1783,173.9892,6,25); // mountain bike
AddStaticVehicle(571,1866.8436,-1411.4044,13.5260,283.2452,0,0); // gokart
 // yakuzi -2639.43 1394.88 7.09 0
AddStaticVehicle(522,-2649.43,1394.88,7.09,0,25,25); //bike
AddStaticVehicle(522,-2640.43,1397.88,7.09,0,25,25); //bike
AddStaticVehicle(413,-2617.60,1352.58,7.26,0,25,25); //bike
 //Aircraft
AddStaticVehicle(519,1336.5591,1619.3850,10.5841,234.6598,73,73); //
AddStaticVehicle(519,1331.2627,1598.0571,10.5837,239.0417,14,15); //
AddStaticVehicle(577,1585.3497,1190.4709,10.7407,178.3086,14,115); //
AddStaticVehicle(593,1277.7241,1361.6198,10.5800,269.3047,68,94); //
AddStaticVehicle(512,1279.5392,1322.9293,10.5848,270.1408,2,1); //
AddStaticVehicle(487,1611.1862,1628.0591,10.6037,131.5763,117,1); //
AddStaticVehicle(487,1655.4799,1539.7417,10.6079,21.7206,22,22); //
AddStaticVehicle(487,1627.8187,1530.1752,10.6269,16.4681,22,22); //
 //Taxis
AddStaticVehicle(420,1942.5831,1361.5244,8.9289,180.0435,6,1); // taxi
AddStaticVehicle(420,1942.7462,1345.8079,8.9267,180.3112,6,1); // taxi
AddStaticVehicle(420,1942.8987,1332.5459,8.9294,180.3774,6,1); // taxi
AddStaticVehicle(420,1943.0062,1325.4645,8.9273,180.4461,6,1); // taxi
 //Cop Cars
AddStaticVehicle(598,2256.3228,2476.7004,10.5690,359.7502,0,1); // cop
AddStaticVehicle(598,2277.9124,2478.1228,10.5650,356.9259,0,1); // cop
AddStaticVehicle(598,2277.1924,2460.8042,10.5666,175.7085,0,1); // cop
AddStaticVehicle(598,2269.8452,2443.3086,10.5714,178.3194,0,1); // cop
AddStaticVehicle(598,2294.7422,2443.8254,10.5663,359.2516,0,1); // cop


	AddStaticPickup(371, 15, 1710.3359,1614.3585,10.1191); //para
	AddStaticPickup(371, 15, 1964.4523,1917.0341,130.9375); //para
	AddStaticPickup(371, 15, 2055.7258,2395.8589,150.4766); //para
	AddStaticPickup(371, 15, 2265.0120,1672.3837,94.9219); //para
	AddStaticPickup(371, 15, 2265.9739,1623.4060,94.9219); //para

	// Put this timer somewhere in your OnGameModeInit

	SetTimer("AdminArea",3000,1);
	SetTimer("MoneyGrubScoreUpdate", 1000, 1);
	SetTimer("checkpointUpdate", 1100, 1);
	SetTimer("PirateShipScoreUpdate", 2001, 1);
	SetTimer("PropertyScoreUpdate", 40005, 1);
	SetTimer("JobMoney", 40005, 1);
	//SetTimer("SavePosTimer", 40005, 1);
	//SetTimer("GambleUpdate", 5013, 1);
	SetTimer("SavedUpdate",60017, 1);
	SetTimer("TimeUpdate",60009, 1);

	//SetTimer("GameModeExitFunc", gRoundTime, 0);
	SetTimer("SendTextTimer", 150000, 1);
	SetTimer("SavePosTimer", 150000, 1);


	return 1;
}

public SendPlayerFormattedText(playerid, const str[], define)
{
	new tmpbuf[256];
	format(tmpbuf, sizeof(tmpbuf), str, define);
	SendClientMessage(playerid, 0xFFFF00AA, tmpbuf);
}

public SendAllFormattedText(playerid, const str[], define)
{
	new tmpbuf[256];
	format(tmpbuf, sizeof(tmpbuf), str, define);
	SendClientMessageToAll(0xFFFF00AA, tmpbuf);
}


isStringSame(const string1[], const string2[], len) {
	for(new i = 0; i < len; i++) {
	    if(string1[i]!=string2[i])
	        return 0;
		if(string1[i] == 0 || string1[i] == '\n')
		    return 1;
	}
	return 1;
}

//Token from SPARKs PTPM.

PlayerLogin(playerid,username[],password[])
{

	if (strlen(password)==0)
	    return;


	new l=strlen(username);

	if (l==0) return;

	for (new i=0 ; i<l ; i++)
		if (username[i]=='.' || username[i]=='/') return;

	new filename[256];

	format(filename,sizeof filename,"userdb/%s.pwd",username);

	new File:passwordfile = fopen(filename, io_read);
	if (!passwordfile) {
		SendClientMessage(playerid,COLOUR_PERSONAL,"Access denied.");
		return;
	}

	new line[256];
	fread(passwordfile, line);
	fclose(passwordfile);


	if (!streq(line,password)) {
		SendClientMessage(playerid,COLOUR_PERSONAL,"Access denied.");
		return;
	}

	new text[256];
	GetPlayerName(playerid,text,sizeof text);
	printf("Player %s id %d opped up using account %s\n",text,playerid,username);
	format (text,sizeof text,"%s is now a serveradministrator. Respect him!",text);
	SendClientMessageToAll(COLOUR_GLOBAL,text);

	player_op[playerid] = 1;
}
streq(str1[],str2[])
{
	if (strlen(str1)!=strlen(str2)) return 0;

	return strcmp(str1,str2,true)==0;
}

public PutAtPos(playerid) {
  if (dUserINT(PlayerName(playerid)).("x")!=0) {
      //SystemMsg(playerid,"");
      SetPlayerPos(playerid,
                   float(dUserINT(PlayerName(playerid)).("x")),
                   float(dUserINT(PlayerName(playerid)).("y")),
                   float(dUserINT(PlayerName(playerid)).("z")));
  }
}
SendMessageToAdmins(const str[])
{
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
	    if (IsPlayerConnected(i)) {
	        if (IsPlayerAdmin(i) || player_op[i]) {
	            SendClientMessage(i, 0xFF9900AA, str);
	        }
	    }
	}
}

SendMessage(playerid, const str[])
{
	SendClientMessage(playerid, 0xFF9900AA, str);
}

/*public AdminArea(playerid)
{
    new i, Float:X, Float:Y, Float:Z;
    //new Float:phealth;

    for (i = 0; i < MAX_PLAYERS; i++)
    {
        GetPlayerPos(i, X, Y, Z);
        if(X >= 1305.7489 && X <= 1372.4907 && Y >= -666.4764&& Y <= -602.6023) //REPLACE XMIN,XMAX,YMIN,YMAX by your coordinates
        //if((X >= 388.6190 && X <= -7.9993 && Y >= 2147.0618 && Y <= 1655.8849)) //REPLACE XMIN,XMAX,YMIN,YMAX by your coordinates
        //388.6190, -7.9993, 2147.0618, 1655.8849 A51
        {
            if (!IsPlayerAdmin(i) || player_op[i] == 0)
            {
                GameTextForPlayer(i,"~r~You're not allowed in the Admin Area! Please login as Admin to access this area.",5000,5);
                //GetPlayerHealth(i, phealth);
                SetPlayerHealth(i, 0);
            }
        }
    }
}
*/

public AdminArea(playerid)
{
	new i, j, Float:X, Float:Y, Float:Z;
	for (i = 0, j = MAX_PLAYERS; i < j; i++) {
	GetPlayerPos(playerid, X, Y, Z);
	if(X >= -764.5396 && X <= -632.9658 && Y >= 802.6583 && Y <= 1015.8968) { //Replace with your own x/y min/max coords
		if (IsPlayerAdmin(playerid) /*|| Level[playerid] == Admin*/) {
		    //nothing :D
		} else {
			SetTimer("AdminAreaAbuse", 1000, 0);
			GameTextForPlayer(playerid,"~r~You are not allowed to go to the admin Area!",5000,5);
			SendClientMessage(playerid, COLOR_RED, "Please login as Admin to access this area!");
	 		SetPlayerHealth(playerid, -99999999.99);
		}
	}}
}

public AdminAreaAbuse(playerid)
{
		new string[256];
		new name[256];
	    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
	    format(string, sizeof(string), "%s tried to enter the admin area. Autokilled!", name);
		SendClientMessageToAll(COLOR_RED, string);
		KillTimer(AdminAreaAbuse(playerid));
}