All pastes #730124 Raw Edit

Mine

public text v1 · immutable
·published 2007-10-08 22:14 UTC
rendered paste body
#include <a_samp>
//#include <DUDB>
#include <core>
#include <float>

#define TEAM_Army 1
#define TEAM_Farmers 2
#define TEAM_Grove 3
#define TEAM_Ballas 4
#define TEAM_Vagos 5
#define TEAM_Aztecas 6
#define TEAM_Mafia 7

#define TEAM_GROOVE_COLOR 0x00FF00AA // Bright Green (in RGBA format)
#define TEAM_BALLAS_COLOR 0xFF00FFAA // Bright Purple
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_LIGHTGREEN 0x00FF00AA
#define COLOR_DARKGREEN 0x004400AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define BBLUE 0x00BFFFAA
#define COLOR_LIGHTBLUE 0x1C86EEAA
#define COLOR_ORANGE 0xFF9900AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BRIGHTRED 0xB22222
#define MAX_SCORE 20 //max score for when the round's over
#define OBJECTIVE_VEHICLE_BLUE 1
#define OBJECTIVE_COLOR 0xAA0000FF
#define cmd
#define string
#define SendMessageToAdmins
#define SendMessage
#define str
#define RED
#define spawn
#define playername
#define stockid
#define MAX_POINTS 100
#define CP_AMMU 2

new TEXT[255];
new Float:X1[MAX_PLAYERS];
new Float:Y1[MAX_PLAYERS];
new Float:Z1[MAX_PLAYERS];

static gHour;
static gMinute;

forward Timer_DayHeartbeat();
forward AutoReminder();
forward PayDay();
forward TimeFunction(playerid);
forward unsafe(Kzone);
forward OnPlayerUpdate(playerid);
forward checkpointUpdate();
forward post_winners(winnerid);
forward report(playerid);

new gObjectiveBluePlayer=(-1);
new gObjectiveReached=0;
new gTeam[MAX_PLAYERS];
new exp[MAX_PLAYERS];
new XP[MAX_PLAYERS];
new level[MAX_PLAYERS] = 1;
new Grove1;
new Grove2;
new Grove3;
new Army1;
new Army2;
new Army4;
new Army5;
new Mafia1;
new Mafia2;
new Mafia3;
new Mafia4;
new Ballas1;
new Ballas2;
new Ballas3;
new Ballas4;
new Vagos1;
new Vagos2;
new Vagos;
new Aztecas1;
new Aztecas2;
new Aztecas3;
new Aztecas4;
new Farmers1;
new Farmers;
new Farmers3;
new Niekeno;
new Visitors;
new ownedcar[MAX_PLAYERS];
new owner[MAX_PLAYERS];

#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 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:checkCoords[1][4] = {
{284.0546,-86.4384, 302.9315,-56.6674}
};

new checkpointType[MAX_POINTS] = {
CP_AMMU
};

#define MAX_WEAPONS 47
#define MAX_SPAWNWEAPONS 9
new weaponNames[MAX_WEAPONS][32] = {
	"Unarmed",
	"Brass Knuckles", //crash game
	"Golf Club",
	"Night Stick",
	"Knife",
	"Baseball Bat",
	"Shovel",
	"Pool Cue",
	"Katana",
	"Chainsaw",
	"Purple Dildo",
	"White Dildo",
	"Long White Dildo",
	"White Dildo 2",
	"Flowers",
	"Cane",
	"Grenades", //crash game
	"Tear Gas", //crash game
	"Molotovs", //crash game
	"UNKNOWN",
	"UNKNOWN",
	"UNKNOWN",
	"Pistol",
	"Silenced Pistol",
	"Desert Eagle",
	"Shotgun",
	"Sawn Off Shotgun",
	"Combat Shotgun",
	"Micro Uzi (Mac 10)",
	"MP5",
	"AK47",
	"M4",
	"Tec9",
	"Rifle",
	"Sniper Rifle",
	"RPG",
	"Missile Launcher",
	"Flame Thrower",
	"Minigun",
	"Sachel Charges", //crash game
	"Detonator", //crash game
	"Spray Paint",
	"Fire Extinguisher",
	"Camera",
	"Nightvision Goggles", //crash game
	"Thermal Goggles", //crash game
	"Parachute"
};

new spawnWeapons[MAX_SPAWNWEAPONS][3] = {
	{23,34,4000},
	{25,15,7000},
	{27,20,15000},
	{28,120,7000},
	{32,120,5000},
	{29,120,15000},
	{30,120,25000},
	{31,120,30000},
	{9,0,70000}
};

new playerWeapons[MAX_PLAYERS][MAX_SPAWNWEAPONS];
new savedWeapons[64][MAX_SPAWNWEAPONS];

new ZoneOwner[25]={3,3,3,1,1,1,1,7,7,7,7,4,4,4,4,5,5,5,6,6,6,6,2,2,2};
new UnderAttack[25];
new KillCount[7][25];
new Float:ZoneLocations[25][4]=
	{
		{1988.037, -1752.921, 2611.702, -1614.75},
		{1607.753, -1452.893, 2056.488, -1026.537},
		{2216.207, -2321.396, 2391.137, -1768.712},
		{70.06725, 1786.715, 373.692, 2113.696},
		{2349.306, -2747.752, 2866.492, -2309.553},
		{1132.754, -221.8796, 1950.205, 490.4708},
		{151.8124, -268.5911, 478.7929, 140.1345},
		{1025.919, -2372.717, 1524.091, -1910.831},
		{1067.75, -1587.116, 1368.174, -1156.812},
		{2615.505, -1606.855, 2896.915, -1263.401},
		{1322.54, -1748.974, 1995.642, -1622.646},
		{2067.896, -1377.886, 2269.447, -1223.924},
		{1710.43, -2210.859, 2181.981, -1752.921},
		{2064.094, -1614.75, 2265.644, -1381.833},
		{1543.105, -2388.508, 1721.838, -1764.764},
		{2296.066, -1247.61, 2866.492, -927.8433},
		{200.7038, -2076.636, 987.8908, -1752.921},
		{2216.207, -1847.667, 2615.505, -1752.921},
		{2398.743, -2159.539, 2790.435, -1855.563},
		{193.0981, -1705.548, 664.6498, -1156.812},
		{2288.461, -1598.959, 2547.053, -1263.401},
		{1482.26, -1598.959, 2064.094, -1464.736},
		{-303.6248, -175.1681, 105.1009, 163.4902},
		{2611.702, -1855.563, 2866.492, -1606.855},
		{2008.595, -221.8796, 2709.267, 291.9469}
 	};


main()
{
	print("\n----------------------------------");
	print(" LS Gang Wars");
	print("----------------------------------\n");
}

 IsInZone(playerid)
	{
	new i=0;
	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z);
	new NAME[40];
	GetPlayerName(playerid,NAME,sizeof(NAME));
	while (i<25)
	    {
		if ((X>ZoneLocations[i][0])&&(X<ZoneLocations[i][2])&&(Y>ZoneLocations[i][1])&&(Y<ZoneLocations[i][3]))
		    {
		    return i;
		    }
	    i++;
	    }
	return -1;
	}

public unsafe(Kzone)
	{
	UnderAttack[Kzone]=0;
	}

getColor(playerid)
{
	if(gTeam[playerid] == TEAM_Army) return 0x8040008F;
	else if(gTeam[playerid] == TEAM_Farmers) return 0x00000083;
	else if(gTeam[playerid] == TEAM_Grove) return 0x00FF007D;
	else if(gTeam[playerid] == TEAM_Ballas)	return 0x80008070;
	else if(gTeam[playerid] == TEAM_Vagos) return 0xFFFF007C;
	else if(gTeam[playerid] == TEAM_Aztecas) return 0x00FFFF81;
	else if(gTeam[playerid] == TEAM_Mafia) return 0x0000FF74;
	return 0x0000FF74;
}

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

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

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

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

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

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

				format(string, sizeof(string),"You have quit the gang '%s' (id: %d)", gangNames[gangnum], gangnum);
				SendClientMessage(playerid, COLOR_ORANGE, string);
				playerGang[playerid]=0;
				SetPlayerColor(playerid,playerColors[playerid]);
				return;
			}
		}
	} else {
		SendClientMessage(playerid, COLOR_RED, "You are not in a gang.");
	}
}

