Guest User

ProKillerPa Concessionaria

a guest
May 27th, 2021
355
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.94 KB | None | 0 0
  1. /*
  2. Sistema de Concessionaria feito por ProKillerPa em 11/05/2021
  3.  
  4. Discord: ProKillerPa#7113
  5. */
  6.  
  7. #include <a_samp>
  8. #include <mSelection>
  9. #include <DOF2>
  10. #include <ZCMD>
  11.  
  12. #define MAX_VEH_CONCE 150
  13.  
  14. #define CONCE "Concessionaria Nova/%i.ini"
  15.  
  16. #define VOID::%0(%1) forward %0(%1);public %0(%1)
  17.  
  18. new carros = mS_INVALID_LISTID;
  19. new motos = mS_INVALID_LISTID;
  20. new variados = mS_INVALID_LISTID;
  21.  
  22. enum DATA_CONCE{
  23.  
  24. ID,
  25. Dono[MAX_PLAYER_NAME],
  26. Valor,
  27. Modelo,
  28. Float:PosX,
  29. Float:PosY,
  30. Float:PosZ,
  31. Float:Angulo,
  32. Cor1,
  33. Cor2
  34. } new Conce[MAX_VEH_CONCE][DATA_CONCE];
  35.  
  36. new bool:CarregouVeh[MAX_PLAYERS];
  37.  
  38. new Float:SpawnConce[10][4] = {
  39.  
  40. {2147.3608,-1157.4744,23.5716,271.0518},
  41. {2148.6907,-1161.7351,23.5498,268.6129},
  42. {2148.6021,-1153.1725,23.6500,270.6453},
  43. {2149.0598,-1148.2809,24.1437,269.3367},
  44. {2149.1650,-1143.4781,24.6708,269.7239},
  45. {2149.0691,-1138.3676,25.2173,270.3889},
  46. {2161.6094,-1148.2463,24.1130,92.3409},
  47. {2160.8845,-1152.9626,23.6598,90.7373},
  48. {2161.1101,-1158.0596,23.5662,90.1280},
  49. {2161.1101,-1158.0596,23.5662,90.1280}
  50. };
  51.  
  52. new VehicleNames[212][] =
  53. {
  54. {"Landstalker"},{"Bravura"},{"Buffalo"},{"Linerunner"},{"Perrenial"},{"Sentinel"},{"Dumper"},
  55. {"Firetruck"},{"Trashmaster"},{"Stretch"},{"Manana"},{"Infernus"},{"Voodoo"},{"Pony"},{"Mule"},
  56. {"Cheetah"},{"Ambulance"},{"Leviathan"},{"Moonbeam"},{"Esperanto"},{"Taxi"},{"Washington"},
  57. {"Bobcat"},{"Mr Whoopee"},{"BF Injection"},{"Hunter"},{"Premier"},{"Enforcer"},{"Securicar"},
  58. {"Banshee"},{"Predator"},{"Bus"},{"Rhino"},{"Barracks"},{"Hotknife"},{"Trailer 1"},{"Previon"},
  59. {"Coach"},{"Cabbie"},{"Stallion"},{"Rumpo"},{"RC Bandit"},{"Romero"},{"Packer"},{"Monster"},
  60. {"Admiral"},{"Squalo"},{"Seasparrow"},{"Pizzaboy"},{"Tram"},{"Trailer 2"},{"Turismo"},
  61. {"Speeder"},{"Reefer"},{"Tropic"},{"Flatbed"},{"Yankee"},{"Caddy"},{"Solair"},{"Berkley's RC Van"},
  62. {"Skimmer"},{"PCJ-600"},{"Faggio"},{"Freeway"},{"RC Baron"},{"RC Raider"},{"Glendale"},{"Oceanic"},
  63. {"Sanchez"},{"Sparrow"},{"Patriot"},{"Quad"},{"Coastguard"},{"Dinghy"},{"Hermes"},{"Sabre"},
  64. {"Rustler"},{"ZR-350"},{"Walton"},{"Regina"},{"Comet"},{"BMX"},{"Burrito"},{"Camper"},{"Marquis"},
  65. {"Baggage"},{"Dozer"},{"Maverick"},{"News Chopper"},{"Rancher"},{"FBI Rancher"},{"Virgo"},{"Greenwood"},
  66. {"Jetmax"},{"Hotring"},{"Sandking"},{"Blista Compact"},{"Police Maverick"},{"Boxville"},{"Benson"},
  67. {"Mesa"},{"RC Goblin"},{"Hotring Racer A"},{"Hotring Racer B"},{"Bloodring Banger"},{"Rancher"},
  68. {"Super GT"},{"Elegant"},{"Journey"},{"Bike"},{"Mountain Bike"},{"Beagle"},{"Cropdust"},{"Stunt"},
  69. {"Tanker"}, {"Roadtrain"},{"Nebula"},{"Majestic"},{"Buccaneer"},{"Shamal"},{"Hydra"},{"FCR-900"},
  70. {"NRG-500"},{"HPV1000"},{"Cement Truck"},{"Tow Truck"},{"Fortune"},{"Cadrona"},{"FBI Truck"},
  71. {"Willard"},{"Forklift"},{"Tractor"},{"Combine"},{"Feltzer"},{"Remington"},{"Slamvan"},
  72. {"Blade"},{"Freight"},{"Streak"},{"Vortex"},{"Vincent"},{"Bullet"},{"Clover"},{"Sadler"},
  73. {"Firetruck LA"},{"Hustler"},{"Intruder"},{"Primo"},{"Cargobob"},{"Tampa"},{"Sunrise"},{"Merit"},
  74. {"Utility"},{"Nevada"},{"Yosemite"},{"Windsor"},{"Monster A"},{"Monster B"},{"Uranus"},{"Jester"},
  75. {"Sultan"},{"Stratum"},{"Elegy"},{"Raindance"},{"RC Tiger"},{"Flash"},{"Tahoma"},{"Savanna"},
  76. {"Bandito"},{"Freight Flat"},{"Streak Carriage"},{"Kart"},{"Mower"},{"Duneride"},{"Sweeper"},
  77. {"Broadway"},{"Tornado"},{"AT-400"},{"DFT-30"},{"Huntley"},{"Stafford"},{"BF-400"},{"Newsvan"},
  78. {"Tug"},{"Trailer 3"},{"Emperor"},{"Wayfarer"},{"Euros"},{"Hotdog"},{"Club"},{"Freight Carriage"},
  79. {"Trailer 3"},{"Andromada"},{"Dodo"},{"RC Cam"},{"Launch"},{"Police Car (LSPD)"},{"Police Car (SFPD)"},
  80. {"Police Car (LVPD)"},{"Police Ranger"},{"Picador"},{"S.W.A.T. Van"},{"Alpha"},{"Phoenix"},{"Glendale"},
  81. {"Sadler"},{"Luggage Trailer A"},{"Luggage Trailer B"},{"Stair Trailer"},{"Boxville"},{"Farm Plow"},
  82. {"Utility Trailer"}
  83. };
  84.  
  85. #define CATEGORIAS 19666
  86. #define COMPRARVEICULO 19667
  87. #define MENUVEICULO 19668
  88. #define LOCALIZARVEICULOS 19669
  89.  
  90. public OnFilterScriptInit(){
  91.  
  92. Create3DTextLabel("{1E90FF}Concessionaria de LS\n{FF7F00}Aperte F ou use /conce", -1, 2131.9753,-1149.9814,24.2093, 15, 0);
  93. CreatePickup(18631, 0, 2131.9753,-1149.9814,24.2093);
  94.  
  95. carros = LoadModelSelectionMenu("carros.txt");
  96. motos = LoadModelSelectionMenu("motos.txt");
  97. variados = LoadModelSelectionMenu("especiais.txt");
  98.  
  99. for(new x; x < MAX_VEH_CONCE; x++) Conce[x][ID] = -1;
  100. return 1;
  101. }
  102.  
  103. public OnFilterScriptExit(){
  104.  
  105. DOF2::Exit();
  106. return 1;
  107. }
  108.  
  109. CMD:conce(playerid){
  110.  
  111. if(!IsPlayerInRangeOfPoint(playerid, 4, 2131.9753,-1149.9814,24.2093))
  112. return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce nao esta proximo da concessionaria!");
  113.  
  114. ShowPlayerDialog(playerid, CATEGORIAS, DIALOG_STYLE_LIST, "Concessionaria", "Ver Carros\nVer Motos\nVer Veiculos Variados", "Selecionar", "Cancelar");
  115. return 1;
  116. }
  117.  
  118. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys){
  119.  
  120. if(newkeys == 16){
  121.  
  122. if(IsPlayerInRangeOfPoint(playerid, 4, 2131.9753,-1149.9814,24.2093)){
  123.  
  124. ShowPlayerDialog(playerid, CATEGORIAS, DIALOG_STYLE_LIST, "Concessionaria", "Ver Carros\nVer Motos\nVer Veiculos Variados", "Selecionar", "Cancelar");
  125. }
  126. }
  127. return 1;
  128. }
  129.  
  130. public OnPlayerConnect(playerid){
  131.  
  132. CarregouVeh[playerid] = false;
  133. return 1;
  134. }
  135.  
  136. public OnPlayerDisconnect(playerid, reason){
  137.  
  138. if(CarregouVeh[playerid]) DestruirVeiculos(playerid);
  139.  
  140. CarregouVeh[playerid] = false;
  141. return 1;
  142. }
  143.  
  144. CMD:locav(playerid){
  145.  
  146. new ff[30], msg[50], msg2[400], pqp;
  147.  
  148. for(new i; i < MAX_VEH_CONCE; i++){
  149.  
  150. format(ff, 30, CONCE, i);
  151.  
  152. if(DOF2::FileExists(ff)){
  153.  
  154. format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));
  155.  
  156. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  157.  
  158. format(msg, 50, "Localizar %s\n", getVehicleName(Conce[i][Modelo]));
  159. strcat(msg2, msg);
  160. pqp++;
  161. }
  162. }
  163. }
  164.  
  165. if(pqp == 0)
  166. return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce nao possui veiculos comprados!");
  167.  
  168. ShowPlayerDialog(playerid, LOCALIZARVEICULOS, DIALOG_STYLE_LIST, "Localizar Veiculo", msg2, "Localizar", "Cancelar");
  169. return 1;
  170. }
  171.  
  172. CMD:destrancar(playerid){
  173.  
  174. new Float:PQP[3];
  175.  
  176. new vehicleid = GetClosestVehicleToPlayer(playerid);
  177.  
  178. GetVehiclePos(vehicleid, PQP[0], PQP[1], PQP[2]);
  179.  
  180. if(!IsPlayerInRangeOfPoint(playerid, 5, PQP[0], PQP[1], PQP[2]))
  181. return SendClientMessage(playerid, -1, "{FF4500}[AVISO] Voce nao esta proximo de nenhum veiculo!");
  182.  
  183. new ff[30], pqp;
  184.  
  185. new engine, lights, alarm, doors, bonnet, boot, objective;
  186.  
  187. for(new i; i < MAX_VEH_CONCE; i++){
  188.  
  189. format(ff, 30, CONCE, i);
  190.  
  191. if(DOF2::FileExists(ff)){
  192.  
  193. if(Conce[i][ID] == vehicleid){
  194.  
  195. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  196.  
  197. GetVehicleParamsEx(Conce[i][ID], engine, lights, alarm, doors, bonnet, boot, objective);
  198.  
  199. if(doors > 0) {
  200.  
  201. SetVehicleParamsEx(Conce[i][ID], engine, lights, alarm, false, bonnet, boot, objective);
  202.  
  203. SendClientMessage(playerid, -1, "{FFD700}[VEICULO] Voce destrancou seu veiculo com sucesso!");
  204. }
  205. else {
  206.  
  207. SendClientMessage(playerid, -1, "{FF4500}[ERRO] O seu veiculo ja esta destrancado!");
  208. }
  209. } else SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce nao e o dono desse veiculo e nao pode destranca-lo!");
  210.  
  211. pqp++;
  212. break;
  213. }
  214. }
  215. }
  216.  
  217.  
  218. if(pqp == 0) SendClientMessage(playerid, -1, "{FF4500}[ERRO] Esse veiculo nao e da concessionaria e nao pode ser trancado!");
  219. return 1;
  220. }
  221.  
  222. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
  223.  
  224. switch(dialogid){
  225.  
  226. case LOCALIZARVEICULOS:{
  227.  
  228. if(!response)
  229. return 1;
  230.  
  231.  
  232. new ff[30], q = 0;
  233.  
  234. for(new i; i < MAX_VEH_CONCE; i++){
  235.  
  236. format(ff, 30, CONCE, i);
  237.  
  238. if(DOF2::FileExists(ff)){
  239.  
  240. format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));
  241.  
  242. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  243.  
  244. if(listitem == q){
  245.  
  246. SetPlayerCheckpoint(playerid, Conce[i][PosX], Conce[i][PosY], Conce[i][PosZ], 4);
  247.  
  248. SendClientMessage(playerid, -1, "{BEBEBE}[VEICULO] Seu veiculo foi marcado no mapa com sucesso!");
  249. break;
  250. }
  251. q++;
  252. }
  253. }
  254. }
  255. }
  256.  
  257. case MENUVEICULO:{
  258.  
  259. if(!response){
  260.  
  261. DeletePVar(playerid, "VehConce");
  262. DeletePVar(playerid, "ArquivoID");
  263. return 1;
  264. }
  265.  
  266. new vehicleid = GetPVarInt(playerid, "VehConce");
  267. new i = GetPVarInt(playerid, "ArquivoID");
  268.  
  269. new engine, lights, alarm, doors, bonnet, boot, objective;
  270.  
  271. switch(listitem){
  272.  
  273. case 0:{
  274.  
  275. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  276.  
  277. if(doors > 0)
  278. return SendClientMessage(playerid, -1, "[ERRO] Seu veiculo ja esta trancado!");
  279. else {
  280.  
  281. SetVehicleParamsEx(vehicleid, engine, lights, alarm, true, bonnet, boot, objective);
  282.  
  283. SendClientMessage(playerid, -1, "{FFD700}[VEICULO] Portas trancadas com sucesso!");
  284. }
  285. }
  286. case 1:{
  287.  
  288. GetVehiclePos(vehicleid, Conce[i][PosX], Conce[i][PosY], Conce[i][PosZ]);
  289.  
  290. GetVehicleZAngle(vehicleid, Conce[i][Angulo]);
  291.  
  292. new ff[30];
  293.  
  294. format(ff, 30, CONCE, i);
  295.  
  296. DOF2::SetFloat(ff, "PosX", Conce[i][PosX]);
  297. DOF2::SetFloat(ff, "PosY", Conce[i][PosY]);
  298. DOF2::SetFloat(ff, "PosZ", Conce[i][PosZ]);
  299.  
  300. DOF2::SetFloat(ff, "Angulo", Conce[i][Angulo]);
  301.  
  302. DOF2::SaveFile();
  303.  
  304. GetVehicleParamsEx(Conce[i][ID], engine, lights, alarm, doors, bonnet, boot, objective);
  305.  
  306. DestroyVehicle(Conce[i][ID]);
  307.  
  308. Conce[i][ID] = CreateVehicle(Conce[i][Modelo], Conce[i][PosX], Conce[i][PosY], Conce[i][PosZ], Conce[i][Angulo], Conce[i][Cor1], Conce[i][Cor2], 999999999999999);
  309. PutPlayerInVehicle(playerid, Conce[i][ID], 0);
  310.  
  311. SetVehicleParamsEx(Conce[i][ID], engine, lights, alarm, doors, bonnet, boot, objective);
  312.  
  313. SendClientMessage(playerid, -1, "{BEBEBE}[VEICULO] Veiculo estacionado com sucesso!");
  314. }
  315. case 2:{
  316.  
  317. CallRemoteFunction("GanharDinheiro", "id", playerid, ( Conce[i][Valor] / 2) );
  318.  
  319. new ff[30];
  320.  
  321. format(ff, 30, CONCE, i);
  322.  
  323. DOF2::RemoveFile(ff);
  324.  
  325. DOF2::SaveFile();
  326.  
  327. RemovePlayerFromVehicle(playerid);
  328.  
  329. DestroyVehicle(Conce[i][ID]);
  330.  
  331. Conce[i][ID] = -1;
  332. Conce[i][Valor] = 0;
  333. Conce[i][Modelo] = 0;
  334. Conce[i][PosX] = 0;
  335. Conce[i][PosY] = 0;
  336. Conce[i][PosZ] = 0;
  337. Conce[i][Angulo] = 0;
  338.  
  339. format(Conce[i][Dono], 24, "Ninguem");
  340.  
  341. SendClientMessage(playerid, -1, "{BEBEBE}[VEICULO] Voce vendeu seu veiculo com sucesso para a concessionaria!");
  342. }
  343. }
  344. }
  345.  
  346. case COMPRARVEICULO:{
  347.  
  348. if(!response){
  349.  
  350. DeletePVar(playerid, "ModeloVeh");
  351. DeletePVar(playerid, "ValorVeh");
  352. return 1;
  353. }
  354. else {
  355.  
  356. ComprarVeiculo(playerid, GetPVarInt(playerid, "ModeloVeh"), GetPVarInt(playerid, "ValorVeh"));
  357. }
  358. }
  359.  
  360. case CATEGORIAS:{
  361.  
  362. if(!response)
  363. return 1;
  364.  
  365. switch(listitem){
  366.  
  367. case 0: ShowModelSelectionMenu(playerid, carros, "Carros");
  368. case 1: ShowModelSelectionMenu(playerid, motos, "Motos");
  369. case 2: ShowModelSelectionMenu(playerid, variados, "Veiculos Variados");
  370. }
  371. }
  372. }
  373. return 1;
  374. }
  375.  
  376. public OnPlayerModelSelection(playerid, response, listid, modelid){
  377.  
  378. if(!response)
  379. return 1;
  380.  
  381. if(listid == carros){
  382.  
  383. new valor;
  384.  
  385. switch(modelid){
  386.  
  387. case 602: valor = 150000;
  388. case 496: valor = 150000;
  389. case 401: valor = 200000;
  390. case 589: valor = 160000;
  391. case 587: valor = 500000;
  392. case 545: valor = 100000;
  393. case 467: valor = 100000;
  394. case 580: valor = 100000;
  395. case 409: valor = 1000000;
  396. case 402: valor = 1000000;
  397. case 603: valor = 2000000;
  398. case 411: valor = 5000000;
  399. case 451: valor = 3500000;
  400. case 555: valor = 1500000;
  401. default: return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Veiculo nao cadastrado no banco de dados!");
  402. }
  403.  
  404. SetPVarInt(playerid, "ModeloVeh", modelid);
  405. SetPVarInt(playerid, "ValorVeh", valor);
  406.  
  407. new msg[300];
  408.  
  409. format(msg, 300, "{FFD700}Concessionaria Informa:\n\n{BEBEBE}Veiculo: {1E90FF}%s\n{BEBEBE}Modelo: {1E90FF}%d\n{00FF00}Valor: $%d,00\n\n{FF7F00}Deseja comprar esse veiculo?\n", getVehicleName(modelid), modelid, valor);
  410.  
  411. ShowPlayerDialog(playerid, COMPRARVEICULO, DIALOG_STYLE_MSGBOX, "Comprar Veiculo", msg, "Comprar", "Cancelar");
  412. }
  413. else if(listid == motos){
  414.  
  415. new valor;
  416.  
  417. switch(modelid){
  418.  
  419. case 581: valor = 150000;
  420. case 509: valor = 50000;
  421. case 481: valor = 50000;
  422. case 521: valor = 180000;
  423. case 463: valor = 180000;
  424. case 461: valor = 180000;
  425. case 522: valor = 2500000;
  426. default: return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Veiculo nao cadastrado no banco de dados!");
  427. }
  428.  
  429. SetPVarInt(playerid, "ModeloVeh", modelid);
  430. SetPVarInt(playerid, "ValorVeh", valor);
  431.  
  432. new msg[300];
  433.  
  434. format(msg, 300, "{FFD700}Concessionaria Informa:\n\n{BEBEBE}Veiculo: {1E90FF}%s\n{BEBEBE}Modelo: {1E90FF}%d\n{00FF00}Valor: $%d,00\n\n{FF7F00}Deseja comprar esse veiculo?\n", getVehicleName(modelid), modelid, valor);
  435.  
  436. ShowPlayerDialog(playerid, COMPRARVEICULO, DIALOG_STYLE_MSGBOX, "Comprar Veiculo", msg, "Comprar", "Cancelar");
  437. }
  438. else if(listid == variados){
  439.  
  440. new valor;
  441.  
  442. switch(modelid){
  443.  
  444. case 548: valor = 7000000;
  445. case 417: valor = 7500000;
  446. case 487: valor = 5500000;
  447. case 588: valor = 1000000;
  448. case 423: valor = 2000000;
  449. case 572: valor = 70000;
  450. case 530: valor = 70000;
  451. case 457: valor = 200000;
  452. default: return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Veiculo nao cadastrado no banco de dados!");
  453. }
  454.  
  455. SetPVarInt(playerid, "ModeloVeh", modelid);
  456. SetPVarInt(playerid, "ValorVeh", valor);
  457.  
  458. new msg[300];
  459.  
  460. format(msg, 300, "{FFD700}Concessionaria Informa:\n\n{BEBEBE}Veiculo: {1E90FF}%s\n{BEBEBE}Modelo: {1E90FF}%d\n{00FF00}Valor: $%d,00\n\n{FF7F00}Deseja comprar esse veiculo?\n", getVehicleName(modelid), modelid, valor);
  461.  
  462. ShowPlayerDialog(playerid, COMPRARVEICULO, DIALOG_STYLE_MSGBOX, "Comprar Veiculo", msg, "Comprar", "Cancelar");
  463. }
  464. return 1;
  465. }
  466.  
  467. public OnPlayerSpawn(playerid){
  468.  
  469. if(!CarregouVeh[playerid]) CarregarVeiculos(playerid);
  470.  
  471. return 1;
  472. }
  473.  
  474. CMD:mv(playerid){
  475.  
  476. if(!IsPlayerInAnyVehicle(playerid))
  477. return SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce deve estar dentro do veiculo para acessar o menu do veiculo.");
  478.  
  479. new vehicleid = GetPlayerVehicleID(playerid);
  480.  
  481. new ff[30], pqp;
  482.  
  483. for(new i; i < MAX_VEH_CONCE; i++){
  484.  
  485. format(ff, 30, CONCE, i);
  486.  
  487. if(DOF2::FileExists(ff)){
  488.  
  489. if(Conce[i][ID] == vehicleid){
  490.  
  491. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  492.  
  493. SetPVarInt(playerid, "VehConce", Conce[i][ID]);
  494. SetPVarInt(playerid, "ArquivoID", i);
  495.  
  496. ShowPlayerDialog(playerid, MENUVEICULO, DIALOG_STYLE_LIST, "Menu Veiculo", "Trancar Veiculo\nEstacionar o Veiculo\nVender o Veiculo", "Selecionar", "Cancelar");
  497.  
  498. } else SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce nao e o dono desse veiculo!");
  499.  
  500. pqp++;
  501. break;
  502. }
  503. }
  504. }
  505.  
  506. if(pqp == 0) SendClientMessage(playerid, -1, "{FF4500}[ERRO] Voce nao esta dentro de um veiculo da concessionaria!");
  507. return 1;
  508. }
  509.  
  510. VOID::DestruirVeiculos(playerid){
  511.  
  512. new ff[30];
  513.  
  514. for(new i; i < MAX_VEH_CONCE; i++){
  515.  
  516. format(ff, 30, CONCE, i);
  517.  
  518. if(DOF2::FileExists(ff)){
  519.  
  520. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  521.  
  522. printf("[DEBUG PROKILLERPA] O Veiculo ID %d Modelo %d do jogador %s foi deletado apos o log-off!", Conce[i][ID], Conce[i][Modelo], NomePQP(playerid));
  523.  
  524. DestroyVehicle(Conce[i][ID]);
  525.  
  526. Conce[i][ID] = -1;
  527. }
  528. }
  529. }
  530.  
  531. CarregouVeh[playerid] = false;
  532. return 1;
  533. }
  534.  
  535. VOID::CarregarVeiculos(playerid){
  536.  
  537. CarregouVeh[playerid] = true;
  538.  
  539. new ff[30];
  540.  
  541. for(new i; i < MAX_VEH_CONCE; i++){
  542.  
  543. format(ff, 30, CONCE, i);
  544.  
  545. if(DOF2::FileExists(ff)){
  546.  
  547. format(Conce[i][Dono], MAX_PLAYER_NAME, DOF2::GetString(ff, "Dono"));
  548.  
  549. if(strcmp(Conce[i][Dono], NomePQP(playerid), true) == 0){
  550.  
  551. Conce[i][Valor] = DOF2::GetInt(ff, "Valor");
  552.  
  553. Conce[i][Modelo] = DOF2::GetInt(ff, "Modelo");
  554.  
  555. Conce[i][Cor1] = DOF2::GetInt(ff, "Cor1");
  556. Conce[i][Cor2] = DOF2::GetInt(ff, "Cor2");
  557.  
  558. Conce[i][PosX] = DOF2::GetFloat(ff, "PosX");
  559. Conce[i][PosY] = DOF2::GetFloat(ff, "PosY");
  560. Conce[i][PosZ] = DOF2::GetFloat(ff, "PosZ");
  561. Conce[i][Angulo] = DOF2::GetFloat(ff, "Angulo");
  562.  
  563. Conce[i][ID] = CreateVehicle(Conce[i][Modelo], Conce[i][PosX], Conce[i][PosY], Conce[i][PosZ], Conce[i][Angulo], Conce[i][Cor1], Conce[i][Cor2], 999999999999999);
  564.  
  565. SetVehicleParamsEx(Conce[i][ID], false, false, false, true, false, false, false);
  566.  
  567. printf("[DEBUG PROKILLERPA] O Veiculo ID %d Modelo %d do jogador %s foi spawnado no servidor com sucesso!", Conce[i][ID], Conce[i][Modelo], NomePQP(playerid));
  568. }
  569. }
  570. }
  571. return 1;
  572. }
  573.  
  574. VOID::ComprarVeiculo(playerid, modelo, valor){
  575.  
  576. if(CallRemoteFunction("CheckGranaPQP", "id", playerid, valor) == 0)
  577. return SendClientMessage(playerid, -1, "[ERRO] Voce nao possui dinheiro suficiente!");
  578.  
  579. CallRemoteFunction("DescontarDinheiro", "id", playerid, valor);
  580.  
  581. new ff[30];
  582.  
  583. new cor1 = random(299);
  584. new cor2 = random(299);
  585. new r = random(9);
  586.  
  587. for(new i; i < MAX_VEH_CONCE; i++){
  588.  
  589. format(ff, 30, CONCE, i);
  590.  
  591. if(!DOF2::FileExists(ff)){
  592.  
  593. DOF2::CreateFile(ff);
  594.  
  595. DOF2::SetString(ff, "Dono", NomePQP(playerid));
  596.  
  597. DOF2::SetInt(ff, "Valor", valor);
  598. DOF2::SetInt(ff, "Modelo", modelo);
  599.  
  600. DOF2::SetInt(ff, "Cor1", cor1);
  601. DOF2::SetInt(ff, "Cor2", cor2);
  602.  
  603. if(modelo == 548 || modelo == 417 || modelo == 487){
  604.  
  605. DOF2::SetFloat(ff, "PosX", 2156.7119);
  606. DOF2::SetFloat(ff, "PosY", -1160.5033);
  607. DOF2::SetFloat(ff, "PosZ", 23.9080+5);
  608. DOF2::SetFloat(ff, "Angulo", 273.3387);
  609. }
  610. else {
  611. DOF2::SetFloat(ff, "PosX", SpawnConce[r][0]);
  612. DOF2::SetFloat(ff, "PosY", SpawnConce[r][1]);
  613. DOF2::SetFloat(ff, "PosZ", SpawnConce[r][2]);
  614. DOF2::SetFloat(ff, "Angulo", SpawnConce[r][3]);
  615. }
  616.  
  617. DOF2::SaveFile();
  618.  
  619. format(Conce[i][Dono], 24, NomePQP(playerid));
  620.  
  621. Conce[i][Valor] = valor;
  622. Conce[i][Modelo] = modelo;
  623.  
  624. Conce[i][Cor1] = cor1;
  625. Conce[i][Cor2] = cor2;
  626.  
  627. if(modelo == 548 || modelo == 417 || modelo == 487){
  628.  
  629. Conce[i][PosX] = 2156.7119;
  630. Conce[i][PosY] = -1160.5033;
  631. Conce[i][PosZ] = 23.9080+5;
  632. Conce[i][Angulo] = 273.3387;
  633. }
  634. else {
  635.  
  636. Conce[i][PosX] = SpawnConce[r][0];
  637. Conce[i][PosY] = SpawnConce[r][1];
  638. Conce[i][PosZ] = SpawnConce[r][2];
  639. Conce[i][Angulo] = SpawnConce[r][3];
  640. }
  641.  
  642. Conce[i][ID] = CreateVehicle(Conce[i][Modelo], Conce[i][PosX], Conce[i][PosY], Conce[i][PosZ], Conce[i][Angulo], Conce[i][Cor1], Conce[i][Cor2], 999999999999999);
  643.  
  644. SendClientMessage(playerid, -1, "{FF7F00}[CONCE] Veiculo comprado com sucesso! Va ate o estacionamento para busca-lo");
  645. break;
  646. }
  647. }
  648. return 1;
  649. }
  650.  
  651. stock getVehicleName(vehmodel){
  652.  
  653. new nameVeh[75];
  654.  
  655. if (vehmodel < 400 || vehmodel > 611){
  656. strcat(nameVeh, "Nenhum");
  657. return nameVeh;
  658. }
  659.  
  660. strcat(nameVeh, VehicleNames[vehmodel - 400]);
  661. return nameVeh;
  662. }
  663.  
  664. stock NomePQP(playerid){
  665.  
  666. new nome[MAX_PLAYER_NAME];
  667.  
  668. GetPlayerName(playerid, nome, MAX_PLAYER_NAME);
  669. return nome;
  670. }
  671.  
  672. stock Float:GetDisBetweenPlayerAndCar(p1ayerid,carid)
  673. {
  674. new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2;
  675. if(!IsPlayerConnected(p1ayerid))
  676. {
  677. return -1.00;
  678. }
  679. GetPlayerPos(p1ayerid,x1,y1,z1);
  680. GetVehiclePos(carid,x2,y2,z2);
  681. return floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2));
  682. }
  683.  
  684. stock GetClosestVehicleToPlayer(playerid)
  685. {
  686. new x,Float:dis,Float:dis2,car;
  687. car = 0;
  688. dis = 99999.99;
  689. for ( x = 0; x < MAX_VEHICLES; x++ )
  690. {
  691. dis2 = GetDisBetweenPlayerAndCar(playerid,x);
  692. if(dis2 < dis && dis2 < 10.0)
  693. {
  694. dis = dis2;
  695. car = x;
  696. }
  697. }
  698. return car;
  699. }
  700.  
Add Comment
Please, Sign In to add comment