Advertisement
Guest User

Aici este codul

a guest
Apr 17th, 2015
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.44 KB | None | 0 0
  1. /* This dealerShip is an AVS edit by "teo.zew" aka "iNQ" Please do not erase the credits if i helped you. */
  2. #define FILTERSCRIPT
  3.  
  4. #include <a_samp>
  5.  
  6. /* SETARI */
  7.  
  8. #undef MAX_PLAYERS //
  9. #define MAX_PLAYERS 100 //
  10.  
  11. #define MAX_DVEHICLES 200 // Numar maxim de vehicule valabile la dealership
  12. #define MAX_DEALERSHIPS 50 // Numar maxim de dealereship-uri
  13.  
  14. #define VEHICLE_FILE_PATH "Dealership/Vehicule/" // Calea unde se salveaza Vehiculele
  15. #define DEALERSHIP_FILE_PATH "Dealership/Dealership-uri/" // Calea unde se salveaza Dealership-urile
  16.  
  17. #define MAX_PLAYER_VEHICLES 3 // Numarul maxim de vehicule pe care-l poate avea un player
  18. #define ALARM_TIME 10000 // Durata Alarmei = 10sec (1000ms = 1sec) (Functie neutilizata)
  19. #define DEFAULT_NUMBER_PLATE "VibePlay" // Inmatricularea Default (atunci cand este la dealership)
  20.  
  21. //==========================================================
  22.  
  23. #define COLOR_BLACK 0x000000FF
  24. #define COLOR_RED 0xEE0000FF
  25. #define COLOR_GREEN 0x00CC00FF
  26. #define COLOR_BLUE 0x0000FFFF
  27. #define COLOR_ORANGE 0xFF6600FF
  28. #define COLOR_YELLOW 0xFFFF00FF
  29. #define COLOR_LIGHTBLUE 0x00FFFFFF
  30. #define COLOR_PURPLE 0xC2A2DAFF
  31. #define COLOR_GREY 0xC0C0C0FF
  32. #define COLOR_WHITE 0xFFFFFFFF
  33.  
  34. #define VEHICLE_DEALERSHIP 1
  35. #define VEHICLE_PLAYER 2
  36.  
  37. #define CMD:%1(%2) \
  38. forward cmd_%1(%2); \
  39. public cmd_%1(%2)
  40.  
  41. forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
  42. #define ShowErrorDialog(%1,%2) ShowPlayerDialog(%1, DIALOG_ERROR, DIALOG_STYLE_MSGBOX, "ERROR", %2, "OK", "")
  43.  
  44. enum
  45. {
  46. // Au fost schimbate din default deoarece se incurca cu dialog-urile din gamemode. Daca apar buguri schimbati-le.
  47.  
  48. DIALOG_NONE=501, // DIALOG ID - Default era 12346
  49. DIALOG_ERROR=502, // DIALOG ID - Default era 12345
  50. DIALOG_VEHICLE_PARK=500, // DIALOG ID - Default era 500
  51. DIALOG_VEHICLE_BUY,
  52. DIALOG_VEHICLE_PLATE,
  53. DIALOG_EDITVEHICLE
  54. };
  55.  
  56. new maintimer;
  57. new savetimer;
  58.  
  59. new SaveVehicleIndex;
  60.  
  61. new TrackCar[MAX_PLAYERS];
  62. new DialogReturn[MAX_PLAYERS];
  63.  
  64. new VehicleSecurity[MAX_VEHICLES];
  65.  
  66. new VehicleCreated[MAX_DVEHICLES];
  67. new VehicleID[MAX_DVEHICLES];
  68. new VehicleModel[MAX_DVEHICLES];
  69. new Float:VehiclePos[MAX_DVEHICLES][4];
  70. new VehicleColor[MAX_DVEHICLES][2];
  71. new VehicleInterior[MAX_DVEHICLES];
  72. new VehicleWorld[MAX_DVEHICLES];
  73. new VehicleOwner[MAX_DVEHICLES][MAX_PLAYER_NAME];
  74. new VehicleNumberPlate[MAX_DVEHICLES][16];
  75. new VehicleValue[MAX_DVEHICLES];
  76. new VehicleLock[MAX_DVEHICLES];
  77. new VehicleAlarm[MAX_DVEHICLES];
  78. new VehicleTrunk[MAX_DVEHICLES][5][2];
  79. new VehicleMods[MAX_DVEHICLES][14];
  80. new VehiclePaintjob[MAX_DVEHICLES] = {255, ...};
  81. new Text3D:VehicleLabel[MAX_DVEHICLES];
  82.  
  83. new DealershipCreated[MAX_DEALERSHIPS];
  84. new Float:DealershipPos[MAX_DEALERSHIPS][3];
  85. new Text3D:DealershipLabel[MAX_DEALERSHIPS];
  86.  
  87.  
  88. new VehicleNames[][] = {
  89. "Landstalker","Bravura","Buffalo","Linerunner","Perennial","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
  90. "Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
  91. "Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
  92. "Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
  93. "Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
  94. "Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
  95. "Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","Rancher","Virgo","Greenwood",
  96. "Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
  97. "Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
  98. "Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
  99. "Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
  100. "Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
  101. "Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
  102. "Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
  103. "Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
  104. "Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
  105. "Stair Trailer","Boxville","Farm Plow","Utility Trailer"
  106. };
  107.  
  108. forward MainTimer();
  109. forward SaveTimer();
  110. forward StopAlarm(vehicleid);
  111. forward NRGPersonal(vehicleid);
  112.  
  113. stock PlayerName(playerid)
  114. {
  115. new pName[MAX_PLAYER_NAME];
  116. GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  117. return pName;
  118. }
  119.  
  120. stock IsPlayerSpawned(playerid)
  121. {
  122. switch(GetPlayerState(playerid))
  123. {
  124. case 1,2,3: return 1;
  125. }
  126. return 0;
  127. }
  128.  
  129. stock IsMeleeWeapon(weaponid)
  130. {
  131. switch(weaponid)
  132. {
  133. case 2 .. 15, 40, 44 .. 46: return 1;
  134. }
  135. return 0;
  136. }
  137.  
  138. stock RemovePlayerWeapon(playerid, weaponid)
  139. {
  140. new WeaponData[12][2];
  141. for(new i=1; i < sizeof(WeaponData); i++)
  142. {
  143. GetPlayerWeaponData(playerid, i, WeaponData[i][0], WeaponData[i][1]);
  144. }
  145. ResetPlayerWeapons(playerid);
  146. for(new i=1; i < sizeof(WeaponData); i++)
  147. {
  148. if(WeaponData[i][0] != weaponid)
  149. {
  150. GivePlayerWeapon(playerid, WeaponData[i][0], WeaponData[i][1]);
  151. }
  152. }
  153. }
  154.  
  155. stock IsBicycle(vehicleid)
  156. {
  157. switch(GetVehicleModel(vehicleid))
  158. {
  159. case 481,509,510: return 1;
  160. }
  161. return 0;
  162. }
  163.  
  164. new spoiler[20][0] = {
  165. {1000},
  166. {1001},
  167. {1002},
  168. {1003},
  169. {1014},
  170. {1015},
  171. {1016},
  172. {1023},
  173. {1058},
  174. {1060},
  175. {1049},
  176. {1050},
  177. {1138},
  178. {1139},
  179. {1146},
  180. {1147},
  181. {1158},
  182. {1162},
  183. {1163},
  184. {1164}
  185. };
  186.  
  187. new nitro[3][0] = {
  188. {1008},
  189. {1009},
  190. {1010}
  191. };
  192.  
  193. new fbumper[23][0] = {
  194. {1117},
  195. {1152},
  196. {1153},
  197. {1155},
  198. {1157},
  199. {1160},
  200. {1165},
  201. {1167},
  202. {1169},
  203. {1170},
  204. {1171},
  205. {1172},
  206. {1173},
  207. {1174},
  208. {1175},
  209. {1179},
  210. {1181},
  211. {1182},
  212. {1185},
  213. {1188},
  214. {1189},
  215. {1192},
  216. {1193}
  217. };
  218.  
  219. new rbumper[22][0] = {
  220. {1140},
  221. {1141},
  222. {1148},
  223. {1149},
  224. {1150},
  225. {1151},
  226. {1154},
  227. {1156},
  228. {1159},
  229. {1161},
  230. {1166},
  231. {1168},
  232. {1176},
  233. {1177},
  234. {1178},
  235. {1180},
  236. {1183},
  237. {1184},
  238. {1186},
  239. {1187},
  240. {1190},
  241. {1191}
  242. };
  243.  
  244. new exhaust[28][0] = {
  245. {1018},
  246. {1019},
  247. {1020},
  248. {1021},
  249. {1022},
  250. {1028},
  251. {1029},
  252. {1037},
  253. {1043},
  254. {1044},
  255. {1045},
  256. {1046},
  257. {1059},
  258. {1064},
  259. {1065},
  260. {1066},
  261. {1089},
  262. {1092},
  263. {1104},
  264. {1105},
  265. {1113},
  266. {1114},
  267. {1126},
  268. {1127},
  269. {1129},
  270. {1132},
  271. {1135},
  272. {1136}
  273. };
  274.  
  275. new bventr[2][0] = {
  276. {1042},
  277. {1044}
  278. };
  279.  
  280. new bventl[2][0] = {
  281. {1043},
  282. {1045}
  283. };
  284.  
  285. new bscoop[4][0] = {
  286. {1004},
  287. {1005},
  288. {1011},
  289. {1012}
  290. };
  291.  
  292. new rscoop[13][0] = {
  293. {1006},
  294. {1032},
  295. {1033},
  296. {1035},
  297. {1038},
  298. {1053},
  299. {1054},
  300. {1055},
  301. {1061},
  302. {1067},
  303. {1068},
  304. {1088},
  305. {1091}
  306. };
  307.  
  308. new lskirt[21][0] = {
  309. {1007},
  310. {1026},
  311. {1031},
  312. {1036},
  313. {1039},
  314. {1042},
  315. {1047},
  316. {1048},
  317. {1056},
  318. {1057},
  319. {1069},
  320. {1070},
  321. {1090},
  322. {1093},
  323. {1106},
  324. {1108},
  325. {1118},
  326. {1119},
  327. {1133},
  328. {1122},
  329. {1134}
  330. };
  331.  
  332. new rskirt[21][0] = {
  333. {1017},
  334. {1027},
  335. {1030},
  336. {1040},
  337. {1041},
  338. {1051},
  339. {1052},
  340. {1062},
  341. {1063},
  342. {1071},
  343. {1072},
  344. {1094},
  345. {1095},
  346. {1099},
  347. {1101},
  348. {1102},
  349. {1107},
  350. {1120},
  351. {1121},
  352. {1124},
  353. {1137}
  354. };
  355.  
  356. new hydraulics[1][0] = {
  357. {1087}
  358. };
  359.  
  360. new base[1][0] = {
  361. {1086}
  362. };
  363.  
  364. new rbbars[2][0] = {
  365. {1109},
  366. {1110}
  367. };
  368.  
  369. new fbbars[2][0] = {
  370. {1115},
  371. {1116}
  372. };
  373.  
  374. new wheels[17][0] = {
  375. {1025},
  376. {1073},
  377. {1074},
  378. {1075},
  379. {1076},
  380. {1077},
  381. {1078},
  382. {1079},
  383. {1080},
  384. {1081},
  385. {1082},
  386. {1083},
  387. {1084},
  388. {1085},
  389. {1096},
  390. {1097},
  391. {1098}
  392. };
  393.  
  394. new light[2][0] = {
  395. {1013},
  396. {1024}
  397. };
  398.  
  399. InitComponents(componentid)
  400. {
  401. new i;
  402. for(i=0; i<20; i++)
  403. {
  404. if(spoiler[i][0]==componentid) { return 1; }
  405. }
  406. for(i=0; i<3; i++)
  407. {
  408. if(nitro[i][0]==componentid) { return 2; }
  409. }
  410. for(i=0; i<23; i++)
  411. {
  412. if(fbumper[i][0]==componentid) { return 3; }
  413. }
  414. for(i=0; i<22; i++)
  415. {
  416. if(rbumper[i][0]==componentid) { return 4; }
  417. }
  418. for(i=0; i<28; i++)
  419. {
  420. if(exhaust[i][0]==componentid) { return 5; }
  421. }
  422. for(i=0; i<2; i++)
  423. {
  424. if(bventr[i][0]==componentid) { return 6; }
  425. }
  426. for(i=0; i<2; i++)
  427. {
  428. if(bventl[i][0]==componentid) { return 7; }
  429. }
  430. for(i=0; i<4; i++)
  431. {
  432. if(bscoop[i][0]==componentid) { return 8; }
  433. }
  434. for(i=0; i<13; i++)
  435. {
  436. if(rscoop[i][0]==componentid) { return 9; }
  437. }
  438. for(i=0; i<21; i++)
  439. {
  440. if(lskirt[i][0]==componentid) { return 10; }
  441. }
  442. for(i=0; i<21; i++)
  443. {
  444. if(rskirt[i][0]==componentid) { return 11; }
  445. }
  446. if(hydraulics[0][0]==componentid) { return 12; }
  447. if(base[0][0]==componentid) { return 13; }
  448. for(i=0; i<2; i++)
  449. {
  450. if(rbbars[i][0]==componentid) { return 14; }
  451. }
  452. for(i=0; i<2; i++)
  453. {
  454. if(fbbars[i][0]==componentid) { return 15; }
  455. }
  456. for(i=0; i<17; i++)
  457. {
  458. if(wheels[i][0]==componentid) { return 16; }
  459. }
  460. for(i=0; i<2; i++)
  461. {
  462. if(light[i][0]==componentid) { return 17; }
  463. }
  464. return 0;
  465. }
  466.  
  467. stock PlayerToPlayer(playerid, targetid, Float:dist)
  468. {
  469. new Float:pos[3];
  470. GetPlayerPos(targetid, pos[0], pos[1], pos[2]);
  471. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  472. }
  473.  
  474. stock PlayerToVehicle(playerid, vehicleid, Float:dist)
  475. {
  476. new Float:pos[3];
  477. GetVehiclePos(vehicleid, pos[0], pos[1], pos[2]);
  478. return IsPlayerInRangeOfPoint(playerid, dist, pos[0], pos[1], pos[2]);
  479. }
  480.  
  481. stock GetClosestVehicle(playerid)
  482. {
  483. new Float:x, Float:y, Float:z;
  484. new Float:dist, Float:closedist=9999, closeveh;
  485. for(new i=1; i < MAX_VEHICLES; i++)
  486. {
  487. if(GetVehiclePos(i, x, y, z))
  488. {
  489. dist = GetPlayerDistanceFromPoint(playerid, x, y, z);
  490. if(dist < closedist)
  491. {
  492. closedist = dist;
  493. closeveh = i;
  494. }
  495. }
  496. }
  497. return closeveh;
  498. }
  499.  
  500. stock ToggleEngine(vehicleid, toggle)
  501. {
  502. new engine, lights, alarm, doors, bonnet, boot, objective;
  503. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  504. SetVehicleParamsEx(vehicleid, toggle, lights, alarm, doors, bonnet, boot, objective);
  505. }
  506.  
  507. stock ToggleAlarm(vehicleid, toggle)
  508. {
  509. new engine, lights, alarm, doors, bonnet, boot, objective;
  510. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  511. SetVehicleParamsEx(vehicleid, engine, lights, toggle, doors, bonnet, boot, objective);
  512. }
  513.  
  514. stock ToggleDoors(vehicleid, toggle)
  515. {
  516. new engine, lights, alarm, doors, bonnet, boot, objective;
  517. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  518. SetVehicleParamsEx(vehicleid, engine, lights, alarm, toggle, bonnet, boot, objective);
  519. }
  520.  
  521. stock ToggleBoot(vehicleid, toggle)
  522. {
  523. new engine, lights, alarm, doors, bonnet, boot, objective;
  524. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  525. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, toggle, objective);
  526. }
  527.  
  528. stock StripNL(str[])
  529. {
  530. new
  531. i = strlen(str);
  532. while (i-- && str[i] <= ' ') str[i] = '\0';
  533. }
  534.  
  535. stock IsNumeric(const string[])
  536. {
  537. for(new i=0; string[i]; i++)
  538. {
  539. if(string[i] < '0' || string[i] > '9') return 0;
  540. }
  541. return 1;
  542. }
  543.  
  544. stock GetVehicleModelIDFromName(const vname[])
  545. {
  546. for(new i=0; i < sizeof(VehicleNames); i++)
  547. {
  548. if(strfind(VehicleNames[i], vname, true) != -1) return i + 400;
  549. }
  550. return -1;
  551. }
  552.  
  553. stock GetPlayer2DZone(playerid)
  554. {
  555. new zone[32] = "San Andreas";
  556. new Float:x, Float:y, Float:z;
  557. GetPlayerPos(playerid, x, y, z);
  558. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  559. {
  560. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  561. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4])
  562. {
  563. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  564. return zone;
  565. }
  566. }
  567. return zone;
  568. }
  569.  
  570. stock GetPlayer3DZone(playerid)
  571. {
  572. new zone[32] = "San Andreas";
  573. new Float:x, Float:y, Float:z;
  574. GetPlayerPos(playerid, x, y, z);
  575. for(new i = 0; i < sizeof(SanAndreasZones); i++)
  576. {
  577. if(x >= SanAndreasZones[i][Zone_Area][0] && x <= SanAndreasZones[i][Zone_Area][3]
  578. && y >= SanAndreasZones[i][Zone_Area][1] && y <= SanAndreasZones[i][Zone_Area][4]
  579. && z >= SanAndreasZones[i][Zone_Area][2] && z <= SanAndreasZones[i][Zone_Area][5])
  580. {
  581. strmid(zone, SanAndreasZones[i][Zone_Name], 0, 28);
  582. return zone;
  583. }
  584. }
  585. return zone;
  586. }
  587.  
  588. stock GetPlayerSpeed(playerid, bool:kmh = true)
  589. {
  590. new
  591. Float:xx,
  592. Float:yy,
  593. Float:zz,
  594. Float:pSpeed;
  595.  
  596. if(IsPlayerInAnyVehicle(playerid))
  597. {
  598. GetVehicleVelocity(GetPlayerVehicleID(playerid),xx,yy,zz);
  599. }
  600. else
  601. {
  602. GetPlayerVelocity(playerid,xx,yy,zz);
  603. }
  604.  
  605. pSpeed = floatsqroot((xx * xx) + (yy * yy) + (zz * zz));
  606. return kmh ? floatround((pSpeed * 165.12)) : floatround((pSpeed * 103.9));
  607. }
  608.  
  609.  
  610. IsAdmin(playerid, level)
  611. {
  612. if(IsPlayerAdmin(playerid)) return 1;
  613. if(CallRemoteFunction("GetPlayerAVSAdmin", "d", playerid) >= level) return 1;
  614. return 0;
  615. }
  616.  
  617. LoadVehicles()
  618. {
  619. new string[64];
  620. new File:handle, count;
  621. new filename[64], line[256], s, key[64];
  622. for(new i=1; i < MAX_DVEHICLES; i++)
  623. {
  624. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", i);
  625. if(!fexist(filename)) continue;
  626. handle = fopen(filename, io_read);
  627. while(fread(handle, line))
  628. {
  629. StripNL(line);
  630. s = strfind(line, "=");
  631. if(!line[0] || s < 1) continue;
  632. strmid(key, line, 0, s++);
  633. if(strcmp(key, "Created") == 0) VehicleCreated[i] = strval(line[s]);
  634. else if(strcmp(key, "Model") == 0) VehicleModel[i] = strval(line[s]);
  635. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,ffff", VehiclePos[i][0], VehiclePos[i][1],
  636. VehiclePos[i][2], VehiclePos[i][3]);
  637. else if(strcmp(key, "Colors") == 0) sscanf(line[s], "p,dd", VehicleColor[i][0], VehicleColor[i][1]);
  638. else if(strcmp(key, "Interior") == 0) VehicleInterior[i] = strval(line[s]);
  639. else if(strcmp(key, "VirtualWorld") == 0) VehicleWorld[i] = strval(line[s]);
  640. else if(strcmp(key, "Owner") == 0) strmid(VehicleOwner[i], line, s, sizeof(line));
  641. else if(strcmp(key, "NumberPlate") == 0) strmid(VehicleNumberPlate[i], line, s, sizeof(line));
  642. else if(strcmp(key, "Value") == 0) VehicleValue[i] = strval(line[s]);
  643. else if(strcmp(key, "Lock") == 0) VehicleLock[i] = strval(line[s]);
  644. else if(strcmp(key, "Alarm") == 0) VehicleAlarm[i] = strval(line[s]);
  645. else if(strcmp(key, "Paintjob") == 0) VehiclePaintjob[i] = strval(line[s]);
  646. else
  647. {
  648. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  649. {
  650. format(string, sizeof(string), "Trunk%d", t+1);
  651. if(strcmp(key, string) == 0) sscanf(line[s], "p,dd", VehicleTrunk[i][t][0], VehicleTrunk[i][t][1]);
  652. }
  653. for(new m=0; m < sizeof(VehicleMods[]); m++)
  654. {
  655. format(string, sizeof(string), "Mod%d", m);
  656. if(strcmp(key, string) == 0) VehicleMods[i][m] = strval(line[s]);
  657. }
  658. }
  659. }
  660. fclose(handle);
  661. if(VehicleCreated[i]) count++;
  662. }
  663. printf(" Loaded %d vehicles", count);
  664. }
  665.  
  666. SaveVehicle(vehicleid)
  667. {
  668. new filename[64], line[256];
  669. format(filename, sizeof(filename), VEHICLE_FILE_PATH "v%d.ini", vehicleid);
  670. new File:handle = fopen(filename, io_write);
  671. format(line, sizeof(line), "Created=%d\r\n", VehicleCreated[vehicleid]); fwrite(handle, line);
  672. format(line, sizeof(line), "Model=%d\r\n", VehicleModel[vehicleid]); fwrite(handle, line);
  673. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f,%.3f\r\n", VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  674. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3]);
  675. fwrite(handle, line);
  676. format(line, sizeof(line), "Colors=%d,%d\r\n", VehicleColor[vehicleid][0], VehicleColor[vehicleid][1]); fwrite(handle, line);
  677. format(line, sizeof(line), "Interior=%d\r\n", VehicleInterior[vehicleid]); fwrite(handle, line);
  678. format(line, sizeof(line), "VirtualWorld=%d\r\n", VehicleWorld[vehicleid]); fwrite(handle, line);
  679. format(line, sizeof(line), "Owner=%s\r\n", VehicleOwner[vehicleid]); fwrite(handle, line);
  680. format(line, sizeof(line), "NumberPlate=%s\r\n", VehicleNumberPlate[vehicleid]); fwrite(handle, line);
  681. format(line, sizeof(line), "Value=%d\r\n", VehicleValue[vehicleid]); fwrite(handle, line);
  682. format(line, sizeof(line), "Lock=%d\r\n", VehicleLock[vehicleid]); fwrite(handle, line);
  683. format(line, sizeof(line), "Alarm=%d\r\n", VehicleAlarm[vehicleid]); fwrite(handle, line);
  684. format(line, sizeof(line), "Paintjob=%d\r\n", VehiclePaintjob[vehicleid]); fwrite(handle, line);
  685. for(new t=0; t < sizeof(VehicleTrunk[]); t++)
  686. {
  687. format(line, sizeof(line), "Trunk%d=%d,%d\r\n", t+1, VehicleTrunk[vehicleid][t][0], VehicleTrunk[vehicleid][t][1]);
  688. fwrite(handle, line);
  689. }
  690. for(new m=0; m < sizeof(VehicleMods[]); m++)
  691. {
  692. format(line, sizeof(line), "Mod%d=%d\r\n", m, VehicleMods[vehicleid][m]);
  693. fwrite(handle, line);
  694. }
  695. fclose(handle);
  696. }
  697.  
  698. UpdateVehicle(vehicleid, removeold)
  699. {
  700. if(VehicleCreated[vehicleid])
  701. {
  702. if(removeold)
  703. {
  704. new Float:health;
  705. GetVehicleHealth(VehicleID[vehicleid], health);
  706. new engine, lights, alarm, doors, bonnet, boot, objective;
  707. GetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  708. DestroyVehicle(VehicleID[vehicleid]);
  709. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  710. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  711. SetVehicleHealth(VehicleID[vehicleid], health);
  712. SetVehicleParamsEx(VehicleID[vehicleid], engine, lights, alarm, doors, bonnet, boot, objective);
  713. }
  714. else
  715. {
  716. VehicleID[vehicleid] = CreateVehicle(VehicleModel[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1],
  717. VehiclePos[vehicleid][2], VehiclePos[vehicleid][3], VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], 3600);
  718. }
  719. LinkVehicleToInterior(VehicleID[vehicleid], VehicleInterior[vehicleid]);
  720. SetVehicleVirtualWorld(VehicleID[vehicleid], VehicleWorld[vehicleid]);
  721. SetVehicleNumberPlate(VehicleID[vehicleid], VehicleNumberPlate[vehicleid]);
  722. for(new i=0; i < sizeof(VehicleMods[]); i++)
  723. {
  724. AddVehicleComponent(VehicleID[vehicleid], VehicleMods[vehicleid][i]);
  725. }
  726. ChangeVehiclePaintjob(VehicleID[vehicleid], VehiclePaintjob[vehicleid]);
  727. if(VehicleLock[vehicleid]) ToggleDoors(VehicleID[vehicleid], VEHICLE_PARAMS_ON);
  728. if(VehicleAlarm[vehicleid]) VehicleSecurity[VehicleID[vehicleid]] = 1;
  729. UpdateVehicleLabel(vehicleid, removeold);
  730. }
  731. }
  732.  
  733. UpdateVehicleLabel(vehicleid, removeold)
  734. {
  735. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  736. {
  737. if(removeold)
  738. {
  739. Delete3DTextLabel(VehicleLabel[vehicleid]);
  740. }
  741. new labeltext[128];
  742. format(labeltext, sizeof(labeltext), "For SALE !\nModel: %s\nPrice: $%s", VehicleNames[VehicleModel[vehicleid]-400], FormatMoney(VehicleValue[vehicleid]));
  743. VehicleLabel[vehicleid] = Create3DTextLabel(labeltext,0xFFFFFFFF, 0, 0, 0, 10.0, 0);
  744. Attach3DTextLabelToVehicle(VehicleLabel[vehicleid], VehicleID[vehicleid], 0, 0, 0);
  745. }
  746. }
  747.  
  748. IsValidVehicle(vehicleid)
  749. {
  750. if(vehicleid < 1 || vehicleid >= MAX_DVEHICLES) return 0;
  751. if(VehicleCreated[vehicleid]) return 1;
  752. return 0;
  753. }
  754.  
  755. GetFreeVehicleID()
  756. {
  757. for(new i=1; i < MAX_DVEHICLES; i++)
  758. {
  759. if(!VehicleCreated[i]) return i;
  760. }
  761. return 0;
  762. }
  763.  
  764. GetVehicleID(vehicleid)
  765. {
  766. for(new i=1; i < MAX_DVEHICLES; i++)
  767. {
  768. if(VehicleCreated[i] && VehicleID[i] == vehicleid) return i;
  769. }
  770. return 0;
  771. }
  772.  
  773. GetPlayerVehicles(playerid)
  774. {
  775. new playername[24];
  776. GetPlayerName(playerid, playername, sizeof(playername));
  777. new count;
  778. for(new i=1; i < MAX_DVEHICLES; i++)
  779. {
  780. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  781. {
  782. count++;
  783. }
  784. }
  785. return count;
  786. }
  787.  
  788. GetPlayerVehicleAccess(playerid, vehicleid)
  789. {
  790. if(IsValidVehicle(vehicleid))
  791. {
  792. if(VehicleCreated[vehicleid] == VEHICLE_DEALERSHIP)
  793. {
  794. if(IsAdmin(playerid, 1))
  795. {
  796. return 1;
  797. }
  798. }
  799. else if(VehicleCreated[vehicleid] == VEHICLE_PLAYER)
  800. {
  801. if(strcmp(VehicleOwner[vehicleid], PlayerName(playerid)) == 0)
  802. {
  803. return 2;
  804. }
  805. else if(GetPVarInt(playerid, "CarKeys") == vehicleid)
  806. {
  807. return 1;
  808. }
  809. }
  810. }
  811. else
  812. {
  813. return 1;
  814. }
  815. return 0;
  816. }
  817.  
  818. LoadDealerships()
  819. {
  820. new File:handle, count;
  821. new filename[64], line[256], s, key[64];
  822. for(new i=1; i < MAX_DEALERSHIPS; i++)
  823. {
  824. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", i);
  825. if(!fexist(filename)) continue;
  826. handle = fopen(filename, io_read);
  827. while(fread(handle, line))
  828. {
  829. StripNL(line);
  830. s = strfind(line, "=");
  831. if(!line[0] || s < 1) continue;
  832. strmid(key, line, 0, s++);
  833. if(strcmp(key, "Created") == 0) DealershipCreated[i] = strval(line[s]);
  834. else if(strcmp(key, "Pos") == 0) sscanf(line[s], "p,fff", DealershipPos[i][0],
  835. DealershipPos[i][1], DealershipPos[i][2]);
  836. }
  837. fclose(handle);
  838. if(DealershipCreated[i]) count++;
  839. }
  840. printf(" Loaded %d dealerships", count);
  841. }
  842.  
  843. SaveDealership(dealerid)
  844. {
  845. new filename[64], line[256];
  846. format(filename, sizeof(filename), DEALERSHIP_FILE_PATH "d%d.ini", dealerid);
  847. new File:handle = fopen(filename, io_write);
  848. format(line, sizeof(line), "Created=%d\r\n", DealershipCreated[dealerid]); fwrite(handle, line);
  849. format(line, sizeof(line), "Pos=%.3f,%.3f,%.3f\r\n", DealershipPos[dealerid][0],
  850. DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  851. fwrite(handle, line);
  852. fclose(handle);
  853. }
  854.  
  855. UpdateDealership(dealerid, removeold)
  856. {
  857. if(DealershipCreated[dealerid])
  858. {
  859. if(removeold)
  860. {
  861. Delete3DTextLabel(DealershipLabel[dealerid]);
  862. }
  863. new labeltext[32];
  864. format(labeltext, sizeof(labeltext), "");
  865. DealershipLabel[dealerid] = Create3DTextLabel(labeltext, 0xBB7700DD, DealershipPos[dealerid][0],
  866. DealershipPos[dealerid][1], DealershipPos[dealerid][2]+0.5, 20.0, 0);
  867. }
  868. }
  869.  
  870. IsValidDealership(dealerid)
  871. {
  872. if(dealerid < 1 || dealerid >= MAX_DEALERSHIPS) return 0;
  873. if(DealershipCreated[dealerid]) return 1;
  874. return 0;
  875. }
  876.  
  877. public MainTimer()
  878. {
  879. new Float:x, Float:y, Float:z;
  880.  
  881. for(new i=0; i < MAX_PLAYERS; i++)
  882. {
  883. if(IsPlayerConnected(i))
  884. {
  885. if(TrackCar[i])
  886. {
  887. GetVehiclePos(TrackCar[i], x, y, z);
  888. SetPlayerCheckpoint(i, x, y, z, 3);
  889. }
  890. }
  891. }
  892. }
  893.  
  894. public SaveTimer()
  895. {
  896. SaveVehicleIndex++;
  897. if(SaveVehicleIndex >= MAX_DVEHICLES) SaveVehicleIndex = 1;
  898. if(IsValidVehicle(SaveVehicleIndex)) SaveVehicle(SaveVehicleIndex);
  899. }
  900.  
  901. public StopAlarm(vehicleid)
  902. {
  903. ToggleAlarm(vehicleid, VEHICLE_PARAMS_OFF);
  904. }
  905.  
  906. public OnFilterScriptInit()
  907. {
  908.  
  909. Create3DTextLabel ("{FFFFFF}Tasteazã\n{c1c1c1}/vsell\n", 0xFFFFFFFF, 339.1168,-1526.9904,33.3719, 20, 0); // /vsell
  910. AddStaticPickup(19130, 23, 339.1168,-1526.9904,33.3719); // /vsell
  911.  
  912. LoadVehicles();
  913. LoadDealerships();
  914. for(new i=0; i < MAX_PLAYERS; i++)
  915. {
  916. if(IsPlayerConnected(i))
  917. {
  918. OnPlayerConnect(i);
  919. }
  920. }
  921. for(new i=1; i < MAX_DVEHICLES; i++)
  922. {
  923. UpdateVehicle(i, 0);
  924. }
  925. for(new i=1; i < MAX_DEALERSHIPS; i++)
  926. {
  927. UpdateDealership(i, 0);
  928. }
  929.  
  930. maintimer = SetTimer("MainTimer", 1000, true);
  931. savetimer = SetTimer("SaveTimer", 2222, true);
  932.  
  933. return 1;
  934. }
  935.  
  936. public OnFilterScriptExit()
  937. {
  938. KillTimer(maintimer);
  939. KillTimer(savetimer);
  940. for(new i=0; i < MAX_PLAYERS; i++)
  941. {
  942. if(IsPlayerConnected(i))
  943. {
  944. OnPlayerDisconnect(i, 1);
  945. }
  946. }
  947. for(new i=1; i < MAX_DVEHICLES; i++)
  948. {
  949. if(VehicleCreated[i])
  950. {
  951. DestroyVehicle(VehicleID[i]);
  952. if(VehicleCreated[i] == VEHICLE_DEALERSHIP)
  953. {
  954. Delete3DTextLabel(VehicleLabel[i]);
  955. }
  956. }
  957. }
  958. for(new i=1; i < MAX_DEALERSHIPS; i++)
  959. {
  960. if(DealershipCreated[i])
  961. {
  962. Delete3DTextLabel(DealershipLabel[i]);
  963. }
  964. }
  965. return 1;
  966. }
  967.  
  968. public OnPlayerConnect(playerid)
  969. {
  970.  
  971. return 1;
  972. }
  973.  
  974. public OnPlayerDisconnect(playerid, reason)
  975. {
  976. return 1;
  977. }
  978.  
  979. public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
  980. {
  981. if(IsPlayerConnected(playerid))
  982. {
  983. new Float:oldposx, Float:oldposy, Float:oldposz;
  984. new Float:tempposx, Float:tempposy, Float:tempposz;
  985. GetPlayerPos(playerid, oldposx, oldposy, oldposz);
  986. tempposx = (oldposx -x);
  987. tempposy = (oldposy -y);
  988. tempposz = (oldposz -z);
  989. if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
  990. {
  991. return 1;
  992. }
  993. }
  994. return 0;
  995. }
  996.  
  997. public NRGPersonal(vehicleid)
  998. {
  999. if(GetVehicleModel(vehicleid) == 522) { return 1; }
  1000. return 0;
  1001. }
  1002.  
  1003. public OnVehicleSpawn(vehicleid)
  1004. {
  1005. VehicleSecurity[vehicleid] = 0;
  1006. new id = GetVehicleID(vehicleid);
  1007. if(IsValidVehicle(id))
  1008. {
  1009. if(VehicleColor[id][0] >= 0 && VehicleColor[id][1] >= 0)
  1010. ChangeVehicleColor(vehicleid, VehicleColor[id][0], VehicleColor[id][1]);
  1011. LinkVehicleToInterior(vehicleid, VehicleInterior[id]);
  1012. SetVehicleVirtualWorld(vehicleid, VehicleWorld[id]);
  1013. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1014. {
  1015. AddVehicleComponent(vehicleid, VehicleMods[id][i]);
  1016. }
  1017. ChangeVehiclePaintjob(vehicleid, VehiclePaintjob[id]);
  1018. if(VehicleLock[id]) ToggleDoors(vehicleid, VEHICLE_PARAMS_ON);
  1019. if(VehicleAlarm[id]) VehicleSecurity[vehicleid] = 1;
  1020. }
  1021. return 1;
  1022. }
  1023.  
  1024.  
  1025. CMD:vrtunning(playerid, params[]) // Comanda care scoate tunning-ul.
  1026. {
  1027. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1028. {
  1029. new vehicleid = GetPlayerVehicleID(playerid);
  1030. new id = GetVehicleID(vehicleid);
  1031. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1032. return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* This is not your personal vehicle.");
  1033. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1034. {
  1035. RemoveVehicleComponent(VehicleID[id], GetVehicleComponentInSlot(VehicleID[id], i));
  1036. VehicleMods[id][i] = 0;
  1037. }
  1038. VehiclePaintjob[id] = 255;
  1039. ChangeVehiclePaintjob(VehicleID[id], 255);
  1040. SaveVehicle(id);
  1041. SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* You have removed all your vehicle mods.");
  1042. }
  1043. return 1;
  1044. }
  1045.  
  1046. CMD:vcolor(playerid, params[]) // Comanda cu ajutorul careia va puteti colora vehiculul || Credits: Armyw0w
  1047. {
  1048. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1049. {
  1050. new vehicleid = GetPlayerVehicleID(playerid);
  1051. new id = GetVehicleID(vehicleid);
  1052. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* This is not your personal vehicle.");
  1053. new color1, color2;
  1054. if ( sscanf(params, "dd", color1, color2) ) return SendClientMessage ( playerid, -1, "{FF6699}USAGE:{FFFFFF} /vcolor [culoarea 1] [culoarea 2]" );
  1055. VehicleColor[id][0] = color1;
  1056. VehicleColor[id][1] = color2;
  1057. SaveVehicle(id);
  1058. ChangeVehicleColor(VehicleID[id], color1, color2);
  1059. if(GetPlayerMoney(playerid) <= 0) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "{FFFFFF}* You don't have enough money for a vehicle respray.");
  1060. GivePlayerMoney(playerid, -250);
  1061. GameTextForPlayer(playerid, "~g~Vehicle respray bill -$250", 5000, 1);
  1062. }
  1063. return 1;
  1064. }
  1065.  
  1066. CMD:vsell(playerid, params[]) // Comanda cu ajutorul careia va puteti vinde vehiculul
  1067. {
  1068. new vehicleid = GetPlayerVehicleID(playerid);
  1069. new id = GetVehicleID(vehicleid);
  1070. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1071. {
  1072. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* This is not your personal vehicle.");
  1073. if(!PlayerToPoint(3.0,playerid,339.1168,-1526.9904,33.3719)) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "{FFFFFF}* You are not at dealership.");
  1074. new msg[128];
  1075. VehicleCreated[id] = 0;
  1076. new money = VehicleValue[id]/2;
  1077. GivePlayerMoney(playerid, money);
  1078. format(msg, sizeof(msg), "{FFFFFF}* You have sold your vehicle for {66FF66}$%s.", FormatMoney(money));
  1079. SendClientMessage(playerid, COLOR_WHITE, msg);
  1080. RemovePlayerFromVehicle(playerid);
  1081. DestroyVehicle(VehicleID[id]);
  1082. SaveVehicle(id);
  1083. }
  1084. return 1;
  1085. }
  1086.  
  1087.  
  1088. CMD:vpark(playerid, params[]) // Comanda cu ajutorul careia va puteti parca vehiculul.
  1089. {
  1090. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* You are not in your personal vehicle.");
  1091. new i = GetVehicleID( GetPlayerVehicleID( playerid ));
  1092. if( !VehicleCreated[ i ] ) return SendClientMessage( playerid, -1, "{FFFFFF}* This is not your personal vehicle." );
  1093. GetVehiclePos(VehicleID[i], VehiclePos[i][0], VehiclePos[i][1], VehiclePos[i][2]);
  1094. GetVehicleZAngle(VehicleID[i], VehiclePos[i][3]);
  1095. VehicleInterior[i] = GetPlayerInterior(playerid);
  1096. VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
  1097. UpdateVehicle(i, 1);
  1098. PutPlayerInVehicle(playerid, VehicleID[i], 0);
  1099. SaveVehicle(i);
  1100. SendClientMessage( playerid, -1, "{FFFFFF}* You have parked your vehicle here." );
  1101.  
  1102. return 1;
  1103. }
  1104.  
  1105. /*CMD:mycars(playerid, params[]) // Comanda cu ajutorul careia va puteti vedea vehiculele.
  1106. {
  1107. new playername[24];
  1108. GetPlayerName(playerid, playername, sizeof(playername));
  1109. new info[256];
  1110. for(new i=1; i < MAX_DVEHICLES; i++)
  1111. {
  1112. if(VehicleCreated[i] == VEHICLE_PLAYER && strcmp(VehicleOwner[i], playername) == 0)
  1113. {
  1114. SendClientMessage(playerid, 0xCCD802AA, " ");
  1115. SendClientMessage(playerid, 0xCCD802AA, "{1589FF}VibePlay:{FFFFFF} Your Personal Vehicles");
  1116. format(info, sizeof(info), "%sID: %d Model: %s \n", info, i, VehicleNames[VehicleModel[i]-400]);
  1117. SendClientMessage(playerid, COLOR_WHITE, info);
  1118. }
  1119. }
  1120. return 1;
  1121. }*/
  1122.  
  1123.  
  1124. CMD:vlock(playerid, params[]) // Comanda care incuie/descuie vehiculul.
  1125. {
  1126. new vehicleid;
  1127. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1128. {
  1129. vehicleid = GetPlayerVehicleID(playerid);
  1130. }
  1131. else
  1132. {
  1133. vehicleid = GetClosestVehicle(playerid);
  1134. if(!PlayerToVehicle(playerid, vehicleid, 5.0)) vehicleid = 0;
  1135. }
  1136. if(!vehicleid) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Your personal vehicle isn't around.");
  1137. new id = GetVehicleID(vehicleid);
  1138. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* This is not your personal vehicle.");
  1139. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1140. return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* This is not your personal vehicle.");
  1141. new engine, lights, alarm, doors, bonnet, boot, objective;
  1142. GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1143. if(doors == 1)
  1144. {
  1145. doors = 0;
  1146. VehicleLock[id] = 0;
  1147. GameTextForPlayer(playerid, "~g~UNLOCKED", 3000, 6);
  1148. }
  1149. else
  1150. {
  1151. doors = 1;
  1152. VehicleLock[id] = 1;
  1153. GameTextForPlayer(playerid, "~r~LOCKED", 3000, 6);
  1154. }
  1155. SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
  1156. SaveVehicle(id);
  1157. return 1;
  1158. }
  1159.  
  1160.  
  1161. CMD:addv(playerid, params[]) // Comanda care adauga un vehicul la dealership (Necesita logare RCON).
  1162. {
  1163. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1164. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Comanda nu poate fi folosita acum.");
  1165. new model[32], modelid, dealerid, color1, color2, price;
  1166. if(sscanf(params, "dsddd", dealerid, model, color1, color2, price))
  1167. return SendClientMessage(playerid, COLOR_GREY, "{FF6699}USAGE:{FFFFFF} /addv [dealerid] [model] [color1] [color2] [price]");
  1168. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Id-ul dealership-ului este invalid.");
  1169. if(IsNumeric(model)) modelid = strval(model);
  1170. else modelid = GetVehicleModelIDFromName(model);
  1171. if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Id-ul vehiculului este invalid.");
  1172. if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Culoare invalida.");
  1173. if(price < 0) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Pret invalid.");
  1174. new Float:X, Float:Y, Float:Z, Float:angle;
  1175. GetPlayerPos(playerid, X, Y, Z);
  1176. GetPlayerFacingAngle(playerid, angle);
  1177. X += floatmul(floatsin(-angle, degrees), 4.0);
  1178. Y += floatmul(floatcos(-angle, degrees), 4.0);
  1179. for(new i=1; i < MAX_DVEHICLES; i++)
  1180. {
  1181. if(!VehicleCreated[i])
  1182. {
  1183. new msg[128];
  1184. VehicleCreated[i] = VEHICLE_DEALERSHIP;
  1185. VehicleModel[i] = modelid;
  1186. VehiclePos[i][0] = X;
  1187. VehiclePos[i][1] = Y;
  1188. VehiclePos[i][2] = Z;
  1189. VehiclePos[i][3] = angle+90.0;
  1190. VehicleColor[i][0] = color1;
  1191. VehicleColor[i][1] = color2;
  1192. VehicleInterior[i] = GetPlayerInterior(playerid);
  1193. VehicleWorld[i] = GetPlayerVirtualWorld(playerid);
  1194. VehicleValue[i] = price;
  1195. valstr(VehicleOwner[i], dealerid);
  1196. VehicleNumberPlate[i] = DEFAULT_NUMBER_PLATE;
  1197. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  1198. {
  1199. VehicleTrunk[i][d][0] = 0;
  1200. VehicleTrunk[i][d][1] = 0;
  1201. }
  1202. for(new d=0; d < sizeof(VehicleMods[]); d++)
  1203. {
  1204. VehicleMods[i][d] = 0;
  1205. }
  1206. VehiclePaintjob[i] = 255;
  1207. VehicleLock[i] = 0;
  1208. VehicleAlarm[i] = 0;
  1209. UpdateVehicle(i, 0);
  1210. SaveVehicle(i);
  1211. format(msg, sizeof(msg), "{FFFFFF}* Vehiculul cu id-ul %d a fost adaugat la dealership-ul %d", i, dealerid);
  1212. SendClientMessage(playerid, COLOR_WHITE, msg);
  1213. return 1;
  1214. }
  1215. }
  1216. SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* STOC-ul dealership-ului este plin ! Nu puteti adauga mai multe vehicule.");
  1217. return 1;
  1218. }
  1219.  
  1220. CMD:editv(playerid, params[]) // Comanda care editeaza un vehicul aflat la dealership (Necesita logare RCON).
  1221. {
  1222. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1223. if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
  1224. {
  1225. new id = GetVehicleID(GetPlayerVehicleID(playerid));
  1226. if(!IsValidVehicle(id)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Acesta nu este un vehicul dinamic pentru a putea fi editat.");
  1227. SetPVarInt(playerid, "DialogValue1", id);
  1228. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1229. return 1;
  1230. }
  1231. new vehicleid;
  1232. if(sscanf(params, "d", vehicleid)) return SendClientMessage(playerid, COLOR_GREY, "{FF6699}USAGE:{FFFFFF} /editv [vehicleid]");
  1233. if(!IsValidVehicle(vehicleid)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Id-ul vehiculului este invalid.");
  1234. SetPVarInt(playerid, "DialogValue1", vehicleid);
  1235. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1236. return 1;
  1237. }
  1238.  
  1239. CMD:adddealership(playerid, params[]) // Comanda care adauga un dealership (Necesita logare RCON).
  1240. {
  1241. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1242. if(!IsPlayerSpawned(playerid)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Comanda nu poate fi folosita acum.");
  1243. for(new i=1; i < MAX_DEALERSHIPS; i++)
  1244. {
  1245. if(!DealershipCreated[i])
  1246. {
  1247. new msg[128];
  1248. DealershipCreated[i] = 1;
  1249. GetPlayerPos(playerid, DealershipPos[i][0], DealershipPos[i][1], DealershipPos[i][2]);
  1250. UpdateDealership(i, 0);
  1251. SaveDealership(i);
  1252. format(msg, sizeof(msg), "{FFFFFF}* Dealership-ul cu id-ul %d a fost creat.", i);
  1253. SendClientMessage(playerid, COLOR_WHITE, msg);
  1254. return 1;
  1255. }
  1256. }
  1257. SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Nu poti crea mai mult de 10 dealership-uri!");
  1258. return 1;
  1259. }
  1260.  
  1261. CMD:deletedealership(playerid, params[]) // Comanda care sterge un dealership (Necesita logare RCON).
  1262. {
  1263. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1264. new dealerid, msg[128];
  1265. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "{FF6699}USAGE:{FFFFFF} /deletedealership [dealerid]");
  1266. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}* Id-ul dealership-ului este invalid.");
  1267. for(new i=1; i < MAX_DVEHICLES; i++)
  1268. {
  1269. if(VehicleCreated[i] == VEHICLE_DEALERSHIP && strval(VehicleOwner[i]) == dealerid)
  1270. {
  1271. DestroyVehicle(VehicleID[i]);
  1272. Delete3DTextLabel(VehicleLabel[i]);
  1273. VehicleCreated[i] = 0;
  1274. }
  1275. }
  1276. DealershipCreated[dealerid] = 0;
  1277. Delete3DTextLabel(DealershipLabel[dealerid]);
  1278. SaveDealership(dealerid);
  1279. format(msg, sizeof(msg), "{FFFFFF}* Ai sters dealershipul cu id-ul %d", dealerid);
  1280. SendClientMessage(playerid, COLOR_WHITE, msg);
  1281. return 1;
  1282. }
  1283.  
  1284. CMD:movedealership(playerid, params[]) // Comanda cu ajutorul careia puteti muta un dealership (Necesita logare RCON).
  1285. {
  1286. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1287. new dealerid, msg[128];
  1288. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "{FF6699}USAGE:{FFFFFF} /movedealership [dealerid]");
  1289. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Id-ul dealership-ului este invalid.");
  1290. GetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1291. UpdateDealership(dealerid, 1);
  1292. SaveDealership(dealerid);
  1293. format(msg, sizeof(msg), "{FFFFFF}* Ai mutat dealership-ul cu id-ul %d aici", dealerid);
  1294. SendClientMessage(playerid, COLOR_WHITE, msg);
  1295. return 1;
  1296. }
  1297.  
  1298. CMD:gotodealership(playerid, params[]) // Comanda cu ajutorul careia va puteti teleporta la un dealership (Necesita logare RCON).
  1299. {
  1300. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1301. new dealerid, msg[128];
  1302. if(sscanf(params, "d", dealerid)) return SendClientMessage(playerid, COLOR_GREY, "{FF6699}USAGE:{FFFFFF} /gotodealership [dealerid]");
  1303. if(!IsValidDealership(dealerid)) return SendClientMessage(playerid, COLOR_RED, "Id-ul dealership-ului este invalid.");
  1304. SetPlayerPos(playerid, DealershipPos[dealerid][0], DealershipPos[dealerid][1], DealershipPos[dealerid][2]);
  1305. format(msg, sizeof(msg), "{FFFFFF}* Te-ai teleportat la dealership-ul cu id-ul %d", dealerid);
  1306. SendClientMessage(playerid, COLOR_WHITE, msg);
  1307. return 1;
  1308. }
  1309.  
  1310. public OnPlayerCommandText(playerid, cmdtext[])
  1311. {
  1312. new pos, funcname[32];
  1313. while(cmdtext[++pos] > ' ')
  1314. {
  1315. funcname[pos-1] = tolower(cmdtext[pos]);
  1316. }
  1317. strins(funcname, "cmd_", 0, sizeof(funcname));
  1318. while (cmdtext[pos] == ' ') pos++;
  1319. if(!cmdtext[pos])
  1320. {
  1321. return CallLocalFunction(funcname, "is", playerid, "\1");
  1322. }
  1323. return CallLocalFunction(funcname, "is", playerid, cmdtext[pos]);
  1324. }
  1325.  
  1326. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  1327. {
  1328. new msg[128];
  1329. new id = GetVehicleID(vehicleid);
  1330. if(!ispassenger)
  1331. {
  1332. if(IsValidVehicle(id) && VehicleCreated[id] == VEHICLE_PLAYER)
  1333. {
  1334. if(IsPlayerAdmin(playerid))
  1335. {
  1336. SendClientMessage(playerid, COLOR_GREY,"Poti conduce acest vehicul deoarece esti Admin RCON.");
  1337. }
  1338. else
  1339. if(GetPlayerVehicleAccess(playerid, id) < 2)
  1340. {
  1341. ClearAnimations(playerid);
  1342. format(msg, sizeof(msg), "{CCCCCC}» %s personal al lui{FFFFFF} %s", VehicleNames[GetVehicleModel(vehicleid)-400], VehicleOwner[id]);
  1343. SendClientMessage(playerid, COLOR_GREY, msg);
  1344. }
  1345. }
  1346. }
  1347. return 1;
  1348. }
  1349.  
  1350. public OnPlayerStateChange(playerid, newstate, oldstate)
  1351. {
  1352. if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
  1353. {
  1354. new vehicleid = GetPlayerVehicleID(playerid);
  1355. if(VehicleSecurity[vehicleid] == 1)
  1356. {
  1357. ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
  1358. SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
  1359. }
  1360. }
  1361. else
  1362. {
  1363.  
  1364. }
  1365. if(newstate == PLAYER_STATE_DRIVER)
  1366. {
  1367. new vehicleid = GetPlayerVehicleID(playerid);
  1368. new id = GetVehicleID(vehicleid);
  1369. if(IsValidVehicle(id))
  1370. {
  1371. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  1372. {
  1373. SetPVarInt(playerid, "DialogValue1", id);
  1374. ShowDialog(playerid, DIALOG_VEHICLE_BUY);
  1375. return 1;
  1376. }
  1377. }
  1378. if(IsBicycle(vehicleid))
  1379. {
  1380. ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
  1381. }
  1382. }
  1383. return 1;
  1384. }
  1385.  
  1386. public OnVehicleMod(playerid, vehicleid, componentid)
  1387. {
  1388. new id = GetVehicleID(vehicleid);
  1389. InitComponents(componentid);
  1390. if(IsValidVehicle(id))
  1391. {
  1392. VehicleMods[id][GetVehicleComponentType(componentid)] = componentid;
  1393. SaveVehicle(id);
  1394. }
  1395. return 1;
  1396. }
  1397.  
  1398. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1399. {
  1400. new id = GetVehicleID(vehicleid);
  1401. if(IsValidVehicle(id))
  1402. {
  1403. VehiclePaintjob[id] = paintjobid;
  1404. SaveVehicle(id);
  1405. }
  1406. return 1;
  1407. }
  1408.  
  1409. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1410. {
  1411. new id = GetVehicleID(vehicleid);
  1412. if(IsValidVehicle(id))
  1413. {
  1414. VehicleColor[id][0] = color1;
  1415. VehicleColor[id][1] = color2;
  1416. SaveVehicle(id);
  1417. }
  1418. return 1;
  1419. }
  1420.  
  1421. ShowDialog(playerid, dialogid)
  1422. {
  1423. switch(dialogid)
  1424. {
  1425. case DIALOG_VEHICLE_PARK:
  1426. {
  1427. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1428. new caption[32], info[256];
  1429. format(caption, sizeof(caption), "Park your vehicle.");
  1430. if(GetPlayerVehicleAccess(playerid, vehicleid) >= 2)
  1431. {
  1432. format(info, sizeof(info), "Park");
  1433. }
  1434. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, info, "Select", "Cancel");
  1435. }
  1436. case DIALOG_VEHICLE_BUY:
  1437. {
  1438. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1439. new caption[32], info[256];
  1440. format(caption, sizeof(caption), "Vehicle Buy (ID:%d)", vehicleid);
  1441. format(info, sizeof(info), "Model: %s\nPrice: $%s", VehicleNames[VehicleModel[vehicleid]-400], FormatMoney(VehicleValue[vehicleid]));
  1442. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, info, "Yes", "No");
  1443. }
  1444. case DIALOG_VEHICLE_PLATE:
  1445. {
  1446. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Change your vehicle number plate", "Type your new license plate :", "Schimba", "Inapoi");
  1447. }
  1448. case DIALOG_EDITVEHICLE:
  1449. {
  1450. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1451. new caption[32], info[256];
  1452. format(caption, sizeof(caption), "Editarea Vehicul (ID:%d)", vehicleid);
  1453. format(info, sizeof(info), "1. Pret: [$%d]\n2. Model: [%d (%s)]\n3. Culori: [%d] [%d]\n4. Inmatriculare: [%s]",
  1454. VehicleValue[vehicleid], VehicleModel[vehicleid], VehicleNames[VehicleModel[vehicleid]-400],
  1455. VehicleColor[vehicleid][0], VehicleColor[vehicleid][1], VehicleNumberPlate[vehicleid]);
  1456. strcat(info, "\n5. Sterge vehiculul\n6. Parcheaza vehiculul\n7. Teleportare la vehicul", sizeof(info));
  1457. strcat(info, "\n\nTasteazã: [nr] [value1] [value2]", sizeof(info));
  1458. ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, info, "OK", "Cancel");
  1459. }
  1460. }
  1461. }
  1462.  
  1463. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1464. {
  1465. if(dialogid == DIALOG_ERROR)
  1466. {
  1467. ShowDialog(playerid, DialogReturn[playerid]);
  1468. return 1;
  1469. }
  1470. DialogReturn[playerid] = dialogid;
  1471. if(dialogid == DIALOG_VEHICLE_PARK)
  1472. {
  1473. if(response)
  1474. {
  1475. switch(listitem)
  1476. {
  1477. case 0:
  1478. {
  1479. new vehicleid = GetPVarInt(playerid, "DialogValue1");
  1480. if(GetPlayerVehicleAccess(playerid, vehicleid) < 2)
  1481. {
  1482. ShowErrorDialog(playerid, "{FFFFFF}* This is not your personal vehicle.");
  1483. return 1;
  1484. }
  1485. GetVehiclePos(VehicleID[vehicleid], VehiclePos[vehicleid][0], VehiclePos[vehicleid][1], VehiclePos[vehicleid][2]);
  1486. GetVehicleZAngle(VehicleID[vehicleid], VehiclePos[vehicleid][3]);
  1487. VehicleInterior[vehicleid] = GetPlayerInterior(playerid);
  1488. VehicleWorld[vehicleid] = GetPlayerVirtualWorld(playerid);
  1489. SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* Your vehicle was parked here.");
  1490. UpdateVehicle(vehicleid, 1);
  1491. PutPlayerInVehicle(playerid, VehicleID[vehicleid], 0);
  1492. SaveVehicle(vehicleid);
  1493. }
  1494. }
  1495. }
  1496. return 1;
  1497. }
  1498. if(dialogid == DIALOG_VEHICLE_BUY)
  1499. {
  1500. if(response)
  1501. {
  1502. if(GetPlayerVehicles(playerid) >= MAX_PLAYER_VEHICLES)
  1503. {
  1504. ShowErrorDialog(playerid, "{FFFFFF}* You have reached maximum vehicles number. Max: " #MAX_PLAYER_VEHICLES );
  1505. return 1;
  1506. }
  1507. new id = GetPVarInt(playerid, "DialogValue1");
  1508. if(GetPlayerMoney(playerid) < VehicleValue[id])
  1509. {
  1510. SendClientMessage(playerid, COLOR_LIGHTBLUE, "{FFFFFF}* You don't have enough money to buy this vehicle.");
  1511. RemovePlayerFromVehicle(playerid);
  1512. return 1;
  1513. }
  1514. new freeid = GetFreeVehicleID();
  1515. if(!freeid)
  1516. {
  1517. ShowErrorDialog(playerid, "{FFFFFF}* The stock is sold out !");
  1518. return 1;
  1519. }
  1520. GivePlayerMoney(playerid, -VehicleValue[id]);
  1521. new dealerid = strval(VehicleOwner[id]);
  1522. VehicleCreated[freeid] = VEHICLE_PLAYER;
  1523. VehicleModel[freeid] = VehicleModel[id];
  1524. VehiclePos[freeid] = DealershipPos[dealerid];
  1525. VehicleColor[freeid] = VehicleColor[id];
  1526. VehicleInterior[freeid] = VehicleInterior[id];
  1527. VehicleWorld[freeid] = VehicleWorld[id];
  1528. VehicleValue[freeid] = VehicleValue[id];
  1529. GetPlayerName(playerid, VehicleOwner[freeid], sizeof(VehicleOwner[]));
  1530. VehicleNumberPlate[freeid] = DEFAULT_NUMBER_PLATE;
  1531. for(new d=0; d < sizeof(VehicleTrunk[]); d++)
  1532. {
  1533. VehicleTrunk[freeid][d][0] = 0;
  1534. VehicleTrunk[freeid][d][1] = 0;
  1535. }
  1536. for(new d=0; d < sizeof(VehicleMods[]); d++)
  1537. {
  1538. VehicleMods[freeid][d] = VehicleMods[id][d];
  1539. }
  1540. VehiclePaintjob[freeid] = VehiclePaintjob[id];
  1541. VehicleLock[freeid] = 0;
  1542. VehicleAlarm[freeid] = 0;
  1543. UpdateVehicle(freeid, 0);
  1544. SaveVehicle(freeid);
  1545. new msg[128];
  1546. format(msg, sizeof(msg), "{FFFFFF}* You have bought this vehicle for{66FF66} $%s !", FormatMoney(VehicleValue[id]));
  1547. SendClientMessage(playerid, COLOR_WHITE, msg);
  1548. RemovePlayerFromVehicle(playerid);
  1549. SetPlayerPos(playerid,330.2957,-1516.5658,35.5723); // Dupa achizitionarea vehiculului, playerul va fi teleportat aici. Schimbati voi cu coordonatele dealership-ului vostru.
  1550. }
  1551. else
  1552. {
  1553. new id = GetPVarInt(playerid, "DialogValue1");
  1554. if(GetPlayerVehicleAccess(playerid, id) < 1)
  1555. {
  1556. RemovePlayerFromVehicle(playerid);
  1557. }
  1558. }
  1559. return 1;
  1560. }
  1561. if(dialogid == DIALOG_VEHICLE_PLATE)
  1562. {
  1563. if(response)
  1564. {
  1565. if(strlen(inputtext) < 1 || strlen(inputtext) >= sizeof(VehicleNumberPlate[]))
  1566. {
  1567. ShowErrorDialog(playerid, "Lungimea textului este invalida.");
  1568. return 1;
  1569. }
  1570. new vehicleid = GetVehicleID(vehicleid);
  1571. new id = GetPlayerVehicleID(playerid);
  1572. strmid(VehicleNumberPlate[id], inputtext, 0, sizeof(VehicleNumberPlate[]));
  1573. SaveVehicle(id);
  1574. SetVehicleNumberPlate(vehicleid, inputtext);
  1575. SetVehicleToRespawn(vehicleid);
  1576. new msg[128];
  1577. format(msg, sizeof(msg), "* Your new license plate is now: %s", inputtext);
  1578. SendClientMessage(playerid, COLOR_WHITE, msg);
  1579. }
  1580. return 1;
  1581. }
  1582. if(dialogid == DIALOG_EDITVEHICLE)
  1583. {
  1584. if(response)
  1585. {
  1586. new id = GetPVarInt(playerid, "DialogValue1");
  1587. new nr, params[128];
  1588. sscanf(inputtext, "ds", nr, params);
  1589. switch(nr)
  1590. {
  1591. case 1:
  1592. {
  1593. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1594. new value = strval(params);
  1595. if(value < 0) value = 0;
  1596. VehicleValue[id] = value;
  1597. UpdateVehicleLabel(id, 1);
  1598. SaveVehicle(id);
  1599. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1600. }
  1601. case 2:
  1602. {
  1603. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1604. new value;
  1605. if(IsNumeric(params)) value = strval(params);
  1606. else value = GetVehicleModelIDFromName(params);
  1607. if(value < 400 || value > 611)
  1608. {
  1609. ShowErrorDialog(playerid, "Id-ul vehiculului este invalid.");
  1610. return 1;
  1611. }
  1612. VehicleModel[id] = value;
  1613. for(new i=0; i < sizeof(VehicleMods[]); i++)
  1614. {
  1615. VehicleMods[id][i] = 0;
  1616. }
  1617. VehiclePaintjob[id] = 255;
  1618. UpdateVehicle(id, 1);
  1619. SaveVehicle(id);
  1620. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1621. }
  1622. case 3:
  1623. {
  1624. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1625. new color1, color2;
  1626. sscanf(params, "dd", color1, color2);
  1627. VehicleColor[id][0] = color1;
  1628. VehicleColor[id][1] = color2;
  1629. SaveVehicle(id);
  1630. ChangeVehicleColor(VehicleID[id], color1, color2);
  1631. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1632. }
  1633. case 4:
  1634. {
  1635. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1636. if(strlen(params) < 1 || strlen(params) > 8)
  1637. {
  1638. ShowErrorDialog(playerid, "Lungimea textului este invalida.");
  1639. return 1;
  1640. }
  1641. strmid(VehicleNumberPlate[id], params, 0, sizeof(params));
  1642. SaveVehicle(id);
  1643. SetVehicleNumberPlate(VehicleID[id], params);
  1644. SetVehicleToRespawn(VehicleID[id]);
  1645. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1646. }
  1647. case 5:
  1648. {
  1649. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1650. DestroyVehicle(VehicleID[id]);
  1651. if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
  1652. {
  1653. Delete3DTextLabel(VehicleLabel[id]);
  1654. }
  1655. VehicleCreated[id] = 0;
  1656. SaveVehicle(id);
  1657. new msg[128];
  1658. format(msg, sizeof(msg), "Ai sters vehiculul cu id-ul %d", id);
  1659. SendClientMessage(playerid, COLOR_WHITE, msg);
  1660. }
  1661. case 6:
  1662. {
  1663. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1664. if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER)
  1665. {
  1666. return 1;
  1667. }
  1668. GetVehiclePos(VehicleID[id], VehiclePos[id][0], VehiclePos[id][1], VehiclePos[id][2]);
  1669. GetVehicleZAngle(VehicleID[id], VehiclePos[id][3]);
  1670. VehicleInterior[id] = GetPlayerInterior(playerid);
  1671. VehicleWorld[id] = GetPlayerVirtualWorld(playerid);
  1672. SendClientMessage(playerid, COLOR_WHITE, "{FFFFFF}* Ai parcat vehiculul aici.");
  1673. UpdateVehicle(id, 1);
  1674. PutPlayerInVehicle(playerid, VehicleID[id], 0);
  1675. SaveVehicle(id);
  1676. ShowDialog(playerid, DIALOG_EDITVEHICLE);
  1677. }
  1678. case 7:
  1679. {
  1680. if(!IsAdmin(playerid, 1)) return SendClientMessage(playerid, COLOR_RED, "{FFFFFF}SERVER: Unknown command.");
  1681. new Float:x, Float:y, Float:z;
  1682. GetVehiclePos(VehicleID[id], x, y, z);
  1683. SetPlayerPos(playerid, x, y, z+1);
  1684. new msg[128];
  1685. format(msg, sizeof(msg), "{FFFFFF}* Te-ai teleportat la vehiculul cu id-ul %d", id);
  1686. SendClientMessage(playerid, COLOR_WHITE, msg);
  1687. }
  1688. }
  1689. }
  1690. return 1;
  1691. }
  1692. return 0;
  1693. }
  1694.  
  1695. stock sscanf(string[], format[], {Float,_}:...)
  1696. {
  1697. #if defined isnull
  1698. if (isnull(string))
  1699. #else
  1700. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  1701. #endif
  1702. {
  1703. return format[0];
  1704. }
  1705. new
  1706. formatPos = 0,
  1707. stringPos = 0,
  1708. paramPos = 2,
  1709. paramCount = numargs(),
  1710. delim = ' ';
  1711. while (string[stringPos] && string[stringPos] <= ' ')
  1712. {
  1713. stringPos++;
  1714. }
  1715. while (paramPos < paramCount && string[stringPos])
  1716. {
  1717. switch (format[formatPos++])
  1718. {
  1719. case '\0':
  1720. {
  1721. return 0;
  1722. }
  1723. case 'i', 'd':
  1724. {
  1725. new
  1726. neg = 1,
  1727. num = 0,
  1728. ch = string[stringPos];
  1729. if (ch == '-')
  1730. {
  1731. neg = -1;
  1732. ch = string[++stringPos];
  1733. }
  1734. do
  1735. {
  1736. stringPos++;
  1737. if ('0' <= ch <= '9')
  1738. {
  1739. num = (num * 10) + (ch - '0');
  1740. }
  1741. else
  1742. {
  1743. return -1;
  1744. }
  1745. }
  1746. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1747. setarg(paramPos, 0, num * neg);
  1748. }
  1749. case 'h', 'x':
  1750. {
  1751. new
  1752. num = 0,
  1753. ch = string[stringPos];
  1754. do
  1755. {
  1756. stringPos++;
  1757. switch (ch)
  1758. {
  1759. case 'x', 'X':
  1760. {
  1761. num = 0;
  1762. continue;
  1763. }
  1764. case '0' .. '9':
  1765. {
  1766. num = (num << 4) | (ch - '0');
  1767. }
  1768. case 'a' .. 'f':
  1769. {
  1770. num = (num << 4) | (ch - ('a' - 10));
  1771. }
  1772. case 'A' .. 'F':
  1773. {
  1774. num = (num << 4) | (ch - ('A' - 10));
  1775. }
  1776. default:
  1777. {
  1778. return -1;
  1779. }
  1780. }
  1781. }
  1782. while ((ch = string[stringPos]) > ' ' && ch != delim);
  1783. setarg(paramPos, 0, num);
  1784. }
  1785. case 'c':
  1786. {
  1787. setarg(paramPos, 0, string[stringPos++]);
  1788. }
  1789. case 'f':
  1790. {
  1791. new
  1792. end = stringPos - 1,
  1793. ch;
  1794. while ((ch = string[++end]) && ch != delim) {}
  1795. string[end] = '\0';
  1796. setarg(paramPos,0,_:floatstr(string[stringPos]));
  1797. string[end] = ch;
  1798. stringPos = end;
  1799. }
  1800. case 'p':
  1801. {
  1802. delim = format[formatPos++];
  1803. continue;
  1804. }
  1805. case '\'':
  1806. {
  1807. new
  1808. end = formatPos - 1,
  1809. ch;
  1810. while ((ch = format[++end]) && ch != '\'') {}
  1811. if (!ch)
  1812. {
  1813. return -1;
  1814. }
  1815. format[end] = '\0';
  1816. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  1817. {
  1818. if (format[end + 1])
  1819. {
  1820. return -1;
  1821. }
  1822. return 0;
  1823. }
  1824. format[end] = '\'';
  1825. stringPos = ch + (end - formatPos);
  1826. formatPos = end + 1;
  1827. }
  1828. case 'u':
  1829. {
  1830. new
  1831. end = stringPos - 1,
  1832. id = 0,
  1833. bool:num = true,
  1834. ch;
  1835. while ((ch = string[++end]) && ch != delim)
  1836. {
  1837. if (num)
  1838. {
  1839. if ('0' <= ch <= '9')
  1840. {
  1841. id = (id * 10) + (ch - '0');
  1842. }
  1843. else
  1844. {
  1845. num = false;
  1846. }
  1847. }
  1848. }
  1849. if (num && IsPlayerConnected(id))
  1850. {
  1851. setarg(paramPos, 0, id);
  1852. }
  1853. else
  1854. {
  1855. #if !defined foreach
  1856. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  1857. #define __SSCANF_FOREACH__
  1858. #endif
  1859. string[end] = '\0';
  1860. num = false;
  1861. new
  1862. name[MAX_PLAYER_NAME];
  1863. id = end - stringPos;
  1864. foreach (Player, playerid)
  1865. {
  1866. GetPlayerName(playerid, name, sizeof (name));
  1867. if (!strcmp(name, string[stringPos], true, id))
  1868. {
  1869. setarg(paramPos, 0, playerid);
  1870. num = true;
  1871. break;
  1872. }
  1873. }
  1874. if (!num)
  1875. {
  1876. setarg(paramPos, 0, INVALID_PLAYER_ID);
  1877. }
  1878. string[end] = ch;
  1879. #if defined __SSCANF_FOREACH__
  1880. #undef foreach
  1881. #undef __SSCANF_FOREACH__
  1882. #endif
  1883. }
  1884. stringPos = end;
  1885. }
  1886. case 's', 'z':
  1887. {
  1888. new
  1889. i = 0,
  1890. ch;
  1891. if (format[formatPos])
  1892. {
  1893. while ((ch = string[stringPos++]) && ch != delim)
  1894. {
  1895. setarg(paramPos, i++, ch);
  1896. }
  1897. if (!i)
  1898. {
  1899. return -1;
  1900. }
  1901. }
  1902. else
  1903. {
  1904. while ((ch = string[stringPos++]))
  1905. {
  1906. setarg(paramPos, i++, ch);
  1907. }
  1908. }
  1909. stringPos--;
  1910. setarg(paramPos, i, '\0');
  1911. }
  1912. default:
  1913. {
  1914. continue;
  1915. }
  1916. }
  1917. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  1918. {
  1919. stringPos++;
  1920. }
  1921. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  1922. {
  1923. stringPos++;
  1924. }
  1925. paramPos++;
  1926. }
  1927. do
  1928. {
  1929. if ((delim = format[formatPos++]) > ' ')
  1930. {
  1931. if (delim == '\'')
  1932. {
  1933. while ((delim = format[formatPos++]) && delim != '\'') {}
  1934. }
  1935. else if (delim != 'z')
  1936. {
  1937. return delim;
  1938. }
  1939. }
  1940. }
  1941. while (delim > ' ');
  1942. return 0;
  1943. }
  1944. stock FormatMoney(money)
  1945. {
  1946. new str[30];
  1947. if(money >= 0)
  1948. {
  1949. format(str, sizeof(str), "%d", money);
  1950. if(1000 <= money < 10000) strins(str, ",", 1, sizeof(str));
  1951. else if(10000 <= money < 100000) strins(str, ",", 2, sizeof(str));
  1952. else if(100000 <= money < 1000000) strins(str, ",", 3, sizeof(str));
  1953. else if(1000000 <= money < 10000000) { strins(str, ",", 1, sizeof(str)); strins(str, ",", 5, sizeof(str)); }
  1954. else if(10000000 <= money < 100000000) { strins(str, ",", 2, sizeof(str)); strins(str, ",", 6, sizeof(str)); }
  1955. else if(100000000 <= money < 1000000000) { strins(str, ",", 3, sizeof(str)); strins(str, ",", 7, sizeof(str)); }
  1956. else if(money >= 1000000000) { strins(str, ",", 1, sizeof(str)); strins(str, ",", 5, sizeof(str)); strins(str, ",", 9, sizeof(str)); }
  1957. }
  1958. else
  1959. {
  1960. format(str, sizeof(str), "-%d", money-(money*2));
  1961. if(-1000 >= money > -10000) strins(str, ",", 2, sizeof(str));
  1962. else if(-10000 >= money > -100000) strins(str, ",", 3, sizeof(str));
  1963. else if(-100000 >= money > -1000000) strins(str, ",", 4, sizeof(str));
  1964. else if(-1000000 >= money > -10000000) { strins(str, ",", 2, sizeof(str)); strins(str, ",", 6, sizeof(str)); }
  1965. else if(-10000000 >= money > -100000000) { strins(str, ",", 3, sizeof(str)); strins(str, ",", 7, sizeof(str)); }
  1966. else if(-100000000 >= money > -1000000000) { strins(str, ",", 4, sizeof(str)); strins(str, ",", 8, sizeof(str)); }
  1967. else if(money <= -1000000000) { strins(str, ",", 2, sizeof(str)); strins(str, ",", 6, sizeof(str)); strins(str, ",", 10, sizeof(str));}
  1968. }
  1969. return str;
  1970. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement