Advertisement
RogerGomesCosta

Untitled

Jul 8th, 2014
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 89.01 KB | None | 0 0
  1. // Includes
  2.  
  3.  
  4. #include <a_samp>
  5. #include <SII>
  6.  
  7. //#define MODE_NAME "MEUMODE"
  8. #include <YSI\y_races>
  9. #include <sscanf2>
  10. #include <YSI\y_iterate>
  11. #include <zcmd>
  12.  
  13.  
  14. // Definições
  15. #file                                           "SA RS Tuning"
  16.  
  17. #define MAX_PLAYER                              30
  18.  
  19. #define COLOR_RED                               0xBB0000FF
  20. #define COLOR_WHITE                             0xFFFFFFFF
  21. #define COLOR_GOLD                              0xFFD700FF
  22. #define COLOR_BLUE                              0x2587CEFF
  23. #define COLOR_GRAY                              0xDDDDDDFF
  24. #define COLOR_GREEN                             0x366718FF
  25. #define COLOR_RED                               0xBB0000FF
  26. #define COLOR_PURPLE                            0x895BD9FF
  27. #define COLOR_YELLOW                            0xFAA505FF
  28.  
  29. #define DIALOG_REGISTER                         1
  30. #define DIALOG_LOGIN                            2
  31. #define DIALOG_ENGINE                           3
  32. #define DIALOG_MODSHOP                          4
  33. #define DIALOG_MODSHOP2                         5
  34. #define DIALOG_MODSHOP3                         6
  35.  
  36. #define DIALOG_WORKSHOP                         200
  37. #define DIALOG_WORKSHOPH                        201
  38. #define DIALOG_WORKSHOP_COLOR                   202
  39.  
  40. #define DIALOG_CARS                             300
  41.  
  42. #define DIALOG_TEXT_NO_EFFECT                   400
  43.  
  44. #define DIALOG_HELP                             7001
  45. #define DIALOG_COMMANDS                         7002
  46.  
  47. #define RGB_COLOR_WHITE                         "{FFFFFF}"
  48. #define RGB_COLOR_GOLD                          "{FFD700}"
  49.  
  50. #define BYTES_PER_CELL                          4
  51.  
  52.  
  53.  
  54. native IsValidVehicle(vehicleid);
  55.  
  56. main()
  57. {
  58.     print("\n* San Andreas R.S. Tuning");
  59.     print("# Iniciado em 2014");
  60.     print("@ Criado por Roger Gomes Costa\n");
  61. }
  62.  
  63.  
  64. // --------------------------------------------
  65. // ---------- Definindo novas variáveis/funções
  66. // - VARIÁVEIS [DIALOGS]
  67. static g_szHelpDialog[] =  #RGB_COLOR_GOLD"\
  68.                         AJUDA\n\n\
  69.                         "RGB_COLOR_WHITE"/ajuda - Mostra esta mensagem de ajuda.\n\
  70.                         /comandos - Mostra a lista de comandos do servidor.\n\
  71.                         /reportar [id/nome] [mensagem] - Reporta um jogador à equipe do servidor.\n\
  72.                         /tutorial - Mostra o tutorial do servidor.";
  73.  
  74.  
  75.  
  76. static g_szCommandsDialog[] =   #RGB_COLOR_GOLD"\
  77.                             COMANDOS\n\n\
  78.                             "RGB_COLOR_WHITE"/races - Lista de corridas disponíveis no servidor\n\
  79.                             /openedraces - Lista de corridas abertas no servidor\n\
  80.                             /openrace [id] - Abre uma corrida para que você e outros jogadores possam entrar\n\
  81.                             /race [slot] - Entra em uma corrida\n";
  82.  
  83.  
  84. static g_szCommandsDialog1[] = "/leave - Sai da corrida atual (se estiver em uma)\n\
  85.                             /tuning - Abre menu de tuning (se estiver na oficina)\n\
  86.                             /trancar /destrancar - Tranca e destranca veículo\n\
  87.                             /motor - Liga/Desliga o veículo\n\
  88.                             /lights - Acende/Apaga os faróis do veículo\n\
  89.                             /mycars - Localizar determinado veículo\n\
  90.                             /skin - Altera a sua skin\n\
  91.                             /construtor - Construir sua própria corrida";
  92.  
  93. static sz_CmdAdmins[] = RGB_COLOR_GOLD"COMANDOS DE ADMINISTRADORES\n\n\
  94.                       "RGB_COLOR_WHITE"/dardinheiro /setardinheiro /expulsar /encerrarcorrida\n\
  95.                       /setarcolete /setarvida /forcarcomando";
  96.  
  97. new Text:txtModeName, Text:txtDate, Text:txtVehDistrict;
  98. new Text:BoasVindas, Text:BoasVindas2;
  99. new Text:StartRaceTxt;
  100. new Text:RaceEndInfo, Text:RaceEndInfo2;
  101. new Text:TextVeh1;
  102. new Text:TextVeh2;
  103. new Text:TextVeh3;
  104. new Text:TextVeh1Name;
  105. new Text:TextVeh2Name;
  106. new Text:TextVeh3Name;
  107. new Text:TextVehBox;
  108. new Text:TextVehInfo;
  109.  
  110.  
  111. enum PLAYER_INFO
  112. {
  113.     bool:Registered,
  114.     bool:Logged,
  115.     pSkin,
  116.     playermoney,
  117.     pName[24],
  118.     pFile[100],
  119.     Float:pX,
  120.     Float:pY,
  121.     Float:pZ,
  122.     Float:pA,
  123.     pInterior,
  124.     pGPS,
  125.     pDM,
  126.     pRaceID,
  127.     pWeapon[13],
  128.     pAmmo[13],
  129.     pTutorial
  130. }
  131. new PlayerInfo[MAX_PLAYER][PLAYER_INFO];
  132.  
  133. enum Vehicles
  134. {
  135.     VehID,
  136.     VehOwner[24],
  137.     VehName[50],
  138.     VehKeys[100],
  139.     VehPlate[10],
  140.     VehSpoiler,
  141.     VehHood,
  142.     VehRoof,
  143.     VehSideskirt,
  144.     VehLamps,
  145.     VehNitro,
  146.     VehExhaust,
  147.     VehWheels,
  148.     VehStereo,
  149.     VehHydraulics,
  150.     VehFB,
  151.     VehRB,
  152.     VehVR,
  153.     VehVL,
  154.     Float:VehX,
  155.     Float:VehY,
  156.     Float:VehZ,
  157.     Float:VehA,
  158.     VehColor1,
  159.     VehColor2,
  160.     VehPaintjob,
  161.     Text3D:VehText,
  162.     VehStatus,
  163.     VehEngine,
  164.     VehLights,
  165.     VehAlarm,
  166.     VehDoors,
  167.     VehBonnet,
  168.     VehBoot,
  169.     VehObjective,
  170.     bool:VehLocked,
  171.     VehDoorsArmour,
  172.     VehTiresArmour,
  173.     VehLightsArmour,
  174.     VehPanelsArmour,
  175.     VehHealth
  176. }
  177.  
  178. new ServerVehicles[500][Vehicles];
  179. new VehCreate[500] = {-1, ...};
  180.  
  181. new VehProhibiteds[] =
  182. {
  183.     406,
  184.     407,
  185.     408,
  186.     416,
  187.     417,
  188.     425,
  189.     432,
  190.     441,
  191.     444,
  192.     447,
  193.     449,
  194.     464,
  195.     465,
  196.     469,
  197.     476,
  198.     501,
  199.     537,
  200.     538,
  201.     544,
  202.     548,
  203.     553,
  204.     563,
  205.     564,
  206.     569,
  207.     570,
  208.     577,
  209.     590,
  210.     591,
  211.     592,
  212.     593,
  213.     594,
  214.     601,
  215.     606,
  216.     607,
  217.     608,
  218.     610,
  219.     611
  220. };
  221.  
  222. new VehicleNames[212][] = {
  223. {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"},
  224. {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"},
  225. {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"},
  226. {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"},
  227. {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"},
  228. {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"},
  229. {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"},
  230. {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"},
  231. {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"},
  232. {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"},
  233. {"Rustler"}, {"ZR-350"}, {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"},
  234. {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"},
  235. {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"}, {"Boxville"}, {"Benson"},
  236. {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"}, {"Bloodring Banger"}, {"Rancher"},
  237. {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"},
  238. {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
  239. {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"},
  240. {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"},
  241. {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"},
  242. {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"},
  243. {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"},
  244. {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"},
  245. {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"},
  246. {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"},
  247. {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"},
  248. {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"},
  249. {"Police Car (LVPD)"}, {"Police Ranger"}, {"Picador"}, {"S.W.A.T. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"},
  250. {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"}, {"Boxville"}, {"Farm Plow"},
  251. {"Utility Trailer"}
  252. };
  253.  
  254.  
  255. enum Races
  256. {
  257.     // Carregar
  258.     RaceName[30],
  259.     RaceStart[100],
  260.     RaceType,
  261.     RacePrice,
  262.     RaceWorld,
  263.     RaceInterior,
  264.     RaceLaps,
  265.     RaceReward,
  266.  
  267.     // While
  268.     bool:RaceOpen,
  269.     RaceTotal,
  270.     RaceCurrent,
  271.     Race1, Race1Name[20],
  272.     Race2, Race2Name[20],
  273.     Race3, Race3Name[20],
  274.     Race4, Race4Name[20],
  275.     bool:RaceExist
  276. }
  277.  
  278. new RaceCreate[100];
  279. new RaceCreate1[100];
  280. new RaceInfo[100][Races];
  281. new RaceCPPos[100][50][100]; // 100 corridas, 30 cps, 100 tamanho da string
  282. new RaceSTPos[100][20][100]; // 100 corridas, 30 cps, 100 tamanho da string
  283.  
  284. native WP_Hash(buffer[], len, const str[]);
  285.  
  286. forward CheckMoney();
  287.  
  288.  
  289. // stock GetPlayerNameEx(playerid) - Retorna o nome do jogador
  290. stock GetPlayerNameEx(playerid)
  291. {
  292.     new szName[MAX_PLAYER_NAME];
  293.  
  294.     GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
  295.  
  296.     return szName;
  297. }
  298.  
  299. #define GetPlayerName GetPlayerNameEx
  300.  
  301. stock PlayAudioForAll(audioid)
  302. {
  303.     foreach(Player, i)
  304.     {
  305.         PlayerPlaySound(i, audioid, 0.0, 0.0, 0.0);
  306.     }
  307.     return true;
  308. }
  309.  
  310. // stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...) - Envia uma mensagem formatada para o jogador
  311. stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...)
  312. {
  313.     static const STATIC_ARGS = 3;
  314.     new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
  315.     if(n)
  316.     {
  317.         new message[144], arg_start, arg_end;
  318.         #emit CONST.alt         fstring
  319.         #emit LCTRL             5
  320.         #emit ADD
  321.         #emit STOR.S.pri        arg_start
  322.  
  323.         #emit LOAD.S.alt        n
  324.         #emit ADD
  325.         #emit STOR.S.pri        arg_end
  326.         do
  327.         {
  328.             #emit LOAD.I
  329.             #emit PUSH.pri
  330.             arg_end -= BYTES_PER_CELL;
  331.             #emit LOAD.S.pri    arg_end
  332.         }
  333.         while(arg_end > arg_start);
  334.  
  335.         #emit PUSH.S            fstring
  336.         #emit PUSH.C            144
  337.         #emit PUSH.ADR          message
  338.  
  339.         n += BYTES_PER_CELL * 3;
  340.         #emit PUSH.S            n
  341.         #emit SYSREQ.C          format
  342.  
  343.         n += BYTES_PER_CELL;
  344.         #emit LCTRL             4
  345.         #emit LOAD.S.alt        n
  346.         #emit ADD
  347.         #emit SCTRL             4
  348.  
  349.         return SendClientMessage(playerid, color, message);
  350.     } else
  351.         return SendClientMessage(playerid, color, fstring);
  352. }
  353.  
  354. // stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...) - Envia uma mensagem formatada para todos os jogadores
  355. stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...)
  356. {
  357.     #if defined DEBUG_MODE
  358.         #if !defined DEBUG_NO_FUNCTIONS
  359.             printf("[DEBUG] stock SendClientMessageToAllEx(color #%x, fstring '%s')", color, fstring);
  360.         #endif
  361.     #endif
  362.  
  363.     static const STATIC_ARGS = 2;
  364.     new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
  365.     if(n)
  366.     {
  367.         new message[144], arg_start, arg_end;
  368.         #emit CONST.alt         fstring
  369.         #emit LCTRL             5
  370.         #emit ADD
  371.         #emit STOR.S.pri        arg_start
  372.  
  373.         #emit LOAD.S.alt        n
  374.         #emit ADD
  375.         #emit STOR.S.pri        arg_end
  376.         do
  377.         {
  378.             #emit LOAD.I
  379.             #emit PUSH.pri
  380.             arg_end -= BYTES_PER_CELL;
  381.             #emit LOAD.S.pri    arg_end
  382.         }
  383.         while(arg_end > arg_start);
  384.  
  385.         #emit PUSH.S            fstring
  386.         #emit PUSH.C            144
  387.         #emit PUSH.ADR          message
  388.  
  389.         n += BYTES_PER_CELL * 3;
  390.         #emit PUSH.S            n
  391.         #emit SYSREQ.C          format
  392.  
  393.         n += BYTES_PER_CELL;
  394.         #emit LCTRL             4
  395.         #emit LOAD.S.alt        n
  396.         #emit ADD
  397.         #emit SCTRL             4
  398.  
  399.         return SendClientMessageToAll(color, message);
  400.     } else
  401.         return SendClientMessageToAll(color, fstring);
  402. }
  403.  
  404. #define SendClientMessage SendClientMessageEx
  405. #define SendClientMessageToAll SendClientMessageToAllEx
  406.  
  407. stock SetPlayerPosEx(playerid, Float: x, Float: y, Float: z, Float: a, interior, virtualworld, bool: bTeleportVehicle = true)
  408. {
  409.     if(!IsPlayerConnected(playerid))
  410.         return false;
  411.  
  412.     new iVehicleID = GetPlayerVehicleID(playerid);
  413.     new iPlayerSeat = GetPlayerVehicleSeat(playerid);
  414.  
  415.     if(bTeleportVehicle && IsPlayerInAnyVehicle(playerid))
  416.     {
  417.         SetVehiclePos(iVehicleID, x, y, z);
  418.         SetVehicleZAngle(iVehicleID, a);
  419.         SetVehicleVirtualWorld(iVehicleID, virtualworld);
  420.  
  421.         LinkVehicleToInterior(iVehicleID, interior);
  422.     }
  423.  
  424.     SetPlayerPosFindZ(playerid, x, y, z);
  425.     SetPlayerFacingAngle(playerid, a);
  426.     SetPlayerInterior(playerid, interior);
  427.     SetPlayerVirtualWorld(playerid, virtualworld);
  428.  
  429.     if(bTeleportVehicle)
  430.         PutPlayerInVehicle(playerid, iVehicleID, iPlayerSeat);
  431.  
  432.     return true;
  433. }
  434.  
  435. // stock TimestampToDate(timestamp) - Converte uma timestamp para o formato DD/MM/AA HH:MM:SS
  436. stock TimestampToDate(timestamp)
  437. {
  438.     new year = 1970, day = 0, month = 0, hour = UTC_TIMEZONE, mins = 0, sec = 0;
  439.  
  440.     new days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  441.     new returnstring[32];
  442.  
  443.     while(timestamp > 31622400)
  444.     {
  445.         timestamp -= 31536000;
  446.         if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) timestamp -= 86400;
  447.         year++;
  448.     }
  449.  
  450.     if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) )
  451.         days_of_month[1] = 29;
  452.     else
  453.         days_of_month[1] = 28;
  454.  
  455.     while(timestamp > 86400)
  456.     {
  457.  
  458.  
  459.         timestamp -= 86400, day++;
  460.  
  461.         if(day==days_of_month[month]) day = 0, month++;
  462.     }
  463.  
  464.     while(timestamp > 60)
  465.     {
  466.         timestamp -= 60, mins++;
  467.         if( mins == 60) mins=0, hour++;
  468.     }
  469.  
  470.     sec = timestamp;
  471.  
  472.     format(returnstring, 31, "%02d/%02d/%d %02d:%02d:%02d", day+1, month+1, year, hour, mins, sec);
  473.  
  474.     return returnstring;
  475. }
  476.  
  477. public OnGameModeInit()
  478. {
  479.     SetTimer("OnVehicleUpdate", 1000*10, true);
  480.     SetTimer("OnServerUpdate", 1000, true);
  481.     Langs_AddLanguage("PT", "Brasil");
  482.     SetGameModeText("SA Race");
  483.     //DisableInteriorEnterExits();
  484.     DisableNameTagLOS();
  485.     ManualVehicleEngineAndLights();
  486.     //UsePlayerPedAnims();
  487.     AddPlayerClass(0, 0.0, 0.0, 0.0, 0.0, 0, 0, 0, 0, 0, 0);
  488.    
  489.  
  490.      //object(billbrdlan2_05) (1)
  491.      //object(billbrdlan2_05) (2)
  492.      //object(billbrdlan2_05) (3)
  493.      //object(billbrdlan2_05) (4)
  494.  
  495.  
  496.     new objecttext = CreateObject(4731,1725.4000000,-1637.2000000,44.0000000,0.0000000,0.2500000,210.2500000); //object(vgwestbillbrd1) (1)
  497.     SetObjectMaterialText(objecttext, "SHOPPING", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 115, 1, 0xFFEAEAEA, 0, 1);
  498.    
  499.     new objecttext1 = CreateObject(4731,1774.2000000,-1660.3000000,21.2000000,0.0000000,0.2470000,335.7450000);
  500.     SetObjectMaterialText(objecttext1, "B A N C O", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 120, 1, 0xFFEAEAEA, 0, 1);
  501.    
  502.     new objecttext2 = CreateObject(4731,1555.8000000,-1675.5000000,19.0000000,0.0000000,0.0000000,300.2450000);
  503.     SetObjectMaterialText(objecttext2, " L.S.P.D", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 20, 1, 0xFFFFFFFF, 0, 1);
  504.  
  505.     new objecttext3 = CreateObject(4731,1481.2000000,-1750.8000000,29.3000000,0.0000000,0.0000000,210.2500000);
  506.     SetObjectMaterialText(objecttext3, "\n\nTRIBUNAL", 0, OBJECT_MATERIAL_SIZE_512x256, "Mongolian Baiti", 60, 1, 0xFFEAEAEA, 0, 1);
  507.    
  508.     CreateTextdraws();
  509.     CreateVehicles();
  510.     LoadRaces();
  511.     return true;
  512. }
  513.  
  514. forward LoadRaces();
  515. public LoadRaces()
  516. {
  517.     for(new i = 0; i < 100; i++)
  518.     {
  519.         new file[100];
  520.         format(file, sizeof file, "RS-RACE/Races/Race%d.ini", i);
  521.         if(SII_Exist(file))
  522.         {
  523.             SII_Open(file);
  524.             SII_ReadString(RaceInfo[i][RaceName], "Name", 30);
  525.             RaceInfo[i][RaceType] = SII_ReadInt("Type");
  526.             RaceInfo[i][RaceReward] = SII_ReadInt("Reward");
  527.  
  528.             //RaceInfo[i][RacePrice] = SII_ReadInt("Price");
  529.             //RaceInfo[i][RaceInterior] = SII_ReadInt("Interior");
  530.             //RaceInfo[i][RaceLaps] = SII_ReadInt("Laps");
  531.  
  532.             for(new k = 0; k < 50; k++)
  533.             {
  534.                 new line[50];
  535.                 format(line, sizeof line, "CP_%d", k);
  536.                 SII_ReadString(RaceCPPos[i][k], line, 100);
  537.             }
  538.  
  539.             for(new j = 0; j < 20; j++)
  540.             {
  541.                 new line[50];
  542.                 format(line, sizeof line, "ST_%d", j);
  543.                 SII_ReadString(RaceSTPos[i][j], line, 100);
  544.             }
  545.  
  546.             SII_Close();
  547.             RaceInfo[i][RaceExist] = true;
  548.             RaceInfo[i][RaceOpen] = false;
  549.         }
  550.     }
  551. }
  552.  
  553. forward CreateVehicles();
  554. public CreateVehicles()
  555. {
  556.     new total;
  557.     for(new i = 1; i < 500; i++)
  558.     {
  559.         new file[100];
  560.         format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  561.         if(SII_Exist(file))
  562.         {
  563.             SII_Open(file);
  564.             SII_ReadString(ServerVehicles[i][VehOwner], "Owner", 24);
  565.             SII_ReadString(ServerVehicles[i][VehKeys], "Keys", 100);
  566.             SII_ReadString(ServerVehicles[i][VehPlate], "Plate", 10);
  567.             ServerVehicles[i][VehID] = SII_ReadInt("Model");
  568.             ServerVehicles[i][VehSpoiler] = SII_ReadInt("Spoiler");
  569.             ServerVehicles[i][VehHood] = SII_ReadInt("Hood");
  570.             ServerVehicles[i][VehRoof] = SII_ReadInt("Roof");
  571.             ServerVehicles[i][VehSideskirt] = SII_ReadInt("Sideskirt");
  572.             ServerVehicles[i][VehLamps] = SII_ReadInt("Lamps");
  573.             ServerVehicles[i][VehNitro] = SII_ReadInt("Nitro");
  574.             ServerVehicles[i][VehExhaust] = SII_ReadInt("Exhaust");
  575.             ServerVehicles[i][VehWheels] = SII_ReadInt("Wheels");
  576.             ServerVehicles[i][VehStereo] = SII_ReadInt("Stereo");
  577.             ServerVehicles[i][VehHydraulics] = SII_ReadInt("Hydraulics");
  578.             ServerVehicles[i][VehFB] = SII_ReadInt("FB");
  579.             ServerVehicles[i][VehRB] = SII_ReadInt("RB");
  580.             ServerVehicles[i][VehVR] = SII_ReadInt("VR");
  581.             ServerVehicles[i][VehVL] = SII_ReadInt("VL");
  582.             ServerVehicles[i][VehX] = SII_ReadFloat("PosX");
  583.             ServerVehicles[i][VehY] = SII_ReadFloat("PosY");
  584.             ServerVehicles[i][VehZ] = SII_ReadFloat("PosZ");
  585.             ServerVehicles[i][VehA] = SII_ReadFloat("PosA");
  586.             ServerVehicles[i][VehPaintjob] = SII_ReadInt("Paintjob");
  587.             ServerVehicles[i][VehColor1] = SII_ReadInt("Color1");
  588.             ServerVehicles[i][VehColor2] = SII_ReadInt("Color2");
  589.             ServerVehicles[i][VehTiresArmour] = SII_ReadInt("TiresArmour");
  590.             ServerVehicles[i][VehDoorsArmour] = SII_ReadInt("DoorsArmour");
  591.             ServerVehicles[i][VehPanelsArmour] = SII_ReadInt("PanelsArmour");
  592.             ServerVehicles[i][VehLightsArmour] = SII_ReadInt("LightsArmour");
  593.             ServerVehicles[i][VehHealth] = SII_ReadInt("Health");
  594.             SII_Close();
  595.  
  596.             VehCreate[i] = CreateVehicle(ServerVehicles[i][VehID], ServerVehicles[i][VehX], ServerVehicles[i][VehY], ServerVehicles[i][VehZ], ServerVehicles[i][VehA], ServerVehicles[i][VehColor1], ServerVehicles[i][VehColor2], -1);
  597.             if(ServerVehicles[i][VehPaintjob] != -1)ChangeVehiclePaintjob(VehCreate[i], ServerVehicles[i][VehPaintjob]);
  598.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehSpoiler]);
  599.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehHood]);
  600.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehRoof]);
  601.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehSideskirt]);
  602.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehLamps]);
  603.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehNitro]);
  604.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehExhaust]);
  605.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehWheels]);
  606.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehStereo]);
  607.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehHydraulics]);
  608.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehFB]);
  609.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehRB]);
  610.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehVR]);
  611.             AddVehicleComponent(VehCreate[i], ServerVehicles[i][VehVL]);
  612.            
  613.             ServerVehicles[i][VehLocked] = true;
  614.             SetVehicleHealth(VehCreate[i], ServerVehicles[i][VehHealth]);
  615.  
  616.             SetVehicleNumberPlate(VehCreate[i], ServerVehicles[i][VehOwner]);
  617.             SetVehicleParamsForPlayer(VehCreate[i], i, 0, 0);
  618.             SetVehicleParamsEx(VehCreate[i], 0, 0, 0, 0, 0, 0, 0);
  619.             ServerVehicles[i][VehStatus] = 0;
  620.  
  621.             //SetVehicleToRespawn(i);
  622.             total++;
  623.             printf("%s", ServerVehicles[i][VehOwner]);
  624.         }
  625.     }
  626.     printf("* Veículos: %d", total);
  627. }
  628.  
  629. public OnPlayerUpdate(playerid)
  630. {
  631.     // Se eu estiver em uma corrida...
  632.     if(PlayerInfo[playerid][pRaceID] > -1)
  633.     {
  634.         foreach(Player, i)
  635.         {
  636.             // Jogadores que estiverem na mesma corrida que eu...
  637.             if(PlayerInfo[i][pRaceID] == PlayerInfo[playerid][pRaceID])
  638.             {
  639.                 SetPlayerMarkerForPlayer(playerid, i, 0xCAFF70FF);
  640.             }
  641.             // Jogadores que estiverem em corrida, mas não a mesma que eu...
  642.             if(PlayerInfo[i][pRaceID] != -1 && PlayerInfo[i][pRaceID] != PlayerInfo[playerid][pRaceID])
  643.             {
  644.                 new Float:ppos[3];
  645.                 GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
  646.                 // Se tiver próximo...
  647.                 if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2]))
  648.                     SetPlayerMarkerForPlayer(playerid, i, 0x6E8B3FF);
  649.             }
  650.             // Jogadores que não estiverem em corridas...
  651.             if(PlayerInfo[i][pRaceID] == -1)
  652.             {
  653.                 new Float:ppos[3];
  654.                 GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
  655.                 // Se tiver próximo...
  656.                 if(IsPlayerInRangeOfPoint(i, 50.0, ppos[0], ppos[1], ppos[2]))
  657.                     SetPlayerMarkerForPlayer(playerid, i, 0x666666FF);
  658.                 else
  659.                     SetPlayerMarkerForPlayer(playerid, i, GetPlayerColor(i) & 0xFFFFFF00);
  660.             }
  661.         }
  662.     }
  663.     else if(PlayerInfo[playerid][pRaceID] == -1)
  664.     {
  665.         foreach(Player, i)
  666.         {
  667.             if(PlayerInfo[i][pRaceID] > -1)
  668.                 SetPlayerMarkerForPlayer(playerid, i, 0x6E8B3FF);
  669.             else
  670.                 SetPlayerMarkerForPlayer(playerid, i, 0x666666FF);
  671.         }
  672.     }
  673.        
  674.     return true;
  675. }
  676.                
  677. forward OnServerUpdate();
  678. public OnServerUpdate()
  679. {
  680.     new year, month, day, hour, minute, second, str[50];
  681.     getdate(year, month, day);
  682.     gettime(hour, minute, second);
  683.    
  684.     format(str, sizeof str, "%02d/%02d/%d  %02d:%02d", day, month, year, hour, minute);
  685.     TextDrawSetString(txtDate, str);
  686. }
  687.    
  688.  
  689. forward OnVehicleUpdate();
  690. public OnVehicleUpdate()
  691. {
  692.     print("<log> veículos salvos!");
  693.     for(new i = 1; i < 500; i++)
  694.     {
  695.         if(VehCreate[i] != -1)
  696.         {
  697.             if(ServerVehicles[i][VehStatus] != 1)
  698.             {
  699.                 new file[100], panels,doors,lights,tires, vehicleId = VehCreate[i];
  700.                 GetVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires);
  701.                 GetVehiclePos(VehCreate[i], ServerVehicles[i][VehX], ServerVehicles[i][VehY], ServerVehicles[i][VehZ]);
  702.                 GetVehicleZAngle(VehCreate[i], ServerVehicles[i][VehA]);
  703.                 format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  704.  
  705.                 ServerVehicles[vehicleId][VehSpoiler] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_SPOILER);
  706.                 ServerVehicles[vehicleId][VehHood] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_HOOD);
  707.                 ServerVehicles[vehicleId][VehRoof] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_ROOF);
  708.                 ServerVehicles[vehicleId][VehSideskirt] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_SIDESKIRT);
  709.                 ServerVehicles[vehicleId][VehLamps] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_LAMPS);
  710.                 ServerVehicles[vehicleId][VehNitro] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_NITRO);
  711.                 ServerVehicles[vehicleId][VehExhaust] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_EXHAUST);
  712.                 ServerVehicles[vehicleId][VehWheels] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_WHEELS);
  713.                 ServerVehicles[vehicleId][VehStereo] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_STEREO);
  714.                 ServerVehicles[vehicleId][VehHydraulics] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_HYDRAULICS);
  715.                 ServerVehicles[vehicleId][VehFB] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_FRONT_BUMPER);
  716.                 ServerVehicles[vehicleId][VehRB] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_REAR_BUMPER);
  717.                 ServerVehicles[vehicleId][VehVR] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_VENT_RIGHT);
  718.                 ServerVehicles[vehicleId][VehVL] = GetVehicleComponentInSlot(vehicleId, CARMODTYPE_VENT_LEFT);
  719.  
  720.                 SII_Open(file);
  721.                 SII_WriteInt("Spoiler", ServerVehicles[vehicleId][VehSpoiler]);
  722.                 SII_WriteInt("Hood", ServerVehicles[vehicleId][VehHood]);
  723.                 SII_WriteInt("Roof", ServerVehicles[vehicleId][VehRoof]);
  724.                 SII_WriteInt("Sideskirt", ServerVehicles[vehicleId][VehSideskirt]);
  725.                 SII_WriteInt("Lamps", ServerVehicles[vehicleId][VehLamps]);
  726.                 SII_WriteInt("Nitro", ServerVehicles[vehicleId][VehNitro]);
  727.                 SII_WriteInt("Exhaust", ServerVehicles[vehicleId][VehExhaust]);
  728.                 SII_WriteInt("Wheels", ServerVehicles[vehicleId][VehWheels]);
  729.                 SII_WriteInt("Stereo", ServerVehicles[vehicleId][VehStereo]);
  730.                 SII_WriteInt("Hydraulics", ServerVehicles[vehicleId][VehHydraulics]);
  731.                 SII_WriteInt("FB", ServerVehicles[vehicleId][VehFB]);
  732.                 SII_WriteInt("RB", ServerVehicles[vehicleId][VehRB]);
  733.                 SII_WriteInt("VR", ServerVehicles[vehicleId][VehVR]);
  734.                 SII_WriteInt("VL", ServerVehicles[vehicleId][VehVL]);
  735.                 SII_WriteInt("Panel", panels);
  736.                 SII_WriteInt("Doors", doors);
  737.                 SII_WriteInt("Lights", lights);
  738.                 SII_WriteInt("Tires", tires);
  739.                 SII_WriteFloat("PosX", ServerVehicles[i][VehX]);
  740.                 SII_WriteFloat("PosY", ServerVehicles[i][VehY]);
  741.                 SII_WriteFloat("PosZ", ServerVehicles[i][VehZ]);
  742.                 SII_WriteFloat("PosA", ServerVehicles[i][VehA]);
  743.                 SII_WriteInt("Color1", ServerVehicles[i][VehColor1]);
  744.                 SII_WriteInt("Color2", ServerVehicles[i][VehColor2]);
  745.                 SII_WriteInt("Paintjob", ServerVehicles[i][VehPaintjob]);
  746.                 SII_WriteString("Plate", ServerVehicles[i][VehPlate]);
  747.                 SII_WriteInt("Health", ServerVehicles[i][VehHealth]);
  748.                 SII_WriteInt("DoorsArmour", ServerVehicles[i][VehDoorsArmour]);
  749.                 SII_WriteInt("LightsArmour", ServerVehicles[i][VehLightsArmour]);
  750.                 SII_WriteInt("PanelsArmour", ServerVehicles[i][VehPanelsArmour]);
  751.                 SII_WriteInt("TiresArmour", ServerVehicles[i][VehPanelsArmour]);
  752.                 SII_Save();
  753.                 SII_Close();
  754.             }
  755.         }
  756.     }
  757. }
  758.  
  759. forward CreateTextdraws();
  760. public CreateTextdraws()
  761. {
  762.     txtModeName = TextDrawCreate(582.000000, 425.000000, "SA Tuning");
  763.     TextDrawAlignment(txtModeName, 2);
  764.     TextDrawBackgroundColor(txtModeName, 255);
  765.     TextDrawFont(txtModeName, 0);
  766.     TextDrawLetterSize(txtModeName, 0.230000, 1.100000);
  767.     TextDrawColor(txtModeName, 255);
  768.     TextDrawSetOutline(txtModeName, 0);
  769.     TextDrawSetProportional(txtModeName, 1);
  770.     TextDrawSetShadow(txtModeName, 40);
  771.     TextDrawSetSelectable(txtModeName, 0);
  772.     //
  773.     txtDate = TextDrawCreate(582.000000, 436.000000, "18/09/2013 - 14:30");
  774.     TextDrawAlignment(txtDate, 2);
  775.     TextDrawBackgroundColor(txtDate, 255);
  776.     TextDrawFont(txtDate, 1);
  777.     TextDrawLetterSize(txtDate, 0.230000, 1.100000);
  778.     TextDrawColor(txtDate, -1);
  779.     TextDrawSetOutline(txtDate, 0);
  780.     TextDrawSetProportional(txtDate, 1);
  781.     TextDrawSetShadow(txtDate, 40);
  782.     TextDrawSetSelectable(txtDate, 0);
  783.     //
  784.     txtVehDistrict = TextDrawCreate(581.000000, 404.000000, "Turismo");
  785.     TextDrawAlignment(txtVehDistrict, 2);
  786.     TextDrawBackgroundColor(txtVehDistrict, 255);
  787.     TextDrawFont(txtVehDistrict, 1);
  788.     TextDrawLetterSize(txtVehDistrict, 0.219999, 1.200000);
  789.     TextDrawColor(txtVehDistrict, -1);
  790.     TextDrawSetOutline(txtVehDistrict, 0);
  791.     TextDrawSetProportional(txtVehDistrict, 1);
  792.     TextDrawSetShadow(txtVehDistrict, 100);
  793.     TextDrawSetSelectable(txtVehDistrict, 0);
  794.  
  795.     BoasVindas = TextDrawCreate(320.000000, 123.000000, "San Andreas Street Racing");
  796.     TextDrawAlignment(BoasVindas, 2);
  797.     TextDrawBackgroundColor(BoasVindas, 255);
  798.     TextDrawFont(BoasVindas, 0);
  799.     TextDrawLetterSize(BoasVindas, 0.749998, 2.499999);
  800.     TextDrawColor(BoasVindas, 128);
  801.     TextDrawSetOutline(BoasVindas, 0);
  802.     TextDrawSetProportional(BoasVindas, 1);
  803.     TextDrawSetShadow(BoasVindas, 2);
  804.     TextDrawSetSelectable(BoasVindas, 0);
  805.  
  806.     BoasVindas2 = TextDrawCreate(325.000000, 146.000000, "TENHA UM BOM JOGO!");
  807.     TextDrawAlignment(BoasVindas2, 2);
  808.     TextDrawBackgroundColor(BoasVindas2, -65281);
  809.     TextDrawFont(BoasVindas2, 0);
  810.     TextDrawLetterSize(BoasVindas2, 0.360000, 1.299998);
  811.     TextDrawColor(BoasVindas2, 255);
  812.     TextDrawSetOutline(BoasVindas2, 0);
  813.     TextDrawSetProportional(BoasVindas2, 1);
  814.     TextDrawSetShadow(BoasVindas2, 0);
  815.     TextDrawSetSelectable(BoasVindas2, 0);
  816.  
  817.     StartRaceTxt = TextDrawCreate(320.000000, 397.000000, " ");
  818.     TextDrawAlignment(StartRaceTxt, 2);
  819.     TextDrawBackgroundColor(StartRaceTxt, 255);
  820.     TextDrawFont(StartRaceTxt, 2);
  821.     TextDrawLetterSize(StartRaceTxt, 0.199998, 1.399998);
  822.     TextDrawColor(StartRaceTxt, -16776961);
  823.     TextDrawSetOutline(StartRaceTxt, 1);
  824.     TextDrawSetProportional(StartRaceTxt, 1);
  825.     TextDrawSetSelectable(StartRaceTxt, 0);
  826.    
  827.     RaceEndInfo = TextDrawCreate(12.000000, 431.000000, "INFO");
  828.     TextDrawBackgroundColor(RaceEndInfo, 255);
  829.     TextDrawFont(RaceEndInfo, 1);
  830.     TextDrawLetterSize(RaceEndInfo, 0.330000, 1.600000);
  831.     TextDrawColor(RaceEndInfo, -65281);
  832.     TextDrawSetOutline(RaceEndInfo, 0);
  833.     TextDrawSetProportional(RaceEndInfo, 1);
  834.     TextDrawSetShadow(RaceEndInfo, 50);
  835.     TextDrawSetSelectable(RaceEndInfo, 0);
  836.  
  837.     RaceEndInfo2 = TextDrawCreate(48.000000, 432.000000, " ");
  838.     TextDrawBackgroundColor(RaceEndInfo2, 255);
  839.     TextDrawFont(RaceEndInfo2, 2);
  840.     TextDrawLetterSize(RaceEndInfo2, 0.210000, 1.399999);
  841.     TextDrawColor(RaceEndInfo2, -1);
  842.     TextDrawSetOutline(RaceEndInfo2, 1);
  843.     TextDrawSetProportional(RaceEndInfo2, 1);
  844.     TextDrawSetSelectable(RaceEndInfo2, 0);
  845.  
  846.  
  847.     TextVehBox = TextDrawCreate(250.000000, -1.000000, "New Textdraw");
  848.     TextDrawAlignment(TextVehBox, 2);
  849.     TextDrawBackgroundColor(TextVehBox, 255);
  850.     TextDrawFont(TextVehBox, 1);
  851.     TextDrawLetterSize(TextVehBox, 0.500000, 50.000000);
  852.     TextDrawColor(TextVehBox, -1);
  853.     TextDrawSetOutline(TextVehBox, 0);
  854.     TextDrawSetProportional(TextVehBox, 1);
  855.     TextDrawSetShadow(TextVehBox, 1);
  856.     TextDrawUseBox(TextVehBox, 1);
  857.     TextDrawBoxColor(TextVehBox, 0x000000FF);
  858.     TextDrawTextSize(TextVehBox, 0.000000, 827.000000);
  859.     TextDrawSetSelectable(TextVehBox, 0);
  860.  
  861.     TextVeh1 = TextDrawCreate(85.000000, 175.000000, "CLOVER");
  862.     TextDrawBackgroundColor(TextVeh1, -256);
  863.     TextDrawFont(TextVeh1, 5);
  864.     TextDrawLetterSize(TextVeh1, 0.500000, 1.000000);
  865.     TextDrawColor(TextVeh1, -1);
  866.     TextDrawSetOutline(TextVeh1, 0);
  867.     TextDrawSetProportional(TextVeh1, 1);
  868.     TextDrawSetShadow(TextVeh1, 1);
  869.     TextDrawUseBox(TextVeh1, 1);
  870.     TextDrawBoxColor(TextVeh1, -256);
  871.     TextDrawTextSize(TextVeh1, 150.000000, 125.000000);
  872.     TextDrawSetPreviewModel(TextVeh1, 542);
  873.     TextDrawSetPreviewRot(TextVeh1, -16.000000, 0.000000, -55.000000, 0.800000);
  874.     TextDrawSetSelectable(TextVeh1, 1);
  875.  
  876.     TextVeh2 = TextDrawCreate(249.000000, 175.000000, "496");
  877.     TextDrawBackgroundColor(TextVeh2, -256);
  878.     TextDrawFont(TextVeh2, 5);
  879.     TextDrawLetterSize(TextVeh2, 0.500000, 1.000000);
  880.     TextDrawColor(TextVeh2, -1);
  881.     TextDrawSetOutline(TextVeh2, 0);
  882.     TextDrawSetProportional(TextVeh2, 1);
  883.     TextDrawSetShadow(TextVeh2, 1);
  884.     TextDrawUseBox(TextVeh2, 1);
  885.     TextDrawBoxColor(TextVeh2, 65535);
  886.     TextDrawTextSize(TextVeh2, 150.000000, 125.000000);
  887.     TextDrawSetPreviewModel(TextVeh2, 496);
  888.     TextDrawSetPreviewRot(TextVeh2, -16.000000, 0.000000, -55.000000, 0.899999);
  889.     TextDrawSetSelectable(TextVeh2, 1);
  890.  
  891.     TextVeh3 = TextDrawCreate(416.000000, 175.000000, "SUNSIRE");
  892.     TextDrawBackgroundColor(TextVeh3, -256);
  893.     TextDrawFont(TextVeh3, 5);
  894.     TextDrawLetterSize(TextVeh3, 0.500000, 1.000000);
  895.     TextDrawColor(TextVeh3, -1);
  896.     TextDrawSetOutline(TextVeh3, 0);
  897.     TextDrawSetProportional(TextVeh3, 1);
  898.     TextDrawSetShadow(TextVeh3, 1);
  899.     TextDrawUseBox(TextVeh3, 1);
  900.     TextDrawBoxColor(TextVeh3, 65535);
  901.     TextDrawTextSize(TextVeh3, 150.000000, 125.000000);
  902.     TextDrawSetPreviewModel(TextVeh3, 550);
  903.     TextDrawSetPreviewRot(TextVeh3, -16.000000, 0.000000, -55.000000, 0.850000);
  904.     TextDrawSetSelectable(TextVeh3, 1);
  905.  
  906.     TextVehInfo = TextDrawCreate(330.000000, 174.000000, "Escolha seu veiculo para iniciar");
  907.     TextDrawAlignment(TextVehInfo, 2);
  908.     TextDrawBackgroundColor(TextVehInfo, 255);
  909.     TextDrawFont(TextVehInfo, 2);
  910.     TextDrawLetterSize(TextVehInfo, 0.419999, 1.600000);
  911.     TextDrawColor(TextVehInfo, -1);
  912.     TextDrawSetOutline(TextVehInfo, 1);
  913.     TextDrawSetProportional(TextVehInfo, 1);
  914.     TextDrawSetSelectable(TextVehInfo, 0);
  915.  
  916.     TextVeh1Name = TextDrawCreate(158.000000, 236.000000, "Clover");
  917.     TextDrawAlignment(TextVeh1Name, 2);
  918.     TextDrawBackgroundColor(TextVeh1Name, 255);
  919.     TextDrawFont(TextVeh1Name, 2);
  920.     TextDrawLetterSize(TextVeh1Name, 0.259999, 1.399999);
  921.     TextDrawColor(TextVeh1Name, -1);
  922.     TextDrawSetOutline(TextVeh1Name, 0);
  923.     TextDrawSetProportional(TextVeh1Name, 1);
  924.     TextDrawSetShadow(TextVeh1Name, 1);
  925.     TextDrawSetSelectable(TextVeh1Name, 0);
  926.  
  927.     TextVeh2Name = TextDrawCreate(341.000000, 236.000000, "BLISTA");
  928.     TextDrawAlignment(TextVeh2Name, 2);
  929.     TextDrawBackgroundColor(TextVeh2Name, 255);
  930.     TextDrawFont(TextVeh2Name, 2);
  931.     TextDrawLetterSize(TextVeh2Name, 0.259999, 1.399999);
  932.     TextDrawColor(TextVeh2Name, -1);
  933.     TextDrawSetOutline(TextVeh2Name, 0);
  934.     TextDrawSetProportional(TextVeh2Name, 1);
  935.     TextDrawSetShadow(TextVeh2Name, 1);
  936.     TextDrawSetSelectable(TextVeh2Name, 0);
  937.  
  938.     TextVeh3Name = TextDrawCreate(501.000000, 236.000000, "Sunrise");
  939.     TextDrawAlignment(TextVeh3Name, 2);
  940.     TextDrawBackgroundColor(TextVeh3Name, 255);
  941.     TextDrawFont(TextVeh3Name, 2);
  942.     TextDrawLetterSize(TextVeh3Name, 0.259999, 1.399999);
  943.     TextDrawColor(TextVeh3Name, -1);
  944.     TextDrawSetOutline(TextVeh3Name, 0);
  945.     TextDrawSetProportional(TextVeh3Name, 1);
  946.     TextDrawSetShadow(TextVeh3Name, 1);
  947.     TextDrawSetSelectable(TextVeh3Name, 0);
  948.  
  949. }
  950.  
  951. public OnPlayerConnect(playerid)
  952. {
  953.     SendDeathMessage(INVALID_PLAYER_ID, playerid, 200);
  954.    
  955.     SetPlayerColor(playerid, 0xFFFFFFFF);
  956.    
  957.     PlayerInfo[playerid][pGPS] = -1;
  958.     PlayerInfo[playerid][Registered] = false;
  959.     PlayerInfo[playerid][Logged] = false;
  960.  
  961.     format(PlayerInfo[playerid][pFile], 100, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid));
  962.     if(SII_Exist(PlayerInfo[playerid][pFile]))
  963.     {
  964.         PlayerInfo[playerid][Registered] = true;
  965.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair");
  966.     }
  967.     else
  968.     {
  969.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair");
  970.     }
  971.    
  972.     PlayerInfo[playerid][pRaceID] = -1;
  973.     ResetPlayerMoney(playerid);
  974.  
  975.     TextDrawShowForPlayer(playerid, BoasVindas);
  976.     TextDrawShowForPlayer(playerid, BoasVindas2);
  977.     return true;
  978. }
  979.  
  980. public OnPlayerDisconnect(playerid, reason)
  981. {
  982.     SendDeathMessage(INVALID_PLAYER_ID, playerid, 201);
  983.     new posStr[100];
  984.     GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
  985.     GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
  986.     format(posStr, sizeof posStr, "%f %f %f %f", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]);
  987.  
  988.  
  989.     PlayerInfo[playerid][pInterior] = GetPlayerInterior(playerid);
  990.    
  991.     new line[25], line2[25];
  992.     new weapon[13], ammo[13];
  993.  
  994.     SII_Open(PlayerInfo[playerid][pFile]);
  995.     SII_WriteString("Position", posStr);
  996.     SII_WriteInt("Money", PlayerInfo[playerid][playermoney]);
  997.     SII_WriteInt("Skin", PlayerInfo[playerid][pSkin]);
  998.     SII_WriteInt("Interior", PlayerInfo[playerid][pInterior]);
  999.     for(new i = 0; i < 13; i++)
  1000.     {
  1001.         GetPlayerWeaponData(playerid, i, weapon[i], ammo[i]);
  1002.         format(line, sizeof line, "WeaponSlot%d", i);
  1003.         SII_WriteInt(line, weapon[i]);
  1004.         format(line2, sizeof line2, "WeaponSlotAmmo%d", i);
  1005.         SII_WriteInt(line2, ammo[i]);
  1006.     }
  1007.     SII_Save();
  1008.     SII_Close();
  1009.     return true;
  1010. }
  1011.  
  1012. public OnPlayerRequestClass(playerid, classid)
  1013. {
  1014.     if(PlayerInfo[playerid][Logged] == false && PlayerInfo[playerid][Registered] == true) ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA CADASTRADA", "{FFFFFF}Informe a senha dessa conta:", "Logar", "Sair");
  1015.     //else if(PlayerInfo[playerid][Registered] == 0) ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "{FFD700}CONTA NÃO CADASTRADA", "{FFFFFF}Digite uma nova senha para está conta:", "Cadastrar", "Sair");
  1016.     SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  1017.     SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
  1018.     SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
  1019.     SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
  1020.     SetPlayerCameraPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY]+3.5, PlayerInfo[playerid][pZ]+10.0);
  1021.     SetPlayerCameraLookAt(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
  1022.     TogglePlayerControllable(playerid, 0);
  1023.     return true;
  1024. }
  1025.  
  1026. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1027. {
  1028.     switch(dialogid)
  1029.     {
  1030.         case DIALOG_TEXT_NO_EFFECT:
  1031.         {
  1032.             if(response)
  1033.             {
  1034.                 if(PlayerInfo[playerid][pTutorial] == 1) // Carros
  1035.                 {
  1036.                     // Próximo dialogo: carros
  1037.                     new sz_Dialog1[] = RGB_COLOR_GOLD"VEÍCULOS\n\n"RGB_COLOR_WHITE"Cada jogador ao se registrar, pode escolher 1 veículo dentre 3 pré-definidos: Clover, Blista ou Sunrise.\n\
  1038.                                        Esse será seu veículo de início. Com ele você poderá entrar em corridas para ganhar dinheiro, tunar em uma das garagens de tuning, e participar de eventos.\n";
  1039.  
  1040.                     new sz_Dialog2[] = "É importante que você cuide do seu veículo; Não o deixe destrancado, e nem deixe estacionado pelas ruas.\n\
  1041.                                         Seu veículo fica salvo no local onde você o deixou, e seus tunings também ficam salvos.";
  1042.                     new sz_Dialog[1000];
  1043.                     strcat(sz_Dialog, sz_Dialog1);
  1044.                     strcat(sz_Dialog, sz_Dialog2);
  1045.                     PlayerInfo[playerid][pTutorial] = 2;
  1046.                     ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
  1047.                 }
  1048.                 else if(PlayerInfo[playerid][pTutorial] == 2) // Armas
  1049.                 {
  1050.                     new sz_Dialog[] = RGB_COLOR_GOLD"ARMAS\n\n\
  1051.                                       "RGB_COLOR_WHITE"Você pode comprar as suas armas normalmente nas Ammunations, e elas ficarão salvas caso você saia\
  1052.                                       do servidor.\n Armas especiais como: sniper, granada, etc.. só poderão ser compradas pelo mercado negro.";
  1053.                     PlayerInfo[playerid][pTutorial] = 0;
  1054.                     ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
  1055.                 }
  1056.             }
  1057.         }
  1058.         case DIALOG_REGISTER:
  1059.         {
  1060.             if(!response) Kick(playerid);
  1061.             else
  1062.             {
  1063.                 new file[100], pass[130];
  1064.                 format(file, sizeof file, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid));
  1065.                 WP_Hash(pass, sizeof(pass), inputtext);
  1066.                 SII_Open(file);
  1067.                 SII_WriteString("Password", pass);
  1068.                 SII_WriteInt("Registered", 1);
  1069.                 SII_Save();
  1070.                 SII_Close();
  1071.                 PlayerInfo[playerid][Logged] = true;
  1072.                 TextDrawHideForPlayer(playerid, BoasVindas);
  1073.                 TextDrawHideForPlayer(playerid, BoasVindas2);
  1074.                 SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Sua conta foi cadastrada com sucesso!");
  1075.                 PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
  1076.                 PlayerInfo[playerid][pX] = 1722.7843;
  1077.                 PlayerInfo[playerid][pY] = -1713.9490;
  1078.                 PlayerInfo[playerid][pZ] = 13.5114;
  1079.                 PlayerInfo[playerid][pA] = 181.5285;
  1080.                 PlayerInfo[playerid][pInterior] = 0;
  1081.                 PlayerInfo[playerid][pSkin] = 0;
  1082.                 for(new i = 0; i < 13; i++)
  1083.                 {
  1084.                     PlayerInfo[playerid][pWeapon][i] = 0;
  1085.                     PlayerInfo[playerid][pAmmo][i] = 0;
  1086.                 }
  1087.                 new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\
  1088.                                   "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\
  1089.                                   2. Proibido se aproveitar de qualquer bug do gamemode;\n\
  1090.                                   3. Proibido ofensas a outros jogadores;\n\
  1091.                                   4. Ao sair do servidor, deixa seu veículo estacionado em garagens, car parking, etc;\n\
  1092.                                   5. ...";
  1093.                 PlayerInfo[playerid][pTutorial] = 1;
  1094.                 ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "P. PÁGINA", "");
  1095.             }
  1096.         }
  1097.         case DIALOG_LOGIN:
  1098.         {
  1099.             if(!response) Kick(playerid);
  1100.             else
  1101.             {
  1102.                 new file[100], pass[130], enpass[130], pos[100];
  1103.  
  1104.                 format(file, sizeof file, "RS-RACE/Accounts/%s.ini", GetPlayerName(playerid));
  1105.                 SII_Open(file);
  1106.                 WP_Hash(enpass, sizeof(enpass), inputtext);
  1107.                 SII_ReadString(pass, "Password");
  1108.                 if(strcmp(enpass, pass, true) == 0)
  1109.                 {
  1110.                     TextDrawHideForPlayer(playerid, BoasVindas);
  1111.                     TextDrawHideForPlayer(playerid, BoasVindas2);
  1112.                     SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Sua conta foi autenticada com sucesso!");
  1113.                     PlayerInfo[playerid][Registered] = true;
  1114.                     PlayerInfo[playerid][Logged] = true;
  1115.                     SII_ReadString(pos, "Position");
  1116.                     PlayerInfo[playerid][pSkin] = SII_ReadInt("Skin");
  1117.                     PlayerInfo[playerid][playermoney] = SII_ReadInt("Money");
  1118.                     PlayerInfo[playerid][pInterior] = SII_ReadInt("Interior");
  1119.                     new line[25], line2[25];
  1120.                     for(new i = 0; i < 13; i++)
  1121.                     {
  1122.                         format(line, sizeof line, "WeaponSlot%d", i);
  1123.                         PlayerInfo[playerid][pWeapon][i] = SII_ReadInt(line);
  1124.                         printf("SLOT: %d ARMA: %d", i, PlayerInfo[playerid][pWeapon][i]);
  1125.                         format(line2, sizeof line2, "WeaponSlotAmmo%d", i);
  1126.                         PlayerInfo[playerid][pAmmo][i] = SII_ReadInt(line2);
  1127.                         printf("SLOT: %d AMMO: %d", i, PlayerInfo[playerid][pAmmo][i]);
  1128.                     }
  1129.                     sscanf(pos, "ffff", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA]);
  1130.                     //SetSpawnInfo(playerid, NO_TEAM, PlayerInfo[playerid][pSkin], PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ], PlayerInfo[playerid][pA], 24, 100, 0, 0, 0, 0);
  1131.                 }
  1132.                 else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, RGB_COLOR_GOLD"CONTA CADASTRADA", RGB_COLOR_WHITE"Digite a senha dessa conta:", "Logar", "Sair");
  1133.                 SII_Close();
  1134.             }
  1135.         }
  1136.         case DIALOG_ENGINE:
  1137.         {
  1138.             if(response)
  1139.             {
  1140.                 new i = GetPlayerVehicleID(playerid);
  1141.                 SetVehicleParamsEx(i, ServerVehicles[i][VehEngine] = 1, ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors] = 0, ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]);
  1142.                 SendClientMessage(playerid, COLOR_GOLD, "* Seu veículo está ligado!");
  1143.             }
  1144.         }
  1145.         case DIALOG_WORKSHOP:
  1146.         {
  1147.             if(response)
  1148.             {
  1149.                 //Aumentar Health\nBlindar Portas\nBlindar Paineis\nBlindar Rodas\nBlindar Luzes\nPintura
  1150.                 if(listitem == 0) // Aumentar Health
  1151.                 {
  1152.                     ShowPlayerDialog(playerid, DIALOG_WORKSHOPH, DIALOG_STYLE_LIST, "L.S. MOD SHOP", "+500 Health (R$1500)\n+1000 Health (R$2500)\n+2000 Health (R$5000)", "Comprar", "Voltar");
  1153.                 }
  1154.                 else if(listitem == 1) // Blindar Portas
  1155.                 {
  1156.                     if(GetPlayerMoney(playerid) > 3000)
  1157.                     {
  1158.                         ServerVehicles[GetPlayerVehicleID(playerid)][VehDoorsArmour] = 1;
  1159.                         SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as portas do seu veículo!");
  1160.                         GivePlayerMoney(playerid, -3000);
  1161.                     }
  1162.                     else
  1163.                     {
  1164.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1165.                     }
  1166.                 }
  1167.                 else if(listitem == 2) // Blindar Paineis
  1168.                 {
  1169.                     if(GetPlayerMoney(playerid) > 4000)
  1170.                     {
  1171.                         ServerVehicles[GetPlayerVehicleID(playerid)][VehPanelsArmour] = 1;
  1172.                         SendClientMessage(playerid, COLOR_GOLD, "* Você blindou os painéis do seu veículo!");
  1173.                         GivePlayerMoney(playerid, -4000);
  1174.                     }
  1175.                     else
  1176.                     {
  1177.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1178.                     }
  1179.                 }
  1180.                 else if(listitem == 3) // Blindar Rodas
  1181.                 {
  1182.                     if(GetPlayerMoney(playerid) > 5000)
  1183.                     {
  1184.                         ServerVehicles[GetPlayerVehicleID(playerid)][VehTiresArmour] = 1;
  1185.                         SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as rodas do seu veículo!");
  1186.                         GivePlayerMoney(playerid, -5000);
  1187.                     }
  1188.                     else
  1189.                     {
  1190.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1191.                     }
  1192.                 }
  1193.                 else if(listitem == 4)
  1194.                 {
  1195.                     if(GetPlayerMoney(playerid) > 3000)
  1196.                     {
  1197.                         ServerVehicles[GetPlayerVehicleID(playerid)][VehLightsArmour] = 1;
  1198.                         SendClientMessage(playerid, COLOR_GOLD, "* Você blindou as luzes do seu veículo!");
  1199.                         GivePlayerMoney(playerid, -3000);
  1200.                     }
  1201.                     else
  1202.                     {
  1203.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1204.                     }
  1205.                 }
  1206.                 else if(listitem == 5)
  1207.                 {
  1208.                     if(GetPlayerMoney(playerid) > 2500)
  1209.                     {
  1210.                         ShowPlayerDialog(playerid, DIALOG_WORKSHOP_COLOR, DIALOG_STYLE_INPUT, "L.S. MOD SHOP", "Selecione o ID das cores (128 a 255).\nVocê pode conferir todas as cores no link abaixo:\nhttp://wiki.sa-mp.com/wiki/Vehicle_Color_IDs\nExemplo: 222 1", "Pintar", "Voltar");
  1211.                     }
  1212.                     else
  1213.                     {
  1214.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1215.                     }
  1216.                 }
  1217.                 else if(listitem == 6)
  1218.                 {
  1219.                     if(GetPlayerMoney(playerid) > 100)
  1220.                     {
  1221.                         RepairVehicle(GetPlayerVehicleID(playerid));
  1222.                         SetVehicleHealth(GetPlayerVehicleID(playerid), ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth]);
  1223.                         GivePlayerMoney(playerid, -100);
  1224.                     }
  1225.                     else
  1226.                     {
  1227.                         SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1228.                     }
  1229.                 }
  1230.             }
  1231.         }
  1232.         case DIALOG_WORKSHOPH:
  1233.         {
  1234.             if(response)
  1235.             {
  1236.                 // 1500 Health (R$1500)\n2000 Health (R$2500)\n3000 Health (R$5000)
  1237.                 if(listitem == 0)
  1238.                 {
  1239.                     if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 1500)
  1240.                     {
  1241.                         if(GetPlayerMoney(playerid) > 1500)
  1242.                         {
  1243.                             SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (1500 health | 1000 = padrão)");
  1244.                             RepairVehicle(GetPlayerVehicleID(playerid));
  1245.                             ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 1500;
  1246.                             SetVehicleHealth(GetPlayerVehicleID(playerid), 1500);
  1247.                             GivePlayerMoney(playerid, -1500);
  1248.                         }
  1249.                         else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1250.                     } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 1500!");
  1251.                 }
  1252.                 else if(listitem == 1)
  1253.                 {
  1254.                     if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 2000)
  1255.                     {
  1256.                         if(GetPlayerMoney(playerid) > 2500)
  1257.                         {
  1258.                             SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (2000 health | 1000 = padrão)");
  1259.                             RepairVehicle(GetPlayerVehicleID(playerid));
  1260.                             ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 2000;
  1261.                             SetVehicleHealth(GetPlayerVehicleID(playerid), 2000);
  1262.                             GivePlayerMoney(playerid, -2500);
  1263.                         }
  1264.                         else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1265.                     } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 2000!");
  1266.                 }
  1267.                 else if(listitem == 2)
  1268.                 {
  1269.                     if(ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] < 3000)
  1270.                     {
  1271.                         if(GetPlayerMoney(playerid) > 5000)
  1272.                         {
  1273.                             SendClientMessage(playerid, COLOR_GOLD, "* Você fez um upgrade na resistência do seu veículo (3000 health | 1000 = padrão)");
  1274.                             RepairVehicle(GetPlayerVehicleID(playerid));
  1275.                             ServerVehicles[GetPlayerVehicleID(playerid)][VehHealth] = 3000;
  1276.                             SetVehicleHealth(GetPlayerVehicleID(playerid), 3000);
  1277.                             GivePlayerMoney(playerid, -5000);
  1278.                         }
  1279.                         else SendClientMessage(playerid, COLOR_RED, "* Você não tem dinheiro suficiente!");
  1280.                     } else SendClientMessage(playerid, COLOR_RED, "* A vida desse veículo já é maior que 3000!");
  1281.                 }
  1282.             } else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair");
  1283.         }
  1284.         case DIALOG_WORKSHOP_COLOR:
  1285.         {
  1286.             if(response)
  1287.             {
  1288.                 new cID, cID2;
  1289.                 if(sscanf(inputtext, "dd", cID,cID2)) SendClientMessage(playerid, COLOR_RED, "* Digite os id da cor1 e cor2.");
  1290.                 else
  1291.                 {
  1292.                     GivePlayerMoney(playerid, -2500);
  1293.  
  1294.                     ChangeVehicleColor(GetPlayerVehicleID(playerid), cID, cID2);
  1295.                     ServerVehicles[GetPlayerVehicleID(playerid)][VehColor1] = cID;
  1296.                     ServerVehicles[GetPlayerVehicleID(playerid)][VehColor2] = cID2;
  1297.                 }
  1298.             }
  1299.             else ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, "L.S. MODSHOP", "Aumentar Resistência\t\t\t\t\t\t\t\nBlindar Portas\t\t\t\t\t\t\tR$3000\nBlindar Paineis\t\t\t\t\t\t\tR$3000\nBlindar Rodas\t\t\t\t\t\t\tR$3000\nBlindar Luzes\t\t\t\t\t\t\tR$3000\nPintura\t\t\t\t\t\t\tR$2500\nReparar Veículo\t\t\t\t\t\t\tR$100", "Escolher", "Sair");
  1300.         }
  1301.         case DIALOG_CARS:
  1302.         {
  1303.             if(response)
  1304.             {
  1305.                 new id;
  1306.                 if(sscanf(inputtext, "d", id)) SendClientMessage(playerid, COLOR_RED, "* Digite o ID do seu veículo.");
  1307.                 else
  1308.                 {
  1309.                     if(strcmp(GetPlayerName(playerid), ServerVehicles[id][VehOwner], false) == 0)
  1310.                     {
  1311.                         new Float:vPos[3];
  1312.                         GetVehiclePos(id, vPos[0], vPos[1], vPos[2]);
  1313.                         SetPlayerMapIcon(playerid, 99, vPos[0], vPos[1], vPos[2], 55, 0xFFFFFFFF, 1);
  1314.                         PlayerInfo[playerid][pGPS] = id;
  1315.                     } else SendClientMessage(playerid, COLOR_RED, "* Digite o ID do seu veículo.");
  1316.                 }
  1317.             }
  1318.         }
  1319.     }
  1320.     return true;
  1321. }
  1322.  
  1323. // public OnPlayerRequestSpawn(playerid) - Jogador solicita spawn na seleção de classes
  1324. public OnPlayerRequestSpawn(playerid)
  1325. {
  1326.     if(!PlayerInfo[playerid][Logged] || PlayerInfo[playerid][pTutorial] > 0)
  1327.         return false;
  1328.  
  1329.     else
  1330.     {
  1331.         TextDrawShowForPlayer(playerid, txtDate);
  1332.         TextDrawShowForPlayer(playerid, txtModeName);
  1333.  
  1334.  
  1335.         if(PlayerInfo[playerid][Registered] == false)
  1336.         {
  1337.             SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
  1338.             SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  1339.             SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+3.5);
  1340.             TogglePlayerControllable(playerid, false);
  1341.             SetPlayerHealth(playerid, 9999999999);
  1342.             TextDrawShowForPlayer(playerid, TextVeh1);
  1343.             TextDrawShowForPlayer(playerid, TextVeh2);
  1344.             TextDrawShowForPlayer(playerid, TextVeh3);
  1345.             TextDrawShowForPlayer(playerid, TextVeh1Name);
  1346.             TextDrawShowForPlayer(playerid, TextVeh2Name);
  1347.             TextDrawShowForPlayer(playerid, TextVeh3Name);
  1348.             TextDrawShowForPlayer(playerid, TextVehBox);
  1349.             TextDrawShowForPlayer(playerid, TextVehInfo);
  1350.             SelectTextDraw(playerid, 0xFFFFFF50);
  1351.         }
  1352.         else
  1353.         {
  1354.  
  1355.             SetPlayerInterior(playerid, PlayerInfo[playerid][pInterior]);
  1356.             SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  1357.             TogglePlayerControllable(playerid, 1);
  1358.             SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5);
  1359.         }
  1360.     }
  1361.     return true;
  1362. }
  1363.  
  1364. public OnPlayerClickTextDraw(playerid, Text:clickedid)
  1365. {
  1366.     new Float:ppos[4];
  1367.     GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
  1368.     GetPlayerFacingAngle(playerid, ppos[3]);
  1369.     if(clickedid == TextVeh1)
  1370.     {
  1371.         SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Clover!");
  1372.         TextDrawHideForPlayer(playerid, TextVeh1);
  1373.         TextDrawHideForPlayer(playerid, TextVeh2);
  1374.         TextDrawHideForPlayer(playerid, TextVeh3);
  1375.         TextDrawHideForPlayer(playerid, TextVeh1Name);
  1376.         TextDrawHideForPlayer(playerid, TextVeh2Name);
  1377.         TextDrawHideForPlayer(playerid, TextVeh3Name);
  1378.         TextDrawHideForPlayer(playerid, TextVehBox);
  1379.         TextDrawHideForPlayer(playerid, TextVehInfo);
  1380.         CancelSelectTextDraw(playerid);
  1381.         SetPlayerHealth(playerid, 100);
  1382.         for(new i = 1; i < 500; i++)
  1383.         {
  1384.             if(VehCreate[i] == -1)
  1385.             {
  1386.                 new file[100];
  1387.                 format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  1388.                 if(!SII_Exist(file))
  1389.                 {
  1390.                     SII_Open(file);
  1391.                     SII_WriteString("Owner", GetPlayerName(playerid));
  1392.                     SII_WriteInt("Model", 542);
  1393.                     SII_WriteInt("Spoiler", -1);
  1394.                     SII_WriteInt("Hood", -1);
  1395.                     SII_WriteInt("Roof", -1);
  1396.                     SII_WriteInt("Sideskirt", -1);
  1397.                     SII_WriteInt("Lamps", -1);
  1398.                     SII_WriteInt("Nitro", -1);
  1399.                     SII_WriteInt("Exhaust", -1);
  1400.                     SII_WriteInt("Wheels", -1);
  1401.                     SII_WriteInt("Stereo", -1);
  1402.                     SII_WriteInt("Hydraulics", -1);
  1403.                     SII_WriteInt("FB", -1);
  1404.                     SII_WriteInt("RB", -1);
  1405.                     SII_WriteInt("VR", -1);
  1406.                     SII_WriteInt("VL", -1);
  1407.                     SII_WriteFloat("PosX", ppos[0]);
  1408.                     SII_WriteFloat("PosY", ppos[1]);
  1409.                     SII_WriteFloat("PosZ", ppos[2]);
  1410.                     SII_WriteFloat("PosA", ppos[3]);
  1411.                     SII_WriteInt("Health", 1000);
  1412.                     SII_WriteInt("DoorsArmour", 0);
  1413.                     SII_WriteInt("TiresArmour", 0);
  1414.                     SII_WriteInt("PanelsArmour", 0);
  1415.                     SII_WriteInt("LightsArmour", 0);
  1416.                     SII_Save();
  1417.                     SII_Close();
  1418.                     VehCreate[i] = CreateVehicle(542, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1);
  1419.                     SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid));
  1420.                     PutPlayerInVehicle(playerid, VehCreate[i], 0);
  1421.                     ServerVehicles[VehCreate[i]][VehHealth] = 1000;
  1422.                     //Itter_Add(TotalVehicles, VehCreate[i]);
  1423.                     SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0);
  1424.                     break;
  1425.                 }
  1426.             }
  1427.         }
  1428.     }
  1429.     if(clickedid == TextVeh2)
  1430.     {
  1431.         SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Blista!");
  1432.         TextDrawHideForPlayer(playerid, TextVeh1);
  1433.         TextDrawHideForPlayer(playerid, TextVeh2);
  1434.         TextDrawHideForPlayer(playerid, TextVeh3);
  1435.         TextDrawHideForPlayer(playerid, TextVeh1Name);
  1436.         TextDrawHideForPlayer(playerid, TextVeh2Name);
  1437.         TextDrawHideForPlayer(playerid, TextVeh3Name);
  1438.         TextDrawHideForPlayer(playerid, TextVehBox);
  1439.         TextDrawHideForPlayer(playerid, TextVehInfo);
  1440.         CancelSelectTextDraw(playerid);
  1441.         SetPlayerHealth(playerid, 100);
  1442.         for(new i = 1; i < 500; i++)
  1443.         {
  1444.             if(VehCreate[i] == -1)
  1445.             {
  1446.                 new file[100];
  1447.                 format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  1448.                 if(!SII_Exist(file))
  1449.                 {
  1450.                     SII_Open(file);
  1451.                     SII_WriteString("Owner", GetPlayerName(playerid));
  1452.                     SII_WriteInt("Model", 496);
  1453.                     SII_WriteInt("Spoiler", -1);
  1454.                     SII_WriteInt("Hood", -1);
  1455.                     SII_WriteInt("Roof", -1);
  1456.                     SII_WriteInt("Sideskirt", -1);
  1457.                     SII_WriteInt("Lamps", -1);
  1458.                     SII_WriteInt("Nitro", -1);
  1459.                     SII_WriteInt("Exhaust", -1);
  1460.                     SII_WriteInt("Wheels", -1);
  1461.                     SII_WriteInt("Stereo", -1);
  1462.                     SII_WriteInt("Hydraulics", -1);
  1463.                     SII_WriteInt("FB", -1);
  1464.                     SII_WriteInt("RB", -1);
  1465.                     SII_WriteInt("VR", -1);
  1466.                     SII_WriteInt("VL", -1);
  1467.                     SII_WriteFloat("PosX", ppos[0]);
  1468.                     SII_WriteFloat("PosY", ppos[1]);
  1469.                     SII_WriteFloat("PosZ", ppos[2]);
  1470.                     SII_WriteFloat("PosA", ppos[3]);
  1471.                     SII_WriteInt("Health", 1000);
  1472.                     SII_WriteInt("DoorsArmour", 0);
  1473.                     SII_WriteInt("TiresArmour", 0);
  1474.                     SII_WriteInt("PanelsArmour", 0);
  1475.                     SII_WriteInt("LightsArmour", 0);
  1476.                     SII_Save();
  1477.                     SII_Close();
  1478.                     VehCreate[i] = CreateVehicle(496, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1);
  1479.                     SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid));
  1480.                     PutPlayerInVehicle(playerid, VehCreate[i], 0);
  1481.                     ServerVehicles[VehCreate[i]][VehHealth] = 1000;
  1482.                     //Itter_Add(TotalVehicles, VehCreate[i]);
  1483.                     SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0);
  1484.                     break;
  1485.                 }
  1486.             }
  1487.         }
  1488.     }
  1489.     if(clickedid == TextVeh3)
  1490.     {
  1491.         SendClientMessage(playerid, COLOR_WHITE, "[SERVER] Você selecionou o veículo Sunrise!");
  1492.         TextDrawHideForPlayer(playerid, TextVeh1);
  1493.         TextDrawHideForPlayer(playerid, TextVeh2);
  1494.         TextDrawHideForPlayer(playerid, TextVeh3);
  1495.         TextDrawHideForPlayer(playerid, TextVeh1Name);
  1496.         TextDrawHideForPlayer(playerid, TextVeh2Name);
  1497.         TextDrawHideForPlayer(playerid, TextVeh3Name);
  1498.         TextDrawHideForPlayer(playerid, TextVehBox);
  1499.         TextDrawHideForPlayer(playerid, TextVehInfo);
  1500.         CancelSelectTextDraw(playerid);
  1501.         SetPlayerHealth(playerid, 100);
  1502.         for(new i = 1; i < 500; i++)
  1503.         {
  1504.             if(VehCreate[i] == -1)
  1505.             {
  1506.                 new file[100];
  1507.                 format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  1508.                 if(!SII_Exist(file))
  1509.                 {
  1510.                     SII_Open(file);
  1511.                     SII_WriteString("Owner", GetPlayerName(playerid));
  1512.                     SII_WriteInt("Model", 550);
  1513.                     SII_WriteInt("Spoiler", -1);
  1514.                     SII_WriteInt("Hood", -1);
  1515.                     SII_WriteInt("Roof", -1);
  1516.                     SII_WriteInt("Sideskirt", -1);
  1517.                     SII_WriteInt("Lamps", -1);
  1518.                     SII_WriteInt("Nitro", -1);
  1519.                     SII_WriteInt("Exhaust", -1);
  1520.                     SII_WriteInt("Wheels", -1);
  1521.                     SII_WriteInt("Stereo", -1);
  1522.                     SII_WriteInt("Hydraulics", -1);
  1523.                     SII_WriteInt("FB", -1);
  1524.                     SII_WriteInt("RB", -1);
  1525.                     SII_WriteInt("VR", -1);
  1526.                     SII_WriteInt("VL", -1);
  1527.                     SII_WriteFloat("PosX", ppos[0]);
  1528.                     SII_WriteFloat("PosY", ppos[1]);
  1529.                     SII_WriteFloat("PosZ", ppos[2]);
  1530.                     SII_WriteFloat("PosA", ppos[3]);
  1531.                     SII_WriteInt("Health", 1000);
  1532.                     SII_WriteInt("DoorsArmour", 0);
  1533.                     SII_WriteInt("TiresArmour", 0);
  1534.                     SII_WriteInt("PanelsArmour", 0);
  1535.                     SII_WriteInt("LightsArmour", 0);
  1536.                     SII_Save();
  1537.                     SII_Close();
  1538.                     VehCreate[i] = CreateVehicle(550, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1);
  1539.                     SetVehicleNumberPlate(VehCreate[i], GetPlayerName(playerid));
  1540.                     PutPlayerInVehicle(playerid, VehCreate[i], 0);
  1541.                     ServerVehicles[VehCreate[i]][VehHealth] = 1000;
  1542.                     //Itter_Add(TotalVehicle, VehCreate[i]);
  1543.                     SetVehicleParamsEx(VehCreate[i], 1, 1, 0, 0, 0, 0, 0);
  1544.                     break;
  1545.                 }
  1546.             }
  1547.         }
  1548.     }
  1549.     return 1;
  1550. }
  1551.  
  1552. public OnVehicleDamageStatusUpdate(vehicleid, playerid)
  1553. {
  1554.     #pragma unused playerid
  1555.  
  1556.     new panels, doors, lights, tires;
  1557.     for(new i = 0; i < 500; i++)
  1558.     {
  1559.         if(vehicleid == VehCreate[i])
  1560.         {
  1561.             GetVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires);
  1562.             if(ServerVehicles[VehCreate[i]][VehDoorsArmour] == 1) doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors //fell off - (4, 4, 4, 4, 0, 0)
  1563.             if(ServerVehicles[VehCreate[i]][VehPanelsArmour] == 1) panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels //fell off - (3, 3, 3, 3, 3, 3, 3)
  1564.             if(ServerVehicles[VehCreate[i]][VehTiresArmour] == 1) tires = encode_tires(0, 0, 0, 0); // fix all tires
  1565.             if(ServerVehicles[VehCreate[i]][VehLightsArmour] == 1) lights = encode_lights(0, 0, 0, 0); // fix all lights
  1566.             UpdateVehicleDamageStatus(VehCreate[i], panels, doors, lights, tires);
  1567.         }
  1568.     }
  1569.     return 1;
  1570. }
  1571.  
  1572. encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
  1573. encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
  1574. {
  1575.     return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
  1576. }
  1577. encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
  1578. {
  1579.     #pragma unused behind_driver_door
  1580.     #pragma unused behind_passenger_door
  1581.     return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
  1582. }
  1583. encode_lights(light1, light2, light3, light4)
  1584. {
  1585.     return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
  1586. }
  1587.  
  1588. public OnPlayerDeath(playerid, killerid, reason)
  1589. {
  1590.     GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
  1591.     GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
  1592.     return 1;
  1593. }
  1594.  
  1595. public OnPlayerSpawn(playerid)
  1596. {
  1597.     SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]+2.5);
  1598.     SetPlayerFacingAngle(playerid, PlayerInfo[playerid][pA]);
  1599.     TogglePlayerControllable(playerid, 1);
  1600.     for(new i = 0; i < 13; i++) GivePlayerWeapon(playerid, PlayerInfo[playerid][pWeapon][i], PlayerInfo[playerid][pAmmo][i]);
  1601.  
  1602.     return true;
  1603. }
  1604.  
  1605. public OnPlayerPickUpPickup(playerid, pickupid)
  1606. {
  1607.     return 1;
  1608. }
  1609.  
  1610. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1611. {
  1612.     ServerVehicles[vehicleid][VehColor1] = color1;
  1613.     ServerVehicles[vehicleid][VehColor2] = color2;
  1614.     return true;
  1615. }
  1616.  
  1617. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1618. {
  1619.     ServerVehicles[vehicleid][VehPaintjob] = paintjobid;
  1620.     return true;
  1621. }
  1622.  
  1623. public OnVehicleDeath(vehicleid, killerid)
  1624. {
  1625.     ServerVehicles[vehicleid][VehStatus] = 1;
  1626.     return true;
  1627. }
  1628.  
  1629. public OnVehicleSpawn(vehicleid)
  1630. {
  1631.     new i = vehicleid;
  1632.     SetVehiclePos(vehicleid, ServerVehicles[vehicleid][VehX], ServerVehicles[vehicleid][VehY], ServerVehicles[vehicleid][VehZ]);
  1633.     SetVehicleZAngle(vehicleid, ServerVehicles[vehicleid][VehA]);
  1634.     ChangeVehicleColor(vehicleid, ServerVehicles[vehicleid][VehColor1], ServerVehicles[vehicleid][VehColor2]);
  1635.     ChangeVehiclePaintjob(vehicleid, ServerVehicles[vehicleid][VehPaintjob]);
  1636.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSpoiler]);
  1637.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHood]);
  1638.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRoof]);
  1639.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehSideskirt]);
  1640.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehLamps]);
  1641.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehNitro]);
  1642.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehExhaust]);
  1643.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehWheels]);
  1644.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehStereo]);
  1645.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehHydraulics]);
  1646.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehFB]);
  1647.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehRB]);
  1648.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVR]);
  1649.     AddVehicleComponent(vehicleid, ServerVehicles[vehicleid][VehVL]);
  1650.     //SetVehicleNumberPlate(vehicleid, ServerVehicles[vehicleid][VehPlate]);
  1651.     ServerVehicles[vehicleid][VehStatus] = 0;
  1652.     SetVehicleParamsEx(vehicleid, ServerVehicles[i][VehEngine], ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors], ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]);
  1653.     return true;
  1654. }
  1655.  
  1656. public OnPlayerStateChange(playerid, newstate, oldstate)
  1657. {
  1658.     if(oldstate == PLAYER_STATE_ONFOOT && newstate == PLAYER_STATE_DRIVER)
  1659.     {
  1660.         new i = GetPlayerVehicleID(playerid);
  1661.         GetVehicleParamsEx(i, ServerVehicles[i][VehEngine], ServerVehicles[i][VehLights], ServerVehicles[i][VehAlarm], ServerVehicles[i][VehDoors], ServerVehicles[i][VehBonnet], ServerVehicles[i][VehBoot], ServerVehicles[i][VehObjective]);
  1662.         if(ServerVehicles[i][VehEngine] == 0) ShowPlayerDialog(playerid, DIALOG_ENGINE, 0, "{FFD700}SA Tuning", "{FFFFFF}Deseja ligar o veículo?\nUse também o comando /motor para ligar/desligar.", "Ligar", "Não");
  1663.     }
  1664.     return 1;
  1665. }
  1666.  
  1667.  
  1668. //-----------------------------------/ Y_Race Sistem
  1669. public OnPlayerFinishRace(playerid, race, position, prize, time)
  1670. {
  1671.     new Float:X, Float:Y, Float:Z, Float:A, Float:vX, Float:vY, Float:vZ;
  1672.     GetVehiclePos(GetPlayerVehicleID(playerid), X, Y, Z);
  1673.     GetVehicleZAngle(GetPlayerVehicleID(playerid), A);
  1674.     GetVehicleVelocity(GetPlayerVehicleID(playerid), vX, vY, vZ);
  1675.     for(new k = 0; k < 100; k++)
  1676.     {
  1677.         if(race == RaceCreate[k])
  1678.         {
  1679.             new raceid = RaceCreate1[RaceCreate[k]];
  1680.             SendClientMessageToAll(COLOR_GOLD, "");
  1681.             SendClientMessageToAll(COLOR_GOLD, "CORRIDA: %s", RaceInfo[raceid][RaceName]);
  1682.             SendClientMessageToAll(-1, "%d COLOCADO: %s", position, GetPlayerName(playerid));
  1683.             SendClientMessageToAll(COLOR_GOLD, "");
  1684.             if(position == 1)
  1685.             {
  1686.                 format(RaceInfo[raceid][Race1Name], 20, "%s", GetPlayerName(playerid));
  1687.                 GivePlayerMoney(playerid, RaceInfo[raceid][RaceReward]);
  1688.                 SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 1st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], RaceInfo[raceid][RaceReward]);
  1689.             }
  1690.             else if(position == 2)
  1691.             {
  1692.                 format(RaceInfo[raceid][Race2Name], 20, "%s", GetPlayerName(playerid));
  1693.                 GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/2));
  1694.                 SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 2nd e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/2));
  1695.             }
  1696.             else if(position == 3)
  1697.             {
  1698.                 format(RaceInfo[raceid][Race3Name], 20, "%s", GetPlayerName(playerid));
  1699.                 GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/3));
  1700.                 SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em 3st e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], floatround(RaceInfo[raceid][RaceReward]/3));
  1701.             }
  1702.             else if(position >= 4 || position <= 8)
  1703.             {
  1704.                 GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/6));
  1705.                 SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/6));
  1706.             }
  1707.             else if(position >= 9)
  1708.             {
  1709.                 GivePlayerMoney(playerid, floatround(RaceInfo[raceid][RaceReward]/9));
  1710.                 SendClientMessageToAll(COLOR_WHITE, "[RACE] %s terminou a corrida '%s' em %d colocado e ganhou $%d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], position, floatround(RaceInfo[raceid][RaceReward]/9));
  1711.             }
  1712.             break;
  1713.         }
  1714.     }
  1715.     return true;
  1716. }
  1717.  
  1718. public OnPlayerExitRace(playerid, race)
  1719. {
  1720.     //SetVehicleToRespawn(GetPlayerVehicleID(playerid));
  1721.     for(new i = 0; i < 100; i++)
  1722.     {
  1723.         if(race == RaceCreate[i])
  1724.         {
  1725.             new raceid = RaceCreate1[RaceCreate[i]];
  1726.             RaceInfo[raceid][RaceCurrent]--;
  1727.             PlayerInfo[playerid][pRaceID] = -1;
  1728.             SendClientMessageToAll(COLOR_WHITE, "[RACE] %s saiu da corrida '%s'", GetPlayerName(playerid), RaceInfo[raceid][RaceName]);
  1729.             break;
  1730.         }
  1731.     }
  1732.     return true;
  1733. }
  1734.  
  1735. public OnRaceEnd(race)
  1736. {
  1737.     new raceid, str[128];
  1738.     for(new k = 0; k < 100; k++)
  1739.     {
  1740.         if(race == RaceCreate[k])
  1741.         {
  1742.             raceid = RaceCreate1[RaceCreate[k]];
  1743.             SendClientMessageToAll(COLOR_GOLD, "[RACE] A corrida '%s' terminou.", RaceInfo[raceid][RaceName]);
  1744.             foreach(Player, i)
  1745.             {
  1746.                 if(PlayerInfo[i][pRaceID] == raceid)
  1747.                 {
  1748.                     PlayerInfo[i][pRaceID] = -1;
  1749.                 }
  1750.             }
  1751.             break;
  1752.         }
  1753.     }
  1754.  
  1755.     format(str, sizeof str, "Corrida: %s  1st: %s  2nd: %s  3rd: %s", RaceInfo[raceid][RaceName], RaceInfo[raceid][Race1Name], RaceInfo[raceid][Race2Name], RaceInfo[raceid][Race3Name]);
  1756.     TextDrawSetString(RaceEndInfo2, str);
  1757.     TextDrawShowForAll(RaceEndInfo);
  1758.     TextDrawShowForAll(RaceEndInfo2);
  1759.    
  1760.     format(RaceInfo[raceid][Race1Name], 20, "None");
  1761.     format(RaceInfo[raceid][Race2Name], 20, "None");
  1762.     format(RaceInfo[raceid][Race3Name], 20, "None");
  1763.    
  1764.     RaceInfo[raceid][RaceOpen] = false;
  1765.    
  1766.     SetTimerEx("HideTextDraw", 6000, false, "d", 0);
  1767.     return true;
  1768. }
  1769.  
  1770. forward StartRace(race);
  1771. public StartRace(race)
  1772. {
  1773.     for(new k = 0; k < 100; k++)
  1774.     {
  1775.         if(race == RaceCreate[k])
  1776.         {
  1777.             new raceid = RaceCreate1[RaceCreate[k]];
  1778.             if(RaceInfo[raceid][RaceCurrent] >= 1)
  1779.             {
  1780.                 SendClientMessageToAll(COLOR_GOLD, "[RACE] A corrida '%s' vai começar. Preparados?", RaceInfo[raceid][RaceName]);
  1781.                 Race_Start(RaceCreate[k]);
  1782.             }
  1783.             else
  1784.             {
  1785.                 RaceInfo[race][RaceOpen] = false;
  1786.                 RaceInfo[race][RaceCurrent] = 0;
  1787.                 RaceInfo[race][RaceTotal] = 0;
  1788.                 foreach(Player, i)
  1789.                 {
  1790.                     if(PlayerInfo[i][pRaceID] == race)
  1791.                     {
  1792.                         PlayerInfo[i][pRaceID] = -1;
  1793.                         Race_SetPlayer(race, i, false);
  1794.                     }
  1795.                 }
  1796.             }
  1797.             break;
  1798.         }
  1799.     }
  1800.     return true;
  1801. }
  1802.  
  1803.  
  1804. public OnVehicleStreamIn(vehicleid, forplayerid)
  1805. {
  1806.     if(strcmp(ServerVehicles[vehicleid][VehOwner], GetPlayerName(forplayerid), false) == 0)
  1807.     {
  1808.         SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  1809.     }
  1810.     else
  1811.     {
  1812.         if(ServerVehicles[vehicleid][VehLocked] == true) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
  1813.         else if(ServerVehicles[vehicleid][VehLocked] == false) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  1814.     }
  1815.     return true;
  1816. }
  1817.  
  1818.  
  1819.  
  1820. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  1821. {
  1822.     return true;
  1823. }
  1824.  
  1825. forward HideTextDraw(textid);
  1826. public HideTextDraw(textid)
  1827. {
  1828.     if(textid == 1)
  1829.     {
  1830.         TextDrawHideForAll(StartRaceTxt);
  1831.     }
  1832.     else if(textid == 0)
  1833.     {
  1834.         TextDrawHideForAll(RaceEndInfo);
  1835.         TextDrawHideForAll(RaceEndInfo2);
  1836.     }
  1837. }
  1838.  
  1839. //-----------------------------------/ Comandos
  1840.  
  1841. /*
  1842. zcmd:createrace(playerid, params[])
  1843. {
  1844.     if(!IsPlayerAdmin(playerid)) SendClientMessage(playerid, COLOR_RED, "* Você precisa ser administrador ou ter autorização.");
  1845.     else if(PlayerInfo[playerid][CRaceStatus] > 0) SendClientMessage(playerid, COLOR_RED, "* Você já está criando uma corrida.");
  1846.     else
  1847.     {
  1848.         PlayerInfo[playerid][CRaceStatus] = 1;
  1849.         ShowPlayerDialog(playerid, DialogRaceType, 2, "<SA Race> Qual o tipo de corrida?", "Ponto a Ponto\nConvencional", "Avançar", "Cancelar");
  1850.     }
  1851.     return true;
  1852. }
  1853. */
  1854.  
  1855.  
  1856. zcmd:admcmds(playerid, params[])
  1857. {
  1858.     if(!IsPlayerAdmin(playerid))
  1859.         return false;
  1860.     ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS",  sz_CmdAdmins, "OK", "");
  1861.     return true;
  1862. }
  1863.  
  1864. zcmd:tutorial(playerid, params[])
  1865. {
  1866.     new sz_Dialog[] = #RGB_COLOR_GOLD"REGRAS DO SERVIDOR\n\n\
  1867.                       "RGB_COLOR_WHITE"1. Proibido o uso de qualquer tipo de cheater;\n\
  1868.                       2. Proibido se aproveitar de qualquer bug do gamemode;\n\
  1869.                       3. Proibido ofensas a outros jogadores;\n\
  1870.                       4. Proibido deixar veículos no meio da rua;\n\
  1871.                       5. ...";
  1872.     PlayerInfo[playerid][pTutorial] = 1;
  1873.     ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"TUTORIAL", sz_Dialog, "PROX. PÁG", "");
  1874.     return true;
  1875. }
  1876.  
  1877.  
  1878.  
  1879. zcmd:creditos(playerid, params[])
  1880. {
  1881.     new sz_Dialog[] = RGB_COLOR_GOLD"\t\t\tCRÉDITOS DO GAMEMODE\n\n\
  1882.                     "RGB_COLOR_WHITE"Roger Costa - Programador e Proprietário\n\
  1883.                     Paulo Mu - Programador e Proprietário\n\
  1884.                     Felipe (Play 4 Life RPG) - Garoto que testa o mode com a gente -q\n\
  1885.                     Wagner Bender - Emo que testa o mode com a gente também -q";
  1886.  
  1887.     ShowPlayerDialog(playerid, DIALOG_TEXT_NO_EFFECT, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"CRÉDITOS", sz_Dialog, "OK", "");
  1888.     return true;
  1889. }
  1890.  
  1891. zcmd:reportar(playerid, params[])
  1892. {
  1893.     new report[50], admins;
  1894.     if(sscanf(params, "s[50]", report)) SendClientMessage(playerid, COLOR_RED, "[COMANDO] Use '/reportar [mensagem]'");
  1895.     else
  1896.     {
  1897.         foreach(Player, i)
  1898.         {
  1899.             if(IsPlayerAdmin(i))
  1900.             {
  1901.                 admins++;
  1902.                 GameTextForPlayer(i, "~w~~h~~h~NOVO REPORT~w~OLHE O CHAT", 3000, 3);
  1903.                 PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
  1904.                 SendClientMessageEx(i, -1, "[REPORT] %s(id%d): %s", GetPlayerNameEx(playerid), playerid, report);
  1905.             }
  1906.         }
  1907.         if(admins == 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Não há nenhum administrador online.");
  1908.         else SendClientMessage(playerid, COLOR_GREEN, "[REPORT] Seu report foi enviado com sucesso!");
  1909.     }
  1910.  
  1911.     return true;
  1912. }
  1913.  
  1914. // zcmd:ajuda(playerid, params[]) - Mostra um índice de ajuda para o jogador
  1915. zcmd:ajuda(playerid, params[])
  1916. {
  1917.     return ShowPlayerDialog(playerid, DIALOG_HELP, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"AJUDA", g_szHelpDialog, "FECHAR", ""), true;
  1918. }
  1919.  
  1920. // zcmd:comandos(playerid, params[]) - Mostra a lista de comandos do servidor
  1921. zcmd:comandos(playerid, params[])
  1922. {
  1923.     strcat(g_szCommandsDialog, g_szCommandsDialog1);
  1924.     return ShowPlayerDialog(playerid, DIALOG_COMMANDS, DIALOG_STYLE_MSGBOX, RGB_COLOR_GOLD"COMANDOS", g_szCommandsDialog, "FECHAR", ""), true;
  1925. }
  1926.  
  1927. // zcmd:comandos(playerid, params[]) - Comete suicídio
  1928. zcmd:kill(playerid, params[])
  1929. {
  1930.     SendClientMessageToAll(COLOR_GRAY, "[JOGADOR] %s se suicidou. (/kill)", GetPlayerName(playerid));
  1931.  
  1932.     SetPlayerHealth(playerid, 0.0);
  1933.  
  1934.     return true;
  1935. }
  1936.  
  1937. zcmd:race(playerid, params[])
  1938. {
  1939.     new raceid;
  1940.     if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "* Você já está em uma corrida.");
  1941.     else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /race <id>");
  1942.     else if(!RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "* Essa corrida não está aberta.");
  1943.     else if(RaceInfo[raceid][RaceCurrent] >= 20) SendClientMessage(playerid, COLOR_RED, "* Corrida já está cheia!");
  1944.     else if(PlayerInfo[playerid][pDM] > 0) SendClientMessage(playerid, COLOR_RED, "* Você está em um deathmatch.");
  1945.     else
  1946.     {
  1947.         RaceInfo[raceid][RaceTotal]++;
  1948.         RaceInfo[raceid][RaceCurrent]++;
  1949.         PlayerInfo[playerid][pRaceID] = raceid;
  1950.         Race_SetPlayer(RaceCreate[raceid], playerid, true);
  1951.         SendClientMessageToAll(COLOR_GOLD, "[RACE] %s entrou na corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid);
  1952.     }
  1953.     return true;
  1954. }
  1955.  
  1956. zcmd:exit(playerid, params[])
  1957. {
  1958.     if(!Race_GetPlayerRace(playerid)) SendClientMessage(playerid, COLOR_RED, "* Você não está em uma corrida.");
  1959.     else
  1960.     {
  1961.         Race_SetPlayer(Race_GetPlayerRace(playerid), playerid, false);
  1962.     }
  1963.     return true;
  1964. }
  1965.  
  1966. zcmd:openrace(playerid, params[])
  1967. {
  1968.     new raceid;
  1969.     if(PlayerInfo[playerid][pRaceID] > -1) SendClientMessage(playerid, COLOR_RED, "* Você já está em uma corrida.");
  1970.     else if(sscanf(params, "d", raceid)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /openrace <id>");
  1971.     else if(RaceInfo[raceid][RaceOpen]) SendClientMessage(playerid, COLOR_RED, "* Essa corrida já está aberta.");
  1972.     else
  1973.     {
  1974.         new str[128];
  1975.         RaceInfo[raceid][RaceOpen] = true;
  1976.         SendClientMessageToAll(COLOR_GOLD, "[RACE] %s abriu a corrida '%s'. Para entrar, digite /race %d", GetPlayerName(playerid), RaceInfo[raceid][RaceName], raceid);
  1977.         SendClientMessageToAll(COLOR_GOLD, "[RACE] A CORRIDA SE INICIA EM 1 MINUTO!");
  1978.        
  1979.         PlayAudioForAll(1057);
  1980.  
  1981.         //---- CreateRace
  1982.        
  1983.         RaceCreate[raceid] = Race_Create();
  1984.         RaceCreate1[RaceCreate[raceid]] = raceid;
  1985.         //---- Laps
  1986.         Race_SetLaps(RaceCreate[raceid], RaceInfo[raceid][RaceLaps]);
  1987.         //---- Price
  1988.         Race_SetEntry(RaceCreate[raceid], 0);
  1989.        
  1990.         //---- Checkpoints
  1991.         for(new j = 0; j < 50; j++)
  1992.         {
  1993.             if(strlen(RaceCPPos[raceid][j]) > 0)
  1994.             {
  1995.                 new Float:r_pos[3];
  1996.                 sscanf(RaceCPPos[raceid][j], "fff", r_pos[0], r_pos[1], r_pos[2]);
  1997.                 Race_AddCheckpoint(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2]);
  1998.             }
  1999.         }
  2000.         //---- Grid
  2001.         for(new j = 0; j < 20; j++)
  2002.         {
  2003.             if(strlen(RaceSTPos[raceid][j]) > 0)
  2004.             {
  2005.                 new Float:r_pos[4];
  2006.                 sscanf(RaceSTPos[raceid][j], "ffff", r_pos[0], r_pos[1], r_pos[2], r_pos[3]);
  2007.                 Race_AddStart(RaceCreate[raceid], r_pos[0], r_pos[1], r_pos[2], r_pos[3]);
  2008.             }
  2009.         }
  2010.         TextDrawShowForAll(StartRaceTxt);
  2011.         format(str, sizeof str, "~g~A corrida ~w~%s ~g~foi aberta~n~Digite ~w~/race %d ~g~para entrar!", RaceInfo[raceid][RaceName], raceid);
  2012.         TextDrawSetString(StartRaceTxt, str);
  2013.         SetTimerEx("HideTextDraw", 6000, false, "d", 1);
  2014.         SetTimerEx("StartRace", 1000*20, false, "d", RaceCreate[raceid]);
  2015.         PlayAudioForAll(1057);
  2016.     }
  2017.     return true;
  2018. }
  2019.  
  2020. // zcmd:dardinheiro(playerid, params[]) - Dá a quantia de dinheiro para o jogador
  2021. zcmd:dardinheiro(playerid, params[])
  2022. {
  2023.     if(!IsPlayerAdmin(playerid))
  2024.         return false;
  2025.  
  2026.     new iPlayerID;
  2027.     new iAmount;
  2028.  
  2029.     if(sscanf(params, "ui", iPlayerID, iAmount))
  2030.         return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/dardinheiro [id/jogador] [quantidade]'.");
  2031.  
  2032.     if(!IsPlayerConnected(iPlayerID))
  2033.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido.");
  2034.  
  2035.     SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s deu $%d à %s.", GetPlayerName(playerid), iAmount, GetPlayerName(iPlayerID));
  2036.  
  2037.     GivePlayerMoney(iPlayerID, iAmount);
  2038.  
  2039.     return true;
  2040. }
  2041.  
  2042. // zcmd:setardinheiro(playerid, params[]) - Seta o dinheiro de um jogador para o valor especificado
  2043. zcmd:setardinheiro(playerid, params[])
  2044. {
  2045.     if(!IsPlayerAdmin(playerid))
  2046.         return false;
  2047.  
  2048.     new iPlayerID;
  2049.     new iAmount;
  2050.  
  2051.     if(sscanf(params, "ui", iPlayerID, iAmount))
  2052.         return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setardinheiro [id/jogador] [quantia]'.");
  2053.  
  2054.     if(!IsPlayerConnected(iPlayerID))
  2055.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido.");
  2056.  
  2057.     SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou o dinheiro de %s para $%d.", GetPlayerName(playerid), GetPlayerName(iPlayerID), iAmount);
  2058.  
  2059.     SetPlayerMoney(iPlayerID, iAmount);
  2060.  
  2061.     return true;
  2062. }
  2063.  
  2064. // zcmd:setarcolete(playerid, params[]) - Seta o colete de um jogador para o valor especificado
  2065. zcmd:setarcolete(playerid, params[])
  2066. {
  2067.     if(!IsPlayerAdmin(playerid))
  2068.         return false;
  2069.  
  2070.     new iPlayerID;
  2071.     new Float:fArmour;
  2072.  
  2073.     if(sscanf(params, "uf", iPlayerID, fArmour))
  2074.         return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setarcolete [id/jogador] [colete (0-100)]'.");
  2075.  
  2076.     if(!IsPlayerConnected(iPlayerID))
  2077.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido.");
  2078.  
  2079.     if(fArmour < 0.0 || fArmour > 100.0)
  2080.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Digite um valor de 0 a 100.");
  2081.  
  2082.     SetPlayerArmour(iPlayerID, fArmour);
  2083.  
  2084.     SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou o colete de %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fArmour);
  2085.  
  2086.     return true;
  2087. }
  2088.  
  2089. // zcmd:setarvida(playerid, params[]) - Seta a vida de um jogador para o valor especificado
  2090. zcmd:setarvida(playerid, params[])
  2091. {
  2092.     if(!IsPlayerAdmin(playerid))
  2093.         return false;
  2094.  
  2095.     new iPlayerID;
  2096.     new Float:fHealth;
  2097.  
  2098.     if(sscanf(params, "uf", iPlayerID, fHealth))
  2099.         return SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/setarvida [id/jogador] [vida (0-100)]'.");
  2100.  
  2101.     if(!IsPlayerConnected(iPlayerID))
  2102.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Jogador desconectado/inválido.");
  2103.  
  2104.     if(fHealth < 0.0 || fHealth > 100.0)
  2105.         return SendClientMessage(playerid, COLOR_RED, "[ERRO] Digite um valor de 0 a 100.");
  2106.  
  2107.     SetPlayerHealth(iPlayerID, fHealth);
  2108.  
  2109.     SendClientMessageToAll(COLOR_BLUE, "[ADMIN] %s setou a vida do(a) %s para %.1f.", GetPlayerName(playerid), GetPlayerName(iPlayerID), fHealth);
  2110.  
  2111.     return true;
  2112. }
  2113.  
  2114. zcmd:vehicle(playerid, params[])
  2115. {
  2116.     new vehid;
  2117.     if(!IsPlayerAdmin(playerid)) return false;
  2118.     else if(sscanf(params, "d", vehid)) SendClientMessage(playerid, COLOR_PURPLE, "* Modafoca, use /vehicle <id>");
  2119.     else if(vehid < 400 || vehid > 611) SendClientMessage(playerid, COLOR_RED, "* Modafoca, é só id 400 ao 611.");
  2120.     else if(IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "* ERROR");
  2121.     else
  2122.     {
  2123.         for(new i = 0; i < sizeof VehProhibiteds; i++) if(vehid == VehProhibiteds[i]) return SendClientMessage(playerid, COLOR_RED, "* Modafoca, é só id 400 ao 611.");
  2124.         new Float:ppos[4];
  2125.         GetPlayerPos(playerid, ppos[0], ppos[1], ppos[2]);
  2126.         GetPlayerFacingAngle(playerid, ppos[3]);
  2127.         for(new i = 1; i < 500; i++)
  2128.         {
  2129.             if(VehCreate[i] == -1)
  2130.             {
  2131.                 new file[100];
  2132.                 format(file, sizeof file, "RS-RACE/Vehicles/Vehicle%d.ini", i);
  2133.                 if(!SII_Exist(file))
  2134.                 {
  2135.                     SII_Open(file);
  2136.                     SII_WriteString("Owner", GetPlayerName(playerid));
  2137.                     SII_WriteInt("Model", vehid);
  2138.                     SII_WriteInt("Spoiler", -1);
  2139.                     SII_WriteInt("Hood", -1);
  2140.                     SII_WriteInt("Roof", -1);
  2141.                     SII_WriteInt("Sideskirt", -1);
  2142.                     SII_WriteInt("Lamps", -1);
  2143.                     SII_WriteInt("Nitro", -1);
  2144.                     SII_WriteInt("Exhaust", -1);
  2145.                     SII_WriteInt("Wheels", -1);
  2146.                     SII_WriteInt("Stereo", -1);
  2147.                     SII_WriteInt("Hydraulics", -1);
  2148.                     SII_WriteInt("FB", -1);
  2149.                     SII_WriteInt("RB", -1);
  2150.                     SII_WriteInt("VR", -1);
  2151.                     SII_WriteInt("VL", -1);
  2152.                     SII_WriteFloat("PosX", ppos[0]);
  2153.                     SII_WriteFloat("PosY", ppos[1]);
  2154.                     SII_WriteFloat("PosZ", ppos[2]);
  2155.                     SII_WriteFloat("PosA", ppos[3]);
  2156.                     SII_WriteFloat("Health", 1000);
  2157.                     SII_Save();
  2158.                     SII_Close();
  2159.                     VehCreate[i] = CreateVehicle(vehid, ppos[0], ppos[1], ppos[2], ppos[3], -1, -1, -1);
  2160.                     PutPlayerInVehicle(playerid, VehCreate[i], 0);
  2161.                     ServerVehicles[VehCreate[i]][VehHealth] = 1000;
  2162.                     ServerVehicles[VehCreate[i]][VehID] = vehid;
  2163.                     format(ServerVehicles[VehCreate[i]][VehOwner], 24, "%s", GetPlayerName(playerid));
  2164.                     break;
  2165.                 }
  2166.             }
  2167.         }
  2168.     }
  2169.     return true;
  2170. }
  2171.  
  2172. zcmd:motor(playerid, params[])
  2173. {
  2174.     if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0)
  2175.     {
  2176.         new vehID = GetPlayerVehicleID(playerid);
  2177.         //GetVehicleParamsEx(GetPlayerVehicleID(playerid), engine, lights, alarm, doors, bonnet, boot, objective);
  2178.         if(ServerVehicles[GetPlayerVehicleID(playerid)][VehEngine] == 0)
  2179.         {
  2180.             SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine] = 1, ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2181.             SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo ligado!");
  2182.         }
  2183.         else
  2184.         {
  2185.             SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine] = 0, ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2186.             SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo desligado!");
  2187.         }
  2188.     }
  2189.     else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar de motorista pra ligar o veículo.");
  2190.     return true;
  2191. }
  2192.  
  2193. zcmd:lights(playerid, params[])
  2194. {
  2195.     if(IsPlayerInAnyVehicle(playerid) && GetPlayerVehicleSeat(playerid) == 0)
  2196.     {
  2197.         new vehID = GetPlayerVehicleID(playerid);
  2198.         //GetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2199.         if(ServerVehicles[vehID][VehLights] == 0)
  2200.         {
  2201.             SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights] =1, ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2202.             SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Faróis aceso!");
  2203.         }
  2204.         else
  2205.         {
  2206.             SetVehicleParamsEx(GetPlayerVehicleID(playerid), ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights] = 0, ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2207.             SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Faróis apagados!");
  2208.         }
  2209.     }
  2210.     else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar de motorista pra acender os faróis o veículo.");
  2211.     return true;
  2212. }
  2213.  
  2214. /*zcmd:plate(playerid, params[])
  2215. {
  2216.     new pstr[10];
  2217.     if(!IsPlayerInAnyVehicle(playerid) || GetPlayerVehicleSeat(playerid) != 0) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate <texto>");
  2218.     else if(sscanf(params, "s[10]", pstr)) SendClientMessage(playerid, COLOR_RED, "* Modafoca, use /plate <texto>");
  2219.     else if(strlen(pstr) < 1 || strlen(pstr) > 8) SendClientMessage(playerid, COLOR_RED, "* No máximo 8 digitos.");
  2220.     else
  2221.     {
  2222.         new vehID = GetPlayerVehicleID(playerid), str[100];
  2223.         SetVehicleNumberPlate(vehID, pstr);
  2224.         format(ServerVehicles[vehID][VehPlate], 10, pstr);
  2225.         format(str, sizeof str, "* Placa alterada (%s)", ServerVehicles[vehID][VehPlate]);
  2226.         SendClientMessage(playerid, COLOR_GOLD, str);
  2227.         ServerVehicles[vehID][VehStatus] = 1;
  2228.         GetVehiclePos(vehID, ServerVehicles[vehID][VehX], ServerVehicles[vehID][VehY], ServerVehicles[vehID][VehZ]);
  2229.         GetVehicleZAngle(vehID, ServerVehicles[vehID][VehA]);
  2230.         //GetVehicleParamsEx(vehID, ServerVehicles[vehID][VehEngine], ServerVehicles[vehID][VehLights], ServerVehicles[vehID][VehAlarm], ServerVehicles[vehID][VehDoors], ServerVehicles[vehID][VehBonnet], ServerVehicles[vehID][VehBoot], ServerVehicles[vehID][VehObjective]);
  2231.         SetVehicleToRespawn(vehID);
  2232.     }
  2233.     return true;
  2234. }
  2235. */
  2236.  
  2237. zcmd:destrancar(playerid, params[])
  2238. {
  2239.     if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar em um veículo!");
  2240.     else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para trancá-lo!");
  2241.     {
  2242.         SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo destrancado!");
  2243.         ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = false;
  2244.         foreach(new i : Player)
  2245.         {
  2246.             if(i != playerid)
  2247.             {
  2248.                 SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 0);
  2249.             }
  2250.         }
  2251.     }
  2252.     return true;
  2253. }
  2254.  
  2255. zcmd:trancar(playerid, params[])
  2256. {
  2257.     if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você precisa estar em um veículo!");
  2258.     else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para trancá-lo!");
  2259.     {
  2260.         SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Veículo trancado!");
  2261.         ServerVehicles[GetPlayerVehicleID(playerid)][VehLocked] = true;
  2262.         foreach(new i : Player)
  2263.         {
  2264.             if(i != playerid)
  2265.             {
  2266.                 SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 1);
  2267.             }
  2268.         }
  2269.     }
  2270.     return true;
  2271. }
  2272.  
  2273.  
  2274. zcmd:mycars(playerid, params[])
  2275. {
  2276.     new str[500];
  2277.     if(PlayerInfo[playerid][pGPS] != -1)
  2278.     {
  2279.         PlayerInfo[playerid][pGPS] = -1;
  2280.         RemovePlayerMapIcon(playerid, 99);
  2281.         return true;
  2282.     }
  2283.     for(new i = 1; i < 500; i++)
  2284.     {
  2285.         if(VehCreate[i] != -1)
  2286.         {
  2287.             if(strcmp(GetPlayerName(playerid), ServerVehicles[i][VehOwner], false) == 0)
  2288.             {
  2289.                 new str2[128];
  2290.                 format(str2, sizeof str2, "{FFFFFF}%s (ID: %d)\n", VehicleNames[ServerVehicles[i][VehID] - 400], i);
  2291.                 strcat(str, str2);
  2292.             }
  2293.         }
  2294.     }
  2295.     if(strlen(str))
  2296.     {
  2297.         strcat(str, "{333333}Selecione o ID do seu carro para localizar:");
  2298.         ShowPlayerDialog(playerid, DIALOG_CARS, DIALOG_STYLE_INPUT, RGB_COLOR_GOLD"SEUS VEÍCULOS", str, "Localizar", "");
  2299.     }
  2300.     else SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não tem nenhum carro pra localizar, pobre!");
  2301.     return true;
  2302. }
  2303.  
  2304. zcmd:skin(playerid, params[])
  2305. {
  2306.     if(sscanf(params, "d", PlayerInfo[playerid][pSkin])) SendClientMessage(playerid, COLOR_PURPLE, "[COMANDO] Use '/skin [id]'");
  2307.     else
  2308.     {
  2309.         SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
  2310.         SendClientMessage(playerid, COLOR_GOLD, "[SERVER] Sua skin foi alterada.");
  2311.     }
  2312.     return true;
  2313. }
  2314.  
  2315. zcmd:tuning(playerid, params[])
  2316. {
  2317.     if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não está em um veículo!");
  2318.     else if(strcmp(ServerVehicles[GetPlayerVehicleID(playerid)][VehOwner], GetPlayerName(playerid), false) != 0) SendClientMessage(playerid, COLOR_RED, "[ERRO] Esse carro não é seu para tuná-lo.");
  2319.     else if(!IsPlayerInRangeOfPoint(playerid, 10.0, 1523.7592,-1470.9032,9.5000)) SendClientMessage(playerid, COLOR_RED, "[ERRO] Você não está na garagem de tuning!");
  2320.     else
  2321.     {
  2322.         ShowPlayerDialog(playerid, DIALOG_WORKSHOP, DIALOG_STYLE_LIST, RGB_COLOR_GOLD"OFICINA DE TUNING", RGB_COLOR_WHITE"Aumentar Resistência\nBlindar Portas\t\t\tR$3000\nBlindar Paineis\t\t\tR$3000\nBlindar Rodas\t\t\tR$3000\nBlindar Luzes\t\t\tR$3000\nPintura\t\t\tR$2500\nReparar Veículo\t\t\tR$100", "Escolher", "Sair");
  2323.     }
  2324.     return true;
  2325. }
  2326.  
  2327. zcmd:money(playerid, params[])
  2328. {
  2329.     GivePlayerMoney(playerid, 500000);
  2330.     return true;
  2331. }
  2332.  
  2333.  
  2334. forward AntiCheat();
  2335. public AntiCheat()
  2336. {
  2337.     foreach(new i : Player)
  2338.     {
  2339.         //SendClientMessage(i, -1, "[DEBUG] GetPlayerMoney(%d) = $%d | PlayerInfo[%d][playerMoney] = $%d", i, GetPlayerMoney(i), i, PlayerInfo[i][playerMoney]);
  2340.  
  2341.         if(GetPlayerMoney(i) > PlayerInfo[i][playermoney])
  2342.         {
  2343.             SendClientMessageToAll(COLOR_RED, "[ANTICHEAT] %s usou money hack!", GetPlayerName(i));
  2344.  
  2345.             ResetPlayerMoney(i);
  2346.             GivePlayerMoney(i, PlayerInfo[i][playermoney]);
  2347.         }
  2348.         else
  2349.             PlayerInfo[i][playermoney] = GetPlayerMoney(i);
  2350.     }
  2351.  
  2352.     return true;
  2353. }
  2354.  
  2355. // - [FUNÇÕES DE DINHEIRO]
  2356. // stock GetPlayerMoneyEx(playerid) - Retorna a quantia de dinheiro que o jogador possui em mãos
  2357. stock GetPlayerMoneyEx(playerid)
  2358.     return PlayerInfo[playerid][playermoney];
  2359.  
  2360. // stock GivePlayerMoneyEx(playerid, amount) - Dá uma quantida especificad de dinheiro para o jogador
  2361. stock GivePlayerMoneyEx(playerid, amount)
  2362. {
  2363.     PlayerInfo[playerid][playermoney] = PlayerInfo[playerid][playermoney] + amount;
  2364.  
  2365.     GivePlayerMoney(playerid, amount);
  2366. }
  2367.  
  2368. // stock ResetPlayerMoneyEx(playerid) - Reseta o dinheiro do jogador
  2369. stock ResetPlayerMoneyEx(playerid)
  2370. {
  2371.     PlayerInfo[playerid][playermoney] = 0;
  2372.  
  2373.     ResetPlayerMoney(playerid);
  2374. }
  2375.  
  2376. // stock SetPlayerMoneyEx(playerid, amount) - Seta o dinheiro de o jogador para a quantia especificada
  2377. stock SetPlayerMoney(playerid, amount)
  2378. {
  2379.     PlayerInfo[playerid][playermoney] = amount;
  2380.  
  2381.     ResetPlayerMoney(playerid);
  2382.     GivePlayerMoney(playerid, amount);
  2383. }
  2384.  
  2385. #define GetPlayerMoney GetPlayerMoneyEx
  2386. #define GivePlayerMoney GivePlayerMoneyEx
  2387. #define ResetPlayerMoney ResetPlayerMoneyEx
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement