Error in "GetVehicleComponentInSlot"
#1

Hello there, i used the function GetVehicleComponentInSlot(vehicleid, slotid), in pawno it not give errors, but it give me a bug in game: if i tune my car and i do this funcion, it give me ever the car component id "0"... why? help me :C

this is my Private cars' FS
pawn Код:
// This is a comment
// uncomment the line below if you want to write a filterscript
#define FILTERSCRIPT

#include <a_samp>
#include <sscanf2>
#include <Dini>

#define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#define COLOR_ROSSO         0xFF0000FF
#define COLOR_FUCSIA        0x9900FFFF
#define COLOR_BLU           0x0000FFFF
#define COLOR_CELESTE       0x00BFFFFF
#define COLOR_VERDE         0x00FF00FF
#define COLOR_VERDEACQUA    0x00FF99FF
#define COLOR_GIALLO        0xFFFF00FF
#define COLOR_ARANCIONE     0xFF9900FF
#define COLOR_MARRONE       0x663300FF
#define COLOR_ROSA          0xFF6666FF
#define COLOR_SALMONE       0xFF9966FF
#define COLOR_NERO          0x000000FF
#define COLOR_GRIGIO        0x4F5152FF
#define COLOR_BIANCO        0xFFFFFFFF

#define DIALOG_BUYCAR 66
#define DIALOG_VMENU 67
#define DIALOG_VPLATE 68

#define CarFileSave "M3_Server/PrivateCar/Cars/%d.ini"
#define DealFileSave "M3_Server/PrivateCar/Dealers/%d.ini"

#define MAX_PCARS 100
#define MAX_DEALERS 5
#define MAX_PLAYER_PCARS 10
#define MAX_COMPONENT_SLOTS 14

#define INVALID_PRIVATEVID -1

#if defined FILTERSCRIPT

enum Deal
{
    Float: PosX,
    Float: PosY,
    Float: PosZ,
    Float: PosAng
}
new DealerInfo[MAX_DEALERS][Deal];

enum pCar
{
    bool: Vetrina,
    DealerID,
    bool: Esiste,
    Owner[255],
    PrivCarID,
    Model,
    Float: PosX,
    Float: PosY,
    Float: PosZ,
    Float: PosAng,
    Color1,
    Color2,
    Targa[255],
    Valore,
    Text3D: ValoreText,
    bool: Locked,
    mod0,
    mod1,
    mod2,
    mod3,
    mod4,
    mod5,
    mod6,
    mod7,
    mod8,
    mod9,
    mod10,
    mod11,
    mod12,
    mod13,
    mod14,
    mod15,
    mod16
}
new CarInfo[MAX_PCARS][pCar];

new tuned;

new VehicleNames[][] =
{
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster A", "Admiral",
    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring A", "Sandking",
    "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
    "Hotring B", "Hotring C", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    "Windsor", "Monster B", "Monster C", "Uranus", "Jester", "Sultan", "Stratium",
    "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
    "Police LS", "Police SF", "Police LV", "Picador", "SWAT", "Alpha",
    "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
};

forward SaveComponent(vehicleid, slotid, componentid);
public SaveComponent(vehicleid, slotid, componentid)
{
    new VehicleStr1[255],VehicleStr2[255];
    format(VehicleStr1, sizeof(VehicleStr2), CarFileSave, vehicleid);
    format(VehicleStr2, sizeof(VehicleStr2), "Mod%d", slotid);
    dini_IntSet(VehicleStr1, VehicleStr2, componentid);
    switch(slotid)
    {
        case 0: CarInfo[vehicleid][mod0] = dini_Int(VehicleStr1, VehicleStr2);
        case 1: CarInfo[vehicleid][mod1] = dini_Int(VehicleStr1, VehicleStr2);
        case 2: CarInfo[vehicleid][mod2] = dini_Int(VehicleStr1, VehicleStr2);
        case 3: CarInfo[vehicleid][mod3] = dini_Int(VehicleStr1, VehicleStr2);
        case 4: CarInfo[vehicleid][mod4] = dini_Int(VehicleStr1, VehicleStr2);
        case 5: CarInfo[vehicleid][mod5] = dini_Int(VehicleStr1, VehicleStr2);
        case 6: CarInfo[vehicleid][mod6] = dini_Int(VehicleStr1, VehicleStr2);
        case 7: CarInfo[vehicleid][mod7] = dini_Int(VehicleStr1, VehicleStr2);
        case 8: CarInfo[vehicleid][mod8] = dini_Int(VehicleStr1, VehicleStr2);
        case 9: CarInfo[vehicleid][mod9] = dini_Int(VehicleStr1, VehicleStr2);
        case 10: CarInfo[vehicleid][mod10] = dini_Int(VehicleStr1, VehicleStr2);
        case 11: CarInfo[vehicleid][mod11] = dini_Int(VehicleStr1, VehicleStr2);
        case 12: CarInfo[vehicleid][mod12] = dini_Int(VehicleStr1, VehicleStr2);
        case 13: CarInfo[vehicleid][mod13] = dini_Int(VehicleStr1, VehicleStr2);
    }
}

stock ModVehicle(vehicleid)
{
    new tuned2 = 0;
    if(CarInfo[vehicleid][mod0] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod0]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod1] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod1]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod2] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod2]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod3] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod3]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod4] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod4]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod5] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod5]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod6] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod6]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod7] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod7]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod8] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod8]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod9] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod9]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod10] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod10]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod11] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod11]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod12] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod12]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod13] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod13]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod14] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod14]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod15] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod15]);
        tuned2 = 1;
    }
    if(CarInfo[vehicleid][mod16] != 0) {
        AddVehicleComponent(vehicleid,CarInfo[vehicleid][mod16]);
        tuned2 = 1;
    }
    if(tuned2 == 1) {
        tuned++;
    }
}

public OnFilterScriptInit()
{
    new DealFile[255];
    for(new dealerid = 0; dealerid < MAX_PCARS; dealerid++)
    {
        format(DealFile, sizeof(DealFile), DealFileSave, dealerid);
        if(dini_Exists(DealFile))
        {
            DealerInfo[dealerid][PosX] = dini_Float(DealFile, "PosX");
            DealerInfo[dealerid][PosY] = dini_Float(DealFile, "PosY");
            DealerInfo[dealerid][PosZ] = dini_Float(DealFile, "PosZ");
            DealerInfo[dealerid][PosAng] = dini_Float(DealFile, "PosAng");
        }
    }
       
    new CarFile[255];
    for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
    {
        format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
        if(dini_Exists(CarFile))
        {
            CarInfo[vehicleid][Esiste] = true;
           
            CarInfo[vehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
            CarInfo[vehicleid][DealerID] = dini_Int(CarFile, "DealerID");
            CarInfo[vehicleid][Owner] = dini_Int(CarFile, "Owner");
            CarInfo[vehicleid][Model] = dini_Int(CarFile, "Model");
            CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
            CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
            CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
            CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
            CarInfo[vehicleid][Color1] = dini_Int(CarFile, "Color1");
            CarInfo[vehicleid][Color2] = dini_Int(CarFile, "Color2");
            CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
            CarInfo[vehicleid][Valore] = dini_Int(CarFile, "Valore");
            CarInfo[vehicleid][Locked] = dini_Bool(CarFile, "Locked");
            CarInfo[vehicleid][mod0] = dini_Int(CarFile, "Mod0");
            CarInfo[vehicleid][mod1] = dini_Int(CarFile, "Mod1");
            CarInfo[vehicleid][mod2] = dini_Int(CarFile, "Mod2");
            CarInfo[vehicleid][mod3] = dini_Int(CarFile, "Mod3");
            CarInfo[vehicleid][mod4] = dini_Int(CarFile, "Mod4");
            CarInfo[vehicleid][mod5] = dini_Int(CarFile, "Mod5");
            CarInfo[vehicleid][mod6] = dini_Int(CarFile, "Mod6");
            CarInfo[vehicleid][mod7] = dini_Int(CarFile, "Mod7");
            CarInfo[vehicleid][mod8] = dini_Int(CarFile, "Mod8");
            CarInfo[vehicleid][mod9] = dini_Int(CarFile, "Mod9");
            CarInfo[vehicleid][mod10] = dini_Int(CarFile, "Mod10");
            CarInfo[vehicleid][mod11] = dini_Int(CarFile, "Mod11");
            CarInfo[vehicleid][mod12] = dini_Int(CarFile, "Mod12");
            CarInfo[vehicleid][mod13] = dini_Int(CarFile, "Mod13");
            CarInfo[vehicleid][mod14] = dini_Int(CarFile, "Mod14");
            CarInfo[vehicleid][mod15] = dini_Int(CarFile, "Mod15");
            CarInfo[vehicleid][mod16] = dini_Int(CarFile, "Mod16");
            CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);

            if(CarInfo[vehicleid][Vetrina] == true)
            {
                new CarStr[30];
                format(CarStr, sizeof(CarStr), "Value: %d $\nDealer: %d", CarInfo[vehicleid][Valore], CarInfo[vehicleid][DealerID]);
                CarInfo[vehicleid][ValoreText] = Create3DTextLabel(CarStr, COLOR_ARANCIONE, CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], 10, 0, 0);
                Attach3DTextLabelToVehicle(CarInfo[vehicleid][ValoreText], CarInfo[vehicleid][PrivCarID], 0, 0, 0);
            }
            if(CarInfo[vehicleid][Locked] == true)
            {
                new engine, lights, alarm, doors, bonnet, boot, objective;
                GetVehicleParamsEx(CarInfo[vehicleid][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
                doors = 1;
                SetVehicleParamsEx(CarInfo[vehicleid][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
            }
               
           
            SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
        }
    }
   
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
}

public OnFilterScriptExit()
{
    for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
    {
        if(CarInfo[vehicleid][PrivCarID] != 0)
        {
            DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
            Delete3DTextLabel(CarInfo[vehicleid][ValoreText]);
        }
    }
    return 1;
}

#else

main()
{
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
}

#endif

public OnPlayerRequestClass(playerid, classid)
{
    return 1;
}

public OnPlayerConnect(playerid)
{
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    return 1;
}

public OnPlayerSpawn(playerid)
{
    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    ModVehicle(vehicleid);
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if(strcmp(cmdtext, "/adddealer", true, 10) == 0)
    {
        new DealerFile[255];
        for(new dealerid = 0; dealerid < MAX_DEALERS; dealerid++)
        {
            format(DealerFile, sizeof(DealerFile), DealFileSave, dealerid);
            if(!dini_Exists(DealerFile))
            {
                new Float: Pos[3], Float: Angle;
                GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
                if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), Angle);
                else GetPlayerFacingAngle(playerid, Angle);

                dini_Create(DealerFile);
                dini_FloatSet(DealerFile, "PosX", Pos[0]);
                dini_FloatSet(DealerFile, "PosY", Pos[1]);
                dini_FloatSet(DealerFile, "PosZ", Pos[2]);
                dini_FloatSet(DealerFile, "PosAng", Angle);
               
                DealerInfo[dealerid][PosX] = dini_Float(DealerFile, "PosX");
                DealerInfo[dealerid][PosY] = dini_Float(DealerFile, "PosY");
                DealerInfo[dealerid][PosZ] = dini_Float(DealerFile, "PosZ");
                DealerInfo[dealerid][PosAng] = dini_Float(DealerFile, "PosAng");
               
                new strDeal[128];
                format(strDeal, sizeof(strDeal), "Hai creato il dealerid %d | PosX: %0.002f | PosY: %0.002f | PosZ: %0.002f | Angolo: %0.002f", dealerid, DealerInfo[dealerid][PosX], DealerInfo[dealerid][PosY], DealerInfo[dealerid][PosZ], DealerInfo[dealerid][PosAng]);
                SendClientMessage(playerid, COLOR_VERDE, strDeal);
               
                dealerid = MAX_DEALERS;
            }
        }
        return 1;
    }
   
    if(strcmp(cmdtext, "/v", true, 6) == 0)
    {
        if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in nessun veicolo");
        new vehicleid = GetPlayerPersonalVehicleID(playerid);
        if(vehicleid == INVALID_PRIVATEVID) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in nessun veicolo privato");
        if(!IsPersonalVehicleOfPlayer(playerid, vehicleid) && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Non sei in un tuo veicolo privato");

        new strVinfo[64];
        format(strVinfo, sizeof(strVinfo), "ID Veicolo: %d", vehicleid);
        ShowPlayerDialog(playerid, DIALOG_VMENU, DIALOG_STYLE_LIST, strVinfo, "Parcheggia\nModifica Targa\nRottama", "Ok", "Esci");
        return 1;
    }
   
    if(strcmp(cmdtext, "/vlock", true, 6) == 0)
    {
        if(GetVehicleIDInRangeOfPlayer(playerid) == INVALID_PRIVATEVID)  return SendClientMessage(playerid, COLOR_ROSSO, "Nessun veicolo nelle vicinanze");
        new vehicleidex = GetVehicleIDInRangeOfPlayer(playerid);
        for(new vehicleid = 0; vehicleid < MAX_VEHICLES; vehicleid++)
        {
            if(vehicleid == CarInfo[vehicleidex][PrivCarID])
            {
                new pName[MAX_PLAYER_NAME];
                GetPlayerName(playerid, pName, sizeof(pName));
                if(CarInfo[vehicleidex][Vetrina] == true && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "Non hai le chiavi di questo veicolo 'Non sei admin e non и di nessuno'");
                else if((strlen(pName) != strlen(CarInfo[vehicleidex][Owner]) || strcmp(CarInfo[vehicleidex][Owner], pName, false, MAX_PLAYER_NAME) != 0) && !IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_VERDE, "Non hai le chiavi di questo veicolo 'Non sei admin ed и di un'altro");
                new engine, lights, alarm, doors, bonnet, boot, objective;
                GetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
                new CarFile[255];
                format(CarFile, sizeof(CarFile), CarFileSave, vehicleidex);
               
                if(doors == 0)
                {
                    dini_BoolSet(CarFile, "Locked", true);
                    doors = 1;
                    SetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
                    GameTextForPlayer(playerid, "~r~Porte Chiuse", 2000, 6);
                }
                else
                {
                    dini_BoolSet(CarFile, "Locked", false);
                    doors = 0;
                    SetVehicleParamsEx(CarInfo[vehicleidex][PrivCarID], engine, lights, alarm, doors, bonnet, boot, objective);
                    GameTextForPlayer(playerid, "~g~Porte Aperte", 2000, 6);
                }
                vehicleidex = MAX_VEHICLES;
                return 1;
            }
        }
        return 1;
    }

    dcmd(addvetrina, 10, cmdtext);
    dcmd(sellv, 5, cmdtext);
    return 0;
}

dcmd_addvetrina(playerid, params[])
{
    if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, COLOR_ROSSO, "Devi essere admin RCon");
    new dealerid, modello[32], color1, color2, valore;
    if(sscanf(params, "ds[32]ddd", dealerid, modello, color1, color2, valore)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Usa: /addvetrina <dealerid> <Modello> <Colore 1> <Colore 2> <Valore>");
    new modelid;
    if(IsNumeric(modello)) modelid = strval(modello);
    else modelid = GetVehicleNameToModel(modello);
    if(modelid < 400 || modelid > 611) return SendClientMessage(playerid, COLOR_ROSSO, "Veicolo ID inesistente");
    new Float: Pos[3], Float: Angle, CarFile[255];
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    GetPlayerFacingAngle(playerid, Angle);
   
    for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
    {
        format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
        if(!dini_Exists(CarFile))
        {
            CarInfo[vehicleid][Esiste] = true;
            dini_Create(CarFile);
            dini_BoolSet(CarFile, "Vetrina", true);
            dini_IntSet(CarFile, "DealerID", dealerid);
            dini_IntSet(CarFile, "Model", modelid);
            dini_FloatSet(CarFile, "PosX", Pos[0]);
            dini_FloatSet(CarFile, "PosY", Pos[1] + 2);
            dini_FloatSet(CarFile, "PosZ", Pos[2]);
            dini_FloatSet(CarFile, "PosAng", Angle);
            dini_IntSet(CarFile, "Color1", color1);
            dini_IntSet(CarFile, "Color2", color2);
            dini_Set(CarFile, "Targa", "Cars for Sale");
            dini_IntSet(CarFile, "Valore", valore);

            CarInfo[vehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
            CarInfo[vehicleid][DealerID] = dini_Int(CarFile, "DealerID");
            CarInfo[vehicleid][Model] = dini_Int(CarFile, "Model");
            CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
            CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
            CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
            CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
            CarInfo[vehicleid][Color1] = dini_Int(CarFile, "Color1");
            CarInfo[vehicleid][Color2] = dini_Int(CarFile, "Color2");
            CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
            CarInfo[vehicleid][Valore] = dini_Int(CarFile, "Valore");
           
            CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);
            SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
           
            new CarStr[30];
            format(CarStr, sizeof(CarStr), "Value: %d $\nDealer: %d", CarInfo[vehicleid][Valore], CarInfo[vehicleid][DealerID]);
            CarInfo[vehicleid][ValoreText] = Create3DTextLabel(CarStr, COLOR_ARANCIONE, CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], 10, 0, 0);
            Attach3DTextLabelToVehicle(CarInfo[vehicleid][ValoreText], CarInfo[vehicleid][PrivCarID], 0, 0, 0);
           
            vehicleid = MAX_PCARS;
        }
    }
    return 1;
}

dcmd_sellv(playerid, params[])
{
    if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, COLOR_ROSSO, "Devi essere in un veicolo");
    new vehicleid = GetPlayerPersonalVehicleID(playerid);
    if(vehicleid == INVALID_PRIVATEVID) return SendClientMessage(playerid, COLOR_ROSSO, "Questo veicolo non и privato!");
    if(!IsPersonalVehicleOfPlayer(playerid, vehicleid)) return SendClientMessage(playerid, COLOR_ROSSO, "Questo veicolo non и di tua proprietа");
    new sellingid;
    if(sscanf(params, "d", sellingid)) return SendClientMessage(playerid, COLOR_ARANCIONE, "Usa: /sellv <playerid>");
    if(sellingid == playerid) return SendClientMessage(playerid, COLOR_ROSSO, "Non puoi dare il veicolo a te stesso");
   
    new CarFile[255], pName1[MAX_PLAYER_NAME], pName2[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName1, sizeof(pName1));
    GetPlayerName(sellingid, pName2, sizeof(pName2));
    format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
   
    dini_Set(CarFile, "Owner", pName2);
   
    CarInfo[vehicleid][Owner] = dini_Get(CarFile, "Owner");
   
    new str[128];
    format(str, sizeof(str), "Hai ceduto il veicolo privato con ID \"%d\" a \"%s\" (ID: %d)", vehicleid, pName2, sellingid);
    SendClientMessage(playerid, COLOR_VERDE, str);
    format(str, sizeof(str), "Hai ricevuto il veicolo privato con ID \"%d\" da \"%s\" (ID: %d)", vehicleid, pName1, playerid);
    SendClientMessage(sellingid, COLOR_VERDE, str);
    return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
    return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
    return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
    if(newstate == PLAYER_STATE_DRIVER)
    {
        new PlayerCar = GetPlayerVehicleID(playerid);
        for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
        {
            if(PlayerCar == CarInfo[vehicleid][PrivCarID] && CarInfo[vehicleid][Vetrina] == true)
            {
                new str[128];
                format(str, sizeof(str), "Questo veicolo и in vendita dal concessionario, vuoi comprarlo?\nCosto: %d $", CarInfo[vehicleid][Valore]);
                ShowPlayerDialog(playerid, DIALOG_BUYCAR, DIALOG_STYLE_MSGBOX, "Concessionario", str, "Si", "No");
            }
        }
    }
    return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
    return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
    return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
    return 1;
}

