Advertisement
RogerGomesCosta

Untitled

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