Код:
#include <a_samp>
#include Truckingmissions
#define COLOR_ORANGE 0xFFA500FF
#define COLOR_LIMEGREEN 0x32CD32FF
#define COLOR_ROYALBLUE 0x4169E1FF
#define COLOR_PINK 0xFA8072FF
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_LIGHTBLUE 0x33CCFFAA
enum {
STAGE_IDLE,
STAGE_LOAD,
STAGE_UNLOAD
}
new MissionStage[MAX_PLAYERS];
new Float: gPickupCPs[][] = {
{ 2482.1025,-2115.5769,13.5469},
{ 992.2057,-1376.1956,13.3270 },
{ 887.2043,-1228.4708,16.7225 },
{ -1081.1879,-1625.7737,76.3672 },
{ -1578.6672,91.7932,3.5547 },
{ -1790.5306,1418.1010,7.1875 },
{ 2357.2292,2741.4360,10.8203 },
{ 1610.1963,2326.2185,10.8203 },
{ 988.1158,2139.7402,10.8203 },
{ 1478.4102,1018.5461,10.8203 }
};
new Float: gDeliverCPs[][] = {
{ 380.5093,-1851.8972,7.8359 },
{ -380.2624,-1413.9344,25.7266 },
{ -1896.4308,-1706.3574,21.7564 },
{ -2098.0281,-2240.2974,30.6250 },
{ -2148.3145,-2446.4321,30.6250 },
{ -2131.2305,-157.6189,35.3203 },
{ -2329.2871,-133.7341,35.3203 },
{ -1750.6095,958.5900,24.8828 },
{ 1900.0614,2085.7256,10.8203 },
{ 2441.6106,2005.6488,10.8203 }
};
public OnPlayerConnect(playerid) {
MissionStage[playerid] = STAGE_IDLE;
return true;
}
DeliveryMission(playerid) {
if(MissionStage[playerid] == STAGE_IDLE) {
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
{
if(IsTrailerAttachedToVehicle(435)){
}
new
idx,
Float: tmp,
Float: dist = GetPlayerDistanceFromPoint(playerid, gPickupCPs[0][0], gPickupCPs[0][1], gPickupCPs[0][2])
;
for(new i = 1; i < sizeof gPickupCPs; ++i) {
tmp = GetPlayerDistanceFromPoint(playerid, gPickupCPs[i][0], gPickupCPs[i][1], gPickupCPs[i][2]);
if(tmp < dist) {
dist = tmp;
idx = i;
}
}
MissionStage[playerid] = STAGE_LOAD;
return SetPlayerCheckpoint(playerid, gPickupCPs[idx][0], gPickupCPs[idx][1], gPickupCPs[idx][2], 20.0);
}
} else {
MissionStage[playerid] = STAGE_IDLE;
return DisablePlayerCheckpoint(playerid);
}
return false;
}
public OnPlayerCommandText(playerid, cmdtext[]) {
if (strcmp("/work", cmdtext, true) == 0) {
if(MissionStage[playerid] != STAGE_IDLE) {
return SendClientMessage(playerid, COLOR_RED, "You are already in a work!");
}
if(DeliveryMission(playerid)) {
new
string[64]
;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 515)
{
}
GetPlayerName(playerid, string, MAX_PLAYER_NAME);
strcat(string, " is now doing Truck Job.");
return SendClientMessageToAll(COLOR_ORANGE, string);
}
}
if (strcmp("/stopwork", cmdtext, true) == 0) {
if(DeliveryMission(playerid)) {
return SendClientMessage(playerid, COLOR_RED, "You had Stopped your Work!");
}
}
return false;
}
public OnPlayerEnterCheckpoint(playerid) {
switch(MissionStage[playerid]) {
case STAGE_LOAD: {
new
rand = random(sizeof gDeliverCPs)
;
if(IsTrailerAttachedToVehicle(435))
{
SendClientMessage(playerid,COLOR_RED, "Get to the unloading Point !")
return true;
}else {
SendClientMessage(playerid,COLOR_RED, "You need Trailer to do tis stuuf !")
}
DisablePlayerCheckpoint(playerid);
GameTextForPlayer(playerid, "~g~Passengers Boarding !", 2000, 4);
TogglePlayerControllable(playerid, false); // Freeze the player
SetTimerEx("Unfreeze", 3000, false, "i", playerid); // Make a 3 second timer for that player to get unfroze
SetPlayerCheckpoint(playerid, gDeliverCPs[rand][0], gDeliverCPs[rand][1], gDeliverCPs[rand][2], 10.0);
MissionStage[playerid] = STAGE_UNLOAD;
}
case STAGE_UNLOAD: {
DisablePlayerCheckpoint(playerid);
{
if(IsTrailerAttachedToVehicle(515))
return true;
}
GameTextForPlayer(playerid, "~g~Passengers UnLoading !", 2000, 4);
TogglePlayerControllable(playerid, false); // Freeze the player
SetTimerEx("Unfreeze", 3000, false, "i", playerid); // Make a 3 second timer for that player to get unfroze
SetPlayerScore(playerid, GetPlayerScore(playerid) + 1);
new cash = random(10000);
GivePlayerMoney(playerid, cash);
MissionStage[playerid] = STAGE_IDLE;
}
}
return false;
}
public OnPlayerDeath(playerid, killerid, reason){
MissionStage[playerid] = STAGE_IDLE;
DisablePlayerCheckpoint(playerid);
return true;
}
forward Unfreeze(playerid);
public Unfreeze(playerid)
{
TogglePlayerControllable(playerid, true); // Unfreeze the player after 5 seconds
return 1;
}
public OnPlayerFinishMission(playerid)
{
SendClientMessage(playerid, 0x00FF00FF, "You have completed your mission!");
return 1;
}