public OnRconCommand(cmd[])
{
    return 1;
}

public OnPlayerRequestSpawn(playerid)
{
    return 1;
}

public OnObjectMoved(objectid)
{
    return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
    return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
    return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
    for(new vid = 0; vid < MAX_PCARS; vid++)
    {
        if(vehicleid == CarInfo[vid][PrivCarID])
        {
            new CarFile[255];
            format(CarFile, sizeof(CarFile), CarFileSave, vid);
            dini_IntSet(CarFile, "Color1", color1);
            dini_IntSet(CarFile, "Color2", color2);
           
            CarInfo[vid][Color1] = dini_Int(CarFile, "Color1");
            CarInfo[vid][Color2] = dini_Int(CarFile, "Color2");
        }
    }
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    return 1;
}

public OnPlayerExitedMenu(playerid)
{
    return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
    return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
    return 1;
}

public OnPlayerUpdate(playerid)
{
    return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
    return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
    return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
    return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_BUYCAR)
    {
        if(response)
        {
            new CarFile[255], pName[MAX_PLAYER_NAME], PlayerCar = GetPlayerVehicleID(playerid);
            GetPlayerName(playerid, pName, sizeof(pName));
           
            for(new vehicleid = 0; vehicleid < MAX_PCARS; vehicleid++)
            {
                if(CarInfo[vehicleid][PrivCarID] == PlayerCar)
                {
                    if(GetPlayerMoney(playerid) < CarInfo[vehicleid][Valore])
                    {
                        RemovePlayerFromVehicle(playerid);
                        return SendClientMessage(playerid, COLOR_ROSSO, "Non puoi permetterti questo veicolo con i soldi che hai in mano");
                    }
                   

                    for(new myvehicleid = 0; myvehicleid < MAX_PCARS; myvehicleid++)
                    {
                        format(CarFile, sizeof(CarFile), CarFileSave, myvehicleid);
                        if(!dini_Exists(CarFile))
                        {
                            GivePlayerMoney(playerid, - CarInfo[vehicleid][Valore]);
                           
                            dini_Create(CarFile);
                           
                            CarInfo[vehicleid][Esiste] = true;
                           
                            dini_BoolSet(CarFile, "Vetrina", false);
                            dini_Set(CarFile, "Owner", pName);
                            dini_IntSet(CarFile, "Model", GetVehicleModel(PlayerCar));
                            dini_FloatSet(CarFile, "PosX", DealerInfo[CarInfo[vehicleid][DealerID]][PosX]);
                            dini_FloatSet(CarFile, "PosY", DealerInfo[CarInfo[vehicleid][DealerID]][PosY]);
                            dini_FloatSet(CarFile, "PosZ", DealerInfo[CarInfo[vehicleid][DealerID]][PosZ]);
                            dini_FloatSet(CarFile, "PosAng", DealerInfo[CarInfo[vehicleid][DealerID]][PosAng]);
                            dini_IntSet(CarFile, "Color1", CarInfo[vehicleid][Color1]);
                            dini_IntSet(CarFile, "Color2", CarInfo[vehicleid][Color2]);
                            dini_Set(CarFile, "Targa", "Car Bought");
                            dini_IntSet(CarFile, "Valore", CarInfo[vehicleid][Valore] / 2);

                            CarInfo[myvehicleid][Vetrina] = dini_Bool(CarFile, "Vetrina");
                            CarInfo[myvehicleid][DealerID] = dini_Int(CarFile, "DealerID");
                            CarInfo[myvehicleid][Owner] = dini_Int(CarFile, "Owner");
                            CarInfo[myvehicleid][Model] = dini_Int(CarFile, "Model");
                            CarInfo[myvehicleid][PosX] = dini_Float(CarFile, "PosX");
                            CarInfo[myvehicleid][PosY] = dini_Float(CarFile, "PosY");
                            CarInfo[myvehicleid][PosZ] = dini_Float(CarFile, "PosZ");
                            CarInfo[myvehicleid][PosAng] = dini_Float(CarFile, "PosAng");
                            CarInfo[myvehicleid][Color1] = dini_Int(CarFile, "Color1");
                            CarInfo[myvehicleid][Color2] = dini_Int(CarFile, "Color2");
                            CarInfo[myvehicleid][Targa] = dini_Get(CarFile, "Targa");
                            CarInfo[myvehicleid][Valore] = dini_Int(CarFile, "Valore");

                            CarInfo[myvehicleid][PrivCarID] = CreateVehicle(CarInfo[myvehicleid][Model], CarInfo[myvehicleid][PosX], CarInfo[myvehicleid][PosY], CarInfo[myvehicleid][PosZ], CarInfo[myvehicleid][PosAng], CarInfo[myvehicleid][Color1], CarInfo[myvehicleid][Color2], -1);
                            SetVehicleNumberPlate(CarInfo[myvehicleid][PrivCarID], CarInfo[myvehicleid][Targa]);
                           
                            PutPlayerInVehicle(playerid, CarInfo[myvehicleid][PrivCarID], 0);

                            vehicleid = MAX_PCARS;
                            myvehicleid = MAX_PCARS;
                        }
                    }
                }
            }
        }
        else if(!IsPlayerAdmin(playerid)) RemovePlayerFromVehicle(playerid);
        return 1;
    }
    if(dialogid == DIALOG_VMENU && response)
    {
        switch(listitem)
        {
            case 0:
            {
                new CarFile[255], Float: vPos[3], Float: vFace, vehicleid = GetPlayerPersonalVehicleID(playerid);
                if(!IsPersonalVehicleOfPlayer(playerid, vehicleid)) return SendClientMessage(playerid, COLOR_ROSSO, "Questo non и un tuo veicolo!");

                format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
                GetVehiclePos(CarInfo[vehicleid][PrivCarID], vPos[0], vPos[1], vPos[2]);
                GetVehicleZAngle(CarInfo[vehicleid][PrivCarID], vFace);
                dini_FloatSet(CarFile, "PosX", vPos[0]);
                dini_FloatSet(CarFile, "PosY", vPos[1]);
                dini_FloatSet(CarFile, "PosZ", vPos[2]);
                dini_FloatSet(CarFile, "PosAng", vFace);

                CarInfo[vehicleid][PosX] = dini_Float(CarFile, "PosX");
                CarInfo[vehicleid][PosY] = dini_Float(CarFile, "PosY");
                CarInfo[vehicleid][PosZ] = dini_Float(CarFile, "PosZ");
                CarInfo[vehicleid][PosAng] = dini_Float(CarFile, "PosAng");
               
                DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
                new componentid = -1, MSG[128];
               
                for(new slotid = 0; slotid < MAX_COMPONENT_SLOTS; slotid++)
                {
                    componentid = GetVehicleComponentInSlot(vehicleid, slotid);
                    format(MSG, sizeof(MSG), "Componente dell'auto in salvataggio (Componentid: %d)", componentid);
                    SendClientMessage(playerid, COLOR_VERDE, MSG);
                    SaveComponent(vehicleid, slotid, componentid);
                    format(MSG, sizeof(MSG), "Componente dell'auto salvato (Componentid: %d)", componentid);
                    SendClientMessage(playerid, COLOR_VERDE, MSG);
                }
                CarInfo[vehicleid][PrivCarID] = CreateVehicle(CarInfo[vehicleid][Model], CarInfo[vehicleid][PosX], CarInfo[vehicleid][PosY], CarInfo[vehicleid][PosZ], CarInfo[vehicleid][PosAng], CarInfo[vehicleid][Color1], CarInfo[vehicleid][Color2], -1);
                ModVehicle(CarInfo[vehicleid][PrivCarID]);
                SendClientMessage(playerid, COLOR_VERDE, "Auto parcheggiata");
            }
            case 1: ShowPlayerDialog(playerid, DIALOG_VPLATE, DIALOG_STYLE_INPUT, "Modifica Targa", "Inserisci la targa per il veicolo", "Ok", "Annulla");
            case 2:
            {
                new CarFile[255], vehicleid = GetPlayerPersonalVehicleID(playerid);
                format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
                if(CarInfo[vehicleid][Esiste] == true)
                {
                    dini_Remove(CarFile);
                   
                    if(CarInfo[vehicleid][Vetrina] == false) GivePlayerMoney(playerid, CarInfo[vehicleid][Valore]);
                   
                    CarInfo[vehicleid][Esiste] = false;

                    DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
                   
                    CarInfo[vehicleid][Vetrina] = false;
                    CarInfo[vehicleid][DealerID] = -1;
                    CarInfo[vehicleid][Owner] = 0;
                    CarInfo[vehicleid][Model] = -1;
                    CarInfo[vehicleid][PosX] = 0.0;
                    CarInfo[vehicleid][PosY] = 0.0;
                    CarInfo[vehicleid][PosZ] = 0.0;
                    CarInfo[vehicleid][PosAng] = 0.0;
                    CarInfo[vehicleid][Color1] = -1;
                    CarInfo[vehicleid][Color2] = -1;
                    CarInfo[vehicleid][Targa] = 0;
                    CarInfo[vehicleid][Valore] = 0;
                    CarInfo[vehicleid][Locked] = false;
                   
                    SendClientMessage(playerid, COLOR_VERDE, "Veicolo privato distrutto");
                }
            }
        }
        return 1;
    }
    if(dialogid == DIALOG_VPLATE && response)
    {
        new CarFile[255], vehicleid = GetPlayerPersonalVehicleID(playerid);
        format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
        dini_Set(CarFile, "Targa", inputtext);
        CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
       
        SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
        SetVehicleToRespawn(CarInfo[vehicleid][PrivCarID]);
       
        new str[128];
        format(str, sizeof(str), "Targa del veicolo modificata, targa attuale: %s", CarInfo[vehicleid][Targa]);
        SendClientMessage(playerid, COLOR_VERDE, str);
        return 1;
    }
    return 0;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

