SA-MP Forums Archive
Searching an array - 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: Searching an array (/showthread.php?tid=428887)



Searching an array - liam1412 - 07.04.2013

When a player joins it loads all their vehicles, and passes the data into the vehicle info array. When the player despawns I want to remove all vehicles belonging to that player.

What is the way to do this. Is it possible to search an array

The vehicle is identified as belonging to the owner with this row.

vInfo[vehicleid][vOwnerId] = playerid (set into the vInfo array /enum


Is there anyway to search the array for all rows that contain that owner id, and if not how would I go about despawning all the owners vehicles when he leaves

Thanks


Re: Searching an array - park4bmx - 07.04.2013

how do you create the vehicle in first place ?
(just need u to confirm something)


Re: Searching an array - liam1412 - 07.04.2013

It is pulled from a database with this command.

pawn Код:
public loadPlayerVehicles(playerid){

    new rows, fields, tmp[50];
    new tmpvInternalId,tmpvModelId, tmpvColor1, tmpvColor2;
    new Float:tmpvSpawnX,Float:tmpvSpawnY,Float:tmpvSpawnZ,Float:tmpvSpawnA, tmpvOwnerId,Float:tmpvHealth;
    new tmpvFuelLevel, tmpvPanelDamage, tmpvDoorsDamage, tmpvLightsDamage, tmpvTyreDamage,tmpvMod1,tmpvMod2,tmpvMod3,tmpvMod4,tmpvMod5;
    new tmpvMod6,tmpvMod7,tmpvMod8,tmpvMod9,tmpvMod10,tmpvMod11,tmpvMod12,tmpvMod13,tmpvMod14,tmpvMod15,tmpvMod16,tmpvMod17, tmpvPaintJob,i, vId, carCount, fCarCount[20];

    cache_get_data(rows, fields);

    while(i < rows) {

        // Collect data from database
        cache_get_row(i, 0, tmp);
        tmpvInternalId = strval(tmp);

        cache_get_row(i, 1, tmp);
        tmpvModelId = strval(tmp);

        cache_get_row(i, 2, tmp);
        tmpvColor1 = strval(tmp);

        cache_get_row(i, 3, tmp);
        tmpvColor2 = strval(tmp);

        cache_get_row(i, 4, tmp);
        tmpvSpawnX = floatstr(tmp);

        cache_get_row(i, 5, tmp);
        tmpvSpawnY = floatstr(tmp);

        cache_get_row(i, 6, tmp);
        tmpvSpawnZ = floatstr(tmp);

        cache_get_row(i, 7, tmp);
        tmpvSpawnA = floatstr(tmp);

        cache_get_row(i, 8, tmp);
        tmpvOwnerId = strval(tmp);

        cache_get_row(i, 9, tmp);
        tmpvHealth = floatstr(tmp);

        cache_get_row(i, 10, tmp);
        tmpvFuelLevel = strval(tmp);

        cache_get_row(i, 11, tmp);
        tmpvPanelDamage = strval(tmp);

        cache_get_row(i, 12, tmp);
        tmpvDoorsDamage = strval(tmp);

        cache_get_row(i, 13, tmp);
        tmpvLightsDamage = strval(tmp);

        cache_get_row(i, 14, tmp);
        tmpvTyreDamage = strval(tmp);

        cache_get_row(i, 15, tmp);
        tmpvMod1 = strval(tmp);

        cache_get_row(i, 16, tmp);
        tmpvMod2 = strval(tmp);

        cache_get_row(i, 17, tmp);
        tmpvMod3 = strval(tmp);

        cache_get_row(i, 18, tmp);
        tmpvMod4 = strval(tmp);

        cache_get_row(i, 19, tmp);
        tmpvMod5 = strval(tmp);

        cache_get_row(i, 20, tmp);
        tmpvMod6 = strval(tmp);

        cache_get_row(i, 21, tmp);
        tmpvMod7 = strval(tmp);

        cache_get_row(i, 22, tmp);
        tmpvMod8 = strval(tmp);

        cache_get_row(i, 23, tmp);
        tmpvMod9 = strval(tmp);

        cache_get_row(i, 24, tmp);
        tmpvMod10 = strval(tmp);

        cache_get_row(i, 25, tmp);
        tmpvMod11 = strval(tmp);

        cache_get_row(i, 26, tmp);
        tmpvMod12 = strval(tmp);

        cache_get_row(i, 27, tmp);
        tmpvMod13 = strval(tmp);

        cache_get_row(i, 28, tmp);
        tmpvMod14 = strval(tmp);

        cache_get_row(i, 29, tmp);
        tmpvMod15 = strval(tmp);

        cache_get_row(i, 30, tmp);
        tmpvMod16 = strval(tmp);

        cache_get_row(i, 31, tmp);
        tmpvMod17 = strval(tmp);

        cache_get_row(i, 32, tmp);
        tmpvPaintJob = strval(tmp);

        //spawn the vehicle
        vId = CreateVehicle(tmpvModelId,tmpvSpawnX,tmpvSpawnY,tmpvSpawnZ,tmpvSpawnA,tmpvColor1,tmpvColor2,3600);
       
        //update vehicle damage
        UpdateVehicleDamageStatus(vId,tmpvPanelDamage,tmpvDoorsDamage,tmpvLightsDamage,tmpvTyreDamage);
       
        //add mods to be added later
       
        //set everything into the enum
        playerVehicles[vId][vInternalId] = tmpvInternalId;
        playerVehicles[vId][vModelId] = tmpvModelId;
        playerVehicles[vId][vColor1] = tmpvColor1;
        playerVehicles[vId][vColor2] = tmpvColor2;
        playerVehicles[vId][vSpawnX] = tmpvSpawnX;
        playerVehicles[vId][vSpawnY] = tmpvSpawnY;
        playerVehicles[vId][vSpawnZ] = tmpvSpawnZ;
        playerVehicles[vId][vSpawnA] = tmpvSpawnA;
        playerVehicles[vId][vOwnerId] = tmpvOwnerId;
        playerVehicles[vId][vHealth] = tmpvHealth;
        playerVehicles[vId][vFuelLevel] = tmpvFuelLevel;
        playerVehicles[vId][vPanelDamage] = tmpvPanelDamage;
        playerVehicles[vId][vDoorsDamage] = tmpvDoorsDamage;
        playerVehicles[vId][vLightsDamage] = tmpvLightsDamage;
        playerVehicles[vId][vTyreDamage] = tmpvTyreDamage;
        playerVehicles[vId][vMod1] = tmpvMod1;
        playerVehicles[vId][vMod2] = tmpvMod2;
        playerVehicles[vId][vMod3] = tmpvMod3;
        playerVehicles[vId][vMod4] = tmpvMod4;
        playerVehicles[vId][vMod5] = tmpvMod5;
        playerVehicles[vId][vMod6] = tmpvMod6;
        playerVehicles[vId][vMod7] = tmpvMod7;
        playerVehicles[vId][vMod8] = tmpvMod8;
        playerVehicles[vId][vMod9] = tmpvMod9;
        playerVehicles[vId][vMod10] = tmpvMod10;
        playerVehicles[vId][vMod11] = tmpvMod11;
        playerVehicles[vId][vMod12] = tmpvMod12;
        playerVehicles[vId][vMod13] = tmpvMod13;
        playerVehicles[vId][vMod14] = tmpvMod14;
        playerVehicles[vId][vMod15] = tmpvMod15;
        playerVehicles[vId][vMod16] = tmpvMod16;
        playerVehicles[vId][vMod17] = tmpvMod17;
        playerVehicles[vId][vPaintJob] = tmpvPaintJob;
       
        i++;
       
    }
   
    carCount = i++;
   
    format(fCarCount,sizeof(fCarCount),"%i Vehicles Spawned",carCount);
    SendClientMessage(playerid, COLOR_BRIGHTRED, fCarCount);
    return 1;
}
This is the callback function from the dbquery, which is called in OnPlayerSpawn();


Re: Searching an array - park4bmx - 07.04.2013

when ever the player leaves
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
     for(new i=0; i <MAX_VEHICLES; i++)
     {
          if(vInfo[i][vOwnerId] == playerid) return DestroyVehicle(i);
     }
}
Something like that.


Re: Searching an array - liam1412 - 07.04.2013

Quote:
Originally Posted by park4bmx
Посмотреть сообщение
when ever the player leaves
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
     for(new i=0; i <MAX_VEHICLES; i++)
     {
          if(vInfo[i][vOwnerId] == playerid) return DestroyVehicle(i);
     }
}
Something like that.
Works a treat. Thank you kindly!