[Ajuda] Errors e warnings loucos
#1

Meu gamemode que estou criando do zero estб dando uns errors/warnings loucos em minha ultima compilaзгo, nгo sei o que hб de errado.

error 029: invalid expression, assumed zero
warning 215: expression has no effect


Aconteceu quando eu troquei %s por %d do playerid, agora o gamemode estб repleto desses errors/warnings em tudo que tem %s, %d, %i, etc.

Linha do erro:
Код:
format(gstring, sizeof(gstring), "AdmAviso: %s (%d) entrou no servidor.", GetPlayerNameEx(playerid, 0), playerid);
SendAdminMessage(COLOR_YELLOW, gstring, 1);
Funзгo GetPlayerNameEx:
Код:
stock GetPlayerNameEx(playerid, underscore = 1)
{
    new name[MAX_PLAYER_NAME + 2];
	GetPlayerName(playerid, name, sizeof(name));
	if(!underscore)
	{
	    for(new n = 0, len = strlen(name); n < len; n++)
		{
	        if(name[n] == '_')
			{
				name[n] = ' ';
			}
		}
	}
	return name;
}
Funзгo SendAdminMessage:
Код:
stock SendAdminMessage(color, const string[], adminlevel)
{
	foreach(new i: Player)
	{
		if(IsPlayerLoggedIn(i) && PlayerInfo[i][pAdminLevel] >= adminlevel)
		{
		    if(PlayerInfo[i][pBlockAdminMessage] == 0)
			{
				SendClientMessage(i, color, string);
			}
		}
 	}
	return 1;
}
Reply
#2

Parece tudo ok, qual parte estб dando o warning?
Reply
#3

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Parece tudo ok, qual parte estб dando o warning?
Sim, estб tudo ok. Acontece que eu fui alterar um %s por %d (playerid) porque tinha errado, daн quando fui compilar ficou repleto de errors/warnings em tudo que tem %s, %d, etc.
Reply
#4

Quote:
Originally Posted by RIPOrkut
Посмотреть сообщение
Sim, estб tudo ok. Acontece que eu fui alterar um %s por %d (playerid) porque tinha errado, daн quando fui compilar ficou repleto de errors/warnings em tudo que tem %s, %d, etc.
Impossнvel algo desse tipo, uma vez que as sintaxes %s e %d estгo contidas na string...sу pode ser outra coisa.
Reply
#5

Quote:
Originally Posted by Bruno13
Посмотреть сообщение
Impossнvel algo desse tipo, uma vez que as sintaxes %s e %d estгo contidas na string...sу pode ser outra coisa.
Aqui estб o cуdigo inteiro do gamemode, caso queira analisar...

Код:
#pragma dynamic 1450000

#include <a_samp>

#if defined MAX_VEHICLES
#undef MAX_VEHICLES
	#define MAX_VEHICLES (1275)
#endif

#if defined MAX_PLAYERS
#undef MAX_PLAYERS
	#define MAX_PLAYERS (175 + 1)
#endif

#include <DOF2>
#include <zcmd>
#include <sscanf2>
#include <foreach>
#include <streamer>
#include <easyDialog>
#include <eSelection>
#include <progress>
#include <strlib>
#include <YSI\y_va>

#define SCM SendClientMessage
#define SCMToAll SendClientMessageToAll

/*#define SendClientMessageEx(%1, %2, %3) new string[128]; SendClientMessage(%1, %2, (format(string, sizeof(string), %3), string))
#define SendClientMessageToAllEx(%1, %2) new string[128]; SendClientMessageToAll(%1, (format(string, sizeof(string), %2), string))*/
#define function%0(%1) forward%0(%1);public%0(%1)

#define SendServerMessage(%0,%1) \
	SendClientMessageEx(%0, -1, "SERVIDOR: "%1)

#define SendSyntaxMessage(%0,%1) \
	SendClientMessageEx(%0, COLOR_GREY, "USE: "%1)

#define SendErrorMessage(%0,%1) \
	SendClientMessageEx(%0, COLOR_LIGHTRED, "ERRO: "%1)

#define HOLDING(%0) \
	((newkeys & (%0)) == (%0))

