Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //-------- Includes --//
- #include <a_samp>
- #include <zcmd>
- //---------- Defines -------//
- #define MAX_MISSIONLOCATIONS 13 // THe maximum number of mission locations
- #define MAX_LOC_NUM 4 // the number of locations that player should collect the trash from.
- #define INVALID_CPNUMBER -1 // No need to change it :P
- #define MISSION_VEHICLE 408 // Its the Vehicle which is used for the mission
- enum Locs_data
- {
- id,
- Float:X,
- Float:Y,
- Float:Z,
- Name[50],
- bool:taken[MAX_PLAYERS],
- }
- new MissionLocations[MAX_MISSIONLOCATIONS][Locs_data]=
- {
- {0,-1995.3447,143.3336,27.2323,"Cranberry Station"},
- {1,-2018.0836,57.5671,29.6757, "Doherty Fire Station"},
- {2,-2064.6499,-74.6632,34.8687,"Doherty DMV"},
- {3,-2095.7441,94.2653,34.9454,"Doherty Meat Factory"},
- {4,-2286.4304,117.1795,34.9374,"Garcia Park"},
- {5,-2306.3711,-144.5762,34.9453,"Garcia Burger Shot"},
- {6,-2549.7839,-51.7164,16.1036,"Hashbury Park"},
- {7,-2713.2908,224.6202,3.9531,"Ocean Flats Mod Shop"},
- {8,-2680.2122,281.8658,3.9530,"City Hall Cluckin Bell"},
- {9,-2734.2881,368.6444,4.0202,"City Hall"},
- {10,-2621.3848,475.1899,14.2278,"Santa Flora"},
- {11,-2545.9153,373.6157,20.2581,"Queen's"},
- {12,-2407.2131,318.0277,34.7968,"Kings"}
- };
- new MissionLoc[MAX_PLAYERS][MAX_LOC_NUM],
- bool:MissionStartedGarbage[MAX_PLAYERS],
- bool:GarbageStatus[MAX_PLAYERS][MAX_LOC_NUM],
- StorageGarbage[MAX_PLAYERS][MAX_LOC_NUM];
- forward ChooseLocation(playerid,locnum);
- forward ResetMissionGarbage(playerid);
- forward StartMission(playerid);
- forward GarbageCheck(playerid);
- forward RearrangeMission(playerid);
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------");
- print(" Mission Filterscript By Shaheen Loaded V1.0");
- print("--------------------------------------\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- return 1;
- }
- CMD:mission(playerid, params[])
- {
- if (MissionStartedGarbage[playerid])
- {
- GarbageCheck(playerid);
- return 1;
- }
- if(IsPlayerInAnyVehicle(playerid))
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- if(GetVehicleModel(vehicleid) == MISSION_VEHICLE)
- {
- StartMission(playerid);
- }
- else
- {
- SendClientMessage(playerid,-1,"You need to be in a mission vehicle to use this command.");
- }
- }
- else
- {
- SendClientMessage(playerid,-1,"You need to be in a vehicle to use this command.");
- }
- return 1;
- }
- CMD:cancelmission(playerid, params[])
- {
- if (MissionStartedGarbage[playerid])
- {
- ResetMissionGarbage(playerid);
- }
- else
- {
- SendClientMessage(playerid,-1,"You have not started any mission!");
- }
- return 1;
- }
- public StartMission(playerid)
- {
- ResetMissionGarbage(playerid);
- for(new i=0; i< MAX_LOC_NUM; i++)
- {
- ChooseLocation(playerid,i);
- }
- RearrangeMission(playerid);
- new msg[100];
- format(msg,sizeof(msg),"You have Started Your Mission, Go and Collect Trash from %s",MissionLocations[MissionLoc[playerid][0]][Name]);
- SendClientMessage(playerid,-1,msg);
- 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);
- SetPVarInt(playerid,"MissionLocation",MissionLoc[playerid][0]);
- SetPVarInt(playerid,"MissionStatus",0);
- MissionLoc[playerid][0] = INVALID_CPNUMBER;
- MissionStartedGarbage[playerid] = true;
- return 1;
- }
- public ResetMissionGarbage(playerid)
- {
- MissionStartedGarbage[playerid]=false;
- DisablePlayerRaceCheckpoint(playerid);
- for(new i=0; i< MAX_MISSIONLOCATIONS; i++)
- {
- MissionLocations[i][taken][playerid] = false;
- }
- for(new i=0; i< MAX_LOC_NUM; i++)
- {
- MissionLoc[playerid][i] = INVALID_CPNUMBER;
- StorageGarbage[playerid][i] = INVALID_CPNUMBER;
- GarbageStatus[playerid][i] = false;
- }
- return 1;
- }
- public ChooseLocation(playerid,locnum)
- {
- new msg[100];
- MissionLoc[playerid][locnum] = random(MAX_MISSIONLOCATIONS);
- StorageGarbage[playerid][locnum] = MissionLoc[playerid][locnum]; //store values
- if(MissionLocations[MissionLoc[playerid][locnum]][taken][playerid])
- {
- ChooseLocation(playerid,locnum);
- // SetPVarInt(playerid,"LocationID",MissionLocations[MissionLoc[playerid][locnum]][id]);
- }
- else
- {
- MissionLocations[MissionLoc[playerid][locnum]][taken][playerid] = true;
- format(msg,sizeof(msg),"Location to Collect Trash: %s",MissionLocations[MissionLoc[playerid][locnum]][Name]);
- SendClientMessage(playerid,-1,msg);
- // SetPVarInt(playerid,"LocationID",MissionLocations[MissionLoc[playerid][locnum]][id]);
- }
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- if(MissionStartedGarbage[playerid])
- {
- new msg[100];
- format(msg,sizeof(msg),"Trash successfully collected from %s.",MissionLocations[GetPVarInt(playerid,"MissionLocation")][Name]);
- GarbageStatus[playerid][GetPVarInt(playerid,"MissionStatus")] = true;
- SendClientMessage(playerid,-1,msg);
- for(new k=0 ,i=0; i< MAX_LOC_NUM; i++)
- {
- if(MissionLoc[playerid][i] != INVALID_CPNUMBER)
- {
- 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);
- SetPVarInt(playerid,"MissionLocation",MissionLoc[playerid][i]);
- SetPVarInt(playerid,"MissionStatus",i);
- MissionLoc[playerid][i] = INVALID_CPNUMBER;
- break;
- }
- else
- {
- k++;
- }
- if(k == MAX_LOC_NUM)
- {
- SendClientMessage(playerid,-1,"You have finished your job.");
- ResetMissionGarbage(playerid);
- }
- }
- }
- return 1;
- }
- public GarbageCheck(playerid)
- {
- for(new i=0; i< MAX_LOC_NUM; i++)
- {
- if(GarbageStatus[playerid][i])
- {
- new msg[100];
- format(msg,sizeof(msg),"Collected From %s",MissionLocations[StorageGarbage[playerid][i]][Name]);
- SendClientMessage(playerid,-1,msg);
- }
- }
- return 1;
- }
- public RearrangeMission(playerid)
- {
- for(new big, i=0; i< MAX_LOC_NUM; ++i)
- {
- for(new j=i ;j< MAX_LOC_NUM ; ++j)
- {
- if(MissionLocations[MissionLoc[playerid][i]][id] > MissionLocations[MissionLoc[playerid][j]][id])
- {
- big = MissionLoc[playerid][i];
- MissionLoc[playerid][i] = MissionLoc[playerid][j];
- MissionLoc[playerid][j] = big;
- }
- }
- }
- for(new big, i=0; i< MAX_LOC_NUM; ++i)
- {
- for(new j=i ;j< MAX_LOC_NUM ; ++j)
- {
- if(MissionLocations[StorageGarbage[playerid][i]][id] > MissionLocations[StorageGarbage[playerid][j]][id])
- {
- big = StorageGarbage[playerid][i];
- StorageGarbage[playerid][i] = StorageGarbage[playerid][j];
- StorageGarbage[playerid][j] = big;
- }
- }
- }
- return 1;
- }
Add Comment
Please, Sign In to add comment