public OnGameModeInit()
{


	SetGameModeText("LS-Gang Wars v0.1");
	ShowNameTags(1);
	ShowPlayerMarkers(1);
	EnableTirePopping(1);
	SetGravity(0.008);
	SetWorldTime(12);
	SetTeamCount(7);
 	AllowInteriorWeapons(0);
    EnableZoneNames(1);
    //AllowPlayerTeleport(0);YOU CAN'T USE THIS THIS WAY
    //you can delete this now - SetTimer("TeamFix", 1000, 1);
    UsePlayerPedAnims();

    Grove1 = GangZoneCreate(1988.037, -1752.921, 2611.702, -1614.75);
    Grove2 = GangZoneCreate(1607.753, -1452.893, 2056.488, -1026.537);
    Grove3 = GangZoneCreate(2216.207, -2321.396, 2391.137, -1768.712);
    Army1 = GangZoneCreate(70.06725, 1786.715, 373.692, 2113.696);
    Army2 = GangZoneCreate(2349.306, -2747.752, 2866.492, -2309.553);
    Army5 = GangZoneCreate(1132.754, -221.8796, 1950.205, 490.4708);
    Army4 = GangZoneCreate(151.8124, -268.5911, 478.7929, 140.1345);
    Mafia1 = GangZoneCreate(1025.919, -2372.717, 1524.091, -1910.831);
    Mafia2 = GangZoneCreate(1067.75, -1587.116, 1368.174, -1156.812);
    Mafia3 = GangZoneCreate(2615.505, -1606.855, 2896.915, -1263.401);
    Mafia4 = GangZoneCreate(1322.54, -1748.974, 1995.642, -1622.646);
    Ballas1 = GangZoneCreate(2067.896, -1377.886, 2269.447, -1223.924);
    Ballas2 = GangZoneCreate(1710.43, -2210.859, 2181.981, -1752.921);
    Ballas3 = GangZoneCreate(2064.094, -1614.75, 2265.644, -1381.833);
	Ballas4 = GangZoneCreate(1543.105, -2388.508, 1721.838, -1764.764);
    Vagos1 = GangZoneCreate(2296.066, -1247.61, 2866.492, -927.8433);
    Vagos2 = GangZoneCreate(200.7038, -2076.636, 987.8908, -1752.921);
    Vagos = GangZoneCreate(2216.207, -1847.667, 2615.505, -1752.921);
    Aztecas1 = GangZoneCreate(2398.743, -2159.539, 2790.435, -1855.563);
    Aztecas2 = GangZoneCreate(193.0981, -1705.548, 664.6498, -1156.812);
    Aztecas3 = GangZoneCreate(2288.461, -1598.959, 2547.053, -1263.401);
    Aztecas4 = GangZoneCreate(1482.26, -1598.959, 2064.094, -1464.736);
    Farmers1 = GangZoneCreate(-303.6248, -175.1681, 105.1009, 163.4902);
    Farmers = GangZoneCreate(2611.702, -1855.563, 2866.492, -1606.855);
    Farmers3 = GangZoneCreate(2008.595, -221.8796, 2709.267, 291.9469);
    Niekeno = GangZoneCreate(2166.77, -1231.819, 2258.038, -1129.178);

    AddStaticPickup(1239,2,2512.560058,-1028.399414,70.085937);
    AddStaticPickup(1239,2,2091.482177,-1279.688842,26.040601);
    AddStaticPickup(1239,2,2486.651855,-1645.656005,14.070312);
    AddStaticPickup(1239,2,2637.365234,-1992.147949,13.993547);
	AddStaticPickup(1239,2,2638.354980,-2414.083496,13.632812);
	AddStaticPickup(1239,2,1125.921142,-2037.342407,69.883468);
	AddStaticPickup(1239,2,299.422546,-1155.912231,80.909896);

	//Objects:
	CreateObject(8210, -364.532867, -1354.596802, 23.185678, 0, 0, 250.9378);
	CreateObject(8210, -382.132202, -1322.766724, 26.474600, 0, 6.0161, 348.75);
	CreateObject(8210, -414.872131, -1344.778442, 27.228954, 0, 355.7028, 78.75);
	CreateObject(987, -413.446106, -1381.667969, 22.538481, 0, 0, 123.7499);
	CreateObject(987, -406.810028, -1391.459839, 22.498192, 0, 0, 123.7499);
	CreateObject(987, -400.266357, -1401.260742, 22.492678, 0, 0, 123.7499);
	CreateObject(979, -377.399353, -1383.588257, 22.458151, 0, 0, 213.75);
	CreateObject(979, -387.136871, -1390.306763, 22.586538, 0, 359.1406, 213.75);
	CreateObject(987, -383.766602, -1387.337036, 21.887968, 0, 0, 33.75);
	CreateObject(987, -391.221344, -1392.400146, 21.892338, 0, 0, 33.75);
	CreateObject(966, -397.467438, -1396.828735, 22.403381, 0, 0, 213.75);
	CreateObject(968, -397.433044, -1396.804321, 23.290543, 0, 0, 33.75);
	CreateObject(967, -397.958618, -1398.225098, 22.388947, 0, 0, 32.8906);
	CreateObject(970, -398.624756, -1399.838257, 22.946869, 0, 0, 33.75);
	CreateObject(970, -398.624237, -1399.845947, 24.004873, 0, 0, 33.75);
	CreateObject(970, -398.591522, -1399.849609, 25.110973, 0, 0, 33.75);
	CreateObject(3279, -362.633789, -1333.434937, 21.310383, 0, 0, 168.75);
	CreateObject(3279, -379.475128, -1375.770874, 21.992777, 0, 0, 146.25);
	CreateObject(3399, -406.027985, -1434.041016, 27.314953, 0, 0, 0);
	CreateObject(8614, -372.305908, -1417.014893, 27.075842, 0, 4.2972, 270);
	CreateObject(8614, -365.900513, -1414.699829, 30.864906, 0, 0, 180);
	CreateObject(3279, -409.262695, -1343.191040, 24.378386, 0, 0, 348.75);
	CreateObject(1458, -405.727112, -1327.119629, 25.949831, 0, 0, 0);
	CreateObject(12921, -393.833313, -1395.790161, 25.587015, 0, 0, 33.75);
	CreateObject(17324, -390.830566, -1340.374146, 23.964664, 4.2972, 1.7189, 349.6094);
	CreateObject(3461, -390.298584, -1393.040649, 23.675467, 0, 0, 0);
	CreateObject(3168, -410.485931, -1357.338867, 23.502028, 0, 0, 168.75);
	CreateObject(4726, 332.120636, -1836.737549, 2.014965, 0, 0, 180);
	CreateObject(3279, 302.548859, -1779.621338, 3.555548, 0, 0, 315);
	CreateObject(3279, 300.057770, -1813.526978, 3.445765, 0, 0, 22.5);
	CreateObject(16778, 335.582611, -1778.450073, 4.096195, 0, 0, 270);
	CreateObject(1369, 313.124207, -1784.247314, 4.240703, 0, 0, 22.5);

    //VEHICLES
  	AddStaticVehicle(497,2836.5798,-2530.6621,18.1278,281.8553,6,0); // maveric m1 getaway 1

	AddStaticVehicle(482,-2444.4460,501.1308,29.7963,254.9694,1,1); // BURRITO sf getawy car 2

	AddStaticVehicle(497,-1481.9639,144.6383,18.9529,133.6042,3,3); // maveric  getaway 3

	AddStaticVehicle(482,2194.4309,1444.0286,10.9392,0.9995,48,48); // burrito getaway 4

	AddStaticVehicle(482,1713.2853,-1613.0427,13.6739,338.0,125,108); // BURRITO ls getaway car 5

	AddStaticVehicle(572,1261.8896,303.3519,19.5877,155.0000,3,0); // lawnmower zombi 6

	AddStaticVehicle(482,2103.3213,2079.2488,10.9461,270.0000,126,0); // burrito--7

	AddStaticVehicle(560,2318.2593,6.4544,26.1897,90.0000,1,1); // SULTAN//bank robbry getawy car 8

	AddStaticVehicle(482,-535.3323,-487.2228,25.7000,0.0000,126,0); // burrito sex shop 9

	AddStaticVehicle(576,-1051.9135,-679.1596,32.0000,0.0000,0,0); // torando--mission car134 10

	AddStaticVehicle(482,2585.8357,2780.8374,10.9404,270.0000,0,0); // burrito k.a.a.c fules--11

	AddStaticVehicle(515,2260.0344,2763.9900,11.8394,90.0000,0,3); // roadtrain--108 tm 12

	AddStaticVehicle(515,214.7370,-263.5162,2.5967,176.2460,3,0); // roadtrain--187 tm 13

	AddStaticVehicle(515,-1988.3328,-2382.9001,31.6450,303.4193,3,0); // roadtrain tm 14

	AddStaticVehicle(515,-1712.7483,14.3026,4.6194,292.0642,3,0); // roadtrain tm 15

	AddStaticVehicle(515,1048.9388,2133.8923,11.8397,90.0000,0,3); // roadtrain--16 tm

	AddStaticVehicle(515,2865.8965,932.6283,11.7964,116.8550,0,3); // roadtrain--17 tm

	AddStaticVehicle(515,259.4977,1429.8959,11.8406,180.0000,0,3); // roadtrain--octane springs-18 tm

	AddStaticVehicle(483,-1096.1134,-1621.6436,76.3596,271.1122,0,0); // camper weed farm-19

	AddStaticVehicle(483,-1849.0,-1576.0,22.0,235.0,0,0); // camper moved to scrappers--20

	AddStaticVehicle(592,1548.8715,1466.1749,12.0153,38.9954,1,1); // andromadajet 21

	AddStaticVehicle(592,2110.9810,-2451.1707,14.7411,153.1628,1,1); // andromadajet 22

	AddStaticVehicle(592,-1315.2804,-237.7538,15.3709,323.9496,1,1); // andromadajet 23
		//Farmer
	CreateVehicle(428, -391.341003, -1342.480713, 25.150469, 167, 3, 3, 3600); //Obj Vehicle

	CreateVehicle(508, -375.027893, -1345.119263, 23.437363, 156, 86, 86, 60);

	CreateVehicle(468, -414.041534, -1356.140015, 24.428274, 167, 86, 86, 60);

	CreateVehicle(478, -384.486725, -1381.990845, 23.293976, 32, 86, 86, 60);

	CreateVehicle(478, -391.276611, -1386.882690, 23.447811, 32, 86, 86, 60);

	CreateVehicle(489, -405.874725, -1370.005615, 24.233240, 249, 86, 86, 60);

	CreateVehicle(489, -408.009125, -1376.249512, 24.044243, 249, 86, 86, 60);

	CreateVehicle(413, -374.806152, -1408.354248, 25.941299, 294, 86, 86, 60);

	CreateVehicle(479, -374.717346, -1427.224121, 25.976353, 360, 86, 86, 60);

	CreateVehicle(478, -381.140503, -1397.125000, 24.258635, 112, 86, 86, 60);

	CreateVehicle(468, -380.236725, -1450.241699, 25.976353, 360, 86, 86, 60);

	CreateVehicle(468, -376.970245, -1450.228394, 25.976353, 360, 86, 86, 60);

	CreateVehicle(468, -373.098236, -1450.310059, 25.976353, 360, 86, 86, 60);

	AddStaticVehicle(426,1230.4683,-1288.9296,13.2550,271.6072,7,7); //

	AddStaticVehicle(426,1214.3450,-1357.6713,13.3009,182.4956,7,7); // miestas

	AddStaticVehicle(513,1779.3787,-2462.8601,14.1143,274.3707,48,18); // airport

	AddStaticVehicle(513,1784.8390,-2625.0532,14.1097,358.3885,48,18); // airport

	AddStaticVehicle(487,1957.2919,-2325.0481,13.8603,215.2047,3,29); // airport

	AddStaticVehicle(593,1926.2396,-2289.6250,14.0165,269.9998,58,8); // airport

	AddStaticVehicle(494,1859.6465,-2291.9211,13.4417,341.5497,75,79); // miestas oro uostas

	AddStaticVehicle(494,1862.6290,-2271.1470,13.4421,351.5345,75,79); // miestas oro uostas

	AddStaticVehicle(494,1854.9243,-2314.6455,13.4421,8.5208,75,79); // miestas oro uostas

	AddStaticVehicle(495,1870.7672,-2282.4336,13.8842,264.3502,123,124); // miestas oro uostas

	AddStaticVehicle(522,1899.9260,-2290.0735,13.1100,262.6362,39,106); // miestas oro uostas

	AddStaticVehicle(522,1899.3330,-2274.2212,13.1187,88.7357,39,106); // miestas oro uostas

	AddStaticVehicle(522,1926.5498,-1943.0485,13.1223,91.4798,39,106); // miestas

	AddStaticVehicle(507,1643.7715,-1542.1986,13.3926,88.4127,53,53); // miestas

	AddStaticVehicle(438,1645.1755,-1538.0005,13.5727,84.8690,6,76); // miestas

	AddStaticVehicle(507,1322.6228,-1453.8722,13.3186,181.3518,62,62); // miestas

	AddStaticVehicle(416,1178.0424,-1338.0825,14.0472,268.6290,1,3); // miestas

	AddStaticVehicle(507,1065.7319,-1257.0474,14.3820,359.9340,53,53); // miestas

	AddStaticVehicle(477,1065.8159,-1210.8549,16.7755,359.7335,94,1); // miestas

	AddStaticVehicle(556,897.4998,-1207.8750,17.3517,85.7812,1,1); // miestas

	AddStaticVehicle(556,861.2751,-1240.7499,14.3954,179.9735,32,1); // miestas

	AddStaticVehicle(556,866.7633,-1275.0134,14.9242,0.0268,1,1); // miestas

	AddStaticVehicle(555,1093.3533,-1248.6372,15.5112,86.3734,2,1); // miestas

	AddStaticVehicle(555,967.1003,-1001.2731,35.4154,353.4668,2,1); // miestas

	AddStaticVehicle(545,960.9338,-937.8986,40.9879,5.3962,47,1); // miestas

	AddStaticVehicle(545,832.8478,-862.7345,69.4624,19.6069,47,1); // miestas

	AddStaticVehicle(541,636.4888,-1123.0079,44.1654,225.1233,13,8); // miestas

	AddStaticVehicle(541,298.0974,-1163.4821,80.5343,46.6227,13,8); // miestas

	AddStaticVehicle(541,347.8271,-1785.7319,4.8748,165.2322,13,8); // miestas

	AddStaticVehicle(412,343.8723,-1809.5167,4.2798,359.9962,30,1); // miestas

	AddStaticVehicle(412,327.9856,-1788.8767,4.6836,181.4097,27,1); // miestas

	AddStaticVehicle(412,314.6223,-1809.5172,4.2329,359.9959,29,8); // miestas

	AddStaticVehicle(568,276.6577,-1794.5470,4.2176,100.9650,21,1); // miestas

	AddStaticVehicle(571,363.1149,-2017.4093,7.1197,0.0607,51,53); // miestas

	AddStaticVehicle(571,367.1703,-2019.2720,6.9562,348.2882,51,53); // miestas

	AddStaticVehicle(571,373.0449,-2013.6974,6.9558,0.5550,51,53); // miestas

	AddStaticVehicle(571,372.4642,-1909.4205,6.9558,355.4822,51,53); // miestas

	AddStaticVehicle(559,441.6615,-1667.5107,25.2414,260.3622,2,1); // miestas

	AddStaticVehicle(559,720.8406,-1666.9359,10.3503,275.2278,2,1); // miestas

	AddStaticVehicle(446,719.8927,-1629.9324,-0.4947,358.8751,1,35); // miestas

	AddStaticVehicle(446,719.3188,-1656.3949,-0.4465,358.2444,1,35); // miestas

	AddStaticVehicle(446,719.7050,-1704.1200,-0.4879,1.4996,1,35); // miestas

	AddStaticVehicle(451,878.2673,-1779.3433,13.4674,266.0204,18,18); // miestas

	AddStaticVehicle(451,1163.0090,-1835.8018,13.3248,324.5280,18,18); // miestas

	AddStaticVehicle(456,1278.6592,-1812.0192,13.5581,334.3910,110,93); // miestas

	AddStaticVehicle(467,1396.3688,-1388.9160,13.2946,277.8080,13,8); // miestas

	AddStaticVehicle(506,2407.1306,105.3144,26.7747,3.9739,76,76); // kaimas

	AddStaticVehicle(489,2243.2805,98.6942,26.6274,117.6578,13,118); // kaimas

	AddStaticVehicle(489,2285.8428,-66.4560,26.2277,152.9942,119,113); // kaimas

	AddStaticVehicle(463,2300.8828,-0.6276,26.0253,355.9543,79,79); // kaimas

	AddStaticVehicle(463,2123.0571,40.1793,25.8704,84.8902,79,79); // kaimas

	AddStaticVehicle(506,1310.6508,247.5432,19.2591,65.9071,7,7); // kaimas
	AddStaticVehicle(505,1253.1930,250.1906,19.6937,140.0936,84,110); // kaimas

	AddStaticVehicle(505,1204.4664,276.7628,19.8892,149.4244,84,110); // kaimas

	AddStaticVehicle(505,802.9595,-604.8544,16.4824,107.5420,84,110); // kaimas

	AddStaticVehicle(507,687.6349,-581.2748,16.0828,180.8927,37,37); // kaimas

	AddStaticVehicle(507,228.3199,-181.5295,1.3272,4.4912,37,37); // kaimas

	AddStaticVehicle(507,155.4336,-64.7758,1.4030,85.7393,37,37); // kaimas

	AddStaticVehicle(515,-198.0833,-285.9992,2.5044,237.7226,42,76); // kaimas

	AddStaticVehicle(515,-176.2373,-283.3733,2.6218,270.5177,42,76); // kaimas

	AddStaticVehicle(496,494.3649,-1471.7657,18.3888,341.1295,9,14); // miestas

	AddStaticVehicle(496,779.8545,-1412.3055,13.2531,242.9471,9,14); // miestas

	AddStaticVehicle(468,764.5584,-1833.6329,8.2680,279.3487,6,6); // miestas

	AddStaticVehicle(434,641.6187,-1805.0868,8.9737,57.1892,4,4); // miestas

	AddStaticVehicle(429,884.9052,-1758.0636,13.2270,286.4933,1,2); // miestas

	AddStaticVehicle(401,1279.7577,-1800.8429,13.1804,90.1300,74,74); // miestas

	AddStaticVehicle(429,1762.5740,-1700.0878,13.1198,277.8399,1,2); // miestas

	AddStaticVehicle(412,2173.4976,-1806.7474,13.1350,178.5932,37,8); // miestas

	AddStaticVehicle(429,2757.9893,-1495.3981,29.2655,265.4453,1,2); // miestas

	AddStaticVehicle(419,2850.4585,-1619.0272,10.8905,162.9594,59,75); // miestas

	AddStaticVehicle(419,2841.2478,-2073.6858,10.8558,179.4317,59,75); // miestas

	AddStaticVehicle(520,2766.5525,-2433.9844,14.3486,0.0804,0,0); // miestas

	AddStaticVehicle(433,2787.7314,-2418.3950,14.0701,269.0348,43,0); // miestas

	AddStaticVehicle(470,2777.6382,-2463.2849,13.6303,176.8448,43,0); // miestas

	AddStaticVehicle(470,2778.3989,-2449.4800,13.6311,176.8433,43,0); // miestas

	AddStaticVehicle(451, 972.6795, -1879.249, 15, 0, -1, -1);

	AddStaticVehicle(451, 2463.391, -2605.633, 15, 0, -1, -1);

	AddStaticVehicle(419, 2432.969, -1334.461, 15, 0, -1, -1);

	AddStaticVehicle(571, 2147.756, -1002.85, 15, 0, -1, -1);

	AddStaticVehicle(522, 2204.798, -1393.677, 15, 0, -1, -1);

	AddStaticVehicle(495, 1402.4, -2258.232, 15, 0, -1, -1);

	AddStaticVehicle(419, 1695.218, -2384.56, 15, 0, -1, -1);

	AddStaticVehicle(522, 1402.4, -856.7839, 15, 0, -1, -1);

	AddStaticVehicle(571, 330.0002, -864.6794, 15, 0, -1, -1);

	AddStaticVehicle(451, -2271.077, 1300.21, 15, 0, -1, -1);

	AddStaticVehicle(419, -1583.519, -415.8491, 15, 0, -1, -1);

	AddStaticVehicle(495, -1529.441, -455.2987, 15, 0, -1, -1);

	AddStaticVehicle(522, -2692.109, -179.1512, 15, 0, -1, -1);

	AddStaticVehicle(522, -2135.883, 313.9693, 15, 0, -1, -1);

	AddStaticVehicle(451, -2518.289, 732.1356, 15, 0, -1, -1);

	AddStaticVehicle(419, -1896.396, 751.8604, 15, 0, -1, -1);

	AddStaticVehicle(495, -1726.438, 743.9704, 15, 0, -1, -1);

	AddStaticVehicle(571, -1587.381, 424.4283, 15, 0, -1, -1);

	AddStaticVehicle(522, -2047.041, 1359.385, 15, 0, -1, -1);

	AddStaticVehicle(419, -2062.492, 1091.127, 15, 0, -1, -1);

	AddStaticVehicle(451, -2383.094, 1039.843, 15, 0, -1, -1);

	AddStaticVehicle(495, -2807.99, 688.7409, 15, 0, -1, -1);

	AddStaticVehicle(522, -1985.238, -656.4919, 15, 0, -1, -1);

	AddStaticVehicle(419, 2021.171, 1334.004, 15, 0, -1, -1);

	AddStaticVehicle(522, 2056.314, 954.9333, 15, 0, -1, -1);

	AddStaticVehicle(451, 2060.219, 1612.505, 15, 0, -1, -1);

	AddStaticVehicle(419, 2091.458, 1945.158, 15, 0, -1, -1);

	AddStaticVehicle(495, 1689.259, 1453.914, 15, 0, -1, -1);

	AddStaticVehicle(571, 1220.677, 1569.956, 15, 0, -1, -1);

	AddStaticVehicle(571, 2528.801, 1655.053, 15, 0, -1, -1);

	AddStaticVehicle(495, 2337.463, 2037.992, 15, 0, -1, -1);

	AddStaticVehicle(451, 2130.506, 695.7729, 15, 0, -1, -1);

	AddStaticVehicle(419, 1673.639, 2730.376, 15, 0, -1, -1);

	AddStaticVehicle(522, 884.86, 2196.583, 15, 0, -1, -1);

	AddStaticVehicle(522, 2509.276, 1121.26, 15, 0, -1, -1);

	AddStaticVehicle(571, 1369.061, 2030.256, 15, 0, -1, -1);

	AddStaticVehicle(419, -1798.393, -2113.696, 15, 0, -1, -1);

	AddStaticVehicle(451, -630.6053, -2358.931, 15, 0, -1, -1);

	AddStaticVehicle(571, 1564.835, -595.5717, 15, 0, -1, -1);

	AddStaticVehicle(571, 1167.788, 35.03363, 15, 0, -1, -1);

	AddStaticVehicle(495, 2487.387, -735.7062, 15, 0, -1, -1);

	AddStaticVehicle(451, -2347.253, -1634.903, 15, 0, -1, -1);

	AddStaticVehicle(419, -2090.34, -2382.287, 15, 0, -1, -1);

	AddStaticVehicle(571, -2510.743, -2720.945, 15, 0, -1, -1);

	AddStaticVehicle(522, -268.5911, 1471.412, 15, 0, -1, -1);

	AddStaticVehicle(495, -233.5575, 2347.253, 15, 0, -1, -1);

	AddStaticVehicle(451, -1786.715, 2580.811, 15, 0, -1, -1);

	AddStaticVehicle(419, -2779.334, 2487.387, 15, 0, -1, -1);

	AddStaticVehicle(419, -1132.754, -817.4513, 15, 0, -1, -1);

	AddStaticVehicle(451, 326.9805, 1377.989, 15, 0, -1, -1);

	AddStaticVehicle(451, 560.538, 2720.945, 15, 0, -1, -1);

	AddStaticVehicle(492,2508.1248,-1666.3868,13.1491,15.4853,86,86); // Grove

	AddStaticVehicle(412,2490.4434,-1682.3845,13.1860,96.4607,86,86); // Voodoo Grove

	AddStaticVehicle(412,2498.6667,-1682.2102,13.2041,94.9152,86,86); // vodoo grove

	AddStaticVehicle(491,2486.1169,-1656.2588,13.0990,84.4212,86,86); // vrgo grove

	AddStaticVehicle(600,2473.5251,-1690.1067,13.1864,359.1675,86,86); // picador grove

	AddStaticVehicle(487,2531.5366,-1676.1827,20.1086,97.8435,86,86); // maverick grove

	AddStaticVehicle(567,2493.1396,-1655.8577,13.2352,271.2886,86,86); // savana grove

	AddStaticVehicle(517,2095.1924,-1288.3097,24.2722,357.6156,5,5); // majestic ballas

	AddStaticVehicle(517,2102.2903,-1287.4292,24.2952,359.2334,5,5); // majestic ballas

	AddStaticVehicle(517,2112.5071,-1293.7686,23.8302,267.2820,5,5); // majestic ballas

	AddStaticVehicle(534,2096.1626,-1313.2544,23.9960,178.9042,5,5); // remington ballas

	AddStaticVehicle(534,2085.9944,-1293.2449,23.6962,89.5374,5,5); // remington ballas

	AddStaticVehicle(481,2479.9304,-1663.4099,12.8466,175.8721,86,86); // groove bmx

	AddStaticVehicle(481,2484.1589,-1665.1245,12.8582,357.8141,86,86); // groove bmx

	AddStaticVehicle(531,-131.4942,-65.0988,3.0818,114.1802,0,0); // farmers traltorius

	AddStaticVehicle(505,-115.6592,-54.1333,3.2532,219.2878,0,0); // farmers rancher

	AddStaticVehicle(505,-87.9612,-57.9575,3.2600,335.7502,0,0); // farmers rancher

	AddStaticVehicle(478,-111.0202,-42.3410,3.1053,338.1434,0,0); // farmers walton

	AddStaticVehicle(478,-104.5622,-24.6443,3.1090,340.5026,0,0); // farmers walton

	AddStaticVehicle(512,-131.8605,-28.2895,3.3975,339.5149,0,0); // farmers lektuvas

	AddStaticVehicle(489,937.7028,-1235.5299,16.7341,180.0803,120,123); // miestas

	AddStaticVehicle(463,1050.5000,-1357.9991,12.9019,178.5938,19,19); // miestas

	AddStaticVehicle(540,1275.4535,-2010.7208,58.8389,267.6081,1,1); // Mafia vincent

	AddStaticVehicle(540,1275.3818,-2018.5950,58.8430,270.7665,1,1); // mafia vincent

	AddStaticVehicle(540,1276.2601,-2028.3301,58.8489,271.1149,1,1); // mafia vincent

	AddStaticVehicle(560,1247.6035,-2024.0850,59.4836,269.9649,1,1); // mafia sultan

	AddStaticVehicle(560,1246.9521,-2043.0773,59.5033,88.0027,1,1); // mafia sultan

	AddStaticVehicle(409,1260.8840,-2007.7701,59.2925,91.5267,1,1); // mafia limuzinas

	AddStaticVehicle(487,1118.0510,-2052.8110,74.6033,359.0276,1,1); // mafia maverick

	AddStaticVehicle(487,1117.4603,-2020.3920,74.6054,177.4089,1,1); // mafia maverick

	AddStaticVehicle(561,2078.2407,-1177.2708,23.6474,356.1435,54,38); // miestas

	AddStaticVehicle(576,2497.3071,-1058.9734,69.2863,175.6956,6,6); // vagos tornado

	AddStaticVehicle(576,2502.9937,-1030.9281,69.4980,355.5020,6,6); // vagos tornado

	AddStaticVehicle(576,2518.1006,-1034.9027,69.1581,88.2335,6,6); // vagos tornado

	AddStaticVehicle(549,2490.2346,-1053.2371,67.9128,248.0749,6,6); // vagos tampa

	AddStaticVehicle(549,2477.3135,-1055.9729,66.3357,345.2494,6,6); // vagos tampa

	AddStaticVehicle(474,2645.8445,-1988.7544,13.3150,358.0437,93,93); // Aztecas

	AddStaticVehicle(474,2659.4619,-2010.4716,13.3172,87.1972,93,93); // aztecas

	AddStaticVehicle(474,2651.8950,-1996.7585,13.3173,269.5836,93,93); // aztecas

	AddStaticVehicle(536,2655.8152,-2007.9550,13.1205,88.4698,93,93); // aztecas

	AddStaticVehicle(536,2662.2800,-1987.8608,13.2896,2.6622,93,93); // aztecas

	AddStaticVehicle(432,277.4998,1989.2408,17.6715,268.5227,43,0); // army tank

	AddStaticVehicle(432,281.1252,2022.2577,17.6759,268.6625,43,0); // army tank

	AddStaticVehicle(433,301.7500,1863.8750,18.1161,360.0000,43,0); // barracks army

	AddStaticVehicle(470,304.7514,1839.3782,17.6000,336.0914,43,0); // patriot army

	AddStaticVehicle(548,296.0880,1925.9004,19.3103,236.2530,1,1); // cargobob army

	AddStaticVehicle(520,307.2206,1990.2145,18.3639,319.3066,0,0); // hydra army

	AddStaticVehicle(520,307.4964,2031.6863,18.3639,328.3982,0,0); // hydra army


	//-------------------Classes----------------------
	/*
	    AddPlayerClassEx ... the first number is the team number
	    however the sa-mp fuckers didnt allow the anti-TK just to simply work
	    with just this ... so when a player spawns you have to set their
	    team number using SetPlayerTeam and then it shall work...
	*/
	AddPlayerClassEx(1 ,287,316.1606,1974.3752,17.6406,98.8389,1,0,30,300,28,200); // army skin
	AddPlayerClassEx(2 ,159,-47.8757,30.3243,6.4844,338.9877,6,0,25,100,28 ,200); // fermeris
	AddPlayerClassEx(2 ,161,-47.8757,30.3243,6.4844,338.9877,6,0,25,100,28 ,200); // fermeris
	AddPlayerClassEx(2 ,158,-47.8757,30.3243,6.4844,338.9877,6,0,25,100,28 ,200); // fermeris
	AddPlayerClassEx(3 ,105,2495.4573,-1688.0197,13.5447,5.8084,4,0,31,200,28,200); // Grove
	AddPlayerClassEx(3 ,106,2495.4573,-1688.0197,13.5447,5.8084,4,0,31,200,28,200); // Grove
	AddPlayerClassEx(3 ,107,2495.4573,-1688.0197,13.5447,5.8084,4,0,31,200,28,200); // Grove
	AddPlayerClassEx(4 ,102,2101.2529,-1290.6940,24.0159,189.4488,5,0,30,200,28,200); // Ballas
	AddPlayerClassEx(4 ,103,2101.2529,-1290.6940,24.0159,189.4488,5,0,30,200,28,200); // Ballas
	AddPlayerClassEx(4 ,104,2101.2529,-1290.6940,24.0159,189.4488,5,0,30,200,28,200); // Ballas
	AddPlayerClassEx(5 ,108,2510.6824,-1041.7144,69.4176,174.1049,24,50,30,200,28,200); // Vagos
	AddPlayerClassEx(5 ,109,2510.6824,-1041.7144,69.4176,174.1049,24,50,30,200,28,200); // Vagos
	AddPlayerClassEx(5 ,110,2510.6824,-1041.7144,69.4176,174.1049,24,50,30,200,28,200); // Vagos
	AddPlayerClassEx(6 ,114,2637.7361,-1992.5823,13.9935,228.2397,18,10,27,100,28,200); // Aztecas
	AddPlayerClassEx(6 ,115,2637.7361,-1992.5823,13.9935,228.2397,18,10,27,100,28,200); // Aztecas
	AddPlayerClassEx(6 ,116,2637.7361,-1992.5823,13.9935,228.2397,18,10,27,100,28,200); // Aztecas
	AddPlayerClassEx(7 ,120,1128.7726,-2037.4619,69.4292,264.8338,23,100,34,15,28,200); // mafia
	AddPlayerClassEx(7 ,117,1128.7726,-2037.4619,69.4292,264.8338,23,100,34,15,28,200); // mafia
	AddPlayerClassEx(7 ,113,1128.7726,-2037.4619,69.4292,264.8338,23,100,34,15,28,200); // mafia
	//--------------------------------------------

	AddStaticPickup(342,2,2505.9458,-1695.2386,17.9575);
	AddStaticPickup(1240,2,2494.5295,-1695.2653,1014.7422);
	AddStaticPickup(1242,2,2493.9739,-1701.5532,1014.7458);
	AddStaticPickup(359,2,2316.9731,-1639.5173,18.5078);
	AddStaticPickup(1240,2,1549.4856,-1366.2548,326.2109); // auksciausias pastatas gyvybes


	AddStaticPickup(1240,2,1549.4856,-1366.2548,326.2109); // auksciausias pastatas gyvybes
	AddStaticPickup(1242,2,1546.7368,-1366.5299,326.2109); // auksciausias pastatas armoras
	AddStaticPickup(356,2,1533.6681,-1357.9662,329.4533); // auksciausias pastatas m4a1
	AddStaticPickup(356,2,1557.3652,-1355.9114,329.4609); // auksciausias pastatas givybes
	AddStaticPickup(356,2,1545.4326,-1343.9384,329.4632); // auksciausias pastatas m4a1
	AddStaticPickup(1240,2,1126.7008,-2034.1008,69.8850); // Mafia givybes
	AddStaticPickup(1242,2,1127.0662,-2040.3567,69.8820); // Mafia armoras
	AddStaticPickup(356,2,1125.7281,-2060.7253,69.0078); // Mafia m4a1
	AddStaticPickup(1240,2,2090.5693,-1282.7156,25.5014); // givybes ballas
	AddStaticPickup(1242,2,2087.8813,-1283.0499,25.4972); // armoras ballas
	AddStaticPickup(361,2,2108.1511,-1287.7510,25.4922); // flamethroweris ballas
	AddStaticPickup(1240,2,2506.9856,-1027.4879,70.0859); // vagos givybes
	AddStaticPickup(1242,2,2510.6489,-1027.9952,70.0859); // vagos armoras
	AddStaticPickup(344,2,2511.3401,-1023.2661,73.5667); // vagos ginklas
	AddStaticPickup(351,2,2228.5842,-1183.7975,33.5313); // dm1 stogas
	AddStaticPickup(1242,2,2220.3279,-1190.2911,33.5313); // dm1 stogas armoras
	AddStaticPickup(1240,2,2220.3279,-1190.2911,33.5313); // dm1 stogas givybes
	AddStaticPickup(351,2,2196.2957,-1176.4150,33.5313); // dm1 stogas ginklas
	AddStaticPickup(1240,2,2190.0752,-1168.1716,33.5313); // dm1 stogas givybes
	AddStaticPickup(1242,2,2190.0752,-1168.1716,33.5313); // dm1 stogas armoras
	AddStaticPickup(351,2,2204.0681,-1142.0187,33.5313); // dm1 stogas ginklas
	AddStaticPickup(351,2,2196.3342,-1181.3402,33.5313); // dm1 stogas ginklas
	AddStaticPickup(1240,2,2636.0781,-1995.1969,13.9935); // aztecas givybes
	AddStaticPickup(1242,2,2639.5115,-1990.8138,13.9935); // aztecas armoras
	AddStaticPickup(358,2,2652.8621,-1987.6575,18.4694); // aztecas ginklas
	AddStaticPickup(370,2,2494.7593,-1829.5382,8.3312); // miestas ginklas
	AddStaticPickup(358,2,2838.5469,-2370.4751,31.0078); // laivas ginklas sniperis
	AddStaticPickup(1240,2,2850.9214,-2370.0310,28.6817); // laivas givybes
	AddStaticPickup(1242,2,2850.9214,-2370.0310,28.6817); // laivas armoras
	AddStaticPickup(356,2,2830.0928,-2353.2981,19.2058); // laivas m4a1
	AddStaticPickup(355,2,2830.9749,-2386.2952,20.4104); // laivas kalasas
	AddStaticPickup(1240,2,2836.6616,-2412.7239,15.7122); // laivas givybes
	AddStaticPickup(1241,2,2834.1538,-2412.9116,15.7122); // laivas armoras
	AddStaticPickup(356,2,2830.6516,-2508.8989,17.5051); // laivas m4a1
	AddStaticPickup(346,2,2844.9409,-2510.6187,20.4104); // laivas pistol
	AddStaticPickup(1240,2,2837.6047,-2518.8623,21.2115); // laivas givybes
	AddStaticPickup(1242,2,2837.6047,-2518.8623,21.2115); // laivas armoras
	AddStaticPickup(1240,2,-36.8787,51.7989,6.4844); // kaimas givybes
	AddStaticPickup(1242,2,-42.1977,54.1125,6.4844); // kaimas armoras
	AddStaticPickup(343,2,-40.6906,52.2078,3.1172); // kaimas ginklas


}

