/* CHANGE LOG
*** VERSION 2.0
** You can now cancel a players mission but using CancelPlayersCurrentMission(playerid);
** You can now add custom stuff to when the player finishs the mission using public OnPlayerFinishMission(playerid)
** If you un comment "#define USE_RACE_CHECKPOINT" the Include will use race checkpoints instead of regulare checkpoints!
** You can adjust the amount a player looses when they loose there trailer for 30 seconds if TrailerCheck is enabled using "#define COST_OF_LOST_GOODS"
** You can change the size of the checkpoints using "#define CHECKPOINT_SIZE"
*/
#define COST_OF_LOST_GOODS 1000
#define CHECKPOINT_SIZE 7
//#define USE_RACE_CHECKPOINT // Un comment this line to enable Race Checkoints!
/* Only change this if USE_RACE_CHECKPOINT is enabled! */
#define RACE_CHECKPOINT_TYPE 0
/* KEY
** 0-Normal
** 1-Finish
** 2-Nothing(Only the checkpoint without anything on it)
** 3-Air normal
** 4-Air finish
*/
CreatePlayerMission(playerid, bool:TrailerCheck, MissionPay, Float:Startx, Float:Starty, Float:Startz, Float:Endx, Float:Endy, Float:Endz);
CancelPlayersCurrentMission(playerid);
public OnPlayerFinishMission(playerid)
{
return 1;
}
M_OnPlayerConnect(playerid);
M_OnPlayerDisconnect(playerid);
M_OnPlayerEnterCheckpoint(playerid);
M_OnPlayerEnterRaceCheckpoint(playerid);
public OnPlayerFinishMission(playerid)
{
return 1;
}
#include <a_samp>
#include <TruckingMissions>
enum TruckingMissionInfo
{
MissionName[200],
bool:UseTrailerCheck,
MissionPay,
Float:loadx,
Float:loady,
Float:loadz,
Float:unloadx,
Float:unloady,
Float:unloadz
}
new TruckingMissionRandom[][TruckingMissionInfo] =
{
// {"Mission Text", UseTrailerCheck, MissionPay, loadx, loady, loadz, unloadx, unloady, unloadz}
/* KEY:
** "Mission Text" = The text the player will see when he/she is doing the mission!
** UseTrailerCheck = Weather or not the mission requires you use a vehile that has a trailer. Ex: Roadtrain with an Artict1 trailer!
** MissionPay = The amount the player will recive for doing there mission!
** loadx, loady, and loadz = The loading coordinates of the loading checkpoint!
** unloadx, unloadx, unloadx = The un-loading coordinates of the unloading checkpoint!
*/
{"Deliver Holy Water from LVA Freight Depot to LVA Church", true, 10000, 1701.9475,940.5465,10.8203, 1496.2524,772.1427,10.8203},
{"Deliver Junk Car Parts from LVA Freight Depot to Shody Ottos", true, 10000, 1701.9475,940.5465,10.8203, 1727.6351,1812.1750,10.8203}
};
new IsPlayerInMission[MAX_PLAYERS] = 0; // We are going to use this to detect when a player is in a mission!
main()
{
print("\n----------------------------------");
print(" [TGG] Trucking Mission Example Script!");
print("----------------------------------\n");
}
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerConnect(playerid)
{
M_OnPlayerConnect(playerid);
IsPlayerInMission[playerid] = 0;// reset
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
M_OnPlayerDisconnect(playerid);
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp("/work", cmdtext, true))
{
new pvehiclemodel = GetVehicleModel(GetPlayerVehicleID(playerid));
if (pvehiclemodel == 403 || pvehiclemodel == 514 || pvehiclemodel == 515)
{
if (IsPlayerInMission[playerid] == 1) return SendClientMessage(playerid, 0xFF0000AA, ">> You are currently in a mission use \"/cancelmission\" to cancel your current mission!"); // prevents them from starting another mission
new string[200];
new rand = random(sizeof(TruckingMissionRandom));
IsPlayerInMission[playerid] = 1; // asign it to 1 becuase there in a mission
CreatePlayerMission(playerid, TruckingMissionRandom[rand][UseTrailerCheck], TruckingMissionRandom[rand][MissionPay], TruckingMissionRandom[rand][loadx],TruckingMissionRandom[rand][loady], TruckingMissionRandom[rand][loadz], TruckingMissionRandom[rand][unloadx],TruckingMissionRandom[rand][unloady], TruckingMissionRandom[rand][unloadz]);
format(string, sizeof(string), "You are doing mission: %s", TruckingMissionRandom[rand][MissionName]);
SendClientMessage(playerid, 0x00FF00FF, string);
}
else
{
SendClientMessage(playerid, 0xFF0000AA, "Im sorry but this mission requires that you use a vehicle that can pull a semi trailer Ex: Roadtrain with an Artict1!");
}
return 1;
}
if(!strcmp("/cancelmission", cmdtext, true))
{
if (IsPlayerInMission[playerid] == 0) return SendClientMessage(playerid, 0xFF0000AA, "you are not in a mission use \"/work\" to start one!"); // prevents them if there currently not in a mission
IsPlayerInMission[playerid] = 0; // resets it so they can start another mission
CancelPlayersCurrentMission(playerid);
return 1;
}
return 0;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if (IsPlayerInMission[playerid] == 1)// checks to see if a player was in a mission on player death
{
CancelPlayersCurrentMission(playerid);// cancels player mission
IsPlayerInMission[playerid] = 0; // resets the variable so they can start a new mission!
}
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
M_OnPlayerEnterCheckpoint(playerid);
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
M_OnPlayerEnterRaceCheckpoint(playerid);
return 1;
}
public OnPlayerFinishMission(playerid)
{
SendClientMessage(playerid, 0x00FF00FF, "You have completed your mission!");
return 1;
}
/* CREDITS: ** Blabla93 A.K.A [TGG]Bill | Coding the include ** [HiC]TheKiller, Kwarde & RealCop228 for the suggestion of adding a race checkpoints ** Mauzen for having the idea to add OnPlayerMission(playerid) call back! */
I prefer regular checkpoints but maybe i could add a boolean that switches between race and standerd check points? |
#define USE_RACE_CP //Comment if you wanna use normal CP's
#if defined USE_RACE_CP
//Race CP code
#else
//Normal CP code
#endif
/* CHANGE LOG *** VERSION 2.0 ** You can now cancel a players mission but using CancelPlayersCurrentMission(playerid); ** You can now add custom stuff to when the player finishs the mission using public OnPlayerFinishMission(playerid) ** If you un comment "#define USE_RACE_CHECKPOINT" the Include will use race checkpoints instead of regulare checkpoints! ** You can adjust the amount a player looses when they loose there trailer for 30 seconds if TrailerCheck is enabled using "#define COST_OF_LOST_GOODS" ** You can change the size of the checkpoints using "#define CHECKPOINT_SIZE" */
//#define USE_RACE_CHECKPOINT // Un comment this line to enable Race Checkoints!
#define USE_RACE_CHECKPOINT // Un comment this line to enable Race Checkoints!