All pastes #2090544 Raw Edit

Something

public text v1 · immutable
#2090544 ·published 2011-10-16 18:57 UTC
rendered paste body
#include <a_samp>
#include <dini>

#pragma dynamic 20480

#define GameModeText "SimpleDM v.0.3"

main() {}

forward AntiSpawnKill(playerid);
forward LoggingTimeoutT(playerid);
forward UnMutePlayerT(playerid);
forward WorldTimeUpdate();
forward SaveAllPlayers();
forward AreasCheck();
forward IdleCheck();
forward MoneyCheck();
forward FloodCheck();
forward MoneyForPlay();
forward CountDown0();
forward CountDown1();
forward CountDown2();
forward CountDown3();
forward CountDown4();
forward CountDown5();

#define TimeCycle 1
//#define SolidColorChat 1
#define AllowBadSymbolsInNicks 1
#define PlayersDir "simpledm/players/"
#define PlayersExt ".txt"
#define AdminsFile "simpledm/admins.txt"
#define AdminColor 0xFFFFFFFF
#define GameModeLog "simpledm/simpledm.log"
//#define CommandsLog "simpledm/commands.log"
#define AdminsLog "simpledm/admins.log"
#define MutesLog "simpledm/mutes.log"
#define KicksLog "simpledm/kicks.log"
#define BansLog "simpledm/bans.log"
#define MaxLogFileSize 10485760

#define PrivateMsgColor 0xFF0000AA
#define AdminChatColor 0xFFFF00AA
#define SystemMsgColor 0xFFFF00AA
#define ErrorMsgColor 0xFF0000AA
#define HelpMsgColor 0x00FF00AA
#define FreezeMsgColor 0xFF0000AA
#define MuteMsgColor 0xFF0000AA
#define KickMsgColor 0xFF0000AA
#define BanMsgColor 0xFF0000AA

#define MoneysForKill 1000
#define MoneysForPlaying 500

#define IdleTimeToKick 3
#define FloodInterval 2
#define FloodLines 3
#define LoggingTimeout 20
#define LoggingColor 0x22222200
#define AntiSpawnKillTime 5
#define LegalKillDistance 75
#define NoDriveBy 1
#define NoTeamKill 1
#define MaxMoneyIllegalIncrease 2000000
//#define InDoorWeapons 1
/*#define CheatWeapons 22
new CheatWeapon[CheatWeapons] = {1,2,6,7,9,10,11,12,13,14,15,16,17,18,22,26,28,32,33,37,38,41};*/
#define FlameCheatsToBan 3
#define DeathsFromCheatToBan 3
#define AdminLevelToIgnorePunishment 6

FixChars(string[]) for (new i=0;i<strlen(string);i++) if (string[i] < 0) string[i] += 256;

/*RuLower(string[]) {
	new result[MAX_STRING];
	copy(result,strlower(string),strlen(string));
	for (new i=0;i<strlen(result);i++) if (192 <= result[i] <= 223) result[i] += 32;
	return result;
}*/

WriteToLog(text[],file[]=GameModeLog) {
	new day,mon,year,hr,mn,sec;
	new str[MAX_STRING];
	getdate(year,mon,day);
	gettime(hr,mn,sec);
	format(str,sizeof(str),"%d.%d.%d [%d:%d:%d] %s",day,mon,year,hr,mn,sec,text);
	if (equal(file,GameModeLog,false)) print(str);
	new File:f = fopen(file,io_append);
	#if defined MaxLogFileSize
		if (flength(f) > MaxLogFileSize) {
			fclose(f);
			new tmp[MAX_STRING];
			format(tmp,sizeof(tmp),"%s_%d.%d.%d.log",file,day,mon,year);
			fcopytextfile(file,tmp);
			fremove(file);
			f = fopen(file,io_append);
		}
	#endif
	fwrite(f,str);
	fwrite(f,"\r\n");
	fclose(f);
}

WriteEcho(text[],playerid=INVALID_PLAYER_ID,color=SystemMsgColor) {
	new h,m,s;
	new str[MAX_STRING];
	gettime(h,m,s);
	format(str,sizeof(str),"[%d:%d:%d] %s",h,m,s,text);
	if (playerid != INVALID_PLAYER_ID && IsPlayerConnected(playerid)) SendClientMessage(playerid,color,str);
	else SendClientMessageToAll(color,str);
}

#define Teams 10
#if defined Teams
	#define ModelsInTeam 9
	enum TeamInfos {
		TeamName[20],
		TeamColor,
		TeamModels[ModelsInTeam],
		TeamClassStart,
		TeamClassEnd,
		TeamSpawnInterior,
		Float:TeamSpawnX,
		Float:TeamSpawnY,
		Float:TeamSpawnZ,
		Float:TeamSpawnA
	}
	new TeamInfo[Teams][TeamInfos] = {
	    {"~g~Groove",		0x7CFC00FF,	{105,106,107,195},						0,0,3,2495.8093,-1701.4963,1014.7422,0.1684},
		{"~p~Ballas",		0x800080FF,	{102,103,104,226},						0,0,15,2223.6843,-1147.2241,1025.7969,89.6632},
		{"~y~Vagos",		0xFFD700FF,	{108,109,110,190},						0,0,0,2793.6311,-1537.5637,10.9219,219.4087},
		{"~b~Aztecas",		0x00FFFFFF,	{114,115,116,233},						0,0,0,1779.4553,-1915.1685,13.3889,269.3371},
		{"~b~Police",		0x4682B4FF,	{280,281,282,283,284,285,286,287,191},	0,0,0,1529.5922,-1677.9790,5.8906,268.7291},
		{"~w~Goverment",	0x808080FF,	{165,166,295,141},						0,0,0,1249.7217,-2025.5818,59.7143,269.1162},
		{"~y~Da Nang Boys",	0xF0E68CFF,	{121,122,123,93},						0,0,0,325.3652,-1798.3684,4.7008,269.4659},
		{"~w~Rifa",			0xB0E0E6FF,	{173,174,175,211},						0,0,0,212.6294,-1442.5620,13.1636,222.5141},
		{"~r~Triad",		0xB22222FF,	{117,118,120,169},						0,0,0,1313.5397,-865.3055,39.5781,267.5482},
		{"~y~Criminals",	0xB8860BFF,	{28,29,30,192},							0,0,0,856.0395,-1520.4128,13.5547,265.0022}
	};
#endif

#define Classes 259
new ClassInfo[Classes] = {
	7,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,
	50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,83,84,85,87,88,89,90,91,92,
	93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,120,121,122,123,124,125,
	126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,150,151,152,153,154,155,156,
	157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,
	187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,209,210,211,212,213,214,215,216,217,
	218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,
	248,249,250,251,252,253,254,255,280,281,282,283,284,285,286,287,290,291,292,293,294,295,296,297,298,299
};

new DefaultPlayerColors[MAX_PLAYERS] = {
	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
};

