Infernus ColorBug[Parking] [HELP]
#1

Alright the problem is when i change the color for the car it changes everything ok, but when i want to /park it, the color turns into white. And i see in transfender Infernus got Paintjob option. PS: this problem is only with Infernus.
[video]https://www.youtube.com/watch?v=T_juthGeblc[/video]
Reply
#2

You can add a filterscript getvehiclecolor first, then when player types /paint [idcol] you will get something that player types and then when player /park set it again. I'm Bad at English :v
Reply
#3

Can you help me with it please? I tried it once but it gaves me many errors from the GetVehicleColor.inc..
Reply
#4

I searched whole script is no parameter or function for infernus. I can not figure out which might be the problem.
Reply
#5

Do you use OnVehicleRespray at all? This callback could come in handy.

On the other hand, would you mind showing us your /park command? Looks like it could use a few improvements anyway.
Reply
#6

Here is the command:
pawn Код:
CMD:park(playerid, params[])
{
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You need to login first before using any command.");
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You are not in a vehicle.");
    // Family Vehicles
    if(IsFamVehicle(GetPlayerVehicleID(playerid)) && Fam[GetPlayerVehicleID(playerid)] == PlayerInfo[playerid][pFam])
    {
        new idx = PlayerInfo[playerid][pFam], veh = GFVS(GetPlayerVehicleID(playerid));

        GetVehiclePos(GetPlayerVehicleID(playerid), FamInfo[idx][fVehCoX][veh], FamInfo[idx][fVehCoY][veh], FamInfo[idx][fVehCoZ][veh]);
        GetVehicleZAngle(GetPlayerVehicleID(playerid), FamInfo[idx][fVehRot][veh]);
        if(FamInfo[idx][fVehType][veh])
        {
            DestroyVehicle(FamInfo[idx][fVeh][veh]);
        }
        FamInfo[idx][fVeh][veh] = CreateVehicle(FamInfo[idx][fVehType][veh], FamInfo[idx][fVehCoX][veh], FamInfo[idx][fVehCoY][veh], FamInfo[idx][fVehCoZ][veh], FamInfo[idx][fVehRot][veh], FamInfo[idx][fVehCol1][veh], FamInfo[idx][fVehCol2][veh], 12000);
        ChangeVehicleColor(FamInfo[idx][fVeh][veh], FamInfo[idx][fVehCol1][veh], FamInfo[idx][fVehCol2][veh]);
        SendClientMessage(playerid, COLOR_LIGHTBLUE, " You have parked your family vehicle, it will always spawn here until you park it somewhere else.");
        return 1;
    }
    // Owned Vehicles
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_GREY, "You're not driving your own vehicle to park it.");
    if(GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pVVeh] && GetPlayerVehicleID(playerid) != PlayerInfo[playerid][pBVeh]) return SendClientMessage(playerid, COLOR_GREY, "You are not in a vehicle that you can park it.");
    SendClientMessage(playerid, COLOR_LIGHTBLUE, "You have parked your vehicle, it will always spawn here until you park it somewhere else.");
    if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVeh])
    {
        for(new i=0; i<14; i++)
        {
            PlayerInfo[playerid][pVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pVeh], i);
        }
        GetVehiclePos(PlayerInfo[playerid][pVeh],PlayerInfo[playerid][vX], PlayerInfo[playerid][vY], PlayerInfo[playerid][vZ]);
        GetVehicleZAngle(PlayerInfo[playerid][pVeh],PlayerInfo[playerid][vA]);
        DestroyVehicle(PlayerInfo[playerid][pVeh]);
        PlayerInfo[playerid][pVeh] = CreateVehicle(PlayerInfo[playerid][vModel], PlayerInfo[playerid][vX], PlayerInfo[playerid][vY], PlayerInfo[playerid][vZ],PlayerInfo[playerid][vA],PlayerInfo[playerid][vC1],PlayerInfo[playerid][vC2],1200);
        ChangeVehiclePaintjob(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vPJ]);
        for(new i=0; i<14; i++)
        {
            AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
        }
    }
    else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pVVeh])
    {
        for(new i=0; i<14; i++)
        {
            PlayerInfo[playerid][pVVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pVVeh], i);
        }
        GetVehiclePos(PlayerInfo[playerid][pVVeh],PlayerInfo[playerid][vVX], PlayerInfo[playerid][vVY], PlayerInfo[playerid][vVZ]);
        GetVehicleZAngle(PlayerInfo[playerid][pVVeh],PlayerInfo[playerid][vVA]);
        DestroyVehicle(PlayerInfo[playerid][pVVeh]);
        PlayerInfo[playerid][pVVeh] = CreateVehicle(PlayerInfo[playerid][vVModel], PlayerInfo[playerid][vVX], PlayerInfo[playerid][vVY], PlayerInfo[playerid][vVZ],PlayerInfo[playerid][vVA],PlayerInfo[playerid][vVC1],PlayerInfo[playerid][vVC2],1200);
        ChangeVehiclePaintjob(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVPJ]);
        for(new i=0; i<14; i++)
        {
            AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
        }
    }
    else if(GetPlayerVehicleID(playerid) == PlayerInfo[playerid][pBVeh])
    {
        for(new i=0; i<14; i++)
        {
            PlayerInfo[playerid][pBVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pBVeh], i);
        }
        GetVehiclePos(PlayerInfo[playerid][pBVeh],PlayerInfo[playerid][vBX], PlayerInfo[playerid][vBY], PlayerInfo[playerid][vBZ]);
        GetVehicleZAngle(PlayerInfo[playerid][pBVeh],PlayerInfo[playerid][vBA]);
        DestroyVehicle(PlayerInfo[playerid][pBVeh]);
        PlayerInfo[playerid][pBVeh] = CreateVehicle(PlayerInfo[playerid][vBModel], PlayerInfo[playerid][vBX], PlayerInfo[playerid][vBY], PlayerInfo[playerid][vBZ],PlayerInfo[playerid][vBA],PlayerInfo[playerid][vBC1],PlayerInfo[playerid][vBC2],1200);
        ChangeVehiclePaintjob(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][vBPJ]);
        for(new i=0; i<14; i++)
        {
            AddVehicleComponent(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][pBVehMod][i]);
        }
    }
    return 1;
}
Reply
#7

