Advertisement
RogerGomesCosta

Untitled

Aug 4th, 2014
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 37.62 KB | None | 0 0
  1. //--------------------// INCLUDES
  2. #include <a_samp>
  3. #include <sqlitei>
  4. #include <zcmd>
  5. #include <foreach>
  6.  
  7. //--------------------// DEFINES
  8. #define MAX_PLAYER          100
  9. #define MAX_VEHICLE         300
  10. #define MAX_VIP_VEHICLE     500
  11.  
  12. #define GANG_POLICE_ID      1
  13. #define GANG_GROVE_ID       2
  14. #define GANG_BALLAS_ID      3
  15. #define GANG_VAGOS_ID       4
  16. #define GANG_AZTECAS_ID     5
  17. #define GANG_NBOYS_ID       6
  18. #define GANG_SWAT_ID        7
  19. #define GANG_EXERC_ID       8
  20.  
  21. #define COLOR_RED           0xBB0000FF
  22. #define COLOR_WHITE         0xFFFFFFFF
  23. #define COLOR_GOLD          0xFFD700FF
  24. #define COLOR_BLUE          0x2587CEFF
  25. #define COLOR_GRAY          0xDDDDDDFF
  26. #define COLOR_GREEN         0x366718FF
  27. #define COLOR_RED           0xBB0000FF
  28. #define COLOR_PURPLE        0x895BD9FF
  29. #define COLOR_YELLOW        0xFAA505FF
  30.  
  31. #define DIALOG_TITLE        "GANGS OF LOS SANTOS "
  32. #define MODE_VERSION        "0.1 BETA"
  33.  
  34. #define BYTES_PER_CELL      4
  35.  
  36.  
  37. #define DATA_BASE_PATH      "GLS/GLS.db"
  38.  
  39. //--------------------// VARIABLES, ETC...
  40.  
  41. enum PLAYER_INFO_ENUM
  42. {
  43.     bool:REGISTERED,
  44.     bool:LOGGED,
  45.     bool:P_VEHMODDED,
  46.     P_NAME[24],
  47.     P_WEAPON[13],
  48.     P_AMMO[13],
  49.     Float: PX,
  50.     Float: PY,
  51.     Float: PZ,
  52.     Float: PA,
  53.     P_SKIN,
  54.     P_MONEY,
  55.     P_INTERIOR,
  56.     P_GPS,
  57.     P_DM,
  58.     P_RACEID,
  59.     P_TUTORIAL,
  60.     P_ID,
  61.     P_GANGID,
  62. }
  63. new PLAYER_INFO[MAX_PLAYER][PLAYER_INFO_ENUM];
  64.  
  65.  
  66. enum dB_VEHICLE_ENUM
  67. {
  68.     bool:dB_VEHICLE_LOCKED,
  69.     dB_VEHICLE_OWNER[24],                   // Nome do dono.
  70.     dB_VEHICLE_NAME[50],                    // Nome do veículo.
  71.     dB_VEHICLE_KEYS[100],
  72.     dB_VEHICLE_PLATE[10],                   // Nome da placa.
  73.     Float: dB_VEHICLE_X,                    // Pos. X.
  74.     Float: dB_VEHICLE_Y,                    // Pos. Y.
  75.     Float: dB_VEHICLE_Z,                    // Pos. Z.
  76.     Float: dB_VEHICLE_A,                    // Pos. A.
  77.     Float: dB_VEHICLE_HEALTH,                // Life.
  78.     Text3D:dB_VEHICLE_TEXT,
  79.     dB_VEHICLE_ID,                          // ID da tabela Vehicles, do dataBase.
  80.     dB_VEHICLE_GID,                         // GID da tabela Vehicles, do dataBase.
  81.     dB_VEHICLE_MODEL,                       // Modelo.
  82.     dB_VEHICLE_OID,                         // ID do dono do veículo da tabela Users, do dataBase.
  83.     dB_VEHICLE_SPOILER,                     // Componentes...
  84.     dB_VEHICLE_HOOD,
  85.     dB_VEHICLE_ROOF,
  86.     dB_VEHICLE_SIDESKIRT,
  87.     dB_VEHICLE_LAMPS,
  88.     dB_VEHICLE_NITRO,
  89.     dB_VEHICLE_EXHAUST,
  90.     dB_VEHICLE_WHEELS,
  91.     dB_VEHICLE_STEREO,
  92.     dB_VEHICLE_HYDRAULICS,
  93.     dB_VEHICLE_FB,
  94.     dB_VEHICLE_RB,
  95.     dB_VEHICLE_VR,
  96.     dB_VEHICLE_VL,                          // Fim dos componentes.
  97.     dB_VEHICLE_COLOR1,
  98.     dB_VEHICLE_COLOR2,
  99.     dB_VEHICLE_PAINTJOB,
  100.     dB_VEHICLE_STATUS,
  101.     dB_VEHICLE_DOORSARMOUR,                 // Blindagem...
  102.     dB_VEHICLE_TIRESARMOUR,
  103.     dB_VEHICLE_LIGHTSARMOUR,
  104.     dB_VEHICLE_PANELSARMOUR,                // Fim das blindagens...
  105.  
  106. }
  107.  
  108. new dB_VEHICLES[MAX_VEHICLE][dB_VEHICLE_ENUM];
  109. new dB_VEHICLE_CREATE[MAX_VEHICLE] = {-1, ...};
  110.  
  111. static GROVE_SKINS[3] =     { 105, 106, 107 };
  112. static BALLAS_SKINS[3] =    { 102, 103, 104 };
  113. static VAGOS_SKINS[3] =     { 108, 109, 110 };
  114. static AZTECAS_SKINS[3] =   { 114, 115, 116 };
  115. static NBOYS_SKINS[3] =     { 121, 122, 123 };
  116. static POLICE_SKINS[3] =    { 281, 281, 282 };
  117.  
  118.  
  119. new DB:DATA_BASE;
  120.  
  121.  
  122.  
  123. new VEHICLE_NAMES[212][] = {
  124. {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"},
  125. {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"},
  126. {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"},
  127. {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"},
  128. {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"},
  129. {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"},
  130. {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"},
  131. {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"},
  132. {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"},
  133. {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"},
  134. {"Rustler"}, {"ZR-350"}, {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"},
  135. {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"},
  136. {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"}, {"Boxville"}, {"Benson"},
  137. {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"}, {"Bloodring Banger"}, {"Rancher"},
  138. {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"},
  139. {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
  140. {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"},
  141. {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"},
  142. {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"},
  143. {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"},
  144. {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"},
  145. {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"},
  146. {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"},
  147. {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"},
  148. {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"},
  149. {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"},
  150. {"Police Car (LVPD)"}, {"Police Ranger"}, {"Picador"}, {"S.W.A.T. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"},
  151. {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"}, {"Boxville"}, {"Farm Plow"},
  152. {"Utility Trailer"}
  153. };
  154.  
  155. static AZTECAS_INFOS[] =
  156.     "Nome: Varrios Los Aztecas                      \
  157.     ~n~Alidos: Grove Street Families e Triads       \
  158.     ~n~Rivais: Ballas e Los Santos Vagos            \
  159.     ~n~Territorio: Unkown                           \
  160.     ~n~Os Varrios Los Aztecas sao uma gangue de Los Santos formada principalmente por \
  161.     ~n~ imigrantes vindos de paises da América Latina como Mexico, Colombia e El Salvador. \
  162.     ~n~Dentre as principais atividades dos AZTECAS são as corridas de rua e prostituicao.";
  163.    
  164. static GROVE_INFOS[] =
  165.     "Nome: Grove Street Families (GSF)              \
  166.     ~n~Aliados: Varrios Los Aztecas                 \
  167.     ~n~Rivais: Ballas e Los Santos Vagos            \
  168.     ~n~Territorio: Ganton                           \
  169.     ~n~A GSF e uma gangue de rua de Los Santos";
  170.    
  171.    
  172.  
  173. //--------------------// FORWARDS, NATIVES...
  174. forward LoadVehicles();
  175.  
  176.  
  177. main()
  178. {
  179.     print("\n Gangs of Los Santos - Gamemode made by Roger Gomes Costa \n");
  180.  
  181. }
  182.  
  183.  
  184. //-------------------// STOCKS, NEW FUNCTIONS...
  185.  
  186. stock SendClientMessageEx(playerid, color, fstring[], {Float, _}:...)
  187. {
  188.     static const STATIC_ARGS = 3;
  189.     new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
  190.     if(n)
  191.     {
  192.         new message[144], arg_start, arg_end;
  193.         #emit CONST.alt         fstring
  194.         #emit LCTRL             5
  195.         #emit ADD
  196.         #emit STOR.S.pri        arg_start
  197.  
  198.         #emit LOAD.S.alt        n
  199.         #emit ADD
  200.         #emit STOR.S.pri        arg_end
  201.         do
  202.         {
  203.             #emit LOAD.I
  204.             #emit PUSH.pri
  205.             arg_end -= BYTES_PER_CELL;
  206.             #emit LOAD.S.pri    arg_end
  207.         }
  208.         while(arg_end > arg_start);
  209.  
  210.         #emit PUSH.S            fstring
  211.         #emit PUSH.C            144
  212.         #emit PUSH.ADR          message
  213.  
  214.         n += BYTES_PER_CELL * 3;
  215.         #emit PUSH.S            n
  216.         #emit SYSREQ.C          format
  217.  
  218.         n += BYTES_PER_CELL;
  219.         #emit LCTRL             4
  220.         #emit LOAD.S.alt        n
  221.         #emit ADD
  222.         #emit SCTRL             4
  223.  
  224.         return SendClientMessage(playerid, color, message);
  225.     } else
  226.         return SendClientMessage(playerid, color, fstring);
  227. }
  228.  
  229. stock SendClientMessageToAllEx(color, fstring[], {Float, _}:...)
  230. {
  231.     #if defined DEBUG_MODE
  232.         #if !defined DEBUG_NO_FUNCTIONS
  233.             printf("[DEBUG] stock SendClientMessageToAllEx(color #%x, fstring '%s')", color, fstring);
  234.         #endif
  235.     #endif
  236.  
  237.     static const STATIC_ARGS = 2;
  238.     new n = (numargs() - STATIC_ARGS) * BYTES_PER_CELL;
  239.     if(n)
  240.     {
  241.         new message[144], arg_start, arg_end;
  242.         #emit CONST.alt         fstring
  243.         #emit LCTRL             5
  244.         #emit ADD
  245.         #emit STOR.S.pri        arg_start
  246.  
  247.         #emit LOAD.S.alt        n
  248.         #emit ADD
  249.         #emit STOR.S.pri        arg_end
  250.         do
  251.         {
  252.             #emit LOAD.I
  253.             #emit PUSH.pri
  254.             arg_end -= BYTES_PER_CELL;
  255.             #emit LOAD.S.pri    arg_end
  256.         }
  257.         while(arg_end > arg_start);
  258.  
  259.         #emit PUSH.S            fstring
  260.         #emit PUSH.C            144
  261.         #emit PUSH.ADR          message
  262.  
  263.         n += BYTES_PER_CELL * 3;
  264.         #emit PUSH.S            n
  265.         #emit SYSREQ.C          format
  266.  
  267.         n += BYTES_PER_CELL;
  268.         #emit LCTRL             4
  269.         #emit LOAD.S.alt        n
  270.         #emit ADD
  271.         #emit SCTRL             4
  272.  
  273.         return SendClientMessageToAll(color, message);
  274.     } else
  275.         return SendClientMessageToAll(color, fstring);
  276. }
  277. #define SendClientMessage SendClientMessageEx
  278. #define SendClientMessageToAll SendClientMessageToAllEx
  279.  
  280. stock GetPlayerNameEx(playerid)
  281. {
  282.     new szName[MAX_PLAYER_NAME];
  283.     GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
  284.     return szName;
  285. }
  286. #define GetPlayerName GetPlayerNameEx
  287.  
  288. stock Float: GetDistanceBetweenPoints(Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2)
  289.     return VectorSize(x1 - x2, y1 - y2, z1 - z2);
  290.  
  291. stock Float: SQLiteGetResultFloatAssoc(DBResult: dbresult, field[])
  292. {
  293.     new szResult[16];
  294.     db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
  295.     return floatstr(szResult);
  296. }
  297.  
  298. stock SQLiteGetResultIntAssoc(DBResult: dbresult, field[])
  299. {
  300.     new szResult[16];
  301.     db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
  302.     return strval(szResult);
  303. }
  304.  
  305. stock LoadStaticVehiclesFromFile(const filename[])
  306. {
  307.     new File:file_ptr;
  308.     new line[256];
  309.     new var_from_line[64];
  310.     new vehicletype;
  311.     new Float:SpawnX;
  312.     new Float:SpawnY;
  313.     new Float:SpawnZ;
  314.     new Float:SpawnRot;
  315.     new Color1, Color2;
  316.     new index;
  317.     new vehicles_loaded;
  318.  
  319.     file_ptr = fopen(filename,filemode:io_read);
  320.     if(!file_ptr) return 0;
  321.  
  322.     vehicles_loaded = 0;
  323.  
  324.     while(fread(file_ptr,line,256) > 0)
  325.     {
  326.         index = 0;
  327.  
  328.         // Read type
  329.         index = token_by_delim(line,var_from_line,',',index);
  330.         if(index == (-1)) continue;
  331.         vehicletype = strval(var_from_line);
  332.         if(vehicletype < 400 || vehicletype > 611) continue;
  333.  
  334.         // Read X, Y, Z, Rotation
  335.         index = token_by_delim(line,var_from_line,',',index+1);
  336.         if(index == (-1)) continue;
  337.         SpawnX = floatstr(var_from_line);
  338.  
  339.         index = token_by_delim(line,var_from_line,',',index+1);
  340.         if(index == (-1)) continue;
  341.         SpawnY = floatstr(var_from_line);
  342.  
  343.         index = token_by_delim(line,var_from_line,',',index+1);
  344.         if(index == (-1)) continue;
  345.         SpawnZ = floatstr(var_from_line);
  346.  
  347.         index = token_by_delim(line,var_from_line,',',index+1);
  348.         if(index == (-1)) continue;
  349.         SpawnRot = floatstr(var_from_line);
  350.  
  351.         // Read Color1, Color2
  352.         index = token_by_delim(line,var_from_line,',',index+1);
  353.         if(index == (-1)) continue;
  354.         Color1 = strval(var_from_line);
  355.  
  356.         index = token_by_delim(line,var_from_line,';',index+1);
  357.         Color2 = strval(var_from_line);
  358.  
  359.         //printf("%d,%.2f,%.2f,%.2f,%.4f,%d,%d",vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2);
  360.  
  361.         AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ,SpawnRot,Color1,Color2,(30*60)); // respawn 30 minutes
  362.  
  363.         /*new numplate_test[32+1];
  364.         format(numplate_test,32,"GRLC{44AA33}%d",vid);
  365.         SetVehicleNumberPlate(vid, numplate_test);*/
  366.  
  367.         vehicles_loaded++;
  368.     }
  369.  
  370.     fclose(file_ptr);
  371.     printf("Loaded %d vehicles from: %s",vehicles_loaded,filename);
  372.     return vehicles_loaded;
  373. }
  374.  
  375. stock token_by_delim(const string[], return_str[], delim, start_index)
  376. {
  377.     new x=0;
  378.     while(string[start_index] != EOS && string[start_index] != delim) {
  379.         return_str[x] = string[start_index];
  380.         x++;
  381.         start_index++;
  382.     }
  383.     return_str[x] = EOS;
  384.     if(string[start_index] == EOS) start_index = (-1);
  385.     return start_index;
  386. }
  387.  
  388.  
  389. //-------------------// CALLBACKS, PUBLICS...
  390.  
  391. public OnGameModeInit()
  392. {
  393.  
  394.     if(fexist(DATA_BASE_PATH))
  395.     {
  396.         DATA_BASE = db_open(DATA_BASE_PATH);
  397.         print("SQLite OK! banco de dados carregado com sucesso!");
  398.     }
  399.     else
  400.     {
  401.         print("SQLite ERRO! bando de dados do servidor não foi encontrado. Fechando...");
  402.         SendRconCommand("Exit");
  403.     }
  404.  
  405.     SetGameModeText("Gangues of L.S.");
  406.     ManualVehicleEngineAndLights();
  407.  
  408.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  409.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  410.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  411.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  412.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  413.     AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  414.     return 1;
  415. }
  416.  
  417. public OnGameModeExit()
  418. {
  419.     // Fechar bando de dados...
  420.     db_close(DATA_BASE);
  421.     return 1;
  422. }
  423.  
  424. public LoadVehicles()
  425. {
  426.     // Veiculos públicos
  427.     LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
  428.     LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
  429.     LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
  430.     LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
  431.  
  432.     new szString[100],
  433.         DBResult:ResultQuery;
  434.  
  435.     format(szString, sizeof szString, "SELECT * FROM Vehicles");
  436.     ResultQuery = db_query(DATA_BASE, szString);
  437.     if(db_num_rows(ResultQuery))
  438.     {
  439.         for(new i = 0; i < db_num_rows(ResultQuery); i++)
  440.         {
  441.             new vehid;
  442.             vehid = SQLiteGetResultIntAssoc(ResultQuery, "ID");
  443.             db_get_field_assoc(ResultQuery, "Owner", dB_VEHICLES[vehid][dB_VEHICLE_OWNER], 24);
  444.             db_get_field_assoc(ResultQuery, "Plate", dB_VEHICLES[vehid][dB_VEHICLE_PLATE], 10);
  445.             dB_VEHICLES[vehid][dB_VEHICLE_OID] = SQLiteGetResultIntAssoc(ResultQuery, "OID");
  446.             dB_VEHICLES[vehid][dB_VEHICLE_GID] = SQLiteGetResultIntAssoc(ResultQuery, "GID");
  447.             dB_VEHICLES[vehid][dB_VEHICLE_MODEL] = SQLiteGetResultIntAssoc(ResultQuery, "Model");
  448.             dB_VEHICLES[vehid][dB_VEHICLE_SPOILER] = SQLiteGetResultIntAssoc(ResultQuery, "Spoiler");
  449.             dB_VEHICLES[vehid][dB_VEHICLE_HOOD] = SQLiteGetResultIntAssoc(ResultQuery, "Hood");
  450.             dB_VEHICLES[vehid][dB_VEHICLE_ROOF] = SQLiteGetResultIntAssoc(ResultQuery, "Roof");
  451.             dB_VEHICLES[vehid][dB_VEHICLE_SIDESKIRT] = SQLiteGetResultIntAssoc(ResultQuery, "Sideskirt");
  452.             dB_VEHICLES[vehid][dB_VEHICLE_LAMPS] = SQLiteGetResultIntAssoc(ResultQuery, "Lamps");
  453.             dB_VEHICLES[vehid][dB_VEHICLE_NITRO] = SQLiteGetResultIntAssoc(ResultQuery, "Nitro");
  454.             dB_VEHICLES[vehid][dB_VEHICLE_EXHAUST] = SQLiteGetResultIntAssoc(ResultQuery, "Exhaust");
  455.             dB_VEHICLES[vehid][dB_VEHICLE_WHEELS] = SQLiteGetResultIntAssoc(ResultQuery, "Wheels");
  456.             dB_VEHICLES[vehid][dB_VEHICLE_STEREO] = SQLiteGetResultIntAssoc(ResultQuery, "Stereo");
  457.             dB_VEHICLES[vehid][dB_VEHICLE_HYDRAULICS] = SQLiteGetResultIntAssoc(ResultQuery, "Hydraulics");
  458.             dB_VEHICLES[vehid][dB_VEHICLE_FB] = SQLiteGetResultIntAssoc(ResultQuery, "FB");
  459.             dB_VEHICLES[vehid][dB_VEHICLE_RB] = SQLiteGetResultIntAssoc(ResultQuery, "RB");
  460.             dB_VEHICLES[vehid][dB_VEHICLE_VR] = SQLiteGetResultIntAssoc(ResultQuery, "VR");
  461.             dB_VEHICLES[vehid][dB_VEHICLE_VL] = SQLiteGetResultIntAssoc(ResultQuery, "VL");
  462.             dB_VEHICLES[vehid][dB_VEHICLE_X] = SQLiteGetResultIntAssoc(ResultQuery, "PosX");
  463.             dB_VEHICLES[vehid][dB_VEHICLE_Y] = SQLiteGetResultIntAssoc(ResultQuery, "PosY");
  464.             dB_VEHICLES[vehid][dB_VEHICLE_Z] = SQLiteGetResultIntAssoc(ResultQuery, "PosZ");
  465.             dB_VEHICLES[vehid][dB_VEHICLE_A] = SQLiteGetResultIntAssoc(ResultQuery, "PosA");
  466.             dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB] = SQLiteGetResultIntAssoc(ResultQuery, "Paintjob");
  467.             dB_VEHICLES[vehid][dB_VEHICLE_COLOR1] = SQLiteGetResultIntAssoc(ResultQuery, "Color1");
  468.             dB_VEHICLES[vehid][dB_VEHICLE_COLOR2] = SQLiteGetResultIntAssoc(ResultQuery, "Color2");
  469.             dB_VEHICLES[vehid][dB_VEHICLE_TIRESARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "TiresArmour");
  470.             dB_VEHICLES[vehid][dB_VEHICLE_DOORSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "DoorsArmour");
  471.             dB_VEHICLES[vehid][dB_VEHICLE_PANELSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "PanelsArmour");
  472.             dB_VEHICLES[vehid][dB_VEHICLE_LIGHTSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "LightsArmour");
  473.             dB_VEHICLES[vehid][dB_VEHICLE_HEALTH] = SQLiteGetResultFloatAssoc(ResultQuery, "Health");
  474.  
  475.             dB_VEHICLE_CREATE[vehid] = CreateVehicle(dB_VEHICLES[vehid][dB_VEHICLE_MODEL], dB_VEHICLES[vehid][dB_VEHICLE_X], dB_VEHICLES[vehid][dB_VEHICLE_Y], dB_VEHICLES[vehid][dB_VEHICLE_Z], dB_VEHICLES[vehid][dB_VEHICLE_A], dB_VEHICLES[vehid][dB_VEHICLE_COLOR1], dB_VEHICLES[vehid][dB_VEHICLE_COLOR2], -1);
  476.             if(dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB] != -1) ChangeVehiclePaintjob(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB]);
  477.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_SPOILER]);
  478.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HOOD]);
  479.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_ROOF]);
  480.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_SIDESKIRT]);
  481.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_LAMPS]);
  482.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_NITRO]);
  483.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_EXHAUST]);
  484.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_WHEELS]);
  485.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_STEREO]);
  486.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HYDRAULICS]);
  487.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_FB]);
  488.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_RB]);
  489.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_VR]);
  490.             AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_VL]);
  491.  
  492.             dB_VEHICLES[vehid][dB_VEHICLE_LOCKED] = true;
  493.             SetVehicleHealth(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HEALTH]);
  494.  
  495.             SetVehicleNumberPlate(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_OWNER]);
  496.             SetVehicleParamsForPlayer(dB_VEHICLE_CREATE[vehid], i, 0, 0);
  497.             SetVehicleParamsEx(dB_VEHICLE_CREATE[vehid], 0, 0, 0, 0, 0, 0, 0);
  498.             dB_VEHICLES[vehid][dB_VEHICLE_STATUS] = 0;
  499.             if(!db_next_row(ResultQuery))
  500.                 break;
  501.             //SetVehicleToRespawn(i);
  502.         }
  503.     }
  504.     else print("\nSQLite INFO! (LoadVehicles) não há veículos inseridos no banco de dados.\n");
  505. }
  506.  
  507. public OnPlayerRequestClass(playerid, classid)
  508. {
  509.  
  510.     if(PLAYER_INFO[playerid][LOGGED])
  511.         SpawnPlayer(playerid);
  512.     else
  513.     {
  514.         new RANDON_SKIN = random(3);
  515.         SetPlayerFacingAngle(playerid, 180.0);
  516.         SetPlayerPos(playerid, 1936.5768,1400.4121,9.2578);
  517.         SetPlayerCameraPos(playerid, 1937.3613,1398.9027,9.2578);
  518.         SetPlayerCameraLookAt(playerid, 1937.3220,1401.9604,9.2578,  CAMERA_CUT);
  519.         if(classid == 0) // POLICE
  520.         {
  521.             SetPlayerSkin(playerid, POLICE_SKINS[RANDON_SKIN]);
  522.             PLAYER_INFO[playerid][P_GANGID] = GANG_POLICE_ID;
  523.             SendClientMessage(playerid, COLOR_WHITE, "classid: %d gang: %d", classid, GANG_POLICE_ID);
  524.         }
  525.         else if(classid == 1) // GROVE
  526.         {
  527.             SetPlayerSkin(playerid, GROVE_SKINS[RANDON_SKIN]);
  528.             PLAYER_INFO[playerid][P_GANGID] = GANG_GROVE_ID;
  529.         }
  530.         else if(classid == 2) // BALLAS
  531.         {
  532.             SetPlayerSkin(playerid, BALLAS_SKINS[RANDON_SKIN]);
  533.             PLAYER_INFO[playerid][P_GANGID] = GANG_BALLAS_ID;
  534.         }
  535.         else if(classid == 3) // VAGOS
  536.         {
  537.             SetPlayerSkin(playerid, VAGOS_SKINS[RANDON_SKIN]);
  538.             PLAYER_INFO[playerid][P_GANGID] = GANG_VAGOS_ID;
  539.         }
  540.         else if(classid == 4) // AZTECAS
  541.         {
  542.             SetPlayerSkin(playerid, AZTECAS_SKINS[RANDON_SKIN]);
  543.             PLAYER_INFO[playerid][P_GANGID] = GANG_AZTECAS_ID;
  544.         }
  545.         else if(classid == 5) // DA NANG BOYZ
  546.         {
  547.             SetPlayerSkin(playerid, NBOYS_SKINS[RANDON_SKIN]);
  548.             PLAYER_INFO[playerid][P_GANGID] = GANG_NBOYS_ID;
  549.         }
  550.     }
  551.     return 1;
  552. }
  553.  
  554. public OnPlayerConnect(playerid)
  555. {
  556.     /*
  557.     PLAYER_INFO[playerid][REGISTERED] = false;
  558.     PLAYER_INFO[playerid][LOGGED] = false;
  559.  
  560.     new szString[100],
  561.         DBResult:QueryResult;
  562.  
  563.     format(szString, 128, "SELECT * FROM Users WHERE Nick = '%s'", GetPlayerName(playerid));
  564.     QueryResult = db_query(DATA_BASE, szString);
  565.     if(db_num_rows(QueryResult))
  566.     {
  567.         PLAYER_INFO[playerid][REGISTERED] = true;
  568.         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, DIALOG_TITLE, "CONTA CADASTRADA\n\nINFORME A SENHA ABAIXO:", "LOGAR", "SAIR");
  569.     }
  570.     else
  571.     {
  572.         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, DIALOG_TITLE, "CONTA NÃO CADASTRADA\n\nDIGITE UMA SENHA PARA CADASTRAR:", "CADASTRAR", "SAIR");
  573.     }*/
  574.     return 1;
  575. }
  576.  
  577. public OnPlayerDisconnect(playerid, reason)
  578. {
  579.     return 1;
  580. }
  581.  
  582. public OnPlayerSpawn(playerid)
  583. {
  584.     return 1;
  585. }
  586.  
  587. public OnPlayerDeath(playerid, killerid, reason)
  588. {
  589.     return 1;
  590. }
  591.  
  592. public OnVehicleSpawn(vehicleid)
  593. {
  594.     SetVehiclePos(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_X], dB_VEHICLES[vehicleid][dB_VEHICLE_Y], dB_VEHICLES[vehicleid][dB_VEHICLE_Z]);
  595.     SetVehicleZAngle(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_A]);
  596.     ChangeVehicleColor(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR1], dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR2]);
  597.     ChangeVehiclePaintjob(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_PAINTJOB]);
  598.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_SPOILER]);
  599.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HOOD]);
  600.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_ROOF]);
  601.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_SIDESKIRT]);
  602.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_LAMPS]);
  603.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_NITRO]);
  604.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_EXHAUST]);
  605.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_WHEELS]);
  606.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_STEREO]);
  607.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HYDRAULICS]);
  608.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_FB]);
  609.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_RB]);
  610.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_VR]);
  611.     AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_VL]);
  612.     //SetVehicleNumberPlate(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_PLATE]);
  613.     dB_VEHICLES[vehicleid][dB_VEHICLE_STATUS] = 0;
  614.     SetVehicleParamsEx(vehicleid, 0, 0, 0, 1, 0, 0, 0);
  615.     return 1;
  616. }
  617.  
  618. public OnVehicleDeath(vehicleid, killerid)
  619. {
  620.     return 1;
  621. }
  622.  
  623. public OnPlayerText(playerid, text[])
  624. {
  625.     return 1;
  626. }
  627.  
  628. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  629. {
  630.     new STR_[50];
  631.     format(STR_, sizeof STR_, "~w~%s", VEHICLE_NAMES[GetVehicleModel(GetPlayerVehicleID(playerid)) - 400]);
  632.     GameTextForPlayer(playerid,  STR_, 3000, 1);
  633.     return 1;
  634. }
  635.  
  636. public OnPlayerExitVehicle(playerid, vehicleid)
  637. {
  638.     return 1;
  639. }
  640.  
  641. public OnPlayerStateChange(playerid, newstate, oldstate)
  642. {
  643.     /*
  644.         SQLite VEHICLES
  645.             Posição do veículo
  646.     */
  647.     if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
  648.     {
  649.         new VehicleID = GetPlayerVehicleID(playerid), szString[200];
  650.         for(new i = 0; i < MAX_VEHICLE; i++)
  651.         {
  652.             if(VehicleID == dB_VEHICLE_CREATE[i])
  653.             {
  654.                 format(szString, sizeof szString, "UPDATE Vehicles SET PosX = %f, PosY = %f, PosZ = %f, posA = %f WHERE ID = %d", dB_VEHICLES[VehicleID][dB_VEHICLE_X], dB_VEHICLES[VehicleID][dB_VEHICLE_Y], dB_VEHICLES[VehicleID][dB_VEHICLE_Z], dB_VEHICLES[VehicleID][dB_VEHICLE_A], dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  655.                 db_query(DATA_BASE, szString);
  656.                 if(!db_changes(DATA_BASE))
  657.                 {
  658.                     SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados (parte: StateChange). Contate um administrador.");
  659.                     printf("SQLite ERROR! (OnPlayerStateChange) Posição do veículo: %d (db-id:%d) não pode ser salvo", VehicleID, dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  660.                 }
  661.                 break;
  662.             }
  663.         }
  664.  
  665.     }
  666.     return 1;
  667. }
  668.  
  669. public OnVehicleDamageStatusUpdate(vehicleid, playerid)
  670. {
  671.     #pragma unused playerid
  672.     new panels, doors, lights, tires, szString[200];
  673.     GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  674.     if(dB_VEHICLES[vehicleid][dB_VEHICLE_DOORSARMOUR] == 1) doors = encode_doors(0, 0, 0, 0, 0, 0); // fix all doors //fell off - (4, 4, 4, 4, 0, 0)
  675.     if(dB_VEHICLES[vehicleid][dB_VEHICLE_PANELSARMOUR] == 1) panels = encode_panels(0, 0, 0, 0, 0, 0, 0); // fix all panels //fell off - (3, 3, 3, 3, 3, 3, 3)
  676.     if(dB_VEHICLES[vehicleid][dB_VEHICLE_TIRESARMOUR] == 1) tires = encode_tires(0, 0, 0, 0); // fix all tires
  677.     if(dB_VEHICLES[vehicleid][dB_VEHICLE_LIGHTSARMOUR] == 1) lights = encode_lights(0, 0, 0, 0); // fix all lights
  678.     UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  679.     /*
  680.         SQLite VEHICLES
  681.             Health, DoorsArmour, TiresArmour, BonnetArmour e LightsArmour
  682.     */
  683.     GetVehicleHealth(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HEALTH]);
  684.     format(szString, sizeof szString, "UPDATE Vehicles SET DoorsArmour = %d, LightsArmour = %f, PanelsArmour = %f, TiresArmour = %f, Health = %f WHERE ID = %d", dB_VEHICLES[vehicleid][dB_VEHICLE_DOORSARMOUR], dB_VEHICLES[vehicleid][dB_VEHICLE_LIGHTSARMOUR], dB_VEHICLES[vehicleid][dB_VEHICLE_PANELSARMOUR], dB_VEHICLES[vehicleid][dB_VEHICLE_TIRESARMOUR], dB_VEHICLES[vehicleid][dB_VEHICLE_HEALTH], dB_VEHICLES[vehicleid][dB_VEHICLE_ID]);
  685.     db_query(DATA_BASE, szString);
  686.     if(!db_changes(DATA_BASE))
  687.         printf("SQLite ERROR! (OnVehicleDamageStatusUpdate) Vehicleid: %d, Player: %s", vehicleid, GetPlayerName(playerid));
  688.     return 1;
  689. }
  690.  
  691. encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
  692. encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
  693. {
  694.     return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
  695. }
  696. encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
  697. {
  698.     #pragma unused behind_driver_door
  699.     #pragma unused behind_passenger_door
  700.     return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
  701. }
  702. encode_lights(light1, light2, light3, light4)
  703. {
  704.     return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
  705. }
  706.  
  707. public OnPlayerEnterCheckpoint(playerid)
  708. {
  709.     return 1;
  710. }
  711.  
  712. public OnPlayerLeaveCheckpoint(playerid)
  713. {
  714.     return 1;
  715. }
  716.  
  717. public OnPlayerEnterRaceCheckpoint(playerid)
  718. {
  719.     return 1;
  720. }
  721.  
  722. public OnPlayerLeaveRaceCheckpoint(playerid)
  723. {
  724.     return 1;
  725. }
  726.  
  727. public OnRconCommand(cmd[])
  728. {
  729.     return 1;
  730. }
  731.  
  732. public OnPlayerRequestSpawn(playerid)
  733. {
  734.     return 1;
  735. }
  736.  
  737. public OnObjectMoved(objectid)
  738. {
  739.     return 1;
  740. }
  741.  
  742. public OnPlayerObjectMoved(playerid, objectid)
  743. {
  744.     return 1;
  745. }
  746.  
  747. public OnPlayerPickUpPickup(playerid, pickupid)
  748. {
  749.     return 1;
  750. }
  751.  
  752. public OnVehicleMod(playerid, vehicleid, componentid)
  753. {
  754.     if(GetPlayerInterior(playerid) == 0)
  755.     {
  756.         SendClientMessageToAll(COLOR_RED, "AntiCheater: veículo %d equipado com componente %d pelo jogador %s fora da garagem de tuning!", vehicleid, componentid, GetPlayerName(playerid));
  757.     }
  758.     else
  759.     {
  760.         SendClientMessage(playerid, COLOR_GREEN, "Server: veículo %d equipado.", vehicleid);
  761.         PLAYER_INFO[playerid][P_VEHMODDED] = true; // Confirmar que o jogador tunou o veículo
  762.     }
  763.     return 1;
  764. }
  765.  
  766. public OnEnterExitModShop(playerid, enterexit, interiorid)
  767. {
  768.     if(enterexit == 1)
  769.     {
  770.         printf("LOG! %s entrou em uma garagem de tuning!", GetPlayerName(playerid));
  771.         SendClientMessage(playerid, COLOR_WHITE, "Carlos (dono da oficina): {999999} bem vindo, meu chapa! Escolhas suas peças e tune a sua caranga!");
  772.     }
  773.     else if(enterexit == 0)
  774.     {
  775.         printf("LOG! %s saiu de uma garagem de tuning!", GetPlayerName(playerid));
  776.         // Confirmar se o jogador tunou mesmo o carro. Caso use cheater de tunar carro, ele não salva os componentes...
  777.         // A variável P_VEHMODDED fica false...
  778.         if(PLAYER_INFO[playerid][P_VEHMODDED])
  779.         {
  780.             printf("LOG! %s saiu de uma garagem de tuning e tunou seu carro!", GetPlayerName(playerid));
  781.             SendClientMessage(playerid, COLOR_WHITE, "Carlos (dono da oficina): {999999} Gostou das peças, mano? Volte sempre que precisar tunar seu carro!");
  782.             if(IsPlayerInAnyVehicle(playerid))
  783.             {
  784.                 new VehicleID = GetPlayerVehicleID(playerid),
  785.                           szString[200];
  786.  
  787.                 dB_VEHICLES[VehicleID][dB_VEHICLE_SPOILER] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SPOILER);
  788.                 dB_VEHICLES[VehicleID][dB_VEHICLE_HOOD] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HOOD);
  789.                 dB_VEHICLES[VehicleID][dB_VEHICLE_ROOF] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_ROOF);
  790.                 dB_VEHICLES[VehicleID][dB_VEHICLE_SIDESKIRT] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SIDESKIRT);
  791.                 dB_VEHICLES[VehicleID][dB_VEHICLE_LAMPS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_LAMPS);
  792.                 dB_VEHICLES[VehicleID][dB_VEHICLE_NITRO] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_NITRO);
  793.                 dB_VEHICLES[VehicleID][dB_VEHICLE_EXHAUST] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_EXHAUST);
  794.                 dB_VEHICLES[VehicleID][dB_VEHICLE_WHEELS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_WHEELS);
  795.                 dB_VEHICLES[VehicleID][dB_VEHICLE_STEREO] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_STEREO);
  796.                 dB_VEHICLES[VehicleID][dB_VEHICLE_HYDRAULICS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HYDRAULICS);
  797.                 dB_VEHICLES[VehicleID][dB_VEHICLE_FB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_FRONT_BUMPER);
  798.                 dB_VEHICLES[VehicleID][dB_VEHICLE_RB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_REAR_BUMPER);
  799.                 dB_VEHICLES[VehicleID][dB_VEHICLE_VR] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_RIGHT);
  800.                 dB_VEHICLES[VehicleID][dB_VEHICLE_VL] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_LEFT);
  801.  
  802.                 // Só salva os componentes de tuning...
  803.                 format(szString, sizeof szString, "UPDATE Vehicles SET Spoiler = %d, Hood = %d, Roof = %d, Sideskirt = %d WHERE ID = %d",
  804.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_SPOILER],
  805.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_HOOD],
  806.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ROOF],
  807.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_SIDESKIRT],
  808.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  809.                 db_query(DATA_BASE, szString);
  810.                 if(!db_changes(DATA_BASE))
  811.                     print("SQLite ERROR! (OnEnterExitModShop) 1 query: update não pode ser feito.");
  812.                 format(szString, sizeof szString, "UPDATE Vehicles SET \
  813.                                                    Lamps = %d, \
  814.                                                    Nitro = %d, \
  815.                                                    Exhaust = %d, \
  816.                                                    Wheels = %d \
  817.                                                    WHERE ID = %d",
  818.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_LAMPS],
  819.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_NITRO],
  820.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_EXHAUST],
  821.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_WHEELS],
  822.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  823.                 db_query(DATA_BASE, szString);
  824.                 if(!db_changes(DATA_BASE))
  825.                     print("SQLite ERROR! (OnEnterExitModShop) 2 query: update não pode ser feito.");
  826.                 format(szString, sizeof szString, "UPDATE Vehicles SET \
  827.                                                    Stereo = %d, \
  828.                                                    Hydraulics = %d, \
  829.                                                    FB = %d, \
  830.                                                    RB = %d \
  831.                                                    WHERE ID = %d",
  832.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_STEREO],
  833.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_HYDRAULICS],
  834.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_FB],
  835.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_RB],
  836.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  837.                 db_query(DATA_BASE, szString);
  838.                 if(!db_changes(DATA_BASE))
  839.                     print("SQLite ERROR! (OnEnterExitModShop) 3 query: update não pode ser feito.");
  840.                 format(szString, sizeof szString, "UPDATE Vehicles SET \
  841.                                                    VR = %d, \
  842.                                                    VL = %d, \
  843.                                                    WHERE ID = %d",
  844.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_VR],
  845.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_VL],
  846.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  847.                 db_query(DATA_BASE, szString);
  848.                 if(!db_changes(DATA_BASE))
  849.                     print("SQLite ERROR! (OnEnterExitModShop) 4 query: update não pode ser feito.");
  850.                 format(szString, sizeof szString, "UPDATE Vehicles SET \
  851.                                                    dB_VEHICLE_COLOR1 = %d, \
  852.                                                    dB_VEHICLE_COLOR2 = %d, \
  853.                                                    dB_VEHICLE_PAINTJOB = %d, \
  854.                                                    WHERE ID = %d",
  855.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_COLOR1],
  856.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_COLOR2],
  857.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_PAINTJOB],
  858.                                                    dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  859.                 db_query(DATA_BASE, szString);
  860.                 if(!db_changes(DATA_BASE))
  861.                     print("SQLite ERROR! (OnEnterExitModShop) 5 query: update não pode ser feito.");
  862.             }
  863.         } else SendClientMessage(playerid, COLOR_WHITE, "Carlos (dono da oficina): {999999} E ai, não gostou de nada hoje? Volte outro dia para comprar peças!");
  864.     }
  865.     return true;
  866. }
  867.  
  868. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  869. {
  870.     dB_VEHICLES[vehicleid][dB_VEHICLE_PAINTJOB] = paintjobid;
  871.     return 1;
  872. }
  873.  
  874. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  875. {
  876.     dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR1] = color1;
  877.     dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR2] = color2;
  878.     return 1;
  879. }
  880.  
  881. public OnPlayerSelectedMenuRow(playerid, row)
  882. {
  883.     return 1;
  884. }
  885.  
  886. public OnPlayerExitedMenu(playerid)
  887. {
  888.     return 1;
  889. }
  890.  
  891. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  892. {
  893.     return 1;
  894. }
  895.  
  896. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  897. {
  898.     return 1;
  899. }
  900.  
  901. public OnPlayerUpdate(playerid)
  902. {
  903.     return 1;
  904. }
  905.  
  906.  
  907. public OnPlayerStreamIn(playerid, forplayerid)
  908. {
  909.     if(PLAYER_INFO[playerid][P_GANGID] == PLAYER_INFO[playerid][P_GANGID])
  910.         SetPlayerMarkerForPlayer(playerid, forplayerid, GetPlayerColor(playerid));
  911.     else
  912.         SetPlayerMarkerForPlayer(playerid, forplayerid, GetPlayerColor(forplayerid));
  913.     return 1;
  914. }
  915.  
  916.  
  917. public OnPlayerStreamOut(playerid, forplayerid)
  918. {
  919.     if(PLAYER_INFO[playerid][P_GANGID] != PLAYER_INFO[playerid][P_GANGID])
  920.         SetPlayerMarkerForPlayer(playerid, forplayerid, (GetPlayerColor(forplayerid)&0xFFFFFF00));
  921.     return 1;
  922. }
  923.  
  924.  
  925. public OnVehicleStreamIn(vehicleid, forplayerid)
  926. {
  927.     if(dB_VEHICLES[vehicleid][dB_VEHICLE_GID] != -1)
  928.     {
  929.         if(dB_VEHICLES[vehicleid][dB_VEHICLE_GID] == PLAYER_INFO[forplayerid][P_GANGID])
  930.             SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  931.         else
  932.             SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
  933.     }
  934.     else
  935.     {
  936.         if(dB_VEHICLES[vehicleid][dB_VEHICLE_OID] == PLAYER_INFO[forplayerid][P_ID])
  937.             SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  938.         else
  939.         {
  940.             if(dB_VEHICLES[vehicleid][dB_VEHICLE_LOCKED] == true) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
  941.             else if(dB_VEHICLES[vehicleid][dB_VEHICLE_LOCKED] == false) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  942.         }
  943.     }
  944.     return 1;
  945. }
  946.  
  947. public OnVehicleStreamOut(vehicleid, forplayerid)
  948. {
  949.     return 1;
  950. }
  951.  
  952. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  953. {
  954.     return 1;
  955. }
  956.  
  957. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  958. {
  959.     return 1;
  960. }
  961.  
  962.  
  963. //---------------------------// COMANDOS
  964.  
  965. zcmd:destrancar(playerid, params[])
  966. {
  967.     if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
  968.     else if(dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_OID] != PLAYER_INFO[playerid][P_ID]) SendClientMessage(playerid, COLOR_RED, "Erro: esse carro não é seu para destrancá-lo!");
  969.     {
  970.         SendClientMessage(playerid, COLOR_GOLD, "Server: veículo destrancado!");
  971.         dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_LOCKED] = false;
  972.         foreach(new i : Player)
  973.         {
  974.             if(i != playerid)
  975.             {
  976.                 SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 0);
  977.             }
  978.         }
  979.     }
  980.     return true;
  981. }
  982.  
  983. zcmd:trancar(playerid, params[])
  984. {
  985.     if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
  986.     else if(dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_OID] != PLAYER_INFO[playerid][P_ID]) SendClientMessage(playerid, COLOR_RED, "Erro: esse carro não é seu para trancá-lo!");
  987.     {
  988.         SendClientMessage(playerid, COLOR_GOLD, "Server: veículo trancado!");
  989.         dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_LOCKED] = true;
  990.         foreach(new i : Player)
  991.         {
  992.             if(i != playerid)
  993.             {
  994.                 SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 1);
  995.             }
  996.         }
  997.     }
  998.     return true;
  999. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement