Guest User

Untitled

a guest
Apr 24th, 2020
1,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.86 KB | None | 0 0
  1. //-------- Includes --//
  2. #include <a_samp>
  3. #include <zcmd>
  4.  
  5. //---------- Defines -------//
  6. #define MAX_MISSIONLOCATIONS 13 // THe maximum number of mission locations
  7. #define MAX_LOC_NUM 4 // the number of locations that player should collect the trash from.
  8. #define INVALID_CPNUMBER -1 // No need to change it :P
  9. #define MISSION_VEHICLE 408 // Its the Vehicle which is used for the mission
  10.  
  11. enum Locs_data
  12. {
  13. id,
  14. Float:X,
  15. Float:Y,
  16. Float:Z,
  17. Name[50],
  18. bool:taken[MAX_PLAYERS],
  19.  
  20. }
  21. new MissionLocations[MAX_MISSIONLOCATIONS][Locs_data]=
  22. {
  23. {0,-1995.3447,143.3336,27.2323,"Cranberry Station"},
  24. {1,-2018.0836,57.5671,29.6757, "Doherty Fire Station"},
  25. {2,-2064.6499,-74.6632,34.8687,"Doherty DMV"},
  26. {3,-2095.7441,94.2653,34.9454,"Doherty Meat Factory"},
  27. {4,-2286.4304,117.1795,34.9374,"Garcia Park"},
  28. {5,-2306.3711,-144.5762,34.9453,"Garcia Burger Shot"},
  29. {6,-2549.7839,-51.7164,16.1036,"Hashbury Park"},
  30. {7,-2713.2908,224.6202,3.9531,"Ocean Flats Mod Shop"},
  31. {8,-2680.2122,281.8658,3.9530,"City Hall Cluckin Bell"},
  32. {9,-2734.2881,368.6444,4.0202,"City Hall"},
  33. {10,-2621.3848,475.1899,14.2278,"Santa Flora"},
  34. {11,-2545.9153,373.6157,20.2581,"Queen's"},
  35. {12,-2407.2131,318.0277,34.7968,"Kings"}
  36. };
  37.  
  38. new MissionLoc[MAX_PLAYERS][MAX_LOC_NUM],
  39. bool:MissionStartedGarbage[MAX_PLAYERS],
  40. bool:GarbageStatus[MAX_PLAYERS][MAX_LOC_NUM],
  41. StorageGarbage[MAX_PLAYERS][MAX_LOC_NUM];
  42.  
  43. forward ChooseLocation(playerid,locnum);
  44. forward ResetMissionGarbage(playerid);
  45. forward StartMission(playerid);
  46. forward GarbageCheck(playerid);
  47. forward RearrangeMission(playerid);
  48.  
  49.  
  50.  
  51. public OnFilterScriptInit()
  52. {
  53. print("\n--------------------------------------");
  54. print(" Mission Filterscript By Shaheen Loaded V1.0");
  55. print("--------------------------------------\n");
  56. return 1;
  57. }
  58.  
  59. public OnFilterScriptExit()
  60. {
  61. return 1;
  62. }
  63.  
  64. CMD:mission(playerid, params[])
  65. {
  66. if (MissionStartedGarbage[playerid])
  67. {
  68. GarbageCheck(playerid);
  69. return 1;
  70. }
  71. if(IsPlayerInAnyVehicle(playerid))
  72. {
  73. new vehicleid = GetPlayerVehicleID(playerid);
  74. if(GetVehicleModel(vehicleid) == MISSION_VEHICLE)
  75. {
  76. StartMission(playerid);
  77. }
  78. else
  79. {
  80. SendClientMessage(playerid,-1,"You need to be in a mission vehicle to use this command.");
  81. }
  82. }
  83. else
  84. {
  85. SendClientMessage(playerid,-1,"You need to be in a vehicle to use this command.");
  86. }
  87. return 1;
  88. }
  89.  
  90. CMD:cancelmission(playerid, params[])
  91. {
  92. if (MissionStartedGarbage[playerid])
  93. {
  94. ResetMissionGarbage(playerid);
  95. }
  96. else
  97. {
  98. SendClientMessage(playerid,-1,"You have not started any mission!");
  99. }
  100. return 1;
  101. }
  102.  
  103. public StartMission(playerid)
  104. {
  105. ResetMissionGarbage(playerid);
  106. for(new i=0; i< MAX_LOC_NUM; i++)
  107. {
  108. ChooseLocation(playerid,i);
  109. }
  110. RearrangeMission(playerid);
  111. new msg[100];
  112. format(msg,sizeof(msg),"You have Started Your Mission, Go and Collect Trash from %s",MissionLocations[MissionLoc[playerid][0]][Name]);
  113. SendClientMessage(playerid,-1,msg);
  114. SetPlayerRaceCheckpoint(playerid,2,MissionLocations[MissionLoc[playerid][0]][X],MissionLocations[MissionLoc[playerid][0]][Y],MissionLocations[MissionLoc[playerid][0]][Z],0.0,0.0,0.0,10.0);
  115. SetPVarInt(playerid,"MissionLocation",MissionLoc[playerid][0]);
  116. SetPVarInt(playerid,"MissionStatus",0);
  117. MissionLoc[playerid][0] = INVALID_CPNUMBER;
  118. MissionStartedGarbage[playerid] = true;
  119. return 1;
  120. }
  121.  
  122. public ResetMissionGarbage(playerid)
  123. {
  124. MissionStartedGarbage[playerid]=false;
  125. DisablePlayerRaceCheckpoint(playerid);
  126. for(new i=0; i< MAX_MISSIONLOCATIONS; i++)
  127. {
  128. MissionLocations[i][taken][playerid] = false;
  129. }
  130. for(new i=0; i< MAX_LOC_NUM; i++)
  131. {
  132. MissionLoc[playerid][i] = INVALID_CPNUMBER;
  133. StorageGarbage[playerid][i] = INVALID_CPNUMBER;
  134. GarbageStatus[playerid][i] = false;
  135. }
  136. return 1;
  137. }
  138. public ChooseLocation(playerid,locnum)
  139. {
  140. new msg[100];
  141. MissionLoc[playerid][locnum] = random(MAX_MISSIONLOCATIONS);
  142. StorageGarbage[playerid][locnum] = MissionLoc[playerid][locnum]; //store values
  143. if(MissionLocations[MissionLoc[playerid][locnum]][taken][playerid])
  144. {
  145. ChooseLocation(playerid,locnum);
  146. // SetPVarInt(playerid,"LocationID",MissionLocations[MissionLoc[playerid][locnum]][id]);
  147. }
  148. else
  149. {
  150. MissionLocations[MissionLoc[playerid][locnum]][taken][playerid] = true;
  151. format(msg,sizeof(msg),"Location to Collect Trash: %s",MissionLocations[MissionLoc[playerid][locnum]][Name]);
  152. SendClientMessage(playerid,-1,msg);
  153. // SetPVarInt(playerid,"LocationID",MissionLocations[MissionLoc[playerid][locnum]][id]);
  154. }
  155. return 1;
  156. }
  157.  
  158. public OnPlayerEnterRaceCheckpoint(playerid)
  159. {
  160. if(MissionStartedGarbage[playerid])
  161. {
  162. new msg[100];
  163. format(msg,sizeof(msg),"Trash successfully collected from %s.",MissionLocations[GetPVarInt(playerid,"MissionLocation")][Name]);
  164. GarbageStatus[playerid][GetPVarInt(playerid,"MissionStatus")] = true;
  165. SendClientMessage(playerid,-1,msg);
  166. for(new k=0 ,i=0; i< MAX_LOC_NUM; i++)
  167. {
  168. if(MissionLoc[playerid][i] != INVALID_CPNUMBER)
  169. {
  170. SetPlayerRaceCheckpoint(playerid,2,MissionLocations[MissionLoc[playerid][i]][X],MissionLocations[MissionLoc[playerid][i]][Y],MissionLocations[MissionLoc[playerid][i]][Z],0.0,0.0,0.0,10.0);
  171. SetPVarInt(playerid,"MissionLocation",MissionLoc[playerid][i]);
  172. SetPVarInt(playerid,"MissionStatus",i);
  173. MissionLoc[playerid][i] = INVALID_CPNUMBER;
  174. break;
  175. }
  176. else
  177. {
  178. k++;
  179. }
  180. if(k == MAX_LOC_NUM)
  181. {
  182. SendClientMessage(playerid,-1,"You have finished your job.");
  183. ResetMissionGarbage(playerid);
  184. }
  185.  
  186. }
  187. }
  188. return 1;
  189. }
  190.  
  191. public GarbageCheck(playerid)
  192. {
  193. for(new i=0; i< MAX_LOC_NUM; i++)
  194. {
  195. if(GarbageStatus[playerid][i])
  196. {
  197. new msg[100];
  198. format(msg,sizeof(msg),"Collected From %s",MissionLocations[StorageGarbage[playerid][i]][Name]);
  199. SendClientMessage(playerid,-1,msg);
  200. }
  201. }
  202. return 1;
  203. }
  204.  
  205. public RearrangeMission(playerid)
  206. {
  207. for(new big, i=0; i< MAX_LOC_NUM; ++i)
  208. {
  209. for(new j=i ;j< MAX_LOC_NUM ; ++j)
  210. {
  211. if(MissionLocations[MissionLoc[playerid][i]][id] > MissionLocations[MissionLoc[playerid][j]][id])
  212. {
  213. big = MissionLoc[playerid][i];
  214. MissionLoc[playerid][i] = MissionLoc[playerid][j];
  215. MissionLoc[playerid][j] = big;
  216. }
  217. }
  218. }
  219. for(new big, i=0; i< MAX_LOC_NUM; ++i)
  220. {
  221. for(new j=i ;j< MAX_LOC_NUM ; ++j)
  222. {
  223. if(MissionLocations[StorageGarbage[playerid][i]][id] > MissionLocations[StorageGarbage[playerid][j]][id])
  224. {
  225. big = StorageGarbage[playerid][i];
  226. StorageGarbage[playerid][i] = StorageGarbage[playerid][j];
  227. StorageGarbage[playerid][j] = big;
  228. }
  229. }
  230. }
  231. return 1;
  232. }
Add Comment
Please, Sign In to add comment