Advertisement
RogerGomesCosta

Untitled

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