All pastes #903734 Raw Edit

SimpleDM

public cpp v1 · immutable
#903734 ·published 2008-02-14 13:02 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 22new 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 6FixChars(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 259new 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 254enum 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 3enum 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 11enum 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 6enum 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);	}#endifpublic 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;#endifpublic 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 distance = floatround(floatsqroot(floatpower(x2-x1,2)+floatpower(y2-y1,2)+floatpower(z2-z1,2)),floatround_floor);		#if defined CheatWeapons			for (new i=0;i<CheatWeapons;i++) {				if (reason == CheatWeapon[i]) {					if (reason == 37) {						PlayerInfo[playerid][CheatDeaths]++;						if (PlayerInfo[playerid][CheatDeaths] >= DeathsFromCheatToBan) {							BanPlayer(playerid,"Cheating is bad: fake death");							return 1;						}						if (distance <= LegalKillDistance) {							PlayerInfo[killerid][CheatKills]++;							if (PlayerInfo[killerid][CheatKills] >= FlameCheatsToBan) {								BanPlayer(killerid,"Cheating is bad: illegal weapon");								return 1;							}						}					}					else {						if (distance > LegalKillDistance) {							BanPlayer(playerid,"Cheating is bad: fake death");							return 1;						}						PlayerInfo[playerid][CheatDeaths]++;						if (PlayerInfo[playerid][CheatDeaths] >= DeathsFromCheatToBan) {							BanPlayer(playerid,"Cheating is bad: fake death");							return 1;						}						BanPlayer(killerid,"Cheating is bad: illegal weapon");						return 1;					}					break;				}			}		#endif		if (distance <= LegalKillDistance) {			#if defined AntiSpawnKillTime				if (!PlayerInfo[playerid][CanBeKilled]) {					if (!IsPlayerAdmin(killerid) && PlayerInfo[killerid][Admin] < AdminLevelToIgnorePunishment) {						SetPlayerScore(killerid,GetPlayerScore(killerid)-1);						SetPlayerHealth(killerid,0);					}					WriteEcho("Do not kill on spawn points",killerid,ErrorMsgColor);					return 1;				}			#endif			#if defined NoDriveBy				if (IsPlayerInAnyVehicle(killerid) && !IsPlayerInAnyVehicle(playerid) && reason == 29) {					if (!IsPlayerAdmin(killerid) && PlayerInfo[killerid][Admin] < AdminLevelToIgnorePunishment) {						SetPlayerScore(killerid,GetPlayerScore(killerid)-1);						SetPlayerHealth(killerid,0);					}					WriteEcho("Do not shoot from car",killerid,ErrorMsgColor);					return 1;				}			#endif			#if defined Teams				#if defined NoTeamKill					if (PlayerInfo[killerid][Team] > -1 && PlayerInfo[killerid][Team] == PlayerInfo[playerid][Team]) {						if (!IsPlayerAdmin(killerid) && PlayerInfo[killerid][Admin] < AdminLevelToIgnorePunishment) {							SetPlayerScore(killerid,GetPlayerScore(killerid)-1);							SetPlayerHealth(killerid,0);						}						WriteEcho("Do not kill your teammates",killerid,ErrorMsgColor);						return 1;					}				#endif			#endif		}		SetPlayerScore(killerid,GetPlayerScore(killerid)+1);		PlayerInfo[killerid][Kills]++;		PlayerInfo[killerid][CurrentKillsForLife]++;		if (PlayerInfo[killerid][CurrentKillsForLife] > PlayerInfo[killerid][MaxKillsForLife]) PlayerInfo[killerid][MaxKillsForLife] = PlayerInfo[killerid][CurrentKillsForLife];		GiveMoney(killerid,MoneysForKill*PlayerInfo[killerid][CurrentKillsForLife]);	}	PlayerInfo[playerid][Deaths]++;	PlayerInfo[playerid][CurrentKillsForLife] = 0;	if (PlayerInfo[playerid][Moneys]-MoneysForKill > 0) GiveMoney(playerid,-MoneysForKill);	else GiveMoney(playerid,-GetPlayerMoney(playerid));	return 1;}/*#define BadWords 49new BadWord[BadWords][10] = {	"õóé",	"õóè",	"õóþ",	"õóÿ",	"õóå",	"õó¸",	"ïèçä",	"ñóêà",	"ñóêè",	"ñóêå",	"ñóêó",	"ñóêî",	"ñó÷ê",	"ñöóê",	"áëÿ",	"åáàí",	"¸áàí",	"åáàò",	"åáàë",    "åáó ",    "åáó÷",    "åá¸",    "åáåì",    "åáíó",    "¸áíó",    "åáíå",    "¸áíå",    "åáëà",    "åáëî",    "åáëè",	"¸á",	"ïåäà",	"ïåäî",	"ïåäå",	"ïèäà",	"ïèäî",	"ïèäå",	"ìóä",	"óáëþäîê",	"óáëþäàê",	"òðàõ",	"øëþõ",	"ïåòóõ",	"fuck",	"dick",	"bitch",	"pussy",	"bastard",	"noob"};*/public OnPlayerText(playerid,text[]) {	if (!IsPlayerConnected(playerid)) return 0;	#if defined FloodInterval && defined FloodLines	    if (!IsPlayerAdmin(playerid) && PlayerInfo[playerid][Admin] < AdminLevelToIgnorePunishment) {	    	PlayerInfo[playerid][Messages]++;	    	if (PlayerInfo[playerid][Messages] > FloodLines) {	    	    PlayerInfo[playerid][Messages] = 0;				KickPlayer(playerid,"Stop flooding");	            return 0;	    	}		}	#endif	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name])) && !PlayerInfo[playerid][Logged]) return 0;	FixChars(text);	//for (new i=0,pos;i<BadWords;i++) while ((pos=strfind(RuLower(text),BadWord[i],true)) != -1) for (new j=pos;j<pos+strlen(BadWord[i]);j++) text[j] = '#';	new str[MAX_STRING],targetid = PlayerInfo[playerid][Query];	if (text[0] == '!' && targetid != playerid && IsPlayerConnected(targetid)) {		text[0] = ' ';		format(str,sizeof(str),"%s (id: %d) sent PM to %s (id: %d):%s",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid,text);		WriteToLog(str);		if (!IsPlayerAdmin(playerid) && PlayerInfo[playerid][Admin] == 0 && !IsPlayerAdmin(targetid) && PlayerInfo[targetid][Admin] == 0) for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && PlayerInfo[i][Admin] > PlayerInfo[playerid][Admin] && PlayerInfo[i][Admin] > PlayerInfo[targetid][Admin] && PlayerInfo[i][HearAll]) WriteEcho(str,i,PrivateMsgColor);		format(str,sizeof(str),"PM to %s (id: %d):%s",PlayerInfo[targetid][Name],targetid,text);		WriteEcho(str,playerid,PrivateMsgColor);		if (PlayerInfo[targetid][Ignores][playerid]) return 0;		format(str,sizeof(str),"PM from %s (id: %d):%s",PlayerInfo[playerid][Name],playerid,text);		WriteEcho(str,targetid,PrivateMsgColor);		return 0;	}	if (text[0] == '%' && (IsPlayerAdmin(playerid) || PlayerInfo[playerid][Admin] > 0)) {		text[0] = ' ';		format(str,sizeof(str),"%s (id: %d) to admins:%s",PlayerInfo[playerid][Name],playerid,text);		WriteToLog(str);		#if defined AdminsLog			WriteToLog(str,AdminsLog);		#endif		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0)) WriteEcho(str,i,AdminChatColor);		return 0;	}	if (PlayerInfo[playerid][Mute]) {		format(str,sizeof(str),"Muted message: %s (id: %d): %s",PlayerInfo[playerid][Name],playerid,text);		WriteToLog(str);		WriteEcho("You are muted and cannot send messages to global chat",playerid,ErrorMsgColor);		return 0;	}	#if defined Teams		new team = PlayerInfo[playerid][Team];		if (text[0] == '*' && team > -1) {			text[0] = ' ';			format(str,sizeof(str),"%s (id: %d) to team %s (id: %d):%s",PlayerInfo[playerid][Name],playerid,TeamInfo[team][TeamName],team,text);			for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && PlayerInfo[i][HearAll] && team != PlayerInfo[i][Team]) WriteEcho(str,i,TeamInfo[team][TeamColor]);			format(str,sizeof(str),"%s (id: %d) to team:%s",PlayerInfo[playerid][Name],playerid,text);			WriteToLog(str);			for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && team == PlayerInfo[i][Team]) WriteEcho(str,i,TeamInfo[team][TeamColor]);			return 0;		}	#endif	format(str,sizeof(str),"%s (id: %d): %s",PlayerInfo[playerid][Name],playerid,text);	WriteToLog(str);	#if defined SolidColorChat		new color;		if (!PlayerInfo[playerid][AdminColored]) {	    	#if defined Teams	        	if (team > -1) color = TeamInfo[team][TeamColor];				else color = DefaultPlayerColors[playerid];			#else		    	color = DefaultPlayerColors[playerid];			#endif		}		else color = AdminColor;		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && !PlayerInfo[i][Ignores][playerid]) WriteEcho(str,i,color);		return 0;	#endif	return 1;}public OnPlayerPrivmsg(playerid,recieverid,text[]) {	if (!IsPlayerConnected(playerid)) return 0;	#if defined FloodInterval && defined FloodLines	    if (!IsPlayerAdmin(playerid) && PlayerInfo[playerid][Admin] < AdminLevelToIgnorePunishment) {	    	PlayerInfo[playerid][Messages]++;	    	if (PlayerInfo[playerid][Messages] > FloodLines) {	    	    PlayerInfo[playerid][Messages] = 0;				KickPlayer(playerid,"Stop flooding");	            return 0;	    	}		}	#endif	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name])) && !PlayerInfo[playerid][Logged]) return 0;	FixChars(text);	//for (new i=0,pos;i<BadWords;i++) while ((pos=strfind(RuLower(text),BadWord[i],true)) != -1) for (new j=pos;j<pos+strlen(BadWord[i]);j++) text[j] = '#';	new str[MAX_STRING];	format(str,sizeof(str),"%s (id: %d) sent PM to %s (id: %d): %s",PlayerInfo[playerid][Name],playerid,PlayerInfo[recieverid][Name],recieverid,text);	WriteToLog(str);	if (!IsPlayerAdmin(playerid) && !IsPlayerAdmin(recieverid)) for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && PlayerInfo[i][Admin] > PlayerInfo[playerid][Admin] && PlayerInfo[i][Admin] > PlayerInfo[recieverid][Admin] && PlayerInfo[i][HearAll]) WriteEcho(str,i,PrivateMsgColor);	format(str,sizeof(str),"PM to %s (id: %d): %s",PlayerInfo[recieverid][Name],recieverid,text);	WriteEcho(str,playerid,PrivateMsgColor);	if (PlayerInfo[recieverid][Ignores][playerid]) return 0;	format(str,sizeof(str),"PM from %s (id: %d): %s",PlayerInfo[playerid][Name],playerid,text);	WriteEcho(str,recieverid,PrivateMsgColor);	return 0;}#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1dcmd_help(playerid,params[]) {	#pragma unused params	WriteEcho("SimpleDM by ProRaiL:",playerid);	WriteEcho("This gamemode is a free for all deathmatch mode, If you want to play you must follow simple rules:",playerid,HelpMsgColor);	WriteEcho("DO NOT use any cheats or game bugs; DO NOT abuse; DO NOT shoot from car; DO NOT kill teammates;",playerid,HelpMsgColor);	WriteEcho("CO-OPERATE with server administrators, if they ask so;",playerid,HelpMsgColor);	WriteEcho("If you will not follow that rules, you will be punished by the server or it's administrators",playerid,HelpMsgColor);	#if defined Teams		if (PlayerInfo[playerid][Team] > -1) WriteEcho("You can write into your team's chat by prefixing your messages with symbol \"*\"",playerid,HelpMsgColor);	#endif	WriteEcho("Weapons can be bought via /w[eaponlist] and /b[uy] commands",playerid,HelpMsgColor);	WriteEcho("Report cheaters with /report command",playerid,HelpMsgColor);	WriteEcho("To see the list of all commands, type /c[ommands]",playerid,HelpMsgColor);	return 1;}dcmd_h(playerid,params[]) {    dcmd_help(playerid,params);	return 1;}dcmd_commands(playerid,params[]) {	#pragma unused params	WriteEcho("Available commands:",playerid);	WriteEcho("Account related: /register /l[ogin] /changepassword /s[tats]",playerid,HelpMsgColor);	WriteEcho("Chat related: /pm /msg /q[uery] /ignore",playerid,HelpMsgColor);	WriteEcho("Weapon related: /w[eaponlist] /b[uy]",playerid,HelpMsgColor);	WriteEcho("Other: /k[ill] /send /report /countdown",playerid,HelpMsgColor);	return 1;}dcmd_c(playerid,params[]) {    dcmd_commands(playerid,params);	return 1;}dcmd_register(playerid,params[]) {	new str[MAX_STRING];	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name]))) {		format(str,sizeof(str),"This nickname already registered (%s)",PlayerInfo[playerid][Name]);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /register <password>",playerid,HelpMsgColor);		return 1;	}	if (strlen(tmp) < 5) {		WriteEcho("Password length must be at least 5 symbols",playerid,ErrorMsgColor);		return 1;	}	dini_Create(PlayerFile(PlayerInfo[playerid][Name]));	PlayerInfo[playerid][Password] = num_hash(tmp);	PlayerInfo[playerid][Logged] = true;	SavePlayer(playerid);	format(str,sizeof(str),"%s (id: %d) registered an account",PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	format(str,sizeof(str),"You are successfully registered your nickname (%s)! Next time you connect, type /login %s to identify yourself",PlayerInfo[playerid][Name],tmp);	WriteEcho(str,playerid);	return 1;}dcmd_login(playerid,params[]) {	new str[MAX_STRING];	if (!dini_Exists(PlayerFile(PlayerInfo[playerid][Name]))) {		format(str,sizeof(str),"This nickname is not registered (%s). Register it by using /register command",PlayerInfo[playerid][Name]);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /login <password>",playerid,HelpMsgColor);		return 1;	}	if (PlayerInfo[playerid][Logged]) {		WriteEcho("You already logged in",playerid,ErrorMsgColor);		return 1;	}	if (PlayerInfo[playerid][Password] != num_hash(tmp)) {		PlayerInfo[playerid][WrongPasswords]++;		if (PlayerInfo[playerid][WrongPasswords] > 5) {			KickPlayer(playerid,"Too many invalid passwords");			return 1;		}		format(str,sizeof(str),"%s (id: %d) typed wrong password",PlayerInfo[playerid][Name],playerid);		WriteToLog(str);		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);		format(str,sizeof(str),"You typed wrong password (%s)",tmp,PlayerInfo[playerid][WrongPasswords]);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	PlayerInfo[playerid][Logged] = true;	format(str,sizeof(str),"%s (id: %d) logged in",PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	WriteEcho("You are successfully logged in",playerid);	PlayerInfo[playerid][SafeDeath] = true;	SetSpawnInfo(playerid,0,0,0,0,5,0,0,0,0,0,0,0);	SpawnPlayer(playerid);	SetPlayerCameraPos(playerid,1481.4418,-1795.4611,156.7533);	SetPlayerCameraLookAt(playerid,1481.4418,-1790.4611,156.7533);	SetPlayerHealth(playerid,0);	SetPlayerColor(playerid,DefaultPlayerColors[playerid]-0xFF);	SendDeathMessage(INVALID_PLAYER_ID,playerid,201);	return 1;}dcmd_l(playerid,params[]) {	dcmd_login(playerid,params);	return 1;}dcmd_changepassword(playerid,params[]) {	new str[MAX_STRING];	if (!dini_Exists(PlayerFile(PlayerInfo[playerid][Name]))) {		format(str,sizeof(str),"This nickname is not registered (%s). Register it by using /register command",PlayerInfo[playerid][Name]);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /changepassword <old password> <new password>",playerid,HelpMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /changepassword <old password> <new password>",playerid,HelpMsgColor);		return 1;	}	if (PlayerInfo[playerid][Password] != num_hash(tmp)) {		PlayerInfo[playerid][WrongPasswords]++;		if (PlayerInfo[playerid][WrongPasswords] > 5) {			KickPlayer(playerid,"Too many invalid passwords");			return 1;		}		format(str,sizeof(str),"%s (id: %d) typed wrong password",PlayerInfo[playerid][Name],playerid);		WriteToLog(str);		format(str,sizeof(str),"You typed wrong password (%s)",tmp,PlayerInfo[playerid][WrongPasswords]);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	PlayerInfo[playerid][Password] = num_hash(tmp2);	format(str,sizeof(str),"%s (id: %d) changed his password",PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	format(str,sizeof(str),"You are successfully changed your password. Next time you connect, type /login %s to identify yourself",tmp2);	WriteEcho(str,playerid);	return 1;}dcmd_stats(playerid,params[]) {	new str[MAX_STRING],tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		format(str,sizeof(str),"Your statistic (%s):",PlayerInfo[playerid][Name]);		WriteEcho(str,playerid);		format(str,sizeof(str),"Money: %d",GetPlayerMoney(playerid));		WriteEcho(str,playerid,HelpMsgColor);		format(str,sizeof(str),"Kills: %d",PlayerInfo[playerid][Kills]);		WriteEcho(str,playerid,HelpMsgColor);		format(str,sizeof(str),"Maximum kills for life: %d",PlayerInfo[playerid][MaxKillsForLife]);		WriteEcho(str,playerid,HelpMsgColor);		format(str,sizeof(str),"Deaths: %d",PlayerInfo[playerid][Deaths]);		WriteEcho(str,playerid,HelpMsgColor);		format(str,sizeof(str),"Suicides: %d",PlayerInfo[playerid][Suicides]);		WriteEcho(str,playerid,HelpMsgColor);		if (PlayerInfo[playerid][Deaths] > 0) {			new Float:ratio = floatdiv(PlayerInfo[playerid][Kills],PlayerInfo[playerid][Deaths]);			format(str,sizeof(str),"Kills/deaths ratio: %f",ratio);			WriteEcho(str,playerid,HelpMsgColor);		}	}	else {		new targetid = GetPlayerID(tmp);		if (targetid != INVALID_PLAYER_ID) {			format(str,sizeof(str),"Statistic for player %s (id: %d):",PlayerInfo[targetid][Name],targetid);			WriteEcho(str,playerid);			format(str,sizeof(str),"Money: %d",GetPlayerMoney(targetid));			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Kills: %d",PlayerInfo[targetid][Kills]);			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Maximum kills for life: %d",PlayerInfo[targetid][MaxKillsForLife]);			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Deaths: %d",PlayerInfo[targetid][Deaths]);			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Suicides: %d",PlayerInfo[targetid][Suicides]);			WriteEcho(str,playerid,HelpMsgColor);			if (PlayerInfo[targetid][Deaths] > 0) {				new Float:ratio = floatdiv(PlayerInfo[targetid][Kills],PlayerInfo[targetid][Deaths]);				format(str,sizeof(str),"Kills/deaths ratio: %f",ratio);				WriteEcho(str,playerid,HelpMsgColor);			}		}		else {			new filename[MAX_STRING];			filename = PlayerFile(tmp);			if (!dini_Exists(filename)) { 				format(str,sizeof(str),"This nickname is not registered (%s)",tmp);				WriteEcho(str,playerid,ErrorMsgColor);				return 1;			}			format(str,sizeof(str),"Statistic for player %s:",tmp);			WriteEcho(str,playerid);			format(str,sizeof(str),"Money: %d",dini_Int(filename,"Moneys"));			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Kills: %d",dini_Int(filename,"Kills"));			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Maximum kills for life: %d",dini_Int(filename,"MaxKillsForLife"));			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Deaths: %d",dini_Int(filename,"Deaths"));			WriteEcho(str,playerid,HelpMsgColor);			format(str,sizeof(str),"Suicides: %d",dini_Int(filename,"Suicides"));			WriteEcho(str,playerid,HelpMsgColor);			new deaths = dini_Int(filename,"Deaths");			if (deaths > 0) {				new Float:ratio = floatdiv(dini_Int(filename,"Kills"),deaths);				format(str,sizeof(str),"Kills/deaths ratio: %f",ratio);				WriteEcho(str,playerid,HelpMsgColor);			}		}	}	return 1;}dcmd_s(playerid,params[]) {	dcmd_stats(playerid,params);	return 1;}dcmd_query(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /query <playerid>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot query yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot query offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	PlayerInfo[playerid][Query] = targetid;	format(str,sizeof(str),"You made query with %s (id: %d). You can send him PMs easily by prefixing messages with symbol \"!\"",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	return 1;}dcmd_q(playerid,params[]) {	dcmd_query(playerid,params);	return 1;}dcmd_ignore(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /ignore <playerid>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot ignore yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot ignore offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (!PlayerInfo[playerid][Ignores][targetid]) {		PlayerInfo[playerid][Ignores][targetid] = true;		format(str,sizeof(str),"You added %s (id: %d) to your ignore list. You will not see his messages in the chat and PMs",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid);		format(str,sizeof(str),"If you will need to remove him from the ignore list just type /ignore %d again",targetid);		WriteEcho(str,playerid);	}	else {		PlayerInfo[playerid][Ignores][targetid] = false;		format(str,sizeof(str),"You deleted %s (id: %d) from your ignore list. You will see now his messages in the chat and PMs",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid);	}	return 1;}dcmd_weaponlist(playerid,params[]) {	#pragma unused params	WriteEcho("Available weapons (for non-melee weapons cost is per bullet):",playerid);	new str[MAX_STRING],tmp[WeaponGroups][MAX_STRING];	set(tmp[0],"Melee: ");	set(tmp[1],"Pistols: ");	set(tmp[2],"Shotguns: ");	set(tmp[3],"SMGs: ");	set(tmp[4],"Assault rifles: ");	set(tmp[5],"Other: ");	for (new i=0;i<Weapons;i++) {		format(str,sizeof(str),"%d) %s - $%d; ",i,WeaponNames[WeaponInfo[i][WeaponID]],WeaponInfo[i][WeaponCost]);		strcat(tmp[WeaponInfo[i][WeaponGroup]],str);	}	for (new i=0;i<WeaponGroups;i++) WriteEcho(tmp[i],playerid,HelpMsgColor);	return 1;}dcmd_w(playerid,params[]) {	dcmd_weaponlist(playerid,params);	return 1;}dcmd_buy(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /buy <weaponid> <ammo>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],weaponid = strval(tmp);	if (weaponid < 0 || Weapons <= weaponid) {		format(str,sizeof(str),"There is no such weapon (%d)",weaponid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (!WeaponInfo[weaponid][IsWeaponMelee]) {		new tmp2[MAX_STRING];		tmp2 = strtok(params,idx);		if (!strlen(tmp2)) {			WriteEcho("Syntax: /buy <weaponid> <ammo>",playerid,HelpMsgColor);			return 1;		}		new ammo = strval(tmp2);		if (ammo <= 0) {			format(str,sizeof(str),"You cannot buy that ammo (%d)",ammo);			WriteEcho(str,playerid,ErrorMsgColor);			return 1;		}		new moneys = WeaponInfo[weaponid][WeaponCost]*ammo;		if (PlayerInfo[playerid][Moneys] < moneys) {			format(str,sizeof(str),"You don't have enough money ($%d)",moneys);			WriteEcho(str,playerid,ErrorMsgColor);			return 1;		}		GivePlayerWeapon(playerid,WeaponInfo[weaponid][WeaponID],ammo);		if (weaponid == PlayerInfo[playerid][WeaponIDs][WeaponInfo[weaponid][WeaponGroup]]) PlayerInfo[playerid][WeaponAmmos][WeaponInfo[weaponid][WeaponGroup]] += ammo;		else {			PlayerInfo[playerid][WeaponIDs][WeaponInfo[weaponid][WeaponGroup]] = weaponid;			PlayerInfo[playerid][WeaponAmmos][WeaponInfo[weaponid][WeaponGroup]] = ammo;		}		GiveMoney(playerid,-moneys);		format(str,sizeof(str),"%s (id: %d) bought weapon %s (id: %d) (shop id: %d) (ammo: %d)",PlayerInfo[playerid][Name],playerid,WeaponNames[WeaponInfo[weaponid][WeaponID]],WeaponInfo[weaponid][WeaponID],weaponid,ammo);		WriteToLog(str);		format(str,sizeof(str),"You bought %s (id: %d) and %d bullets for $%d",WeaponNames[WeaponInfo[weaponid][WeaponID]],weaponid,ammo,moneys);		WriteEcho(str,playerid);	}	else {		if (PlayerInfo[playerid][Moneys] < WeaponInfo[weaponid][WeaponCost]) {			format(str,sizeof(str),"You don't have enough money ($%d)",WeaponInfo[weaponid][WeaponCost]);			WriteEcho(str,playerid,ErrorMsgColor);			return 1;		}		GivePlayerWeapon(playerid,WeaponInfo[weaponid][WeaponID],1);		PlayerInfo[playerid][WeaponIDs][WeaponInfo[weaponid][WeaponGroup]] = weaponid;		PlayerInfo[playerid][WeaponAmmos][WeaponInfo[weaponid][WeaponGroup]] = 1;		GiveMoney(playerid,-WeaponInfo[weaponid][WeaponCost]);		format(str,sizeof(str),"%s (id: %d) bought weapon %s (id: %d) (shop id: %d)",PlayerInfo[playerid][Name],playerid,WeaponNames[WeaponInfo[weaponid][WeaponID]],WeaponInfo[weaponid][WeaponID],weaponid);		WriteToLog(str);		format(str,sizeof(str),"You bought %s (id: %d) for $%d",WeaponNames[WeaponInfo[weaponid][WeaponID]],weaponid,WeaponInfo[weaponid][WeaponCost]);		WriteEcho(str,playerid);	}	return 1;}dcmd_b(playerid,params[]) {	dcmd_buy(playerid,params);	return 1;}dcmd_k(playerid,params[]) {	#pragma unused params	SetPlayerHealth(playerid,0);	return 1;}dcmd_send(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /send <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot send money to yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot send money to offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /send <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new amount = strval(tmp2);	if (amount <= 0) {		format(str,sizeof(str),"You cannot send that money ($%d)",amount);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (PlayerInfo[playerid][Moneys] < amount) {		format(str,sizeof(str),"You don't have enough money ($%d)",amount);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	GiveMoney(playerid,-amount);	GiveMoney(targetid,amount);	format(str,sizeof(str),"%s (id: %d) sent $%d to %s (id: %d)",PlayerInfo[playerid][Name],playerid,amount,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	format(str,sizeof(str),"You sent $%d to %s (id: %d)",amount,PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"You received $%d from %s (id: %d)",amount,PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_report(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /report <playerid> <text>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot report on yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot report on offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	/*if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot report on admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}*/	new tmp2[MAX_STRING];	strmid(tmp2,params,strlen(tmp)+1,strlen(params));	if (!strlen(tmp2)) {		WriteEcho("Syntax: /report <playerid> <reason>",playerid,HelpMsgColor);		return 1;	}	format(str,sizeof(str),"%s (id: %d) reported on %s (id: %d): %s",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid,tmp2);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);    WriteEcho("Your report sent to all online administrators",playerid);	return 1;}new bool:CountDown;new bool:InCountDown[MAX_PLAYERS];public CountDown0() {    for (new i=0;i<MAX_PLAYERS;i++) {        if (InCountDown[i]) {            GameTextForPlayer(i,"~r~~h~GO!",1000,3);			TogglePlayerControllable(i,1);        }    }    CountDown = false;}public CountDown1() for (new i=0;i<MAX_PLAYERS;i++) if (InCountDown[i]) GameTextForPlayer(i,"~r~~h~1",1000,3);public CountDown2() for (new i=0;i<MAX_PLAYERS;i++) if (InCountDown[i]) GameTextForPlayer(i,"~g~~h~2",1000,3);public CountDown3() for (new i=0;i<MAX_PLAYERS;i++) if (InCountDown[i]) GameTextForPlayer(i,"~g~~h~3",1000,3);public CountDown4() for (new i=0;i<MAX_PLAYERS;i++) if (InCountDown[i]) GameTextForPlayer(i,"~b~~h~4",1000,3);public CountDown5() for (new i=0;i<MAX_PLAYERS;i++) if (InCountDown[i]) GameTextForPlayer(i,"~b~~h~5",1000,3);dcmd_countdown(playerid,params[]) {	#pragma unused params	if (GetPlayerState(playerid) == PLAYER_STATE_NONE || GetPlayerState(playerid) == PLAYER_STATE_WASTED) {	    WriteEcho("You must be spawned to use countdown",playerid,ErrorMsgColor);		return 1;	}	if (CountDown) {	    WriteEcho("Countdown is in progress now",playerid,ErrorMsgColor);		return 1;	}	CountDown = true;	new Float:x,Float:y,Float:z;	GetPlayerPos(playerid,x,y,z);	for (new i=0;i<MAX_PLAYERS;i++) {		if (IsPlayerInArea(i,x-20,x+20,y-20,x+20,z-5,z+5) && GetPlayerState(i) != PLAYER_STATE_NONE && GetPlayerState(i) != PLAYER_STATE_WASTED) {			InCountDown[i] = true;			TogglePlayerControllable(i,0);			GameTextForPlayer(i,"~w~~h~READY!",1000,3);		}		else InCountDown[i] = false;	}	SetTimer("CountDown0",6000,0);	SetTimer("CountDown1",5000,0);	SetTimer("CountDown2",4000,0);	SetTimer("CountDown3",3000,0);	SetTimer("CountDown4",2000,0);	SetTimer("CountDown5",1000,0);	return 1;}dcmd_alogin(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /alogin <login> <password>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING];	if (!dini_Isset(AdminsFile,tmp)) {		PlayerInfo[playerid][WrongPasswords]++;		if (PlayerInfo[playerid][WrongPasswords] > 5) {			KickPlayer(playerid,"Too many invalid passwords");			return 1;		}		format(str,sizeof(str),"%s (id: %d) typed wrong login (%s) in admin login",PlayerInfo[playerid][Name],playerid,tmp);		WriteToLog(str);		#if defined AdminsLog			WriteToLog(str,AdminsLog);		#endif		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);		WriteEcho("You typed wrong login or password",playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /alogin <login> <password>",playerid,HelpMsgColor);		return 1;	}	idx = 0;	new password = strval(strtok(dini_Get(AdminsFile,tmp),idx,','));	if (password != num_hash(tmp2)) {		PlayerInfo[playerid][WrongPasswords]++;		if (PlayerInfo[playerid][WrongPasswords] > 5) {			KickPlayer(playerid,"Too many invalid passwords");			return 1;		}		format(str,sizeof(str),"%s (id: %d) typed wrong password in admin login as %s",PlayerInfo[playerid][Name],playerid,tmp);		WriteToLog(str);		#if defined AdminsLog			WriteToLog(str,AdminsLog);		#endif		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);		WriteEcho("You typed wrong login or password",playerid,ErrorMsgColor);		return 1;	}	new level = strval(strtok(dini_Get(AdminsFile,tmp),idx,','));	PlayerInfo[playerid][Admin] = level;	format(str,sizeof(str),"%s (id: %d) logged in as admin %s (level: %d)",PlayerInfo[playerid][Name],playerid,tmp,level);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	format(str,sizeof(str),"You are successfully logged in as admin %s",tmp);	WriteEcho(str,playerid);		AllowPlayerTeleport(playerid, 1);		return 1;}dcmd_ahelp(playerid,params[]) {	#pragma unused params	new str[MAX_STRING];	format(str,sizeof(str),"Your admin level: %d",PlayerInfo[playerid][Admin]);	WriteEcho(str,playerid,HelpMsgColor);	WriteEcho("Admin chat is available by prefixing your message with symbol \"%\"",playerid,HelpMsgColor);	WriteEcho("Available commands:",playerid);	if (PlayerInfo[playerid][Admin] > 1) WriteEcho("/acolor /announce /mute /unmute /kick /ban",playerid,HelpMsgColor);	else WriteEcho("/acolor /announce /mute /unmute",playerid,HelpMsgColor);	if (PlayerInfo[playerid][Admin] > 3) WriteEcho("/outcar /disarm /freeze /unfreeze /locations /teleport /goto /gethere /tocar",playerid,HelpMsgColor);	else if (PlayerInfo[playerid][Admin] > 2) WriteEcho("/outcar /disarm /freeze /unfreeze",playerid,HelpMsgColor);	if (PlayerInfo[playerid][Admin] > 6) WriteEcho("/givemoney /setmoney /weaponids /giveweapon /hearall /settime",playerid,HelpMsgColor);	else if (PlayerInfo[playerid][Admin] > 5) WriteEcho("/givemoney /setmoney /weaponids /giveweapon",playerid,HelpMsgColor);	else if (PlayerInfo[playerid][Admin] > 4) WriteEcho("/givemoney /setmoney",playerid,HelpMsgColor);	if (PlayerInfo[playerid][Admin] > 8) WriteEcho("/rape /heal /godmode /globalsave /gamemodeexit",playerid,HelpMsgColor);	else if (PlayerInfo[playerid][Admin] > 7) WriteEcho("/rape /heal /godmode",playerid,HelpMsgColor);	return 1;}dcmd_acolor(playerid,params[]) {	#pragma unused params	if (!PlayerInfo[playerid][AdminColored]) {		PlayerInfo[playerid][AdminColored] = true;		SetPlayerColor(playerid,AdminColor);		WriteEcho("You are now marked with special color",playerid);	}	else {		PlayerInfo[playerid][AdminColored] = false;		#if defined Teams			if (PlayerInfo[playerid][Team] > -1) SetPlayerColor(playerid,TeamInfo[PlayerInfo[playerid][Team]][TeamColor]);			else		#endif		SetPlayerColor(playerid,DefaultPlayerColors[playerid]);		WriteEcho("You are no longer marked with special color",playerid);	}	return 1;}dcmd_announce(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /announce <duration> <text>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],duration = strval(tmp);	if (duration < 1) {		format(str,sizeof(str),"You cannot announce for that duration (%d)",duration);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	strmid(tmp2,params,strlen(tmp)+1,strlen(params));	if (!strlen(tmp2)) {		WriteEcho("Syntax: /announce <duration> <text>",playerid,HelpMsgColor);		return 1;	}	GameTextForAll(tmp2,duration*1000,5);	format(str,sizeof(str),"%s (id: %d) announced for %d seconds: %s",PlayerInfo[playerid][Name],playerid,duration,tmp2);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	return 1;}dcmd_mute(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /mute <playerid> <duration> <reason>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot mute yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot mute offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot mute admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /mute <playerid> <duration> <reason>",playerid,HelpMsgColor);		return 1;	}	new duration = strval(tmp2);	if (duration < 1) {		format(str,sizeof(str),"You cannot mute for such duration (%d)",duration);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp3[MAX_STRING];	strmid(tmp3,params,strlen(tmp)+strlen(tmp2)+2,strlen(params));	if (!strlen(tmp3)) {		WriteEcho("Syntax: /mute <playerid> <duration> <reason>",playerid,HelpMsgColor);		return 1;	}	format(str,sizeof(str),"%s (id: %d) muted by %s (id: %d) for %d minutes: %s",PlayerInfo[targetid][Name],targetid,PlayerInfo[playerid][Name],playerid,duration,tmp3);	WriteToLog(str);	#if defined MutesLog	   	WriteToLog(str,MutesLog);	#endif	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,MuteMsgColor);	PlayerInfo[targetid][Mute] = duration;	PlayerInfo[targetid][MuteTimer] = SetTimerEx("UnMutePlayerT",duration*60000,0,"i",targetid);	return 1;}dcmd_unmute(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /unmute <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot unmute offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	format(str,sizeof(str),"%s (id: %d) unmuted by %s (id: %d)",PlayerInfo[targetid][Name],targetid,PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	#if defined MutesLog	   	WriteToLog(str,MutesLog);	#endif	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,MuteMsgColor);	PlayerInfo[targetid][Mute] = 0;	KillTimer(PlayerInfo[targetid][MuteTimer]);	return 1;}dcmd_kick(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /kick <playerid> <reason>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot kick yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot kick offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot kick admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	strmid(tmp2,params,strlen(tmp)+1,strlen(params));	if (!strlen(tmp2)) {		WriteEcho("Syntax: /kick <playerid> <reason>",playerid,HelpMsgColor);		return 1;	}	format(str,sizeof(str),"%s (id: %d) kicked by %s (id: %d): %s",PlayerInfo[targetid][Name],targetid,PlayerInfo[playerid][Name],playerid,tmp2);	WriteToLog(str);	#if defined KicksFile		WriteToLog(str,KicksFile);	#endif	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,KickMsgColor);	Kick(targetid);	return 1;}dcmd_ban(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /ban <playerid> <reason>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot ban yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot ban offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot ban admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	strmid(tmp2,params,strlen(tmp)+1,strlen(params));	if (!strlen(tmp2)) {		WriteEcho("Syntax: /ban <playerid> <reason>",playerid,HelpMsgColor);		return 1;	}	format(str,sizeof(str),"%s (id: %d) banned by %s (id: %d): %s",PlayerInfo[targetid][Name],targetid,PlayerInfo[playerid][Name],playerid,tmp2);	WriteToLog(str);	#if defined BansLog		WriteToLog(str,BansLog);	#endif	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,KickMsgColor);	Ban(targetid);	return 1;}dcmd_outcar(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /outcar <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot throw from car offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	/*if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot throw from car admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}*/	RemovePlayerFromVehicle(targetid);	format(str,sizeof(str),"%s (id: %d) thrown %s (id: %d) from car",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You thrown %s (id: %d) from car",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"You thrown from car by %s (id: %d)",PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_disarm(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /disarm <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot disarm offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot disarm admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	ResetPlayerWeapons(targetid);	format(str,sizeof(str),"%s (id: %d) disarmed %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You disarmed %s (id: %d)",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"You disarmed by %s (id: %d)",PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_freeze(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /freeze <playerid>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	/*if (targetid == playerid) {		WriteEcho("You cannot freeze yourself",playerid,ErrorMsgColor);		return 1;	}*/	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot freeze offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	/*if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot freeze admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}*/	TogglePlayerControllable(targetid,0);	format(str,sizeof(str),"%s (id: %d) froze %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,FreezeMsgColor);	return 1;}dcmd_unfreeze(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /unfreeze <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot unfreeze offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	TogglePlayerControllable(targetid,1);	format(str,sizeof(str),"%s (id: %d) unfroze %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	WriteEcho(str,INVALID_PLAYER_ID,FreezeMsgColor);	return 1;}dcmd_locations(playerid,params[]) {	#pragma unused params	WriteEcho("Available teleport locations:",playerid);	WriteEcho("Los Santos: 0) Groove Street; 1) Airport; 2) Highest Building; 3) Lighthouse;",playerid,HelpMsgColor);	WriteEcho("San-Fierro: 4) Doherty; 5) Airport; 6) Highest Building; 7) Golden Gate;",playerid,HelpMsgColor);	WriteEcho("Las Venturas: 8) Four Dragons; 9) Airport; 10) Highest Building;",playerid,HelpMsgColor);	WriteEcho("Other: 11) Mountain Chilliad; 12) Abandoned Airstrip; 13) Area 69 Military Base",playerid,HelpMsgColor);	return 1;}#define Locations 14enum LocationInfos {	LocationName[24],	Float:LocationX,	Float:LocationY,	Float:LocationZ}new LocationInfo[Locations][LocationInfos] = {	{"LS Groove Street",2492.9375,-1670.4402,13.3359},	{"LS Airport",1925.1957,-2426.8733,13.5391},	{"LS Highest Building",1556.2386,-1357.8395,329.4544},	{"LS Lighthouse",154.0820,-1938.4050,3.7734},	{"SF Doherty",-2026.0696,175.2042,28.8359},	{"SF Airport",-1281.1655,-166.1917,14.1484},	{"SF Highest Building",-1753.8291,885.4835,295.8750},	{"SF Golden Gate",-2678.8230,1595.1827,217.2739},	{"LV Four Dragons",2030.2551,1007.9247,10.8203},	{"LV Airport",1525.6610,1594.5865,10.8203},	{"LV Highest Building",2057.1145,2435.5623,165.6172},	{"Mountain Chilliad",-2321.2866,-1637.9414,483.7031},	{"Abandoned Airstrip",324.9738,2520.6030,16.6942},	{"Area 69 Military Base",213.6413,1904.4032,17.6406}};dcmd_teleport(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /teleport <locationid> [playerid]",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],location = strval(tmp);	if (location < 0 || Locations <= location) {		format(str,sizeof(str),"You cannot teleport to that location (%d)",location);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING],targetid;	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) targetid = playerid;	else targetid = strval(tmp2);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot teleport offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (!IsPlayerInAnyVehicle(targetid)) {	    SetPlayerInterior(targetid,0);		SetPlayerPos(targetid,LocationInfo[location][LocationX],LocationInfo[location][LocationY],LocationInfo[location][LocationZ]);	}	else SetVehiclePos(GetPlayerVehicleID(targetid),LocationInfo[location][LocationX],LocationInfo[location][LocationY],LocationInfo[location][LocationZ]);	if (targetid == playerid) {		format(str,sizeof(str),"%s (id: %d) teleported to location %s (id: %d)",PlayerInfo[playerid][Name],playerid,LocationInfo[location][LocationName],location);		WriteToLog(str);		#if defined AdminsLog	   		WriteToLog(str,AdminsLog);		#endif		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);		format(str,sizeof(str),"You teleported to %s (id: %d)",LocationInfo[location][LocationName],location);		WriteEcho(str,playerid);	}	else {		format(str,sizeof(str),"%s (id: %d) teleported %s (id: %d) to location %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid,LocationInfo[location][LocationName],location);		WriteToLog(str);		#if defined AdminsLog	   		WriteToLog(str,AdminsLog);		#endif		for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);		format(str,sizeof(str),"You teleported %s (id: %d) to %s (id: %d)",PlayerInfo[targetid][Name],targetid,LocationInfo[location][LocationName],location);		WriteEcho(str,playerid);		format(str,sizeof(str),"You teleported by %s (id: %d) to %s (id: %d)",PlayerInfo[playerid][Name],playerid,LocationInfo[location][LocationName],location);		WriteEcho(str,targetid);	}	return 1;}dcmd_goto(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /goto <playerid>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot teleport to yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot teleport to offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new Float:x,Float:y,Float:z;	GetPlayerPos(targetid,x,y,z);	if (!IsPlayerInAnyVehicle(playerid)) {	    SetPlayerInterior(playerid,0);		SetPlayerPos(playerid,x,y,z);	}	else SetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);	format(str,sizeof(str),"%s (id: %d) teleported to player %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You teleported to %s (id: %d)",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	return 1;}dcmd_gethere(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /gethere <playerid>",playerid,HelpMsgColor);		return 1;	}	new targetid = strval(tmp);	if (targetid == playerid) {		WriteEcho("You cannot teleport yourself to yourself",playerid,ErrorMsgColor);		return 1;	}	new str[MAX_STRING];	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot teleport offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new Float:x,Float:y,Float:z;	GetPlayerPos(playerid,x,y,z);	if (!IsPlayerInAnyVehicle(targetid)) {	    SetPlayerInterior(targetid,0);		SetPlayerPos(targetid,x,y,z);	}	else SetVehiclePos(GetPlayerVehicleID(targetid),x,y,z);	format(str,sizeof(str),"%s (id: %d) teleported player %s (id: %d) to him",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You teleported %s (id: %d) to yourself",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	return 1;}dcmd_tocar(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /tocar <vehicleid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],vehicleid = strval(tmp);	if (vehicleid < 1 || Vehicles < vehicleid) {		format(str,sizeof(str),"You cannot teleport to that vehicle (%d)",vehicleid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new Float:x,Float:y,Float:z;	GetVehiclePos(vehicleid,x,y,z);	if (!IsPlayerInAnyVehicle(playerid)) {	    SetPlayerInterior(playerid,0);		SetPlayerPos(playerid,x+3,y+3,z);	}	else SetVehiclePos(GetPlayerVehicleID(playerid),x+3,y+3,z);	format(str,sizeof(str),"%s (id: %d) teleported to vehicle (id: %d)",PlayerInfo[playerid][Name],playerid,vehicleid);	WriteToLog(str);	#if defined AdminsLog		WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You teleported vehicle (id: %d)",vehicleid);	WriteEcho(str,playerid);	return 1;}dcmd_givemoney(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /givemoney <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot give money to offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /givemoney <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new amount = strval(tmp2);	GiveMoney(targetid,amount);	format(str,sizeof(str),"%s (id: %d) gave $%d to %s (id: %d)",PlayerInfo[playerid][Name],playerid,amount,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You gave $%d to %s (id: %d)",amount,PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"You received $%d from %s (id: %d)",amount,PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_setmoney(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /setmoney <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot set money to offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /setmoney <playerid> <amount>",playerid,HelpMsgColor);		return 1;	}	new amount = strval(tmp2);	GiveMoney(targetid,-GetPlayerMoney(targetid)+amount);	format(str,sizeof(str),"%s (id: %d) set money of %s (id: %d) to $%d",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid,amount);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You set money of %s (id: %d) to $%d",PlayerInfo[targetid][Name],targetid,amount);	WriteEcho(str,playerid);	format(str,sizeof(str),"%s (id: %d) set your money to $%d",PlayerInfo[playerid][Name],playerid,amount);	WriteEcho(str,targetid);	return 1;}dcmd_weaponids(playerid,params[]) {	#pragma unused params	WriteEcho("2) Golf Club; 3) Nitestick; 4) Knife; 5)Baseball Bat; 6) Shovel; 7) Pool Cue;",playerid,HelpMsgColor);	WriteEcho("8) Katana; 9) Chainsaw; 10) Purple Dildo; 11) White Dildo; 12) Long Vibrator; 13) Vibrator;",playerid,HelpMsgColor);	WriteEcho("14) Flowers; 15) Cane; 22) Pistol; 23) Silenced Pistol; 24) Desert Eagle;",playerid,HelpMsgColor);	WriteEcho("25) Shotgun; 26) Sawnoff Shotgun; 27) Spas 12; 28) Micro Uzi; 29) MP5;",playerid,HelpMsgColor);	WriteEcho("30) AK-47; 31) M4; 32) Tec-9; 33) Rifle; 37) Flamethrower; 38) Minigun;",playerid,HelpMsgColor);	WriteEcho("39) Satchel; 40) Detonator; 41) Spray Can; 42) Fire Extinguisher; 43) Camera; 46) Parachute",playerid,HelpMsgColor);	return 1;}dcmd_giveweapon(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /giveweapon <playerid> <weaponid> <ammo>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot give weapon to offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp2[MAX_STRING];	tmp2 = strtok(params,idx);	if (!strlen(tmp2)) {		WriteEcho("Syntax: /giveweapon <playerid> <weaponid> <ammo>",playerid,HelpMsgColor);		return 1;	}	new weaponid = strval(tmp2);	if (weaponid < 2 || 15 < weaponid < 22 || 33 < weaponid < 37 || 43 < weaponid < 46) {		format(str,sizeof(str),"You cannot give that weapon (%d)",weaponid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	new tmp3[MAX_STRING];	tmp3 = strtok(params,idx);	if (!strlen(tmp3)) {		WriteEcho("Syntax: /giveweapon <playerid> <weaponid> <ammo>",playerid,HelpMsgColor);		return 1;	}	new ammo = strval(tmp3);	if (ammo < 0) {		format(str,sizeof(str),"You cannot give that ammo (%d)",ammo);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	GivePlayerWeapon(targetid,weaponid,ammo);	format(str,sizeof(str),"%s (id: %d) gave weapon %s (id: %d) (ammo: %d) to %s (id: %d)",PlayerInfo[playerid][Name],playerid,WeaponNames[weaponid],weaponid,PlayerInfo[targetid][Name],ammo,targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You gave weapon %s (id: %d) (ammo: %d) to %s (id: %d)",WeaponNames[weaponid],weaponid,ammo,PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"%s (id: %d) gave you weapon %s (id: %d) (ammo: %d)",PlayerInfo[playerid][Name],playerid,WeaponNames[weaponid],weaponid,ammo);	WriteEcho(str,targetid);	return 1;}dcmd_hearall(playerid,params[]) {	#pragma unused params	if (!PlayerInfo[playerid][HearAll]) {		PlayerInfo[playerid][HearAll] = true;		WriteEcho("You can see all private messages and team chats now",playerid);	}	else {		PlayerInfo[playerid][HearAll] = false;		WriteEcho("You will not see other private messages and team chats anymore",playerid);	}	return 1;}dcmd_settime(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /worldtime <time>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],worldtime = strval(tmp);	if (worldtime < 0 || 24 <= worldtime) {		format(str,sizeof(str),"You cannot set that time (%d)",worldtime);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	#if defined TimeCycle		WorldTime = worldtime;	#endif	SetWorldTime(worldtime);	format(str,sizeof(str),"%s (id %d) changed time to %d:00",PlayerInfo[playerid][Name],playerid,worldtime);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You changed game time to %d:00",worldtime);	WriteEcho(str,playerid);	return 1;}dcmd_rape(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /rape <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot rape offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	if (IsPlayerAdmin(targetid) || PlayerInfo[targetid][Admin] >= PlayerInfo[playerid][Admin]) {		format(str,sizeof(str),"You cannot rape admins (%s (id: %d))",PlayerInfo[targetid][Name],targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	SetPlayerHealth(targetid,0);	format(str,sizeof(str),"%s (id: %d) raped %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You raped %s (id: %d)",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	return 1;}dcmd_heal(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /heal <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot heal offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	SetPlayerHealth(targetid,100);	format(str,sizeof(str),"%s (id: %d) healed %s (id: %d)",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"You healed %s (id: %d)",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"You healed by %s (id: %d)",PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_godmode(playerid,params[]) {	new tmp[MAX_STRING],idx;	tmp = strtok(params,idx);	if (!strlen(tmp)) {		WriteEcho("Syntax: /godmode <playerid>",playerid,HelpMsgColor);		return 1;	}	new str[MAX_STRING],targetid = strval(tmp);	if (!IsPlayerConnected(targetid)) {		format(str,sizeof(str),"You cannot make invincible offline players (%d)",targetid);		WriteEcho(str,playerid,ErrorMsgColor);		return 1;	}	SetPlayerHealth(targetid,100000);	format(str,sizeof(str),"%s (id: %d) made %s (id: %d) invincible",PlayerInfo[playerid][Name],playerid,PlayerInfo[targetid][Name],targetid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid && i != targetid) WriteEcho(str,i,AdminChatColor);	format(str,sizeof(str),"%s (id: %d) is now invincible",PlayerInfo[targetid][Name],targetid);	WriteEcho(str,playerid);	format(str,sizeof(str),"%s (id: %d) made you invincible",PlayerInfo[playerid][Name],playerid);	WriteEcho(str,targetid);	return 1;}dcmd_globalsave(playerid,params[]) {	#pragma unused params	new str[MAX_STRING];	format(str,sizeof(str),"%s (id %d) called global save",PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	SaveAllPlayers();	WriteEcho("Global save done",playerid);	return 1;}dcmd_gamemodeexit(playerid,params[]) {	#pragma unused params	new str[MAX_STRING];	format(str,sizeof(str),"%s (id %d) called gamemode exit",PlayerInfo[playerid][Name],playerid);	WriteToLog(str);	#if defined AdminsLog	   	WriteToLog(str,AdminsLog);	#endif	for (new i=0;i<MAX_PLAYERS;i++) if (IsPlayerConnected(i) && (IsPlayerAdmin(i) || PlayerInfo[i][Admin] > 0) && i != playerid) WriteEcho(str,i,AdminChatColor);	WriteEcho("Gamemode exiting...",playerid);	GameModeExit();	return 1;}public OnPlayerCommandText(playerid,cmdtext[]) {	if (!IsPlayerConnected(playerid)) return 0;	if (strlen(cmdtext) > 64) {		KickPlayer(playerid,"Crash attack");		return 0;	}	#if defined FloodInterval && defined FloodLines	    if (!IsPlayerAdmin(playerid) && PlayerInfo[playerid][Admin] < AdminLevelToIgnorePunishment) {	    	PlayerInfo[playerid][Messages]++;	    	if (PlayerInfo[playerid][Messages] > FloodLines) {	    	    PlayerInfo[playerid][Messages] = 0;				KickPlayer(playerid,"Stop flooding");	            return 0;	    	}		}	#endif	FixChars(cmdtext);	#if defined CommandsLog	    new str[MAX_STRING];		format(str,sizeof(str),"%s (id: %d) typed command %s",PlayerInfo[playerid][Name],playerid,cmdtext);		WriteToLog(str,CommandsLog);		delete str;	#endif	dcmd(help,4,cmdtext);	dcmd(h,1,cmdtext);	dcmd(commands,8,cmdtext);	dcmd(c,1,cmdtext);	dcmd(register,8,cmdtext);	dcmd(login,5,cmdtext);	dcmd(l,1,cmdtext);	dcmd(stats,5,cmdtext);	dcmd(s,1,cmdtext);	dcmd(query,5,cmdtext);	dcmd(q,1,cmdtext);	dcmd(ignore,6,cmdtext);	if (dini_Exists(PlayerFile(PlayerInfo[playerid][Name])) && !PlayerInfo[playerid][Logged]) {		WriteEcho("You must be logged in to use commands",playerid,ErrorMsgColor);		WriteEcho("Identify yourself using /login command",playerid,ErrorMsgColor);		return 1;	}	dcmd(changepassword,14,cmdtext);	dcmd(weaponlist,10,cmdtext);	dcmd(w,1,cmdtext);	dcmd(buy,3,cmdtext);	dcmd(b,1,cmdtext);	dcmd(k,1,cmdtext);	dcmd(send,4,cmdtext);	dcmd(report,6,cmdtext);	dcmd(countdown,9,cmdtext);	if (IsPlayerAdmin(playerid)) PlayerInfo[playerid][Admin] = 10;	if (dini_Exists(AdminsFile)) dcmd(alogin,6,cmdtext);	if (PlayerInfo[playerid][Admin] > 0) {		dcmd(ahelp,5,cmdtext);		dcmd(acolor,6,cmdtext);		dcmd(announce,8,cmdtext);		dcmd(mute,4,cmdtext);		dcmd(unmute,6,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 1) {		dcmd(kick,4,cmdtext);		dcmd(ban,3,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 2) {		dcmd(outcar,6,cmdtext);		dcmd(disarm,6,cmdtext);		dcmd(freeze,6,cmdtext);		dcmd(unfreeze,8,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 3) {		dcmd(locations,9,cmdtext);		dcmd(teleport,8,cmdtext);		dcmd(goto,4,cmdtext);		dcmd(gethere,7,cmdtext);		dcmd(tocar,5,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 4) {		dcmd(givemoney,9,cmdtext);		dcmd(setmoney,8,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 5) {		dcmd(weaponids,9,cmdtext);		dcmd(giveweapon,10,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 6) {		dcmd(hearall,7,cmdtext);		dcmd(settime,7,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 7) {		dcmd(rape,4,cmdtext);		dcmd(heal,4,cmdtext);		dcmd(godmode,7,cmdtext);	}	if (PlayerInfo[playerid][Admin] > 8) {		dcmd(globalsave,10,cmdtext);		dcmd(gamemodeexit,12,cmdtext);	}	new str[MAX_STRING],cmd[MAX_STRING],idx;	cmd = strtok(cmdtext,idx);	format(str,sizeof(str),"There is no such command (%s)",cmd);	WriteEcho(str,playerid,ErrorMsgColor);	return 1;}