#define Vehicles 254
enum VehicleInfos {
	VehicleModelID,
	Float:VehicleSpawnX,
	Float:VehicleSpawnY,
	Float:VehicleSpawnZ,
	Float:VehicleSpawnA,
	VehicleColor1,
	VehicleColor2
}
new VehicleInfo[Vehicles][VehicleInfos] = {
	{492,2488.168701,-1682.798095,13.335395,271.722106,86,1}, // Greenwood (ID: 1) // Groove Street
	{567,2508.157470,-1672.090942,13.378959,349.533935,86,-1}, // Savanna (ID: 2) // Groove Street
	{566,2482.753662,-1655.063964,13.309096,90.323776,86,-1}, // Tahoma (ID: 3) // Groove Street
	{482,2473.407958,-1699.544311,13.519279,359.456268,86,-1}, // Burrito (ID: 4) // Groove Street
	{475,2443.209716,-1642.994262,13.460376,180.146942,86,-1}, // Sabre (ID: 5) // Groove Street
	{566,2227.748779,-1173.421264,25.726562,91.503021,5,-1}, // Tahoma (ID: 6) // Motel Jefferson
	{567,2228.125732,-1162.914916,25.767463,90.980796,5,-1}, // Savanna (ID: 7) // Motel Jefferson
	{468,2217.522460,-1157.238159,25.726562,87.325241,5,-1}, // Sanchez (ID: 8) // Motel Jefferson
	{579,2205.773437,-1177.078857,25.726562,268.538085,5,-1}, // Huntley (ID: 9) // Motel Jefferson
	{482,2217.228515,-1166.083496,25.726562,90.273147,5,-1}, // Burrito (ID: 10) // Motel Jefferson
	{482,2796.360839,-1575.941040,10.927155,271.827880,6,-1}, // Burrito (ID: 11) // East Beach
	{475,2796.361083,-1567.129394,10.927155,269.216796,6,-1}, // Sabre (ID: 12) // East Beach
	{402,2807.477294,-1540.213378,10.921875,180.960388,6,-1}, // Buffalo (ID: 13) // East Beach
	{492,2822.060058,-1562.455444,10.927155,88.180908,6,1}, // Greenwood (ID: 14) // East Beach
	{567,2822.019042,-1553.378662,10.921875,91.137275,6,-1}, // Savanna (ID: 15) // East Beach
	{603,1795.320068,-1934.007202,13.274000,269.756439,51,-1}, // Phoenix (ID: 16) // Unity Station
	{534,1805.043579,-1921.249389,13.264128,0.720035,51,-1}, // Remington (ID: 17) // Unity Station
	{567,1793.350219,-1886.121093,13.269401,89.751121,51,-1}, // Savanna (ID: 18) // Unity Station
	{560,1775.841430,-1914.593750,13.258572,180.302734,51,-1}, // Sultan (ID: 19) // Unity Station
	{482,1838.001953,-1871.373168,13.255450,359.706909,51,-1}, // Burrito (ID: 20) // Unity Station
	{596,1535.970581,-1666.971801,13.188262,359.291046,-1,0}, // LSPD Police Car (ID: 21) // LSPD
	{596,1535.822998,-1678.474365,13.189436,359.291046,-1,0}, // LSPD Police Car (ID: 22) // LSPD
	{487,1561.646850,-1614.772460,13.559510,91.630447,0,1}, // Maverick (ID: 23) // LSPD
	{523,1601.414672,-1688.026367,5.696791,90.164779,0,-1}, // HPV1000 (ID: 24) // LSPD
	{523,1601.492065,-1691.986816,5.696719,91.491439,0,-1}, // HPV1000 (ID: 25) // LSPD
	{596,1587.453979,-1710.865600,5.695763,358.165405,-1,0}, // LSPD Police Car (ID: 26) // LSPD
	{596,1574.501342,-1710.236572,5.695737,359.649810,-1,0}, // LSPD Police Car (ID: 27) // LSPD
	{490,1530.038940,-1683.801269,5.697155,268.263702,0,-1}, // FBI Rancher (ID: 28) // LSPD
	{490,1545.517456,-1667.839477,5.694042,88.184928,0,-1}, // FBI Rancher (ID: 29) // LSPD
	{407,1751.650634,-1454.969604,13.351839,269.315338,-1,-1}, // Firetruck (ID: 30) // LSFD
	{407,1757.273925,-1484.091308,13.347614,247.498703,-1,-1}, // Firetruck (ID: 31) // LSFD
	{416,2020.521728,-1414.153808,16.797670,89.666770,-1,-1}, // Ambulance (ID: 32) // Hospital
	{416,2033.666503,-1431.295166,16.902194,358.661865,-1,-1}, // Ambulance (ID: 33) // Hospital
	{409,1244.272827,-2025.900878,59.659931,180.460601,0,0}, // Stretch (ID: 34) // Verdant Bluffs
	{490,1257.755371,-2010.788085,59.266197,180.460601,0,-1}, // FBI Rancher (ID: 35) // Verdant Bluffs
	{490,1267.860351,-2010.542358,58.977474,180.460601,0,-1}, // FBI Rancher (ID: 36) // Verdant Bluffs
	{426,1276.659301,-2030.210449,58.771591,89.707191,0,-1}, // Premier (ID: 37) // Verdant Bluffs
	{482,1276.537597,-2039.880126,58.810909,90.653999,0,-1}, // Burrito (ID: 38) // Verdant Bluffs
	{500,314.998229,-1788.702636,4.348239,180.305267,61,-1}, // Mesa (ID: 39) // Santa Maria Beach
	{587,324.641326,-1789.121826,4.501376,180.305267,61,-1}, // Euros (ID: 40) // Santa Maria Beach
	{405,347.111938,-1809.621582,4.234993,0.546290,61,-1}, // Sentinel (ID: 41) // Santa Maria Beach
	{542,334.075195,-1808.767578,4.221151,0.546290,61,-1}, // Clover (ID: 42) // Santa Maria Beach
	{579,321.201171,-1808.881347,4.208554,0.546290,61,-1}, // Huntley (ID: 43) // Santa Maria Beach
	{567,204.645416,-1444.406616,12.815665,318.328063,29,-1}, // Savanna (ID: 44) // Rodeo
	{475,200.009826,-1440.660522,12.803405,318.328063,29,-1}, // Sabre (ID: 45) // Rodeo
	{560,211.957931,-1423.395996,12.980006,134.051132,29,-1}, // Sultan (ID: 46) // Rodeo
	{405,218.385528,-1429.711669,12.996314,134.051132,29,-1}, // Sentinel (ID: 47) // Rodeo
	{521,214.204193,-1439.008666,12.926919,226.178039,29,-1}, // FCR-900 (ID: 48) // Rodeo
	{559,1311.380981,-856.143981,39.300998,177.522262,3,-1}, // Jester (ID: 49) // Mulholland
	{560,1321.721557,-856.712707,39.298252,177.522262,3,-1}, // Sultan (ID: 50) // Mulholland
	{506,1330.086059,-881.975463,39.298839,177.522262,3,-1}, // Super GT (ID: 51) // Mulholland
	{562,1319.317626,-873.059509,39.299736,177.522262,3,-1}, // Elegy (ID: 52) // Mulholland
	{522,1309.148193,-872.496093,39.298271,177.522262,3,-1}, // NRG500 (ID: 53) // Mulholland
	{492,871.714355,-1535.169677,13.214927,271.655426,55,-1}, // Greenwood (ID: 54) // Marina
	{603,884.036315,-1523.192993,13.215357,89.182685,55,-1}, // Phoenix (ID: 55) // Marina
	{482,855.193786,-1528.053588,13.013707,266.415924,55,-1}, // Burrito (ID: 56) // Marina
	{535,857.273193,-1512.742797,13.087572,266.415924,55,-1}, // Slamvan (ID: 57) // Marina
	{411,864.314453,-1500.947631,13.224195,177.197021,55,-1}, // Infernus (ID: 58) // Marina
	{514,2747.800048,-2465.335693,13.429963,269.006835,-1,-1}, // Tanker (ID: 59) // Docks
	{514,2748.372070,-2443.649658,13.425960,269.006835,-1,-1}, // Tanker (ID: 60) // Docks
	{406,2762.364990,-2394.942871,13.412092,177.454864,-1,-1}, // Dumper (ID: 61) // Docks
	{406,2779.589843,-2437.101074,13.414171,91.006835,-1,-1}, // Dumper (ID: 62) // Docks
	{487,2795.082763,-2545.983642,13.412330,177.454864,-1,-1}, // Maverick (ID: 63) // Docks
	{535,2785.703613,-1994.749389,13.163056,94.267616,-1,-1}, // Slamvan (ID: 64) // Playa Del Seville
	{566,2685.203857,-2017.712280,13.328207,358.753265,-1,-1}, // Tahoma (ID: 65) // Playa Del Seville
	{534,2662.252197,-2000.307250,13.165456,88.463493,-1,-1}, // Remington (ID: 66) // Playa Del Seville
	{567,2652.270019,-2035.403930,13.331976,41.777493,-1,-1}, // Savanna (ID: 67) // Playa Del Seville
	{444,2797.901855,-1875.848999,9.649276,359.544311,-1,-1}, // Monster (ID: 68) // Stadium
	{444,2787.847412,-1875.416748,9.610875,359.544311,-1,-1}, // Monster (ID: 69) // Stadium
	{444,2777.813476,-1875.198242,9.572721,359.544311,-1,-1}, // Monster (ID: 70) // Stadium
	{444,2767.774414,-1875.595703,9.523494,359.544311,-1,-1}, // Monster (ID: 71) // Stadium
	{494,2771.998291,-1842.478271,9.545600,200.137451,-1,-1}, // Hotring (ID: 72) // Stadium
	{494,2762.750244,-1846.010620,9.512990,200.137451,-1,-1}, // Hotring (ID: 73) // Stadium
	{494,2753.314941,-1849.223632,9.472146,199.192810,-1,-1}, // Hotring (ID: 74) // Stadium
	{494,2741.720947,-1851.832397,9.421898,179.380416,-1,-1}, // Hotring (ID: 75) // Stadium
	{487,1544.362426,-1353.175292,329.474548,90.522239,-1,-1}, // Maverick (ID: 76) // Highest Building
	{542,1013.543395,-1020.710021,31.762334,178.791854,-1,-1}, // Clover (ID: 77) // Temple
	{541,1096.994140,-1026.650512,31.849119,178.864196,-1,-1}, // Bullet (ID: 78) // Temple
	{429,1040.908813,-1052.341064,31.362176,0.864196,-1,-1}, // Banshee (ID: 79) // Temple
	{415,1028.227661,-1052.463989,31.307344,0.864196,-1,-1}, // Cheetah (ID: 80) // Temple
	{451,1016.122314,-1052.256835,31.022838,0.864196,-1,-1}, // Turismo (ID: 81) // Temple
	{480,1003.994445,-1052.958862,30.744747,0.864196,-1,-1}, // Comet (ID: 82) // Temple
	{506,989.683654,-919.843505,41.839294,181.591979,-1,-1}, // Super GT (ID: 83) // Temple
	{477,1000.786499,-1085.005737,23.489233,178.768478,-1,-1}, // ZR350 (ID: 84) // Temple
	{446,731.653076,-1497.972045,4.631143,181.861129,-1,-1}, // Squalo (ID: 85) // Market
	{487,1989.280395,-2249.075439,13.723354,90.048965,-1,-1}, // Maverick (ID: 86) // Airport
	{487,1989.216430,-2315.605712,13.724207,90.048965,-1,-1}, // Maverick (ID: 87) // Airport
	{487,1989.617675,-2382.604003,13.722428,90.048965,-1,-1}, // Maverick (ID: 88) // Airport
	{476,1823.287597,-2620.903564,13.546875,6.532232,-1,-1}, // Rustler (ID: 89) // Airport
	{476,1753.408813,-2621.539306,13.546875,2.522825,-1,-1}, // Rustler (ID: 90) // Airport
	{476,1682.046386,-2621.489501,13.546875,1.309966,-1,-1}, // Rustler (ID: 91) // Airport
	{476,1616.716186,-2623.020751,13.546875,2.691160,-1,-1}, // Rustler (ID: 92) // Airport
	{513,1565.795776,-2629.644531,13.546875,357.991119,-1,-1}, // Stuntplane (ID: 93) // Airport
	{513,1544.431884,-2628.521240,13.546875,357.991119,-1,-1}, // Stuntplane (ID: 94) // Airport
	{513,1526.430541,-2627.558349,13.546875,357.991119,-1,-1}, // Stuntplane (ID: 95) // Airport
	{513,1507.414672,-2626.932373,13.546875,357.991119,-1,-1}, // Stuntplane (ID: 96) // Airport
	{437,1665.962768,-2313.818847,13.329627,90.613891,-1,-1}, // Coach (ID: 97) // Airport
	{437,1699.231079,-2313.866455,13.329858,90.613891,-1,-1}, // Coach (ID: 98) // Airport
	{420,1560.797851,-2318.739501,13.416219,90.050659,-1,-1}, // Taxi (ID: 99) // Airport
	{500,1542.901000,-2361.018066,13.425674,359.819000,-1,-1}, // Mesa (ID: 100) // Airport
	{559,1454.505981,-2348.327636,13.414303,359.819000,-1,-1}, // Jester (ID: 101) // Airport
	{534,1404.678100,-2331.296142,13.419953,359.819000,-1,-1}, // Remington (ID: 102) // Airport
	{463,1365.557006,-2326.746093,13.417978,90.989105,-1,-1}, // Freeway (ID: 103) // Airport
	{542,1364.885009,-2246.154296,13.417449,269.052032,-1,-1}, // Clover (ID: 104) // Airport
	{475,1388.229125,-2225.669921,13.417157,0.328545,-1,-1}, // Sabre (ID: 105) // Airport
	{470,1408.144165,-2208.654785,13.409720,179.281478,-1,-1}, // Patriot (ID: 106) // Airport
	{451,1451.273437,-2224.511230,13.415595,179.281478,-1,-1}, // Turismo (ID: 107) // Airport
	{522,1512.114746,-2211.639404,13.422736,359.647491,-1,-1}, // NRG500 (ID: 108) // Airport
	{426,1560.190063,-2254.181152,13.416652,271.015991,-1,-1}, // Premier (ID: 109) // Airport
	{415,1681.843139,-2259.461181,13.300088,269.898681,-1,-1}, // Cheetah (ID: 110) // Airport
	{562,1951.140136,-2205.027099,13.417691,269.319335,-1,-1}, // Elegy (ID: 111) // Airport
	{468,1969.294189,-2184.720703,13.414156,359.800323,-1,-1}, // Sanchez (ID: 112) // Airport
	{510,1886.371582,-1360.628173,19.140625,90.731697,-1,-1}, // Mountain Bike (ID: 113) // Park
	{510,1886.252197,-1364.958374,19.140625,88.120559,-1,-1}, // Mountain Bike (ID: 114) // Park
	{510,1869.581054,-1364.902465,19.140625,268.996643,-1,-1}, // Mountain Bike (ID: 115) // Park
	{510,1869.607055,-1360.417968,19.140625,268.474365,-1,-1}, // Mountain Bike (ID: 116) // Park
	{510,1952.080322,-1380.445678,24.148437,359.864044,-1,-1}, // Mountain Bike (ID: 117) // Park
	{510,1956.610229,-1380.303588,24.148437,359.341827,-1,-1}, // Mountain Bike (ID: 118) // Park
	{510,1956.630249,-1363.743652,24.148437,178.987945,-1,-1}, // Mountain Bike (ID: 119) // Park
	{510,1952.154418,-1363.976928,24.148437,177.943496,-1,-1}, // Mountain Bike (ID: 120) // Park
	{510,1921.441406,-1418.123291,16.359375,93.157211,-1,-1}, // Mountain Bike (ID: 121) // Park
	{510,1913.456542,-1434.901855,16.366991,270.714477,-1,-1}, // Mountain Bike (ID: 122) // Park
	{411,1135.481201,-1466.869873,15.545242,40.920494,-1,-1}, // Infernus (ID: 123) // Verona Mall
	{415,1135.481201,-1461.869873,15.545242,40.920494,-1,-1}, // Cheetah (ID: 124) // Verona Mall
	{429,1135.481201,-1456.869873,15.545242,40.920494,-1,-1}, // Banshee (ID: 125) // Verona Mall
	{451,1135.481201,-1451.869873,15.545242,40.920494,-1,-1}, // Turismo (ID: 126) // Verona Mall
	{506,1135.481201,-1446.869873,15.545242,40.920494,-1,-1}, // Super GT (ID: 127) // Verona Mall
	{541,1135.481201,-1441.869873,15.545242,40.920494,-1,-1}, // Bullet (ID: 128) // Verona Mall
	{411,1122.481201,-1466.869873,15.545242,310.920494,-1,-1}, // Infernus (ID: 129) // Verona Mall
	{415,1122.481201,-1461.869873,15.545242,310.920494,-1,-1}, // Cheetah (ID: 130) // Verona Mall
	{429,1122.481201,-1456.869873,15.545242,310.920494,-1,-1}, // Banshee (ID: 131) // Verona Mall
	{451,1122.481201,-1451.869873,15.545242,310.920494,-1,-1}, // Turismo (ID: 132) // Verona Mall
	{506,1122.481201,-1446.869873,15.545242,310.920494,-1,-1}, // Super GT (ID: 133) // Verona Mall
	{541,1122.481201,-1441.869873,15.545242,310.920494,-1,-1}, // Bullet (ID: 134) // Verona Mall
	{409,668.889770,-1294.412719,13.242489,0.779876,-1,-1}, // Stretch (ID: 135) // Golf Club
	{409,1825.435424,-1682.812744,13.162638,0.978817,-1,-1}, // Stretch (ID: 136) // Alhambra Club
	{542,2416.276855,-1718.419677,13.529325,179.012817,-1,-1}, // Clover (ID: 137) // Groove Street
	{579,2497.724853,-1750.778442,13.233366,19.892271,-1,-1}, // Huntley (ID: 138) // Groove Street
	{475,2659.429687,-1425.874877,30.253877,0.312046,-1,-1}, // Sabre (ID: 139) // Eastside
	{402,2603.372314,-1250.774536,47.516540,90.312046,-1,-1}, // Buffalo (ID: 140) // Eastside
	{506,2430.125244,-1242.370727,24.037115,180.653350,-1,-1}, // Super GT (ID: 141) // Pig Pen
	{405,2270.338623,-1433.710205,23.612556,354.944854,-1,-1}, // Sentinel (ID: 142) // Eastside
	{534,2422.818115,-1106.193359,41.077373,4.864102,-1,-1}, // Remington (ID: 143) // Eastside
	{463,2751.363769,-1106.430053,69.360404,358.515625,-1,-1}, // Freeway (ID: 144) // Eastside
	{500,2743.434082,-1073.248291,69.324546,42.831970,-1,-1}, // Mesa (ID: 145) // Eastside
	{470,2816.528320,-1184.118408,25.115844,269.205902,-1,-1}, // Patriot (ID: 146) // Eastside
	{521,2390.796386,-1494.082519,23.537887,270.671630,-1,-1}, // FCR-900 (ID: 147) // Eastside Cluckin' Bell
	{420,2301.064697,-1638.187255,14.355358,204.079620,-1,-1}, // Taxi (ID: 148) // Groove Street Bar
	{429,2386.544921,-1927.515991,13.087308,1.484918,-1,-1}, // Banshee (ID: 149) // Ganton Cluckin' Bell
	{492,2502.870117,-2005.957397,12.985747,88.768928,-1,-1}, // Greenwood (ID: 150) // Willowfield
	{514,2437.250732,-2107.854980,13.254782,356.197235,-1,-1}, // Tanker (ID: 151) // Willowfield
	{468,2265.018798,-2122.640380,13.251161,42.138710,-1,-1}, // Sanchez (ID: 152) // Docks
	{603,1931.903564,-2151.721923,13.254512,179.011871,-1,-1}, // Phoenix (ID: 153) // Airport
	{415,1883.562866,-2022.473510,13.094923,179.906265,-1,-1}, // Cheetah (ID: 154) // El Corona
	{470,1922.774658,-1792.124389,13.087321,271.566925,-1,-1}, // Patriot (ID: 155) // El Corona
	{426,2095.775390,-1797.090087,13.165884,89.055381,-1,-1}, // Premier (ID: 156) // Idlewood
	{522,2159.146484,-1800.948608,13.153849,270.173706,-1,-1}, // NRG500 (ID: 157) // Idlewood
	{477,2092.460449,-1576.368774,13.005808,178.178710,-1,-1}, // ZR350 (ID: 158) // Idlewood
	{566,1825.292602,-1655.640380,13.163235,358.728363,-1,-1}, // Tahoma (ID: 159) // Alhambra Club
	{522,1825.332519,-1709.678344,13.163582,358.728363,-1,-1}, // NRG500 (ID: 160) // Alhambra Club
	{490,1125.806030,-1744.515014,13.178814,270.739562,0,-1}, // FBI Rancher (ID: 161) // Conference Center
	{405,1144.784057,-1744.501586,13.179642,270.739562,0,-1}, // Sentinel (ID: 162) // Conference Center
	{411,1080.781005,-1763.776489,13.152679,269.337951,-1,-1}, // Infernus (ID: 163) // Conference Center
	{506,1062.199218,-1743.167846,13.246815,90.171699,-1,-1}, // Super GT (ID: 164) // Conference Center
	{559,888.122985,-1669.256958,13.326845,179.932769,-1,-1}, // Jester (ID: 165) // Verona Beach
	{480,841.968078,-1802.136230,13.074001,0.501242,-1,-1}, // Comet (ID: 166) // Verona Beach Peer
	{579,639.531122,-1707.006704,14.369411,35302.261731,-1,-1}, // Huntley (ID: 167) // Verona Beach
	{522,447.087585,-1733.396362,9.526784,309.447814,-1,-1}, // NRG500 (ID: 168) // Verona Beach
	{541,107.669761,-1555.394042,7.145474,250.447814,-1,-1}, // Bullet (ID: 169) // Rodeo
	{429,336.078460,-1296.101684,54.005210,25.510961,-1,-1}, // Banshee (ID: 170) // Rodeo
	{500,404.925323,-1154.457763,77.213508,147.510961,-1,-1}, // Mesa (ID: 171) // Richman
	{562,564.611083,-1065.602050,73.474952,31.700830,-1,-1}, // Elegy (ID: 172) // Richman
	{405,1275.730224,-1558.857421,13.342744,90.362113,-1,-1}, // Sentinel (ID: 173) // Market
	{420,1304.286865,-1137.348999,23.438859,92.285606,-1,-1}, // Taxi (ID: 174) // Market
	{560,974.311645,-1304.160278,13.164890,179.460983,-1,-1}, // Sultan (ID: 175) // Market
	{579,746.687683,-1344.158081,13.300282,270.392517,-1,-1}, // Huntley (ID: 176) // Vinewood
	{480,834.464599,-925.766235,55.036350,242.148605,-1,-1}, // Comet (ID: 177) // Vinewood
	{587,724.647583,-994.253356,52.410949,59.031322,-1,-1}, // Euros (ID: 178) // Vinewood
	{470,792.086608,-849.858276,60.419754,171.635818,-1,-1}, // Patriot (ID: 179) // Vinewood
	{451,891.814514,-714.456726,108.325859,243.634704,-1,-1}, // Turismo (ID: 180) // Vinewood
	{415,1105.364379,-642.652221,112.454177,43.034236,-1,-1}, // Cheetah (ID: 181) // Vinewood
	{477,1358.613159,-615.489318,108.912948,76.262275,-1,-1}, // ZR350 (ID: 182) // Vinewood
	{429,1248.067993,-781.312622,90.462387,359.262275,-1,-1}, // Banshee (ID: 183) // Maddog's House
	{562,1251.299804,-812.692932,83.927108,141.262275,-1,-1}, // Elegy (ID: 184) // Maddog's House
	{487,1291.206298,-788.211303,96.460937,179.734359,-1,-1}, // Maverick (ID: 185) // Maddog's House
	{411,1524.090454,-882.923156,60.904850,49.207355,-1,-1}, // Infernus (ID: 186) // Vinewood
	{521,1685.356079,-1035.566650,23.690450,180.704605,-1,-1}, // FCR-900 (ID: 187) // Mulholland Intersection
	{587,1721.432983,-1007.263793,23.696136,352.521728,-1,-1}, // Euros (ID: 188) // Mulholland Intersection
	{541,1757.339355,-1037.625732,23.743011,179.695190,-1,-1}, // Bullet (ID: 189) // Mulholland Intersection
	{482,1788.991821,-1060.637084,23.744018,358.440948,-1,-1}, // Burrito (ID: 190) // Mulholland Intersection
	{468,1739.945434,-1084.709228,23.741813,358.440948,-1,-1}, // Sanchez (ID: 191) // Mulholland Intersection
	{470,1695.894042,-1069.324340,23.689058,358.440948,-1,-1}, // Patriot (ID: 192) // Mulholland Intersection
	{567,1658.602539,-1106.834716,23.690155,88.377090,-1,-1}, // Savanna (ID: 193) // Mulholland Intersection
	{429,1617.230590,-1128.288452,23.686874,88.377090,-1,-1}, // Banshee (ID: 194) // Mulholland Intersection
	{402,1581.666015,-1043.707275,23.688972,127.121681,-1,-1}, // Buffalo (ID: 195) // Mulholland Intersection
	{534,1910.453857,-1120.688232,25.493597,180.253845,-1,-1}, // Remington (ID: 196) // Park
	{426,1965.313110,-1210.967895,25.215663,185.093856,-1,-1}, // Premier (ID: 197) // Park
	{559,2084.050292,-1342.558471,23.768108,90.043258,-1,-1}, // Jester (ID: 198) // Mulholland
	{522,1585.928222,-1011.110290,23.687934,6.290105,-1,-1}, // NRG500 (ID: 199) // Mulholland Intersection
	{603,1636.306152,-1047.303100,23.687259,179.662826,-1,-1}, // Phoenix (ID: 200) // Mulholland Intersection
	{475,1431.105503,-1028.763811,23.547245,89.120421,-1,-1}, // Sabre (ID: 201) // Mulholland
	{492,1215.208129,-875.502014,42.690128,189.749923,-1,-1}, // Greenwood (ID: 202) // Vinewood
	{514,1147.334960,-1238.864746,15.860088,180.982284,-1,-1}, // Tanker (ID: 203) // Market
	{451,1282.760864,-1355.385253,13.253620,0.298043,-1,-1}, // Turismo (ID: 204) // Market
	{559,1560.973754,-1308.880615,16.777351,270.087646,-1,-1}, // Jester (ID: 205) // Highest Building
	{402,1533.991333,-1308.772094,15.604850,270.087646,-1,-1}, // Buffalo (ID: 206) // Highest Building
	{542,1730.300903,-1277.318481,13.432171,139.551971,-1,-1}, // Clover (ID: 207) // Near Park
	{562,2102.487548,-982.701477,53.715827,74.013938,-1,-1}, // Elegy (ID: 208) // Eastside
	{405,769.467895,-1128.637329,23.845144,218.737091,-1,-1}, // Sentinel (ID: 209) // Richman
	{521,872.521728,-1339.831665,13.422805,359.602630,-1,-1}, // FCR-900 (ID: 210) // Market
	{587,746.151428,-1647.853637,5.130365,179.769378,-1,-1}, // Euros (ID: 211) // Market
	{477,236.171966,-1566.026611,32.787525,163.647262,-1,-1}, // ZR350 (ID: 212) // Rodeo
	{426,398.119567,-1577.055664,27.922294,91.100753,-1,-1}, // Premier (ID: 213) // Rodeo
	{463,546.459821,-1477.241801,14.222844,3.921021,-1,-1}, // Freeway (ID: 214) // Rodeo
	{409,487.772308,-1515.493041,19.883850,5.185674,-1,-1}, // Stretch (ID: 215) // Rodeo
	{411,482.113616,-1489.037719,19.645090,184.543838,-1,-1}, // Infernus (ID: 216) // Rodeo
	{522,511.460700,-1597.633950,15.268744,270.319421,-1,-1}, // NRG500 (ID: 217) // Rodeo
	{415,609.892333,-1511.540771,14.555418,269.814208,-1,-1}, // Cheetah (ID: 218) // Rodeo
	{402,1269.080688,-1796.741088,13.186159,179.752624,-1,-1}, // Buffalo (ID: 219) // Conference Center
	{535,1034.401000,-2284.181396,12.799115,204.966705,-1,-1}, // Slamvan (ID: 220) // Near Airport
	{470,377.743591,-2034.954956,7.367589,43.895828,-1,-1}, // Patriot (ID: 221) // Santa Maria Beach
	{487,395.903717,-1858.933471,13.601562,0.681233,-1,-1}, // Maverick (ID: 222) // Santa Maria Beach
	{560,2337.197509,-1759.043457,13.331455,358.909698,-1,-1}, // Sultan (ID: 223) // Groove Street
	{480,2232.150146,-1937.669311,13.322902,88.823371,-1,-1}, // Comet (ID: 224) // Willowfield
	{587,2092.116455,-2094.257568,13.327116,177.526306,-1,-1}, // Euros (ID: 225) // Willowfield
	{603,1747.708129,-2099.114990,13.328202,179.969940,-1,-1}, // Phoenix (ID: 226) // Near Airport
	{541,1636.577148,-1902.174194,13.334104,300.834533,-1,-1}, // Bullet (ID: 227) // Verdant Bluffs
	{566,1373.253051,-1889.279663,13.279490,359.301208,-1,-1}, // Tahoma (ID: 228) // Verdant Bluffs
	{477,1025.350097,-1550.914672,13.332073,180.034439,-1,-1}, // ZR350 (ID: 229) // Market
	{463,441.789764,-1295.604858,14.972719,203.356765,-1,-1}, // Freeway (ID: 230) // Richman
	{480,399.930694,-1432.127807,32.826747,217.363891,-1,-1}, // Comet (ID: 231) // Rodeo
	{560,666.261657,-1418.682373,13.946446,357.971557,-1,-1}, // Sultan (ID: 232) // Market
	{420,996.153625,-1438.099121,13.328618,357.971557,-1,-1}, // Taxi (ID: 233) // Market
	{603,1459.093627,-1502.755615,13.331052,38.762462,-1,-1}, // Phoenix (ID: 234) // Market
	{480,1514.192749,-1462.814819,9.281811,181.656448,-1,-1}, // Comet (ID: 235) // Downtown
	{468,1523.681762,-1464.850219,9.283031,181.656448,-1,-1}, // Sanchez (ID: 236) // Downtown
	{521,1648.613159,-1343.982177,17.218912,181.656448,-1,-1}, // FCR-900 (ID: 237) // Downtown
	{477,2133.300537,-1132.668334,25.456342,44.821918,-1,-1}, // ZR350 (ID: 238) // Jefferson
	{463,2120.306640,-1136.523803,25.012439,306.459991,-1,-1}, // Freeway (ID: 239) // Jefferson
	{468,2148.018066,-1152.891723,23.724176,269.350891,-1,-1}, // Sanchez (ID: 240) // Jefferson
	{541,2161.433105,-1182.537719,23.601108,269.350891,-1,-1}, // Bullet (ID: 241) // Jefferson
	{420,1363.211425,-1643.393554,13.164815,269.703430,-1,-1}, // Taxi (ID: 242) // Commerce
	{592,2104.534221,-2450.372304,14.741810,127.896124,1,1}, // Andromada (ID: 243) // Airport
	{521,2470.294677,-1669.880371,13.096332,191.679702,86,-1}, // FCR-900 (ID: 244) // Groove Street
	{587,2206.342529,-1160.932495,25.512912,270.352844,5,-1}, // Euros (ID: 245) // Motel Jefferson
	{463,2796.455078,-1553.996337,10.704411,268.811889,6,-1}, // Freeway (ID: 246) // East Beach
	{468,1816.051269,-1902.948974,13.314620,178.052764,51,-1}, // Sanchez (ID: 247) // Unity Station
	{522,1250.838623,-2044.338134,59.429252,268.036926,0,-1}, // NRG500 (ID: 248) // Verdant Bluffs
	{487,1193.664428,-2053.663818,69.007812,275.950592,0,0}, // Maverick (ID: 249) // Verdant Bluffs
	{560,337.544464,-1788.788085,4.488074,178.447174,61,-1}, // Sultan (ID: 250) // Santa Maria Beach
	{566,240.217666,-1454.409057,13.280391,312.177062,29,-1}, // Tahoma (ID: 251) // Rodeo
	{480,1331.055786,-857.570800,39.454654,178.864349,3,-1}, // Comet (ID: 252) // Mulholland
	{468,872.113830,-1514.140869,13.259681,180.265335,55,-1}, // Sanchez (ID: 253) // Marina
	{470,893.968200,-1519.364746,12.898312,179.077041,55,-1} // Patriot (ID: 254) // Marina
};