forward SetPersonalVehiclePlate(vehicleid, plate[]);
public SetPersonalVehiclePlate(vehicleid, plate[])
{
    new CarFile[255];
    format(CarFile, sizeof(CarFile), CarFileSave, vehicleid);
    dini_Set(CarFile, "Targa", plate);
   
    CarInfo[vehicleid][Targa] = dini_Get(CarFile, "Targa");
   
    SetVehicleNumberPlate(CarInfo[vehicleid][PrivCarID], CarInfo[vehicleid][Targa]);
}

stock GetVehicleIDInRangeOfPlayer(playerid)
{
    new vehicleid = INVALID_PRIVATEVID, Float: Pos[3];
    for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++)
    {
        GetVehiclePos(CarInfo[vehicleidex][PrivCarID], Pos[0], Pos[1], Pos[2]);
        if(IsPlayerInRangeOfPoint(playerid, 2.25, Pos[0], Pos[1], Pos[2]))
        {
            vehicleid = vehicleidex;
            vehicleidex = MAX_VEHICLES;
        }
    }
    return vehicleid;
}

stock IsPersonalVehicle(vehicleid)
{
    new bool: PersonalV;
    for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++) if(CarInfo[vehicleidex][PrivCarID] == vehicleid) PersonalV = true;
    return PersonalV;
}

