[Tutorial] Como guardar los componentes de un vehнculo.
#1

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.
Reply
#2

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!
Reply
#3

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!
Reply
#4

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

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

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.
Reply
#7

Como las defino en OnGameModeExit y OnGameModeInit?

Esque le doy GuardarVehiculo(v) y me da error

undefined symbol "v"
Reply
#8

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);
Reply
#9

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
Reply
#10

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;
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)