#define PRESSED(%0) \
	(((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

#define RELEASED(%0) \
	(((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))

#if !defined KEY_AIM
	#define KEY_AIM KEY_HANDBRAKE
#endif

#define ALTCOMMAND:%1->%2;           \
	COMMAND:%1(playerid, params[])   \
	return cmd_%2(playerid, params);
	
#define PATH "LARP/Users/%s.ini"

#define COLOR_RGB(%1, %2, %3, %4) (((((%1) & 0xff) << 24) | (((%2) & 0xff) << 16) | (((%3) & 0xff) << 8) | ((%4) & 0xff)))
#define COLOR_WHITE (0xFFFFFFFF)
#define COLOR_BLACK (0x000000AA)
#define COLOR_GREY 	(0xAFAFAFFF)
#define COLOR_RED (0xFF0000FF)
#define COLOR_RED2 (0xAA3333FF)
#define COLOR_BLUE (0x2641FEFF)
#define COLOR_DBLUE (0x2641FEFF)
#define COLOR_GREEN (0x0D7304FF)
#define COLOR_GREEN2 (0x36A717FF)
#define COLOR_ADGREEN (0x00E100FF)
#define COLOR_LIGHTRED (0xFF6347FF)
#define COLOR_LIGHTGREEN (0x9ACD32FF)
#define COLOR_LIGHTBLUE (0xA9C4E4FF)
#define COLOR_YELLOW (0xxFFFF00FF)
#define COLOR_YELLOW2 (0xF5DEB3FF)
#define COLOR_YELLOW3 (0xFFE104FF)
#define COLOR_ORANGE (0xFF9900FF)
#define COLOR_GRAD1	(0xCCE6E6FF)
#define COLOR_GRAD2	(0xE2FFFFFF)
#define COLOR_GRAD3 (0xCBCCCEFF)
#define COLOR_GRAD4 (0xD8D8D8FF)
#define COLOR_GRAD5 (0xE3E3E3FF)
#define COLOR_GRAD6 (0xF0F0F0FF)
#define COLOR_FADE1 (0xE6E6E6E6)
#define COLOR_FADE2 (0xC8C8C8C8)
#define COLOR_FADE3 (0xAAAAAAAA)
#define COLOR_FADE4 (0x8C8C8C8C)
#define COLOR_FADE5 (0x6E6E6E6E)
#define COLOR_SAMP	(0xADC3E7FF)
#define COLOR_DEFAULT (0xADC3E7FF)
#define COLOR_NEWS (0x458E1DFF)
#define COLOR_GROVE (0x00FF00FF)
#define COLOR_SYSTEM (0xEFEFF7FF)
#define COLOR_WT (0x10CE96FF)
#define COLOR_DRUG (0xC41E3AFF)
#define COLOR_CONNECT (0xC0C0C0FF)
#define COLOR_HOUSE (0xCCFFDDFF)
#define COLOR_RADIO	(0xFFEC8BFF)
#define COLOR_ALLDEPT (0xF07A7AFF)
#define COLOR_ALLDEPTOOC (0xE08EFEFF)
#define COLOR_OOC (0xB1C8FBFF)
#define COLOR_REPORT (0xFFFF91FF)
#define COLOR_PURPLE (0xC2A2DAFF)
#define COLOR_DPURPLE (0x000080FF)
#define COLOR_PMRECEIVED (0xFFDC18FF)
#define COLOR_PMSENT (0xEEE854FF)
#define COLOR_LSPD (0x8D8DFFFF)
#define COLOR_LSFD (0xFF7D7DFF)

#define MODEL_SELECTION_SKINS (1)
#define MAX_ZONE_NAME (28)

native IsValidVehicle(vehicleid);
native gpci(playerid, serial[], len);

new gstring[2056];

new ghour = 0;
new gminute = 0;
new gsecond = 0;
new timeshift = 0;
new shifthour;

new WrongPassword[MAX_PLAYERS];
new CheckMoney[MAX_PLAYERS];

enum pInfo
{
	pID,
	pPassword[150],
	pIP[16],
	pEmail[26],
	pRegistered,
	pLogged,
	pMoney,
	pBankMoney,
	pSkin,
	pSex,
	pAge,
	pBirthdate[24],
	pOrigin[60],
	pEtnia[60],
	pLevel,
	pExperience,
	pPlayingHours,
	pAdminLevel,
	pAdminDuty,
	pHelperLevel,
	pHelperDuty,
	pInterior,
	pVirtualWorld,
	pJailed,
	pJailTime,
	pBanned,
	pWarns,
	pMuted,
	pDonateRank,
	pLicenses[3],
	Float:pPosX,
	Float:pPosY,
	Float:pPosZ,
	Float:pPosA,
	Float:pCrashX,
	Float:pCrashY,
	Float:pCrashZ,
	Float:pCrashA,
	pCrashInterior,
	pCrashVirtualWorld,
	pDead,
	pRespawnTime,
	pFightingStyle,
	pPen,
	pNote1[256],
	pNote2[256],
	pNote3[256],
	pNote4[256],
	pNote5[256],
	pForumName[MAX_PLAYER_NAME + 2],
	pPayCheckMoney,
	pUpgradePoints,
	pPayDayTime,
	Float:pSpawnHealth,
	pStrength,
	pPhone,
	pNumber,
	Float:pBattery,
	pCredits,
	pSavings,
	pHouseKey,
	pWeapon[13],
	pAmmo[13],
	pRadio,
	pChannel,
	pOwnedChannel,
	pAuthed,
	pCrashed,
	pMaskOn,
	pMaskID = 1000,
	pAccentOn,
	pAccent[128],
	pBMX,
	pCarKey,
	pVehicles[3],
	pVehicleSlot,
	pSpareKey,
	Float:pHunger,
	pLighter,
	pCigars,
	pBusinessKey,
	pWorkOn,
	pWalk,
	Float:pHealth,
	Float:pArmour,
	pHasArmour,
	pFaction,
	pRank,
	pTeam,
	pBadgeNumber,
	pLicenseWarns,
	pJailTime2,
	pArrested,
	pChatStyle,
	pSWAT,
	pSlot,
	pJob,
	pJobRank,
	pCareer,
	pSideJob,
	pSpawnType,
	pPrisoned,
	pKills,
	pDeaths,
	pBlockB[MAX_PLAYERS],
	pBlockOOC[MAX_PLAYERS],
	pBlockPM[MAX_PLAYERS],
	pBlockNews[MAX_PLAYERS],
	pBlockNickName[MAX_PLAYERS],
	pBlockAdminMessage[MAX_PLAYERS]
}
stock PlayerInfo[MAX_PLAYERS][pInfo];

static MaleSkins[185] =
{
	1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
	30, 32, 33, 34, 35, 36, 37, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 57, 58, 59, 60,
	61, 62, 66, 68, 72, 73, 78, 79, 80, 81, 82, 83, 84, 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, 119, 120,
	121, 122, 123, 124, 125, 126, 127, 128, 132, 133, 134, 135, 136, 137, 142, 143, 144, 146,
	147, 153, 154, 155, 156, 158, 159, 160, 161, 162, 167, 168, 170, 171, 173, 174, 175, 176,
	177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 200, 202, 203, 204, 206,
	208, 209, 210, 212, 213, 217, 220, 221, 222, 223, 228, 229, 230, 234, 235, 236, 239, 240,
	241, 242, 247, 248, 249, 250, 253, 254, 255, 258, 259, 260, 261, 262, 268, 272, 273, 289,
	290, 291, 292, 293, 294, 295, 296, 297, 299
};

static FemaleSkins[77] =
{
    9, 10, 11, 12, 13, 31, 38, 39, 40, 41, 53, 54, 55, 56, 63, 64, 65, 69,
    75, 76, 77, 85, 88, 89, 90, 91, 92, 93, 129, 130, 131, 138, 140, 141,
    145, 148, 150, 151, 152, 157, 169, 178, 190, 191, 192, 193, 194, 195,
    196, 197, 198, 199, 201, 205, 207, 211, 214, 215, 216, 219, 224, 225,
    226, 231, 232, 233, 237, 238, 243, 244, 245, 246, 251, 256, 257, 263,
    298
};

new AllSkins[223][1] =
{
     {6}, {265}, {267}, {240}, {228}, {114}, {120}, {147}, {294}, {227},
     {61}, {171}, {270}, {123}, {59}, {102}, {108}, {117}, {26},
     {26}, {100}, {256}, {263}, {262}, {261}, {260}, {259}, {258}, {257}, {256}, {255},
     {253}, {252}, {251}, {249}, {246}, {245}, {244}, {243}, {242}, {241}, {240}, {239},
     {238}, {237}, {236}, {235}, {234}, {233}, {232}, {231}, {230}, {229},
     {226}, {225}, {173}, {174}, {175}, {224}, {223}, {222}, {221}, {220}, {219}, {218},
     {217}, {216}, {215}, {214}, {213}, {212}, {211}, {210}, {209},
     {207}, {206}, {205}, {204}, {203}, {202}, {201}, {200}, {199}, {198}, {197}, {196},
     {195}, {194}, {193}, {192}, {191}, {190}, {189}, {185}, {184}, {183},
     {182}, {181}, {180}, {179}, {178}, {176}, {172}, {170}, {168}, {167}, {162},
     {161}, {160}, {159}, {158}, {157}, {156}, {155}, {154}, {153}, {152}, {151},
     {146}, {145}, {144}, {143}, {142}, {141}, {140}, {139}, {138}, {137}, {136}, {135},
     {134}, {133}, {132}, {131}, {130}, {129}, {128}, {254}, {99}, {97}, {96}, {95}, {94},
     {92}, {90}, {89}, {88}, {87}, {85}, {84}, {83}, {82}, {81}, {80}, {79}, {78}, {77}, {76},
     {75}, {73}, {72}, {69}, {68}, {67}, {66}, {64}, {63}, {62}, {58}, {57}, {56}, {55},
     {54}, {53}, {52}, {51}, {50}, {49}, {45}, {44}, {43}, {41}, {39}, {38}, {37}, {36}, {35},
     {34}, {33}, {32}, {31}, {30}, {29}, {28}, {27}, {26}, {25}, {24}, {23}, {22}, {21}, {20},
     {19}, {18}, {17}, {16}, {15}, {14}, {13}, {12}, {11}, {10}, {1}, {2}, {290},
     {291}, {292}, {293}, {187}, {296}, {297}, {298}, {299}
};

new stock VehicleNames[][] = {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel", "Dumper", "Firetruck", "Trashmaster",
    "Stretch", "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer",
    "Securicar", "Banshee", "Predator", "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach",
    "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral", "Squalo", "Seasparrow",
    "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair",
    "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale", "Oceanic",
    "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler", "ZR-350", "Walton",
    "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper", "Rancher",
    "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
    "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher",
    "Super GT", "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt", "Tanker", "Roadtrain",
    "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck",
    "Fortune", "Cadrona", "SWAT Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan",
    "Blade", "Streak", "Freight", "Vortex", "Vincent", "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder",
    "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite", "Windsor", "Monster", "Monster",
    "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper", "Broadway", "Tornado", "AT-400", "DFT-30",
    "Huntley", "Stafford", "BF-400", "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD Car", "SFPD Car", "LVPD Car",
    "Police Rancher", "Picador", "S.W.A.T", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs",
    "Boxville", "Tiller", "Utility Trailer"
};

enum SAZONE_MAIN
{
	SAZONE_NAME[28],
	Float:SAZONE_AREA[6]
};

static const gSAZones[][SAZONE_MAIN] =
{
	//	NAME                            AREA (Xmin,Ymin,Zmin,Xmax,Ymax,Zmax)
	{"Aldea Malvada",               {-1372.10,2498.50,0.00,-1277.50,2615.30,200.00}},
	{"Angel Pine",                  {-2324.90,-2584.20,-6.10,-1964.20,-2212.10,200.00}},
	{"Arco del Oeste",              {-901.10,2221.80,0.00,-592.00,2571.90,200.00}},
	{"Avispa Country Club",         {-2361.50,-417.10,0.00,-2270.00,-355.40,200.00}},
	{"Avispa Country Club",         {-2470.00,-355.40,0.00,-2270.00,-318.40,46.10}},
	{"Avispa Country Club",         {-2550.00,-355.40,0.00,-2470.00,-318.40,39.70}},
	{"Avispa Country Club",         {-2646.40,-355.40,0.00,-2270.00,-222.50,200.00}},
	{"Avispa Country Club",         {-2667.80,-302.10,-28.80,-2646.40,-262.30,71.10}},
	{"Avispa Country Club",         {-2831.80,-430.20,-6.10,-2646.40,-222.50,200.00}},
	{"Back o Beyond",               {-1166.90,-2641.10,0.00,-321.70,-1856.00,200.00}},
	{"Battery Point",               {-2741.00,1268.40,-4.50,-2533.00,1490.40,200.00}},
	{"Bayside Marina",              {-2353.10,2275.70,0.00,-2153.10,2475.70,200.00}},
	{"Bayside",                     {-2741.00,2175.10,0.00,-2353.10,2722.70,200.00}},
	{"Beacon Hill",                 {-399.60,-1075.50,-1.40,-319.00,-977.50,198.50}},
	{"Blackfield Chapel",           {1325.60,596.30,-89.00,1375.60,795.00,110.90}},
	{"Blackfield Chapel",           {1375.60,596.30,-89.00,1558.00,823.20,110.90}},
	{"Blackfield Section",          {1166.50,795.00,-89.00,1375.60,1044.60,110.90}},
	{"Blackfield Section",          {1197.30,1044.60,-89.00,1277.00,1163.30,110.90}},
	{"Blackfield Section",          {1277.00,1044.60,-89.00,1315.30,1087.60,110.90}},
	{"Blackfield Section",          {1375.60,823.20,-89.00,1457.30,919.40,110.90}},
	{"Blackfield",                  {964.30,1203.20,-89.00,1197.30,1403.20,110.90}},
	{"Blackfield",                  {964.30,1403.20,-89.00,1197.30,1726.20,110.90}},
	{"Blueberry Acres",             {-319.60,-220.10,0.00,104.50,293.30,200.00}},
	{"Blueberry",                   {104.50,-220.10,2.30,349.60,152.20,200.00}},
	{"Blueberry",                   {19.60,-404.10,3.80,349.60,-220.10,200.00}},
	{"Caligula's Palace",           {2087.30,1543.20,-89.00,2437.30,1703.20,110.90}},
	{"Caligula's Palace",           {2137.40,1703.20,-89.00,2437.30,1783.20,110.90}},
	{"Calton Heights",              {-2274.10,744.10,-6.10,-1982.30,1358.90,200.00}},
	{"Castillo del Diablo",			{-208.50,2123.00,-7.60,114.00,2337.10,200.00}},
	{"Castillo del Diablo",			{-208.50,2337.10,0.00,8.40,2487.10,200.00}},
	{"Castillo del Diablo",			{-464.50,2217.60,0.00,-208.50,2580.30,200.00}},
	{"Chinatown",					{-2274.10,578.30,-7.60,-2078.60,744.10,200.00}},
	{"City Hall",					{-2867.80,277.40,-9.10,-2593.40,458.40,200.00}},
	{"Come-A-Lot",					{2087.30,943.20,-89.00,2623.10,1203.20,110.90}},
	{"Commerce",					{1323.90,-1722.20,-89.00,1440.90,-1577.50,110.90}},
	{"Commerce",					{1323.90,-1842.20,-89.00,1701.90,-1722.20,110.90}},
	{"Commerce",					{1370.80,-1577.50,-89.00,1463.90,-1384.90,110.90}},
	{"Commerce",					{1463.90,-1577.50,-89.00,1667.90,-1430.80,110.90}},
	{"Commerce",					{1583.50,-1722.20,-89.00,1758.90,-1577.50,110.90}},
	{"Commerce",					{1667.90,-1577.50,-89.00,1812.60,-1430.80,110.90}},
	{"Conference Center",			{1046.10,-1804.20,-89.00,1323.90,-1722.20,110.90}},
	{"Conference Center",			{1073.20,-1842.20,-89.00,1323.90,-1804.20,110.90}},
	{"Cranberry Station",			{-2007.80,56.30,0.00,-1922.00,224.70,100.00}},
	{"Creek",						{2749.90,1937.20,-89.00,2921.60,2669.70,110.90}},
	{"Dillimore",					{580.70,-674.80,-9.50,861.00,-404.70,200.00}},
	{"Doherty",						{-2270.00,-324.10,-0.00,-1794.90,-222.50,200.00}},
	{"Doherty",                     {-2173.00,-222.50,-0.00,-1794.90,265.20,200.00}},
	{"Downtown Los Santos",			{1370.80,-1170.80,-89.00,1463.90,-1130.80,110.90}},
	{"Downtown Los Santos",			{1370.80,-1384.90,-89.00,1463.90,-1170.80,110.90}},
	{"Downtown Los Santos",			{1378.30,-1130.80,-89.00,1463.90,-1026.30,110.90}},
	{"Downtown Los Santos",			{1391.00,-1026.30,-89.00,1463.90,-926.90,110.90}},
	{"Downtown Los Santos",			{1463.90,-1290.80,-89.00,1724.70,-1150.80,110.90}},
	{"Downtown Los Santos",			{1463.90,-1430.80,-89.00,1724.70,-1290.80,110.90}},
	{"Downtown Los Santos",			{1507.50,-1385.20,110.90,1582.50,-1325.30,335.90}},
	{"Downtown Los Santos",			{1724.70,-1250.90,-89.00,1812.60,-1150.80,110.90}},
	{"Downtown Los Santos",			{1724.70,-1430.80,-89.00,1812.60,-1250.90,110.90}},
	{"Downtown",					{-1580.00,744.20,-6.10,-1499.80,1025.90,200.00}},
	{"Downtown",					{-1700.00,744.20,-6.10,-1580.00,1176.50,200.00}},
	{"Downtown",					{-1871.70,1176.40,-4.50,-1620.30,1274.20,200.00}},
	{"Downtown",					{-1982.30,744.10,-6.10,-1871.70,1274.20,200.00}},
	{"Downtown",					{-1993.20,265.20,-9.10,-1794.90,578.30,200.00}},
	{"Downtown",					{-2078.60,578.30,-7.60,-1499.80,744.20,200.00}},
	{"East Beach",					{2632.80,-1668.10,-89.00,2747.70,-1393.40,110.90}},
	{"East Beach",					{2632.80,-1852.80,-89.00,2959.30,-1668.10,110.90}},
	{"East Beach",					{2747.70,-1498.60,-89.00,2959.30,-1120.00,110.90}},
	{"East Beach",					{2747.70,-1668.10,-89.00,2959.30,-1498.60,110.90}},
	{"East Los Santos",				{2222.50,-1628.50,-89.00,2421.00,-1494.00,110.90}},
	{"East Los Santos",				{2266.20,-1494.00,-89.00,2381.60,-1372.00,110.90}},
	{"East Los Santos",				{2281.40,-1372.00,-89.00,2381.60,-1135.00,110.90}},
	{"East Los Santos",				{2381.60,-1454.30,-89.00,2462.10,-1135.00,110.90}},
	{"East Los Santos",				{2381.60,-1494.00,-89.00,2421.00,-1454.30,110.90}},
	{"East Los Santos",				{2421.00,-1628.50,-89.00,2632.80,-1454.30,110.90}},
	{"East Los Santos",				{2462.10,-1454.30,-89.00,2581.70,-1135.00,110.90}},
	{"Easter Basin",				{-1794.90,-50.00,-0.00,-1499.80,249.90,200.00}},
	{"Easter Basin",				{-1794.90,249.90,-9.10,-1242.90,578.30,200.00}},
	{"Easter Bay Airport",			{-1213.90,-50.00,-4.50,-947.90,578.30,200.00}},
	{"Easter Bay Airport",			{-1213.90,-730.10,0.00,-1132.80,-50.00,200.00}},
	{"Easter Bay Airport",			{-1242.90,-50.00,0.00,-1213.90,578.30,200.00}},
	{"Easter Bay Airport",			{-1315.40,-405.30,15.40,-1264.40,-209.50,25.40}},
	{"Easter Bay Airport",			{-1354.30,-287.30,15.40,-1315.40,-209.50,25.40}},
	{"Easter Bay Airport",			{-1490.30,-209.50,15.40,-1264.40,-148.30,25.40}},
	{"Easter Bay Airport",			{-1499.80,-50.00,-0.00,-1242.90,249.90,200.00}},
	{"Easter Bay Airport",			{-1794.90,-730.10,-3.00,-1213.90,-50.00,200.00}},
	{"Easter Bay Chemical",			{-1132.80,-768.00,0.00,-956.40,-578.10,200.00}},
	{"Easter Bay Chemical",			{-1132.80,-787.30,0.00,-956.40,-768.00,200.00}},
	{"El Corona",					{1692.60,-2179.20,-89.00,1812.60,-1842.20,110.90}},
	{"El Corona",					{1812.60,-2179.20,-89.00,1970.60,-1852.80,110.90}},
	{"El Quebrados",				{-1645.20,2498.50,0.00,-1372.10,2777.80,200.00}},
	{"Esplanade East",				{-1499.80,578.30,-79.60,-1339.80,1274.20,20.30}},
	{"Esplanade East",				{-1580.00,1025.90,-6.10,-1499.80,1274.20,200.00}},
	{"Esplanade East",				{-1620.30,1176.50,-4.50,-1580.00,1274.20,200.00}},
	{"Esplanade North",				{-1982.30,1274.20,-4.50,-1524.20,1358.90,200.00}},
	{"Esplanade North",				{-1996.60,1358.90,-4.50,-1524.20,1592.50,200.00}},
	{"Esplanade North",				{-2533.00,1358.90,-4.50,-1996.60,1501.20,200.00}},
	{"Fallen Tree",					{-792.20,-698.50,-5.30,-452.40,-380.00,200.00}},
	{"Fallow Bridge",               {434.30,366.50,0.00,603.00,555.60,200.00}},
	{"Fern Ridge",                  {508.10,-139.20,0.00,1306.60,119.50,200.00}},
	{"Financial",                   {-1871.70,744.10,-6.10,-1701.30,1176.40,300.00}},
	{"Fisher's Lagoon",             {1916.90,-233.30,-100.00,2131.70,13.80,200.00}},
	{"Flint Intersection",          {-187.70,-1596.70,-89.00,17.00,-1276.60,110.90}},
	{"Flint Range",                 {-594.10,-1648.50,0.00,-187.70,-1276.60,200.00}},
	{"Fort Carson",                 {-376.20,826.30,-3.00,123.70,1220.40,200.00}},
	{"Foster Valley",               {-2178.60,-1115.50,0.00,-1794.90,-599.80,200.00}},
	{"Foster Valley",               {-2178.60,-1250.90,0.00,-1794.90,-1115.50,200.00}},
	{"Foster Valley",               {-2178.60,-599.80,-0.00,-1794.90,-324.10,200.00}},
	{"Foster Valley",               {-2270.00,-430.20,-0.00,-2178.60,-324.10,200.00}},
	{"Four Dragons Casino",         {1817.30,863.20,-89.00,2027.30,1083.20,110.90}},
	{"Frederick Bridge",            {2759.20,296.50,0.00,2774.20,594.70,200.00}},
	{"Gant Bridge",                 {-2741.00,1490.40,-6.10,-2616.40,1659.60,200.00}},
	{"Gant Bridge",                 {-2741.40,1659.60,-6.10,-2616.40,2175.10,200.00}},
	{"Ganton",                      {2222.50,-1722.30,-89.00,2632.80,-1628.50,110.90}},
	{"Ganton",                      {2222.50,-1852.80,-89.00,2632.80,-1722.30,110.90}},
	{"Garcia",                      {-2395.10,-222.50,-5.30,-2354.00,-204.70,200.00}},
	{"Garcia",                      {-2411.20,-222.50,-0.00,-2173.00,265.20,200.00}},
	{"Garver Bridge",               {-1213.90,950.00,-89.00,-1087.90,1178.90,110.90}},
	{"Garver Bridge",               {-1339.80,828.10,-89.00,-1213.90,1057.00,110.90}},
	{"Garver Bridge",               {-1499.80,696.40,-179.60,-1339.80,925.30,20.30}},
	{"Glen Park",                   {1812.60,-1100.80,-89.00,1994.30,-973.30,110.90}},
	{"Glen Park",                   {1812.60,-1350.70,-89.00,2056.80,-1100.80,110.90}},
	{"Glen Park",                   {1812.60,-1449.60,-89.00,1996.90,-1350.70,110.90}},
	{"Green Palms",                 {176.50,1305.40,-3.00,338.60,1520.70,200.00}},
	{"Greenglass College",          {964.30,1044.60,-89.00,1197.30,1203.20,110.90}},
	{"Greenglass College",          {964.30,930.80,-89.00,1166.50,1044.60,110.90}},
	{"Hampton Barns",               {603.00,264.30,0.00,761.90,366.50,200.00}},
	{"Hankypanky Point",            {2576.90,62.10,0.00,2759.20,385.50,200.00}},
	{"Harry Gold Parkway",          {1777.30,863.20,-89.00,1817.30,2342.80,110.90}},
	{"Hashbury",                    {-2593.40,-222.50,-0.00,-2411.20,54.70,200.00}},
	{"Hilltop Farm",                {967.30,-450.30,-3.00,1176.70,-217.90,200.00}},
	{"Hunter Quarry",               {337.20,710.80,-115.20,860.50,1031.70,203.70}},
	{"Idlewood",					{1812.60,-1602.30,-89.00,2124.60,-1449.60,110.90}},
	{"Idlewood",					{1812.60,-1742.30,-89.00,1951.60,-1602.30,110.90}},
	{"Idlewood",					{1812.60,-1852.80,-89.00,1971.60,-1742.30,110.90}},
	{"Idlewood",					{1951.60,-1742.30,-89.00,2124.60,-1602.30,110.90}},
	{"Idlewood",					{1971.60,-1852.80,-89.00,2222.50,-1742.30,110.90}},
	{"Idlewood",					{2124.60,-1742.30,-89.00,2222.50,-1494.00,110.90}},
	{"Jefferson",					{1996.90,-1449.60,-89.00,2056.80,-1350.70,110.90}},
	{"Jefferson",					{2056.80,-1210.70,-89.00,2185.30,-1126.30,110.90}},
	{"Jefferson",					{2056.80,-1372.00,-89.00,2281.40,-1210.70,110.90}},
	{"Jefferson",					{2056.80,-1449.60,-89.00,2266.20,-1372.00,110.90}},
	{"Jefferson",					{2124.60,-1494.00,-89.00,2266.20,-1449.60,110.90}},
	{"Jefferson",					{2185.30,-1210.70,-89.00,2281.40,-1154.50,110.90}},
	{"Julius Thruway East",         {2536.40,2442.50,-89.00,2685.10,2542.50,110.90}},
	{"Julius Thruway East",         {2623.10,943.20,-89.00,2749.90,1055.90,110.90}},
	{"Julius Thruway East",         {2625.10,2202.70,-89.00,2685.10,2442.50,110.90}},
	{"Julius Thruway East",         {2685.10,1055.90,-89.00,2749.90,2626.50,110.90}},
	{"Julius Thruway North",        {1377.30,2433.20,-89.00,1534.50,2507.20,110.90}},
	{"Julius Thruway North",        {1534.50,2433.20,-89.00,1848.40,2583.20,110.90}},
	{"Julius Thruway North",        {1704.50,2342.80,-89.00,1848.40,2433.20,110.90}},
	{"Julius Thruway North",        {1848.40,2478.40,-89.00,1938.80,2553.40,110.90}},
	{"Julius Thruway North",        {1938.80,2508.20,-89.00,2121.40,2624.20,110.90}},
	{"Julius Thruway North",        {2121.40,2508.20,-89.00,2237.40,2663.10,110.90}},
	{"Julius Thruway North",        {2237.40,2542.50,-89.00,2498.20,2663.10,110.90}},
	{"Julius Thruway North",        {2498.20,2542.50,-89.00,2685.10,2626.50,110.90}},
	{"Julius Thruway South",        {1457.30,823.20,-89.00,2377.30,863.20,110.90}},
	{"Julius Thruway South",        {2377.30,788.80,-89.00,2537.30,897.90,110.90}},
	{"Julius Thruway West",         {1197.30,1163.30,-89.00,1236.60,2243.20,110.90}},
	{"Julius Thruway West",         {1236.60,2142.80,-89.00,1297.40,2243.20,110.90}},
	{"Juniper Hill",                {-2533.00,578.30,-7.60,-2274.10,968.30,200.00}},
	{"Juniper Hollow",              {-2533.00,968.30,-6.10,-2274.10,1358.90,200.00}},
	{"KACC Military Fuels",         {2498.20,2626.50,-89.00,2749.90,2861.50,110.90}},
	{"Kincaid Bridge",              {-1087.90,855.30,-89.00,-961.90,986.20,110.90}},
	{"Kincaid Bridge",              {-1213.90,721.10,-89.00,-1087.90,950.00,110.90}},
	{"Kincaid Bridge",              {-1339.80,599.20,-89.00,-1213.90,828.10,110.90}},
	{"King's",                      {-2253.50,373.50,-9.10,-1993.20,458.40,200.00}},
	{"King's",                      {-2329.30,458.40,-7.60,-1993.20,578.30,200.00}},
	{"King's",                      {-2411.20,265.20,-9.10,-1993.20,373.50,200.00}},
	{"LS International",            {1249.60,-2394.30,-89.00,1852.00,-2179.20,110.90}},
	{"LS International",            {1382.70,-2730.80,-89.00,2201.80,-2394.30,110.90}},
	{"LS International",            {1400.90,-2669.20,-39.00,2189.80,-2597.20,60.90}},
	{"LS International",            {1852.00,-2394.30,-89.00,2089.00,-2179.20,110.90}},
	{"LS International",            {1974.60,-2394.30,-39.00,2089.00,-2256.50,60.90}},
	{"LS International",            {2051.60,-2597.20,-39.00,2152.40,-2394.30,60.90}},
	{"LVA Freight Depot",           {1236.60,1163.40,-89.00,1277.00,1203.20,110.90}},
	{"LVA Freight Depot",           {1277.00,1087.60,-89.00,1375.60,1203.20,110.90}},
	{"LVA Freight Depot",           {1315.30,1044.60,-89.00,1375.60,1087.60,110.90}},
	{"LVA Freight Depot",           {1375.60,919.40,-89.00,1457.30,1203.20,110.90}},
	{"LVA Freight Depot",           {1457.30,863.20,-89.00,1777.40,1143.20,110.90}},
	{"Las Barrancas",               {-926.10,1398.70,-3.00,-719.20,1634.60,200.00}},
	{"Las Brujas",                  {-365.10,2123.00,-3.00,-208.50,2217.60,200.00}},
	{"Las Colinas",                 {1994.30,-1100.80,-89.00,2056.80,-920.80,110.90}},
	{"Las Colinas",                 {2056.80,-1126.30,-89.00,2126.80,-920.80,110.90}},
	{"Las Colinas",                 {2126.80,-1126.30,-89.00,2185.30,-934.40,110.90}},
	{"Las Colinas",                 {2185.30,-1154.50,-89.00,2281.40,-934.40,110.90}},
	{"Las Colinas",                 {2281.40,-1135.00,-89.00,2632.70,-945.00,110.90}},
	{"Las Colinas",                 {2632.70,-1135.00,-89.00,2747.70,-945.00,110.90}},
	{"Las Colinas",                 {2747.70,-1120.00,-89.00,2959.30,-945.00,110.90}},
	{"Las Payasadas",               {-354.30,2580.30,2.00,-133.60,2816.80,200.00}},
	{"Las Venturas Airport",        {1236.60,1203.20,-89.00,1457.30,1883.10,110.90}},
	{"Las Venturas Airport",        {1457.30,1143.20,-89.00,1777.40,1203.20,110.90}},
	{"Las Venturas Airport",        {1457.30,1203.20,-89.00,1777.30,1883.10,110.90}},
	{"Las Venturas Airport",        {1515.80,1586.40,-12.50,1729.90,1714.50,87.50}},
	{"Last Dime Motel",             {1823.00,596.30,-89.00,1997.20,823.20,110.90}},
	{"Leafy Hollow",                {-1166.90,-1856.00,0.00,-815.60,-1602.00,200.00}},
	{"Liberty City",                {-1000.00,400.00,1300.00,-700.00,600.00,1400.00}},
	{"Lil' Probe Inn",              {-90.20,1286.80,-3.00,153.80,1554.10,200.00}},
	{"Linden Side",                 {2749.90,943.20,-89.00,2923.30,1198.90,110.90}},
	{"Linden Station",              {2749.90,1198.90,-89.00,2923.30,1548.90,110.90}},
	{"Linden Station",              {2811.20,1229.50,-39.50,2861.20,1407.50,60.40}},
	{"Little Mexico",               {1701.90,-1842.20,-89.00,1812.60,-1722.20,110.90}},
	{"Little Mexico",               {1758.90,-1722.20,-89.00,1812.60,-1577.50,110.90}},
	{"Los Flores",                  {2581.70,-1393.40,-89.00,2747.70,-1135.00,110.90}},
	{"Los Flores",                  {2581.70,-1454.30,-89.00,2632.80,-1393.40,110.90}},
	{"Marina",                      {647.70,-1577.50,-89.00,807.90,-1416.20,110.90}},
	{"Marina",                      {647.70,-1804.20,-89.00,851.40,-1577.50,110.90}},
	{"Marina",                      {807.90,-1577.50,-89.00,926.90,-1416.20,110.90}},
	{"Market Station",              {787.40,-1410.90,-34.10,866.00,-1310.20,65.80}},
	{"Market",                      {1072.60,-1416.20,-89.00,1370.80,-1130.80,110.90}},
	{"Market",                      {787.40,-1416.20,-89.00,1072.60,-1310.20,110.90}},
	{"Market",                      {926.90,-1577.50,-89.00,1370.80,-1416.20,110.90}},
	{"Market",                      {952.60,-1310.20,-89.00,1072.60,-1130.80,110.90}},
	{"Martin Bridge",               {-222.10,293.30,0.00,-122.10,476.40,200.00}},
	{"Missionary Hill",             {-2994.40,-811.20,0.00,-2178.60,-430.20,200.00}},
	{"Montgomery Section",     		{1546.60,208.10,0.00,1745.80,347.40,200.00}},
	{"Montgomery Section",     		{1582.40,347.40,0.00,1664.60,401.70,200.00}},
	{"Montgomery",                  {1119.50,119.50,-3.00,1451.40,493.30,200.00}},
	{"Montgomery",                  {1451.40,347.40,-6.10,1582.40,420.80,200.00}},
	{"Mulholland Section",     		{1463.90,-1150.80,-89.00,1812.60,-768.00,110.90}},
	{"Mulholland",                  {1096.40,-910.10,-89.00,1169.10,-768.00,110.90}},
	{"Mulholland",                  {1169.10,-910.10,-89.00,1318.10,-768.00,110.90}},
	{"Mulholland",                  {1269.10,-768.00,-89.00,1414.00,-452.40,110.90}},
	{"Mulholland",                  {1281.10,-452.40,-89.00,1641.10,-290.90,110.90}},
	{"Mulholland",                  {1318.10,-910.10,-89.00,1357.00,-768.00,110.90}},
	{"Mulholland",                  {1357.00,-926.90,-89.00,1463.90,-768.00,110.90}},
	{"Mulholland",                  {1414.00,-768.00,-89.00,1667.60,-452.40,110.90}},
	{"Mulholland",                  {687.80,-860.60,-89.00,911.80,-768.00,110.90}},
	{"Mulholland",                  {737.50,-768.00,-89.00,1142.20,-674.80,110.90}},
	{"Mulholland",                  {768.60,-954.60,-89.00,952.60,-860.60,110.90}},
	{"Mulholland",                  {861.00,-674.80,-89.00,1156.50,-600.80,110.90}},
	{"Mulholland",                  {911.80,-860.60,-89.00,1096.40,-768.00,110.90}},
	{"Mulholland",                  {952.60,-937.10,-89.00,1096.40,-860.60,110.90}},
	{"North Rock",                  {2285.30,-768.00,0.00,2770.50,-269.70,200.00}},
	{"Ocean Docks",                 {2089.00,-2394.30,-89.00,2201.80,-2235.80,110.90}},
	{"Ocean Docks",                 {2201.80,-2418.30,-89.00,2324.00,-2095.00,110.90}},
	{"Ocean Docks",                 {2201.80,-2730.80,-89.00,2324.00,-2418.30,110.90}},
	{"Ocean Docks",                 {2324.00,-2145.10,-89.00,2703.50,-2059.20,110.90}},
	{"Ocean Docks",                 {2324.00,-2302.30,-89.00,2703.50,-2145.10,110.90}},
	{"Ocean Docks",                 {2373.70,-2697.00,-89.00,2809.20,-2330.40,110.90}},
	{"Ocean Docks",                 {2703.50,-2302.30,-89.00,2959.30,-2126.90,110.90}},
	{"Ocean Flats",                 {-2994.40,-222.50,-0.00,-2593.40,277.40,200.00}},
	{"Ocean Flats",                 {-2994.40,-430.20,-0.00,-2831.80,-222.50,200.00}},
	{"Ocean Flats",                 {-2994.40,277.40,-9.10,-2867.80,458.40,200.00}},
	{"Octane Springs",              {338.60,1228.50,0.00,664.30,1655.00,200.00}},
	{"Old Venturas Strip",          {2162.30,2012.10,-89.00,2685.10,2202.70,110.90}},
	{"Palisades",                   {-2994.40,458.40,-6.10,-2741.00,1339.60,200.00}},
	{"Palomino Creek",              {2160.20,-149.00,0.00,2576.90,228.30,200.00}},
	{"Paradiso",                    {-2741.00,793.40,-6.10,-2533.00,1268.40,200.00}},
	{"Pershing Square",             {1440.90,-1722.20,-89.00,1583.50,-1577.50,110.90}},
	{"Pilgrim",                     {2437.30,1383.20,-89.00,2624.40,1783.20,110.90}},
	{"Pilgrim",                     {2624.40,1383.20,-89.00,2685.10,1783.20,110.90}},
	{"Pilson Intersection",         {1098.30,2243.20,-89.00,1377.30,2507.20,110.90}},
	{"Pirates in Men's Pants",      {1817.30,1469.20,-89.00,2027.40,1703.20,110.90}},
	{"Playa del Seville",           {2703.50,-2126.90,-89.00,2959.30,-1852.80,110.90}},
	{"Prickle Pine",                {1117.40,2507.20,-89.00,1534.50,2723.20,110.90}},
	{"Prickle Pine",                {1534.50,2583.20,-89.00,1848.40,2863.20,110.90}},
	{"Prickle Pine",                {1848.40,2553.40,-89.00,1938.80,2863.20,110.90}},
	{"Prickle Pine",                {1938.80,2624.20,-89.00,2121.40,2861.50,110.90}},
	{"Queens",                      {-2411.20,373.50,0.00,-2253.50,458.40,200.00}},
	{"Queens",                      {-2533.00,458.40,0.00,-2329.30,578.30,200.00}},
	{"Queens",                      {-2593.40,54.70,0.00,-2411.20,458.40,200.00}},
	{"Randolph Ind. Estate",        {1558.00,596.30,-89.00,1823.00,823.20,110.90}},
	{"Redsands East",               {1817.30,2011.80,-89.00,2106.70,2202.70,110.90}},
	{"Redsands East",               {1817.30,2202.70,-89.00,2011.90,2342.80,110.90}},
	{"Redsands East",               {1848.40,2342.80,-89.00,2011.90,2478.40,110.90}},
	{"Redsands West",               {1236.60,1883.10,-89.00,1777.30,2142.80,110.90}},
	{"Redsands West",               {1297.40,2142.80,-89.00,1777.30,2243.20,110.90}},
	{"Redsands West",               {1377.30,2243.20,-89.00,1704.50,2433.20,110.90}},
	{"Redsands West",               {1704.50,2243.20,-89.00,1777.30,2342.80,110.90}},
	{"Regular Tom",                 {-405.70,1712.80,-3.00,-276.70,1892.70,200.00}},
	{"Richman",                     {225.10,-1292.00,-89.00,466.20,-1235.00,110.90}},
	{"Richman",                     {225.10,-1369.60,-89.00,334.50,-1292.00,110.90}},
	{"Richman",                     {321.30,-1044.00,-89.00,647.50,-860.60,110.90}},
	{"Richman",                     {321.30,-1235.00,-89.00,647.50,-1044.00,110.90}},
	{"Richman",                     {321.30,-768.00,-89.00,700.70,-674.80,110.90}},
	{"Richman",                     {321.30,-860.60,-89.00,687.80,-768.00,110.90}},
	{"Richman",                     {647.50,-1118.20,-89.00,787.40,-954.60,110.90}},
	{"Richman",                     {647.50,-954.60,-89.00,768.60,-860.60,110.90}},
	{"Richman",                     {72.60,-1235.00,-89.00,321.30,-1008.10,110.90}},
	{"Richman",                     {72.60,-1404.90,-89.00,225.10,-1235.00,110.90}},
	{"Robada Section",         		{-1119.00,1178.90,-89.00,-862.00,1351.40,110.90}},
	{"Roca Escalante",              {2237.40,2202.70,-89.00,2536.40,2542.50,110.90}},
	{"Roca Escalante",              {2536.40,2202.70,-89.00,2625.10,2442.50,110.90}},
	{"Rockshore East",              {2537.30,676.50,-89.00,2902.30,943.20,110.90}},
	{"Rockshore West",              {1997.20,596.30,-89.00,2377.30,823.20,110.90}},
	{"Rockshore West",              {2377.30,596.30,-89.00,2537.30,788.80,110.90}},
	{"Rodeo",                       {225.10,-1501.90,-89.00,334.50,-1369.60,110.90}},
	{"Rodeo",                       {225.10,-1684.60,-89.00,312.80,-1501.90,110.90}},
	{"Rodeo",                       {312.80,-1684.60,-89.00,422.60,-1501.90,110.90}},
	{"Rodeo",                       {334.50,-1406.00,-89.00,466.20,-1292.00,110.90}},
	{"Rodeo",                       {334.50,-1501.90,-89.00,422.60,-1406.00,110.90}},
	{"Rodeo",                       {422.60,-1570.20,-89.00,466.20,-1406.00,110.90}},
	{"Rodeo",                       {422.60,-1684.60,-89.00,558.00,-1570.20,110.90}},
	{"Rodeo",                       {466.20,-1385.00,-89.00,647.50,-1235.00,110.90}},
	{"Rodeo",                       {466.20,-1570.20,-89.00,558.00,-1385.00,110.90}},
	{"Rodeo",                       {558.00,-1684.60,-89.00,647.50,-1384.90,110.90}},
	{"Rodeo",                       {72.60,-1544.10,-89.00,225.10,-1404.90,110.90}},
	{"Rodeo",                       {72.60,-1684.60,-89.00,225.10,-1544.10,110.90}},
	{"Royal Casino",                {2087.30,1383.20,-89.00,2437.30,1543.20,110.90}},
	{"San Andreas Sound",           {2450.30,385.50,-100.00,2759.20,562.30,200.00}},
	{"Santa Flora",                 {-2741.00,458.40,-7.60,-2533.00,793.40,200.00}},
	{"Santa Maria Beach",           {342.60,-2173.20,-89.00,647.70,-1684.60,110.90}},
	{"Santa Maria Beach",           {72.60,-2173.20,-89.00,342.60,-1684.60,110.90}},
	{"Shady Cabin",                 {-1632.80,-2263.40,-3.00,-1601.30,-2231.70,200.00}},
	{"Shady Creeks",                {-1820.60,-2643.60,-8.00,-1226.70,-1771.60,200.00}},
	{"Shady Creeks",                {-2030.10,-2174.80,-6.10,-1820.60,-1771.60,200.00}},
	{"Sobell Rail Yards",           {2749.90,1548.90,-89.00,2923.30,1937.20,110.90}},
	{"Spinybed",                    {2121.40,2663.10,-89.00,2498.20,2861.50,110.90}},
	{"Starfish Casino",             {2162.30,1883.20,-89.00,2437.30,2012.10,110.90}},
	{"Starfish Casino",             {2437.30,1783.20,-89.00,2685.10,2012.10,110.90}},
	{"Starfish Casino",             {2437.30,1858.10,-39.00,2495.00,1970.80,60.90}},
	{"Temple",                      {1096.40,-1026.30,-89.00,1252.30,-910.10,110.90}},
	{"Temple",                      {1096.40,-1130.80,-89.00,1252.30,-1026.30,110.90}},
	{"Temple",                      {1252.30,-1026.30,-89.00,1391.00,-926.90,110.90}},
	{"Temple",                      {1252.30,-1130.80,-89.00,1378.30,-1026.30,110.90}},
	{"Temple",                      {1252.30,-926.90,-89.00,1357.00,-910.10,110.90}},
	{"Temple",                      {952.60,-1130.80,-89.00,1096.40,-937.10,110.90}},
	{"The Camel's Toe",             {2087.30,1203.20,-89.00,2640.40,1383.20,110.90}},
	{"The Clown's Pocket",          {2162.30,1783.20,-89.00,2437.30,1883.20,110.90}},
	{"The Emerald Isle",            {2011.90,2202.70,-89.00,2237.40,2508.20,110.90}},
	{"The Farm",                    {-1209.60,-1317.10,114.90,-908.10,-787.30,251.90}},
	{"The High Roller",             {1817.30,1283.20,-89.00,2027.30,1469.20,110.90}},
	{"The Mako Span",               {1664.60,401.70,0.00,1785.10,567.20,200.00}},
	{"The Panopticon",              {-947.90,-304.30,-1.10,-319.60,327.00,200.00}},
	{"The Pink Swan",               {1817.30,1083.20,-89.00,2027.30,1283.20,110.90}},
	{"The Sherman Dam",             {-968.70,1929.40,-3.00,-481.10,2155.20,200.00}},
	{"The Strip",                   {2027.40,1703.20,-89.00,2137.40,1783.20,110.90}},
	{"The Strip",                   {2027.40,1783.20,-89.00,2162.30,1863.20,110.90}},
	{"The Strip",                   {2027.40,863.20,-89.00,2087.30,1703.20,110.90}},
	{"The Strip",                   {2106.70,1863.20,-89.00,2162.30,2202.70,110.90}},
	{"The Visage",                  {1817.30,1703.20,-89.00,2027.40,1863.20,110.90}},
	{"The Visage",                  {1817.30,1863.20,-89.00,2106.70,2011.80,110.90}},
	{"Unity Station",               {1692.60,-1971.80,-20.40,1812.60,-1932.80,79.50}},
	{"Valle Ocultado",              {-936.60,2611.40,2.00,-715.90,2847.90,200.00}},
	{"Verdant Bluffs",              {1073.20,-2006.70,-89.00,1249.60,-1842.20,110.90}},
	{"Verdant Bluffs",              {1249.60,-2179.20,-89.00,1692.60,-1842.20,110.90}},
	{"Verdant Bluffs",              {930.20,-2488.40,-89.00,1249.60,-2006.70,110.90}},
	{"Verdant Meadows",             {37.00,2337.10,-3.00,435.90,2677.90,200.00}},
	{"Verona Beach",                {1046.10,-1722.20,-89.00,1161.50,-1577.50,110.90}},
	{"Verona Beach",                {1161.50,-1722.20,-89.00,1323.90,-1577.50,110.90}},
	{"Verona Beach",                {647.70,-2173.20,-89.00,930.20,-1804.20,110.90}},
	{"Verona Beach",                {851.40,-1804.20,-89.00,1046.10,-1577.50,110.90}},
	{"Verona Beach",                {930.20,-2006.70,-89.00,1073.20,-1804.20,110.90}},
	{"Vinewood",                    {647.50,-1227.20,-89.00,787.40,-1118.20,110.90}},
	{"Vinewood",                    {647.70,-1416.20,-89.00,787.40,-1227.20,110.90}},
	{"Vinewood",                    {787.40,-1130.80,-89.00,952.60,-954.60,110.90}},
	{"Vinewood",                    {787.40,-1310.20,-89.00,952.60,-1130.80,110.90}},
	{"Whitewood Estates",           {1098.30,1726.20,-89.00,1197.30,2243.20,110.90}},
	{"Whitewood Estates",           {883.30,1726.20,-89.00,1098.30,2507.20,110.90}},
	{"Willowfield",                 {1970.60,-2179.20,-89.00,2089.00,-1852.80,110.90}},
	{"Willowfield",                 {2089.00,-1989.90,-89.00,2324.00,-1852.80,110.90}},
	{"Willowfield",                 {2089.00,-2235.80,-89.00,2201.80,-1989.90,110.90}},
	{"Willowfield",                 {2201.80,-2095.00,-89.00,2324.00,-1989.90,110.90}},
	{"Willowfield",                 {2324.00,-2059.20,-89.00,2541.70,-1852.80,110.90}},
	{"Willowfield",                 {2541.70,-1941.40,-89.00,2703.50,-1852.80,110.90}},
	{"Willowfield",                 {2541.70,-2059.20,-89.00,2703.50,-1941.40,110.90}},
	{"Yellow Bell Station",         {1377.40,2600.40,-21.90,1492.40,2687.30,78.00}},
	{"The Big Ear",	                {-410.00,1403.30,-3.00,-137.90,1681.20,200.00}},

	// Main Zones
	{"Bone County",                 {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
	{"Flint County",                {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
	{"Las Venturas",                {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
	{"Los Santos",                  {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
	{"Red County",                  {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
	{"San Fierro",                  {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
	{"Tierra Robada",               {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
	{"Tierra Robada",               {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
	{"Whetstone",                   {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
};

main()
{
	AntiDeAMX();
}

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

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

stock strvalEx(const string[])
{
	if(strlen(string) >= 50) return 0;
	return strval(string);
}

stock splits(const strsrc[], strdest[][], delimiter)
{
	new i, li;
	new aNum;
	new len;
	while(i <= strlen(strsrc))
	{
		if(strsrc[i] == delimiter || i == strlen(strsrc))
		{
			len = strmid(strdest[aNum], strsrc, li, i, 128);
			strdest[aNum][len] = 0;
			li = i + 1;
			aNum++;
		}
		i++;
	}
	return 1;
}

stock split(const strsrc[], strdest[][], delimiter = '|')
{
	new i, li, aNum, len, srclen = strlen(strsrc);
	while(i <= srclen)
	{
		if(strsrc[i] == delimiter || i == srclen)
		{
			len = strmid(strdest[aNum], strsrc, li, i, 128);
			strdest[aNum][len] = 0;
			li = i + 1;
			aNum++;
		}
		i++;
	}
	return 1;
}

/*stock strreplace(string[], find, replace)
{
    for(new i = 0; string[i]; i++)
	{
        if(string[i] == find)
		{
            string[i] = replace;
        }
    }
}*/

stock convert_encoding(string[])
{
	new original[50] = {192, 193, 194, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 210, 211, 212, 214, 217, 218, 219, 220, 223, 224, 225, 226, 228, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 242, 243, 244, 246, 249, 250, 251, 252, 209, 241, 191, 161, 176};
	new fixed[50] = {128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 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,94, 124};
	new len = strlen(string);
	for(new i; i < len; i++)
	{
		for(new j; j < 50; j++)
		{
			if(string[i] == original[j])
			{
				string[i] = fixed[j];
				break;
			}
		}
	}
}

stock Hash(string[])
{
	for(new x = 0; x < strlen(string); x++)
	{
	    string[x] += (3^x) * (x % 15);
		if(string[x] > (0xff))
		{
		    string[x] -= 256;
	    }
    }
	return 1;
}

stock Encrypt(string[])
{
	for(new x = 0; x < strlen(string); x++)
	{
	    string[x] += (3^x) * (x % 15);
		if(string[x] > (0xff))
		{
		    string[x] -= 256;
	    }
    }
	return 1;
}

stock SendClientMessageEx(playerid, color, const message[], {Float, _}:...)
{
	new string[145];
	va_format(string, sizeof(string), message, va_start<3>);
	return SendClientMessage(playerid, color, string);
}

stock SendClientMessageToAllEx(color, const message[], va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), message, va_start<2>);
	return SendClientMessageToAll(color, string);
}

stock SendPlayerMessageToPlayerEx(playerid, senderid, const message[], va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), message, va_start<3>);
	return SendPlayerMessageToPlayer(playerid, senderid, string);
}

stock SendPlayerMessageToAllEx(senderid, const message[], va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), message, va_start<2>);
	return SendPlayerMessageToAll(senderid, string);
}

stock GameTextForPlayerEx(playerid, const fmat[], time, style, va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), fmat, va_start<4>);
	return GameTextForPlayer(playerid, string, time, style);
}

stock GameTextForAllEx(const fmat[], time, style, va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), fmat, va_start<3>);
	return GameTextForAll(string, time, style);
}

stock printEx(const fmat[], va_args<>)
{
	new string[145];
	va_format(string, sizeof(string), fmat, va_start<1>);
	return print(string);
}

stock FIX_KillTimer(timerid)
{
	if(!timerid) return 0;
	KillTimer(timerid);
    return 1;
}
#if defined _ALS_KillTimer
    #undef KillTimer
#else
    #define _ALS_KillTimer
#endif
#define KillTimer FIX_KillTimer

stock FIX_DestroyDynamicCP(checkpointid)
{
	if(!IsValidDynamicCP(checkpointid) || !checkpointid) return 0;
	DestroyDynamicCP(checkpointid);
    return 1;
}
#if defined _ALS_DestroyDynamicCP
    #undef DestroyDynamicCP
#else
    #define _ALS_DestroyDynamicCP
#endif
#define DestroyDynamicCP FIX_DestroyDynamicCP

Text3D:FIXES_Create3DTextLabel(text[], color, Float:X, Float:Y, Float:Z, Float:DrawDistance, virtualworld, testLOS=0)
{
    if(virtualworld == -1) virtualworld = 0;
	new Text3D:text3d;
    text3d = Create3DTextLabel(text, color, X, Y, Z, DrawDistance, virtualworld, testLOS);
	return text3d;
}
#define Create3DTextLabel FIXES_Create3DTextLabel

stock FIXES_GameTextForAll(string[], time, style)
{
    convert_encoding(string);
    return GameTextForAll(string, time, style);
}
#define GameTextForAll FIXES_GameTextForAll

stock FIXES_GameTextForPlayer(playerid, string[], time, style)
{
    convert_encoding(string);
    return GameTextForPlayer(playerid, string, time, style);
}
#define GameTextForPlayer FIXES_GameTextForPlayer

stock AC_GivePlayerMoney(playerid, money)
{
	new string[128];
    if(money >= 100000)
	{
	    if(PlayerInfo[playerid][pAdminLevel] >= 4)
	    {
	        format(string, sizeof(string), "AdmAviso: O jogador %s recuperou $%d.", GetPlayerNameEx(playerid, 0), money);
            SendAdminMessage(COLOR_LIGHTRED, string, 4);
	    }
	}
    new oldmoney = GetPlayerMoney(playerid);
	if(oldmoney < PlayerInfo[playerid][pMoney] && oldmoney > -1) PlayerInfo[playerid][pMoney] = oldmoney;
    PlayerInfo[playerid][pMoney] += money;
	ResetPlayerMoney(playerid);
	GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
	if(PlayerInfo[playerid][pMoney] < 0) PlayerInfo[playerid][pMoney] = 0;
	CheckMoney[playerid] += money;
	return PlayerInfo[playerid][pMoney];
}
#define GivePlayerMoney AC_GivePlayerMoney

stock AC_SetPlayerMoney(playerid, money)
{
	PlayerInfo[playerid][pMoney] = money;
	ResetPlayerMoney(playerid);
	GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
	CheckMoney[playerid] += money;
	return PlayerInfo[playerid][pMoney];
}
#define SetPlayerMoney AC_SetPlayerMoney

stock AC_GetPlayerMoney(playerid)
{
	if(playerid == INVALID_PLAYER_ID) return 0;
	return PlayerInfo[playerid][pMoney];
}
#define GetPlayerMoney AC_GetPlayerMoney

stock AC_ResetPlayerMoney(playerid)
{
	PlayerInfo[playerid][pMoney] = 0;
	ResetPlayerMoney(playerid);
	GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
	CheckMoney[playerid] = 0x0;
	return 1;
}
#define ResetPlayerMoney AC_ResetPlayerMoney

stock AC_SetPlayerHealth(playerid, Float:health)
{
	new Float:oldhealth;
	if(health < 0) health = 0;
	else if(health >= 100 && PlayerInfo[playerid][pAdminDuty] == 0) health = 99;
	GetPlayerHealth(playerid, oldhealth);
    return SetPlayerHealth(playerid, oldhealth+health);
}
#define SetPlayerHealth AC_SetPlayerHealth

stock AC_SetPlayerArmour(playerid, Float:armour)
{
	new Float:oldarmour;
	if(armour < 0) armour = 0;
	else if(armour > 100 && PlayerInfo[playerid][pAdminDuty] == 0) armour = 99;
	GetPlayerArmour(playerid, oldarmour);
    return SetPlayerArmour(playerid, oldarmour+armour);
}
#define SetPlayerArmour AC_SetPlayerArmour

stock KickEx(playerid, reason[])
{
    if(IsPlayerNPC(playerid)) return 1;
	SendClientMessage(playerid, COLOR_LIGHTRED, reason);
	SetTimerEx("KickPlayer", 1000, 0, "d", playerid);
	return 1;
}

function KickPlayer(playerid)
{
	Kick(playerid);
	return 1;
}

function StopTalk(playerid)
{
	ClearAnimations(playerid);
  	ApplyAnimation(playerid, "CARRY", "crry_prtial", 4.0, 0, 0, 0, 0, 0);
    return 1;
}

stock PreloadAnimLib(playerid, animlib[])
{
	ApplyAnimation(playerid, animlib, "null", 0.0, 0, 0, 0, 0, 0, 1);
	return 1;
}

stock IsPlayerLoggedIn(playerid)
{
	if(PlayerInfo[playerid][pLogged] == 1) return 1;
	else if(PlayerInfo[playerid][pLogged] == 0) return 0;
	return 1;
}

stock IsValidSkin(skinid)
{
	return (0 <= skinid <= 311);
}

stock IsValidName(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        new name[MAX_PLAYER_NAME + 2];
		GetPlayerName(playerid, name, sizeof(name));
        for(new n = 0; n < strlen(name); n++)
        {
            if(name[n] == '_' && name[n+1] >= 'A' && name[n+1] <= 'Z') return 1;
            if(name[n] == ']' || name[n] == '[') return 0;
            if(name[n] == ')' || name[n] == '(') return 0;
            if(name[n] == '.' || name[n] == '$') return 0;
            if(name[n] == '=' || name[n] == '@') return 0;
            if(name[n+1] >= '1' && name[n+1] <= '9') return 0;
        }
    }
    return 0;
}

stock ClearChatbox(playerid, lines)
{
    for (new l = 0; l < lines; l ++)
    {
	     SendClientMessage(playerid, -1, " ");
	}
	return 1;
}

stock SendSplitClientMessage(playerid, color, message[], maxlen = 80)
{
    new string[256];
    if(strlen(message) > maxlen)
    {
        new pos = maxlen;
		if(pos < maxlen-1) pos = maxlen;
        format(string, sizeof(string), "%.*s ...", pos, message);
        SendClientMessage(playerid, color, string);
        format(string, sizeof(string), ".... %s", message[pos]);
        SendClientMessage(playerid, color, string);
    }
    else format(string, sizeof(string), "%s", message), SendClientMessage(playerid, color, string);
    return 1;
}

stock SendAdminMessage(color, const string[], adminlevel)
{
	foreach(new i: Player)
	{
		if(IsPlayerLoggedIn(i) && PlayerInfo[i][pAdminLevel] >= adminlevel)
		{
		    if(PlayerInfo[i][pBlockAdminMessage] == 0)
			{
				SendClientMessage(i, color, string);
			}
		}
 	}
	return 1;
}

stock Float:GetDistanceBetweenPlayerToPoint(p1, Float:px, Float:py, Float:pz)
{
	new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2;
	if(!IsPlayerConnected(p1)) return -1.00;
	GetPlayerPos(p1, x1, y1, z1);
	x2 = px;
	y2 = py;
	z2 = pz;
	return floatsqroot(floatpower(floatabs(floatsub(x2, x1)), 2) + floatpower(floatabs(floatsub(y2, y1)), 2) + floatpower(floatabs(floatsub(z2, z1)), 2));
}

stock ProxDetector(Float:dist, playerid, text[], col1, col2, col3, col4, col5)
{
	if(IsPlayerConnected(playerid))
	{
		new Float:posx, Float:posy, Float:posz;
		new Float:radius;
		GetPlayerPos(playerid, posx, posy, posz);

		foreach(new i: Player)
		{
			if(GetPlayerVirtualWorld(i) == GetPlayerVirtualWorld(playerid))
			{
				radius = GetDistanceBetweenPlayerToPoint(i, posx, posy, posz);
				if(radius < dist/16) SendSplitClientMessage(i, col1, text);
				else if(radius < dist/8) SendSplitClientMessage(i, col2, text);
				else if(radius < dist/4) SendSplitClientMessage(i, col3, text);
				else if(radius < dist/2) SendSplitClientMessage(i, col4, text);
				else if(radius < dist) SendSplitClientMessage(i, col5, text);
			}
		}
	}
	return 1;
}

stock GetPlayerNameEx(playerid, underscore = 1)
{
    new name[MAX_PLAYER_NAME + 2];
	GetPlayerName(playerid, name, sizeof(name));
	if(!underscore)
	{
	    for(new n = 0, len = strlen(name); n < len; n++)
		{
	        if(name[n] == '_')
			{
				name[n] = ' ';
			}
		}
	}
	return name;
}

stock GetName(playerid, underscore = 1)
{
    new name[MAX_PLAYER_NAME + 2];
	GetPlayerName(playerid, name, sizeof(name));
	if(!underscore)
	{
	    for(new n = 0, len = strlen(name); n < len; n++)
		{
	        if(name[n] == '_')
			{
				name[n] = ' ';
			}
		}
	}
	return name;
}

stock PlayerName(playerid, underscore = 1)
{
    new name[MAX_PLAYER_NAME + 2];
	GetPlayerName(playerid, name, sizeof(name));
	if(!underscore)
	{
	    for(new n = 0, len = strlen(name); n < len; n++)
		{
	        if(name[n] == '_')
			{
				name[n] = ' ';
			}
		}
	}
	return name;
}

stock GetWeaponNameEx(weaponid, const weapon[], len = sizeof(weapon))
{
    switch(weaponid)
    {
        case 18: return strcat(weapon, "Molotov Cocktail", len);
		case 44: return strcat(weapon, "Night Vision Goggles", len);
		case 45: return strcat(weapon, "Thermal Goggles", len);
        default: GetWeaponName(weaponid, weapon, len);
    }
    return weapon;
}

public OnGameModeInit()
{
    Streamer_SetVisibleItems(STREAMER_TYPE_OBJECT, 1000, -1);
    
    ShowNameTags(1);
    SetNameTagDrawDistance(15.0);
	AllowInteriorWeapons(1);
	DisableInteriorEnterExits();
	EnableStuntBonusForAll(0);
	ShowPlayerMarkers(1);
	ManualVehicleEngineAndLights();

    for(new skinid = 0; skinid < 311; skinid++)
	{
        if(IsValidSkin(skinid))
        {
            AddPlayerClass(skinid, 0.0, 0.0, 0.0, 0.0, -1, -1, -1, -1, -1, -1);
		}
    }
	return 1;
}

public OnGameModeExit()
{
    DOF2_Exit();
    foreach(new i: Player)
	{
	    if(IsPlayerConnected(i))
	    {
		     OnPlayerSave(i);
        }
	}
	return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    if(PlayerInfo[playerid][pRegistered] == 0 && IsPlayerLoggedIn(playerid) != 1)
	{
        new file[120];
        gstring[0] = EOS;

        TogglePlayerSpectating(playerid, 0);
		ClearChatbox(playerid, 10);
		SetPlayerPos(playerid, 1473.1162, -1530.5760, 160.2997);
    	InterpolateCameraPos(playerid, 1442.4664, -866.5638, 89.6085, 1416.4031, -870.2377, 91.1348, 6000, CAMERA_CUT);
    	SetPlayerCameraPos(playerid, 1342.3231, -847.4993, 91.1653);
    	SetPlayerCameraLookAt(playerid, 1342.7404, -848.4073, 90.7405);
    	
		format(file, sizeof(file), PATH, GetPlayerNameEx(playerid));
        if(DOF2_FileExists(file))
		{
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк possui 60 segundos para logar-se.");
			format(gstring, sizeof(gstring), "Bem-vindo de volta ao Los Angeles Roleplay.\n\nConta: %s\nStatus: {33AA33}Registrada\n\n{A9C4E4}Digite sua senha abaixo para logar-se.", GetPlayerNameEx(playerid, 0));
			Dialog_Show(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Los Angeles Roleplay - Login", gstring, "Logar", "Sair");
		}
		else
		{
            format(gstring, sizeof(gstring), "Seja bem-vindo ao Los Angeles Roleplay.\n\nConta: %s\nStatus: {FF6633}Nгo registrada\n\n{A9C4E4}Digite uma senha abaixo para registrar-se.", GetPlayerNameEx(playerid, 0));
			Dialog_Show(playerid, Dialog_Register, DIALOG_STYLE_PASSWORD, "Los Angeles Roleplay - Registro", gstring, "Registrar", "Sair");
		}
		PlayerInfo[playerid][pSkin] = AllSkins[classid][0];
	}
	else
	{
	    SpawnPlayer(playerid);
	}
	
	if(!IsPlayerLoggedIn(playerid))
    {
		SpawnPlayer(playerid);
 	}
 	else
 	{
 	    SetSpawnInfo(playerid, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), SpawnPlayer(playerid);
	}
	return 1;
}

function OnPlayerSave(playerid)
{
    if(IsPlayerLoggedIn(playerid))
	{
		new file[120];
		format(file, sizeof(file), PATH, GetPlayerNameEx(playerid));
		
		if(GetPlayerState(playerid) != PLAYER_STATE_SPECTATING)
		{
	    	PlayerInfo[playerid][pInterior] = GetPlayerInterior(playerid);
	    	PlayerInfo[playerid][pVirtualWorld] = GetPlayerVirtualWorld(playerid);

	    	GetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
	    	GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);

	    	GetPlayerHealth(playerid, PlayerInfo[playerid][pHealth]);
	    	GetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);
	    	PlayerInfo[playerid][pMoney] = GetPlayerMoney(playerid);
		}
		
		DOF2_SetString(file, "Password", PlayerInfo[playerid][pPassword]);
		DOF2_SetString(file, "IP", PlayerInfo[playerid][pIP]);
		DOF2_SetString(file, "Email", PlayerInfo[playerid][pEmail]);
		DOF2_SetInt(file, "Registered", PlayerInfo[playerid][pRegistered]);
		DOF2_SetInt(file, "Logged", PlayerInfo[playerid][pLogged]);
		DOF2_SetInt(file, "Money", PlayerInfo[playerid][pMoney]);
		DOF2_SetInt(file, "BankMoney", PlayerInfo[playerid][pBankMoney]);
		DOF2_SetInt(file, "Skin", PlayerInfo[playerid][pSkin]);
		DOF2_SetInt(file, "Sex", PlayerInfo[playerid][pSex]);
		DOF2_SetInt(file, "Age", PlayerInfo[playerid][pAge]);
		DOF2_SetString(file, "Birthdate", PlayerInfo[playerid][pBirthdate]);
		DOF2_SetString(file, "Origin", PlayerInfo[playerid][pOrigin]);
		DOF2_SetString(file, "Etnia", PlayerInfo[playerid][pEtnia]);
		DOF2_SetInt(file, "Level", PlayerInfo[playerid][pLevel]);
		DOF2_SetInt(file, "Experience", PlayerInfo[playerid][pExperience]);
		DOF2_SetInt(file, "PlayingHours", PlayerInfo[playerid][pPlayingHours]);
        DOF2_SetInt(file, "AdminLevel", PlayerInfo[playerid][pAdminLevel]);
		DOF2_SetInt(file, "AdminDuty", PlayerInfo[playerid][pAdminDuty]);
		DOF2_SetInt(file, "HelperLevel", PlayerInfo[playerid][pHelperLevel]);
  		DOF2_SetInt(file, "HelperDuty", PlayerInfo[playerid][pHelperDuty]);
		DOF2_SetInt(file, "Interior", PlayerInfo[playerid][pInterior]);
		DOF2_SetInt(file, "VirtualWorld", PlayerInfo[playerid][pVirtualWorld]);
		DOF2_SetInt(file, "Jailed", PlayerInfo[playerid][pJailed]);
		DOF2_SetInt(file, "JailTime", PlayerInfo[playerid][pJailTime]);
		DOF2_SetInt(file, "Banned", PlayerInfo[playerid][pBanned]);
		DOF2_SetInt(file, "Warns", PlayerInfo[playerid][pWarns]);
		DOF2_SetInt(file, "Muted", PlayerInfo[playerid][pMuted]);
		DOF2_SetInt(file, "DonateRank", PlayerInfo[playerid][pDonateRank]);
		DOF2_SetInt(file, "CarLicense", PlayerInfo[playerid][pLicenses][0]);
		DOF2_SetInt(file, "WeaponLicense", PlayerInfo[playerid][pLicenses][1]);
		DOF2_SetInt(file, "FlyLicense", PlayerInfo[playerid][pLicenses][2]);
		DOF2_SetFloat(file, "PosX", PlayerInfo[playerid][pPosX]);
		DOF2_SetFloat(file, "PosY", PlayerInfo[playerid][pPosY]);
		DOF2_SetFloat(file, "PosZ", PlayerInfo[playerid][pPosZ]);
		DOF2_SetFloat(file, "PosA", PlayerInfo[playerid][pPosA]);
		DOF2_SetFloat(file, "CrashX", PlayerInfo[playerid][pCrashX]);
		DOF2_SetFloat(file, "CrashY", PlayerInfo[playerid][pCrashY]);
		DOF2_SetFloat(file, "CrashZ", PlayerInfo[playerid][pCrashZ]);
		DOF2_SetFloat(file, "CrashA", PlayerInfo[playerid][pCrashA]);
		DOF2_SetInt(file, "CrashInterior", PlayerInfo[playerid][pCrashInterior]);
		DOF2_SetInt(file, "CrashVirtualWorld", PlayerInfo[playerid][pCrashVirtualWorld]);
		DOF2_SetInt(file, "Dead", PlayerInfo[playerid][pDead]);
		DOF2_SetInt(file, "RespawnTime", PlayerInfo[playerid][pRespawnTime]);
		DOF2_SetInt(file, "FightingStyle", PlayerInfo[playerid][pFightingStyle]);
		DOF2_SetInt(file, "Pen", PlayerInfo[playerid][pPen]);
		DOF2_SetString(file, "Note1", PlayerInfo[playerid][pNote1]);
		DOF2_SetString(file, "Note2", PlayerInfo[playerid][pNote2]);
		DOF2_SetString(file, "Note3", PlayerInfo[playerid][pNote3]);
		DOF2_SetString(file, "Note4", PlayerInfo[playerid][pNote4]);
		DOF2_SetString(file, "Note5", PlayerInfo[playerid][pNote5]);
		DOF2_SetString(file, "ForumName", PlayerInfo[playerid][pForumName]);
		DOF2_SetInt(file, "PayCheckMoney", PlayerInfo[playerid][pPayCheckMoney]);
		DOF2_SetInt(file, "UpgradePoints", PlayerInfo[playerid][pUpgradePoints]);
		DOF2_SetInt(file, "PayDayTime", PlayerInfo[playerid][pPayDayTime]);
		DOF2_SetFloat(file, "SpawnHealth", PlayerInfo[playerid][pSpawnHealth]);
		DOF2_SetInt(file, "Strength", PlayerInfo[playerid][pStrength]);
		DOF2_SetInt(file, "Phone", PlayerInfo[playerid][pPhone]);
		DOF2_SetInt(file, "Number", PlayerInfo[playerid][pNumber]);
		DOF2_SetFloat(file, "Battery", PlayerInfo[playerid][pBattery]);
		DOF2_SetInt(file, "Credits", PlayerInfo[playerid][pCredits]);
		DOF2_SetInt(file, "Savings", PlayerInfo[playerid][pSavings]);
		DOF2_SetInt(file, "HouseKey", PlayerInfo[playerid][pHouseKey]);
		DOF2_SetInt(file, "Radio", PlayerInfo[playerid][pRadio]);
		DOF2_SetInt(file, "Channel", PlayerInfo[playerid][pChannel]);
		DOF2_SetInt(file, "OwnedChannel", PlayerInfo[playerid][pOwnedChannel]);
		DOF2_SetInt(file, "Authed", PlayerInfo[playerid][pAuthed]);
		DOF2_SetInt(file, "Crashed", PlayerInfo[playerid][pCrashed]);
		DOF2_SetInt(file, "MaskOn", PlayerInfo[playerid][pMaskOn]);
		DOF2_SetInt(file, "MaskID", PlayerInfo[playerid][pMaskID]);
		DOF2_SetInt(file, "AccentOn", PlayerInfo[playerid][pAccentOn]);
		DOF2_SetString(file, "Accent", PlayerInfo[playerid][pAccent]);
		DOF2_SetInt(file, "BMX", PlayerInfo[playerid][pBMX]);
		DOF2_SetInt(file, "CarKey", PlayerInfo[playerid][pCarKey]);
		DOF2_SetInt(file, "VehicleSlot1", PlayerInfo[playerid][pVehicles][0]);
		DOF2_SetInt(file, "VehicleSlot2", PlayerInfo[playerid][pVehicles][1]);
		DOF2_SetInt(file, "VehicleSlot3", PlayerInfo[playerid][pVehicles][2]);
		DOF2_SetInt(file, "SpareKey", PlayerInfo[playerid][pSpareKey]);
		DOF2_SetFloat(file, "Hunger", PlayerInfo[playerid][pHunger]);
		DOF2_SetInt(file, "Lighter", PlayerInfo[playerid][pLighter]);
		DOF2_SetInt(file, "Cigars", PlayerInfo[playerid][pCigars]);
		DOF2_SetInt(file, "BusinessKey", PlayerInfo[playerid][pBusinessKey]);
		DOF2_SetInt(file, "WorkOn", PlayerInfo[playerid][pWorkOn]);
		DOF2_SetInt(file, "Walk", PlayerInfo[playerid][pWalk]);
		DOF2_SetFloat(file, "Health", PlayerInfo[playerid][pHealth]);
		DOF2_SetFloat(file, "Armour", PlayerInfo[playerid][pArmour]);
		DOF2_SetInt(file, "HasArmour", PlayerInfo[playerid][pHasArmour]);
		DOF2_SetInt(file, "Faction", PlayerInfo[playerid][pFaction]);
		DOF2_SetInt(file, "Rank", PlayerInfo[playerid][pRank]);
		DOF2_SetInt(file, "Team", PlayerInfo[playerid][pTeam]);
		DOF2_SetInt(file, "BadgeNumber", PlayerInfo[playerid][pBadgeNumber]);
		DOF2_SetInt(file, "LicenseWarns", PlayerInfo[playerid][pLicenseWarns]);
		DOF2_SetInt(file, "JailTime2", PlayerInfo[playerid][pJailTime2]);
		DOF2_SetInt(file, "Arrested", PlayerInfo[playerid][pArrested]);
		DOF2_SetInt(file, "ChatStyle", PlayerInfo[playerid][pChatStyle]);
		DOF2_SetInt(file, "SWAT", PlayerInfo[playerid][pSWAT]);
		DOF2_SetInt(file, "Slot", PlayerInfo[playerid][pSlot]);
  		DOF2_SetInt(file, "Job", PlayerInfo[playerid][pJob]);
		DOF2_SetInt(file, "JobRank", PlayerInfo[playerid][pJobRank]);
		DOF2_SetInt(file, "Career", PlayerInfo[playerid][pCareer]);
		DOF2_SetInt(file, "SideJob", PlayerInfo[playerid][pSideJob]);
		DOF2_SetInt(file, "SpawnType", PlayerInfo[playerid][pSpawnType]);
		DOF2_SetInt(file, "Prisoned", PlayerInfo[playerid][pPrisoned]);
		DOF2_SetInt(file, "Kills", PlayerInfo[playerid][pKills]);
        DOF2_SetInt(file, "Deaths", PlayerInfo[playerid][pDeaths]);
		DOF2_SaveFile();
	}
	return 1;
}

function OnPlayerRegister(playerid, password[])
{
    if(IsPlayerConnected(playerid))
	{
	    new file[120];
	    format(file, sizeof(file), PATH, GetPlayerNameEx(playerid));
	    if(!DOF2_FileExists(file))
		{
		    DOF2_CreateFile(file);
		}
	
	    PlayerInfo[playerid][pLogged] = 1;
	
    	Hash(password);
        strmid(PlayerInfo[playerid][pPassword], password, 0, strlen(password), 150);
        DOF2_SetString(file, "Password", PlayerInfo[playerid][pPassword]);
        DOF2_SaveFile();
        
        OnPlayerSave(playerid);
        SetTimerEx("OnPlayerLogin", 1800, false, "is", playerid, PlayerInfo[playerid][pPassword]);
        printf("%s (%d) registrou-se no servidor.", GetPlayerNameEx(playerid), playerid);
    }
    return 1;
}

function OnPlayerLogin(playerid, password[])
{
	new file[120];
	gstring[0] = EOS;
	
	format(file, sizeof(file), PATH, GetPlayerNameEx(playerid));
	strmid(PlayerInfo[playerid][pPassword], DOF2_GetString(file, "Password"), 0, strlen(DOF2_GetString(file, "Password")), 150);
	Hash(password);
	if(strcmp(PlayerInfo[playerid][pPassword], DOF2_GetString(file, "Password"), true) == 0)
	{
        format(PlayerInfo[playerid][pIP], 16, "%s", DOF2_GetString(file, "IP"));
        format(PlayerInfo[playerid][pEmail], 26, "%s", DOF2_GetString(file, "Email"));
        PlayerInfo[playerid][pRegistered] = DOF2_GetInt(file, "Registered");
        PlayerInfo[playerid][pLogged] = DOF2_GetInt(file, "Logged");
        PlayerInfo[playerid][pMoney] = DOF2_GetInt(file, "Money");
        PlayerInfo[playerid][pBankMoney] = DOF2_GetInt(file, "BankMoney");
        PlayerInfo[playerid][pSkin] = DOF2_GetInt(file, "Skin");
        PlayerInfo[playerid][pSex] = DOF2_GetInt(file, "Sex");
        PlayerInfo[playerid][pAge] = DOF2_GetInt(file, "Age");
        format(PlayerInfo[playerid][pBirthdate], 24, "%s", DOF2_GetString(file, "Birthdate"));
        format(PlayerInfo[playerid][pOrigin], 60, "%s", DOF2_GetString(file, "Origin"));
        format(PlayerInfo[playerid][pEtnia], 60, "%s", DOF2_GetString(file, "Etnia"));
        PlayerInfo[playerid][pLevel] = DOF2_GetInt(file, "Level");
        PlayerInfo[playerid][pExperience] = DOF2_GetInt(file, "Experience");
        PlayerInfo[playerid][pPlayingHours] = DOF2_GetInt(file, "PlayingHours");
        PlayerInfo[playerid][pAdminLevel] = DOF2_GetInt(file, "AdminLevel");
        PlayerInfo[playerid][pAdminDuty] = DOF2_GetInt(file, "AdminDuty");
        PlayerInfo[playerid][pHelperLevel] = DOF2_GetInt(file, "HelperLevel");
        PlayerInfo[playerid][pHelperDuty] = DOF2_GetInt(file, "HelperDuty");
        PlayerInfo[playerid][pInterior] = DOF2_GetInt(file, "Interior");
        PlayerInfo[playerid][pVirtualWorld] = DOF2_GetInt(file, "VirtualWorld");
        PlayerInfo[playerid][pJailed] = DOF2_GetInt(file, "Jailed");
        PlayerInfo[playerid][pJailTime] = DOF2_GetInt(file, "JailTime");
        PlayerInfo[playerid][pBanned] = DOF2_GetInt(file, "Banned");
        PlayerInfo[playerid][pWarns] = DOF2_GetInt(file, "Warns");
        PlayerInfo[playerid][pMuted] = DOF2_GetInt(file, "Muted");
        PlayerInfo[playerid][pDonateRank] = DOF2_GetInt(file, "DonateRank");
        PlayerInfo[playerid][pLicenses][0] = DOF2_GetInt(file, "CarLicense");
        PlayerInfo[playerid][pLicenses][1] = DOF2_GetInt(file, "WeaponLicense");
        PlayerInfo[playerid][pLicenses][2] = DOF2_GetInt(file, "FlyLicense");
        PlayerInfo[playerid][pPosX] = DOF2_GetFloat(file, "PosX");
        PlayerInfo[playerid][pPosY] = DOF2_GetFloat(file, "PosY");
        PlayerInfo[playerid][pPosZ] = DOF2_GetFloat(file, "PosZ");
        PlayerInfo[playerid][pPosA] = DOF2_GetFloat(file, "PosA");
        PlayerInfo[playerid][pCrashX] = DOF2_GetFloat(file, "CrashX");
        PlayerInfo[playerid][pCrashY] = DOF2_GetFloat(file, "CrashY");
        PlayerInfo[playerid][pCrashZ] = DOF2_GetFloat(file, "CrashZ");
        PlayerInfo[playerid][pCrashA] = DOF2_GetFloat(file, "CrashA");
        PlayerInfo[playerid][pCrashInterior] = DOF2_GetInt(file, "CrashInterior");
        PlayerInfo[playerid][pCrashVirtualWorld] = DOF2_GetInt(file, "CrashVirtualWorld");
        PlayerInfo[playerid][pDead] = DOF2_GetInt(file, "Dead");
        PlayerInfo[playerid][pRespawnTime] = DOF2_GetInt(file, "RespawnTime");
        PlayerInfo[playerid][pFightingStyle] = DOF2_GetInt(file, "FightingStyle");
        PlayerInfo[playerid][pPen] = DOF2_GetInt(file, "Pen");
        format(PlayerInfo[playerid][pNote1], 256, "%s", DOF2_GetString(file, "Note1"));
        format(PlayerInfo[playerid][pNote2], 256, "%s", DOF2_GetString(file, "Note2"));
        format(PlayerInfo[playerid][pNote3], 256, "%s", DOF2_GetString(file, "Note3"));
        format(PlayerInfo[playerid][pNote4], 256, "%s", DOF2_GetString(file, "Note4"));
        format(PlayerInfo[playerid][pNote5], 256, "%s", DOF2_GetString(file, "Note5"));
        format(PlayerInfo[playerid][pForumName], 24, "%s", DOF2_GetString(file, "ForumName"));
        PlayerInfo[playerid][pPayCheckMoney] = DOF2_GetInt(file, "PayCheckMoney");
        PlayerInfo[playerid][pUpgradePoints] = DOF2_GetInt(file, "UpgradePoints");
        PlayerInfo[playerid][pPayDayTime] = DOF2_GetInt(file, "PayDayTime");
        PlayerInfo[playerid][pSpawnHealth] = DOF2_GetInt(file, "SpawnHealth");
        PlayerInfo[playerid][pStrength] = DOF2_GetInt(file, "Strength");
        PlayerInfo[playerid][pPhone] = DOF2_GetInt(file, "Phone");
        PlayerInfo[playerid][pNumber] = DOF2_GetInt(file, "Number");
        PlayerInfo[playerid][pBattery] = DOF2_GetFloat(file, "Battery");
        PlayerInfo[playerid][pCredits] = DOF2_GetInt(file, "Credits");
        PlayerInfo[playerid][pSavings] = DOF2_GetInt(file, "Savings");
        PlayerInfo[playerid][pHouseKey] = DOF2_GetInt(file, "HouseKey");
        PlayerInfo[playerid][pRadio] = DOF2_GetInt(file, "Radio");
        PlayerInfo[playerid][pChannel] = DOF2_GetInt(file, "Channel");
        PlayerInfo[playerid][pOwnedChannel] = DOF2_GetInt(file, "OwnedChannel");
        PlayerInfo[playerid][pAuthed] = DOF2_GetInt(file, "Authed");
        PlayerInfo[playerid][pCrashed] = DOF2_GetInt(file, "Crashed");
        PlayerInfo[playerid][pMaskOn] = DOF2_GetInt(file, "MaskOn");
        PlayerInfo[playerid][pMaskID] = DOF2_GetInt(file, "MaskID");
        PlayerInfo[playerid][pAccentOn] = DOF2_GetInt(file, "AccentOn");
        format(PlayerInfo[playerid][pAccent], 128, "%s", DOF2_GetString(file, "Accent"));
        PlayerInfo[playerid][pBMX] = DOF2_GetInt(file, "BMX");
        PlayerInfo[playerid][pCarKey] = DOF2_GetInt(file, "CarKey");
        PlayerInfo[playerid][pVehicles][0] = DOF2_GetInt(file, "Vehicle1");
        PlayerInfo[playerid][pVehicles][1] = DOF2_GetInt(file, "Vehicle2");
        PlayerInfo[playerid][pVehicles][2] = DOF2_GetInt(file, "Vehicle3");
        PlayerInfo[playerid][pVehicleSlot] = DOF2_GetInt(file, "VehicleSlot");
        PlayerInfo[playerid][pSpareKey] = DOF2_GetInt(file, "SpareKey");
        PlayerInfo[playerid][pHunger] = DOF2_GetFloat(file, "Hunger");
        PlayerInfo[playerid][pLighter] = DOF2_GetInt(file, "Lighter");
        PlayerInfo[playerid][pCigars] = DOF2_GetInt(file, "Cigars");
        PlayerInfo[playerid][pBusinessKey] = DOF2_GetInt(file, "BusinessKey");
        PlayerInfo[playerid][pWorkOn] = DOF2_GetInt(file, "WorkOn");
        PlayerInfo[playerid][pWalk] = DOF2_GetInt(file, "Walk");
        PlayerInfo[playerid][pHealth] = DOF2_GetFloat(file, "Health");
        PlayerInfo[playerid][pArmour] = DOF2_GetFloat(file, "Armour");
        PlayerInfo[playerid][pHasArmour] = DOF2_GetInt(file, "HasArmour");
        PlayerInfo[playerid][pFaction] = DOF2_GetInt(file, "Faction");
        PlayerInfo[playerid][pRank] = DOF2_GetInt(file, "Rank");
        PlayerInfo[playerid][pTeam] = DOF2_GetInt(file, "Team");
        PlayerInfo[playerid][pBadgeNumber] = DOF2_GetInt(file, "BadgeNumber");
        PlayerInfo[playerid][pLicenseWarns] = DOF2_GetInt(file, "LicenseWans");
        PlayerInfo[playerid][pJailTime2] = DOF2_GetInt(file, "JailTime2");
        PlayerInfo[playerid][pArrested] = DOF2_GetInt(file, "Arrested");
        PlayerInfo[playerid][pChatStyle] = DOF2_GetInt(file, "ChatStyle");
        PlayerInfo[playerid][pSWAT] = DOF2_GetInt(file, "SWAT");
        PlayerInfo[playerid][pSlot] = DOF2_GetInt(file, "Slot");
        PlayerInfo[playerid][pJob] = DOF2_GetInt(file, "Job");
        PlayerInfo[playerid][pJobRank] = DOF2_GetInt(file, "JobRank");
        PlayerInfo[playerid][pCareer] = DOF2_GetInt(file, "Career");
        PlayerInfo[playerid][pSideJob] = DOF2_GetInt(file, "SideJob");
        PlayerInfo[playerid][pSpawnType] = DOF2_GetInt(file, "SpawnType");
        PlayerInfo[playerid][pPrisoned] = DOF2_GetInt(file, "Prisoned");
        PlayerInfo[playerid][pKills] = DOF2_GetInt(file, "Kills");
        PlayerInfo[playerid][pDeaths] = DOF2_GetInt(file, "Deaths");
        
		if(PlayerInfo[playerid][pRegistered] != 0 || PlayerInfo[playerid][pLevel] > 0)
		{
			printf("%s (%d) entrou no servidor.", GetPlayerNameEx(playerid, 0), playerid);
			
			format(gstring, sizeof(gstring), "AdmAviso: %s (%d) entrou no servidor.", GetPlayerNameEx(playerid, 0), playerid);
			SendAdminMessage(COLOR_YELLOW, gstring, 1);

			StopAudioStreamForPlayer(playerid);
			SetPlayerDrunkLevel(playerid, 0);
    		SetSpawnInfo(playerid, playerid + 1, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], PlayerInfo[playerid][pPosA], -1, -1, -1, -1, -1, -1);
    		SpawnPlayer(playerid);
    		SetCameraBehindPlayer(playerid);
			SetPlayerColor(playerid, COLOR_WHITE);
			SetPlayerTeam(playerid, PlayerInfo[playerid][pTeam]);
			ResetPlayerMoney(playerid);
    		GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
    		SetPlayerFightingStyle(playerid, PlayerInfo[playerid][pFightingStyle]);
			SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
			SetPlayerHealth(playerid, PlayerInfo[playerid][pSpawnHealth]);
			SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);

			if(PlayerInfo[playerid][pSex] == 1)
			{
	    		SendClientMessageEx(playerid, COLOR_WHITE, "SERVIDOR: Bem-vindo %s.", GetPlayerNameEx(playerid, 0));
				GameTextForPlayerEx(playerid, "~w~Bem-vindo ~n~~y~   %s", 6000, 1, GetPlayerNameEx(playerid, 0));
			}
			else
			{
	    		SendClientMessageEx(playerid, COLOR_WHITE, "SERVIDOR: Bem-vinda %s.", GetPlayerNameEx(playerid, 0));
				GameTextForPlayerEx(playerid, "~w~Bem-vinda ~n~~y~   %s", 6000, 1, GetPlayerNameEx(playerid, 0));
			}

			if(PlayerInfo[playerid][pAdminLevel] > 0)
			{
				format(file, sizeof(file), "LARP/Admins/%s.ini", GetPlayerNameEx(playerid));
				if(DOF2_FileExists(file))
				{
		    		PlayerInfo[playerid][pAdminLevel] = DOF2_GetInt(file, "AdminLevel");
					SendClientMessageEx(playerid, COLOR_YELLOW, "Vocк logou como administrador nнvel %d.", PlayerInfo[playerid][pAdminLevel]);
					SendClientMessage(playerid, COLOR_GREY, "Vocк logou como administrador, por isto seu celular foi desligado automaticamente.");
				}
				else
				{
		    		PlayerInfo[playerid][pAdminLevel] = 0;
		    		SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк nгo й mais um administrador do servidor.");
				}
			}

			if(PlayerInfo[playerid][pHelperLevel] > 0)
			{
				format(file, sizeof(file), "LARP/Helpers/%s.ini", GetPlayerNameEx(playerid));
				if(DOF2_FileExists(file))
				{
		    		PlayerInfo[playerid][pHelperLevel] = DOF2_GetInt(file, "HelperLevel");
					SendClientMessageEx(playerid, COLOR_YELLOW, "Vocк logou como helper nнvel %d.", PlayerInfo[playerid][pHelperLevel]);
				}
				else
				{
 					PlayerInfo[playerid][pHelperLevel] = 0;
		    		SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк nгo й mais um helper do servidor.");
				}
			}
		}
		else
		{
			PlayerInfo[playerid][pRegistered] = 1;
	 		PlayerInfo[playerid][pLevel] = 0;
	 		PlayerInfo[playerid][pFightingStyle] = FIGHT_STYLE_NORMAL;
	 		PlayerInfo[playerid][pHealth] = 100.0;
			PlayerInfo[playerid][pSpawnHealth] = 100.0;
			PlayerInfo[playerid][pArmour] = 0.0;
			PlayerInfo[playerid][pTeam] = NO_TEAM;
			PlayerInfo[playerid][pJob] = 0;
			PlayerInfo[playerid][pKills] = 0;
			PlayerInfo[playerid][pDeaths] = 0;
			PlayerInfo[playerid][pPayDayTime] = 60;
			ResetPlayerMoney(playerid);
			PlayerInfo[playerid][pMoney] = 500;

			PlayerInfo[playerid][pPosX] = 1805.9271;
    		PlayerInfo[playerid][pPosY] = -1746.1440;
    		PlayerInfo[playerid][pPosZ] = 51.4588;
    		PlayerInfo[playerid][pInterior] = 0;
    		PlayerInfo[playerid][pVirtualWorld] = 1000 + playerid;

    		SetPlayerPos(playerid, 1805.9271, -1746.1440, 51.4588);
			SetPlayerCameraPos(playerid, 1808.8971, -1754.5114, 56.6778);
			SetPlayerCameraLookAt(playerid, 1809.8999, -1754.5228, 56.3977);
			SetPlayerInterior(playerid, 0);
			SetPlayerVirtualWorld(playerid, 1000 + playerid);
			TogglePlayerControllable(playerid, 0);

			Dialog_Show(playerid, Dialog_Sex, DIALOG_STYLE_LIST, "Selecione seu sexo", "Masculino\nFeminino", "Selecionar", "");
		}
	}
	else
	{
		WrongPassword[playerid]++;
    	if(WrongPassword[playerid] >= 5)
		{
       		SendClientMessage(playerid, COLOR_LIGHTRED, "Senha incorreta (5/5 tentativas).");
			KickEx(playerid, "Vocк foi kickado por digitar a senha errada 5 vezes.");
		}
		else
		{
  			new amount = 5 - WrongPassword[playerid];
            SendClientMessageEx(playerid, COLOR_LIGHTRED, "Senha incorreta (%i/%i tentativas).", amount);

			SendClientMessage(playerid, COLOR_LIGHTRED, "Vocк possui 60 segundos para logar-se.");
			format(gstring, sizeof(gstring), "Bem-vindo de volta ao Los Angeles Roleplay.\n\nConta: %s\nStatus: {33AA33}Registrada\n\n{A9C4E4}Digite sua senha abaixo para logar-se:", GetPlayerNameEx(playerid, 0));
			Dialog_Show(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Los Angeles Roleplay - Login", gstring, "Logar", "Sair");
		}
	}
 	return 1;
}

Dialog:Dialog_Login(playerid, response, listitem, inputtext[])
{
	if(!response)
	{
         GameTextForPlayer(playerid, "~r~Kickado", 4000, 4);
		 Kick(playerid);
	}
	if(response)
	{
        if(strlen(inputtext) == 0)
        {
            gstring[0] = EOS;
        
            format(gstring, sizeof(gstring), "Bem-vindo de volta ao Los Angeles Roleplay.\n\nConta: %s\nStatus: {33AA33}Registrada\n\n{A9C4E4}Digite sua senha abaixo para logar-se.",
			GetPlayerNameEx(playerid, 0));
            Dialog_Show(playerid, Dialog_Login, DIALOG_STYLE_PASSWORD, "Los Angeles Roleplay - Login", gstring, "Logar", "Sair");
            return 1;
        }
		OnPlayerLogin(playerid, inputtext);
        return 1;
	}
	return 1;
}

Dialog:Dialog_Register(playerid, response, listitem, inputtext[])
{
	if(!response)
	{
         GameTextForPlayer(playerid, "~r~Kickado", 4000, 4);
		 Kick(playerid);
	}
	if(response)
	{
        if(strlen(inputtext) == 0)
        {
            gstring[0] = EOS;
        
            format(gstring, sizeof(gstring), "Seja bem-vindo ao Los Angeles Roleplay.\n\nConta: %s\nStatus: {FF6633}Nгo registrada\n\n{A9C4E4}Digite uma senha abaixo para registrar-se.",
			GetPlayerNameEx(playerid, 0));
			Dialog_Show(playerid, Dialog_Register, DIALOG_STYLE_PASSWORD, "Los Angeles Roleplay - Registro", gstring, "Registrar", "Sair");
            return 1;
        }
        OnPlayerRegister(playerid, inputtext);
        return 1;
	}
	return 1;
}

Dialog:Dialog_Sex(playerid, response, listitem, inputtext[])
{
    if(!response)
    {
        Dialog_Show(playerid, Dialog_Sex, DIALOG_STYLE_LIST, "Selecione seu sexo", "Masculino\nFeminino", "Selecionar", "");
    }
	if(response)
	{
	    switch(listitem)
	    {
	    	case 0:
	    	{
                PlayerInfo[playerid][pSex] = 1;
    			SendClientMessage(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й um homem.");
    			SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com o sexo de sua personagem.");
				Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
			}
			case 1:
			{
                PlayerInfo[playerid][pSex] = 2;
			    SendClientMessage(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й uma mulher.");
			    SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com o sexo de sua personagem.");
				Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
			}
		}
	}
	return 1;
}

Dialog:Dialog_Birthdate(playerid, response, listitem, inputtext[])
{
    if(!response)
    {
        Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
    }
	if(response)
	{
	    new
			iDay,
			iMonth,
			iYear;

	    static const
	        MonthDays[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

	    if(sscanf(inputtext, "p</>ddd", iDay, iMonth, iYear))
		{
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Formato especificado invбlido (DD/MM/AAAA).");
            Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
		}
        else if(iYear < 1980 || iYear > 2017)
		{
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Ano especificado invбlido (O ano nгo pode ser menor que 1980 nem superior а 2017).");
		    Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
		}
		else if(iMonth < 1 || iMonth > 12)
		{
            SendClientMessage(playerid, COLOR_LIGHTRED, "Mкs especificado invбlido (O mкs nгo pode ser menor que 1 nem superior а 12).");
		    Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
		}
		else if(iDay < 1 || iDay > MonthDays[iMonth - 1])
		{
		    SendClientMessage(playerid, COLOR_LIGHTRED, "Dia especificado invбlido (O dia nгo pode ser menor que 1 nem superior а 31).");
		    Dialog_Show(playerid, Dialog_Birthdate, DIALOG_STYLE_INPUT, "Data de nascimento", "Entre com a data de nascimento de sua personagem abaixo.", "Prуximo", "");
		}
		else
		{
			format(PlayerInfo[playerid][pBirthdate], 24, inputtext);
			SendClientMessageEx(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem nasceu em %s.", PlayerInfo[playerid][pBirthdate]);
			SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a data de nascimento de sua personagem.");
			Dialog_Show(playerid, Dialog_Origin, DIALOG_STYLE_INPUT, "Origem", "Entre com a origem de sua personagem abaixo.", "Prуximo", "");
		}
	}
	return 1;
}

Dialog:Dialog_Origin(playerid, response, listitem, inputtext[])
{
    if(!response)
    {
        Dialog_Show(playerid, Dialog_Origin, DIALOG_STYLE_INPUT, "Origem", "Entre com a origem de sua personagem abaixo.", "Prуximo", "");
    }
	if(response)
 	{
		format(PlayerInfo[playerid][pOrigin], 60, inputtext);
 		SendClientMessageEx(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem cresceu em %s.", PlayerInfo[playerid][pOrigin]);
		SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a origem de sua personagem.");
		Dialog_Show(playerid, Dialog_Etnia, DIALOG_STYLE_LIST, "Selecione sua etnia", "Asiбtico\nNegro\nCaucasiano\nHispвnico", "Prуximo", "");
	}
	return 1;
}

Dialog:Dialog_Etnia(playerid, response, listitem, inputtext[])
{
    if(!response)
    {
        Dialog_Show(playerid, Dialog_Etnia, DIALOG_STYLE_LIST, "Selecione sua etnia", "Asiбtico\nNegro\nCaucasiano\nHispвnico", "Prуximo", "");
    }
	if(response)
 	{
 	    switch(listitem)
	    {
	    	case 0:
	    	{
               	format(PlayerInfo[playerid][pEtnia], 60, "Asiбtico");
    			SendClientMessage(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й asiбtico.");
    			SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a etnia de sua personagem.");
			}
			case 1:
			{

                format(PlayerInfo[playerid][pEtnia], 60, "Negro");
			    SendClientMessage(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й negro.");
			    SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a etnia de sua personagem.");
			}
			case 2:
			{
                format(PlayerInfo[playerid][pEtnia], 60, "Caucasiano");
			    SendClientMessage(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й caucasiano.");
			    SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a etnia de sua personagem.");
			}
			case 3:
			{
                format(PlayerInfo[playerid][pEtnia], 60, "Hispвnico");
			    SCM(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, sua personagem й hispвnico.");
			    SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a etnia de sua personagem.");
			}
		}
		Dialog_Show(playerid, Dialog_ForumName, DIALOG_STYLE_INPUT, "Nome do fуrum", "Estamos quase terminando...\nEntre com o seu nome do fуrum abaixo.", "Prуximo", "");
	}
	return 1;
}

Dialog:Dialog_ForumName(playerid, response, listitem, inputtext[])
{
    if(!response)
    {
        Dialog_Show(playerid, Dialog_ForumName, DIALOG_STYLE_INPUT, "Nome no fуrum", "Estamos quase terminando...\nEntre com o seu nome no fуrum abaixo.", "Prуximo", "");
    }
	if(response)
 	{
 		format(PlayerInfo[playerid][pForumName], MAX_PLAYER_NAME, "%s", inputtext);
 		SendClientMessageEx(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, seu nome no fуrum й %s.", inputtext);
		SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com o seu nome no fуrum.");
		switch(PlayerInfo[playerid][pSex])
		{
			case 1: ShowModelSelectionMenu(playerid, "Selecione sua skin", MODEL_SELECTION_SKINS, MaleSkins, sizeof(MaleSkins), -16.0, 0.0, -55.0);
			case 2: ShowModelSelectionMenu(playerid, "Selecione sua skin", MODEL_SELECTION_SKINS, FemaleSkins, sizeof(FemaleSkins), -16.0, 0.0, -55.0);
		}
	}
	return 1;
}

public OnPlayerConnect(playerid)
{
    if(IsPlayerNPC(playerid)) return 1;

    if(playerid > MAX_PLAYERS)
	{
		KickEx(playerid, "Oops! Ocorreu um erro no sistema, informe para um administrador. (ERRO: playerid excede MAX_PLAYERS)");
		return 1;
	}
	if(!IsValidName(playerid))
	{
		KickEx(playerid, "Mude o formato do seu nome para um estilo roleplay, exemplo: James_Walker.");
		return 1;
	}
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    OnPlayerSave(playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
    if(IsPlayerNPC(playerid)) return 1;
	
	SetPlayerSkillLevel(playerid, WEAPONSKILL_AK47, 999);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_M4, 999);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_MP5, 999);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_SHOTGUN, 999);
    
    SetPlayerSkillLevel(playerid, WEAPONSKILL_PISTOL, 1);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_MICRO_UZI, 1);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_SPAS12_SHOTGUN, 1);
    SetPlayerSkillLevel(playerid, WEAPONSKILL_SAWNOFF_SHOTGUN, 1);
    
    TogglePlayerSpectating(playerid, 0);
    ClearAnimations(playerid);
    if(PlayerInfo[playerid][pSkin] > 0)
	{
	  SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
	}
    Streamer_ToggleIdleUpdate(playerid, 1);
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

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

public OnPlayerText(playerid, text[])
{
    if(!IsPlayerLoggedIn(playerid))
	{
		SendErrorMessage(playerid, "Vocк nгo estб logado.");
		return 0;
	}
	if(PlayerInfo[playerid][pMuted] == 1)
	{
		SendErrorMessage(playerid, "Vocк estб mutado.");
		return 0;
	}
	return 1;
}

public OnPlayerCommandReceived(playerid, cmdtext[])
{
	if(!IsPlayerLoggedIn(playerid))
	{
		SendErrorMessage(playerid, "Vocк nгo estб logado.");
		return 0;
	}
	if(PlayerInfo[playerid][pMuted] == 1)
	{
		SendErrorMessage(playerid, "Vocк estб mutado.");
		return 0;
	}
	return 1;
}

public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
    if(!success)
    {
        SendClientMessageEx(playerid, -1, "{89B9D9}ERRO: {FFFFFF}Desculpe, o comando %s nгo existe. Digite {89B9D9}/ajuda{FFFFFF} ou {89B9D9}/sos{FFFFFF} se vocк precisar de ajuda.", cmdtext);
		return 1;
    }
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	return 0;
}

CMD:ame(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/ame [aзгo]");
	else
	{
		format(gstring, sizeof(gstring), "> %s %s", GetPlayerNameEx(playerid), params);
		SetPlayerChatBubble(playerid, gstring, COLOR_PURPLE, 10.0, 10000);
		SendClientMessage(playerid, COLOR_PURPLE, gstring);
	}
	return 1;
}

CMD:local(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/local [texto]");
	else
	{
		format(gstring, sizeof(gstring), "%s diz: %s", GetPlayerNameEx(playerid, 0), params);
		ProxDetector(10.0, playerid,gstring, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
	}
	return 1;
}

CMD:t(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/t [texto]");
    else
	{
		format(gstring, sizeof(gstring), "%s diz: %s", GetPlayerNameEx(playerid, 0), params);
		ProxDetector(10.0, playerid, gstring, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
	}
	return 1;
}

CMD:me(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/me [aзгo]");
    else
	{
    	format(gstring, sizeof(gstring), "* %s %s", GetPlayerNameEx(playerid, 0), params);
    	ProxDetector(10.0, playerid, gstring, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
	}
	return 1;
}

CMD:do(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/do [aзгo]");
	else
	{
		format(gstring, sizeof(gstring), "* %s ((%s))", params, GetPlayerNameEx(playerid, 0));
		ProxDetector(10.0, playerid, gstring, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
	}
	return 1;
}

CMD:gritar(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/(g)ritar [mensagem]");
    else
	{
		format(gstring, sizeof(gstring), "%s grita: %s", GetPlayerNameEx(playerid, 0), params);
		ProxDetector(30.0, playerid, gstring, COLOR_WHITE, COLOR_WHITE, COLOR_WHITE, COLOR_FADE1, COLOR_FADE2);
		SetPlayerChatBubble(playerid, gstring, COLOR_FADE1, 30.0, strlen(gstring)*100);
	}
	return 1;
}

CMD:b(playerid, params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/b [chat ooc local]");
    else
	{
    	if(PlayerInfo[playerid][pAdminDuty])
			format(gstring, sizeof(gstring), "(( [%d] {408080}%s{B2B2B2}: %s ))", playerid, GetPlayerNameEx(playerid, 0), params);
		else
			format(gstring, sizeof(gstring), "(( [%d] %s: %s ))", playerid, GetPlayerNameEx(playerid, 0), params);
		ProxDetector(10.0, playerid, gstring, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY, COLOR_GREY);
	}
	return 1;
}

CMD:baixo(playerid,params[])
{
	if(isnull(params)) return SendSyntaxMessage(playerid, "/baixo [chat baixo]");
	else
	{
		format(gstring, sizeof(gstring), "%s diz [baixo]: %s", GetPlayerNameEx(playerid, 0), params);
		ProxDetector(3.0, playerid, gstring, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5);
	}
	return 1;
}

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

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

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(IsPlayerNPC(playerid)) return 1;
    
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    if(IsPlayerNPC(playerid)) return 1;
    
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

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

public OnPlayerRequestSpawn(playerid)
{
    if(!IsPlayerNPC(playerid) && !IsPlayerLoggedIn(playerid))
	{
		KickEx(playerid, "Vocк deve estar logado para spawnar (/login).");
		return 0;
	}
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

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

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

public OnVehicleMod(playerid, vehicleid, componentid)
{
	return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
	return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
	return 1;
}

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

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
	return 1;
}

public OnPlayerUpdate(playerid)
{
    if(CheckMoney[playerid] && CheckMoney[playerid] < GetPlayerMoney(playerid)) GivePlayerMoney(playerid, (~(GetPlayerMoney(playerid) - CheckMoney[playerid]) + 1));
    CheckMoney[playerid] = GetPlayerMoney(playerid);
    
    Streamer_Update(playerid);
	return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
	return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
	return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
	return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
	return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	return 1;
}

public OnModelSelectionResponse(playerid, extraid, index, modelid, response)
{
	if(extraid == MODEL_SELECTION_SKINS)
	{
	    PlayerInfo[playerid][pSkin] = modelid;
	    
	    SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);

        SendClientMessageEx(playerid, COLOR_GREEN, "[Criaзгo de personagem] Certo, a skin de sua personagem й a id %d.", PlayerInfo[playerid][pSkin]);
		SendClientMessage(playerid, COLOR_YELLOW, "Sua conta foi salva com a skin de sua personagem.");

		PlayerInfo[playerid][pLevel] = 0;
		PlayerInfo[playerid][pHealth] = 100.0;
		PlayerInfo[playerid][pArmour] = 0.0;

 		SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
  		SetPlayerHealth(playerid, PlayerInfo[playerid][pHealth]);
		SetPlayerArmour(playerid, PlayerInfo[playerid][pArmour]);

 		PlayerInfo[playerid][pPosX] = 1720.0168;
		PlayerInfo[playerid][pPosY] = -1946.6484;
		PlayerInfo[playerid][pPosZ] = 13.1215;
		PlayerInfo[playerid][pPosA] = 180;
		PlayerInfo[playerid][pInterior] = 0;
		PlayerInfo[playerid][pVirtualWorld] = 0;

		SetSpawnInfo(playerid, 0, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ], 0, 0, 0, 0, 0, 0, 0);
		SetPlayerPos(playerid, PlayerInfo[playerid][pPosX], PlayerInfo[playerid][pPosY], PlayerInfo[playerid][pPosZ]);
		SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pPosA]);
		SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
		SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][pVirtualWorld]);
		SpawnPlayer(playerid);
		TogglePlayerSpectating(playerid, 0);
		SetCameraBehindPlayer(playerid);
		TogglePlayerControllable(playerid, 1);
		SetPlayerColor(playerid, COLOR_WHITE);
    }
	return 1;
}

AntiDeAMX()
{
	new antidamx[][] =
	{
		"Unarmed (Fist)",
		"Brass K",
		"Fire Ex"
	};
	#pragma unused antidamx
}
Reply
#6

Alguйm? Ninguйm pra ajudar?
Reply
#7

Tenta por as includes no comeзo
Reply
#8

Quote:
Originally Posted by C4rtm4n
Посмотреть сообщение
Tenta por as includes no comeзo
Nгo adiantou, man.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)