#define Pickups 3
enum PickupInfos {
	PickupModelID,
	PickupType,
	Float:PickupSpawnX,
	Float:PickupSpawnY,
	Float:PickupSpawnZ
}
new PickupInfo[Pickups][PickupInfos] = {
	{371,2,-2347.5498,-1607.7061,483.6420},
	{371,2,1969.2869,-2187.5896,13.5469},
	{371,2,1554.5847,-1365.5371,329.4535}
};

new WeaponNames[55][20] = {
	"Hands","Brassknuckle","Golf Club","Nitestick","Knife","Baseball Bat","Shovel","Pool Cue",
	"Katana","Chainsaw","Purple Dildo","White Dildo","Long Vibrator","Vibrator","Flowers","Cane","Grenade",
	"Teargas","Molotov","","","","Pistol","Silenced Pistol","Desert Eagle","Shotgun",
	"Sawnoff Shotgun","Spas 12","Micro Uzi","MP5","AK-47","M4","Tec-9","Rifle","Sniper Rifle",
	"RPG-7","Heatseeker","Flamethrower","Minigun","Satchel","Detonator","Spray Can",
	"Fire Extinguisher","Camera","","","Parachute","","","Vehicle","","","","Drown","Collision"
};

new SpawnWeapons[6] = {24,70,25,50,30,300};
#define Weapons 11
enum WeaponInfos {
	WeaponID,
	WeaponGroup,
	WeaponCost,
	bool:IsWeaponMelee
}
new WeaponInfo[Weapons][WeaponInfos] = {
	{3,0,1500,true},
	{4,0,2000,true},
	{5,0,1000,true},
	{23,1,20,false},
	{24,1,80,false},
	{25,2,40,false},
	{27,2,100,false},
	{29,3,30,false},
	{30,4,30,false},
	{31,4,40,false},
	{46,5,1000,true}
};
#define WeaponGroups 6