stock GetPlayerPersonalVehicleID(playerid)
{
    new vehicleid = INVALID_PRIVATEVID;
    new myvehicleid = GetPlayerVehicleID(playerid);
    if(IsPersonalVehicle(myvehicleid))
    {
        for(new vehicleidex = 0; vehicleidex < MAX_PCARS; vehicleidex++)
        {
            if(CarInfo[vehicleidex][PrivCarID] == myvehicleid) vehicleid = vehicleidex;
        }
    }
    return vehicleid;
}

stock IsPersonalVehicleOfPlayer(playerid, vehicleid)
{
    new bool: PlayerVehicle, pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    if(strcmp(pName, CarInfo[vehicleid][Owner], false, strlen(CarInfo[vehicleid][Owner])) == 0) PlayerVehicle = true;
    return PlayerVehicle;
}

stock GetVehicleNameToModel(vname[])
{
    new vehiclemodel = -1;
    for(new i = 0; i < 211; i++)
    {
        if(strfind(VehicleNames[i], vname, true) != -1)
        vehiclemodel = i + 400;
    }
    return vehiclemodel;
}

stock IsNumeric(string[])
{
    for (new i = 0, j = strlen(string); i < j; i++)
    {
        if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
}
I used the function in the lines 799 ---> 807
pawn Код:
for(new slotid = 0; slotid < MAX_COMPONENT_SLOTS; slotid++)
                {
                    componentid = GetVehicleComponentInSlot(vehicleid, slotid);
                    format(MSG, sizeof(MSG), "Componente dell'auto in salvataggio (Componentid: %d)", componentid);
                    SendClientMessage(playerid, COLOR_VERDE, MSG);
                    SaveComponent(vehicleid, slotid, componentid);
                    format(MSG, sizeof(MSG), "Componente dell'auto salvato (Componentid: %d)", componentid);
                    SendClientMessage(playerid, COLOR_VERDE, MSG);
                }
Reply
#2

vehicleid is a slot not a real vehicleid

pawn Код:
DestroyVehicle(CarInfo[vehicleid][PrivCarID]);
is called before GetVehicleComponentInSlot

pawn Код:
componentid = GetVehicleComponentInSlot(vehicleid, slotid);
vehicleid (its slotid not vehicleid) doesn't exist
Reply
#3

Oh my god, very stupid error :') thank you for help me ^-^
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)