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