Well your command should look a bit more like this:
PHP код:
CMD:park(playeridparams[])
{
    if(!
IsPlayerLoggedIn(playerid)) return SendClientMessage(playeridCOLOR_GREY"You need to login first before using any command.");
    new 
vid GetPlayerVehicleID(playerid);
    if(!
vid) return SendClientMessage(playeridCOLOR_GREY"You are not in a vehicle.");
    if(
IsFamVehicle(vid) && Fam[vid] == PlayerInfo[playerid][pFam])
    {
        new 
idx PlayerInfo[playerid][pFam], veh GFVS(vid);
        
GetVehiclePos(vidFamInfo[idx][fVehCoX][veh], FamInfo[idx][fVehCoY][veh], FamInfo[idx][fVehCoZ][veh]);
        
GetVehicleZAngle(vidFamInfo[idx][fVehRot][veh]);
        if(
FamInfo[idx][fVehType][veh]) DestroyVehicle(FamInfo[idx][fVeh][veh]);
        
FamInfo[idx][fVeh][veh] = CreateVehicle(FamInfo[idx][fVehType][veh], FamInfo[idx][fVehCoX][veh], FamInfo[idx][fVehCoY][veh], FamInfo[idx][fVehCoZ][veh], FamInfo[idx][fVehRot][veh], FamInfo[idx][fVehCol1][veh], FamInfo[idx][fVehCol2][veh], 12000);
        
ChangeVehicleColor(FamInfo[idx][fVeh][veh], FamInfo[idx][fVehCol1][veh], FamInfo[idx][fVehCol2][veh]);
        
SendClientMessage(playeridCOLOR_LIGHTBLUE" You have parked your family vehicle, it will always spawn here until you park it somewhere else.");
        return 
1;
    }
    
// Owned Vehicles
    
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playeridCOLOR_GREY"You must be driving your own vehicle to park it.");
    if(
vid == PlayerInfo[playerid][pVeh])
    {
        for(new 
014i++) PlayerInfo[playerid][pVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pVeh], i);
        
GetVehiclePos(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vX], PlayerInfo[playerid][vY], PlayerInfo[playerid][vZ]);
        
GetVehicleZAngle(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vA]);
        
