Advertisement
RogerGomesCosta

Untitled

Aug 2nd, 2014
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.64 KB | None | 0 0
  1. //--------------------// INCLUDES
  2. #include <a_samp>
  3.  
  4. //--------------------// DEFINES
  5. #define MAX_PLAYER 100
  6. #define MAX_VIP_VEHICLE 500
  7.  
  8. #define GANG_POLICE_ID 1
  9. #define GANG_GROVE_ID 2
  10. #define GANG_BALLAS_ID 3
  11. #define GANG_VAGOS_ID 4
  12.  
  13. #define COLOR_RED 0xBB0000FF
  14. #define COLOR_WHITE 0xFFFFFFFF
  15. #define COLOR_GOLD 0xFFD700FF
  16. #define COLOR_BLUE 0x2587CEFF
  17. #define COLOR_GRAY 0xDDDDDDFF
  18. #define COLOR_GREEN 0x366718FF
  19. #define COLOR_RED 0xBB0000FF
  20. #define COLOR_PURPLE 0x895BD9FF
  21. #define COLOR_YELLOW 0xFAA505FF
  22.  
  23.  
  24. #define DATA_BASE_PATH "GLS/GLS.db"
  25.  
  26. //--------------------// VARIABLES, ETC...
  27.  
  28. enum PLAYER_INFO_ENUM
  29. {
  30. bool:REGISTERED,
  31. bool:LOGGED,
  32. bool:P_VEHMODDED,
  33. P_NAME[24],
  34. P_WEAPON[13],
  35. P_AMMO[13],
  36. Float: PX,
  37. Float: PY,
  38. Float: PZ,
  39. Float: PA,
  40. P_SKIN,
  41. P_MONEY,
  42. P_INTERIOR,
  43. P_GPS,
  44. P_DM,
  45. P_RACEID,
  46. P_TUTORIAL,
  47. P_ID,
  48. }
  49. new PLAYER_INFO[MAX_PLAYER][PLAYER_INFO_ENUM];
  50.  
  51.  
  52. enum dB_VEHICLE_ENUM
  53. {
  54. bool:dB_VEHICLE_LOCKED,
  55. dB_VEHICLE_OWNER[24], // Nome do dono.
  56. dB_VEHICLE_NAME[50], // Nome do veículo.
  57. dB_VEHICLE_KEYS[100],
  58. dB_VEHICLE_PLATE[10], // Nome da placa.
  59. Float: dB_VEHICLE_X, // Pos. X.
  60. Float: dB_VEHICLE_Y, // Pos. Y.
  61. Float: dB_VEHICLE_Z, // Pos. Z.
  62. Float: dB_VEHICLE_A, // Pos. A.
  63. Float: dB_VEHICLE_HEALTH, // Life.
  64. Text3D:dB_VEHICLE_TEXT,
  65. dB_VEHICLE_ID, // ID da tabela Vehicles, do dataBase.
  66. dB_VEHICLE_MODEL, // Modelo.
  67. dB_VEHICLE_OID, // ID do dono do veículo da tabela Users, do dataBase.
  68. dB_VEHICLE_SPOILER, // Componentes...
  69. dB_VEHICLE_HOOD,
  70. dB_VEHICLE_ROOF,
  71. dB_VEHICLE_SIDESKIRT,
  72. dB_VEHICLE_LAMPS,
  73. dB_VEHICLE_NITRO,
  74. dB_VEHICLE_EXHAUST,
  75. dB_VEHICLE_WHEELS,
  76. dB_VEHICLE_STEREO,
  77. dB_VEHICLE_HYDRAULICS,
  78. dB_VEHICLE_FB,
  79. dB_VEHICLE_RB,
  80. dB_VEHICLE_VR,
  81. dB_VEHICLE_VL, // Fim dos componentes.
  82. dB_VEHICLE_COLOR1,
  83. dB_VEHICLE_COLOR2,
  84. dB_VEHICLE_PAINTJOB,
  85. dB_VEHICLE_STATUS,
  86. dB_VEHICLE_DOORSARMOUR, // Blindagem...
  87. dB_VEHICLE_TIRESARMOUR,
  88. dB_VEHICLE_LIGHTSARMOUR,
  89. dB_VEHICLE_PANELSARMOUR, // Fim das blindagens...
  90.  
  91. }
  92.  
  93. new dB_VEHICLES[MAX_VEHICLE][dB_VEHICLE_ENUM];
  94. new dB_VEHICLE_CREATE[MAX_VEHICLE] = {-1, ...};
  95.  
  96. static GROVE_SKINS[3] = { 105, 106, 107 };
  97. static BALLAS_SKINS[3] = { 102, 103, 104 };
  98. static VAGOS_SKINS[3] = { 108, 109, 110 };
  99. static AZTECAS_SKINS[3] = { 114, 115, 116 };
  100. static NBOYS_SKINS[3] = { 121, 122, 123 };
  101.  
  102.  
  103. new DB:DATA_BASE;
  104.  
  105.  
  106.  
  107. new VEHICLE_NAMES[212][] = {
  108. {"Landstalker"}, {"Bravura"}, {"Buffalo"}, {"Linerunner"}, {"Perrenial"}, {"Sentinel"}, {"Dumper"},
  109. {"Firetruck"}, {"Trashmaster"}, {"Stretch"}, {"Manana"}, {"Infernus"}, {"Voodoo"}, {"Pony"}, {"Mule"},
  110. {"Cheetah"}, {"Ambulance"}, {"Leviathan"}, {"Moonbeam"}, {"Esperanto"}, {"Taxi"}, {"Washington"},
  111. {"Bobcat"}, {"Mr Whoopee"}, {"BF Injection"}, {"Hunter"}, {"Premier"}, {"Enforcer"}, {"Securicar"},
  112. {"Banshee"}, {"Predator"}, {"Bus"}, {"Rhino"}, {"Barracks"}, {"Hotknife"}, {"Trailer 1"}, {"Previon"},
  113. {"Coach"}, {"Cabbie"}, {"Stallion"}, {"Rumpo"}, {"RC Bandit"}, {"Romero"}, {"Packer"}, {"Monster"},
  114. {"Admiral"}, {"Squalo"}, {"Seasparrow"}, {"Pizzaboy"}, {"Tram"}, {"Trailer 2"}, {"Turismo"},
  115. {"Speeder"}, {"Reefer"}, {"Tropic"}, {"Flatbed"}, {"Yankee"}, {"Caddy"}, {"Solair"}, {"Berkley's RC Van"},
  116. {"Skimmer"}, {"PCJ-600"}, {"Faggio"}, {"Freeway"}, {"RC Baron"}, {"RC Raider"}, {"Glendale"}, {"Oceanic"},
  117. {"Sanchez"}, {"Sparrow"}, {"Patriot"}, {"Quad"}, {"Coastguard"}, {"Dinghy"}, {"Hermes"}, {"Sabre"},
  118. {"Rustler"}, {"ZR-350"}, {"Walton"}, {"Regina"}, {"Comet"}, {"BMX"}, {"Burrito"}, {"Camper"}, {"Marquis"},
  119. {"Baggage"}, {"Dozer"}, {"Maverick"}, {"News Chopper"}, {"Rancher"}, {"FBI Rancher"}, {"Virgo"}, {"Greenwood"},
  120. {"Jetmax"}, {"Hotring"}, {"Sandking"}, {"Blista Compact"}, {"Police Maverick"}, {"Boxville"}, {"Benson"},
  121. {"Mesa"}, {"RC Goblin"}, {"Hotring Racer A"}, {"Hotring Racer B"}, {"Bloodring Banger"}, {"Rancher"},
  122. {"Super GT"}, {"Elegant"}, {"Journey"}, {"Bike"}, {"Mountain Bike"}, {"Beagle"}, {"Cropdust"}, {"Stunt"},
  123. {"Tanker"}, {"Roadtrain"}, {"Nebula"}, {"Majestic"}, {"Buccaneer"}, {"Shamal"}, {"Hydra"}, {"FCR-900"},
  124. {"NRG-500"}, {"HPV1000"}, {"Cement Truck"}, {"Tow Truck"}, {"Fortune"}, {"Cadrona"}, {"FBI Truck"},
  125. {"Willard"}, {"Forklift"}, {"Tractor"}, {"Combine"}, {"Feltzer"}, {"Remington"}, {"Slamvan"},
  126. {"Blade"}, {"Freight"}, {"Streak"}, {"Vortex"}, {"Vincent"}, {"Bullet"}, {"Clover"}, {"Sadler"},
  127. {"Firetruck LA"}, {"Hustler"}, {"Intruder"}, {"Primo"}, {"Cargobob"}, {"Tampa"}, {"Sunrise"}, {"Merit"},
  128. {"Utility"}, {"Nevada"}, {"Yosemite"}, {"Windsor"}, {"Monster A"}, {"Monster B"}, {"Uranus"}, {"Jester"},
  129. {"Sultan"}, {"Stratum"}, {"Elegy"}, {"Raindance"}, {"RC Tiger"}, {"Flash"}, {"Tahoma"}, {"Savanna"},
  130. {"Bandito"}, {"Freight Flat"}, {"Streak Carriage"}, {"Kart"}, {"Mower"}, {"Duneride"}, {"Sweeper"},
  131. {"Broadway"}, {"Tornado"}, {"AT-400"}, {"DFT-30"}, {"Huntley"}, {"Stafford"}, {"BF-400"}, {"Newsvan"},
  132. {"Tug"}, {"Trailer 3"}, {"Emperor"}, {"Wayfarer"}, {"Euros"}, {"Hotdog"}, {"Club"}, {"Freight Carriage"},
  133. {"Trailer 3"}, {"Andromada"}, {"Dodo"}, {"RC Cam"}, {"Launch"}, {"Police Car (LSPD)"}, {"Police Car (SFPD)"},
  134. {"Police Car (LVPD)"}, {"Police Ranger"}, {"Picador"}, {"S.W.A.T. Van"}, {"Alpha"}, {"Phoenix"}, {"Glendale"},
  135. {"Sadler"}, {"Luggage Trailer A"}, {"Luggage Trailer B"}, {"Stair Trailer"}, {"Boxville"}, {"Farm Plow"},
  136. {"Utility Trailer"}
  137. };
  138.  
  139. //--------------------// FORWARDS, NATIVES...
  140.  
  141.  
  142. main()
  143. {
  144. print("\n Gangs of Los Santos - Gamemode made by Roger Gomes Costa \n");
  145.  
  146. }
  147.  
  148.  
  149. //-------------------// STOCKS, NEW FUNCTIONS...
  150. stock GetPlayerNameEx(playerid)
  151. {
  152. new szName[MAX_PLAYER_NAME];
  153. GetPlayerName(playerid, szName, MAX_PLAYER_NAME);
  154. return szName;
  155. }
  156. #define GetPlayerName GetPlayerNameEx
  157.  
  158. stock Float: GetDistanceBetweenPoints(Float: x1, Float: y1, Float: z1, Float: x2, Float: y2, Float: z2)
  159. return VectorSize(x1 - x2, y1 - y2, z1 - z2);
  160.  
  161. stock Float: SQLiteGetResultFloatAssoc(DBResult: dbresult, field[])
  162. {
  163. new szResult[16];
  164. db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
  165. return floatstr(szResult);
  166. }
  167.  
  168. stock SQLiteGetResultIntAssoc(DBResult: dbresult, field[])
  169. {
  170. new szResult[16];
  171. db_get_field_assoc(dbresult, field, szResult, sizeof(szResult));
  172. return strval(szResult);
  173. }
  174.  
  175.  
  176. //-------------------// CALLBACKS, PUBLICS...
  177.  
  178. public OnGameModeInit()
  179. {
  180.  
  181. if(fexist(DATA_BASE_PATH))
  182. {
  183. DATA_BASE = db_open(DATA_BASE_PATH);
  184. print("SQLite OK! banco de dados carregado com sucesso!");
  185. }
  186. else
  187. {
  188. print("SQLite ERRO! bando de dados do servidor não foi encontrado. Fechando...");
  189. SendRconCommand("Exit");
  190. }
  191.  
  192. SetGameModeText("Gangues of L.S.");
  193. ManualVehicleEngineAndLights();
  194.  
  195. AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
  196. return 1;
  197. }
  198.  
  199. public OnGameModeExit()
  200. {
  201. // Fechar bando de dados...
  202. db_close(DATA_BASE);
  203. return 1;
  204. }
  205.  
  206. public LoadVehicles()
  207. {
  208. // Veiculos públicos
  209. LoadStaticVehiclesFromFile("vehicles/ls_law.txt");
  210. LoadStaticVehiclesFromFile("vehicles/ls_airport.txt");
  211. LoadStaticVehiclesFromFile("vehicles/ls_gen_inner.txt");
  212. LoadStaticVehiclesFromFile("vehicles/ls_gen_outer.txt");
  213.  
  214. new szString[100],
  215. DBResult:ResultQuery;
  216.  
  217. format(szString, sizeof szString, "SELECT * FROM Vehicles");
  218. ResultQuery = db_query(DATABASE_LSR, szString);
  219. if(db_num_rows(ResultQuery))
  220. {
  221. for(new i = 0; i < db_num_rows(ResultQuery); i++)
  222. {
  223. new vehid;
  224. vehid = SQLiteGetResultIntAssoc(ResultQuery, "ID");
  225. db_get_field_assoc(ResultQuery, "Owner", dB_VEHICLES[vehid][dB_VEHICLE_OWNER], 24);
  226. db_get_field_assoc(ResultQuery, "Plate", dB_VEHICLES[vehid][dB_VEHICLE_PLATE], 10);
  227. dB_VEHICLES[vehid][dB_VEHICLE_OID] = SQLiteGetResultIntAssoc(ResultQuery, "OID");
  228. dB_VEHICLES[vehid][dB_VEHICLE_GID] = SQLiteGetResultIntAssoc(ResultQuery, "GID");
  229. dB_VEHICLES[vehid][dB_VEHICLE_MODEL] = SQLiteGetResultIntAssoc(ResultQuery, "Model");
  230. dB_VEHICLES[vehid][dB_VEHICLE_SPOILER] = SQLiteGetResultIntAssoc(ResultQuery, "Spoiler");
  231. dB_VEHICLES[vehid][dB_VEHICLE_HOOD] = SQLiteGetResultIntAssoc(ResultQuery, "Hood");
  232. dB_VEHICLES[vehid][dB_VEHICLE_ROOF] = SQLiteGetResultIntAssoc(ResultQuery, "Roof");
  233. dB_VEHICLES[vehid][dB_VEHICLE_SIDESKIRT] = SQLiteGetResultIntAssoc(ResultQuery, "Sideskirt");
  234. dB_VEHICLES[vehid][dB_VEHICLE_LAMPS] = SQLiteGetResultIntAssoc(ResultQuery, "Lamps");
  235. dB_VEHICLES[vehid][dB_VEHICLE_NITRO] = SQLiteGetResultIntAssoc(ResultQuery, "Nitro");
  236. dB_VEHICLES[vehid][dB_VEHICLE_EXHAUST] = SQLiteGetResultIntAssoc(ResultQuery, "Exhaust");
  237. dB_VEHICLES[vehid][dB_VEHICLE_WHEELS] = SQLiteGetResultIntAssoc(ResultQuery, "Wheels");
  238. dB_VEHICLES[vehid][dB_VEHICLE_STEREO] = SQLiteGetResultIntAssoc(ResultQuery, "Stereo");
  239. dB_VEHICLES[vehid][dB_VEHICLE_HYDRAULICS] = SQLiteGetResultIntAssoc(ResultQuery, "Hydraulics");
  240. dB_VEHICLES[vehid][dB_VEHICLE_FB] = SQLiteGetResultIntAssoc(ResultQuery, "FB");
  241. dB_VEHICLES[vehid][dB_VEHICLE_RB] = SQLiteGetResultIntAssoc(ResultQuery, "RB");
  242. dB_VEHICLES[vehid][dB_VEHICLE_VR] = SQLiteGetResultIntAssoc(ResultQuery, "VR");
  243. dB_VEHICLES[vehid][dB_VEHICLE_VL] = SQLiteGetResultIntAssoc(ResultQuery, "VL");
  244. dB_VEHICLES[vehid][dB_VEHICLE_X] = SQLiteGetResultIntAssoc(ResultQuery, "PosX");
  245. dB_VEHICLES[vehid][dB_VEHICLE_Y] = SQLiteGetResultIntAssoc(ResultQuery, "PosY");
  246. dB_VEHICLES[vehid][dB_VEHICLE_Z] = SQLiteGetResultIntAssoc(ResultQuery, "PosZ");
  247. dB_VEHICLES[vehid][dB_VEHICLE_A] = SQLiteGetResultIntAssoc(ResultQuery, "PosA");
  248. dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB] = SQLiteGetResultIntAssoc(ResultQuery, "Paintjob");
  249. dB_VEHICLES[vehid][dB_VEHICLE_COLOR1] = SQLiteGetResultIntAssoc(ResultQuery, "Color1");
  250. dB_VEHICLES[vehid][dB_VEHICLE_COLOR2] = SQLiteGetResultIntAssoc(ResultQuery, "Color2");
  251. dB_VEHICLES[vehid][dB_VEHICLE_TIRESARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "TiresArmour");
  252. dB_VEHICLES[vehid][dB_VEHICLE_DOORSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "DoorsArmour");
  253. dB_VEHICLES[vehid][dB_VEHICLE_PANELSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "PanelsArmour");
  254. dB_VEHICLES[vehid][dB_VEHICLE_LIGHTSARMOUR] = SQLiteGetResultIntAssoc(ResultQuery, "LightsArmour");
  255. dB_VEHICLES[vehid][dB_VEHICLE_HEALTH] = SQLiteGetResultFloatAssoc(ResultQuery, "Health");
  256.  
  257. 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);
  258. if(dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB] != -1) ChangeVehiclePaintjob(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_PAINTJOB]);
  259. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_SPOILER]);
  260. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HOOD]);
  261. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_ROOF]);
  262. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_SIDESKIRT]);
  263. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_LAMPS]);
  264. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_NITRO]);
  265. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_EXHAUST]);
  266. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_WHEELS]);
  267. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_STEREO]);
  268. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HYDRAULICS]);
  269. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_FB]);
  270. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_RB]);
  271. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_VR]);
  272. AddVehicleComponent(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_VL]);
  273.  
  274. dB_VEHICLES[vehid][dB_VEHICLE_LOCKED] = true;
  275. SetVehicleHealth(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_HEALTH]);
  276.  
  277. SetVehicleNumberPlate(dB_VEHICLE_CREATE[vehid], dB_VEHICLES[vehid][dB_VEHICLE_OWNER]);
  278. SetVehicleParamsForPlayer(dB_VEHICLE_CREATE[vehid], i, 0, 0);
  279. SetVehicleParamsEx(dB_VEHICLE_CREATE[vehid], 0, 0, 0, 0, 0, 0, 0);
  280. dB_VEHICLES[vehid][dB_VEHICLE_STATUS] = 0;
  281. if(!db_next_row(ResultQuery))
  282. break;
  283. //SetVehicleToRespawn(i);
  284. }
  285. }
  286. else print("\nSQLite INFO! (LoadVehicles) não há veículos inseridos no banco de dados.\n");
  287. }
  288.  
  289. public OnPlayerRequestClass(playerid, classid)
  290. {
  291.  
  292. if(PLAYER_INFO[playerid][LOGGED])
  293. SpawnPlayer(playerid);
  294. else
  295. {
  296. new RANDON_SKIN = randon(3);
  297. SetPlayerPos(playerid, 0.0, 0.0, 10.0);
  298. SetPlayerCameraPos(playerid, 5.0, 0.0, 15.0);
  299. SetPlayerCameraLookAt(playerid, 0.0, 0.0, 10.0, CAMERA_CUT);
  300. if(classid == 0) // POLICE
  301. {
  302. SetPlayerSkin(playerid, POLICE_SKIN[RANDON_SKIN]);
  303. PLAYER_INFO[playerid][P_GANGID] = GANG_POLICE_ID;
  304.  
  305.  
  306. return 1;
  307. }
  308.  
  309. public OnPlayerConnect(playerid)
  310. {
  311. return 1;
  312. }
  313.  
  314. public OnPlayerDisconnect(playerid, reason)
  315. {
  316. return 1;
  317. }
  318.  
  319. public OnPlayerSpawn(playerid)
  320. {
  321. return 1;
  322. }
  323.  
  324. public OnPlayerDeath(playerid, killerid, reason)
  325. {
  326. return 1;
  327. }
  328.  
  329. public OnVehicleSpawn(vehicleid)
  330. {
  331. SetVehiclePos(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_X], dB_VEHICLES[vehicleid][dB_VEHICLE_Y], dB_VEHICLES[vehicleid][dB_VEHICLE_Z]);
  332. SetVehicleZAngle(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_A]);
  333. ChangeVehicleColor(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR1], dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR2]);
  334. ChangeVehiclePaintjob(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_PAINTJOB]);
  335. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_SPOILER]);
  336. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HOOD]);
  337. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_ROOF]);
  338. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_SIDESKIRT]);
  339. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_LAMPS]);
  340. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_NITRO]);
  341. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_EXHAUST]);
  342. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_WHEELS]);
  343. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_STEREO]);
  344. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HYDRAULICS]);
  345. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_FB]);
  346. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_RB]);
  347. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_VR]);
  348. AddVehicleComponent(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_VL]);
  349. //SetVehicleNumberPlate(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_PLATE]);
  350. dB_VEHICLES[vehicleid][dB_VEHICLE_STATUS] = 0;
  351. SetVehicleParamsEx(vehicleid, 0, 0, 0, 1, 0, 0, 0);
  352. return 1;
  353. }
  354.  
  355. public OnVehicleDeath(vehicleid, killerid)
  356. {
  357. return 1;
  358. }
  359.  
  360. public OnPlayerText(playerid, text[])
  361. {
  362. return 1;
  363. }
  364.  
  365. public OnPlayerCommandText(playerid, cmdtext[])
  366. {
  367. if (strcmp("/mycommand", cmdtext, true, 10) == 0)
  368. {
  369. // Do something here
  370. return 1;
  371. }
  372. return 0;
  373. }
  374.  
  375. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  376. {
  377. return 1;
  378. }
  379.  
  380. public OnPlayerExitVehicle(playerid, vehicleid)
  381. {
  382. return 1;
  383. }
  384.  
  385. public OnPlayerStateChange(playerid, newstate, oldstate)
  386. {
  387. /*
  388. SQLite VEHICLES
  389. Posição do veículo
  390. */
  391. if(oldstate == PLAYER_STATE_DRIVER && newstate == PLAYER_STATE_ONFOOT)
  392. {
  393. new VehicleID = GetPlayerVehicleID(playerid), szString[200];
  394. for(new i = 0; i < MAX_VEHICLE; i++)
  395. {
  396. if(VehicleID == dB_VEHICLE_CREATE[i])
  397. {
  398. 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]);
  399. db_query(DATABASE_LSR, szString);
  400. if(!db_changes(DATABASE_LSR))
  401. {
  402. SendClientMessage(playerid, COLOR_RED, "Erro no banco de dados (parte: StateChange). Contate um administrador.");
  403. 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]);
  404. }
  405. break;
  406. }
  407. }
  408.  
  409. }
  410. return 1;
  411. }
  412.  
  413. public OnVehicleDamageStatusUpdate(vehicleid, playerid)
  414. {
  415. #pragma unused playerid
  416. new panels, doors, lights, tires, szString[200];
  417. GetVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  418. 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)
  419. 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)
  420. if(dB_VEHICLES[vehicleid][dB_VEHICLE_TIRESARMOUR] == 1) tires = encode_tires(0, 0, 0, 0); // fix all tires
  421. if(dB_VEHICLES[vehicleid][dB_VEHICLE_LIGHTSARMOUR] == 1) lights = encode_lights(0, 0, 0, 0); // fix all lights
  422. UpdateVehicleDamageStatus(vehicleid, panels, doors, lights, tires);
  423. /*
  424. SQLite VEHICLES
  425. Health, DoorsArmour, TiresArmour, BonnetArmour e LightsArmour
  426. */
  427. GetVehicleHealth(vehicleid, dB_VEHICLES[vehicleid][dB_VEHICLE_HEALTH]);
  428. 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]);
  429. db_query(DATABASE_LSR, szString);
  430. if(!db_changes(DATABASE_LSR))
  431. printf("SQLite ERROR! (OnVehicleDamageStatusUpdate) Vehicleid: %d, Player: %s", vehicleid, GetPlayerName(playerid));
  432. return 1;
  433. }
  434.  
  435. encode_tires(tire1, tire2, tire3, tire4) return tire1 | (tire2 << 1) | (tire3 << 2) | (tire4 << 3);
  436. encode_panels(flp, frp, rlp, rrp, windshield, front_bumper, rear_bumper)
  437. {
  438. return flp | (frp << 4) | (rlp << 8) | (rrp << 12) | (windshield << 16) | (front_bumper << 20) | (rear_bumper << 24);
  439. }
  440. encode_doors(bonnet, boot, driver_door, passenger_door, behind_driver_door, behind_passenger_door)
  441. {
  442. #pragma unused behind_driver_door
  443. #pragma unused behind_passenger_door
  444. return bonnet | (boot << 8) | (driver_door << 16) | (passenger_door << 24);
  445. }
  446. encode_lights(light1, light2, light3, light4)
  447. {
  448. return light1 | (light2 << 1) | (light3 << 2) | (light4 << 3);
  449. }
  450.  
  451. public OnPlayerEnterCheckpoint(playerid)
  452. {
  453. return 1;
  454. }
  455.  
  456. public OnPlayerLeaveCheckpoint(playerid)
  457. {
  458. return 1;
  459. }
  460.  
  461. public OnPlayerEnterRaceCheckpoint(playerid)
  462. {
  463. return 1;
  464. }
  465.  
  466. public OnPlayerLeaveRaceCheckpoint(playerid)
  467. {
  468. return 1;
  469. }
  470.  
  471. public OnRconCommand(cmd[])
  472. {
  473. return 1;
  474. }
  475.  
  476. public OnPlayerRequestSpawn(playerid)
  477. {
  478. return 1;
  479. }
  480.  
  481. public OnObjectMoved(objectid)
  482. {
  483. return 1;
  484. }
  485.  
  486. public OnPlayerObjectMoved(playerid, objectid)
  487. {
  488. return 1;
  489. }
  490.  
  491. public OnPlayerPickUpPickup(playerid, pickupid)
  492. {
  493. return 1;
  494. }
  495.  
  496. public OnVehicleMod(playerid, vehicleid, componentid)
  497. {
  498. if(GetPlayerInterior(playerid) == 0)
  499. {
  500. SendClientMessageToAll(COLOR_RED, "AntiCheater: veículo %d equipado com componente %d pelo jogador %s fora da garagem de tuning!", vehicleid, componentid, GetPlayerName(playerid));
  501. }
  502. else
  503. {
  504. SendClientMessage(playerid, COLOR_GREEN, "Server: veículo %d equipado.", vehicleid);
  505. PLAYER_INFO[playerid][P_VEHMODDED] = true; // Confirmar que o jogador tunou o veículo
  506. }
  507. return 1;
  508. }
  509.  
  510. public OnEnterExitModShop(playerid, enterexit, interiorid)
  511. {
  512. if(enterexit == 1)
  513. printf("LOG! %s entrou em uma garagem de tuning!", GetPlayerName(playerid));
  514. SendClientMessage(playerid, COLOR_WHITE, "Carlos (dono da oficina): {999999} bem vindo, meu chapa! Escolhas suas peças e tune a sua caranga!");
  515. else if(enterexit == 0)
  516. {
  517. printf("LOG! %s saiu de uma garagem de tuning!", GetPlayerName(playerid));
  518. // Confirmar se o jogador tunou mesmo o carro. Caso use cheater de tunar carro, ele não salva os componentes...
  519. // A variável P_VEHMODDED fica false...
  520. if(PLAYER_INFO[playerid][P_VEHMODDED])
  521. {
  522. printf("LOG! %s saiu de uma garagem de tuning e tunou seu carro!", GetPlayerName(playerid));
  523. SendClientMessage(playerid, COLOR_WHITE, "Carlos (dono da oficina): {999999} Gostou das peças, mano? Volte sempre que precisar tunar seu carro!");
  524. if(IsPlayerInAnyVehicle(playerid))
  525. {
  526. new VehicleID = GetPlayerVehicleID(playerid),
  527. szString[200];
  528.  
  529. dB_VEHICLES[VehicleID][dB_VEHICLE_SPOILER] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SPOILER);
  530. dB_VEHICLES[VehicleID][dB_VEHICLE_HOOD] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HOOD);
  531. dB_VEHICLES[VehicleID][dB_VEHICLE_ROOF] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_ROOF);
  532. dB_VEHICLES[VehicleID][dB_VEHICLE_SIDESKIRT] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_SIDESKIRT);
  533. dB_VEHICLES[VehicleID][dB_VEHICLE_LAMPS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_LAMPS);
  534. dB_VEHICLES[VehicleID][dB_VEHICLE_NITRO] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_NITRO);
  535. dB_VEHICLES[VehicleID][dB_VEHICLE_EXHAUST] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_EXHAUST);
  536. dB_VEHICLES[VehicleID][dB_VEHICLE_WHEELS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_WHEELS);
  537. dB_VEHICLES[VehicleID][dB_VEHICLE_STEREO] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_STEREO);
  538. dB_VEHICLES[VehicleID][dB_VEHICLE_HYDRAULICS] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_HYDRAULICS);
  539. dB_VEHICLES[VehicleID][dB_VEHICLE_FB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_FRONT_BUMPER);
  540. dB_VEHICLES[VehicleID][dB_VEHICLE_RB] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_REAR_BUMPER);
  541. dB_VEHICLES[VehicleID][dB_VEHICLE_VR] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_RIGHT);
  542. dB_VEHICLES[VehicleID][dB_VEHICLE_VL] = GetVehicleComponentInSlot(VehicleID, CARMODTYPE_VENT_LEFT);
  543.  
  544. // Só salva os componentes de tuning...
  545. format(szString, sizeof szString, "UPDATE Vehicles SET Spoiler = %d, Hood = %d, Roof = %d, Sideskirt = %d WHERE ID = %d",
  546. dB_VEHICLES[VehicleID][dB_VEHICLE_SPOILER],
  547. dB_VEHICLES[VehicleID][dB_VEHICLE_HOOD],
  548. dB_VEHICLES[VehicleID][dB_VEHICLE_ROOF],
  549. dB_VEHICLES[VehicleID][dB_VEHICLE_SIDESKIRT],
  550. dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  551. db_query(DATABASE_LSR, szString);
  552. if(!db_changes(DATABASE_LSR))
  553. print("SQLite ERROR! (OnEnterExitModShop) 1 query: update não pode ser feito.");
  554. format(szString, sizeof szString, "UPDATE Vehicles SET \
  555. Lamps = %d, \
  556. Nitro = %d, \
  557. Exhaust = %d, \
  558. Wheels = %d \
  559. WHERE ID = %d",
  560. dB_VEHICLES[VehicleID][dB_VEHICLE_LAMPS],
  561. dB_VEHICLES[VehicleID][dB_VEHICLE_NITRO],
  562. dB_VEHICLES[VehicleID][dB_VEHICLE_EXHAUST],
  563. dB_VEHICLES[VehicleID][dB_VEHICLE_WHEELS],
  564. dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  565. db_query(DATABASE_LSR, szString);
  566. if(!db_changes(DATABASE_LSR))
  567. print("SQLite ERROR! (OnEnterExitModShop) 2 query: update não pode ser feito.");
  568. format(szString, sizeof szString, "UPDATE Vehicles SET \
  569. Stereo = %d, \
  570. Hydraulics = %d, \
  571. FB = %d, \
  572. RB = %d \
  573. WHERE ID = %d",
  574. dB_VEHICLES[VehicleID][dB_VEHICLE_STEREO],
  575. dB_VEHICLES[VehicleID][dB_VEHICLE_HYDRAULICS],
  576. dB_VEHICLES[VehicleID][dB_VEHICLE_FB],
  577. dB_VEHICLES[VehicleID][dB_VEHICLE_RB],
  578. dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  579. db_query(DATABASE_LSR, szString);
  580. if(!db_changes(DATABASE_LSR))
  581. print("SQLite ERROR! (OnEnterExitModShop) 3 query: update não pode ser feito.");
  582. format(szString, sizeof szString, "UPDATE Vehicles SET \
  583. VR = %d, \
  584. VL = %d, \
  585. WHERE ID = %d",
  586. dB_VEHICLES[VehicleID][dB_VEHICLE_VR],
  587. dB_VEHICLES[VehicleID][dB_VEHICLE_VL],
  588. dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  589. db_query(DATABASE_LSR, szString);
  590. if(!db_changes(DATABASE_LSR))
  591. print("SQLite ERROR! (OnEnterExitModShop) 4 query: update não pode ser feito.");
  592. format(szString, sizeof szString, "UPDATE Vehicles SET \
  593. dB_VEHICLE_COLOR1 = %d, \
  594. dB_VEHICLE_COLOR2 = %d, \
  595. dB_VEHICLE_PAINTJOB = %d, \
  596. WHERE ID = %d",
  597. dB_VEHICLES[VehicleID][dB_VEHICLE_COLOR1],
  598. dB_VEHICLES[VehicleID][dB_VEHICLE_COLOR2],
  599. dB_VEHICLES[VehicleID][dB_VEHICLE_PAINTJOB],
  600. dB_VEHICLES[VehicleID][dB_VEHICLE_ID]);
  601. db_query(DATABASE_LSR, szString);
  602. if(!db_changes(DATABASE_LSR))
  603. print("SQLite ERROR! (OnEnterExitModShop) 5 query: update não pode ser feito.");
  604. }
  605. } 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!");
  606. }
  607. return true;
  608. }
  609.  
  610. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  611. {
  612. dB_VEHICLES[vehicleid][dB_VEHICLE_PAINTJOB] = paintjobid;
  613. return 1;
  614. }
  615.  
  616. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  617. {
  618. dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR1] = color1;
  619. dB_VEHICLES[vehicleid][dB_VEHICLE_COLOR2] = color2;
  620. return 1;
  621. }
  622.  
  623. public OnPlayerSelectedMenuRow(playerid, row)
  624. {
  625. return 1;
  626. }
  627.  
  628. public OnPlayerExitedMenu(playerid)
  629. {
  630. return 1;
  631. }
  632.  
  633. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  634. {
  635. return 1;
  636. }
  637.  
  638. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  639. {
  640. return 1;
  641. }
  642.  
  643. public OnPlayerUpdate(playerid)
  644. {
  645. return 1;
  646. }
  647.  
  648.  
  649. public OnPlayerStreamIn(playerid, forplayerid)
  650. {
  651. if(PLAYER_INFO[playerid][P_GANGID] == PLAYER_INFO[playerid][P_GANGID])
  652. SetPlayerMarkerForPlayer(playerid, forplayerid, GetPlayerGangColor(PLAYER_INFO[playerid][P_GANGID]));
  653. else
  654. SetPlayerMarkerForPlayer(playerid, forplayerid, GetPlayerGangColor(PLAYER_INFO[forplayerid][P_GANGID]));
  655. return 1;
  656. }
  657.  
  658.  
  659. public OnPlayerStreamOut(playerid, forplayerid)
  660. {
  661. if(PLAYER_INFO[playerid][P_GANGID] != PLAYER_INFO[playerid][P_GANGID])
  662. SetPlayerMarkerForPlayer(playerid, forplayerid, (GetPlayerColor(forplayerid)&0xFFFFFF00));
  663. return 1;
  664. }
  665.  
  666.  
  667. public OnVehicleStreamIn(vehicleid, forplayerid)
  668. {
  669. if(dB_VEHICLES[vehicleid][dB_VEHICLE_GID] != -1)
  670. {
  671. if(dB_VEHICLES[vehicleid][dB_VEHICLE_GID] == PLAYER_INFO[forplayerid][P_GANGID])
  672. SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  673. else
  674. SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
  675. }
  676. else
  677. {
  678. if(dB_VEHICLES[vehicleid][OID] == PLAYER_INFO[forplayerid][P_ID])
  679. SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  680. else
  681. {
  682. if(dB_VEHICLES[vehicleid][dB_VEHICLE_LOCKED] == true) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 1);
  683. else if(dB_VEHICLES[vehicleid][dB_VEHICLE_LOCKED] == false) SetVehicleParamsForPlayer(vehicleid, forplayerid, 0, 0);
  684. }
  685. }
  686. return 1;
  687. }
  688.  
  689. public OnVehicleStreamOut(vehicleid, forplayerid)
  690. {
  691. return 1;
  692. }
  693.  
  694. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  695. {
  696. return 1;
  697. }
  698.  
  699. public OnPlayerClickPlayer(playerid, clickedplayerid, source)
  700. {
  701. return 1;
  702. }
  703.  
  704.  
  705. //---------------------------// COMANDOS
  706.  
  707. zcmd:destrancar(playerid, params[])
  708. {
  709. if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
  710. 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!");
  711. {
  712. SendClientMessage(playerid, COLOR_GOLD, "Server: veículo destrancado!");
  713. dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_LOCKED] = false;
  714. foreach(new i : Player)
  715. {
  716. if(i != playerid)
  717. {
  718. SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 0);
  719. }
  720. }
  721. }
  722. return true;
  723. }
  724.  
  725. zcmd:trancar(playerid, params[])
  726. {
  727. if(!IsPlayerInAnyVehicle(playerid)) SendClientMessage(playerid, COLOR_RED, "Erro: você precisa estar em um veículo!");
  728. 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!");
  729. {
  730. SendClientMessage(playerid, COLOR_GOLD, "Server: veículo trancado!");
  731. dB_VEHICLES[GetPlayerVehicleID(playerid)][dB_VEHICLE_LOCKED] = true;
  732. foreach(new i : Player)
  733. {
  734. if(i != playerid)
  735. {
  736. SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid), i, 0, 1);
  737. }
  738. }
  739. }
  740. return true;
  741. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement