05.05.2015, 15:36
hi guys i have a cmd for trucker job but if server started , around 2 hours later the cmd make bug , if u use /loadtruck u will be freeze.
Код:
CMD:loadtruck(playerid, params[])
{
if(PlayerInfo[playerid][pJob] == 20 || PlayerInfo[playerid][pJob2] == 20)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(IsATruckerCar(vehicleid) && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(CheckPointCheck(playerid))return SendClientMessage(playerid, COLOR_WHITE, "Please ensure that your current checkpoint is destroyed first (you either have material packages, or another existing checkpoint).");
if(GetProgressBarValue(LoadTruckBar[playerid]) > 10)
{
SendClientMessage(playerid, COLOR_WHITE, "You're currently loading your Truck!");
return 1;
}
if(TruckUsed[playerid] != INVALID_VEHICLE_ID)
{
SendClientMessage(playerid, COLOR_WHITE, "You're already on another delivery, type /cancel truck to cancel that delivery.");
return 1;
}
gPlayerCheckpointStatus[playerid] = CHECKPOINT_LOADTRUCK;
SetPlayerCheckpoint(playerid,2197.660644, -2662.190185, 13.546875, 5);
GameTextForPlayer(playerid, "~w~Waypoint set ~r~Ocean Docks", 5000, 1);
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Pick up some goods to transport with your Truck at Ocean Docks (see checkpoint on radar).");
}
else return SendClientMessage(playerid, COLOR_GREY, "You're not driving a Ocean Docks Truck!");
}
else return SendClientMessage(playerid, COLOR_GREY, "You're not a Trucker!");
return 1;
}
Код:
forward LoadTruck(playerid);
public LoadTruck(playerid)
{
LoadTruckTime[playerid]--;
SetProgressBarValue(LoadTruckBar[playerid], GetProgressBarValue(LoadTruckBar[playerid])-10.0);
UpdateProgressBar(LoadTruckBar[playerid], playerid);
if(GetProgressBarValue(LoadTruckBar[playerid]) > 10) SetTimerEx("LoadTruck", 1000, 0, "d", playerid);
if(GetProgressBarValue(LoadTruckBar[playerid]) == 50.0)
{
SetProgressBarColor(LoadTruckBar[playerid], COLOR_YELLOW);
UpdateProgressBar(LoadTruckBar[playerid], playerid);
}
else if(GetProgressBarValue(LoadTruckBar[playerid]) == 20.0)
{
SetProgressBarColor(LoadTruckBar[playerid], COLOR_RED);
UpdateProgressBar(LoadTruckBar[playerid], playerid);
}
else if(GetProgressBarValue(LoadTruckBar[playerid]) <= 10.0)
{
if(PlayerInfo[playerid][pTPackages] == 1) return SendClientMessage(playerid, COLOR_GREY, "You cannot overload your Truck");
DeletePVar(playerid, "IsFrozen");
TogglePlayerControllable(playerid, 1);
DestroyProgressBar(LoadTruckBar[playerid]);
LoadTruckBar[playerid] = INVALID_BAR_ID;
new vehicleid = GetPlayerVehicleID(playerid);
new truckdeliver = GetPVarInt(playerid, "TruckDeliver");
// TruckContents[vehicleid] = truckdeliver;
TruckUsed[playerid] = vehicleid;
if(PlayerInfo[playerid][pDonator] == 1)
{
new packages, string[128];
new level = PlayerInfo[playerid][pTruckSkill];
if(level >= 0 && level <= 30) packages = 10;
else if(level >= 31 && level <= 50) packages = 15;
else if(level >= 51 && level <= 80) packages = 20;
else if(level >= 81 && level <= 120) packages = 25;
else if(level >= 121) packages = 30;
if(GetPlayerCash(playerid) < packages*13)
{
format(string,sizeof(string), "You cannot afford $%d",packages*13);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
PlayerInfo[playerid][pTPackages] ++;
GivePlayerCash(playerid, -(packages*13));
TruckPackages[GetPlayerVehicleID(playerid)] = playerid;
format(string, sizeof(string), "* %s has loaded %d products packages from the pickup.", GetPlayerNameEx(playerid), packages);
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
format(string, sizeof(string), "* You have loaded {FF6347}%d products{33CCFF} packages for {FF6347}$%d{33CCFF}, deliver them to the dropoff. (Checkpoint)", packages, packages*13);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SendClientMessage(playerid, COLOR_ORANGE,"Pearl VIP:You will recieve 1.5x more packages than normal");
}
else if(PlayerInfo[playerid][pDonator] == 2)
{
new packages, string[128];
new level = PlayerInfo[playerid][pTruckSkill];
if(level >= 0 && level <= 30) packages = 10;
else if(level >= 31 && level <= 50) packages = 15;
else if(level >= 51 && level <= 80) packages = 20;
else if(level >= 81 && level <= 120) packages = 25;
else if(level >= 121) packages = 30;
if(GetPlayerCash(playerid) < packages*15)
{
format(string,sizeof(string), "You cannot afford $%d",packages*15);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
PlayerInfo[playerid][pTPackages] ++;
GivePlayerCash(playerid, -(packages*15));
TruckPackages[GetPlayerVehicleID(playerid)] = playerid;
format(string, sizeof(string), "* %s has loaded %d products packages from the pickup.", GetPlayerNameEx(playerid), packages);
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
format(string, sizeof(string), "* You have loaded {FF6347}%d products{33CCFF} packages for {FF6347}$%d{33CCFF}, deliver them to the dropoff. (Checkpoint)", packages, packages*15);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SendClientMessage(playerid, COLOR_ORANGE,"Emerald VIP:You will recieve 2x more packages than normal");
}
else if(PlayerInfo[playerid][pDonator] == 3)
{
new packages, string[128];
new level = PlayerInfo[playerid][pTruckSkill];
if(level >= 0 && level <= 30) packages = 10;
else if(level >= 31 && level <= 50) packages = 15;
else if(level >= 51 && level <= 80) packages = 20;
else if(level >= 81 && level <= 120) packages = 25;
else if(level >= 121) packages = 30;
if(GetPlayerCash(playerid) < packages*20)
{
format(string,sizeof(string), "You cannot afford $%d",packages*20);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
PlayerInfo[playerid][pTPackages] ++;
GivePlayerCash(playerid, -(packages*20));
TruckPackages[GetPlayerVehicleID(playerid)] = playerid;
format(string, sizeof(string), "* %s has loaded %d products packages from the pickup.", GetPlayerNameEx(playerid), packages);
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
format(string, sizeof(string), "* You have loaded {FF6347}%d products{33CCFF} packages for {FF6347}$%d{33CCFF}, deliver them to the dropoff. (Checkpoint)", packages, packages*20);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
SendClientMessage(playerid, COLOR_ORANGE,"Diamond VIP:You will recieve 2x more packages than normal");
}
else
{
new packages, string[128];
new level = PlayerInfo[playerid][pTruckSkill];
if(level >= 0 && level <= 30) packages = 10;
else if(level >= 31 && level <= 50) packages = 15;
else if(level >= 51 && level <= 80) packages = 20;
else if(level >= 81 && level <= 120) packages = 25;
else if(level >= 121) packages = 30;
if(GetPlayerCash(playerid) < packages*10)
{
format(string,sizeof(string), "You cannot afford $%d",packages*10);
SendClientMessage(playerid, COLOR_GRAD1, string);
return 1;
}
PlayerInfo[playerid][pTPackages] ++;
GivePlayerCash(playerid, -(packages*10));
TruckPackages[GetPlayerVehicleID(playerid)] = playerid;
format(string, sizeof(string), "* %s has loaded %d products packages from the pickup.", GetPlayerNameEx(playerid), packages);
SendNearbyMessage(playerid, 15, string, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE, COLOR_PURPLE);
format(string, sizeof(string), "* You have loaded {FF6347}%d products{33CCFF} packages for {FF6347}$%d{33CCFF}, deliver them to the dropoff. (Checkpoint)", packages, packages*10);
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
}
/*if(PlayerInfo[playerid][pTPackages] != 2)
{
SendClientMessage(playerid, COLOR_WHITE, "You can overload packages by typing /loadtruck again, cops will be notified though.");
}
if(PlayerInfo[playerid][pTPackages] == 2)
{
SendClientMessage(playerid, COLOR_LIGHTRED, "* You have overloaded packages, the Police Department has been notified as a result.");
}*/
if(truckdeliver == 1)
{
SendClientMessageEx(playerid, COLOR_LIGHTBLUE,"* Your Truck was filled with Products.");
SetPlayerCheckpoint(playerid, 1030.8898,-1451.5533,13.5546, 3);
}
gPlayerCheckpointStatus[playerid] = CHECKPOINT_RETURNTRUCK;
SetPlayerCheckpoint(playerid, 1030.8898,-1451.5533,13.5546, 5);
GameTextForPlayer(playerid, "~w~Waypoint set ~r~Packages Drop Off", 5000, 1);
SendClientMessageEx(playerid, COLOR_WHITE, "HINT: Deliver the supplies to Packages Drop Off (see checkpoint on radar).");
// SendClientMessage(playerid, COLOR_REALRED, "WARNING: Watch out for truck hijackers, they can hijack your truck and get away with the goods.");
SetPVarInt(playerid, "tpTruckRunTimer", 30);
SetTimerEx("OtherTimerEx", 1000, false, "ii", playerid, TYPE_TPTRUCKRUNTIMER);
}
return 1;
}
Код:
// Trucker Job new Bar:LoadTruckBar[MAX_PLAYERS] = INVALID_BAR_ID; new LoadTruckTime[MAX_PLAYERS]; new TruckDeliver[MAX_PLAYERS]; new TruckUsed[MAX_PLAYERS] = INVALID_VEHICLE_ID; new TruckContents[MAX_VEHICLES] = 0; new TruckPackages[MAX_VEHICLES]; new Products; new Text3D:ProductsText;