DestroyVehicle(PlayerInfo[playerid][pVeh]);
        
PlayerInfo[playerid][pVeh] = CreateVehicle(PlayerInfo[playerid][vModel], PlayerInfo[playerid][vX], PlayerInfo[playerid][vY], PlayerInfo[playerid][vZ], PlayerInfo[playerid][vA], PlayerInfo[playerid][vC1], PlayerInfo[playerid][vC2], 1200);
        
ChangeVehiclePaintjob(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][vPJ]);
        for(new 
014i++) AddVehicleComponent(PlayerInfo[playerid][pVeh], PlayerInfo[playerid][pVehMod][i]);
    }
    else if(
vid == PlayerInfo[playerid][pVVeh])
    {
        for(new 
014i++) PlayerInfo[playerid][pVVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pVVeh], i);
        
GetVehiclePos(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVX], PlayerInfo[playerid][vVY], PlayerInfo[playerid][vVZ]);
        
GetVehicleZAngle(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVA]);
        
DestroyVehicle(PlayerInfo[playerid][pVVeh]);
        
PlayerInfo[playerid][pVVeh] = CreateVehicle(PlayerInfo[playerid][vVModel], PlayerInfo[playerid][vVX], PlayerInfo[playerid][vVY], PlayerInfo[playerid][vVZ], PlayerInfo[playerid][vVA], PlayerInfo[playerid][vVC1], PlayerInfo[playerid][vVC2], 1200);
        
ChangeVehiclePaintjob(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][vVPJ]);
        for(new 
014i++) AddVehicleComponent(PlayerInfo[playerid][pVVeh], PlayerInfo[playerid][pVVehMod][i]);
    }
    else if(
vid == PlayerInfo[playerid][pBVeh])
    {
        for(new 
014i++) PlayerInfo[playerid][pBVehMod][i] = GetVehicleComponentInSlot(PlayerInfo[playerid][pBVeh], i);
        
GetVehiclePos(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][vBX], PlayerInfo[playerid][vBY], PlayerInfo[playerid][vBZ]);
        
GetVehicleZAngle(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][vBA]);
        
DestroyVehicle(PlayerInfo[playerid][pBVeh]);
        
PlayerInfo[playerid][pBVeh] = CreateVehicle(PlayerInfo[playerid][vBModel], PlayerInfo[playerid][vBX], PlayerInfo[playerid][vBY], PlayerInfo[playerid][vBZ], PlayerInfo[playerid][vBA], PlayerInfo[playerid][vBC1], PlayerInfo[playerid][vBC2], 1200);
        
ChangeVehiclePaintjob(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][vBPJ]);
        for(new 
014i++) AddVehicleComponent(PlayerInfo[playerid][pBVeh], PlayerInfo[playerid][pBVehMod][i]);
    }
    else return 
SendClientMessage(playeridCOLOR_GREY"You are not in a vehicle that you can park.");
    
SendClientMessage(playeridCOLOR_LIGHTBLUE"You have parked your vehicle, it will always spawn here until you park it somewhere else.");
    return 
1;

Then you would need to update your color variables every time you use the transfender or other mod shops. Note that this does not account for pay 'n' sprays.

PHP код:
public OnVehicleRespray(playeridvehicleidcolor1color2)
{
    if(
vehicleid == PlayerInfo[playerid][pVeh])
        
PlayerInfo[playerid][vC1] = color1PlayerInfo[playerid][vC2] = color2;
    else if(
vehicleid == PlayerInfo[playerid][pVVeh])
        
PlayerInfo[playerid][vVC1] = color1PlayerInfo[playerid][vVC2] = color2;
    else if(
vehicleid == PlayerInfo[playerid][pBVeh])
        
PlayerInfo[playerid][vBC1] = color1PlayerInfo[playerid][vBC2] = color2;
    return 
1;

You should technically subtract 1 from every array that uses vehicle IDs, because if you happen to get vehicle ID 2000, then you can expect an out of bounds error. Vehicle IDs start at 1, not 0. But that's a story for another time
Reply
#8

Thank you very much. But i've compiled with your command and the problem is still persist.
Reply
#9

Are you sure you're using the OnVehicleRespray callback? Either way, can you show us where you're updating the vehicle color variables? 'vC1', 'vVC1', 'vBC1' etc.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)