SA-MP Forums Archive
Vehicle duplication issue. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: Vehicle duplication issue. (/showthread.php?tid=620139)



Vehicle duplication issue. - Dokins - 26.10.2016

WHEN THEY LOGIN.
pawn Код:
if(PlayerSQLID[playerid] != 1)
        {
            format(string, sizeof(string), "SELECT * FROM vehicles WHERE VehOwner = %d", PlayerSQLID[playerid]);
            mysql_tquery(dbHandle, string, "LoadPlayerVehicles", "");
        }
WHEN THEY LOGIN.
pawn Код:
forward LoadPlayerVehicles();
public LoadPlayerVehicles()
{
    new rows, fields, string[128];
    cache_get_data(rows, fields);
    printf("Rows %d", rows); // if the rows are more than the size of the variable, reset the rows to match (to avoid run time error 4)
    for(new y; y < rows; y++)
    {
        new vehicleid = CreateVehicle(411, 0.0, 0.0, 0.0, 0.0, 0, 0 ,-1, 0);
        DestroyVehicle(vehicleid);
        VehicleSQLID[vehicleid] = cache_get_row_int(y, vvid);
        VehModel[vehicleid] =  cache_get_row_int(y, vVehModel);
        VehColour1[vehicleid] = cache_get_row_int(y, vVehColour1);
        VehColour2[vehicleid] = cache_get_row_int(y, vVehColour2);
        VehSpawnX[vehicleid] = cache_get_row_float(y, vVehSpawnX);
        VehSpawnY[vehicleid] = cache_get_row_float(y, vVehSpawnY);
        VehSpawnZ[vehicleid] = cache_get_row_float(y, vVehSpawnZ);
        VehSpawnAngle[vehicleid] = cache_get_row_float(y, vVehSpawnAngle);
        VehSiren[vehicleid] = cache_get_row_int(y, vVehSiren);
        VehOwner[vehicleid] = cache_get_row_int(y, vVehOwner);
        VehFuel[vehicleid] = cache_get_row_int(y, vVehFuel);
        VehCash[vehicleid] = cache_get_row_int(y,vVehCash);
        VehWeed[vehicleid] = cache_get_row_int(y, vVehWeed);
        VehCoke[vehicleid] = cache_get_row_int(y, vVehCoke);
        VehLock[vehicleid] = cache_get_row_int(y, vVehLock);
        VehAlarm[vehicleid] = cache_get_row_int(y, vVehAlarm);
        VehOwned[vehicleid] = cache_get_row_int(y, vVehOwned);
        VehArmour[vehicleid] = cache_get_row_float(y, vVehArmour);
        VehBizID[vehicleid] = cache_get_row_int(y, vVehBizID);
        VehForSale[vehicleid] = cache_get_row_int(y, vVehForSale);
        VehPrice[vehicleid] = cache_get_row_int(y, vVehPrice);
        VehWepSlots[vehicleid] = cache_get_row_int(y, vVehWepSlots);
        VehFType[vehicleid] = cache_get_row_int(y, vVehFType);
        VehSpark[vehicleid] = cache_get_row_int(y, vVehSpark);
        VehWater[vehicleid] = cache_get_row_int(y, vVehWater);
        VehGear[vehicleid] = cache_get_row_int(y, vVehGear);
        VehElec[vehicleid] = cache_get_row_int(y, vVehElec);
        VehOil[vehicleid] = cache_get_row_int(y, vVehOil);
        VehExhaust[vehicleid] = cache_get_row_int(y, vVehExhaust);
        VehFLine[vehicleid] = cache_get_row_int(y, vVehFLine);
        VehRadi[vehicleid] = cache_get_row_int(y, vVehRadi);
        VehBattery[vehicleid] = cache_get_row_int(y, vVehBattery);
        VehFSize[vehicleid] = cache_get_row_int(y, vVehFSize);
        VehTyres[vehicleid] = cache_get_row_int(y, vVehTyres);
        VehFUsed[vehicleid] = cache_get_row_int(y, vVehFUsed);
        VehVMarker[vehicleid] = cache_get_row_int(y, vVehVMarker);
        VehFMarker[vehicleid] = cache_get_row_int(y, vVehFMarker);
        VehNMarker[vehicleid] = cache_get_row_int(y, vVehNMarker);
        VehHealth[vehicleid] = cache_get_row_float(y, vVehHealth);
        SetVehicleHealth(vehicleid, VehHealth[vehicleid]);
        VehPanels[vehicleid] = cache_get_row_int(y, vVehPanels);
        VehDoors[vehicleid] = cache_get_row_int(y, vVehDoors);
        VehLights[vehicleid] = cache_get_row_int(y, vVehLights);
        VehFSlots[vehicleid] = cache_get_row_int(y, vVehFSlots);
        VehPCP[vehicleid] = cache_get_row_int(y, vVehPCP);
        VehLSD[vehicleid] = cache_get_row_int(y, vVehLSD);
        VehSteroids[vehicleid] = cache_get_row_int(y, vVehSteroids);
        VehHeroin[vehicleid] = cache_get_row_int(y, vVehHeroin);
        RepairTime[vehicleid] = cache_get_row_int(y, vRepairTime);
        VehExported[vehicleid] = cache_get_row_int(y, vVehExported);
        ImpoundTime[vehicleid] = cache_get_row_int(y, vImpoundTime);
        VehModSlot[vehicleid][0] = cache_get_row_int(y, vVehModSlot0);
        VehModSlot[vehicleid][1] = cache_get_row_int(y, vVehModSlot1);
        VehModSlot[vehicleid][2] = cache_get_row_int(y, vVehModSlot2);
        VehModSlot[vehicleid][3] = cache_get_row_int(y, vVehModSlot3);
        VehModSlot[vehicleid][4] = cache_get_row_int(y, vVehModSlot4);
        VehModSlot[vehicleid][5] = cache_get_row_int(y, vVehModSlot5);
        VehModSlot[vehicleid][6] = cache_get_row_int(y, vVehModSlot6);
        VehModSlot[vehicleid][7] = cache_get_row_int(y, vVehModSlot7);
        VehModSlot[vehicleid][8] = cache_get_row_int(y, vVehModSlot8);
        VehModSlot[vehicleid][9] = cache_get_row_int(y, vVehModSlot9);
        VehModSlot[vehicleid][10] = cache_get_row_int(y, vVehModSlot10);
        VehModSlot[vehicleid][11] = cache_get_row_int(y, vVehModSlot11);
        VehModSlot[vehicleid][12] = cache_get_row_int(y, vVehModSlot12);
        VehModSlot[vehicleid][13] = cache_get_row_int(y, vVehModSlot13);
        cache_get_row(y, vVehPlate, VehPlate[vehicleid]);
        VRecList[vehicleid] = -1;
        VehicleHits[vehicleid] = 0;
        VRecList[vehicleid] = -1;
        CreateVehicle(VehModel[vehicleid], VehSpawnX[vehicleid], VehSpawnY[vehicleid], VehSpawnZ[vehicleid], VehSpawnAngle[vehicleid], VehColour1[vehicleid], VehColour2[vehicleid], 0, VehSiren[vehicleid]);
        SetVehicleNumberPlate(vehicleid, VehPlate[vehicleid]);
        DestroyDynamic3DTextLabel(VehicleLabel[vehicleid]);
        SetVehicleVirtualWorld(vehicleid, 0);
       
        if(ImpoundTime[vehicleid] > 0 && VehOwner[vehicleid] != 1)
        {
            SetVehicleVirtualWorld(vehicleid, vehicleid);
        }
        for(new m = 0; m < 14; m++)
        {
            if(VehModSlot[vehicleid][m] > 0)
            {
                printf("m %d", m);
                AddVehicleComponent(vehicleid, VehModSlot[vehicleid][m]);
            }
        }
        if(VehOwner[vehicleid] > 0 || VehicleFaction[vehicleid] > 0)
        {
            SetVehicleParamsEx(vehicleid, 0, 0, 0, 1, 0, 0, 0);
            SetVehicleParamsCarDoors(vehicleid, 0,0,0,0);
            SetVehicleParamsCarWindows(vehicleid, 1,1, 1, 1);
        }
        if(VehOwner[vehicleid] > 0)
        {
            UpdateVehicleDamageStatus(vehicleid, VehPanels[vehicleid], VehDoors[vehicleid], VehLights[vehicleid], VehTyres[vehicleid]);
        }
        /*
        if(VehOwner[vehicleid] > 0)
        {
            SetVehicleVirtualWorld(vehicleid, vehicleid);
            UpdateVehicleDamageStatus(vehicleid, VehPanels[vehicleid], VehDoors[vehicleid], VehLights[vehicleid], VehTyres[vehicleid]);
        }
        */

        if(VehForSale[vehicleid] == 1)
        {
            new name = VehModel[vehicleid] - 400;
            format(string, sizeof(string), "%s, $%s, %s", VehicleNames[name], AddCommas(VehPrice[vehicleid]), VehPlate[vehicleid]);
            VehicleLabel[vehicleid] = CreateDynamic3DTextLabel(string, COLOUR_ORANGE, VehSpawnX[vehicleid],VehSpawnY[vehicleid], VehSpawnZ[vehicleid], 100.0, INVALID_PLAYER_ID, vehicleid, 0, 0, -1, -1, 20.0);
            Attach3DTextLabelToVehicle(VehicleLabel[vehicleid] ,vehicleid,0.0,0.0,0.0);
        }
        //LoadVehicleData(vehicleid, x);
    }
    return 1;
}
OnPlayerDisconnect
pawn Код:
RemovePlayerVehicles(playerid)
{
    for(new x; x < GetVehiclePoolSize() + 1; x++)
    {
        if(VehOwner[x] != 1 && VehOwner[x] > 0 && VehOwner[x] == PlayerSQLID[playerid])
        {
            DestroyVehicle(x);
            ClearVehicleID(x);
        }
    }
    return 1;
}
For some reason this sometimes creates a duplicate vehicle, but only one of them has the stats loaded into it i.e they can only /engine 1 vehicle.


Re: Vehicle duplication issue. - Dokins - 26.10.2016

DELETE. Found the cause, I had something under OnVehicleDeath.