Guest User

Untitled

a guest
Mar 25th, 2011
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.41 KB | None | 0 0
  1. /*
  2. This TruckMission FilterScript is made by =>Sandra<= on the 10th of March 2008
  3. Do not remove any credits!
  4. */
  5.  
  6. #include <a_samp>
  7. #include <dini>
  8.  
  9. #define MAX_MISSIONS 25
  10.  
  11. #define MissionFile "Truckmissions/%d.mission"
  12. #define DefaultCheckpointSize 5
  13. #define DefaultTruckModel 515
  14. #define DefaultTrailerModel 435
  15. #define DefaultPrize 1000
  16.  
  17. //Colors
  18. #define COLOR_RED 0xFF0000AA
  19. #define COLOR_GREEN 0x00FF00AA
  20. #define COLOR_BLUE 0x0000FFAA
  21. #define COLOR_YELLOW 0xFFFF00AA
  22. #define COLOR_ORANGE 0xFFA500AA
  23. #define COLOR_MENU 0xADFF2FAA //Green/Yellow
  24. #define COLOR_MENUHEADER 0x7CFC00AA
  25. #define COLOR_AQUA 0x66CDAAAA
  26.  
  27. //Actions
  28. #define CHANGE_NAME 1
  29. #define CHANGE_PRIZE 2
  30. #define CHANGE_MODEL 3
  31. #define CHANGE_CPSIZE 4
  32. #define CHANGE_TRAILER 5
  33. #define CHANGE_COLOR1 6
  34. #define CHANGE_COLOR2 7
  35. #define CHANGE_TIMELIMIT 8
  36.  
  37. enum Minfo
  38. {
  39. Ready,
  40. DoesExists,
  41. Float:StartX,
  42. Float:StartY,
  43. Float:StartZ,
  44. Float:StartAngle,
  45. Float:EndX,
  46. Float:EndY,
  47. Float:EndZ,
  48. CpSize,
  49. Prize,
  50. Name[50],
  51. TruckModel,
  52. TruckColor1,
  53. TruckColor2,
  54. Highscore,
  55. HighscoreName[MAX_PLAYER_NAME],
  56. IsGettingPlayed,
  57. TickcountBeforeStart,
  58. TrailerModel,
  59. UseTrailer,
  60. TimeLimit,
  61. Timer,
  62. }
  63. new MissionInfo[MAX_MISSIONS][Minfo];
  64.  
  65. new VehNames[212][] =
  66. {
  67. "Landstalker", "Bravura", "Buffalo", "Linerunner", "Pereniel", "Sentinel", "Dumper", "Firetruck", "Trashmaster", "Stretch",
  68. "Manana", "Infernus", "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam", "Esperanto", "Taxi",
  69. "Washington", "Bobcat", "Mr Whoopee", "BF Injection", "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator",
  70. "Bus", "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie", "Stallion", "Rumpo", "RC Bandit", "Romero",
  71. "Packer", "Monster", "Admiral", "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder", "Reefer", "Tropic", "Flatbed",
  72. "Yankee", "Caddy", "Solair", "Berkley's RC Van", "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider",
  73. "Glendale", "Oceanic", "Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy", "Hermes", "Sabre", "Rustler",
  74. "ZR3 50", "Walton", "Regina", "Comet", "BMX", "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
  75. "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking", "Blista Compact", "Police Maverick",
  76. "Boxville", "Benson", "Mesa", "RC Goblin", "Hotring Racer", "Hotring Racer", "Bloodring Banger", "Rancher", "Super GT",
  77. "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropdust", "Stunt", "Tanker", "RoadTrain", "Nebula", "Majestic",
  78. "Buccaneer", "Shamal", "Hydra", "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune", "Cadrona", "FBI Truck",
  79. "Willard", "Forklift", "Tractor", "Combine", "Feltzer", "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
  80. "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo", "Cargobob", "Tampa", "Sunrise", "Merit", "Utility",
  81. "Nevada", "Yosemite", "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratum", "Elegy", "Raindance", "RC Tiger",
  82. "Flash", "Tahoma", "Savanna", "Bandito", "Freight", "Trailer", "Kart", "Mower", "Duneride", "Sweeper", "Broadway",
  83. "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400", "Newsvan", "Tug", "Trailer", "Emperor", "Wayfarer",
  84. "Euros", "Hotdog", "Club", "Trailer", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car (LSPD)", "Police Car (SFPD)",
  85. "Police Car (LVPD)", "Police Ranger", "Picador", "S.W.A.T. Van", "Alpha", "Phoenix", "Glendale", "Sadler", "Luggage Trailer",
  86. "Luggage Trailer", "Stair Trailer", "Boxville", "Farm Plow", "Utility Trailer"
  87. };
  88.  
  89. new TruckmissionPlaying[MAX_PLAYERS];
  90. new FileName[60];
  91. new Question;
  92. new Menu:SettingsMenu1;
  93. new Menu:SettingsMenu2;
  94. new Menu:UseTrailerMenu;
  95. new Menu:ColorMenu;
  96. new SpecialAction[MAX_PLAYERS];
  97. new EditMissionID;
  98. new Truck[MAX_MISSIONS];
  99. new Trailer[MAX_MISSIONS];
  100.  
  101.  
  102. public OnFilterScriptInit()
  103. {
  104. for(new i=1; i<MAX_MISSIONS; i++)
  105. {
  106. format(MissionInfo[i][HighscoreName], MAX_PLAYER_NAME, "Nobody");
  107. format(FileName, sizeof(FileName), MissionFile, i);
  108. if(dini_Exists(FileName))
  109. {
  110. MissionInfo[i][DoesExists] = 1;
  111. ReadFile(i);
  112. }
  113. }
  114. SettingsMenu1 = CreateMenu("Settings", 1, 150, 150, 300, 40);
  115. AddMenuItem(SettingsMenu1, 0, "Change Name");
  116. AddMenuItem(SettingsMenu1, 0, "Set StartPosition");
  117. AddMenuItem(SettingsMenu1, 0, "Set Finishposition");
  118. AddMenuItem(SettingsMenu1, 0, "Change Checkpointsize");
  119. AddMenuItem(SettingsMenu1, 0, "Change Prize");
  120. AddMenuItem(SettingsMenu1, 0, "Change Truckmodel");
  121. AddMenuItem(SettingsMenu1, 0, "Reset Highscore");
  122. AddMenuItem(SettingsMenu1, 0, "View MissionInfo");
  123. AddMenuItem(SettingsMenu1, 0, "Reload Mission");
  124. AddMenuItem(SettingsMenu1, 0, "Next");
  125. SettingsMenu2 = CreateMenu("Settings", 1, 150, 150, 300, 40);
  126. AddMenuItem(SettingsMenu2, 0, "Use Trailer");
  127. AddMenuItem(SettingsMenu2, 0, "Change Trailermodel");
  128. AddMenuItem(SettingsMenu2, 0, "Change Truckcolor");
  129. AddMenuItem(SettingsMenu2, 0, "Set TimeLimit");
  130. AddMenuItem(SettingsMenu2, 0, "Back");
  131. UseTrailerMenu = CreateMenu(" ", 1, 150, 150, 300, 40);
  132. SetMenuColumnHeader(UseTrailerMenu, 0, "Do you want to use a trailer?");
  133. AddMenuItem(UseTrailerMenu, 0, "Yes");
  134. AddMenuItem(UseTrailerMenu, 0, "No");
  135. AddMenuItem(UseTrailerMenu, 0, "Back");
  136. ColorMenu = CreateMenu("Colors", 1, 150, 150, 300, 40);
  137. AddMenuItem(ColorMenu, 0, "Change Color 1");
  138. AddMenuItem(ColorMenu, 0, "Change Color 2");
  139. AddMenuItem(ColorMenu, 0, "Show Color ID's");
  140. AddMenuItem(ColorMenu, 0, "Back");
  141. print("==========================================");
  142. print("This Truckmission Filterscript is made by:");
  143. print(" =>Sandra<= ");
  144. print(" Do not remove the credits! ");
  145. print("==========================================");
  146. return 1;
  147. }
  148.  
  149. public OnFilterScriptExit()
  150. {
  151. SaveFiles();
  152. for(new i; i<MAX_PLAYERS; i++)
  153. {
  154. if(IsPlayerConnected(i))
  155. {
  156. for(new ID=1; ID<MAX_MISSIONS; ID++)
  157. {
  158. if(IsPlayerInVehicle(i, Truck[ID]))
  159. {
  160. RemovePlayerFromVehicle(i);
  161. }
  162. }
  163. }
  164. }
  165. for(new ID=1; ID<MAX_MISSIONS; ID++)
  166. {
  167. DestroyVehicle(Truck[ID]);
  168. DestroyVehicle(Trailer[ID]);
  169. }
  170. return 1;
  171. }
  172.  
  173. public OnPlayerConnect(playerid)
  174. {
  175. TruckmissionPlaying[playerid] = 0;
  176. SpecialAction[playerid] = 0;
  177. return 1;
  178. }
  179.  
  180. public OnPlayerDisconnect(playerid, reason)
  181. {
  182. new ID = TruckmissionPlaying[playerid];
  183. if(ID > 0)
  184. {
  185. MissionInfo[ID][IsGettingPlayed] = 0;
  186. MissionInfo[ID][TickcountBeforeStart] = 0;
  187. DisablePlayerCheckpoint(playerid);
  188. SetVehicleToRespawn(Truck[ID]);
  189. KillTimer(MissionInfo[ID][Timer]);
  190. if(MissionInfo[ID][UseTrailer] == 1)
  191. {
  192. DestroyVehicle(Trailer[ID]);
  193. }
  194. }
  195. TruckmissionPlaying[playerid] = 0;
  196. return 1;
  197. }
  198.  
  199.  
  200. public OnVehicleDeath(vehicleid, killerid)
  201. {
  202. new PTruck;
  203. for(new ID=1; ID<MAX_MISSIONS; ID++)
  204. {
  205. if(Truck[ID] == vehicleid)
  206. {
  207. PTruck = ID;
  208. break;
  209. }
  210. }
  211. if(PTruck > 0)
  212. {
  213. for(new i; i<MAX_PLAYERS; i++)
  214. {
  215. if(IsPlayerConnected(i))
  216. {
  217. if(TruckmissionPlaying[i] == PTruck)
  218. {
  219. GameTextForPlayer(i, "~r~Loser", 5000, 3);
  220. TruckmissionPlaying[i] = 0;
  221. MissionInfo[PTruck][IsGettingPlayed] = 0;
  222. MissionInfo[PTruck][TickcountBeforeStart] = 0;
  223. DisablePlayerCheckpoint(i);
  224. SendClientMessage(i, COLOR_RED, "You failed the Delivery mission!");
  225. SetVehicleToRespawn(Truck[PTruck]);
  226. TruckmissionPlaying[i] = 0;
  227. if(MissionInfo[PTruck][UseTrailer] == 1)
  228. {
  229. DestroyVehicle(Trailer[PTruck]);
  230. }
  231. }
  232. }
  233. }
  234. }
  235. return 1;
  236. }
  237.  
  238. public OnPlayerText(playerid, text[])
  239. {
  240. if(SpecialAction[playerid] > 0)
  241. {
  242. switch(SpecialAction[playerid])
  243. {
  244. case CHANGE_NAME:
  245. {
  246. new string[128];
  247. format(MissionInfo[EditMissionID][Name], 50, "%s", text);
  248. format(string, sizeof(string), "The new name of DeliveryMission #%d is: \"%s\".", EditMissionID, MissionInfo[EditMissionID][Name]);
  249. SendClientMessage(playerid, COLOR_GREEN, string);
  250. GameTextForPlayer(playerid, " ", 100, 3);
  251. ShowMenuForPlayer(SettingsMenu1, playerid);
  252. SpecialAction[playerid] = 0;
  253. return 0;
  254. }
  255. case CHANGE_PRIZE:
  256. {
  257. if(!IsNumeric(text))
  258. {
  259. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  260. return 0;
  261. }
  262. else
  263. {
  264. new newval = strval(text);
  265. new string[128];
  266. MissionInfo[EditMissionID][Prize] = newval;
  267. format(string, sizeof(string), "The new prize of DeliveryMission #%d is: $%d", EditMissionID, MissionInfo[EditMissionID][Prize]);
  268. SendClientMessage(playerid, COLOR_GREEN, string);
  269. GameTextForPlayer(playerid, " ", 100, 3);
  270. ShowMenuForPlayer(SettingsMenu1, playerid);
  271. SpecialAction[playerid] = 0;
  272. }
  273. return 0;
  274. }
  275. case CHANGE_CPSIZE:
  276. {
  277. if(!IsNumeric(text))
  278. {
  279. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  280. return 0;
  281. }
  282. else
  283. {
  284. new newval = strval(text);
  285. new string[128];
  286. MissionInfo[EditMissionID][CpSize] = newval;
  287. format(string, sizeof(string), "The new CheckpointSize of DeliveryMission #%d is: %d", EditMissionID, MissionInfo[EditMissionID][CpSize]);
  288. SendClientMessage(playerid, COLOR_GREEN, string);
  289. GameTextForPlayer(playerid, " ", 100, 3);
  290. ShowMenuForPlayer(SettingsMenu1, playerid);
  291. SpecialAction[playerid] = 0;
  292. return 0;
  293. }
  294. }
  295. case CHANGE_MODEL:
  296. {
  297. if(!IsNumeric(text))
  298. {
  299. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  300. return 0;
  301. }
  302. if(!IsUsableTruck(strval(text)))
  303. {
  304. SendClientMessage(playerid, COLOR_RED, "Invalid Model. (Available: 403, 514, 515, 459)");
  305. return 0;
  306. }
  307. else
  308. {
  309. new newval = strval(text);
  310. new string[128];
  311. MissionInfo[EditMissionID][TruckModel] = newval;
  312. format(string, sizeof(string), "The new Deliverymodel of DeliveryMission #%d is: %d (%s)", EditMissionID, MissionInfo[EditMissionID][TruckModel], VehNames[newval-400]);
  313. SendClientMessage(playerid, COLOR_GREEN, string);
  314. GameTextForPlayer(playerid, " ", 100, 3);
  315. ShowMenuForPlayer(SettingsMenu1, playerid);
  316. SpecialAction[playerid] = 0;
  317. return 0;
  318. }
  319. }
  320. case CHANGE_TRAILER:
  321. {
  322. if(!IsNumeric(text))
  323. {
  324. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  325. return 0;
  326. }
  327. if(!IsUsableTrailer(strval(text)))
  328. {
  329. SendClientMessage(playerid, COLOR_RED, "Invalid Model. (Available: 435, 450, 584, 591)");
  330. return 0;
  331. }
  332. else
  333. {
  334. new newval = strval(text);
  335. new string[128];
  336. MissionInfo[EditMissionID][TrailerModel] = newval;
  337. format(string, sizeof(string), "The new TrailerModel of DeliveryMission #%d is: %d (%s)", EditMissionID, MissionInfo[EditMissionID][TrailerModel], VehNames[newval-400]);
  338. SendClientMessage(playerid, COLOR_GREEN, string);
  339. GameTextForPlayer(playerid, " ", 100, 3);
  340. ShowMenuForPlayer(SettingsMenu2, playerid);
  341. SpecialAction[playerid] = 0;
  342. return 0;
  343. }
  344. }
  345. case CHANGE_COLOR1:
  346. {
  347. if(!IsNumeric(text))
  348. {
  349. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  350. return 0;
  351. }
  352. else
  353. {
  354. new newval = strval(text);
  355. if(newval < -1 || newval > 126)
  356. {
  357. SendClientMessage(playerid, COLOR_RED, "Pick a number between -1 and 126!");
  358. return 0;
  359. }
  360. new string[128];
  361. MissionInfo[EditMissionID][TruckColor1] = newval;
  362. format(string, sizeof(string), "The new Truckcolor1 of TruckMission #%d is: %d", EditMissionID, MissionInfo[EditMissionID][TruckColor1]);
  363. SendClientMessage(playerid, COLOR_GREEN, string);
  364. GameTextForPlayer(playerid, " ", 100, 3);
  365. ShowMenuForPlayer(SettingsMenu2, playerid);
  366. SpecialAction[playerid] = 0;
  367. return 0;
  368. }
  369. }
  370. case CHANGE_COLOR2:
  371. {
  372. if(!IsNumeric(text))
  373. {
  374. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  375. return 0;
  376. }
  377. else
  378. {
  379. new newval = strval(text);
  380. if(newval < -1 || newval > 126)
  381. {
  382. SendClientMessage(playerid, COLOR_RED, "Pick a number between -1 and 126!");
  383. return 0;
  384. }
  385. new string[128];
  386. MissionInfo[EditMissionID][TruckColor2] = newval;
  387. format(string, sizeof(string), "The new Truckcolor2 of TruckMission #%d is: %d", EditMissionID, MissionInfo[EditMissionID][TruckColor2]);
  388. SendClientMessage(playerid, COLOR_GREEN, string);
  389. GameTextForPlayer(playerid, " ", 100, 3);
  390. ShowMenuForPlayer(SettingsMenu2, playerid);
  391. SpecialAction[playerid] = 0;
  392. return 0;
  393. }
  394. }
  395. case CHANGE_TIMELIMIT:
  396. {
  397. if(!IsNumeric(text))
  398. {
  399. SendClientMessage(playerid, COLOR_RED, "Only numbers allowed!");
  400. return 0;
  401. }
  402. else
  403. {
  404. new newval = strval(text);
  405. if(newval < 0)
  406. {
  407. SendClientMessage(playerid, COLOR_RED, "You can't set a negative number!");
  408. return 0;
  409. }
  410. new string[128];
  411. MissionInfo[EditMissionID][TimeLimit] = newval;
  412. format(string, sizeof(string), "The new timelimit of TruckMission #%d is %d seconds", EditMissionID, MissionInfo[EditMissionID][TimeLimit]);
  413. SendClientMessage(playerid, COLOR_GREEN, string);
  414. GameTextForPlayer(playerid, " ", 100, 3);
  415. ShowMenuForPlayer(SettingsMenu2, playerid);
  416. SpecialAction[playerid] = 0;
  417. return 0;
  418. }
  419. }
  420. }
  421. }
  422. return 1;
  423. }
  424.  
  425.  
  426. public OnPlayerCommandText(playerid, cmdtext[])
  427. {
  428. new cmd[256], tmp[256], idx;
  429. cmd = strtok(cmdtext, idx);
  430.  
  431. if (strcmp("/createmission", cmdtext, true) == 0)
  432. {
  433. new NewID;
  434. if(!IsPlayerAdmin(playerid)) return 0;
  435. for(new i=1; i<MAX_MISSIONS; i++)
  436. {
  437. if(MissionInfo[i][DoesExists] == 0)
  438. {
  439. NewID = i;
  440. new string[128];
  441. format(string, sizeof(string), "The ID of this new Truckmission is: %d. Use: \"/editmission %d\" to edit this mission.", NewID, NewID);
  442. SendClientMessage(playerid, COLOR_YELLOW, string);
  443. MissionInfo[NewID][DoesExists] = 1;
  444. CreateNewFile(NewID);
  445. break;
  446. }
  447. }
  448. if(NewID == 0)
  449. {
  450. SendClientMessage(playerid, COLOR_RED, "Limit of Truckmissions reached! You can increase this limit in the .pwn file!");
  451. }
  452. return 1;
  453. }
  454.  
  455. if(strcmp(cmd, "/deletemission", true) == 0)
  456. {
  457. if(!IsPlayerAdmin(playerid)) return 0;
  458. new string[128];
  459. tmp = strtok(cmdtext, idx);
  460. if(!strlen(tmp))
  461. {
  462. SendClientMessage(playerid,COLOR_RED, "Use: /deletemission [MissionID]");
  463. return 1;
  464. }
  465. new ID = strval(tmp);
  466. if(MissionInfo[ID][DoesExists] == 1)
  467. {
  468. format(FileName, sizeof(FileName), MissionFile, ID);
  469. dini_Remove(FileName);
  470. MissionInfo[ID][DoesExists] = 0;
  471. format(string, sizeof(string), "You deleted Truckmission #%d.", ID);
  472. SendClientMessage(playerid, COLOR_ORANGE, string);
  473. DestroyVehicle(Truck[ID]);
  474. DestroyVehicle(Trailer[ID]);
  475. }
  476. else
  477. {
  478. format(string, sizeof(string), "Truckmission #%d does not exists!", ID);
  479. SendClientMessage(playerid, COLOR_RED, string);
  480. }
  481. return 1;
  482. }
  483.  
  484. if(strcmp(cmd, "/editmission", true) == 0)
  485. {
  486. if(!IsPlayerAdmin(playerid)) return 0;
  487. new string[128];
  488. tmp = strtok(cmdtext, idx);
  489. if(!strlen(tmp))
  490. {
  491. SendClientMessage(playerid,COLOR_RED, "Use: /editmission [MissionID]");
  492. return 1;
  493. }
  494. new ID = strval(tmp);
  495. if(MissionInfo[ID][DoesExists] == 1)
  496. {
  497. format(string, sizeof(string), "Settings for Truckmission #%d.", ID);
  498. SetMenuColumnHeader(SettingsMenu1, 0, string);
  499. ShowMenuForPlayer(SettingsMenu1, playerid);
  500. TogglePlayerControllable(playerid, 0);
  501. EditMissionID = ID;
  502. }
  503. else
  504. {
  505. format(string, sizeof(string), "Truckmission #%d does not exists!", ID);
  506. SendClientMessage(playerid, COLOR_RED, string);
  507. }
  508. return 1;
  509. }
  510.  
  511. if(strcmp(cmd, "/missioninfo", true) == 0)
  512. {
  513. if(!IsPlayerAdmin(playerid)) return 0;
  514. new string[128];
  515. tmp = strtok(cmdtext, idx);
  516. if(!strlen(tmp))
  517. {
  518. SendClientMessage(playerid,COLOR_RED, "Use: /missioninfo [MissionID]");
  519. return 1;
  520. }
  521. new ID = strval(tmp);
  522. if(MissionInfo[ID][DoesExists] == 1)
  523. {
  524. GetMissionInfo(playerid, ID);
  525. return 1;
  526. }
  527. else
  528. {
  529. format(string, sizeof(string), "Deliverymission #%d does not exists!", ID);
  530. SendClientMessage(playerid, COLOR_RED, string);
  531. }
  532. return 1;
  533. }
  534.  
  535. if(strcmp(cmdtext, "/yes", true)==0)
  536. {
  537. if(!IsPlayerAdmin(playerid)) return 0;
  538. if(Question == 0)
  539. {
  540. SendClientMessage(playerid, COLOR_RED, "There is no question for you at the moment.");
  541. return 1;
  542. }
  543. if(Question == 1)
  544. {
  545. if(IsPlayerInAnyVehicle(playerid))
  546. {
  547. GetVehiclePos(GetPlayerVehicleID(playerid), MissionInfo[EditMissionID][StartX], MissionInfo[EditMissionID][StartY], MissionInfo[EditMissionID][StartZ]);
  548. GetVehicleZAngle(GetPlayerVehicleID(playerid), MissionInfo[EditMissionID][StartAngle]);
  549. }
  550. else
  551. {
  552. GetPlayerPos(playerid, MissionInfo[EditMissionID][StartX], MissionInfo[EditMissionID][StartY], MissionInfo[EditMissionID][StartZ]);
  553. GetPlayerFacingAngle(playerid, MissionInfo[EditMissionID][StartAngle]);
  554. }
  555. GameTextForPlayer(playerid, "~g~New StartPosition Saved!", 4000, 4);
  556. Question = 0;
  557. ShowMenuForPlayer(SettingsMenu1, playerid);
  558. return 1;
  559. }
  560. if(Question == 2)
  561. {
  562. GetPlayerPos(playerid, MissionInfo[EditMissionID][EndX], MissionInfo[EditMissionID][EndY], MissionInfo[EditMissionID][EndZ]);
  563. GameTextForPlayer(playerid, "~g~New FinishPosition Saved!", 4000, 4);
  564. Question = 0;
  565. ShowMenuForPlayer(SettingsMenu1, playerid);
  566. return 1;
  567. }
  568. }
  569.  
  570. if(strcmp(cmdtext, "/no", true)==0)
  571. {
  572. if(!IsPlayerAdmin(playerid)) return 0;
  573. if(Question == 0)
  574. {
  575. SendClientMessage(playerid, COLOR_RED, "There is no question for you at the moment.");
  576. return 1;
  577. }
  578. else
  579. {
  580. GameTextForPlayer(playerid, " ", 100, 3);
  581. ShowMenuForPlayer(SettingsMenu1, playerid);
  582. }
  583. return 1;
  584. }
  585.  
  586. if(strcmp(cmd, "/startmission", true)==0)
  587. {
  588. if(TruckmissionPlaying[playerid] > 0) return SendClientMessage(playerid, COLOR_RED, "You are already playing a Delivery mission!");
  589. new IsInATruck;
  590. new ID;
  591. for(new i=1; i<MAX_MISSIONS; i++)
  592. {
  593. if(IsPlayerInVehicle(playerid, Truck[i]))
  594. {
  595. ID = i;
  596. IsInATruck = 1;
  597. break;
  598. }
  599. }
  600. if(IsInATruck == 0) return SendClientMessage(playerid, COLOR_RED, "You are not inside a Delivery Van!");
  601. new string[128];
  602. if(!IsMissionReady(ID))
  603. {
  604. SendClientMessage(playerid, COLOR_RED, "This mission is not ready yet!");
  605. return 1;
  606. }
  607. if(MissionInfo[ID][IsGettingPlayed] == 0)
  608. {
  609. MissionInfo[ID][IsGettingPlayed] = 1;
  610. TruckmissionPlaying[playerid] = ID;
  611. if(MissionInfo[ID][UseTrailer] == 1)
  612. {
  613. Trailer[ID] = CreateVehicle(MissionInfo[ID][TrailerModel], 0, 0, 0, 0, -1, -1, -1);
  614. AttachTrailerToVehicle(Trailer[ID], Truck[ID]);
  615. }
  616. if(MissionInfo[ID][TimeLimit] > 0)
  617. {
  618. MissionInfo[ID][Timer] = SetTimerEx("MissionTimer", (MissionInfo[ID][TimeLimit]*1000), 0, "id", playerid, ID);
  619. format(string, sizeof(string), "Take this delivery van to the checkpoint within %d seconds!", MissionInfo[ID][TimeLimit]);
  620. SendClientMessage(playerid, COLOR_AQUA, string);
  621. }
  622. else
  623. {
  624. SendClientMessage(playerid, COLOR_AQUA, "Take this delivery van to the checkpoint marked on the radar as fast as you can!");
  625. }
  626. TogglePlayerControllable(playerid, 1);
  627. MissionInfo[ID][TickcountBeforeStart] = GetTickCount();
  628.  
  629. SetPlayerCheckpoint(playerid, MissionInfo[ID][EndX], MissionInfo[ID][EndY], MissionInfo[ID][EndZ], MissionInfo[ID][CpSize]);
  630. }
  631. else
  632. {
  633. format(string, sizeof(string), "Sorry, someone else is already playing Delivery Mission #%d", ID);
  634. SendClientMessage(playerid, COLOR_RED, string);
  635. }
  636. return 1;
  637. }
  638.  
  639. if(strcmp(cmd, "/stopmission", true)==0)
  640. {
  641. if(TruckmissionPlaying[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "You are not playing a Delivery Mission!");
  642. RemovePlayerFromVehicle(playerid);
  643. new ID = TruckmissionPlaying[playerid];
  644. TruckmissionPlaying[playerid] = 0;
  645. MissionInfo[ID][IsGettingPlayed] = 0;
  646. MissionInfo[ID][TickcountBeforeStart] = 0;
  647. DisablePlayerCheckpoint(playerid);
  648. SendClientMessage(playerid, COLOR_AQUA, "You stopped your current Delivery Mission!");
  649. SetVehicleToRespawn(Truck[ID]);
  650. KillTimer(MissionInfo[ID][Timer]);
  651. if(MissionInfo[ID][UseTrailer] == 1)
  652. {
  653. DestroyVehicle(Trailer[ID]);
  654. }
  655. return 1;
  656. }
  657. if(strcmp(cmdtext, "/exit", true)==0)
  658. {
  659. TogglePlayerControllable(playerid, 1);
  660. RemovePlayerFromVehicle(playerid);
  661. return 1;
  662. }
  663.  
  664. if(strcmp(cmdtext, "/deliverymissions", true)==0)
  665. {
  666. new string[128];
  667. new count;
  668. new busy[5];
  669. SendClientMessage(playerid, COLOR_MENUHEADER, "=======Available Truckmissions:=========");
  670. for(new i=1; i<MAX_MISSIONS; i++)
  671. {
  672. if(MissionInfo[i][DoesExists] == 1)
  673. {
  674. if(MissionInfo[i][IsGettingPlayed] == 1) busy = "Busy";
  675. if(MissionInfo[i][IsGettingPlayed] == 0) busy = "Free";
  676. format(string, sizeof(string), "#%d = \"%s\" %s", i, MissionInfo[i][Name], busy);
  677. SendClientMessage(playerid, COLOR_MENU, string);
  678. count++;
  679. }
  680. }
  681. if(count > 9)
  682. {
  683. SendClientMessage(playerid, COLOR_ORANGE, "Use PageUp and PageDown to scroll through te chat");
  684. }
  685. return 1;
  686. }
  687. if(strcmp(cmdtext, "/truckmodels", true)==0)
  688. {
  689. if(!IsPlayerAdmin(playerid)) return 0;
  690. SendClientMessage(playerid, COLOR_MENUHEADER, "=====Available Truck- & Trailermodels:=====");
  691. SendClientMessage(playerid, COLOR_MENU, "Trucks: 403, 514, 515, 459");
  692. SendClientMessage(playerid, COLOR_MENU, "Trailers: 435, 450, 584, 591");
  693. SendClientMessage(playerid, COLOR_MENUHEADER, "===========================================");
  694. return 1;
  695. }
  696.  
  697. if(strcmp(cmdtext, "/truckhelp", true)==0)
  698. {
  699. SendClientMessage(playerid, COLOR_MENUHEADER, "=============Available Commands:==========");
  700. SendClientMessage(playerid, COLOR_MENU, "/startmission, /exit, /stopmission, /truckmissions");
  701. if(IsPlayerAdmin(playerid))
  702. {
  703. SendClientMessage(playerid, COLOR_MENUHEADER, "AdminCommands:");
  704. SendClientMessage(playerid, COLOR_MENU, "/createmission, /deletemission <id>");
  705. SendClientMessage(playerid, COLOR_MENU, "/editmission <id>, /missioninfo <id>");
  706. SendClientMessage(playerid, COLOR_MENU, "/missionteleport <id>, /truckmodels");
  707. }
  708. return 1;
  709. }
  710.  
  711. if(strcmp(cmd, "/missionteleport", true) == 0)
  712. {
  713. if(!IsPlayerAdmin(playerid)) return 0;
  714. new string[128];
  715. tmp = strtok(cmdtext, idx);
  716. if(!strlen(tmp))
  717. {
  718. SendClientMessage(playerid,COLOR_RED, "Use: /missionteleport [MissionID]");
  719. return 1;
  720. }
  721. new ID = strval(tmp);
  722. if(MissionInfo[ID][DoesExists] == 1)
  723. {
  724. SetPlayerPos(playerid, MissionInfo[ID][StartX], MissionInfo[ID][StartY], (MissionInfo[ID][StartZ]+4));
  725. return 1;
  726. }
  727. else
  728. {
  729. format(string, sizeof(string), "Truckmission #%d does not exists!", ID);
  730. SendClientMessage(playerid, COLOR_RED, string);
  731. }
  732. return 1;
  733. }
  734. if(strcmp(cmd, "/c", true) == 0)
  735. {
  736. if(!IsPlayerAdmin(playerid)) return 0;
  737. new Float:x,Float:y,Float:z, Float:a;
  738. tmp = strtok(cmdtext, idx);
  739. new vid = strval(tmp);
  740. if(vid < 400 || vid > 609)
  741. {
  742. SendClientMessage(playerid,COLOR_RED,"Gebruik: /car [400-609]");
  743. return 1;
  744. }
  745. else
  746. {
  747. GetPlayerPos(playerid, x, y, z);
  748. GetPlayerFacingAngle(playerid, a);
  749. new newcar = CreateVehicle(vid,x, y, z, a, -1, -1, 240000);
  750. PutPlayerInVehicle(playerid, newcar, 0);
  751. }
  752. return 1;
  753. }
  754. return 0;
  755. }
  756.  
  757. public OnPlayerExitVehicle(playerid, vehicleid)
  758. {
  759. new PTruck;
  760. for(new ID=1; ID<MAX_MISSIONS; ID++)
  761. {
  762. if(IsPlayerInVehicle(playerid, Truck[ID]))
  763. {
  764. PTruck = ID;
  765. break;
  766. }
  767. }
  768. if(PTruck > 0)
  769. {
  770. SendClientMessage(playerid, COLOR_RED, "You have 10 seconds to get back in your van, or else the mission will be over!");
  771. SetTimerEx("ExitedTruck", 10000, 0, "id", playerid, PTruck);
  772. }
  773.  
  774. return 1;
  775. }
  776.  
  777. public OnPlayerStateChange(playerid, newstate, oldstate)
  778. {
  779. if(newstate == 2)
  780. {
  781. if(TruckmissionPlaying[playerid] == 0)
  782. {
  783. new PTruck;
  784. for(new ID=1; ID<MAX_MISSIONS; ID++)
  785. {
  786. if(IsPlayerInVehicle(playerid, Truck[ID]))
  787. {
  788. PTruck = ID;
  789. break;
  790. }
  791. }
  792. if(PTruck > 0)
  793. {
  794. TogglePlayerControllable(playerid, 0);
  795. new string[128];
  796. format(string, sizeof(string), "With this van you can play Delivery Mission #%d", PTruck);
  797. SendClientMessage(playerid, COLOR_ORANGE, string);
  798. SendClientMessage(playerid, COLOR_ORANGE, "Typ /startmission or else /exit");
  799. }
  800. }
  801. }
  802. return 1;
  803. }
  804.  
  805. forward ExitedTruck(playerid, ID);
  806. public ExitedTruck(playerid, ID)
  807. {
  808. if(!IsPlayerInVehicle(playerid, Truck[ID]))
  809. {
  810. GameTextForPlayer(playerid, "~r~Loser", 5000, 3);
  811. TruckmissionPlaying[playerid] = 0;
  812. MissionInfo[ID][IsGettingPlayed] = 0;
  813. MissionInfo[ID][TickcountBeforeStart] = 0;
  814. DisablePlayerCheckpoint(playerid);
  815. SendClientMessage(playerid, COLOR_RED, "You failed the Delivery Mission!");
  816. SetVehicleToRespawn(Truck[ID]);
  817. KillTimer(MissionInfo[ID][Timer]);
  818. if(MissionInfo[ID][UseTrailer] == 1)
  819. {
  820. DestroyVehicle(Trailer[ID]);
  821. }
  822. }
  823. }
  824.  
  825.  
  826. public OnPlayerEnterCheckpoint(playerid)
  827. {
  828. if(TruckmissionPlaying[playerid] > 0 && IsPlayerInVehicle(playerid, Truck[TruckmissionPlaying[playerid]]))
  829. {
  830. new ID = TruckmissionPlaying[playerid];
  831. if(MissionInfo[ID][UseTrailer] == 1)
  832. {
  833. if(!IsTrailerAttachedToVehicle(Truck[ID])) return SendClientMessage(playerid, COLOR_RED, "You lost your trailer!");
  834. DestroyVehicle(Trailer[ID]);
  835. }
  836. KillTimer(MissionInfo[ID][Timer]);
  837. RemovePlayerFromVehicle(playerid);
  838. SetVehicleToRespawn(Truck[ID]);
  839. new TotalTime = ((GetTickCount() - MissionInfo[ID][TickcountBeforeStart])/1000);
  840. new string[128];
  841. DisablePlayerCheckpoint(playerid);
  842. TruckmissionPlaying[playerid] = 0;
  843. MissionInfo[ID][IsGettingPlayed] = 0;
  844. format(string, sizeof(string), "You completed the Delivery Mission #%d!!! You got paid $%d!!!", ID, MissionInfo[ID][Prize]);
  845. SendClientMessage(playerid, COLOR_YELLOW, string);
  846. GameTextForPlayer(playerid, "~g~Winner!", 8000, 3);
  847. PlayerPlaySound(playerid, 1185, 0, 0, 0);
  848. GivePlayerMoney(playerid, MissionInfo[ID][Prize]);
  849. SetTimerEx("StopSound", 8000, 3, "i", playerid);
  850. format(string, sizeof(string), "It took you %d seconds!", TotalTime);
  851. SendClientMessage(playerid, COLOR_YELLOW, string);
  852. if(TotalTime < MissionInfo[ID][Highscore])
  853. {
  854. new Pname[MAX_PLAYER_NAME];
  855. GetPlayerName(playerid, Pname, sizeof(Pname));
  856. format(string, sizeof(string), "%s has broken the recond of Delivery Mission #%d! New Highscore: %d seconds", Pname, ID, TotalTime);
  857. SendClientMessageToAll(COLOR_YELLOW, string);
  858. MissionInfo[ID][Highscore] = TotalTime;
  859. format(MissionInfo[ID][HighscoreName], MAX_PLAYER_NAME, "%s", Pname);
  860. }
  861. }
  862. return 1;
  863. }
  864.  
  865.  
  866. public OnPlayerSelectedMenuRow(playerid, row)
  867. {
  868. new Menu:Current = GetPlayerMenu(playerid);
  869. if(Current == SettingsMenu1)
  870. {
  871. switch(row)
  872. {
  873. case 0: {GameTextForPlayer(playerid, "~y~Typ the new name ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_NAME;}
  874. case 1: {GameTextForPlayer(playerid, "~y~Are you sure you want this location as new startposition? ~n~~g~/yes ~y~or ~r~/no", 999999, 3); Question = 1;}
  875. case 2: {GameTextForPlayer(playerid, "~y~Are you sure you want this location as new finishposition? ~n~~g~/yes ~y~or ~r~/no", 999999, 3); Question = 2;}
  876. case 3: {GameTextForPlayer(playerid, "~y~Typ the new Checkpointsize ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_CPSIZE;}
  877. case 4: {GameTextForPlayer(playerid, "~y~Typ the new Prize ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_PRIZE;}
  878. case 5: {GameTextForPlayer(playerid, "~y~Typ the new model-id ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_MODEL;}
  879. case 6: {GameTextForPlayer(playerid, "~y~Highscores resetted!", 3000, 4); MissionInfo[EditMissionID][Highscore] = 999999; format(MissionInfo[EditMissionID][HighscoreName], 24, "Nobody"); ShowMenuForPlayer(SettingsMenu1, playerid);}
  880. case 7: {GetMissionInfo(playerid, EditMissionID); ShowMenuForPlayer(SettingsMenu1, playerid);}
  881. case 8:
  882. {
  883. new id = EditMissionID;
  884. DestroyVehicle(Truck[id]);
  885. Truck[id] = CreateVehicle(MissionInfo[id][TruckModel], MissionInfo[id][StartX], MissionInfo[id][StartY], MissionInfo[id][StartZ], MissionInfo[id][StartAngle], MissionInfo[id][TruckColor1],MissionInfo[id][TruckColor2], 600000);
  886. ShowMenuForPlayer(SettingsMenu1, playerid);
  887. }
  888. case 9: {ShowMenuForPlayer(SettingsMenu2, playerid);}
  889. }
  890. }
  891. if(Current == SettingsMenu2)
  892. {
  893. switch(row)
  894. {
  895. case 0: {ShowMenuForPlayer(UseTrailerMenu, playerid);}
  896. case 1: {GameTextForPlayer(playerid, "~y~Typ the new model-id ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_TRAILER;}
  897. case 2: {ShowMenuForPlayer(ColorMenu, playerid); }
  898. case 3: {GameTextForPlayer(playerid, "~y~Typ the new time-limit ~n~(in seconds!) ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_TIMELIMIT;}
  899. case 4: {ShowMenuForPlayer(SettingsMenu1, playerid);}
  900. }
  901. }
  902. if(Current == UseTrailerMenu)
  903. {
  904. switch(row)
  905. {
  906. case 0: {ShowMenuForPlayer(SettingsMenu2, playerid); MissionInfo[EditMissionID][UseTrailer] = 1; SendClientMessage(playerid, COLOR_YELLOW, "Using a trailer is now enabled for this mission!");}
  907. case 1: {ShowMenuForPlayer(SettingsMenu2, playerid); MissionInfo[EditMissionID][UseTrailer] = 0; SendClientMessage(playerid, COLOR_YELLOW, "Using a trailer is now disabled for this mission!");}
  908. case 2: {ShowMenuForPlayer(SettingsMenu2, playerid);}
  909. }
  910. }
  911. if(Current == ColorMenu)
  912. {
  913. switch(row)
  914. {
  915. case 0: {GameTextForPlayer(playerid, "~y~Typ the new color-id ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_COLOR1;}
  916. case 1: {GameTextForPlayer(playerid, "~y~Typ the new color-id ~n~in the chat~", 999999, 3); SpecialAction[playerid] = CHANGE_COLOR2;}
  917. case 2:
  918. {
  919. SendClientMessage(playerid, COLOR_MENUHEADER, "=====Common CarColors:============");
  920. SendClientMessage(playerid, COLOR_MENU, "Black = 0 ** White = 1 ** LightBlue = 2 ** Red = 3");
  921. SendClientMessage(playerid, COLOR_MENU, "Yellow = 6 ** Green = 86 ** LightGrey = 15 ** Purple = 5");
  922. SendClientMessage(playerid, COLOR_MENU, "DarkBlue = 79 ** DarkGrey = 13 ** LightBrown = 102");
  923. SendClientMessage(playerid, COLOR_MENU, "DarkBrown = 30 ** Pink = 126 ** RandomColor = -1");
  924. ShowMenuForPlayer(ColorMenu, playerid);
  925. }
  926. case 3: {ShowMenuForPlayer(SettingsMenu2, playerid);}
  927. }
  928. }
  929. return 1;
  930. }
  931.  
  932. public OnPlayerExitedMenu(playerid)
  933. {
  934. TogglePlayerControllable(playerid, 1);
  935. return 1;
  936. }
  937.  
  938. stock CreateNewFile(id)
  939. {
  940. format(FileName, sizeof(FileName), MissionFile, id);
  941. new name[50];
  942. format(name, sizeof(name), "Race #%d", id);
  943. dini_Create(FileName);
  944. dini_Set(FileName, "Name", name);
  945. dini_FloatSet(FileName, "StartX", 0.0);
  946. dini_FloatSet(FileName, "StartY", 0.0);
  947. dini_FloatSet(FileName, "StartZ", 0.0);
  948. dini_FloatSet(FileName, "StartAngle", 0.0);
  949. dini_FloatSet(FileName, "EndX", 0.0);
  950. dini_FloatSet(FileName, "EndY", 0.0);
  951. dini_FloatSet(FileName, "EndZ", 0.0);
  952. dini_IntSet(FileName, "CpSize", DefaultCheckpointSize);
  953. dini_IntSet(FileName, "TruckModel", DefaultTruckModel);
  954. dini_IntSet(FileName, "TruckColor1", -1);
  955. dini_IntSet(FileName, "TruckColor2", -1);
  956. dini_IntSet(FileName, "UseTrailer", 0);
  957. dini_IntSet(FileName, "TrailerModel", DefaultTrailerModel);
  958. dini_IntSet(FileName, "Prize", DefaultPrize);
  959. dini_IntSet(FileName, "TimeLimit", 0);
  960. dini_IntSet(FileName, "Highscore", 9999999);
  961. dini_Set(FileName, "HighscoreName", "Nobody");
  962. ReadFile(id);
  963. }
  964.  
  965. stock ReadFile(id)
  966. {
  967. format(FileName, sizeof(FileName), MissionFile, id);
  968. format(MissionInfo[id][Name], 50, "%s", dini_Get(FileName, "Name"));
  969. MissionInfo[id][StartX] = dini_Float(FileName, "StartX");
  970. MissionInfo[id][StartY] = dini_Float(FileName, "StartY");
  971. MissionInfo[id][StartZ] = dini_Float(FileName, "StartZ");
  972. MissionInfo[id][StartAngle] = dini_Float(FileName, "StartAngle");
  973. MissionInfo[id][EndX] = dini_Float(FileName, "EndX");
  974. MissionInfo[id][EndY] = dini_Float(FileName, "EndY");
  975. MissionInfo[id][EndZ] = dini_Float(FileName, "EndZ");
  976. MissionInfo[id][CpSize] = dini_Int(FileName, "CpSize");
  977. MissionInfo[id][Prize] = dini_Int(FileName, "Prize");
  978. MissionInfo[id][TimeLimit] = dini_Int(FileName, "TimeLimit");
  979. MissionInfo[id][TruckModel] = dini_Int(FileName, "TruckModel");
  980. MissionInfo[id][TruckColor1] = dini_Int(FileName, "TruckColor1");
  981. MissionInfo[id][TruckColor2] = dini_Int(FileName, "TruckColor2");
  982. MissionInfo[id][UseTrailer] = dini_Int(FileName, "UseTrailer");
  983. MissionInfo[id][TrailerModel] = dini_Int(FileName, "TrailerModel");
  984. MissionInfo[id][Highscore] = dini_Int(FileName, "Highscore");
  985. format(MissionInfo[id][HighscoreName], MAX_PLAYER_NAME, "%s", dini_Get(FileName, "HighscoreName"));
  986. Truck[id] = CreateVehicle(MissionInfo[id][TruckModel], MissionInfo[id][StartX], MissionInfo[id][StartY], MissionInfo[id][StartZ], MissionInfo[id][StartAngle], MissionInfo[id][TruckColor1],MissionInfo[id][TruckColor2], 600000);
  987. }
  988.  
  989. SaveFiles()
  990. {
  991. for(new id=1; id<MAX_MISSIONS; id++)
  992. {
  993. if(MissionInfo[id][DoesExists] == 1)
  994. {
  995. format(FileName, sizeof(FileName), MissionFile, id);
  996. dini_Set(FileName, "Name", MissionInfo[id][Name]);
  997. dini_FloatSet(FileName, "StartX", MissionInfo[id][StartX]);
  998. dini_FloatSet(FileName, "StartY", MissionInfo[id][StartY]);
  999. dini_FloatSet(FileName, "StartZ", MissionInfo[id][StartZ]);
  1000. dini_FloatSet(FileName, "StartAngle", MissionInfo[id][StartAngle]);
  1001. dini_FloatSet(FileName, "EndX", MissionInfo[id][EndX]);
  1002. dini_FloatSet(FileName, "EndY", MissionInfo[id][EndY]);
  1003. dini_FloatSet(FileName, "EndZ", MissionInfo[id][EndZ]);
  1004. dini_IntSet(FileName, "CpSize", MissionInfo[id][CpSize]);
  1005. dini_IntSet(FileName, "TruckModel", MissionInfo[id][TruckModel]);
  1006. dini_IntSet(FileName, "TruckColor1", MissionInfo[id][TruckColor1]);
  1007. dini_IntSet(FileName, "TruckColor2", MissionInfo[id][TruckColor2]);
  1008. dini_IntSet(FileName, "UseTrailer", MissionInfo[id][UseTrailer]);
  1009. dini_IntSet(FileName, "TrailerModel", MissionInfo[id][TrailerModel]);
  1010. dini_IntSet(FileName, "Prize", MissionInfo[id][Prize]);
  1011. dini_IntSet(FileName, "TimeLimit", MissionInfo[id][TimeLimit]);
  1012. dini_IntSet(FileName, "Highscore", MissionInfo[id][Highscore]);
  1013. dini_Set(FileName, "HighscoreName", MissionInfo[id][HighscoreName]);
  1014. }
  1015. }
  1016. }
  1017.  
  1018. GetMissionInfo(playerid, ID)
  1019. {
  1020. new string[128];
  1021. format(string, sizeof(string), "Truckmission #%d: \"%s\"", ID, MissionInfo[ID][Name]);
  1022. SendClientMessage(playerid, COLOR_MENUHEADER, string);
  1023. format(string, sizeof(string), "StartPosition: X:%.2f, Y:%.2f, Z:%.2f Angle:%.2f ", MissionInfo[ID][StartX], MissionInfo[ID][StartY], MissionInfo[ID][StartZ], MissionInfo[ID][StartAngle]);
  1024. SendClientMessage(playerid, COLOR_MENU, string);
  1025. format(string, sizeof(string), "FinishPosition: X:%.2f, Y:%.2f, Z:%.2f", MissionInfo[ID][EndX], MissionInfo[ID][EndY], MissionInfo[ID][EndZ]);
  1026. SendClientMessage(playerid, COLOR_MENU, string);
  1027. format(string, sizeof(string), "CheckpointSize: %d, Prize: $%d", MissionInfo[ID][CpSize], MissionInfo[ID][Prize]);
  1028. SendClientMessage(playerid, COLOR_MENU, string);
  1029. format(string, sizeof(string), "TruckModel: %d (%s), TruckColor1: %d, TruckColor2: %d", MissionInfo[ID][TruckModel], VehNames[(MissionInfo[ID][TruckModel]-400)], MissionInfo[ID][TruckColor1], MissionInfo[ID][TruckColor2]);
  1030. SendClientMessage(playerid, COLOR_MENU, string);
  1031. format(string, sizeof(string), "Use Trailer: %d, TrailerModel: %d, TimeLimit: %d seconds", MissionInfo[ID][UseTrailer], MissionInfo[ID][TrailerModel], MissionInfo[ID][TimeLimit]);
  1032. SendClientMessage(playerid, COLOR_MENU, string);
  1033. format(string, sizeof(string), "Highscore: %d seconds, Highscore by: \"%s\"", MissionInfo[ID][Highscore], MissionInfo[ID][HighscoreName]);
  1034. SendClientMessage(playerid, COLOR_MENU, string);
  1035. }
  1036.  
  1037. IsNumeric(const string[])
  1038. {
  1039. for (new i = 0, j = strlen(string); i < j; i++)
  1040. {
  1041. if (string[i] > '9' || string[i] < '0') return 0;
  1042. }
  1043. return 1;
  1044. }
  1045.  
  1046.  
  1047. forward StopSound(playerid);
  1048. public StopSound(playerid)
  1049. {
  1050. PlayerPlaySound(playerid, 1186, 0, 0, 0);
  1051. }
  1052.  
  1053. IsUsableTruck(model)
  1054. {
  1055. switch(model)
  1056. {
  1057. case 403, 514, 459, 515: { return 1; }
  1058. }
  1059. return 0;
  1060. }
  1061.  
  1062. IsUsableTrailer(model)
  1063. {
  1064. switch(model)
  1065. {
  1066. case 435, 450, 591, 584: { return 1; }
  1067. }
  1068. return 0;
  1069. }
  1070.  
  1071. stock IsMissionReady(ID)
  1072. {
  1073. if(MissionInfo[ID][StartX] == 0.0 && MissionInfo[ID][StartY] == 0 && MissionInfo[ID][StartZ] == 0)
  1074. {
  1075. return 0;
  1076. }
  1077. if(MissionInfo[ID][EndX] == 0.0 && MissionInfo[ID][EndY] == 0.0 && MissionInfo[ID][EndZ] == 0.0)
  1078. {
  1079. return 0;
  1080. }
  1081. if(MissionInfo[ID][TruckModel] == 0 || (MissionInfo[ID][UseTrailer] == 1 && MissionInfo[ID][TrailerModel] == 0) || MissionInfo[ID][CpSize] == 0)
  1082. {
  1083. return 0;
  1084. }
  1085. return 1;
  1086. }
  1087.  
  1088. forward MissionTimer(playerid, MissionID);
  1089. public MissionTimer(playerid, MissionID)
  1090. {
  1091. GameTextForPlayer(playerid, "~r~Time is up", 5000, 3);
  1092. TruckmissionPlaying[playerid] = 0;
  1093. MissionInfo[MissionID][IsGettingPlayed] = 0;
  1094. MissionInfo[MissionID][TickcountBeforeStart] = 0;
  1095. DisablePlayerCheckpoint(playerid);
  1096. SendClientMessage(playerid, COLOR_RED, "You failed the Delivery Mission!");
  1097. SetVehicleToRespawn(Truck[MissionID]);
  1098. if(MissionInfo[MissionID][UseTrailer] == 1)
  1099. {
  1100. DestroyVehicle(Trailer[MissionID]);
  1101. }
  1102. }
Advertisement
Add Comment
Please, Sign In to add comment