Advertisement
RogerGomesCosta

Untitled

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