enum PlayerInfos {
	Name[MAX_PLAYER_NAME],
	#if defined Teams
		Team,
	#endif
	Admin,
	bool:AdminColored,
	bool:HearAll,
	Query,
	bool:Ignores[MAX_PLAYERS],
	Moneys,
	WeaponIDs[WeaponGroups],
	WeaponAmmos[WeaponGroups],
	CheatKills,
	CheatDeaths,
	IdleTime,
	Float:LastPosX,
	Float:LastPosY,
	Float:LastPosZ,
	Messages,
	Mute,
	MuteTimer,
	#if defined AntiSpawnKillTime
		bool:CanBeKilled,
		AntiSpawnKillTimer,
	#endif
	bool:SafeDeath,
	bool:Logged,
	Password,
	WrongPasswords,
	Model,
	bool:ModelSet,
	Kills,
	MaxKillsForLife,
	CurrentKillsForLife,
	Deaths,
	Suicides
}
new PlayerInfo[MAX_PLAYERS][PlayerInfos];

EncodeName(playername[]) {
	new str[MAX_STRING];
	set(str,strlower(playername));
	#if defined AllowBadSymbolsInNicks
		str = strreplace("(","%L%",str);
		str = strreplace(")","%R%",str);
		str = strreplace("%L%","(40)",str);
		str = strreplace("%R%","(41)",str);
		str = strreplace("[","(91)",str);
		str = strreplace("]","(93)",str);
		str = strreplace("{","(123)",str);
		str = strreplace("}","(124)",str);
		str = strreplace("/","(47)",str);
		str = strreplace("\\","(92)",str);
		str = strreplace("-","(45)",str);
		str = strreplace("_","(95)",str);
		str = strreplace("!","(33)",str);
		str = strreplace("?","(63)",str);
		str = strreplace(",","(44)",str);
		str = strreplace(".","(46)",str);
		str = strreplace(";","(59)",str);
		str = strreplace(":","(58)",str);
		str = strreplace("'","(39)",str);
		str = strreplace("\"","(34)",str);
		str = strreplace("`","(96)",str);
		str = strreplace("~","(126)",str);
		str = strreplace("<","(60)",str);
		str = strreplace(">","(62)",str);
		str = strreplace("@","(64)",str);
		str = strreplace("#","(35)",str);
		str = strreplace("$","(36)",str);
		str = strreplace("%","(37)",str);
		str = strreplace("^","(94)",str);
		str = strreplace("&","(38)",str);
		str = strreplace("*","(42)",str);
		str = strreplace("=","(61)",str);
		str = strreplace("+","(43)",str);
	#endif
	return str;
}

PlayerFile(playername[]) {
	new str[MAX_STRING];
	format(str,sizeof(str),"%s%s%s",PlayersDir,EncodeName(playername),PlayersExt);
	return str;
}

ClearPlayer(playerid) {
	PlayerInfo[playerid][Name][0] = 0;
	#if defined Teams
		PlayerInfo[playerid][Team] = -1;
	#endif
	PlayerInfo[playerid][Admin] = 0;
	PlayerInfo[playerid][AdminColored] = false;
	PlayerInfo[playerid][HearAll] = false;
	PlayerInfo[playerid][Query] = INVALID_PLAYER_ID;
	for (new i=0;i<MAX_PLAYERS;i++) PlayerInfo[playerid][Ignores][i] = false;
	PlayerInfo[playerid][Moneys] = 0;
	for (new i=0;i<WeaponGroups;i++) {
		PlayerInfo[playerid][WeaponIDs][i] = 0;
		PlayerInfo[playerid][WeaponAmmos][i] = 0;
	}
	PlayerInfo[playerid][IdleTime] = 0;
	PlayerInfo[playerid][CheatKills] = 0;
	PlayerInfo[playerid][CheatDeaths] = 0;
	PlayerInfo[playerid][IdleTime] = 0;
	PlayerInfo[playerid][LastPosX] = 0;
	PlayerInfo[playerid][LastPosY] = 0;
	PlayerInfo[playerid][LastPosZ] = 0;
	PlayerInfo[playerid][Messages] = 0;
	PlayerInfo[playerid][Mute] = 0;
	KillTimer(PlayerInfo[playerid][MuteTimer]);
	#if defined AntiSpawnKillTime
		PlayerInfo[playerid][CanBeKilled] = false;
		KillTimer(PlayerInfo[playerid][AntiSpawnKillTimer]);
	#endif
	PlayerInfo[playerid][SafeDeath] = false;
	PlayerInfo[playerid][Logged] = false;
	PlayerInfo[playerid][Password] = 0;
	PlayerInfo[playerid][WrongPasswords] = 0;
	PlayerInfo[playerid][Model] = 0;
	PlayerInfo[playerid][ModelSet] = false;
	PlayerInfo[playerid][Kills] = 0;
	PlayerInfo[playerid][MaxKillsForLife] = 0;
	PlayerInfo[playerid][CurrentKillsForLife] = 0;
	PlayerInfo[playerid][Deaths] = 0;
	PlayerInfo[playerid][Suicides] = 0;
}