public OnGameModeExit()
{
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{

 	SetPlayerInterior(playerid,11);
 	SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
    SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
 	SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
 	SetPlayerFacingAngle(playerid,0.0);

    if(classid == 0){
      gTeam[playerid] = TEAM_Army;
      GameTextForPlayer(playerid, "~b~Army", 1000, 6);}
    else if(classid == 1 || classid == 2 || classid == 3){
      gTeam[playerid] = TEAM_Farmers;
      GameTextForPlayer(playerid, "~w~Farmers", 1000, 6);}
    else if(classid == 4 || classid == 5 || classid == 6){
      gTeam[playerid] = TEAM_Grove;
      GameTextForPlayer(playerid, "~n~Grove", 1000, 6);}
    else if(classid == 7 || classid == 8 || classid == 9){
      gTeam[playerid] = TEAM_Ballas;
      GameTextForPlayer(playerid, "~r~Ballas", 1000, 6);}
    else if(classid == 10 || classid == 11 || classid == 12){
      gTeam[playerid] = TEAM_Vagos;
      GameTextForPlayer(playerid, "~g~Vagos", 1000, 6);}
    else if(classid == 13 || classid == 14 || classid == 15){
      gTeam[playerid] = TEAM_Aztecas;
      GameTextForPlayer(playerid, "~p~Aztecas", 1000, 6);}
    else if(classid == 16 || classid == 17 || classid == 18){
      gTeam[playerid] = TEAM_Mafia;
      GameTextForPlayer(playerid, "~y~Mafia", 1000, 6);}

	return 1;
}



	public OnPlayerRequestSpawn(playerid)
{
    SetPlayerInterior(playerid,0);
    if(gTeam[playerid] == TEAM_Army)
       SetPlayerColor(playerid, 0x804000FF);
    else if(gTeam[playerid] == TEAM_Farmers)
       SetPlayerColor(playerid, 0x000000DD);
    else if(gTeam[playerid] == TEAM_Grove)
       SetPlayerColor(playerid, 0x00FF00FF);
    else if(gTeam[playerid] == TEAM_Ballas)
       SetPlayerColor(playerid, 0xF200F2FF);
    else if(gTeam[playerid] == TEAM_Vagos)
       SetPlayerColor(playerid, 0xFFFF00AA);
    else if(gTeam[playerid] == TEAM_Aztecas)
       SetPlayerColor(playerid, 0x00FFFFFF);
    else if(gTeam[playerid] == TEAM_Mafia)
       SetPlayerColor(playerid, 0x0000FFFF);

	return 1;
}

public OnPlayerConnect(playerid)
{
    // Text Draw
    AllowPlayerTeleport(playerid,0);
	new Text: gText;
	gText = TextDrawCreate(5.0, 431.0, "~y~Use /report id and reason if you see a cheater or rule breaker.");
	TextDrawUseBox(gText, true);
	TextDrawShowForPlayer(playerid, gText);
	Visitors ++;
	new tmp[255],player[24];
	GetPlayerName(playerid,player,sizeof(player));
	format(tmp,sizeof(tmp),"%s (%d) Connected The Server.",player,playerid);SendClientMessageToAll(COLOR_GREY,tmp);

	printf("OnPlayerConnect(%d)", playerid);
	SendClientMessage(playerid, COLOR_LIGHTBLUE, "**Welcome to Los Santos Gang Wars [TDM] Server! ");
	SendClientMessage(playerid, COLOR_YELLOW, "**New to the server? Please /register an account. ");
	SendClientMessage(playerid, COLOR_YELLOW, "**Already registered? Please /login.");
	SendClientMessage(playerid, COLOR_YELLOW, "**Type /rules for list of rules.");
	SendClientMessage(playerid, COLOR_LIGHTBLUE, "**Now recruiting, visit www.uvhclan.com ");
	GameTextForPlayer(playerid,"~G~Los Santos Gang War!",3000,5);

	//gang zones
	GangZoneShowForPlayer(playerid, Grove1, 0x00FF0072);
	GangZoneShowForPlayer(playerid, Army2, 0x8040008F);
	GangZoneShowForPlayer(playerid, Mafia1, 0x0000FF74);
	GangZoneShowForPlayer(playerid, Ballas1, 0xCE16E976);
	GangZoneShowForPlayer(playerid, Vagos1, 0xFFFF0076);
	GangZoneShowForPlayer(playerid, Aztecas1, 0x00FFFF7C);
	GangZoneShowForPlayer(playerid, Vagos2, 0xFFFF0078);
	GangZoneShowForPlayer(playerid, Army1, 0x8040008F);
	GangZoneShowForPlayer(playerid, Grove2, 0x00FF007D);
	GangZoneShowForPlayer(playerid, Mafia2, 0x0000FF74);
	GangZoneShowForPlayer(playerid, Ballas2, 0x80008073);
	GangZoneShowForPlayer(playerid, Aztecas2, 0x00FFFF78);
	GangZoneShowForPlayer(playerid, Farmers1, 0x00000083);
	GangZoneShowForPlayer(playerid, Aztecas3, 0x00FFFF7D);
	GangZoneShowForPlayer(playerid, Mafia3, 0x0000FF74);
	GangZoneShowForPlayer(playerid, Farmers, 0x0000008B);
	GangZoneShowForPlayer(playerid, Vagos, 0xFFFF007C);
	GangZoneShowForPlayer(playerid, Ballas3, 0x80008070);
	GangZoneShowForPlayer(playerid, Grove3, 0x00FF007D);
	GangZoneShowForPlayer(playerid, Mafia4, 0x0000FF7C);
	GangZoneShowForPlayer(playerid, Aztecas4, 0x00FFFF81);
	GangZoneShowForPlayer(playerid, Ballas4, 0x80008070);
	GangZoneShowForPlayer(playerid, Army4, 0x80400096);
	GangZoneShowForPlayer(playerid, Farmers3, 0x00000083);
	GangZoneShowForPlayer(playerid, Army5, 0x8040008F);
	GangZoneShowForPlayer(playerid, Niekeno, 0xFFFFFF91);


	GameTextForPlayer(playerid,"~y~Los Santos ~r~Gang Wars",2500,5);
	GivePlayerMoney(playerid, 10000);
	SetPlayerColor(playerid, COLOR_GREY); // Set the player's color to inactive

	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
	new pname[MAX_PLAYER_NAME],pmsg[256];
	GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
	format(pmsg,256,"%s left server",pname);
	for(new j=0;j<MAX_PLAYERS;j++){
		if(j!=playerid){
			SendClientMessage(j,COLOR_WHITE,pmsg);
		}
	}
	for(new i = 0; i < MAX_SPAWNWEAPONS;i++) playerWeapons[playerid][i]=0;
	return 1;
}

public OnPlayerSpawn(playerid)
{
	//newly added for anti-TK
	SetPlayerTeam(playerid, GetPlayerTeam(playerid));




	if(gTeam[playerid] == TEAM_Farmers) {
		SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,playerid,1,1); // objective; locked
	    GameTextForPlayer(playerid,
		   "Defend ~g~FARMERS ~w~Teams's ~r~Money Truck",
		   6000,5);
	}
		else if(gTeam[playerid] == TEAM_Mafia) {
		SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,playerid,1,0); // objective; unlocked
	    SetPlayerCheckpoint(playerid,834.8496,-2053.5127,15,10.0);
	    GameTextForPlayer(playerid,
		   "Catch ~g~FARMERS ~w~Teams's ~r~Money Truck",
		   6000,5);
	}
	if(X1[playerid] == 0) {}
	else
	{
	    SetPlayerPos(playerid,X1[playerid],Y1[playerid],Z1[playerid]);
	}
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(GetPlayerState(killerid))
	{
			new name[24],name1[24];
 			new string1[150];
			GetPlayerName(killerid,name,24);
  			GetPlayerName(playerid,name1,24);
  			SetPlayerHealth(killerid,0);
			format(string1,sizeof(string1), "%s drivebyed %s",name,name1);
			for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerAdmin(i))
			{
				SendClientMessage(i,COLOR_PINK,string1);
				return 0;
			}
		    GetPlayerPos(playerid,X1[playerid],Y1[playerid],Z1[playerid]);
	}
	else
	{
		X1[playerid] = 0;
		Y1[playerid] = 0;
		Z1[playerid] = 0;
	}
	if	(killerid == INVALID_PLAYER_ID)
		{
 		}
 	else
	 	{
        if	(gTeam[killerid] != gTeam[playerid])
			{
	    	// Valid kill
			GivePlayerMoney(killerid, 10000);
   			exp[killerid] ++;
        	SetPlayerScore(killerid, exp[killerid]);
        	new Kzone = IsInZone(killerid);
        	new Vzone = IsInZone(playerid);
        	if ((Kzone!=-1)&&(Kzone==Vzone)&&(gTeam[killerid]!=ZoneOwner[Kzone])&&(UnderAttack[Kzone]==0))
        	    {
        	    UnderAttack[Kzone]=gTeam[killerid];
       	    	for (new i=0;i<MAX_PLAYERS;i++)
				    {
				    if 	(gTeam[i]==gTeam[killerid])
						{
						GameTextForPlayer(i,"ATACK!",5000,5);
						SendClientMessage(i,COLOR_BRIGHTRED,"FIRST GANG WHICH WILL KILL 10 ENEMIES IN AREA.WILL WIN!");
						GangZoneFlashForPlayer(i,Kzone,COLOR_BRIGHTRED);
						}
					if	(gTeam[i]==ZoneOwner[Kzone])
					    {
					    GameTextForPlayer(i,"YOU ARE ATACKED!",5000,5);
					    SendClientMessage(i,COLOR_BRIGHTRED,"FIRST GANG WHICH WILL KILL 10 ENEMIES IN AREA.WILL WIN!");
						GangZoneFlashForPlayer(i,Kzone,COLOR_BRIGHTRED);
					    }
				    }
   	    		}
			if (UnderAttack[Kzone]>0)
			    {
			    if 	((UnderAttack[Kzone]==gTeam[killerid])||(gTeam[playerid]==ZoneOwner[Kzone]))
			        {
                    KillCount[gTeam[killerid]][Kzone]++;
                    if (KillCount[gTeam[killerid]][Kzone]==10)
                        {
                        UnderAttack[Kzone]=-1;
                        SetTimerEx("unsafe",300000,0,"d",Kzone);
                        KillCount[gTeam[killerid]][Kzone]=0;
                        KillCount[gTeam[playerid]][Kzone]=0;
                        new color=getColor(killerid);
                        GangZoneShowForAll(Kzone,color);
              	    	for (new i=0;i<MAX_PLAYERS;i++)
						    {
						    if 	(gTeam[i]==gTeam[killerid])
								{
								GameTextForPlayer(i,"WE TOOK THAT SHIT!",5000,5);
								SendClientMessage(i,COLOR_BRIGHTRED,"ZONE WILL BE SAFE FOR 5 MINUTES.");
								GangZoneStopFlashForPlayer(i,Kzone);
								}
							if	(gTeam[i]==ZoneOwner[Kzone])
							    {
							    GameTextForPlayer(i,"WE LOST OUR HOOD!",5000,5);
           						SendClientMessage(i,COLOR_BRIGHTRED,"YOU HAVE TO WAIT FOR 5 MINUTES BEFORE ATTACKING.");
								GangZoneStopFlashForPlayer(i,Kzone);
							    }
						    }
                        }
					else
					    {
					    new kill =10 - KillCount[gTeam[killerid]][Kzone];
				     	format(TEXT,sizeof(TEXT),"We still have to kill %d enemies",kill);
				     	SendClientMessage(killerid,COLOR_BRIGHTRED,TEXT);
					    }
			        }
			    }
			}
		else
		{
			//Team Killer!
			new warning[256];
			format(warning, sizeof(warning), "You just team killed HAUR!");
			SendClientMessage(killerid, 0xFFFF00AA, warning);
			GivePlayerMoney(killerid, -10000);
			SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
		}
	}
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	if(strcmp(text[0],"@",true) == 0)
	{
		if(IsPlayerAdmin(playerid))
		{
			for(new i=0; i<MAX_PLAYERS; i++) if(IsPlayerAdmin(i))
			{
			    new string1[150];
				new name[24];
			    GetPlayerName(playerid,name,24);
				format(string1,sizeof(string1), "[AChat]%s: %s",name,text[1]);
				SendClientMessage(i,COLOR_PINK,string1);
				return 0;
			}
		}
	}
	return 1;
}

