Dishonored

Vehiclesssssssss

Dec 17th, 2013
147
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 89.14 KB | None | 0 0
  1. /*
  2. ================================================================================
  3.  
  4. Evo Vehicle Ownership
  5. IX.3
  6. Essentials
  7. By Exertion ( A.K.A "EvoturK" )
  8.  
  9. Copyright © 2011
  10.  
  11. ================================================================================
  12.  
  13. EvoENGINE 3.0
  14. Performanced Evo Script Engine
  15.  
  16. ================================================================================
  17. */
  18.  
  19. // =============================[INCLUDES]=================================== //
  20. #include <a_samp> // SA:MP Include By SA:MP Team
  21. #include <EvoVehicle> // I-Sync Include By Exertion
  22. #include <zcmd> // ZCMD Include By ZeeX
  23. #include <YSI\y_ini> // Y_INI Include By Y_Less
  24. #include <YSI\y_timers> // Y_TIMERS Include By Y_Less
  25. #include <foreach> // Foreach Include By Y_Less
  26.  
  27. // =============================[DEFINES]==================================== //
  28. // Defining it as Filter Script
  29. #define FILTERSCRIPT
  30.  
  31. // System Version Number
  32. #define VERSION "9.3"
  33.  
  34. // System Options
  35. #define MAX_EVO_VEHICLE 50000
  36. #define MAX_PLAYER_EVO_VEHICLE 35
  37.  
  38. #define MAX_SHOWROOM 20
  39.  
  40. #define AUTOMATIC_PARK true
  41.  
  42. // System Dirs
  43. #define EVOVEHICLE_MAIN_DIR "EVO"
  44. #define EVOVEHICLE_VEHICLE_DIR "EVO/Vehicles"
  45. #define EVOVEHICLE_SHOWROOM_DIR "EVO/Showrooms"
  46.  
  47. // System Dialogs
  48. // - Normal Vehicle Buying
  49. #define DIALOG_BUY_VEHICLE 1600
  50.  
  51. // - EVO Admin Panel
  52. #define DIALOG_EVO_PANELPASS 1601
  53. #define DIALOG_EVO_PANELHOME 1602
  54. #define DIALOG_EVO_PANELVEHID 1603
  55. #define DIALOG_EVO_PANELCPASS 1604
  56. #define DIALOG_EVO_PANELABOUT 1605
  57.  
  58. // - Vehicle Management in Admin Panel
  59. #define DIALOG_EVO_PANELVEH 1606
  60. #define DIALOG_EVO_PANELVEH_MODEL 1607
  61. #define DIALOG_EVO_PANELVEH_OWNER 1608
  62. #define DIALOG_EVO_PANELVEH_COL1 1609
  63. #define DIALOG_EVO_PANELVEH_COL2 1610
  64. #define DIALOG_EVO_PANELVEH_PRICE 1611
  65. #define DIALOG_EVO_PANELVEH_SEC 1612
  66. #define DIALOG_EVO_PANELVEH_LOCK 1613
  67. #define DIALOG_EVO_PANELVEH_PLATE 1614
  68. #define DIALOG_EVO_PANELVEH_PJ 1615
  69.  
  70. // - Add Evo Vehicle in Admin Panel
  71. #define DIALOG_EVO_PANELNEW_MODEL 1616
  72. #define DIALOG_EVO_PANELNEW_PRICE 1617
  73. #define DIALOG_EVO_PANELNEW_COL1 1618
  74. #define DIALOG_EVO_PANELNEW_COL2 1619
  75.  
  76. // - Add Showroom in Admin Panel
  77. #define DIALOG_EVO_PANELNSR_NAME 1620
  78.  
  79. // - Showroom Management in Admin Panel
  80. #define DIALOG_EVO_PANELSRID 1621
  81. #define DIALOG_EVO_PANELSR 1622
  82. #define DIALOG_EVO_PANELSR_NAME 1623
  83.  
  84. // - Player Evo Vehicle Management
  85. #define DIALOG_A_HOME 1624
  86. #define DIALOG_A_VEHLIST 1625
  87. #define DIALOG_A_PLATE 1626
  88.  
  89. // - Buying Vehicle from Showroom
  90. #define DIALOG_SRVEH 1627
  91. #define DIALOG_SRVEH_COLOR 1628
  92.  
  93. // ============================[FORWARDS]==================================== //
  94. // For System
  95. forward LoadEVO(name[], value[]);
  96. forward SaveEVO();
  97.  
  98. // For Evo Script Version Controller
  99. forward EvoVehicle_Init(index, response_code, data[]);
  100. forward EvoVehicle_InGame(index, response_code, data[]);
  101.  
  102. // For Vehicle
  103. forward CreateEvoVehicle(Modelid, Owner[], Float:X, Float:Y, Float:Z, Float:Rot, Col1, Col2, Price);
  104. forward DeleteEvoVehicle(vehicleid);
  105. forward LoadEvoVehicles();
  106. forward LoadEvoVehicle_evo(EvoVehicleID, name[], value[]);
  107. forward SaveEvoVehicles(last);
  108.  
  109. // For Showroom
  110. forward CreateShowroom(Name[], Float:X, Float:Y, Float:Z);
  111. forward DeleteShowroom(showroomid);
  112. forward LoadShowrooms();
  113. forward LoadShowroom_evo(ShowroomID, name[], value[]);
  114. forward SaveShowrooms(last);
  115.  
  116. // ===========================[VARIABLES]==================================== //
  117. // For System
  118. new EVOPanelPass[150];
  119.  
  120. new Unloading;
  121.  
  122. new LastEvoVehicleID,
  123. LastSaved,
  124. LastLoaded;
  125.  
  126. new LastShowroomID,
  127. LastSavedSR,
  128. LastLoadedSR;
  129.  
  130. // For Players
  131. enum pInfos
  132. {
  133. pRoot
  134. };
  135.  
  136. new pInfo[MAX_PLAYERS][pInfos];
  137.  
  138. new SelectedEV[MAX_PLAYERS];
  139.  
  140. new SelectedModel[MAX_PLAYERS];
  141. new SelectedPrice[MAX_PLAYERS];
  142. new SelectedCol1[MAX_PLAYERS];
  143. new SelectedCol2[MAX_PLAYERS];
  144.  
  145. new SelectedSR[MAX_PLAYERS];
  146. new SelectedName[MAX_PLAYERS][100];
  147.  
  148. // For Vehicles
  149. new Iterator:EVs<MAX_EVO_VEHICLE>;
  150.  
  151. enum EvoVehicleInfos
  152. {
  153. EVModel,
  154. EVOwner[40],
  155. Float:EVX,
  156. Float:EVY,
  157. Float:EVZ,
  158. Float:EVRot,
  159. EVCol1,
  160. EVCol2,
  161. EVPrice,
  162. EVSecurity,
  163. EVLock,
  164. EVPlate[30],
  165. EVPJ,
  166. EVVehID,
  167. EVExist,
  168. EVNeedSave
  169. };
  170.  
  171. new EvoVehicles[MAX_EVO_VEHICLE][EvoVehicleInfos];
  172.  
  173. new EvoVehicleComponent[MAX_EVO_VEHICLE][14];
  174.  
  175. new VehEVID[MAX_VEHICLES];
  176. new VehInSystem[MAX_VEHICLES];
  177.  
  178. // For Showrooms
  179. new Iterator:SRs<MAX_SHOWROOM>;
  180.  
  181. enum ShowroomInfos
  182. {
  183. SRName[100],
  184. Float:SRX,
  185. Float:SRY,
  186. Float:SRZ,
  187. SRExist,
  188. SRNeedSave,
  189. SRPick,
  190. Text3D:SR3D
  191. };
  192.  
  193. new Showrooms[MAX_SHOWROOM][ShowroomInfos];
  194.  
  195. // Vehicle Colors
  196. enum VehColorInfos
  197. {
  198. VCName[40],
  199. VCColor
  200. };
  201.  
  202. new VehColors[13][VehColorInfos]={
  203. {"White", 1},
  204. {"Gray", 157},
  205. {"Black", 0},
  206. {"Red", 3},
  207. {"Green Yellow", 145},
  208. {"Green", 154},
  209. {"Yellow", 194},
  210. {"Dodger Blue", 152},
  211. {"Dark Blue", 223},
  212. {"Light Blue", 166},
  213. {"Turquoise", 163},
  214. {"Orange", 158},
  215. {"Purple", 211}
  216. };
  217.  
  218. // Vehicle Names
  219. new VehNames[][] =
  220. {
  221. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
  222. "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
  223. "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
  224. "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BFInjection",
  225. "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
  226. "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
  227. "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
  228. "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
  229. "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "BerkleysRCVan",
  230. "Skimmer", "PCJ-600", "Faggio", "Freeway", "RCBaron", "RCRaider", "Glendale",
  231. "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
  232. "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
  233. "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "NewsChopper",
  234. "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
  235. "BlistaCompact", "PoliceMaverick", "Boxvillde", "Benson", "Mesa", "RCGoblin",
  236. "HotringRacerA", "HotringRacerB", "BloodringBanger", "Rancher", "SuperGT",
  237. "Elegant", "Journey", "Bike", "MountainBike", "Beagle", "Cropduster", "Stunt",
  238. "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
  239. "FCR-900", "NRG-500", "HPV1000", "CementTruck", "TowTruck", "Fortune",
  240. "Cadrona", "FBITruck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
  241. "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
  242. "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
  243. "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
  244. "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
  245. "Elegy", "Raindance", "RCTiger", "Flash", "Tahoma", "Savanna", "Bandito",
  246. "FreightFlat", "StreakCarriage", "Kart", "Mower", "Dune", "Sweeper",
  247. "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
  248. "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
  249. "FreightBox", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "LSPD",
  250. "SFPD", "LVPD", "PoliceRanger", "Picador", "S.W.A.T", "Alpha",
  251. "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
  252. "Tiller", "UtilityTrailer"
  253. };
  254.  
  255. // Vehicle State Names
  256. new LockInfos[2][30]={"Unlocked", "Locked"};
  257. new SecurityInfos[3][40]={"None", "Killing", "Slapping"};
  258.  
  259. // Connection Errors
  260. new ConnectionErrors[6][40]=
  261. {
  262. "Wrong Website",
  263. "No Socket",
  264. "Couldn't Connect",
  265. "Couldn't Write",
  266. "String Too Long",
  267. "Wait Some Seconds"
  268. };
  269.  
  270. // ================================[TIMERS]================================== //
  271. task SaveEvoVehicleSystem[150000]()
  272. {
  273. SaveEVO();
  274. SaveEvoVehicles(0);
  275. SaveShowrooms(0);
  276. }
  277.  
  278. // ==============================[FUNCTIONS]================================= //
  279. // Message Functions
  280. // - Info
  281. INFO(playerid, msg[])
  282. {
  283. new msg2[512];
  284. format(msg2, 512, "{ADFF2F}« ! » {FFFFFF}%s", msg);
  285. return SendClientMessage(playerid, -1, msg2);
  286. }
  287.  
  288. // - Error
  289. ERROR(playerid, msg[])
  290. {
  291. new msg2[512];
  292. format(msg2, 512, "{FF3030}« ! » {FFFFFF}%s", msg);
  293. return SendClientMessage(playerid, -1, msg2);
  294. }
  295.  
  296. // - Usage
  297. USAGE(playerid, msg[])
  298. {
  299. new msg2[512];
  300. format(msg2, 512, "{FFFFFF}« USAGE » %s", msg);
  301. return SendClientMessage(playerid, -1, msg2);
  302. }
  303.  
  304. // Essential Functions
  305. // - GetName
  306. GetName(playerid)
  307. {
  308. new Name[40];
  309. GetPlayerName(playerid, Name, 40);
  310. return Name;
  311. }
  312.  
  313. // - IsNumeric
  314. IsNumeric(string[])
  315. {
  316. for (new i = 0, j = strlen(string);
  317. i < j; i++)
  318. {
  319. if (string[i] > '9' || string[i] < '0')
  320. return 0;
  321. }
  322. return 1;
  323. }
  324.  
  325. // - Strtok
  326. strtok(const string[], &index)
  327. {
  328. new length = strlen(string);
  329. while ((index < length) && (string[index] <= ' '))
  330. {
  331. index++;
  332. }
  333.  
  334. new offset = index;
  335. new result[20];
  336. while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  337. {
  338. result[index - offset] = string[index];
  339. index++;
  340. }
  341. result[index - offset] = EOS;
  342. return result;
  343. }
  344.  
  345. // - Strrest
  346. strrest(const string[], &index)
  347. {
  348. new length = strlen(string);
  349. while ((index < length) && (string[index] <= ' '))
  350. {
  351. index++;
  352. }
  353. new offset = index;
  354. new result[128];
  355. while ((index < length) && ((index - offset) < (sizeof(result) - 1)))
  356. {
  357. result[index - offset] = string[index];
  358. index++;
  359. }
  360. result[index - offset] = EOS;
  361. return result;
  362. }
  363.  
  364. // - SSCANF
  365. stock sscanf(string[], format[], {Float,_}:...)
  366. {
  367. #if defined isnull
  368. if (isnull(string))
  369. #else
  370. if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
  371. #endif
  372. {
  373. return format[0];
  374. }
  375. #pragma tabsize 4
  376. new
  377. formatPos = 0,
  378. stringPos = 0,
  379. paramPos = 2,
  380. paramCount = numargs(),
  381. delim = ' ';
  382. while (string[stringPos] && string[stringPos] <= ' ')
  383. {
  384. stringPos++;
  385. }
  386. while (paramPos < paramCount && string[stringPos])
  387. {
  388. switch (format[formatPos++])
  389. {
  390. case '\0':
  391. {
  392. return 0;
  393. }
  394. case 'i', 'd':
  395. {
  396. new
  397. neg = 1,
  398. num = 0,
  399. ch = string[stringPos];
  400. if (ch == '-')
  401. {
  402. neg = -1;
  403. ch = string[++stringPos];
  404. }
  405. do
  406. {
  407. stringPos++;
  408. if ('0' <= ch <= '9')
  409. {
  410. num = (num * 10) + (ch - '0');
  411. }
  412. else
  413. {
  414. return -1;
  415. }
  416. }
  417. while ((ch = string[stringPos]) > ' ' && ch != delim);
  418. setarg(paramPos, 0, num * neg);
  419. }
  420. case 'h', 'x':
  421. {
  422. new
  423. num = 0,
  424. ch = string[stringPos];
  425. do
  426. {
  427. stringPos++;
  428. switch (ch)
  429. {
  430. case 'x', 'X':
  431. {
  432. num = 0;
  433. continue;
  434. }
  435. case '0' .. '9':
  436. {
  437. num = (num << 4) | (ch - '0');
  438. }
  439. case 'a' .. 'f':
  440. {
  441. num = (num << 4) | (ch - ('a' - 10));
  442. }
  443. case 'A' .. 'F':
  444. {
  445. num = (num << 4) | (ch - ('A' - 10));
  446. }
  447. default:
  448. {
  449. return -1;
  450. }
  451. }
  452. }
  453. while ((ch = string[stringPos]) > ' ' && ch != delim);
  454. setarg(paramPos, 0, num);
  455. }
  456. case 'c':
  457. {
  458. setarg(paramPos, 0, string[stringPos++]);
  459. }
  460. case 'f':
  461. {
  462.  
  463. new changestr[16], changepos = 0, strpos = stringPos;
  464. while(changepos < 16 && string[strpos] && string[strpos] != delim)
  465. {
  466. changestr[changepos++] = string[strpos++];
  467. }
  468. changestr[changepos] = '\0';
  469. setarg(paramPos,0,_:floatstr(changestr));
  470. }
  471. case 'p':
  472. {
  473. delim = format[formatPos++];
  474. continue;
  475. }
  476. case '\'':
  477. {
  478. new
  479. end = formatPos - 1,
  480. ch;
  481. while ((ch = format[++end]) && ch != '\'') {}
  482. if (!ch)
  483. {
  484. return -1;
  485. }
  486. format[end] = '\0';
  487. if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
  488. {
  489. if (format[end + 1])
  490. {
  491. return -1;
  492. }
  493. return 0;
  494. }
  495. format[end] = '\'';
  496. stringPos = ch + (end - formatPos);
  497. formatPos = end + 1;
  498. }
  499. case 'u':
  500. {
  501. new
  502. end = stringPos - 1,
  503. id = 0,
  504. bool:num = true,
  505. ch;
  506. while ((ch = string[++end]) && ch != delim)
  507. {
  508. if (num)
  509. {
  510. if ('0' <= ch <= '9')
  511. {
  512. id = (id * 10) + (ch - '0');
  513. }
  514. else
  515. {
  516. num = false;
  517. }
  518. }
  519. }
  520. if (num && IsPlayerConnected(id))
  521. {
  522. setarg(paramPos, 0, id);
  523. }
  524. else
  525. {
  526. #if !defined foreach
  527. #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
  528. #define __SSCANF_FOREACH__
  529. #endif
  530. string[end] = '\0';
  531. num = false;
  532. new
  533. name[MAX_PLAYER_NAME];
  534. id = end - stringPos;
  535. foreach (Player, playerid)
  536. {
  537. GetPlayerName(playerid, name, sizeof (name));
  538. if (!strcmp(name, string[stringPos], true, id))
  539. {
  540. setarg(paramPos, 0, playerid);
  541. num = true;
  542. break;
  543. }
  544. }
  545. if (!num)
  546. {
  547. setarg(paramPos, 0, INVALID_PLAYER_ID);
  548. }
  549. string[end] = ch;
  550. #if defined __SSCANF_FOREACH__
  551. #undef foreach
  552. #undef __SSCANF_FOREACH__
  553. #endif
  554. }
  555. stringPos = end;
  556. }
  557. case 's', 'z':
  558. {
  559. new
  560. i = 0,
  561. ch;
  562. if (format[formatPos])
  563. {
  564. while ((ch = string[stringPos++]) && ch != delim)
  565. {
  566. setarg(paramPos, i++, ch);
  567. }
  568. if (!i)
  569. {
  570. return -1;
  571. }
  572. }
  573. else
  574. {
  575. while ((ch = string[stringPos++]))
  576. {
  577. setarg(paramPos, i++, ch);
  578. }
  579. }
  580. stringPos--;
  581. setarg(paramPos, i, '\0');
  582. }
  583. default:
  584. {
  585. continue;
  586. }
  587. }
  588. while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
  589. {
  590. stringPos++;
  591. }
  592. while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
  593. {
  594. stringPos++;
  595. }
  596. paramPos++;
  597. }
  598. do
  599. {
  600. if ((delim = format[formatPos++]) > ' ')
  601. {
  602. if (delim == '\'')
  603. {
  604. while ((delim = format[formatPos++]) && delim != '\'') {}
  605. }
  606. else if (delim != 'z')
  607. {
  608. return delim;
  609. }
  610. }
  611. }
  612. while (delim > ' ');
  613. return 0;
  614. }
  615.  
  616. // Vehicle Functions
  617. // - GetVehicleModelIDFromName
  618. GetVehicleModelIDFromName(vehname[])
  619. {
  620. new Result = -1;
  621.  
  622. for(new BModel; BModel < 211; BModel++)
  623. {
  624. if(!strfind(VehNames[BModel],vehname,true))
  625. {
  626. Result = BModel+400;
  627. break;
  628. }
  629. }
  630.  
  631. return Result;
  632. }
  633.  
  634. // - GetEmptyEvoVehicleID
  635. GetEmptyEvoVehicleID()
  636. {
  637. return Iter_Free(EVs);
  638. }
  639.  
  640. // - LockEvoVehicle
  641. LockEvoVehicle(vehicleid, lockinfo)
  642. {
  643. for(new i; i < GetMaxPlayers(); i++)
  644. {
  645. if(!IsPlayerConnected(i)) continue;
  646. SetVehicleParamsForPlayer(EvoVehicles[vehicleid][EVVehID], i, 0, lockinfo);
  647. }
  648. }
  649.  
  650. // - SaveAllVehicleComponentsToFile
  651. SaveAllVehicleComponentsToFile(INI:File, EVID)
  652. {
  653. new ComponentKey[10];
  654.  
  655. for(new i; i < 14; i++)
  656. {
  657. format(ComponentKey, 10, "COMPONENT%d", i+1);
  658. EvoVehicleComponent[EVID][i] = GetVehicleComponentInSlot(EvoVehicles[EVID][EVVehID], i);
  659. INI_WriteInt(File, ComponentKey, EvoVehicleComponent[EVID][i]);
  660. }
  661. }
  662.  
  663. // - LoadAllVehicleComponents
  664. LoadAllVehicleComponents(EVID, name[], value[])
  665. {
  666. new ComponentKey[10];
  667.  
  668. for(new i; i < 14; i++)
  669. {
  670. format(ComponentKey, 10, "COMPONENT%d", i+1);
  671. INI_Int(ComponentKey, EvoVehicleComponent[ EVID ][i]);
  672. }
  673. return 1;
  674. }
  675.  
  676. // - LoadVehicleMod
  677. LoadVehicleMod(EVID)
  678. {
  679. if(EvoVehicles[ EVID ][EVPJ] != -1)
  680. {
  681. ChangeVehiclePaintjob(EvoVehicles[ EVID ][EVVehID], EvoVehicles[ EVID ][EVPJ]);
  682. }
  683.  
  684. for(new i; i < 14; i++)
  685. {
  686. AddVehicleComponent(EvoVehicles[ EVID ][EVVehID], EvoVehicleComponent[ EVID ][i]);
  687. }
  688. }
  689.  
  690. // - GetVehicleMod
  691. GetVehicleMod(EVID)
  692. {
  693. for(new i; i < 14; i++)
  694. {
  695. EvoVehicleComponent[ EVID ][i] = GetVehicleComponentInSlot(EvoVehicles[ EVID ][EVVehID], i);
  696. }
  697. }
  698.  
  699.  
  700. // For Showrooms
  701. // -GetEmptyShowroomID
  702. GetEmptyShowroomID()
  703. {
  704. return Iter_Free(SRs);
  705. }
  706.  
  707. // For Admins
  708. // - ShowAdminEVPanel
  709. ShowAdminEvPanel(playerid, vehicleid)
  710. {
  711. new DiaString[1024], String[128];
  712.  
  713. format(DiaString, 1024, "{FFFFFF}Model \t{ADFF2F}%s\n", VehNames[ EvoVehicles[vehicleid][EVModel]-400 ]);
  714. format(DiaString, 1024, "%s{FFFFFF}Owner \t{ADFF2F}%s\n", DiaString, EvoVehicles[vehicleid][EVOwner]);
  715. format(DiaString, 1024, "%s{FFFFFF}Color1 \t{ADFF2F}%d\n", DiaString, EvoVehicles[vehicleid][EVCol1]);
  716. format(DiaString, 1024, "%s{FFFFFF}Color2 \t{ADFF2F}%d\n", DiaString, EvoVehicles[vehicleid][EVCol2]);
  717. format(DiaString, 1024, "%s{FFFFFF}Price \t{ADFF2F}%d$\n", DiaString, EvoVehicles[vehicleid][EVPrice]);
  718. format(DiaString, 1024, "%s{FFFFFF}Security \t{ADFF2F}%s\n", DiaString, SecurityInfos[ EvoVehicles[vehicleid][EVSecurity] ]);
  719. format(DiaString, 1024, "%s{FFFFFF}Lock \t{ADFF2F}%s\n", DiaString, LockInfos[ EvoVehicles[vehicleid][EVLock] ]);
  720. format(DiaString, 1024, "%s{FFFFFF}Plate \t{ADFF2F}%s\n", DiaString, EvoVehicles[vehicleid][EVPlate]);
  721. format(DiaString, 1024, "%s{FFFFFF}Paintjob \t{ADFF2F}%d\n", DiaString, EvoVehicles[vehicleid][EVPJ]);
  722. format(DiaString, 1024, "%s{FFFFFF}Get Vehicle\n{FFFFFF}Delete Vehicle", DiaString);
  723.  
  724. format(String, 128, "{FFFFFF}Evo Vehicle ID {ADFF2F}%d", vehicleid);
  725.  
  726. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH, DIALOG_STYLE_LIST, String, DiaString, "Edit", "Back");
  727.  
  728. }
  729.  
  730. // For Players
  731. // - ShowPlayerEVPanel
  732. ShowPlayerEVPanel(playerid, vehicleid)
  733. {
  734. new DiaString[1024], String[128];
  735.  
  736. format(DiaString, 1024, "{FFFFFF}Get Vehicle\n{FFFFFF}Sell Vehicle\n");
  737. format(DiaString, 1024, "%s{FFFFFF}Doors \t{ADFF2F}%s\n", DiaString, LockInfos[ EvoVehicles[vehicleid][EVLock] ]);
  738. format(DiaString, 1024, "%s{FFFFFF}Security \t{ADFF2F}%s\n", DiaString, SecurityInfos[ EvoVehicles[vehicleid][EVSecurity] ]);
  739. format(DiaString, 1024, "%s{FFFFFF}Plate \t{ADFF2F}%s\n", DiaString, EvoVehicles[vehicleid][EVPlate]);
  740.  
  741. #if AUTOMATIC_PARK == true
  742. format(DiaString, 1024, "%s{FFFFFF}Park Vehicle\n", DiaString);
  743. #endif
  744.  
  745. format(String, 128, "{FFFFFF}Vehicle {ADFF2F}%s", VehNames[ EvoVehicles[vehicleid][EVModel]-400 ]);
  746.  
  747. ShowPlayerDialog(playerid, DIALOG_A_HOME, DIALOG_STYLE_LIST, String, DiaString, "Edit", "Close");
  748. }
  749.  
  750. // - LoadLockedEvoVehiclesForPlayer
  751. LoadLockedEvoVehiclesForPlayer(playerid)
  752. {
  753. foreach(new i : EVs)
  754. {
  755. if(EvoVehicles[i][EVExist] == 0) continue;
  756. SetVehicleParamsForPlayer(EvoVehicles[i][EVVehID], playerid, 0, EvoVehicles[i][EVLock]);
  757. }
  758. }
  759.  
  760. // - GetPlayerVehicleCount
  761. GetPlayerVehicleCount(playerid)
  762. {
  763. new Result;
  764.  
  765. foreach(new i : EVs)
  766. {
  767. if(EvoVehicles[i][EVExist] == 0) continue;
  768. if(!strcmp(GetName(playerid), EvoVehicles[i][EVOwner], true)) Result++;
  769. }
  770.  
  771. return Result;
  772. }
  773.  
  774. // - GetPlayerVehicleInSlot
  775. GetPlayerVehicleInSlot(playerid, slotid)
  776. {
  777. new Count, Result;
  778.  
  779. foreach(new i : EVs)
  780. {
  781. if(EvoVehicles[i][EVExist] == 0) continue;
  782. if(!strcmp(GetName(playerid), EvoVehicles[i][EVOwner], true)) Count++;
  783. if(Count == slotid) { Result = i; break; }
  784. }
  785.  
  786. return Result;
  787. }
  788.  
  789.  
  790. // For I-Sync
  791.  
  792. // - _GetVehicleOwner
  793. stock _GetVehicleOwner(vehicleid)
  794. {
  795. return EvoVehicles[vehicleid][EVOwner];
  796. }
  797.  
  798. // - _SetVehicleOwner
  799. stock _SetVehicleOwner(vehicleid, owner[])
  800. {
  801. return format(EvoVehicles[vehicleid][EVOwner], 40, owner);
  802. }
  803.  
  804. // - _GetVehiclePrice
  805. stock _GetVehiclePrice(vehicleid)
  806. {
  807. return EvoVehicles[vehicleid][EVPrice];
  808. }
  809.  
  810. // - _SetVehiclePrice
  811. stock _SetVehiclePrice(vehicleid, price)
  812. {
  813. return EvoVehicles[vehicleid][EVPrice] = price;
  814. }
  815.  
  816. // - _GetSystemIDFromVehicleID
  817. stock _GetSystemIDFromVehicleID(vehicleid)
  818. {
  819. if(VehInSystem[vehicleid] == 1) return VehEVID[vehicleID];
  820. return -1;
  821. }
  822.  
  823. // - _IsVehicleInSystem
  824. stock _IsVehicleInSystem(vehicleid)
  825. {
  826. return VehInSystem[vehicleid];
  827. }
  828.  
  829. // - _CreateEvoVehicle
  830. stock _CreateEvoVehicle(Modelid, Owner[], Float:X, Float:Y, Float:Z, Float:Rot, Col1, Col2, Price)
  831. {
  832. return CreateEvoVehicle(Modelid, Owner, X, Y, Z, Rot, Col1, Col2, Price);
  833. }
  834.  
  835. // - _DeleteEvoVehicle
  836. stock _DeleteEvoVehicle(vehicleid)
  837. {
  838. return DeleteEvoVehicle(vehicleid);
  839. }
  840.  
  841. // ================================[COMMANDS]================================ //
  842. // Evo Vehicle Administrating & Help
  843.  
  844. // - /evovehicle
  845. COMMAND:evovehicle(playerid, params[])
  846. {
  847. new parameter[20];
  848.  
  849. if(!sscanf(params, "s", parameter))
  850. {
  851. if(!strcmp("help", parameter, true))
  852. {
  853.  
  854. ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_MSGBOX, "{ADFF2F}Evo Vehicle Ownership Help", "{FFFFFF}You can get in a vehicle on road for buy it.\n{FFFFFF}When you got in vehicle, a dialog asks u : \"Do you want to buy it?\".\n{FFFFFF}If you select \"Yes\", you can buy it.\n \n{FFFFFF}And you can manage your vehicles with {ADFF2F}/myveh {FFFFFF}command", "Close", "");
  855.  
  856. }else if(!strcmp("manage", parameter, true))
  857. {
  858.  
  859. if(pInfo[playerid][pRoot] == 1) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  860. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  861.  
  862. if(!strcmp(EVOPanelPass, "default", true))
  863. {
  864. ShowPlayerDialog(playerid, DIALOG_EVO_PANELPASS, DIALOG_STYLE_PASSWORD, "{ADFF2F}Evo Vehicle Ownership Administrating Panel Login", "{FFFFFF}You didn't set a password for {ADFF2F}Evo Vehicle Ownership Administrating Panel {FFFFFF}before.\n{FFFFFF}Please select a password for EVO Administrating Panel to finish setup.", "Select", "Cancel");
  865. }else{
  866. ShowPlayerDialog(playerid, DIALOG_EVO_PANELPASS, DIALOG_STYLE_PASSWORD, "{ADFF2F}Evo Vehicle Ownership Administrating Panel Login", "{FFFFFF}Enter the password for login {ADFF2F}Evo Vehicle Ownership Administrating Panel", "Login", "Cancel");
  867. }
  868. }else if(!strcmp("versioncontrol", parameter, true))
  869. {
  870.  
  871. HTTP(playerid, HTTP_GET, "evoturk.p.ht/versions/evoaraba-essentials-en.txt", "", "EvoVehicle_InGame");
  872.  
  873. }else return ERROR(playerid, "Wrong parameter!");
  874. }else return USAGE(playerid, "/evovehicle {ADFF2F}[help/manage/versioncontrol]");
  875. return 1;
  876. }
  877.  
  878. // - /addev
  879. COMMAND:addev(playerid, params[])
  880. {
  881. if(pInfo[playerid][pRoot] == 0) return ERROR(playerid, "You cannot add vehicle in system without ROOT Permission");
  882. new tmp[60], idx;
  883. tmp = strtok(params, idx);
  884. if(!strlen(tmp)) return USAGE(playerid, "/addev {ADFF2F}[model][price][color1][color2][owner]"), USAGE(playerid, "If you want to add vehicle without owner, set vehicle owner's name as: -");
  885. new omodel;
  886.  
  887. if(IsNumeric(tmp))
  888. {
  889. omodel = strval(tmp);
  890. }else{
  891. omodel = GetVehicleModelIDFromName(tmp);
  892. }
  893.  
  894. if(omodel < 400 || omodel > 600) return ERROR(playerid, "Wrong vehicle model");
  895.  
  896. tmp = strtok(params, idx);
  897. if(!strlen(tmp)) return USAGE(playerid, "/addev {ADFF2F}[model][price][color1][color2][owner]"), USAGE(playerid, "If you want to add vehicle without owner, set vehicle owner's name as: -");
  898. new oprice = strval(tmp);
  899.  
  900. tmp = strtok(params, idx);
  901. if(!strlen(tmp)) return USAGE(playerid, "/addev {ADFF2F}[model][price][color1][color2][owner]"), USAGE(playerid, "If you want to add vehicle without owner, set vehicle owner's name as: -");
  902. new ocolor1 = strval(tmp);
  903.  
  904. tmp = strtok(params, idx);
  905. if(!strlen(tmp)) return USAGE(playerid, "/addev {ADFF2F}[model][price][color1][color2][owner]"), USAGE(playerid, "If you want to add vehicle without owner, set vehicle owner's name as: -");
  906. new ocolor2 = strval(tmp);
  907.  
  908. tmp = strtok(params, idx);
  909. if(!strlen(tmp)) return USAGE(playerid, "/addev {ADFF2F}[model][price][color1][color2][owner]"), USAGE(playerid, "If you want to add vehicle without owner, set vehicle owner's name as: -");
  910.  
  911. new Float:pX, Float:pY, Float:pZ, Float:pRot;
  912. GetPlayerPos(playerid, pX, pY, pZ);
  913. GetPlayerFacingAngle(playerid, pRot);
  914.  
  915. pX += 5.0 * floatcos(pRot + 90, degrees);
  916. pY += 5.0 * floatsin(pRot + 90, degrees);
  917.  
  918. new CreatedID = CreateEvoVehicle(omodel, tmp, pX, pY, pZ, pRot+90, ocolor1, ocolor2, oprice);
  919.  
  920. INFO(playerid, "You added a vehicle in system");
  921.  
  922. new String[64];
  923.  
  924. format(String, 64, "ID of the vehicle that you added : {ADFF2F}%d", CreatedID);
  925. INFO(playerid, String);
  926.  
  927. INFO(playerid, "You can manage the vehicle that you add in Evo Vehicle Ownership panel.");
  928.  
  929. return 1;
  930. }
  931.  
  932. // - /addsr
  933. COMMAND:addsr(playerid, params[])
  934. {
  935. if(pInfo[playerid][pRoot] == 0) return ERROR(playerid, "You cannot add showroom in system without ROOT Permission");
  936. new tmp[256], idx;
  937. tmp = strrest(params, idx);
  938. if(!strlen(tmp)) return USAGE(playerid, "/addsr {ADFF2F}[name]");
  939.  
  940. new CreatedID, String[128], Float:pX, Float:pY, Float:pZ;
  941. GetPlayerPos(playerid, pX, pY, pZ);
  942.  
  943. CreatedID = CreateShowroom(tmp, pX, pY, pZ);
  944.  
  945. INFO(playerid, "You added a showroom in system");
  946.  
  947. format(String, 128, "ID of the showroom that you added : %d", CreatedID);
  948. INFO(playerid, String);
  949.  
  950. INFO(playerid, "You can add vehicle in this showroom like that adding vehicle in system");
  951.  
  952. format(String, 128, "Additional you must make vehicle's owner Showroom%d", CreatedID);
  953. INFO(playerid, String);
  954.  
  955. return 1;
  956. }
  957.  
  958.  
  959. // Player Evo Vehicle Management
  960.  
  961. // - /myveh
  962. COMMAND:myveh(playerid, params[])
  963. {
  964. new PEVCount = GetPlayerVehicleCount(playerid);
  965.  
  966. if(PEVCount == 0) return ERROR(playerid, "You don't have a vehicle!");
  967.  
  968. new DiaString[512], PEVID;
  969.  
  970. for(new i; i < PEVCount; i++)
  971. {
  972. PEVID = GetPlayerVehicleInSlot(playerid, i+1);
  973.  
  974. format(DiaString, 512, "%s{ADFF2F}%d# {FFFFFF}%s\n", DiaString, i+1, VehNames[ EvoVehicles[PEVID][EVModel]-400]);
  975. }
  976.  
  977. ShowPlayerDialog(playerid, DIALOG_A_VEHLIST, DIALOG_STYLE_LIST, "{ADFF2F}My Vehicles", DiaString, "Manage", "Close");
  978. return 1;
  979. }
  980.  
  981. // ================================[PUBLICS]================================= //
  982. public OnFilterScriptInit()
  983. {
  984. // Evo Scripts Loader Text
  985. printf("<=================================================>");
  986. printf("< >");
  987. printf("< Evo Vehicle Ownership >");
  988. printf("< IX.3 >");
  989. printf("< Essentials >");
  990. printf("< By Exertion ( A.K.A EvoturK ) >");
  991. printf("< >");
  992. printf("<=================================================>");
  993. printf("< >");
  994.  
  995.  
  996.  
  997. // Loading System
  998. new EVFileName[35];
  999. format(EVFileName, 35, "%s/options.ini", EVOVEHICLE_MAIN_DIR);
  1000.  
  1001. INI_ParseFile(EVFileName, "LoadEVO");
  1002.  
  1003. printf("< System Information Loaded >");
  1004.  
  1005.  
  1006. // Loading System Vehicles
  1007. LoadEvoVehicles();
  1008.  
  1009. printf("< Vehicles Loaded >");
  1010.  
  1011.  
  1012. // Loading Vehicle Showrooms
  1013. LoadShowrooms();
  1014.  
  1015. printf("< Showrooms Loaded >");
  1016.  
  1017.  
  1018.  
  1019. printf("< >");
  1020. printf("<=================================================>");
  1021.  
  1022.  
  1023. // Evo Scripts Version Controller
  1024. HTTP(0, HTTP_GET, "evoturk.p.ht/versions/evoaraba-essentials-en.txt", "", "EvoVehicle_Init");
  1025.  
  1026. return 1;
  1027. }
  1028.  
  1029.  
  1030. public OnFilterScriptExit()
  1031. {
  1032. // Unloading Signal
  1033. Unloading = 1;
  1034.  
  1035. // Evo Scripts Unloader Text
  1036. printf("<=================================================>");
  1037. printf("< >");
  1038. printf("< Evo Vehicle Ownership >");
  1039. printf("< IX.3 >");
  1040. printf("< Essentials >");
  1041. printf("< By Exertion ( A.K.A EvoturK ) >");
  1042. printf("< >");
  1043. printf("<=================================================>");
  1044. printf("< >");
  1045.  
  1046.  
  1047.  
  1048. // Saving System
  1049. SaveEVO();
  1050.  
  1051. printf("< System Information Saved >");
  1052.  
  1053.  
  1054. // Saving System Vehicles
  1055. SaveEvoVehicles(1);
  1056.  
  1057. printf("< Vehicles Saved >");
  1058.  
  1059.  
  1060. // Saving Vehicle Showrooms
  1061. SaveShowrooms(1);
  1062.  
  1063. printf("< Showrooms Saved >");
  1064.  
  1065.  
  1066. // Delete System Waste
  1067. // Deleting System Waste
  1068. foreach(new i : EVs)
  1069. {
  1070. DestroyVehicle(EvoVehicles[i][EVVehID]);
  1071. }
  1072.  
  1073. foreach(new i : SRs)
  1074. {
  1075. DestroyPickup(Showrooms[i][SRPick]);
  1076. Delete3DTextLabel(Showrooms[i][SR3D]);
  1077. }
  1078.  
  1079. printf("< System Waste was Deleted >");
  1080.  
  1081.  
  1082.  
  1083. printf("< >");
  1084. printf("<=================================================>");
  1085. return 1;
  1086. }
  1087.  
  1088. public OnPlayerConnect(playerid)
  1089. {
  1090. pInfo[playerid][pRoot] = 0;
  1091. return 1;
  1092. }
  1093.  
  1094. public OnPlayerSpawn(playerid)
  1095. {
  1096. LoadLockedEvoVehiclesForPlayer(playerid);
  1097. return 1;
  1098. }
  1099.  
  1100. public OnPlayerEnterVehicle(playerid, vehicleid)
  1101. {
  1102. if(VehInSystem[vehicleid] == 1)
  1103. {
  1104. new String[128];
  1105.  
  1106. new EVSystemID = VehEVID[vehicleid];
  1107.  
  1108. format(String, 128, "System ID : %d {ADFF2F}| {FFFFFF}Model : %s", EVSystemID, VehNames[ EvoVehicles[ EVSystemID ][EVModel]-400 ]);
  1109. INFO(playerid, String);
  1110.  
  1111. if(!strfind(EvoVehicles[ EVSystemID ][EVOwner], "Showroom", true))
  1112. {
  1113. INFO(playerid, "This vehicle is for sale in Showroom.");
  1114. }else{
  1115. if(!strfind("-", EvoVehicles[ EVSystemID ][EVOwner], true)) return INFO(playerid, "This vehicle doesn't have any owner and it is for sale.");
  1116.  
  1117. if(!strfind(GetName(playerid), EvoVehicles[ EVSystemID ][EVOwner], true))
  1118. {
  1119. INFO(playerid, "Welcome to Your Vehicle");
  1120. }else{
  1121. format(String, 128, "This vehicles owner is {ADFF2F}%s", EvoVehicles[ EVSystemID ][EVOwner]);
  1122. INFO(playerid, String);
  1123. }
  1124. }
  1125. }
  1126. return 1;
  1127. }
  1128.  
  1129. public OnVehicleSpawn(vehicleid)
  1130. {
  1131. if(VehInSystem[vehicleid] == 1)
  1132. {
  1133. ChangeVehicleColor(vehicleid, EvoVehicles[ VehEVID[vehicleid] ][EVCol1], EvoVehicles[ VehEVID[vehicleid] ][EVCol2]);
  1134. LoadVehicleMod(VehEVID[vehicleid]);
  1135.  
  1136. SetVehiclePos(vehicleid, EvoVehicles[ VehEVID[vehicleid] ][EVX], EvoVehicles[ VehEVID[vehicleid] ][EVY], EvoVehicles[ VehEVID[vehicleid] ][EVZ]);
  1137. SetVehicleZAngle(vehicleid, EvoVehicles[ VehEVID[vehicleid] ][EVRot]);
  1138. }
  1139. return 1;
  1140. }
  1141.  
  1142. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  1143. {
  1144. if(VehInSystem[vehicleid] == 1)
  1145. {
  1146. EvoVehicles[ VehEVID[vehicleid] ][EVPJ] = paintjobid;
  1147. EvoVehicles[ VehEVID[vehicleid] ][EVNeedSave] = 1;
  1148. }
  1149. return 1;
  1150. }
  1151.  
  1152. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  1153. {
  1154. if(VehInSystem[vehicleid] == 1)
  1155. {
  1156. EvoVehicles[ VehEVID[vehicleid] ][EVCol1] = color1;
  1157. EvoVehicles[ VehEVID[vehicleid] ][EVCol2] = color2;
  1158. EvoVehicles[ VehEVID[vehicleid] ][EVNeedSave] = 1;
  1159. }
  1160. return 1;
  1161. }
  1162.  
  1163. public OnVehicleMod(playerid, vehicleid, componentid)
  1164. {
  1165. if(VehInSystem[vehicleid] == 1)
  1166. {
  1167. GetVehicleMod( VehEVID[vehicleid] );
  1168. EvoVehicles[ VehEVID[vehicleid] ][EVNeedSave] = 1;
  1169. }
  1170. return 1;
  1171. }
  1172.  
  1173. public OnPlayerStateChange(playerid, newstate, oldstate)
  1174. {
  1175. if(newstate == PLAYER_STATE_DRIVER)
  1176. {
  1177. if(VehInSystem[ GetPlayerVehicleID(playerid) ] == 1)
  1178. {
  1179. new EVSystemID = VehEVID[ GetPlayerVehicleID(playerid) ];
  1180.  
  1181. if(!strfind(EvoVehicles[ EVSystemID ][EVOwner], "Showroom", true))
  1182. {
  1183. new SRN[30];
  1184. strmid(SRN, EvoVehicles[ EVSystemID ][EVOwner], 8, strlen(EvoVehicles[ EVSystemID ][EVOwner]), 30);
  1185. SelectedSR[playerid] = strval(SRN);
  1186.  
  1187. new DiaString[512];
  1188. format(DiaString, 512, "{FFFFFF}Model\t{ADFF2F}%s\n", VehNames[ EvoVehicles[ EVSystemID ][EVModel]-400 ]);
  1189. format(DiaString, 512, "%s{FFFFFF}Price\t{ADFF2F}%d$\n", DiaString, EvoVehicles[ EVSystemID ][EVPrice]);
  1190. format(DiaString, 512, "%s{FFFFFF}Do you want buy this vehicle?", DiaString);
  1191.  
  1192. ShowPlayerDialog(playerid, DIALOG_SRVEH, DIALOG_STYLE_MSGBOX, "{ADFF2F}Showroom", DiaString, "Yes", "No");
  1193. }else{
  1194. if(!strcmp(EvoVehicles[ EVSystemID ][EVOwner], "-", true))
  1195. {
  1196. new DiaString[512];
  1197. format(DiaString, 512, "{FFFFFF}Model\t{ADFF2F}%s\n", VehNames[ EvoVehicles[ EVSystemID ][EVModel]-400 ]);
  1198. format(DiaString, 512, "%s{FFFFFF}Price\t{ADFF2F}%d$\n", DiaString, EvoVehicles[ EVSystemID ][EVPrice]);
  1199. format(DiaString, 512, "%s{FFFFFF}Do you want buy this vehicle?", DiaString);
  1200.  
  1201. ShowPlayerDialog(playerid, DIALOG_BUY_VEHICLE, DIALOG_STYLE_MSGBOX, "{ADFF2F}Vehicle for Sale", DiaString, "Yes", "No");
  1202. }else{
  1203. if(!strcmp(EvoVehicles[ EVSystemID ][EVOwner], GetName(playerid), true))
  1204. {
  1205. INFO(playerid, "You can manage your vehicle with /myveh command.");
  1206. }else{
  1207. switch(EvoVehicles[ EVSystemID ][EVSecurity])
  1208. {
  1209. case 1:
  1210. {
  1211. INFO(playerid, "Sorry, This vehicle's owner has started Killing Security System");
  1212. SetPlayerHealth(playerid, 0.0);
  1213. }
  1214.  
  1215. case 2:
  1216. {
  1217. INFO(playerid, "Sorry, This vehicle's owner has started Slapping Security System");
  1218.  
  1219. new Float:pX, Float:pY, Float:pZ;
  1220. GetPlayerPos(playerid, pX, pY, pZ);
  1221. SetPlayerPos(playerid, pX, pY, pZ+10);
  1222. }
  1223. }
  1224. }
  1225. }
  1226. }
  1227. }
  1228. }
  1229. return 1;
  1230. }
  1231.  
  1232. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1233. {
  1234. // Evo Vehicle Ownership Administrating
  1235. if(dialogid == DIALOG_EVO_PANELPASS)
  1236. {
  1237. if(response)
  1238. {
  1239. if(!strlen(inputtext)) return ERROR(playerid, "You don't enter panel password");
  1240. if(!strcmp("default", EVOPanelPass, true)) return format(EVOPanelPass, 150, inputtext), INFO(playerid, "You selected panel password. Login panel again.");
  1241. if(!strcmp(EVOPanelPass, inputtext, true))
  1242. {
  1243. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1244. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1245. }else return ERROR(playerid, "Wrong panel password");
  1246. }
  1247. }
  1248.  
  1249. if(dialogid == DIALOG_EVO_PANELHOME)
  1250. {
  1251. if(response)
  1252. {
  1253. switch(listitem)
  1254. {
  1255. case 0: // Manage Vehicle
  1256. {
  1257. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEHID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Vehicle", "{FFFFFF}Enter the vehicle's id that you want to manage in system:", "Manage", "Back");
  1258. }
  1259.  
  1260. case 1: // Add Vehicle
  1261. {
  1262. ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}New Vehicle", "{FFFFFF}Enter the vehicle's model id or name that you want to add:", "Next", "Cancel");
  1263. }
  1264.  
  1265. case 2: // Delete All Vehicles
  1266. {
  1267. new FileName[35];
  1268.  
  1269. foreach(new i: EVs)
  1270. {
  1271. EvoVehicles[i][EVExist] = 0;
  1272. DestroyVehicle(EvoVehicles[i][EVVehID]);
  1273. VehInSystem[ EvoVehicles[i][EVVehID] ] = 0;
  1274.  
  1275. format(FileName, 35, "%s/Vehicle_%d.ini", EVOVEHICLE_VEHICLE_DIR, i);
  1276. fremove(FileName);
  1277.  
  1278. new next;
  1279. Iter_SafeRemove(EVs, i, next);
  1280. i = next;
  1281. }
  1282.  
  1283. INFO(playerid, "You deleted all vehicles in system.");
  1284.  
  1285. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1286. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1287. }
  1288.  
  1289. case 3: // Manage Showroom
  1290. {
  1291. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSRID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Showroom", "{FFFFFF}Enter the showroom's id that you want to manage in system:", "Manage", "Back");
  1292. }
  1293.  
  1294. case 4: // Add Showroom
  1295. {
  1296. ShowPlayerDialog(playerid, DIALOG_EVO_PANELNSR_NAME, DIALOG_STYLE_INPUT, "{ADFF2F}New Showroom", "{FFFFFF}Notice : You must be in the place where you want to add showroom at.\n{FFFFFF}{FFFFFF}Enter the vehicle's name that you want to add:", "Next", "Cancel");
  1297. }
  1298.  
  1299. case 5: // Delete All Showrooms
  1300. {
  1301. new FileName[35];
  1302.  
  1303. foreach(new i: SRs)
  1304. {
  1305. Showrooms[i][SRExist] = 0;
  1306. DestroyPickup(Showrooms[i][SRPick]);
  1307. Delete3DTextLabel(Showrooms[i][SR3D]);
  1308.  
  1309. format(FileName, 35, "%s/Showroom_%d.ini", EVOVEHICLE_SHOWROOM_DIR, i);
  1310. fremove(FileName);
  1311.  
  1312. new next;
  1313. Iter_SafeRemove(SRs, i, next);
  1314. i = next;
  1315. }
  1316.  
  1317. INFO(playerid, "You deleted all showrooms in system.");
  1318.  
  1319. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1320. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1321. }
  1322.  
  1323. case 6: // Change Password
  1324. {
  1325. ShowPlayerDialog(playerid, DIALOG_EVO_PANELCPASS, DIALOG_STYLE_INPUT, "{ADFF2F}Change Panel Password", "{FFFFFF}Enter a new password for panel:", "Change", "Back");
  1326. }
  1327.  
  1328. case 7: // Get ROOT Permission
  1329. {
  1330. pInfo[playerid][pRoot] = 1;
  1331. INFO(playerid, "You got ROOT Permission in Evo Vehicle System.");
  1332. INFO(playerid, "You can enter EVO Administrating Panel without enter password.");
  1333. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1334. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1335. }
  1336.  
  1337. case 8: // About EVO
  1338. {
  1339. ShowPlayerDialog(playerid, DIALOG_EVO_PANELABOUT, DIALOG_STYLE_MSGBOX, "{ADFF2F}About Evo Vehicle Ownership", "{FFFFFF}Coder \t{ADFF2F}Exertion. ( aKa EvoturK )\n{FFFFFF}Version \t{ADFF2F}IX.3 Essentials\n{FFFFFF}Version Date \t{ADFF2F}07.08.2013\n{FFFFFF}EvoENGINE \t{ADFF2F}3.0\n \n{FFFFFF}Web Site \t{ADFF2F}evoturk.p.ht", "Back", "");
  1340. }
  1341. }
  1342. }
  1343. }
  1344.  
  1345. if(dialogid == DIALOG_EVO_PANELNSR_NAME)
  1346. {
  1347. if(response)
  1348. {
  1349. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELNSR_NAME, DIALOG_STYLE_INPUT, "{ADFF2F}New Showroom", "{FFFFFF}Notice : You must be in the place where you want to add showroom at.\n{FFFFFF}{FFFFFF}Enter the vehicle's name that you want to add:", "Next", "Cancel");
  1350. format(SelectedName[playerid], 100, inputtext);
  1351.  
  1352. new CreatedID, String[128], Float:pX, Float:pY, Float:pZ;
  1353. GetPlayerPos(playerid, pX, pY, pZ);
  1354.  
  1355. CreatedID = CreateShowroom(SelectedName[playerid], pX, pY, pZ);
  1356.  
  1357. INFO(playerid, "You add a new showroom in system");
  1358.  
  1359. format(String, 128, "Showroom's ID in system is %d", CreatedID);
  1360. INFO(playerid, String);
  1361.  
  1362. INFO(playerid, "You can add vehicle to galery like adding vehicle in system");
  1363.  
  1364. format(String, 128, "Additional, you must set vehicle's owner Showroom%d", CreatedID);
  1365. INFO(playerid, String);
  1366.  
  1367. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1368. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1369. }else{
  1370. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1371. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1372. }
  1373. }
  1374.  
  1375. if(dialogid == DIALOG_EVO_PANELSRID)
  1376. {
  1377. if(response)
  1378. {
  1379. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELSRID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Showroom", "{FFFFFF}Enter the showroom's id that you want to manage in system:", "Manage", "Back");
  1380. new id = strval(inputtext);
  1381. SelectedSR[playerid] = id;
  1382.  
  1383. if(Showrooms[id][SRExist] == 0) return ERROR(playerid, "Wrong Showroom ID'i"), ShowPlayerDialog(playerid, DIALOG_EVO_PANELSRID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Showroom", "{FFFFFF}Enter the showroom's id that you want to manage in system:", "Manage", "Back");
  1384.  
  1385. new DiaString[256], String[80];
  1386.  
  1387. format(DiaString, 256, "{FFFFFF}Showroom Name \t{ADFF2F}%s\n{FFFFFF}Get Showroom Here\n{FFFFFF}Delete Showroom", Showrooms[ SelectedSR[playerid] ][SRName]);
  1388.  
  1389. format(String, 80, "{FFFFFF}Showroom ID {ADFF2F}%d", SelectedSR[playerid]);
  1390.  
  1391. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR, DIALOG_STYLE_LIST, String, DiaString, "Select", "Close");
  1392. }else{
  1393. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1394. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1395. }
  1396. }
  1397.  
  1398. if(dialogid == DIALOG_EVO_PANELSR)
  1399. {
  1400. if(response)
  1401. {
  1402. switch(listitem)
  1403. {
  1404. case 0: // Set Showroom Name
  1405. {
  1406. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR_NAME, DIALOG_STYLE_INPUT, "{ADFF2F}Change Showroom Name", "{FFFFFF}Select a new name for showroom:", "Change", "Back");
  1407. }
  1408.  
  1409. case 1: // Set Showroom Location
  1410. {
  1411. GetPlayerPos(playerid, Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ]);
  1412. Showrooms[ SelectedSR[playerid] ][SRNeedSave] = 1;
  1413.  
  1414. DestroyPickup(Showrooms[ SelectedSR[playerid] ][SRPick]);
  1415. Delete3DTextLabel(Showrooms[ SelectedSR[playerid] ][SR3D]);
  1416.  
  1417. Showrooms[ SelectedSR[playerid] ][SRPick] = CreatePickup(1239, 1, Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ], 0);
  1418.  
  1419. new String[128];
  1420. format(String, 128, "{ADFF2F}SHOWROOM\n{ADFF2F}%s\n{FFFFFF}Showroom ID {ADFF2F}%d", Showrooms[ SelectedSR[playerid] ][SRName], SelectedSR[playerid]);
  1421. Showrooms[ SelectedSR[playerid] ][SR3D] = Create3DTextLabel(String, -1, Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ], 25.0, 0);
  1422.  
  1423. new DiaString[256];
  1424.  
  1425. format(DiaString, 256, "{FFFFFF}Showroom Name \t{ADFF2F}%s\n{FFFFFF}Get Showroom Here\n{FFFFFF}Delete Showroom", Showrooms[ SelectedSR[playerid] ][SRName]);
  1426.  
  1427. format(String, 128, "{FFFFFF}Showroom ID {ADFF2F}%d", SelectedSR[playerid]);
  1428.  
  1429. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR, DIALOG_STYLE_LIST, String, DiaString, "Select", "Close");
  1430. }
  1431.  
  1432. case 2: // Delete Showroom
  1433. {
  1434. DeleteShowroom(SelectedSR[playerid]);
  1435. INFO(playerid, "Showroom that you selected has been deleted");
  1436. }
  1437. }
  1438. }else{
  1439. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1440. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1441. }
  1442. }
  1443.  
  1444. if(dialogid == DIALOG_EVO_PANELSR_NAME)
  1445. {
  1446. if(response)
  1447. {
  1448. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR_NAME, DIALOG_STYLE_INPUT, "{ADFF2F}Change Showroom Name", "{FFFFFF}Select a new name for showroom:", "Change", "Back");
  1449. format(Showrooms[ SelectedSR[playerid] ][SRName], 100, inputtext);
  1450. Showrooms[ SelectedSR[playerid] ][SRNeedSave] = 1;
  1451.  
  1452. DestroyPickup(Showrooms[ SelectedSR[playerid] ][SRPick]);
  1453. Delete3DTextLabel(Showrooms[ SelectedSR[playerid] ][SR3D]);
  1454.  
  1455. Showrooms[ SelectedSR[playerid] ][SRPick] = CreatePickup(1239, 1, Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ], 0);
  1456.  
  1457. new String[128];
  1458. format(String, 128, "{ADFF2F}SHOWROOM\n{ADFF2F}%s\n{FFFFFF}Showroom ID {ADFF2F}%d", Showrooms[ SelectedSR[playerid] ][SRName], SelectedSR[playerid]);
  1459. Showrooms[ SelectedSR[playerid] ][SR3D] = Create3DTextLabel(String, -1, Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ], 25.0, 0);
  1460.  
  1461. new DiaString[256];
  1462.  
  1463. format(DiaString, 256, "{FFFFFF}Showroom Name \t{ADFF2F}%s\n{FFFFFF}Get Showroom Here\n{FFFFFF}Delete Showroom", Showrooms[ SelectedSR[playerid] ][SRName]);
  1464.  
  1465. format(String, 128, "{FFFFFF}Showroom ID {ADFF2F}%d", SelectedSR[playerid]);
  1466.  
  1467. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR, DIALOG_STYLE_LIST, String, DiaString, "Select", "Close");
  1468. }else{
  1469. new DiaString[256], String[80];
  1470.  
  1471. format(DiaString, 256, "{FFFFFF}Showroom Name \t{ADFF2F}%s\n{FFFFFF}Get Showroom Here\n{FFFFFF}Delete Showroom", Showrooms[ SelectedSR[playerid] ][SRName]);
  1472.  
  1473. format(String, 80, "{FFFFFF}Showroom ID {ADFF2F}%d", SelectedSR[playerid]);
  1474.  
  1475. ShowPlayerDialog(playerid, DIALOG_EVO_PANELSR, DIALOG_STYLE_LIST, String, DiaString, "Select", "Close");
  1476. }
  1477. }
  1478.  
  1479. if(dialogid == DIALOG_EVO_PANELNEW_MODEL)
  1480. {
  1481. if(response)
  1482. {
  1483. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}New Vehicle", "{FFFFFF}Enter the vehicle's model id or name that you want to add:", "Next", "Cancel");
  1484.  
  1485. if(IsNumeric(inputtext))
  1486. {
  1487. SelectedModel[playerid] = strval(inputtext);
  1488. }else{
  1489. SelectedModel[playerid] = GetVehicleModelIDFromName(inputtext);
  1490. }
  1491.  
  1492. if(SelectedModel[playerid] < 400 || SelectedModel[playerid] > 611) return ERROR(playerid, "Wrong vehicle model"), ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}New Vehicle", "{FFFFFF}Enter the vehicle's model id or name that you want to add:", "Next", "Cancel");
  1493.  
  1494. ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_PRICE, DIALOG_STYLE_INPUT, "{ADFF2F}New Evo Vehicle", "{FFFFFF}Select price for vehicle that you're adding:", "Next", "Cancel");
  1495. }else{
  1496. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1497. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1498. }
  1499. }
  1500.  
  1501. if(dialogid == DIALOG_EVO_PANELNEW_PRICE)
  1502. {
  1503. if(response)
  1504. {
  1505. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_PRICE, DIALOG_STYLE_INPUT, "{ADFF2F}New Vehicle", "{FFFFFF}Select price for vehicle that you're adding:", "Next", "Cancel");
  1506. SelectedPrice[playerid] = strval(inputtext);
  1507.  
  1508. ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_COL1, DIALOG_STYLE_INPUT, "{ADFF2F}New Evo Vehicle", "{FFFFFF}Select vehicle's first color:", "Next", "Cancel");
  1509. }else{
  1510. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1511. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1512. }
  1513. }
  1514.  
  1515. if(dialogid == DIALOG_EVO_PANELNEW_COL1)
  1516. {
  1517. if(response)
  1518. {
  1519. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_COL1, DIALOG_STYLE_INPUT, "{ADFF2F}New Vehicle", "{FFFFFF}Select vehicle's first color:", "Next", "Cancel");
  1520. SelectedCol1[playerid] = strval(inputtext);
  1521.  
  1522. ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_COL2, DIALOG_STYLE_INPUT, "{ADFF2F}New Evo Vehicle", "{FFFFFF}Select vehicle's second color:", "Next", "Cancel");
  1523. }else{
  1524. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1525. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1526. }
  1527. }
  1528.  
  1529. if(dialogid == DIALOG_EVO_PANELNEW_COL2)
  1530. {
  1531. if(response)
  1532. {
  1533. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELNEW_COL2, DIALOG_STYLE_INPUT, "{ADFF2F}New Evo Vehicle", "{FFFFFF}Select vehicle's second color:", "Next", "Cancel");
  1534. SelectedCol2[playerid] = strval(inputtext);
  1535.  
  1536. new Float:pX, Float:pY, Float:pZ, Float:pRot;
  1537. GetPlayerPos(playerid, pX, pY, pZ);
  1538. GetPlayerFacingAngle(playerid, pRot);
  1539.  
  1540. pX += 5.0 * floatcos(pRot + 90, degrees);
  1541. pY += 5.0 * floatsin(pRot + 90, degrees);
  1542.  
  1543. new CreatedID = CreateEvoVehicle(SelectedModel[playerid], "-", pX, pY, pZ, pRot+90, SelectedCol1[playerid], SelectedCol2[playerid], SelectedPrice[playerid]);
  1544.  
  1545. INFO(playerid, "You added vehicle in system");
  1546.  
  1547. new String[64];
  1548.  
  1549. format(String, 64, "System ID of the vehicle that you added is {ADFF2F}%d", CreatedID);
  1550. INFO(playerid, String);
  1551.  
  1552. INFO(playerid, "You can manage this vehicle in EVO Administrating Panel");
  1553. }else{
  1554. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1555. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1556. }
  1557. }
  1558.  
  1559. if(dialogid == DIALOG_EVO_PANELCPASS)
  1560. {
  1561. if(response)
  1562. {
  1563. if(!strlen(inputtext)) return ERROR(playerid, "You haven't entered a new password yet."), ShowPlayerDialog(playerid, DIALOG_EVO_PANELCPASS, DIALOG_STYLE_INPUT, "{ADFF2F}Change Panel Password", "{FFFFFF}Enter a new password for panel:", "Change", "Back");
  1564.  
  1565. format(EVOPanelPass, 150, inputtext);
  1566.  
  1567. INFO(playerid, "Panel password has been changed.");
  1568.  
  1569. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1570. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1571. }else{
  1572. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1573. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1574. }
  1575. }
  1576.  
  1577. if(dialogid == DIALOG_EVO_PANELABOUT)
  1578. {
  1579. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1580. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1581. }
  1582.  
  1583. if(dialogid == DIALOG_EVO_PANELVEHID)
  1584. {
  1585. if(response)
  1586. {
  1587. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEHID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Vehicle", "{FFFFFF}Enter the vehicle's id that you want to manage in system:", "Manage", "Back");
  1588. new id = strval(inputtext);
  1589. SelectedEV[playerid] = id;
  1590.  
  1591. if(EvoVehicles[id][EVExist] == 0) return ERROR(playerid, "Wrong Evo Vehicle ID"), ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEHID, DIALOG_STYLE_INPUT, "{ADFF2F}Manage a Vehicle - ID", "{FFFFFF}Type ID of Vehicle That You want to Manage.", "Manage", "Back");
  1592.  
  1593. INFO(playerid, "Select the information that you'll change and select \"Manage\"");
  1594.  
  1595. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1596. }else{
  1597. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1598. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1599. }
  1600. }
  1601.  
  1602. if(dialogid == DIALOG_EVO_PANELVEH)
  1603. {
  1604. if(response)
  1605. {
  1606. switch(listitem)
  1607. {
  1608. case 0: // Model
  1609. {
  1610. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Model", "{FFFFFF}Select the new vehicle model id or name of selected vehicle:", "Change", "Back");
  1611. }
  1612.  
  1613. case 1: // Owner
  1614. {
  1615. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_OWNER, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Owner", "{FFFFFF}Select the new owner of selected vehicle:", "Change", "Back");
  1616. }
  1617.  
  1618. case 2: // Color 1
  1619. {
  1620. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_COL1, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Color 1", "{FFFFFF}Select the new first color of selected vehicle:", "Change", "Back");
  1621. }
  1622.  
  1623. case 3: // Color 2
  1624. {
  1625. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_COL2, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Color 2", "{FFFFFF}Select the new second color of selected vehicle:", "Change", "Back");
  1626. }
  1627.  
  1628. case 4: // Price
  1629. {
  1630. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PRICE, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Price", "{FFFFFF}Select the new price of selected vehicle:", "Change", "Back");
  1631. }
  1632.  
  1633. case 5: // Security
  1634. {
  1635. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_SEC, DIALOG_STYLE_LIST, "{ADFF2F}Vehicle Security", "{FFFFFF}None\n{FFFFFF}Killing\n{FFFFFF}Slapping", "Change", "Back");
  1636. }
  1637.  
  1638. case 6: // Lock
  1639. {
  1640. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_LOCK, DIALOG_STYLE_LIST, "{ADFF2F}Vehicle Lock", "{FFFFFF}Unlocked\n{FFFFFF}Locked", "Change", "Back");
  1641. }
  1642.  
  1643. case 7: // Plate
  1644. {
  1645. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PLATE, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Plate", "{FFFFFF}Select the new plate of selected vehicle:", "Change", "Back");
  1646. }
  1647.  
  1648. case 8: // PJ
  1649. {
  1650. ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PJ, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Paintjob", "{FFFFFF}Select the new paintjob id of selected vehicle:", "Change", "Back");
  1651. }
  1652.  
  1653. case 9: // Get Vehicle
  1654. {
  1655. new Float:pX, Float:pY, Float:pZ, Float:pRot;
  1656. GetPlayerPos(playerid, pX, pY, pZ);
  1657. GetPlayerFacingAngle(playerid, pRot);
  1658.  
  1659. pX += 5.0 * floatcos(pRot + 90, degrees);
  1660. pY += 5.0 * floatsin(pRot + 90, degrees);
  1661.  
  1662. SetVehiclePos(EvoVehicles[ SelectedEV[playerid] ][EVVehID], pX, pY, pZ);
  1663. SetVehicleZAngle(EvoVehicles[ SelectedEV[playerid] ][EVVehID], pRot+90);
  1664.  
  1665. INFO(playerid, "You got vehicle that you selected");
  1666.  
  1667. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1668. }
  1669.  
  1670. case 10: // Delete Vehicle
  1671. {
  1672. DeleteEvoVehicle(SelectedEV[playerid]);
  1673. INFO(playerid, "You deleted vehicle that you selected from system");
  1674. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1675. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1676. }
  1677. }
  1678. }else{
  1679. ShowPlayerDialog(playerid, DIALOG_EVO_PANELHOME, DIALOG_STYLE_LIST, "{ADFF2F}Evo Vehicle Ownership Administrating Panel",
  1680. "{ADFF2F}» {FFFFFF}Manage a Vehicle\n{ADFF2F}» {FFFFFF}Add a Vehicle \t{ADFF2F}/addev\n{ADFF2F}» {FFFFFF}Delete All Vehicles\n{ADFF2F}» {FFFFFF}Manage a Showroom\n{ADFF2F}» {FFFFFF}Add a Showroom \t{ADFF2F}/addsr\n{ADFF2F}» {FFFFFF}Delete All Showrooms\n{ADFF2F}» {FFFFFF}Change Panel Password\n{ADFF2F}» {FFFFFF}Get ROOT Permission\n{ADFF2F}» {FFFFFF}About Evo Vehicle Ownership", "Select", "Close");
  1681. }
  1682. }
  1683.  
  1684. if(dialogid == DIALOG_EVO_PANELVEH_MODEL)
  1685. {
  1686. if(response)
  1687. {
  1688. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Model", "{FFFFFF}Select the new vehicle model id or name of selected vehicle:", "Change", "Back");
  1689. new model;
  1690.  
  1691. if(IsNumeric(inputtext))
  1692. {
  1693. model = strval(inputtext);
  1694. }else{
  1695. model = GetVehicleModelIDFromName(inputtext);
  1696. }
  1697.  
  1698. if(model < 400 || model > 611) return ERROR(playerid, "Wrong vehicle model!"),ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_MODEL, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Model", "{FFFFFF}Select the new vehicle model id or name of selected vehicle:", "Change", "Back");
  1699.  
  1700.  
  1701. new EvoVehicleID = SelectedEV[playerid];
  1702.  
  1703. EvoVehicles[ EvoVehicleID][EVModel] = model;
  1704. DestroyVehicle( EvoVehicles[ EvoVehicleID ][EVVehID] );
  1705. VehInSystem[ EvoVehicles[ EvoVehicleID ][EVVehID]] = 0;
  1706.  
  1707. EvoVehicles[ EvoVehicleID ][EVVehID] = CreateVehicle(EvoVehicles[ EvoVehicleID ][EVModel], EvoVehicles[ EvoVehicleID ][EVX], EvoVehicles[ EvoVehicleID ][EVY], EvoVehicles[ EvoVehicleID ][EVZ], EvoVehicles[ EvoVehicleID ][EVRot], EvoVehicles[ EvoVehicleID ][EVCol1], EvoVehicles[ EvoVehicleID ][EVCol2], -1);
  1708. VehEVID[ EvoVehicles[ EvoVehicleID ][EVVehID] ] = EvoVehicleID;
  1709. VehInSystem[ EvoVehicles[ EvoVehicleID ][EVVehID] ] = 1;
  1710. SetVehicleNumberPlate(EvoVehicles[ EvoVehicleID ][EVVehID], EvoVehicles[ EvoVehicleID ][EVPlate]);
  1711. SetVehicleToRespawn(EvoVehicles[ EvoVehicleID ][EVVehID]);
  1712. LoadVehicleMod(EvoVehicleID);
  1713.  
  1714. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1715.  
  1716. INFO(playerid, "Vehicle's model has been changed successfully");
  1717.  
  1718. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1719. }else{
  1720. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1721. }
  1722. }
  1723.  
  1724. if(dialogid == DIALOG_EVO_PANELVEH_OWNER)
  1725. {
  1726. if(response)
  1727. {
  1728. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_OWNER, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Owner", "{FFFFFF}Select the new owner of selected vehicle:", "Change", "Back");
  1729. format(EvoVehicles[ SelectedEV[playerid] ][EVOwner], 40, inputtext);
  1730.  
  1731. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1732.  
  1733. INFO(playerid, "Vehicle's owner has been changed successfully");
  1734.  
  1735. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1736. }else{
  1737. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1738. }
  1739. }
  1740.  
  1741. if(dialogid == DIALOG_EVO_PANELVEH_COL1)
  1742. {
  1743. if(response)
  1744. {
  1745. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_COL1, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Color 1", "{FFFFFF}Select the new first color of selected vehicle:", "Change", "Back");
  1746. new col = strval(inputtext);
  1747.  
  1748. EvoVehicles[ SelectedEV[playerid] ][EVCol1] = col;
  1749. ChangeVehicleColor(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVCol1], EvoVehicles[ SelectedEV[playerid] ][EVCol2]);
  1750.  
  1751. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1752.  
  1753. INFO(playerid, "Vehicle's first color has been changed successfully");
  1754.  
  1755. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1756. }else{
  1757. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1758. }
  1759. }
  1760.  
  1761. if(dialogid == DIALOG_EVO_PANELVEH_COL2)
  1762. {
  1763. if(response)
  1764. {
  1765. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_COL2, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Color 2", "{FFFFFF}Select the new second color of selected vehicle:", "Change", "Back");
  1766. new col = strval(inputtext);
  1767.  
  1768. EvoVehicles[ SelectedEV[playerid] ][EVCol2] = col;
  1769. ChangeVehicleColor(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVCol1], EvoVehicles[ SelectedEV[playerid] ][EVCol2]);
  1770.  
  1771. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1772.  
  1773. INFO(playerid, "Vehicle's second color has been changed successfully");
  1774.  
  1775. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1776. }else{
  1777. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1778. }
  1779. }
  1780.  
  1781. if(dialogid == DIALOG_EVO_PANELVEH_PRICE)
  1782. {
  1783. if(response)
  1784. {
  1785. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PRICE, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Price", "{FFFFFF}Select the new price of selected vehicle:", "Change", "Back");
  1786. new price = strval(inputtext);
  1787.  
  1788. EvoVehicles[ SelectedEV[playerid] ][EVPrice] = price;
  1789.  
  1790. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1791.  
  1792. INFO(playerid, "Vehicle's price has been changed successfully");
  1793.  
  1794. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1795. }else{
  1796. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1797. }
  1798. }
  1799.  
  1800. if(dialogid == DIALOG_EVO_PANELVEH_SEC)
  1801. {
  1802. if(response)
  1803. {
  1804. EvoVehicles[ SelectedEV[playerid] ][EVSecurity] = listitem;
  1805.  
  1806. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1807.  
  1808. INFO(playerid, "Vehicle's security system has been changed successfully");
  1809.  
  1810. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1811. }else{
  1812. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1813. }
  1814. }
  1815.  
  1816. if(dialogid == DIALOG_EVO_PANELVEH_LOCK)
  1817. {
  1818. if(response)
  1819. {
  1820. EvoVehicles[ SelectedEV[playerid] ][EVLock] = listitem;
  1821. LockEvoVehicle(SelectedEV[playerid], listitem);
  1822.  
  1823. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1824.  
  1825. INFO(playerid, "Vehicle's lock state has been changed successfully");
  1826.  
  1827. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1828. }else{
  1829. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1830. }
  1831. }
  1832.  
  1833. if(dialogid == DIALOG_EVO_PANELVEH_PLATE)
  1834. {
  1835. if(response)
  1836. {
  1837. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PLATE, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Plate", "{FFFFFF}Select the new plate of selected vehicle:", "Change", "Back");
  1838. format(EvoVehicles[ SelectedEV[playerid] ][EVPlate], 30, inputtext);
  1839.  
  1840. SetVehicleNumberPlate(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVPlate]);
  1841. SetVehicleToRespawn(EvoVehicles[ SelectedEV[playerid] ][EVVehID]);
  1842.  
  1843. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1844.  
  1845. INFO(playerid, "Vehicle's plate has been changed successfully");
  1846.  
  1847. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1848. }else{
  1849. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1850. }
  1851. }
  1852.  
  1853. if(dialogid == DIALOG_EVO_PANELVEH_PJ)
  1854. {
  1855. if(response)
  1856. {
  1857. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_EVO_PANELVEH_PJ, DIALOG_STYLE_INPUT, "{ADFF2F}Vehicle Paintjob", "{FFFFFF}Select the new paintjob id of selected vehicle:", "Change", "Back");
  1858. EvoVehicles[ SelectedEV[playerid] ][EVPJ] = strval(inputtext);
  1859.  
  1860. ChangeVehiclePaintjob(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVPJ]);
  1861.  
  1862. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1863.  
  1864. INFO(playerid, "Vehicle's paintjob has been changed successfully");
  1865.  
  1866. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1867. }else{
  1868. ShowAdminEvPanel(playerid, SelectedEV[playerid]);
  1869. }
  1870. }
  1871.  
  1872. // Player Vehicle Administrating
  1873. if(dialogid == DIALOG_A_VEHLIST)
  1874. {
  1875. if(response)
  1876. {
  1877. SelectedEV[playerid] = GetPlayerVehicleInSlot(playerid, listitem+1);
  1878.  
  1879. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  1880. }
  1881. }
  1882.  
  1883. if(dialogid == DIALOG_A_HOME)
  1884. {
  1885. if(response)
  1886. {
  1887. switch(listitem)
  1888. {
  1889. case 0: // Get Vehicle
  1890. {
  1891. new Float:pX, Float:pY, Float:pZ, Float:pRot;
  1892. GetPlayerPos(playerid, pX, pY, pZ);
  1893. GetPlayerFacingAngle(playerid, pRot);
  1894.  
  1895. pX += 5.0 * floatcos(pRot+90, degrees);
  1896. pY += 5.0 * floatsin(pRot+90, degrees);
  1897.  
  1898. SetVehiclePos(EvoVehicles[ SelectedEV[playerid] ][EVVehID], pX, pY, pZ);
  1899. SetVehicleZAngle(EvoVehicles[ SelectedEV[playerid] ][EVVehID], pRot+90);
  1900.  
  1901. INFO(playerid, "You got here your vehicle successfully");
  1902.  
  1903. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  1904. }
  1905.  
  1906. case 1: // Sell Vehicle
  1907. {
  1908. GivePlayerMoney(playerid, EvoVehicles[ SelectedEV[playerid] ][EVPrice]);
  1909. format(EvoVehicles[ SelectedEV[playerid] ][EVOwner], 40, "-");
  1910. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1911.  
  1912. INFO(playerid, "You sold your vehicle successfully");
  1913.  
  1914. new PEVCount = GetPlayerVehicleCount(playerid);
  1915.  
  1916. if(PEVCount == 0) return 1;
  1917.  
  1918. new DiaString[512], PEVID;
  1919.  
  1920. for(new i; i < PEVCount; i++)
  1921. {
  1922. PEVID = GetPlayerVehicleInSlot(playerid, i+1);
  1923.  
  1924. format(DiaString, 512, "%s{ADFF2F}%d# {FFFFFF}%s\n", DiaString, i+1, VehNames[ EvoVehicles[PEVID][EVModel]-400]);
  1925. }
  1926.  
  1927. ShowPlayerDialog(playerid, DIALOG_A_VEHLIST, DIALOG_STYLE_LIST, "{ADFF2F}My Vehicles", DiaString, "Manage", "Close");
  1928. }
  1929.  
  1930. case 2: // Vehicle Lock
  1931. {
  1932. switch(EvoVehicles[ SelectedEV[playerid] ][EVLock])
  1933. {
  1934. case 0: EvoVehicles[ SelectedEV[playerid] ][EVLock] = 1;
  1935. case 1: EvoVehicles[ SelectedEV[playerid] ][EVLock] = 0;
  1936. }
  1937.  
  1938. LockEvoVehicle(SelectedEV[playerid], EvoVehicles[ SelectedEV[playerid] ][EVLock]);
  1939. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1940. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  1941. }
  1942.  
  1943. case 3: // Vehicle Security
  1944. {
  1945. if(EvoVehicles[ SelectedEV[playerid] ][EVSecurity] != 2)
  1946. {
  1947. EvoVehicles[ SelectedEV[playerid] ][EVSecurity]++;
  1948. }else{
  1949. EvoVehicles[ SelectedEV[playerid] ][EVSecurity] = 0;
  1950. }
  1951.  
  1952. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1953. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  1954. }
  1955.  
  1956. case 4: // Vehicle Plate
  1957. {
  1958. ShowPlayerDialog(playerid, DIALOG_A_PLATE, DIALOG_STYLE_INPUT, "{ADFF2F}Change Plate", "{FFFFFF}Select the new plate of your vehicle:", "Change", "Back");
  1959. }
  1960.  
  1961. #if AUTOMATIC_PARK == true
  1962. case 5: // Park Vehicle
  1963. {
  1964. GetVehiclePos(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVX], EvoVehicles[ SelectedEV[playerid] ][EVY], EvoVehicles[ SelectedEV[playerid] ][EVZ]);
  1965. GetVehicleZAngle(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVRot]);
  1966.  
  1967. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  1968.  
  1969. INFO(playerid, "Your vehicle has been parked");
  1970.  
  1971. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  1972. }
  1973. #endif
  1974. }
  1975. }else{
  1976. new PEVCount = GetPlayerVehicleCount(playerid);
  1977.  
  1978. new DiaString[512], PEVID;
  1979.  
  1980. for(new i; i < PEVCount; i++)
  1981. {
  1982. PEVID = GetPlayerVehicleInSlot(playerid, i+1);
  1983.  
  1984. format(DiaString, 512, "%s{ADFF2F}%d# {FFFFFF}%s\n", DiaString, i+1, VehNames[ EvoVehicles[PEVID][EVModel]-400]);
  1985. }
  1986.  
  1987. ShowPlayerDialog(playerid, DIALOG_A_VEHLIST, DIALOG_STYLE_LIST, "{ADFF2F}My Vehicles", DiaString, "Manage", "Close");
  1988. }
  1989. }
  1990.  
  1991. if(dialogid == DIALOG_A_PLATE)
  1992. {
  1993. if(response)
  1994. {
  1995. if(!strlen(inputtext)) return ShowPlayerDialog(playerid, DIALOG_A_PLATE, DIALOG_STYLE_INPUT, "{ADFF2F}Change Plate", "{FFFFFF}Select the new plate of your vehicle:", "Change", "Back");
  1996. format(EvoVehicles[ SelectedEV[playerid] ][EVPlate], 30, inputtext);
  1997.  
  1998. GetVehiclePos(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVX], EvoVehicles[ SelectedEV[playerid] ][EVY], EvoVehicles[ SelectedEV[playerid] ][EVZ]);
  1999. GetVehicleZAngle(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVRot]);
  2000. GetVehicleMod(SelectedEV[playerid]);
  2001.  
  2002. SetVehicleNumberPlate(EvoVehicles[ SelectedEV[playerid] ][EVVehID], EvoVehicles[ SelectedEV[playerid] ][EVPlate]);
  2003. SetVehicleToRespawn(EvoVehicles[ SelectedEV[playerid] ][EVVehID]);
  2004.  
  2005. EvoVehicles[ SelectedEV[playerid] ][EVNeedSave] = 1;
  2006.  
  2007. INFO(playerid, "Vehicle's plate has been changed successfully");
  2008.  
  2009. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  2010. }else{
  2011. ShowPlayerEVPanel(playerid, SelectedEV[playerid]);
  2012. }
  2013. }
  2014.  
  2015. // Buying Evo Vehicle
  2016. if(dialogid == DIALOG_BUY_VEHICLE)
  2017. {
  2018. if(response)
  2019. {
  2020. new EVSystemID = VehEVID[ GetPlayerVehicleID(playerid) ];
  2021.  
  2022. if(GetPlayerVehicleCount(playerid) == MAX_PLAYER_EVO_VEHICLE) return ERROR(playerid, "You have already reached owned vehicle limit");
  2023. if(GetPlayerMoney(playerid) < EvoVehicles[ EVSystemID ][EVPrice]) return ERROR(playerid, "You don't have enough money for buy this vehicle!");
  2024.  
  2025. GivePlayerMoney(playerid, -EvoVehicles[ EVSystemID ][EVPrice]);
  2026. format(EvoVehicles[ EVSystemID ][EVOwner], 40, GetName(playerid));
  2027. EvoVehicles[ EVSystemID ][EVNeedSave] = 1;
  2028.  
  2029. new EVMessage[256];
  2030. format(EVMessage, 256, "{FFFFFF}You bought {ADFF2F}%s {FFFFFF}for {ADFF2F}%d $", VehNames[ EvoVehicles[ EVSystemID ][EVModel]-400 ], EvoVehicles[ EVSystemID ][EVPrice]);
  2031.  
  2032. INFO(playerid, EVMessage);
  2033. INFO(playerid, "You can write {ADFF2F}/myveh {FFFFFF}for manage your vehicles");
  2034. }
  2035. }
  2036.  
  2037. // Buying Evo Vehicle From Showroom
  2038. if(dialogid == DIALOG_SRVEH)
  2039. {
  2040. if(response)
  2041. {
  2042. new EVSystemID = VehEVID[ GetPlayerVehicleID(playerid) ];
  2043.  
  2044. if(GetPlayerVehicleCount(playerid) == MAX_PLAYER_EVO_VEHICLE) return ERROR(playerid, "You have already reached limit of the player vehicle"), RemovePlayerFromVehicle(playerid);
  2045. if(GetPlayerMoney(playerid) < EvoVehicles[ EVSystemID ][EVPrice]) return ERROR(playerid, "You don't have enough money for buy it!"), RemovePlayerFromVehicle(playerid);
  2046.  
  2047. new DiaString[512];
  2048.  
  2049. for(new i; i < sizeof(VehColors); i++)
  2050. {
  2051. format(DiaString, 512, "%s{FFFFFF}%s\n", DiaString, VehColors[i][VCName]);
  2052. }
  2053.  
  2054. ShowPlayerDialog(playerid, DIALOG_SRVEH_COLOR, DIALOG_STYLE_LIST, "{ADFF2F}Vehicle Color", DiaString, "Select", "Cancel");
  2055. }else{
  2056. if(pInfo[playerid][pRoot] != 1) RemovePlayerFromVehicle(playerid);
  2057. }
  2058. }
  2059.  
  2060. if(dialogid == DIALOG_SRVEH_COLOR)
  2061. {
  2062. if(response)
  2063. {
  2064. new EVSystemID = VehEVID[ GetPlayerVehicleID(playerid) ];
  2065.  
  2066. CreateEvoVehicle(EvoVehicles[ EVSystemID ][EVModel], GetName(playerid), Showrooms[ SelectedSR[playerid] ][SRX], Showrooms[ SelectedSR[playerid] ][SRY], Showrooms[ SelectedSR[playerid] ][SRZ], 0, VehColors[listitem][VCColor], VehColors[listitem][VCColor], EvoVehicles[ EVSystemID ][EVPrice]);
  2067. GivePlayerMoney(playerid, -EvoVehicles[ EVSystemID ][EVPrice]);
  2068.  
  2069. INFO(playerid, "Congratulations! You bought a new vehicle");
  2070. INFO(playerid, "You can enter your vehicle in front of showroom");
  2071. INFO(playerid, "You can use /myveh command for manage your vehicles");
  2072.  
  2073. RemovePlayerFromVehicle(playerid);
  2074. }else{
  2075. if(pInfo[playerid][pRoot] != 1) RemovePlayerFromVehicle(playerid);
  2076. }
  2077. }
  2078. return 1;
  2079. }
  2080.  
  2081. // =============================[SYSTEM PUBLICS]============================= //
  2082. // For System
  2083. // - LoadEVO
  2084. public LoadEVO(name[], value[])
  2085. {
  2086. INI_String("PANELPASS", EVOPanelPass, 150);
  2087. INI_Int("LASTVEHICLEID", LastEvoVehicleID);
  2088. INI_Int("LASTSHOWROOMID", LastShowroomID);
  2089. return 1;
  2090. }
  2091.  
  2092.  
  2093. // - SaveEVO
  2094. public SaveEVO()
  2095. {
  2096. new EVFileName[35];
  2097. format(EVFileName, 35, "%s/options.ini", EVOVEHICLE_MAIN_DIR);
  2098.  
  2099. new INI:EvoFile = INI_Open(EVFileName);
  2100.  
  2101. INI_WriteString(EvoFile, "PANELPASS", EVOPanelPass);
  2102. INI_WriteInt(EvoFile, "LASTVEHICLEID", LastEvoVehicleID);
  2103. INI_WriteInt(EvoFile, "LASTSHOWROOMID", LastShowroomID);
  2104.  
  2105. INI_Close(EvoFile);
  2106. }
  2107.  
  2108. // Evo Vehicle Version Controller
  2109. // - EvoVehicle_Init
  2110. public EvoVehicle_Init(index, response_code, data[])
  2111. {
  2112. printf("<========================================>");
  2113. printf(" ");
  2114. printf(" <Evo Script Version Controller> ");
  2115. printf(" <Evo Vehicle Ownership> ");
  2116. printf(" ");
  2117.  
  2118. printf(" Installed Version ");
  2119. printf(" %s ", VERSION);
  2120. printf(" ");
  2121. printf(" Last Version ");
  2122. printf(" %s ", data);
  2123. printf(" ");
  2124.  
  2125. if(response_code == 200)
  2126. {
  2127. if(!strcmp(data, VERSION, true))
  2128. {
  2129. printf(" Your EVO is actual ");
  2130. }else{
  2131. printf(" Your EVO is old ");
  2132. printf(" ");
  2133. printf(" Download the new version of EVO ");
  2134. printf(" From Topic in Forum-SAMP ");
  2135. }
  2136. }else{
  2137. printf(" ERROR ");
  2138. printf(" We couldn't get response ");
  2139. printf(" From Website ");
  2140. printf(" ");
  2141. printf(" EXPLANATION ");
  2142. printf(" %s", ConnectionErrors[response_code]);
  2143. }
  2144.  
  2145. printf(" ");
  2146. printf("<========================================>");
  2147. }
  2148.  
  2149. // - EvoVehicle_InGame
  2150. public EvoVehicle_InGame(index, response_code, data[])
  2151. {
  2152. new String[512];
  2153.  
  2154. if(response_code == 200)
  2155. {
  2156. format(String, 512, "{FFFFFF}Installed Version \t{ADFF2F}%s\n{FFFFFF}Last Version \t{ADFF2F}%s\n \n", VERSION, data);
  2157.  
  2158. if(!strcmp(data, VERSION, true))
  2159. {
  2160. format(String, 512, "%s{FFFFFF}Your Evo Vehicle Ownership is actual", String);
  2161. }else{
  2162. format(String, 512, "%s{FFFFFF}Your Evo Vehicle Ownership is old\nDownload the new version of EVO from topic in Forum-SAMP", String);
  2163. }
  2164.  
  2165. ShowPlayerDialog(index, 9999, DIALOG_STYLE_MSGBOX, "{ADFF2F}Evo Script Version Controller", String, "Close", "");
  2166. }else{
  2167. format(String, 512, "{FF0000}We couldn't get response from website!\n \n{FF0000}%s", ConnectionErrors[response_code]);
  2168.  
  2169. ShowPlayerDialog(index, 9999, DIALOG_STYLE_MSGBOX, "{ADFF2F}Evo Script Version Controller", String, "Close", "");
  2170. }
  2171. }
  2172.  
  2173. // For Evo Vehicles
  2174. // - CreateEvoVehicle
  2175. public CreateEvoVehicle(Modelid, Owner[], Float:X, Float:Y, Float:Z, Float:Rot, Col1, Col2, Price)
  2176. {
  2177. new CreatedID;
  2178.  
  2179. CreatedID = GetEmptyEvoVehicleID();
  2180.  
  2181. Iter_Add(EVs, CreatedID);
  2182. LastEvoVehicleID = Iter_Last(EVs)+1;
  2183.  
  2184. EvoVehicles[CreatedID][EVModel] = Modelid;
  2185. format(EvoVehicles[CreatedID][EVOwner], 40, Owner);
  2186. EvoVehicles[CreatedID][EVX] = X;
  2187. EvoVehicles[CreatedID][EVY] = Y;
  2188. EvoVehicles[CreatedID][EVZ] = Z;
  2189. EvoVehicles[CreatedID][EVRot] = Rot;
  2190. EvoVehicles[CreatedID][EVCol1] = Col1;
  2191. EvoVehicles[CreatedID][EVCol2] = Col2;
  2192. EvoVehicles[CreatedID][EVPrice] = Price;
  2193. EvoVehicles[CreatedID][EVSecurity] = 0;
  2194. EvoVehicles[CreatedID][EVLock] = 0;
  2195. format(EvoVehicles[CreatedID][EVPlate], 30, Owner);
  2196. EvoVehicles[CreatedID][EVPJ] = -1;
  2197. EvoVehicles[CreatedID][EVExist] = 1;
  2198.  
  2199. EvoVehicles[CreatedID][EVVehID] = CreateVehicle(Modelid, X, Y, Z, Rot, Col1, Col2, -1);
  2200. VehEVID[ EvoVehicles[CreatedID][EVVehID] ] = CreatedID;
  2201. VehInSystem[ EvoVehicles[CreatedID][EVVehID] ] = 1;
  2202. SetVehicleNumberPlate(EvoVehicles[CreatedID][EVVehID], Owner);
  2203. SetVehicleToRespawn(EvoVehicles[CreatedID][EVVehID]);
  2204.  
  2205. new FileName[35];
  2206. format(FileName, 35, "%s/Vehicle_%d.ini", EVOVEHICLE_VEHICLE_DIR, CreatedID);
  2207.  
  2208. new INI:VehFile = INI_Open(FileName);
  2209.  
  2210. INI_SetTag(VehFile, "evo");
  2211.  
  2212. INI_WriteInt(VehFile, "MODEL", Modelid);
  2213. INI_WriteString(VehFile, "OWNER", Owner);
  2214. INI_WriteFloat(VehFile, "X", X);
  2215. INI_WriteFloat(VehFile, "Y", Y);
  2216. INI_WriteFloat(VehFile, "Z", Z);
  2217. INI_WriteFloat(VehFile, "ROT", Rot);
  2218. INI_WriteInt(VehFile, "COL1", Col1);
  2219. INI_WriteInt(VehFile, "COL2", Col2);
  2220. INI_WriteInt(VehFile, "PRICE", Price);
  2221. INI_WriteInt(VehFile, "SECURITY", 0);
  2222. INI_WriteInt(VehFile, "LOCK", 0);
  2223. INI_WriteString(VehFile, "PLATE", Owner);
  2224. INI_WriteInt(VehFile, "PJ", -1);
  2225. SaveAllVehicleComponentsToFile(VehFile, CreatedID);
  2226.  
  2227. INI_Close(VehFile);
  2228.  
  2229. return CreatedID;
  2230. }
  2231.  
  2232. // - DeleteEvoVehicle
  2233. public DeleteEvoVehicle(vehicleid)
  2234. {
  2235. EvoVehicles[vehicleid][EVExist] = 0;
  2236. DestroyVehicle(EvoVehicles[vehicleid][EVVehID]);
  2237. VehInSystem[ EvoVehicles[vehicleid][EVVehID] ] = 0;
  2238.  
  2239. Iter_Remove(EVs, vehicleid);
  2240. LastEvoVehicleID = Iter_Last(EVs)+1;
  2241.  
  2242. new FileName[35];
  2243. format(FileName, 35, "%s/Vehicle_%d.ini", EVOVEHICLE_VEHICLE_DIR, vehicleid);
  2244. fremove(FileName);
  2245. return 1;
  2246. }
  2247.  
  2248. // - LoadEvoVehicles
  2249. public LoadEvoVehicles()
  2250. {
  2251. new EVFileName[35], Loadedcount;
  2252.  
  2253. for(new i = LastLoaded; i < LastEvoVehicleID; i++)
  2254. {
  2255. format(EVFileName, 35, "%s/Vehicle_%d.ini", EVOVEHICLE_VEHICLE_DIR, i);
  2256.  
  2257. if(fexist(EVFileName))
  2258. {
  2259. INI_ParseFile(EVFileName, "LoadEvoVehicle_%s", .bExtra = true, .extra = i);
  2260.  
  2261. Iter_Add(EVs, i);
  2262.  
  2263. EvoVehicles[i][EVVehID] = CreateVehicle(EvoVehicles[i][EVModel], EvoVehicles[i][EVX], EvoVehicles[i][EVY], EvoVehicles[i][EVZ], EvoVehicles[i][EVRot], EvoVehicles[i][EVCol1], EvoVehicles[i][EVCol2], -1);
  2264. VehEVID[ EvoVehicles[i][EVVehID] ] = i;
  2265. VehInSystem[ EvoVehicles[i][EVVehID] ] = 1;
  2266. SetVehicleNumberPlate(EvoVehicles[i][EVVehID], EvoVehicles[i][EVPlate]);
  2267. SetVehicleToRespawn(EvoVehicles[i][EVVehID]);
  2268.  
  2269. LoadVehicleMod(i);
  2270.  
  2271. Loadedcount++;
  2272.  
  2273. if(Loadedcount == 50)
  2274. {
  2275. LastLoaded = i+1;
  2276. SetTimer("LoadEvoVehicles", 10000, 0);
  2277. break;
  2278. }
  2279. }
  2280.  
  2281. if(i == LastEvoVehicleID-1)
  2282. {
  2283. LastLoaded = 0;
  2284. break;
  2285. }
  2286. }
  2287.  
  2288. }
  2289.  
  2290. // - LoadEvoVehicle_evo
  2291. public LoadEvoVehicle_evo(EvoVehicleID, name[], value[])
  2292. {
  2293. INI_Int("MODEL", EvoVehicles[ EvoVehicleID ][EVModel]);
  2294. INI_String("OWNER", EvoVehicles[ EvoVehicleID ][EVOwner], 40);
  2295. INI_Float("X", EvoVehicles[ EvoVehicleID ][EVX]);
  2296. INI_Float("Y", EvoVehicles[ EvoVehicleID ][EVY]);
  2297. INI_Float("Z", EvoVehicles[ EvoVehicleID ][EVZ]);
  2298. INI_Float("ROT", EvoVehicles[ EvoVehicleID ][EVRot]);
  2299. INI_Int("COL1", EvoVehicles[ EvoVehicleID ][EVCol1]);
  2300. INI_Int("COL2", EvoVehicles[ EvoVehicleID ][EVCol2]);
  2301. INI_Int("PRICE", EvoVehicles[ EvoVehicleID ][EVPrice]);
  2302. INI_Int("SECURITY", EvoVehicles[ EvoVehicleID ][EVSecurity]);
  2303. INI_Int("LOCK", EvoVehicles[ EvoVehicleID ][EVLock]);
  2304. INI_String("PLATE", EvoVehicles[ EvoVehicleID ][EVPlate], 30);
  2305. INI_Int("PJ", EvoVehicles[ EvoVehicleID ][EVPJ]);
  2306. EvoVehicles[ EvoVehicleID ][EVExist] = 1;
  2307. LoadAllVehicleComponents(EvoVehicleID, name, value);
  2308. return 1;
  2309. }
  2310.  
  2311. // - SaveEvoVehicles
  2312. public SaveEvoVehicles(last)
  2313. {
  2314. new EVFileName[35], INI:VehFile, SavedCount;
  2315. Unloading = last;
  2316.  
  2317. new Float:NewX, Float:NewY, Float:NewZ, Float:NewRot;
  2318.  
  2319. for(new i = LastSaved; i < LastEvoVehicleID; i++)
  2320. {
  2321. if(EvoVehicles[i][EVExist] == 1)
  2322. {
  2323. if(EvoVehicles[i][EVNeedSave] == 1)
  2324. {
  2325. if(SavedCount == 10 && Unloading == 0)
  2326. {
  2327. LastSaved = i;
  2328. SetTimer("SaveEvoVehicles", 5000, 0);
  2329. break;
  2330. }
  2331.  
  2332. format(EVFileName, 35, "%s/Vehicle_%d.ini", EVOVEHICLE_VEHICLE_DIR, i);
  2333.  
  2334. VehFile = INI_Open(EVFileName);
  2335.  
  2336. INI_SetTag(VehFile, "evo");
  2337.  
  2338. INI_WriteInt(VehFile, "MODEL", EvoVehicles[i][EVModel]);
  2339. INI_WriteString(VehFile, "OWNER", EvoVehicles[i][EVOwner]);
  2340. INI_WriteFloat(VehFile, "X", EvoVehicles[i][EVX]);
  2341. INI_WriteFloat(VehFile, "Y", EvoVehicles[i][EVY]);
  2342. INI_WriteFloat(VehFile, "Z", EvoVehicles[i][EVZ]);
  2343. INI_WriteFloat(VehFile, "ROT", EvoVehicles[i][EVRot]);
  2344. INI_WriteInt(VehFile, "COL1", EvoVehicles[i][EVCol1]);
  2345. INI_WriteInt(VehFile, "COL2", EvoVehicles[i][EVCol2]);
  2346. INI_WriteInt(VehFile, "PRICE", EvoVehicles[i][EVPrice]);
  2347. INI_WriteInt(VehFile, "SECURITY", EvoVehicles[i][EVSecurity]);
  2348. INI_WriteInt(VehFile, "LOCK", EvoVehicles[i][EVLock]);
  2349. INI_WriteString(VehFile, "PLATE", EvoVehicles[i][EVPlate]);
  2350. INI_WriteInt(VehFile, "PJ", EvoVehicles[i][EVPJ]);
  2351. SaveAllVehicleComponentsToFile(VehFile, i);
  2352.  
  2353. INI_Close(VehFile);
  2354.  
  2355. SavedCount++;
  2356. }
  2357. }
  2358.  
  2359. if(i == LastEvoVehicleID-1)
  2360. {
  2361. LastSaved = 0;
  2362. break;
  2363. }
  2364. }
  2365. }
  2366.  
  2367. // For Showroom
  2368. // - CreateShowroom
  2369. public CreateShowroom(Name[], Float:X, Float:Y, Float:Z)
  2370. {
  2371. new CreatedID = GetEmptyShowroomID();
  2372.  
  2373. Iter_Add(SRs, CreatedID);
  2374. LastShowroomID = Iter_Last(SRs)+1;
  2375.  
  2376. format(Showrooms[CreatedID][SRName], 100, Name);
  2377. Showrooms[CreatedID][SRX] = X;
  2378. Showrooms[CreatedID][SRY] = Y;
  2379. Showrooms[CreatedID][SRZ] = Z;
  2380. Showrooms[CreatedID][SRExist] = 1;
  2381.  
  2382. Showrooms[CreatedID][SRPick] = CreatePickup(1239, 1, X, Y, Z, 0);
  2383.  
  2384. new String[128];
  2385. format(String, 128, "{ADFF2F}SHOWROOM\n{ADFF2F}%s\n{FFFFFF}Showroom ID {ADFF2F}%d", Showrooms[CreatedID][SRName], CreatedID);
  2386. Showrooms[CreatedID][SR3D] = Create3DTextLabel(String, -1, X, Y, Z, 25.0, 0);
  2387.  
  2388. new FileName[35];
  2389. format(FileName, 35, "%s/Showroom_%d.ini", EVOVEHICLE_SHOWROOM_DIR, CreatedID);
  2390.  
  2391. new INI:SRFile = INI_Open(FileName);
  2392.  
  2393. INI_SetTag(SRFile, "evo");
  2394.  
  2395. INI_WriteString(SRFile, "NAME", Name);
  2396. INI_WriteFloat(SRFile, "X", X);
  2397. INI_WriteFloat(SRFile, "Y", Y);
  2398. INI_WriteFloat(SRFile, "Z", Z);
  2399.  
  2400. INI_Close(SRFile);
  2401.  
  2402. return CreatedID;
  2403. }
  2404.  
  2405. // - DeleteShowroom
  2406. public DeleteShowroom(showroomid)
  2407. {
  2408. Showrooms[showroomid][SRExist] = 0;
  2409. DestroyPickup(Showrooms[showroomid][SRPick]);
  2410. Delete3DTextLabel(Showrooms[showroomid][SR3D]);
  2411.  
  2412. Iter_Remove(SRs, showroomid);
  2413. LastShowroomID = Iter_Last(SRs)+1;
  2414.  
  2415. new FileName[35];
  2416. format(FileName, 35, "%s/Showroom_%d.ini", EVOVEHICLE_SHOWROOM_DIR, showroomid);
  2417. fremove(FileName);
  2418. }
  2419.  
  2420. // - LoadShowrooms
  2421. public LoadShowrooms()
  2422. {
  2423. new SRFileName[35], Loadedcount, String[128];
  2424.  
  2425. for(new i = LastLoadedSR; i < LastShowroomID; i++)
  2426. {
  2427. format(SRFileName, 35, "%s/Galeri_%d.ini", EVOVEHICLE_SHOWROOM_DIR, i);
  2428.  
  2429. if(fexist(SRFileName))
  2430. {
  2431. INI_ParseFile(SRFileName, "LoadShowroom_%s", .bExtra = true, .extra = i);
  2432.  
  2433. Showrooms[i][SRPick] = CreatePickup(1239, 1, Showrooms[i][SRX], Showrooms[i][SRY], Showrooms[i][SRZ], 0);
  2434.  
  2435. format(String, 128, "{ADFF2F}SHOWROOM\n{ADFF2F}%s\n{FFFFFF}Showroom ID {ADFF2F}%d", Showrooms[i][SRName], i);
  2436. Showrooms[i][SR3D] = Create3DTextLabel(String, -1, Showrooms[i][SRX], Showrooms[i][SRY], Showrooms[i][SRZ], 25.0, 0);
  2437.  
  2438. Showrooms[i][SRExist] = 1;
  2439.  
  2440. Loadedcount++;
  2441.  
  2442. if(Loadedcount == 50)
  2443. {
  2444. LastLoadedSR = i+1;
  2445. SetTimer("LoadShowrooms", 10000, 0);
  2446. break;
  2447. }
  2448. }
  2449.  
  2450. if(i == LastShowroomID-1)
  2451. {
  2452. LastLoadedSR = 0;
  2453. break;
  2454. }
  2455. }
  2456. }
  2457.  
  2458. // - LoadShowroom_evo
  2459. public LoadShowroom_evo(ShowroomID, name[], value[])
  2460. {
  2461. INI_String("NAME", Showrooms[ ShowroomID ][SRName], 100);
  2462. INI_Float("X", Showrooms[ ShowroomID ][SRX]);
  2463. INI_Float("Y", Showrooms[ ShowroomID ][SRY]);
  2464. INI_Float("Z", Showrooms[ ShowroomID ][SRZ]);
  2465. Showrooms[ ShowroomID ][SRExist] = 1;
  2466. return 1;
  2467. }
  2468.  
  2469. // - Save Showrooms
  2470. public SaveShowrooms(last)
  2471. {
  2472. new SRFileName[35], INI:SRFile, SavedCount;
  2473. Unloading = last;
  2474.  
  2475. for(new i = LastSavedSR; i < LastShowroomID; i++)
  2476. {
  2477. if(Showrooms[i][SRExist] == 1)
  2478. {
  2479. if(Showrooms[i][SRNeedSave] == 1)
  2480. {
  2481. if(SavedCount == 10 && Unloading == 0)
  2482. {
  2483. LastSavedSR = i;
  2484. SetTimer("SaveShowrooms", 5000, 0);
  2485. break;
  2486. }
  2487.  
  2488. format(SRFileName, 35, "%s/Showroom_%d.ini", EVOVEHICLE_SHOWROOM_DIR, i);
  2489.  
  2490. SRFile = INI_Open(SRFileName);
  2491.  
  2492. INI_SetTag(SRFile, "evo");
  2493.  
  2494. INI_WriteString(SRFile, "NAME", Showrooms[i][SRName]);
  2495. INI_WriteFloat(SRFile, "X", Showrooms[i][SRX]);
  2496. INI_WriteFloat(SRFile, "Y", Showrooms[i][SRY]);
  2497. INI_WriteFloat(SRFile, "Z", Showrooms[i][SRZ]);
  2498.  
  2499. INI_Close(SRFile);
  2500.  
  2501. SavedCount++;
  2502. }
  2503. }
  2504.  
  2505. if(i == LastShowroomID-1)
  2506. {
  2507. LastSavedSR = 0;
  2508. break;
  2509. }
  2510. }
  2511. }
Add Comment
Please, Sign In to add comment