LoadPlayer(playerid) {
	if (!IsPlayerConnected(playerid)) return;
	ClearPlayer(playerid);
	GetPlayerName(playerid,PlayerInfo[playerid][Name],MAX_PLAYER_NAME);
	new filename[MAX_STRING];
	filename = PlayerFile(PlayerInfo[playerid][Name]);
	if (!dini_Exists(filename)) return;
	PlayerInfo[playerid][Mute] = dini_Int(filename,"Mute");
	if (PlayerInfo[playerid][Mute]) PlayerInfo[playerid][MuteTimer] = SetTimerEx("UnMutePlayerT",PlayerInfo[playerid][Mute]*60000,0,"i",playerid);
	PlayerInfo[playerid][Logged] = false;
	PlayerInfo[playerid][Password] = dini_Int(filename,"Password");
	PlayerInfo[playerid][Model] = dini_Int(filename,"Model");
	GiveMoney(playerid,dini_Int(filename,"Moneys"));
	PlayerInfo[playerid][Kills] = dini_Int(filename,"Kills");
	PlayerInfo[playerid][MaxKillsForLife] = dini_Int(filename,"MaxKillsForLife");
	PlayerInfo[playerid][Deaths] = dini_Int(filename,"Deaths");
	PlayerInfo[playerid][Suicides] = dini_Int(filename,"Suicides");
	SetPlayerScore(playerid,PlayerInfo[playerid][Kills]-PlayerInfo[playerid][Suicides]);
}

SavePlayer(playerid) {
	if (!IsPlayerConnected(playerid) || !PlayerInfo[playerid][Logged]) return;
	new filename[MAX_STRING];
	filename = PlayerFile(PlayerInfo[playerid][Name]);
	if (!dini_Exists(filename)) return;
	dini_IntSet(filename,"Mute",PlayerInfo[playerid][Mute]);
	dini_IntSet(filename,"Password",PlayerInfo[playerid][Password]);
	dini_IntSet(filename,"Model",PlayerInfo[playerid][Model]);
	dini_IntSet(filename,"Moneys",PlayerInfo[playerid][Moneys]);
	dini_IntSet(filename,"Kills",PlayerInfo[playerid][Kills]);
	dini_IntSet(filename,"MaxKillsForLife",PlayerInfo[playerid][MaxKillsForLife]);
	dini_IntSet(filename,"Deaths",PlayerInfo[playerid][Deaths]);
	dini_IntSet(filename,"Suicides",PlayerInfo[playerid][Suicides]);
}

GetPlayerID(playername[]) {
	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && equal(playername,PlayerInfo[i][Name],true)) return i;
	return INVALID_PLAYER_ID;
}

IsPlayerInArea(playerid,Float:x_min,Float:x_max,Float:y_min,Float:y_max,Float:z_min=-10000.0,Float:z_max=10000.0) {
	if (!IsPlayerConnected(playerid)) return false;
	new Float:x,Float:y,Float:z;
	GetPlayerPos(playerid,x,y,z);
	if (x_min <= x <= x_max && y_min <= y <= y_max && z_min <= z <= z_max) return true;
	return false;
}

#if defined LoggingTimeout
	public LoggingTimeoutT(playerid) if (IsPlayerConnected(playerid) && !PlayerInfo[playerid][Logged]) KickPlayer(playerid,"You didn't identified yourself");
#endif

#if defined AntiSpawnKillTime
	public AntiSpawnKill(playerid) PlayerInfo[playerid][CanBeKilled] = true;
#endif

/*MutePlayer(playerid,duration,reason[],muter[]="the server") {
	if (!IsPlayerConnected(playerid) || IsPlayerAdmin(playerid) || PlayerInfo[playerid][Admin] >= AdminLevelToIgnorePunishment) return;
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) muted by %s for %d minutes: %s",PlayerInfo[playerid][Name],playerid,muter,duration,reason);
	WriteToLog(str);
	#if defined MutesLog
		WriteToLog(str,MutesLog);
	#endif
	WriteEcho(str,INVALID_PLAYER_ID,MuteMsgColor);
	PlayerInfo[playerid][Mute] = duration;
	format(str,sizeof(str),"UnMutePlayer_%d",playerid);
	PlayerInfo[playerid][MuteTimer] = SetTimer(str,PlayerInfo[playerid][Mute]*60000,0);
}*/

UnMutePlayer(playerid,unmuter[]="the server") {
	if (!IsPlayerConnected(playerid) || !PlayerInfo[playerid][Mute]) return;
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) unmuted by %s",PlayerInfo[playerid][Name],playerid,unmuter);
	WriteToLog(str);
	#if defined MutesLog
		WriteToLog(str,MutesLog);
	#endif
	WriteEcho(str,INVALID_PLAYER_ID,MuteMsgColor);
	PlayerInfo[playerid][Mute] = 0;
	KillTimer(PlayerInfo[playerid][MuteTimer]);
}

public UnMutePlayerT(playerid) UnMutePlayer(playerid);

KickPlayer(playerid,reason[],kicker[]="the server") {
	if (!IsPlayerConnected(playerid) || IsPlayerAdmin(playerid) || PlayerInfo[playerid][Admin] >= AdminLevelToIgnorePunishment) return;
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) kicked by %s: %s",PlayerInfo[playerid][Name],playerid,kicker,reason);
	WriteToLog(str);
	#if defined KicksLog
		WriteToLog(str,KicksLog);
	#endif
	WriteEcho(str,INVALID_PLAYER_ID,KickMsgColor);
	Kick(playerid);
}

BanPlayer(playerid,reason[],banner[]="the server") {
	if (!IsPlayerConnected(playerid) || IsPlayerAdmin(playerid) || PlayerInfo[playerid][Admin] >= AdminLevelToIgnorePunishment) return;
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) banned by %s: %s",PlayerInfo[playerid][Name],playerid,banner,reason);
	WriteToLog(str);
	#if defined BansLog
		WriteToLog(str,BansLog);
	#endif
	WriteEcho(str,INVALID_PLAYER_ID,BanMsgColor);
	Ban(playerid);
}

GiveMoney(playerid,amount) {
	PlayerInfo[playerid][Moneys] += amount;
	GivePlayerMoney(playerid,amount);
}

#if defined TimeCycle
	new WorldTime = 12;
	public WorldTimeUpdate() {
		WorldTime++;
		WorldTime %= 24;
		SetWorldTime(WorldTime);
	}
#endif

public SaveAllPlayers() {
	for (new i=0;i<MAX_PLAYERS;i++) SavePlayer(i);
	WriteToLog("Global save done");
}

#define RestrictedAreas 4
#if defined RestrictedAreas
	new Float:RestrictedAreaInfo[RestrictedAreas][6] = {
		{284.0852,298.1549,-112.7213,-102.9336,1000.0,1010.0},
		{284.2424,299.8185,-41.4566,-31.2172,1000.0,1010.0},
		{284.6116,303.0293,-86.4009,-56.8201,1000.0,1010.0},
		{306.3991,319.0888,-169.8648,-158.7572,999.0,1009.0}
	};
	public AreasCheck() {
		for (new i=0;i<MAX_PLAYERS;i++) {
			if (IsPlayerConnected(i) && GetPlayerState(i) == PLAYER_STATE_ONFOOT && !IsPlayerAdmin(i) && PlayerInfo[i][Admin] < AdminLevelToIgnorePunishment) {
				for (new j=0;j<RestrictedAreas;j++) {
					if (IsPlayerInArea(i,RestrictedAreaInfo[j][0],RestrictedAreaInfo[j][1],RestrictedAreaInfo[j][2],RestrictedAreaInfo[j][3],RestrictedAreaInfo[j][4],RestrictedAreaInfo[j][5])) {
						PlayerInfo[i][SafeDeath] = true;
						SetPlayerHealth(i,0);
						WriteEcho("Do not go there",i,ErrorMsgColor);
					}
				}
			}
		}
	}
#endif

#if defined IdleTimeToKick
	public IdleCheck() {
		new str[MAX_STRING],Float:x,Float:y,Float:z;
		for (new i=0;i<MAX_PLAYERS;i++) {
			if (IsPlayerConnected(i)) {
				GetPlayerPos(i,x,y,z);
				if (x == PlayerInfo[i][LastPosX] && y == PlayerInfo[i][LastPosY] && z == PlayerInfo[i][LastPosZ] && GetPlayerState(i) != PLAYER_STATE_NONE && GetPlayerState(i) != PLAYER_STATE_WASTED) {
					PlayerInfo[i][IdleTime]++;
					if (IdleTimeToKick-1 == PlayerInfo[i][IdleTime]) {
						format(str,sizeof(str),"You are standing here already %d minutes! Please move to another area",PlayerInfo[i][IdleTime]);
						WriteEcho(str,i,ErrorMsgColor);
					}
					if (IdleTimeToKick <= PlayerInfo[i][IdleTime]) KickPlayer(i,"Staying on one place for too long");
				}
				else {
					PlayerInfo[i][IdleTime] = 0;
					PlayerInfo[i][LastPosX] = x;
					PlayerInfo[i][LastPosY] = y;
					PlayerInfo[i][LastPosZ] = z;
				}
			}
		}
	}
#endif

#if defined FloodInterval && defined FloodLines
	public FloodCheck() for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i)) PlayerInfo[i][Messages] = 0;
#endif

public MoneyCheck() {
	for (new i=0;i<MAX_PLAYERS;i++) {
		if (IsPlayerConnected(i)) {
			if (GetPlayerMoney(i) > PlayerInfo[i][Moneys]) GivePlayerMoney(i,-GetPlayerMoney(i)+PlayerInfo[i][Moneys]);
			else if (GetPlayerMoney(i) < PlayerInfo[i][Moneys]) PlayerInfo[i][Moneys] = GetPlayerMoney(i);
			#if defined MaxMoneyIllegalIncrease
				if (GetPlayerMoney(i)-PlayerInfo[i][Moneys] > MaxMoneyIllegalIncrease) BanPlayer(i,"Cheating is bad: money cheat");
			#endif
		}
	}
}

public MoneyForPlay() for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i)) GiveMoney(i,MoneysForPlaying);

public OnGameModeInit() {
    SetGameModeText(GameModeText);
	new str[MAX_STRING];
	print("\n\n--------------------------------------");
	printf("  %s by ProRaiL (c) 2007",GameModeText);
	print("--------------------------------------\n\n");
	WriteToLog("Gamemode starting...");
	format(str,sizeof(str),"Gamemode: %s",GameModeText);
	WriteToLog(str);
	for (new i=0;i<Classes;i++) AddPlayerClass(ClassInfo[i],0,0,0,0,SpawnWeapons[0],SpawnWeapons[1],SpawnWeapons[2],SpawnWeapons[3],SpawnWeapons[4],SpawnWeapons[5]);
	#if defined Teams
		new TeamClasses;
		for (new i=0;i<Teams;i++) {
			for (new j=0;j<ModelsInTeam;j++) {
			    if (TeamInfo[i][TeamModels][j] == 0) break;
				AddPlayerClass(TeamInfo[i][TeamModels][j],TeamInfo[i][TeamSpawnX],TeamInfo[i][TeamSpawnY],TeamInfo[i][TeamSpawnZ],TeamInfo[i][TeamSpawnA],SpawnWeapons[0],SpawnWeapons[1],SpawnWeapons[2],SpawnWeapons[3],SpawnWeapons[4],SpawnWeapons[5]);
				if (j == 0) TeamInfo[i][TeamClassStart] = Classes+TeamClasses;
				TeamClasses++;
			}
			TeamInfo[i][TeamClassEnd] = Classes+TeamClasses-1;
		}
		format(str,sizeof(str),"Classes: %d",Classes+TeamClasses);
	#else
		format(str,sizeof(str),"Classes: %d",Classes);
	#endif
	WriteToLog(str);
	new models[212],modelids;
	for (new i=0;i<Vehicles;i++) {
		AddStaticVehicle(VehicleInfo[i][VehicleModelID],VehicleInfo[i][VehicleSpawnX],VehicleInfo[i][VehicleSpawnY],VehicleInfo[i][VehicleSpawnZ],VehicleInfo[i][VehicleSpawnA],VehicleInfo[i][VehicleColor1],VehicleInfo[i][VehicleColor2]);
        if (VehicleInfo[i][VehicleModelID] != 0) models[VehicleInfo[i][VehicleModelID]-400]++;
	}
	for (new i=0;i<212;i++) if (models[i] > 0) modelids++;
	format(str,sizeof(str),"Vehicles: %d (Types: %d)",Vehicles,modelids);
	WriteToLog(str);
	for (new i=0;i<Pickups;i++) AddStaticPickup(PickupInfo[i][PickupModelID],PickupInfo[i][PickupType],PickupInfo[i][PickupSpawnX],PickupInfo[i][PickupSpawnY],PickupInfo[i][PickupSpawnZ]);
	format(str,sizeof(str),"Pickups: %d",Pickups);
	WriteToLog(str);
	#if defined Teams
		format(str,sizeof(str),"Teams: %d",Teams);
		WriteToLog(str);
	#endif
	ShowPlayerMarkers(1);
	ShowNameTags(1);
	WriteToLog("Gamemode started!");
	#if defined TimeCycle
		SetTimer("WorldTimeUpdate",60000,1);
	#endif
	SetTimer("SaveAllPlayers",1800000,1);
	#if defined RestrictedAreas
		SetTimer("AreasCheck",1000,1);
	#endif
	#if defined IdleTimeToKick
		SetTimer("IdleCheck",60000,1);
	#endif
	#if defined FloodInterval && defined FloodLines
	    SetTimer("FloodCheck",FloodInterval*1000,1);
	#endif
	SetTimer("MoneyCheck",10000,1);
	SetTimer("MoneyForPlay",60000,1);
	
	AllowAdminTeleport(1);
	AllowInteriorWeapons(1);
	EnableZoneNames(1);
	//SetDisabledWeapons(1,2,6,7,9,10,11,12,13,14,15,17,18,35,36,37,38,39,40,41,43,44,45);
	UsePlayerPedAnims();
	
	AddStaticVehicle(538,2019.0902,-1943.2625,13.5469,0.0,-1,-1); //

	return 1;
}

public OnGameModeExit() {
	SaveAllPlayers();
	WriteToLog("Gamemode exit...");
	return 0;
}

public OnPlayerConnect(playerid) {
	new str[MAX_STRING];
	ClearPlayer(playerid);
	LoadPlayer(playerid);
	format(str,sizeof(str),"%s (id: %d) connected to the server",PlayerInfo[playerid][Name],playerid);
	WriteToLog(str);
	#if !defined AllowBadSymbolsInNicks
		for (new i=0;i<strlen(PlayerInfo[playerid][Name]);i++) {
			if (PlayerInfo[playerid][Name][i] < 'A' || 'Z' < PlayerInfo[playerid][Name][i] < 'a' || 'z' < PlayerInfo[playerid][Name][i]) {
				KickPlayer(playerid,"Only alphabetical nicks allowed");
				return 1;
			}
		}
	#endif
	SetPlayerColor(playerid,DefaultPlayerColors[playerid]);
	
	AllowPlayerTeleport(playerid, 0);
	return 1;
}

public OnPlayerDisconnect(playerid) {
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) disconnected from the server",PlayerInfo[playerid][Name],playerid);
	WriteToLog(str);
	SavePlayer(playerid);
	ClearPlayer(playerid);
	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && PlayerInfo[i][Ignores][playerid]) PlayerInfo[i][Ignores][playerid] = false;
	return 1;
}

public OnPlayerRequestClass(playerid,classid) {
	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name])) && !PlayerInfo[playerid][Logged]) {
	    new str[MAX_STRING];
        #if defined LoggingTimeout
			SetTimerEx("LoggingTimeoutT",LoggingTimeout*1000,0,"i",playerid);
		#endif
		format(str,sizeof(str),"This nickname is registered (%s)",PlayerInfo[playerid][Name]);
		WriteEcho(str,playerid,ErrorMsgColor);
		WriteEcho("If you are the owner identify yourself using your password",playerid,ErrorMsgColor);
		WriteEcho("Otherwise, choose another nickname or contact server administrator (if you forgot your password)",playerid,ErrorMsgColor);
        SetPlayerColor(playerid,LoggingColor);
		return 0;
	}
	PlayerPlaySound(playerid,1097,0,0,0);
	if (classid < Classes) {
	    SetPlayerInterior(playerid,0);
		SetPlayerPos(playerid,1481.4418,-1790.4611,156.7533);
		SetPlayerFacingAngle(playerid,180);
		SetPlayerCameraPos(playerid,1481.4418,-1795.4611,156.7533);
		SetPlayerCameraLookAt(playerid,1481.4418,-1790.4611,156.7533);
		#if defined Teams
			PlayerInfo[playerid][Team] = -1;
		#endif
		new vehicleid = random(Vehicles);
		while (VehicleInfo[vehicleid][VehicleColor1] != -1 || VehicleInfo[vehicleid][VehicleColor2] != -1) vehicleid = random(Vehicles);
		if (!PlayerInfo[playerid][ModelSet]) PlayerInfo[playerid][ModelSet] = true;
		else PlayerInfo[playerid][Model] = classid;
        SetSpawnInfo(playerid,0,ClassInfo[PlayerInfo[playerid][Model]],VehicleInfo[vehicleid][VehicleSpawnX]+3,VehicleInfo[vehicleid][VehicleSpawnY]+3,VehicleInfo[vehicleid][VehicleSpawnZ],VehicleInfo[vehicleid][VehicleSpawnA],SpawnWeapons[0],SpawnWeapons[1],SpawnWeapons[2],SpawnWeapons[3],SpawnWeapons[4],SpawnWeapons[5]);
	}
	#if defined Teams
		else {
			new players,teammates,str[MAX_STRING];
			for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i)) players++;
			for (new i=0;i<Teams;i++) {
				if (TeamInfo[i][TeamClassStart] <= classid <= TeamInfo[i][TeamClassEnd]) {
					format(str,sizeof(str),"%s ~w~Team",TeamInfo[i][TeamName]);
					teammates = 0;
					for (new j=0;j<MAX_PLAYERS;j++) if (IsPlayerConnected(j) && PlayerInfo[j][Team] == i && j != playerid) teammates++;
					if (teammates < players/2+1) {
						PlayerInfo[playerid][Team] = i;
						SetPlayerInterior(playerid,TeamInfo[i][TeamSpawnInterior]);
						SetPlayerPos(playerid,TeamInfo[i][TeamSpawnX],TeamInfo[i][TeamSpawnY],TeamInfo[i][TeamSpawnZ]);
						SetPlayerFacingAngle(playerid,TeamInfo[i][TeamSpawnA]);
						SetPlayerCameraPos(playerid,TeamInfo[i][TeamSpawnX]+(floatsin(-TeamInfo[i][TeamSpawnA],degrees)*5),TeamInfo[i][TeamSpawnY]+(floatcos(-TeamInfo[i][TeamSpawnA],degrees)*5),TeamInfo[i][TeamSpawnZ]);
						SetPlayerCameraLookAt(playerid,TeamInfo[i][TeamSpawnX],TeamInfo[i][TeamSpawnY],TeamInfo[i][TeamSpawnZ]);
					}
					else strcat(str,"~n~~r~FULL");
					GameTextForPlayer(playerid,str,1000,3);
					break;
				}
			}
		}
	#endif
	return 1;
}

public OnPlayerSpawn(playerid) {
    SetPlayerInterior(playerid,0);
	if (PlayerInfo[playerid][SafeDeath]) {
	    SetPlayerPos(playerid,0,0,5);
		return 1;
	}
	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name])) && !PlayerInfo[playerid][Logged]) {
		KickPlayer(playerid,"Identify yourself using /login command before spawning");
		return 0;
	}
	new str[MAX_STRING];
	format(str,sizeof(str),"%s (id: %d) spawned",PlayerInfo[playerid][Name],playerid);
	WriteToLog(str);
	PlayerPlaySound(playerid,1098,0,0,0);
	#if defined Teams
		new team = PlayerInfo[playerid][Team];
		if (team == -1) {
			if (!PlayerInfo[playerid][AdminColored]) SetPlayerColor(playerid,DefaultPlayerColors[playerid]);
			else SetPlayerColor(playerid,AdminColor);
		}
		else {
			if (!PlayerInfo[playerid][AdminColored]) SetPlayerColor(playerid,TeamInfo[team][TeamColor]);
			else SetPlayerColor(playerid,AdminColor);
			SetPlayerInterior(playerid,TeamInfo[team][TeamSpawnInterior]);
		}
	#else
	    if (!PlayerInfo[playerid][AdminColored]) SetPlayerColor(playerid,DefaultPlayerColors[playerid]);
	    else SetPlayerColor(playerid,AdminColor);
	#endif
	#if defined AntiSpawnKillTime
		PlayerInfo[playerid][CanBeKilled] = false;
		PlayerInfo[playerid][AntiSpawnKillTimer] = SetTimerEx("AntiSpawnKill",AntiSpawnKillTime*1000,0,"i",playerid);
	#endif
	for (new i=0;i<WeaponGroups;i++) if (PlayerInfo[playerid][WeaponAmmos][i] > 0) GivePlayerWeapon(playerid,WeaponInfo[PlayerInfo[playerid][WeaponIDs][i]][WeaponID],PlayerInfo[playerid][WeaponAmmos][i]);
	return 1;
}

public OnPlayerDeath(playerid,killerid,reason) {
	if (PlayerInfo[playerid][SafeDeath]) {
	    PlayerInfo[playerid][SafeDeath] = false;
	    return 1;
	}
	new str[MAX_STRING];
	SendDeathMessage(killerid,playerid,reason);
	#if defined AntiSpawnKillTime
		KillTimer(PlayerInfo[playerid][AntiSpawnKillTimer]);
	#endif
	#if defined Teams
		if (PlayerInfo[playerid][Team] == -1) {
		    new vehicleid = random(Vehicles);
			while (VehicleInfo[vehicleid][VehicleColor1] != -1 || VehicleInfo[vehicleid][VehicleColor2] != -1) vehicleid = random(Vehicles);
			SetSpawnInfo(playerid,0,ClassInfo[PlayerInfo[playerid][Model]],VehicleInfo[vehicleid][VehicleSpawnX]+3,VehicleInfo[vehicleid][VehicleSpawnY]+3,VehicleInfo[vehicleid][VehicleSpawnZ],VehicleInfo[vehicleid][VehicleSpawnA],SpawnWeapons[0],SpawnWeapons[1],SpawnWeapons[2],SpawnWeapons[3],SpawnWeapons[4],SpawnWeapons[5]);
		}
	#else
	    new vehicleid = random(Vehicles);
		while (VehicleInfo[vehicleid][VehicleColor1] != -1 || VehicleInfo[vehicleid][VehicleColor2] != -1) vehicleid = random(Vehicles);
		SetSpawnInfo(playerid,0,ClassInfo[PlayerInfo[playerid][Model]],VehicleInfo[vehicleid][VehicleSpawnX]+3,VehicleInfo[vehicleid][VehicleSpawnY]+3,VehicleInfo[vehicleid][VehicleSpawnZ],VehicleInfo[vehicleid][VehicleSpawnA],SpawnWeapons[0],SpawnWeapons[1],SpawnWeapons[2],SpawnWeapons[3],SpawnWeapons[4],SpawnWeapons[5]);
	#endif
	if (killerid == INVALID_PLAYER_ID) {
		format(str,sizeof(str),"%s (id: %d) suicided",PlayerInfo[playerid][Name],playerid);
		WriteToLog(str);
		SetPlayerScore(playerid,GetPlayerScore(playerid)-1);
		PlayerInfo[playerid][Suicides]++;
	}
	else {
		format(str,sizeof(str),"%s (id: %d) killed %s (id: %d) with %s (id: %d)",PlayerInfo[killerid][Name],killerid,PlayerInfo[playerid][Name],playerid,WeaponNames[reason],reason);
		WriteToLog(str);
		new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
		GetPlayerPos(playerid,x1,y1,z1);
		GetPlayerPos(killerid,x2,y2,z2);
		#if defined InDoorWeapons
		    if (reason != 0 && z1 > 700 && z2 > 700 && !IsPlayerInAnyVehicle(playerid) && !IsPlayerInAnyVehicle(killerid)) {
		        KickPlayer(killerid,"Cheating is bad: possible indoor weapons");
				return 1;
		    }
		#endif
		new di