public OnPlayerPrivmsg(playerid, recieverid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256];
	new weaponid;
	new idx;
	cmd = strtok(cmdtext, idx);
	
	if (strcmp(cmdtext, "/rules", true)==0)
	{

		SendClientMessage(playerid, COLOR_LIGHTBLUE, "--------------------------------Server Commands--------------------------------");
		SendClientMessage(playerid, COLOR_ORANGE, "**/admins | Beta stages please report any bugs you might see.");
		SendClientMessage(playerid, COLOR_LIGHTBLUE, "--------------------------------Server Rules--------------------------------");
		SendClientMessage(playerid, COLOR_BRIGHTRED, "**Two shot is allowed.");
		SendClientMessage(playerid, COLOR_ORANGE, "**No drive by shooting.");
		SendClientMessage(playerid, COLOR_ORANGE, "**No mods allowed. It can effect gameplay.");
		SendClientMessage(playerid, COLOR_ORANGE, "**No hacks/cheats allowed. Instant Ban!");
		SendClientMessage(playerid, COLOR_BRIGHTRED, "** Have fun on the server!");
		return 1;
	}
	
	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, "You need to be in an Ammunation to purchase weapons.");
			return 1;
		}
		if(GetPlayerMoney(playerid) < spawnWeapons[weaponid][2]) {
			SendClientMessage(playerid, COLOR_RED, "You don't have enough money!");
			return 1;
		}
		if(weaponid < 0 || weaponid > MAX_SPAWNWEAPONS-1){
			SendClientMessage(playerid, COLOR_RED, "Invalid weapon number.");
			return 1;
		}

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

		GivePlayerWeapon(playerid, spawnWeapons[weaponid][0], spawnWeapons[weaponid][1]);
		playerWeapons[playerid][weaponid]++;

		GivePlayerMoney(playerid, 0-spawnWeapons[weaponid][2]);
		return 1;
	}
	//--------------------------------------------
    new visitorstr[256];
	if (strcmp(cmdtext, "/users", true)==1)
 	{
		format(visitorstr, sizeof(visitorstr), "This server today had %d users until last restart", Visitors);
		SendClientMessage(playerid, COLOR_GREEN, visitorstr);
		return 1;
	}

	if (strcmp(cmdtext, "/resetvisitors", true) == 0) {
		if(IsPlayerAdmin(playerid) == 1) {
			Visitors = 0;
		}
		else {
			SendClientMessage(playerid, COLOR_RED, "You are not permitted to reset the visitors counter");
        }
    	eturn 1;
	}

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

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

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

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

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

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

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

					playerGang[playerid]=i;

					return 1;
				}
			}

			return 1;

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

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

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

				gangInvite[playerid]=0;

				gangMembers[gangnum][i] = playerid;

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

				gangInfo[gangnum][1]++;
				playerGang[playerid] = gangnum;
				SetPlayerColor(playerid,gangInfo[gangnum][2]);
				format(string, sizeof(string),"You have joined the gang '%s' (id: %d)", gangNames[gangnum], gangnum);
				SendClientMessage(playerid, COLOR_GREEN, string);

				return 1;
			}

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

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

			if(playerGang[playerid]==0) {
				SendClientMessage(playerid, COLOR_RED, "You are not in a gang!");
				return 1;
			}
			if(IsPlayerConnected(giveplayerid)) {
				GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
				GetPlayerName(playerid, sendername, sizeof(sendername));

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

				gangInvite[giveplayerid]=playerGang[playerid];

			} else
				SendClientMessage(playerid, COLOR_RED, "No such player exists!");
		} else if (gangcmd==4) {
		    PlayerLeaveGang(playerid);
		}

		return 1;
	}

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

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

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

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

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

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

		return 1;
	}

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

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

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

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

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

		return 1;
	}


	if(strcmp(cmdtext, "/report", true) == 0) {
	    new string[150],name[24];
	    GetPlayerName(playerid,name,24);
		if(strlen(cmdtext) < 8) return SendClientMessage(playerid,COLOR_GREY,"Sintax: /report [report to send]");
		format(string,sizeof(string),"[Report] %s - (%s)",name,cmdtext[8]);
		for(new i=0; i<MAX_PLAYERSl i++) if(IsPlayerAdmin(i)) {
		    SendClientMessage(i,COLOR_RED,string);
			return 1;
		}
		SendClientMessage(playerid,COLOR_RED,"Report sent to online admins!");
		return 1;
	}

	if(strcmp(cmd, "/drop", true) == 0 && IsPlayerAdmin(playerid) == 1)
	{
	    new Float:x2,Float:y2,Float:z2,string[80],name[24];
		cmd = strtok(cmdtext,idx);
		if(!strlen(cmd)) return SendClientMessage(playerid,COLOR_GREY,"Sintax: /drop [id]");
		if(!IsNumeric(cmd)) return SendClientMessage(playerid,COLOR_RED,"Enter numbers only please!");
		GetPlayerPos(strval(cmd),x2,y2,z2);
		SetPlayerPos(strval(cmd),x2,y2,z2+10);
		GetPlayerName(strval(cmd),name,24);
		format(string,sizeof(string),"You dropped %s from 10 feet.",name);
		SendClientMessage(playerid,COLOR_GREEN,string);
		return 1;
	}

    new string[256];
    if (strcmp(cmdtext, "/buylevel", true) == 0) {
	if(level[playerid] >= 1) {
	if(XP[playerid] == 4) {
	GivePlayerMoney(playerid, -50000);
	level[playerid] ++;
	XP[playerid] = 0;
	GameTextForPlayer(playerid, "~g~You leveled up!", 5000, 5);
	}
	}
	if(level[playerid] == 1) {
		if(XP[playerid] < 4) {
			format(string, sizeof(string), "you need 4 XP, you currently have %d", XP[playerid]);
			SendClientMessage(playerid, COLOR_RED, string);
		}
	}
	if(level[playerid] == 2) {
	if(XP[playerid] >= 7) {
	GivePlayerMoney(playerid, -75000);
	level[playerid] ++;
	XP[playerid] = 0;
	GameTextForPlayer(playerid, "~g~You leveled up!", 5000, 5);
	}
	}
	if(level[playerid] == 2) {
	if(XP[playerid] < 7) {
	format(string, sizeof(string), "you need 7 XP, you currently have %d", XP[playerid]);
	SendClientMessage(playerid, COLOR_RED, string);
	}
	}

	return 1;
	}

	if (strcmp(cmdtext, "/morexp", true) == 0) {
	XP[playerid] ++;
	format(string, sizeof(string), "you gained XP, your XP is now %d", XP[playerid]);
	SendClientMessage(playerid, COLOR_GREY, string);
	return 1;
	}



	//---------------------------
	if (strcmp(cmdtext, "/level", true) == 0)
		{
		format(string, sizeof(string), "Level: %d, XP: %d", level[playerid], XP[playerid]);
		SendClientMessage(playerid, COLOR_GREY, string);
		return 1;
		}

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

	if 	(strcmp(cmdtext, "/lock", true)==0)
		{
		if	(IsPlayerInAnyVehicle(playerid))
			{
			new State=GetPlayerState(playerid);
			if	(State!=PLAYER_STATE_DRIVER)
				{
				SendClientMessage(playerid,0xFFFF00AA,"You can Lock car Only While In Car.");
				return 1;
				}
			new i;
			for	(i=0;i<MAX_PLAYERS;i++)
				{
				if(i != playerid)
					{
					SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 1);
					}
				}
			SendClientMessage(playerid, 0xFFFF00AA, "Car Locked!");
			new Float:pX, Float:pY, Float:pZ;
			GetPlayerPos(playerid,pX,pY,pZ);
			PlayerPlaySound(playerid,1056,pX,pY,pZ);
			}
		else
			{
			SendClientMessage(playerid, 0xFFFF00AA, "You Are Not In Car!");
			}
		return 1;
		}
	if (strcmp(cmdtext,"/zwh",true)==0)
	GameTextForAll(
	"z e r u e l  w a s  h e r e",10000,5);
	if 	(strcmp(cmdtext, "/unlock", true)==0)
		{
		if	(IsPlayerInAnyVehicle(playerid))
			{
			new State=GetPlayerState(playerid);
			if	(State!=PLAYER_STATE_DRIVER)
				{
				SendClientMessage(playerid,0xFFFF00AA,"You Can Unlock Door While Being Only An Driver.");
				return 1;
				}
			new i;
			for	(i=0;i<MAX_PLAYERS;i++)
				{
				SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i, 0, 0);
				}
			SendClientMessage(playerid, 0xFFFF00AA, "Car Locked!");
			new Float:pX, Float:pY, Float:pZ;
			GetPlayerPos(playerid,pX,pY,pZ);
			PlayerPlaySound(playerid,1057,pX,pY,pZ);
			}
		else
			{
			SendClientMessage(playerid, 0xFFFF00AA, "You Are Not In Car!");
			}
		return 1;
		}

	if 	(strcmp(cmdtext, "/purchase", true)==0) // to set the vehicle that you register to be teleported
		{
	    if 	(GetPlayerMoney(playerid) < 5000)
	    	{
			SendClientMessage(playerid,COLOR_YELLOW,"You dont have cash to buy an car.");
			}
		else
			{
			if (IsPlayerInAnyVehicle(playerid) == 1)
				{
				SetVehicleToRespawn(ownedcar[playerid]);
				ownedcar[playerid] = GetPlayerVehicleID(playerid);
				owner[ownedcar[playerid]] = playerid;
				SendClientMessage(playerid,COLOR_YELLOW,"Congratulations.You Have New Car.");
				GivePlayerMoney(playerid,-15000);
				}
			else
				{
	   			SendClientMessage(playerid,COLOR_YELLOW,"You Have To Be In Car To Buy It.");
				}
		}
		return 1;
	}
	if 	(strcmp(cmdtext, "/callmycar", true)==0)
		{
	    if (ownedcar[playerid] != 0)
	    	{
     	    if (GetPlayerMoney(playerid) < 500)
		    	{
				SendClientMessage(playerid,COLOR_RED,"You Dont Have Cash For It .You Need 500$.");
				}
			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. //Z E R U E L A N G E L!
		    	SendClientMessage(playerid,COLOR_GREEN,"Heres Your Car.");
		    	GivePlayerMoney(playerid,-500);
				}
	    	}
		return 1;
		}
 	return 0;
	}






