#include <a_samp>
#include <Pawn.CMD>
#include <streamer>
main(){}
#define POS_TEST1 2769.7803, 2605.3782, 10.8203
#define POS_TEST 2759.0171,2617.7261,10.8203
#define MAX_TRAILERS 10
enum missioninfo
{
TrailerMissionStatus[25],
TrailerMissionName[25],
Float:TrailerMissionUnloadX,
Float:TrailerMissionUnloadY,
Float:TrailerMissionUnloadZ,
TrailerMissionPayMoney,
TrailerMissionPayScore
}
new Missions[][missioninfo] =
{
{"Legal", "Dillimore Commissariat", POS_TEST, 100, 1},
{"Illegal", "Hospital El Quebrados", POS_TEST, 200, 2},
{"Legal", "Mission 2", POS_TEST, 200, 2},
{"Legal", "Mission 3", POS_TEST, 300, 3},
{"Legal", "Mission 4", POS_TEST, 400, 4},
{"Illegal", "Mission 5", POS_TEST, 500, 5},
{"Illegal", "Mission 6", POS_TEST, 600, 6},
{"Illegal", "Mission 7", POS_TEST, 700, 7},
{"Legal", "Mission 8", POS_TEST, 800, 8},
{"Legal", "Mission 9", POS_TEST, 900, 9},
{"Legal", "Mission 10", POS_TEST, 1000, 10},
{"Illegal", "Mission 11", POS_TEST, 1100, 11}
};
enum trailerInfo
{
TrailerID,
MissionID,
CheckpointID,
Text3D:TrailerLabel // DEBUG
}
new Trailer[MAX_TRAILERS][trailerInfo];
new TrailerArrayID[sizeof(Trailer)] = {-1,...};
public OnGameModeInit()
{
// Two trailers added and random mission assigned
Trailer[0][TrailerID] = CreateVehicle(435, 2749.8076, 2628.5588, 11.4041, 206.2215, 1, 1, 60); // Trailer LV
// Assign a random mission to the trailer, access the mission later through Trailer[TRAILER_ARRAY_ID][MissionID], e.g.CreateActor Missions[Trailer[TRAILER_ARRAY_ID][MissionID]][TrailerMissionName]
new rand = random(sizeof(Missions));
Trailer[0][MissionID] = rand;
TrailerArrayID[Trailer[0][TrailerID]] = 0;
Trailer[0][TrailerLabel] = Create3DTextLabel(Missions[Trailer[0][MissionID]][TrailerMissionName], -1, 30.0, 40.0, 50.0, 40.0, 0, 0);
Attach3DTextLabelToVehicle(Trailer[0][TrailerLabel], Trailer[0][TrailerID], 0.0, 0.0, 0.0);
Trailer[1][TrailerID] = CreateVehicle(435, 2756.3267, 2628.5952, 11.4061, 206.6927, 1, 1, 60); // Trailer LV
rand = random(sizeof(Missions));
Trailer[1][MissionID] = rand;
TrailerArrayID[Trailer[1][TrailerID]] = 1;
Trailer[1][TrailerLabel] = Create3DTextLabel(Missions[Trailer[1][MissionID]][TrailerMissionName], -1, 30.0, 40.0, 50.0, 40.0, 0, 0);
Attach3DTextLabelToVehicle(Trailer[1][TrailerLabel], Trailer[1][TrailerID], 0.0, 0.0, 0.0);
AddPlayerClass(29, POS_TEST1, 0.0, -1, -1, -1, -1, -1, -1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
forward OnPlayerEnterDynamicCP(playerid, checkpointid);
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)) && IsAMissionTrailer(GetVehicleTrailer(GetPlayerVehicleID(playerid))))
{
new trailerid = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new arrayid = TrailerArrayID[trailerid];
new missionid = Trailer[arrayid][MissionID];
if(checkpointid == Trailer[arrayid][CheckpointID])
{
new str[128];
format(str, sizeof(str), "Trailer successfully delivered! Reward: %d Score, $%d Cash.", Missions[missionid][TrailerMissionPayScore], Missions[missionid][TrailerMissionPayMoney]);
SendClientMessage(playerid, -1, str);
// Respawn the trailer and assign a new mission to it
SetPlayerScore(playerid, GetPlayerScore(playerid) + Missions[missionid][TrailerMissionPayScore]);
GivePlayerMoney(playerid, Missions[missionid][TrailerMissionPayMoney]);
DestroyDynamicCP(Trailer[arrayid][CheckpointID]);
SetVehicleToRespawn(trailerid);
Trailer[arrayid][MissionID] = random(sizeof(Missions));
Update3DTextLabelText(Trailer[arrayid][TrailerLabel], -1, Missions[missionid][TrailerMissionName]);
}
}
return 1;
}
COMMAND:startmission(playerid,params[]) // startmission
{
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, -1, "You have no trailer attached to your vehicle!");
if(!IsAMissionTrailer(GetVehicleTrailer(GetPlayerVehicleID(playerid)))) return SendClientMessage(playerid, -1, "This is not a mission trailer!");
new trailerid = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new arrayid = TrailerArrayID[trailerid];
new missionid = Trailer[arrayid][MissionID];
Trailer[arrayid][CheckpointID] = CreateDynamicCP(Missions[missionid][TrailerMissionUnloadX], Missions[missionid][TrailerMissionUnloadY], Missions[missionid][TrailerMissionUnloadZ], 3.0);
SendClientMessage(playerid, -1, "Trailer mission started...");
return 1;
}
IsAMissionTrailer(vehicleid)
{
for(new i = 0; i < sizeof(Trailer); i++)
{
if(vehicleid == Trailer[i][TrailerID]) return true;
}
return false;
}
stock GetNick(playerid)
{
new PlayerNick[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerNick, sizeof(PlayerNick));
return PlayerNick;
}
CMD:truck1(playerid, params[])
{
new truck, Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
truck = CreateVehicle(514, x, y, z, a, -1, -1, -1);
PutPlayerInVehicle(playerid, (truck), 0);
return 1;
}
#include <Pawn.CMD>
#include <streamer>
main(){}
#define POS_TEST1 2769.7803, 2605.3782, 10.8203
#define POS_TEST 2759.0171,2617.7261,10.8203
#define MAX_TRAILERS 10
enum missioninfo
{
TrailerMissionStatus[25],
TrailerMissionName[25],
Float:TrailerMissionUnloadX,
Float:TrailerMissionUnloadY,
Float:TrailerMissionUnloadZ,
TrailerMissionPayMoney,
TrailerMissionPayScore
}
new Missions[][missioninfo] =
{
{"Legal", "Dillimore Commissariat", POS_TEST, 100, 1},
{"Illegal", "Hospital El Quebrados", POS_TEST, 200, 2},
{"Legal", "Mission 2", POS_TEST, 200, 2},
{"Legal", "Mission 3", POS_TEST, 300, 3},
{"Legal", "Mission 4", POS_TEST, 400, 4},
{"Illegal", "Mission 5", POS_TEST, 500, 5},
{"Illegal", "Mission 6", POS_TEST, 600, 6},
{"Illegal", "Mission 7", POS_TEST, 700, 7},
{"Legal", "Mission 8", POS_TEST, 800, 8},
{"Legal", "Mission 9", POS_TEST, 900, 9},
{"Legal", "Mission 10", POS_TEST, 1000, 10},
{"Illegal", "Mission 11", POS_TEST, 1100, 11}
};
enum trailerInfo
{
TrailerID,
MissionID,
CheckpointID,
Text3D:TrailerLabel // DEBUG
}
new Trailer[MAX_TRAILERS][trailerInfo];
new TrailerArrayID[sizeof(Trailer)] = {-1,...};
public OnGameModeInit()
{
// Two trailers added and random mission assigned
Trailer[0][TrailerID] = CreateVehicle(435, 2749.8076, 2628.5588, 11.4041, 206.2215, 1, 1, 60); // Trailer LV
// Assign a random mission to the trailer, access the mission later through Trailer[TRAILER_ARRAY_ID][MissionID], e.g.CreateActor Missions[Trailer[TRAILER_ARRAY_ID][MissionID]][TrailerMissionName]
new rand = random(sizeof(Missions));
Trailer[0][MissionID] = rand;
TrailerArrayID[Trailer[0][TrailerID]] = 0;
Trailer[0][TrailerLabel] = Create3DTextLabel(Missions[Trailer[0][MissionID]][TrailerMissionName], -1, 30.0, 40.0, 50.0, 40.0, 0, 0);
Attach3DTextLabelToVehicle(Trailer[0][TrailerLabel], Trailer[0][TrailerID], 0.0, 0.0, 0.0);
Trailer[1][TrailerID] = CreateVehicle(435, 2756.3267, 2628.5952, 11.4061, 206.6927, 1, 1, 60); // Trailer LV
rand = random(sizeof(Missions));
Trailer[1][MissionID] = rand;
TrailerArrayID[Trailer[1][TrailerID]] = 1;
Trailer[1][TrailerLabel] = Create3DTextLabel(Missions[Trailer[1][MissionID]][TrailerMissionName], -1, 30.0, 40.0, 50.0, 40.0, 0, 0);
Attach3DTextLabelToVehicle(Trailer[1][TrailerLabel], Trailer[1][TrailerID], 0.0, 0.0, 0.0);
AddPlayerClass(29, POS_TEST1, 0.0, -1, -1, -1, -1, -1, -1);
return 1;
}
public OnGameModeExit()
{
return 1;
}
forward OnPlayerEnterDynamicCP(playerid, checkpointid);
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)) && IsAMissionTrailer(GetVehicleTrailer(GetPlayerVehicleID(playerid))))
{
new trailerid = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new arrayid = TrailerArrayID[trailerid];
new missionid = Trailer[arrayid][MissionID];
if(checkpointid == Trailer[arrayid][CheckpointID])
{
new str[128];
format(str, sizeof(str), "Trailer successfully delivered! Reward: %d Score, $%d Cash.", Missions[missionid][TrailerMissionPayScore], Missions[missionid][TrailerMissionPayMoney]);
SendClientMessage(playerid, -1, str);
// Respawn the trailer and assign a new mission to it
SetPlayerScore(playerid, GetPlayerScore(playerid) + Missions[missionid][TrailerMissionPayScore]);
GivePlayerMoney(playerid, Missions[missionid][TrailerMissionPayMoney]);
DestroyDynamicCP(Trailer[arrayid][CheckpointID]);
SetVehicleToRespawn(trailerid);
Trailer[arrayid][MissionID] = random(sizeof(Missions));
Update3DTextLabelText(Trailer[arrayid][TrailerLabel], -1, Missions[missionid][TrailerMissionName]);
}
}
return 1;
}
COMMAND:startmission(playerid,params[]) // startmission
{
if(!IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) return SendClientMessage(playerid, -1, "You have no trailer attached to your vehicle!");
if(!IsAMissionTrailer(GetVehicleTrailer(GetPlayerVehicleID(playerid)))) return SendClientMessage(playerid, -1, "This is not a mission trailer!");
new trailerid = GetVehicleTrailer(GetPlayerVehicleID(playerid));
new arrayid = TrailerArrayID[trailerid];
new missionid = Trailer[arrayid][MissionID];
Trailer[arrayid][CheckpointID] = CreateDynamicCP(Missions[missionid][TrailerMissionUnloadX], Missions[missionid][TrailerMissionUnloadY], Missions[missionid][TrailerMissionUnloadZ], 3.0);
SendClientMessage(playerid, -1, "Trailer mission started...");
return 1;
}
IsAMissionTrailer(vehicleid)
{
for(new i = 0; i < sizeof(Trailer); i++)
{
if(vehicleid == Trailer[i][TrailerID]) return true;
}
return false;
}
stock GetNick(playerid)
{
new PlayerNick[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerNick, sizeof(PlayerNick));
return PlayerNick;
}
CMD:truck1(playerid, params[])
{
new truck, Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
truck = CreateVehicle(514, x, y, z, a, -1, -1, -1);
PutPlayerInVehicle(playerid, (truck), 0);
return 1;
}