SA-MP Forums Archive
[Tutorial] Como guardar los componentes de un vehнculo. - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+----- Forum: Lanzamientos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=59)
+----- Thread: [Tutorial] Como guardar los componentes de un vehнculo. (/showthread.php?tid=365377)



Como guardar los componentes de un vehнculo. - Bu11Sh0t - 02.08.2012

Pues bueno, he visto que muchas personas no saben como guardar los componentes, asi que decidi hacer este pequeсo tutorial. Para esto usaremos Dini por DracoBlue

Empezamos:

Guardando

Para guardar el componente utilizaremos la funciуn GetVehicleComponentInSlot. Si quieres conocer mas esta funciуn esta la Wiki: https://sampwiki.blast.hk/wiki/GetVehicleComponentInSlot

pawn Код:
stock GuardarVehiculo(vehiculo)
{
    new Componente, file[50], ss[20];
    format(file, sizeof(file), "vehiculos/%d.ini", vehiculo);
    if(!dini_Exists(file)) dini_Create(file);
    for(new com = 0; com < 13; com++)
    {
        Componente = GetVehicleComponentInSlot(vehiculo, com);
        format(ss, sizeof(ss), "componente%d", com);
        dini_IntSet(file, ss, Componente);
    }
}
La explicaciуn:
pawn Код:
new Componente[13], file[50], ss[20];
Definimos las variables antes de el Loop para que no se creen esas mismas variables las veces que se ejecute el loop.
pawn Код:
format(file, sizeof(file), "vehiculos/%d.ini", vehiculo);
Aqui esto se modifica si quieren que se guarde en otro sitio
pawn Код:
for(new com = 0; com < 13; com++)
Abrimos el loop 13 veces, que son los slots de componentes. Mas info: Component slots
pawn Код:
Componente = GetVehicleComponentInSlot(vehiculo, com);
Definimos el Componente con el ID del componente que vamos a guardar
pawn Код:
format(ss, sizeof(ss), "componente%d", com);
Esto se va a guardar de forma:
Код:
componente1 = algo
componente2 = algo
componente3 = algo
De esta forma si tiene ocupados los 13 slots, se guardaran cada uno en los en su respectivo slot.
pawn Код:
dini_IntSet(file, ss, Componente);
Y por ultimo guardamos los datos.

Cargando
Para esto usaremos AddVehicleComponent. Mas info: https://sampwiki.blast.hk/wiki/AddVehicleComponent

pawn Код:
stock CargarVehiculo(vehiculo)
{
    new Componente, file[50], ss[20];
    format(file, sizeof(file), "vehiculos/%d.ini", vehiculo);
    if(!dini_Exists(vehiculo)) return 1;
    for(new com = 0; com < 13; com++)
    {
        format(ss, sizeof(ss), "componente%d", com);
        Componente = dini_Int(file, ss);
        if(Componente > 1000 && Componente < 1193)
        {
            AddVehicleComponent(vehiculo, Componente);
        }
    }
}
La explicaciуn:
pawn Код:
format(ss, sizeof(ss), "componente%d", com);
Componente = dini_Int(file, ss);
Cargamos los componentes con el tipico
Код:
componente1 = algo
componente2 = algo
componente3 = algo
Y lo guarda en la variable Componente
pawn Код:
if(Componente > 1000 && Componente < 1193)
{
    AddVehicleComponent(vehiculo, Componente);
}
Con esto solo le pondra el componente si esta entre 1000 (mil) y 1193 (mil ciento noventa y tres) que son los componentes validos. Mas informaciуn: Car Component ID

Y con esto, solo deberiamos usar las funciones:
pawn Код:
GuardarVehiculo(id del vehiculo)//para guardarlo, en OnGameModeExit talvez
CargarVehiculo(id del vehiculo)//para cargarlo, en OnGameModeInit talvez
Este es mi primer tutorial y se aceptan criticas, regaсos, tips o lo que sea para mejorar.


Respuesta: Como guardar los componentes de un vehнculo. - Shiny_David - 03.08.2012

me gusto pero solo guardaria un componente noї y si es asi mejor lo podras hacer para todos los componentes y poner un FS de prueba buen tuto!


Respuesta: Como guardar los componentes de un vehнculo. - Bu11Sh0t - 03.08.2012

Quote:
Originally Posted by Shiny_David
Посмотреть сообщение
me gusto pero solo guardaria un componente noї y si es asi mejor lo podras hacer para todos los componentes y poner un FS de prueba buen tuto!
En realidad se guardan todos los componentes, por eso el loop de 13 (que es el maximo de slots en un carro)
Y gracias!


Respuesta: Como guardar los componentes de un vehнculo. - Shiny_David - 03.08.2012

es verdad no lo vi perdon XD buen tuto saludos y deberias hacer un FS de ejemplo


Respuesta: Como guardar los componentes de un vehнculo. - Jovanny - 03.08.2012

Lo mejor serнa ver si el vehiculo tiene componentes o no para evitar la creacion de archivos sin dato alguno


Respuesta: Como guardar los componentes de un vehнculo. - Bu11Sh0t - 03.08.2012

Quote:
Originally Posted by Jovanny
Посмотреть сообщение
Lo mejor serнa ver si el vehiculo tiene componentes o no para evitar la creacion de archivos sin dato alguno
Pues si, pero eso depende de cada usuario. Con la funciуn solo se guarda el vehнculo que se indico.


Respuesta: Como guardar los componentes de un vehнculo. - GhOzT - 05.08.2012

Como las defino en OnGameModeExit y OnGameModeInit?

Esque le doy GuardarVehiculo(v) y me da error

undefined symbol "v"


Respuesta: Como guardar los componentes de un vehнculo. - OTACON - 05.08.2012

Quote:
Originally Posted by GhOzT
Посмотреть сообщение
Como las defino en OnGameModeExit y OnGameModeInit?

Esque le doy GuardarVehiculo(v) y me da error

undefined symbol "v"
pawn Код:
new v = GetPlayerVehicleID(playerid);



Respuesta: Como guardar los componentes de un vehнculo. - Shiny_David - 05.08.2012

Quote:
Originally Posted by bytytus
Посмотреть сообщение
pawn Код:
new v = GetPlayerVehicleID(playerid);
esta preguntando en OnGameModeInt y OnGameModeExit, en esas callbacks no existe el parametro playerid por lo que le saldria error

usalo asi
pawn Код:
new v=456; //456 cambialo por el modelo de vehiculo que necesites y ya



Respuesta: Como guardar los componentes de un vehнculo. - OTACON - 05.08.2012

Quote:
Originally Posted by Shiny_David
Посмотреть сообщение
esta preguntando en OnGameModeInt y OnGameModeExit, en esas callbacks no existe el parametro playerid por lo que le saldria error

usalo asi
pawn Код:
new v=456; //456 cambialo por el modelo de vehiculo que necesites y ya
pawn Код:
public OnFilterScriptInit()
{
    for(new i; i < GetMaxPlayers(); i++)
    {
        if(IsPlayerConnected(i)
        {
            new vehicleid = GetPlayerVehicleID(i);
            CargarVehiculo(vehicleid);
        }
    }
    return 1;
}
pawn Код:
public OnFilterScriptExit()
{
    for(new i; i < GetMaxPlayers(); i++)
    {
        if(IsPlayerConnected(i)
        {
            new vehicleid = GetPlayerVehicleID(i);
            GuardarVehiculo(vehicleid);
        }
    }
    return 1;
}