public OnPlayerInfoChange(playerid)
{
	return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	new vehicleid;

	if(newstate == PLAYER_STATE_DRIVER)
	{
		vehicleid = GetPlayerVehicleID(playerid);

		if(gTeam[playerid] == TEAM_Mafia && vehicleid == OBJECTIVE_VEHICLE_BLUE)
		{ // It's the objective vehicle
		    SetPlayerColor(playerid,OBJECTIVE_COLOR);
		    GameTextForPlayer(playerid,"~w~Take The  ~r~Money Truck ~w~back To Place!",3000,5);
		    gObjectiveBluePlayer = playerid;
		}
	}
	else if(newstate == PLAYER_STATE_ONFOOT)
	{

		if(playerid == gObjectiveBluePlayer) {
		    gObjectiveBluePlayer = (-1);
		}
	}

    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
 	new playervehicleid = GetPlayerVehicleID(playerid);

 	if(gObjectiveReached) return;

	if(playervehicleid == OBJECTIVE_VEHICLE_BLUE && gTeam[playerid] == TEAM_Mafia)
	{   // Blue OBJECTIVE REACHED.
	    GameTextForAll("~b~Mafia ~w~wins!",3000,5);
	    gObjectiveReached = 3;
	    SetPlayerScore(playerid,GetPlayerScore(playerid)+5);
	    SetTimer("ExitTheGameMode", 4000, 0); // Set up a timer to exit this mode.
	    return;
	}
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

GetRandomWeather(weather, ...) {
	new random_weather = weather, count = 0, len = numargs() - 1;
	if(len > 0) {
		do {
			random_weather = getarg(random(len*1000)/1000);
			count++;
		} while(random_weather == weather && count < 10);  // try up to 10 times to get a random weather
	}
	return random_weather;
}

GetSequencedWeather(hour) {
	static weather = 10;
	switch(weather) {  // only normal weather changes are possible, eg clouds before rain and no sandstorm after rain
		case 0 .. 7, 10: {      // blue skies/clouds
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,36,37,38,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15,20,27,28,29);
			}
		}
		case 8: {               // stormy
			weather = GetRandomWeather(weather,8,9,16,20,21,22,30,31,32,33);
		}
		case 9: {               // cloudy and foggy
			switch(hour) {
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,20,27,28,29,30,31,32,33);
			}
		}
		case 11, 17, 18: {      // scorching hot/bright
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,26,37,38,39);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
			}
		}
		case 12 .. 15: {        // very dull, colorless, hazy
			switch(hour) {
				case 16 .. 19: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20,21,22,33,35);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20);
			}
		}
		case 16: {              // dull, cloudy, rainy
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,16,20,33,35);
		}
		case 19: {              // sandstorm
			weather = GetRandomWeather(weather,8,16);
		}
		case 20: {              // foggy/greenish
			weather = GetRandomWeather(weather,9,16,20,21,22);
		}
		case 21, 22: {          // very dark, gradiented skyline, purple/green
			weather = GetRandomWeather(weather,8,16,20,21,22);
		}
		case 23 .. 26: {        // variations of pale orange
			switch(hour) {
				case 7 .. 11, 16 .. 20: GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,20,23,24,25,26,27,28,29,35,36,37,38);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15,20);
			}
		}
		case 27 .. 29: {        // variations of fresh blue
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,11,17,18,20,27,28,29,35,36,37,38,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15,20);
			}
		}
		case 30 .. 32: {        // variations of dark, cloudy, teal
			weather = GetRandomWeather(weather,8,9,16,20,21,22);
		}
		case 33: {              // dark, cloudy, brown
			switch(hour) {
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
			}
		}
		case 34: {              // blue/purple, regular
			weather = GetRandomWeather(weather,16,20,21,22);
		}
		case 35: {              // dull brown
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,11,17,18,35,36,37,38);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,23,24);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,12,13,14,15);
			}
		}
		case 36 .. 38: {        // bright, foggy, orange
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,11,17,18);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,23,24);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9);
			}
		}
		case 39: {              // extremely bright
			switch(hour) {
				case 11 .. 14: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10,11,17,18,27,28,29,39);
				case 17 .. 23: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10);
				default: weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,10);
			}
		}
		case 40 .. 42: {        // blue/purple cloudy
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,16,20);
		}
		case 43: {              // dark toxic clouds
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7);
		}
		case 44: {              // black/white sky
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
		case 45: {              // black/purple sky
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
		default: {
			weather = GetRandomWeather(weather,0,1,2,3,4,5,6,7,9,10,12,13,14,15);
		}
	}
	return weather;
}

