Okay, So when someone logs off my server their car disappears... How would I make it so it stays spawned IG and will not disappear till the player logs back in... other way so the car is ALWAYS there.
Remove all DestroyVehicle under OnPlayerDisconnect callback.
if you have notepad++, you can copy paste the OnPlayerDisconnect callback into it, then use the following regular expression:
Код:
public OnPlayerDisconnect(playerid, reason)
{
// Bank Robbery
if(BankRobber[playerid])
{
new Rob = BankRobber[playerid]-1, string[128];
DisablePlayerCheckpoint(playerid);
BankRobbersCount --;
format(BankRobbers[Rob], MAX_PLAYER_NAME, "");
DeliverMoney[playerid] = 0;
//
foreach(Player, i)
{
if(BankRobber[i] || PlayerInfo[i][pFac] == 1)
{
if(Rob == 0) TextDrawHideForPlayer(i, Textdraw1);
else if(Rob == 1) TextDrawHideForPlayer(i, Textdraw2);
else if(Rob == 2) TextDrawHideForPlayer(i, Textdraw3);
else if(Rob == 3) TextDrawHideForPlayer(i, Textdraw4);
else if(Rob == 4) TextDrawHideForPlayer(i, Textdraw5);
}
}
format(string, sizeof(string), "** %s has disconnected and has failed the robbery. **", RPN(playerid));
SendRobberyMessage(COLOR_LIGHTRED, string);
SendCopMessage(COLOR_LIGHTRED, string);
BankRobber[playerid] = 0;
if(BankRobbersCount == 0)
{
TextDrawHideForAll(Textdraw0);
TextDrawHideForAll(Textdraw1);
TextDrawHideForAll(Textdraw2);
TextDrawHideForAll(Textdraw3);
TextDrawHideForAll(Textdraw4);
TextDrawHideForAll(Textdraw5);
BankRobbery = 0;
RobberyStarted = 0;
format(string, sizeof(string), "** The bank robbery has ended, $%d were stolen and $%d were saved. **", TotalStolen*10000, (TotalRobbers*10000-(TotalStolen*10000)));
SendClientMessageToAll(COLOR_YELLOW, string);
TotalRobbers = 0;
new copsonline;
foreach(Player, i)
{
if(IsACop(i)) copsonline++;
}
foreach(Player, i)
{
if(IsACop(i))
{
new Saved = (TotalRobbers*10000-(TotalStolen*10000));
GiveZaiatMoney(i, Saved/copsonline);
format(string, sizeof(string), "** You have received your cut from the saved money. ($%d)", Saved/copsonline);
SendClientMessage(i, COLOR_LIME, string);
}
}
}
}
// Boxing
new string[128];
if(Boxing[playerid])
{
// Getting other boxer's ID
new playerb = -1;
foreach(Player, i)
{
if(Boxing[i] && i != playerid) playerb = i;
}
if(playerb != -1)
{
format(string, sizeof(string), "Boxing Ring: The boxing match has ended, %s has won the match.", RPN(playerb));
SendGymMessage(COLOR_WHITE, string);
// Putting them out of the ring
SetPlayerPos(playerb, 760.9759,4.7187,1000.7084);
SetPlayerFacingAngle(playerb, 268.9407);
SetPlayerPos(playerid, 760.9759,6.1794,1000.7093);
SetPlayerFacingAngle(playerid, 268.9407);
// Giving the winner extra skill point
new oldj = strval(RPJL(playerb, JOB_BOXER));
PlayerInfo[playerb][pJobSkill][JOB_BOXER] ++;
new newj = strval(RPJL(playerb, JOB_BOXER));
if(oldj < newj)
{
format(string, sizeof(string), "** Your Boxer level is now %d, you can now cause %d more damage. **", newj, (newj*2)-2);
SendClientMessage(playerb, COLOR_YELLOW, string);
}
//
SendClientMessage(playerb, COLOR_LIME, " You have won the boxing match.");
SendClientMessage(playerid, COLOR_LIGHTRED, " You have lost the boxing match.");
// Giving Bids
new winner = pBoxer[playerb];
foreach(Player, i)
{
if(BidBoxer[i] == winner)
{
new percent, profit;
percent = (BidAmount[i]/BoxerBid[winner]) * 100;
profit = (percent * BoxerBid[pBoxer[playerid]]) / 100;
GiveZaiatMoney(i, BidAmount[i] + profit);
format(string, sizeof(string), " You have won $%d from bidding in the match, the money you bid has been returned as well.", profit);
SendClientMessage(i, COLOR_LIME, string);
}
BidAmount[i] = 0;
BidBoxer[i] = 0;
}
for(new w = 0; w < 13; w++)
{
GiveZaiatWeapon(playerb, PlayerInfo[playerb][pWeapon][w], PlayerInfo[playerb][pWeaponAmmo][w]);
}
}
for(new w = 0; w < 13; w++)
{
GiveZaiatWeapon(playerid, PlayerInfo[playerid][pWeapon][w], PlayerInfo[playerid][pWeaponAmmo][w]);
}
// Resetting Values
BoxingMatch = 0;
Boxer[1] = -1;
pBoxer[playerb] = 0;
Boxer[2] = -1;
pBoxer[playerid] = 0;
Boxing[playerb] = 0;
Boxing[playerid] = 0;
BoxerBid[1] = 0;
BoxerBid[2] = 0;
if(BoxTime)
{
TogglePlayerControllable(playerb, 1);
KillTimer(BoxTimer);
}
}
// The rest
if(IsPlayerLoggedIn(playerid)) {SaveChar(playerid);}
switch(reason)
{
case 0: format(string, sizeof(string), "* %s has left the server. (Timeout)", RPN(playerid));
case 1: format(string, sizeof(string), "* %s has left the server. (Leaving)", RPN(playerid));
case 2: format(string, sizeof(string), "* %s has left the server. (Kicked/Banned)", RPN(playerid));
}
SendNearbyMessage(playerid, 10, string, COLOR_YELLOW, COLOR_YELLOW, COLOR_YELLOW, COLOR_YELLOW, COLOR_YELLOW);
foreach(Player, i)
{
if(Specid[i] == playerid)
{
Spec[i] = 0;
Specid[i] = -1;
TogglePlayerSpectating(i, 0);
SetPlayerVirtualWorld(i, PlayerInfo[playerid][pVW]);
SetPlayerInterior(i, PlayerInfo[playerid][pInt]);
SetPlayerPos(i, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
SendClientMessage(i, COLOR_WHITE, " You have stopped spectating players.");
}
}
// Clearing AD
for(new i=0; i<MAX_ADS; i++)
{
if(strfind(AD[i], RPN(playerid)) != -1)
{
format(AD[i], 128, "");
}
}
// End of Clearing AD
ClearChar(playerid);
return 1;
}
Then you're out of luck, you'd have to search every single DestroyVehicle in the script, then look for the ones that check if the owner of the vehicle is not online.
I can test it with ya.