Advertisement
RogerGomesCosta

Untitled

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