public Timer_DayHeartbeat() {
	static hour = 0;
	SetWorldTime(hour);
	if(!(hour % 3)) SetWeather(GetSequencedWeather(hour));
	hour++, hour %= 24;
}
public PayDay()
{
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
	if(IsPlayerConnected(i))
	{
	    GameTextForPlayer(i, "~w~PAY~y~DAY ~n~ ~n~ ~b~200 $", 1000, 1);
	    GivePlayerMoney(i, 200);
	}
    }
}
public TimeFunction(playerid)
{
if(gHour < 24) {
if(gMinute < 60) {
gMinute ++;
if(gMinute == 60) {
gMinute = 0;
gHour ++;
if(gHour == 17) {
XP[playerid] ++;
}
}
}
}
else if(gHour == 24) {
gHour = 0;
}
SetWorldTime(gHour);
return 1;
}

public post_winners(winnerid)
{
	new i;
	//paralize all
	for(i = 0; i < MAX_PLAYERS ; i++)
	    if(IsPlayerConnected(i) && !IsPlayerAdmin(i))
	        TogglePlayerControllable(i,0);

	new string[256];
	new winners[3];  //3 first players' ids
	winners[0] = winnerid; //first place
	winners[1] = 255;      //second place
	winners[2] = 255;      //third place
	printf("1. %d 2. %d 3. %d", winners[0], winners[1], winners[2]);
	new winames[3][MAX_PLAYER_NAME]; //names of the winners

	GetPlayerName(winners[0], winames[0], MAX_PLAYER_NAME); //winner name

	new x = -100;
	for(i = 0; i < MAX_PLAYERS ; i++) //finding 2nd place.
	{
	    if (IsPlayerConnected(i) && GetPlayerScore(i) > x && i != winners[0])
	    {
	        x = GetPlayerScore(i);
	        winners[1] = i;
		}
	}
	if(winners[1] != 255) GetPlayerName(winners[1], winames[1], MAX_PLAYER_NAME); //if found 2nd place, get his name
	else winames[1] = "---";                                      //if not, just write ---

	x = -100;
	for(i = 0; i < MAX_PLAYERS ; i++) //finding 3rd place.
	{
	    if (IsPlayerConnected(i) && GetPlayerScore(i) > x && i != winners[0] && i != winners[1])
	    {
	        x = GetPlayerScore(i);
	        winners[2] = i;
		}
	}
	if(winners[2] != 255) GetPlayerName(winners[2], winames[2], MAX_PLAYER_NAME); //if found 3rd place, get his name
	else winames[2] = "---";                                      //if not, just write ---

	format(string, sizeof(string),"~w~1. ~b~%s   ~y~(%d)~n~~w~2. ~b~%s   ~y~(%d)~n~~w~3. ~b~%s   ~y~(%d)~n~", winames[0], GetPlayerScore(winners[0]), winames[1], GetPlayerScore(winners[1]), winames[2],GetPlayerScore(winners[2]));
    GameTextForAll(string,16000,3);
    SetTimer("GameModeExitFunc", 15000, 0);
}

IsNumeric(const string[])
{
	for (new i = 0, j = strlen(string); i < j; i++)
	{
	    if (string[i] > '9' || string[i] < '0') return 0;
	}
	return 1;
}

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;
         	    	}
	            }
	        }
		}
	}
}

stock getCheckpointType(playerID) return checkpointType[playerCheckpoint[playerID]];

stock 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;
}

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