[Duda] Como hacer esto...
#1

Buenas a Todos, Kisiera Saber como puedo hacer para guardar La Posicion De Los vehiculos en un solo Archivo, por ke yo Lo hago de la siguiente forma, pero guarda cada id de los vehiculos por Archivos separado.

pawn Код:
FormatEx(Archivo, "Vehiculos/%d.cfg", vehicleid);
Desde ya muchas gracias.
Reply
#2

pawn Код:
new Float:Pos[4], string[100], File:file = fopen("autos.txt", io_write);
if(file)
{
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
        GetVehiclePos(i, Pos[0], Pos[1], Pos[2]);
        GetVehicleZAngle(i, Pos[3]);
        model = GetVehicleModel(i);
        if(Pos[0] == 0 && Pos[1] == 0&& Pos[2] == 0) return 1;
        format(string, sizeof(string), "%d|%f|%f|%f|%f\n", model, Pos[0], Pos[1], Pos[2], Pos[3]);
        fwrite(file, string);
    }
}
Reply
#3

@bytytus en mi opinion no lo debes hacer! porque? por una razion muy simples. Yo ya tube un system asi pero era muy lento, para decirte la verdad йs mucho pero mucho mas rapito que guardar la posicion de cada veiculo en un archivos. Todos en un archivos se quedaria muchos mas lento. Para se quedarem todos en un archivo deberias usar SQLite o entonces MySQL, pero tu lo sabes.

@Bu11Sh0t buen code. Muy bien
pero do puedes optimizar. Te quedas usando eso
pawn Код:
if(Pos[0] == 0 && Pos[1] == 0&& Pos[2] == 0) return 1;
creo que йs para saber se el veiculo esta creado. pero ai uma formula mejor. abajo del loop usas GetVehicleModel
asi
pawn Код:
for(new i = 0; i < MAX_VEHICLES; i++)
{
    if(!GetVehicleModel(i)) return 1;
si el veiculo no existe simpemente el resultado va a se 0 e por esso significa que no existe entoces "return 1", asi no tienes que detectar su posicion ou angulo o mas, pero si usas "return 1" el loop que quebra, entonces se quieres hacer seguir usas "continue"
Reply
#4

no entiendo com oaplicarlo ami metodo, utilizo Dini Yo :S

Asi Seria Lo ke tengo

pawn Код:
CALLBACK: Guardar(vehicleid)
{
    new Archivo[30];
    FormatEx(Archivo, "Vehiculos/%d.ini", vehicleid);

    dini_Create(Archivo);
    if(dini_Exists(Archivo))
    {
        dini_FloatSet(Archivo, "Pos[X]", Float:Pos[vehicleid][0]);
        return 0;
    }
    return 1;
}
Reply
#5

algo asi, pero te quedas aciendo una cosa incorrecta
pawn Код:
dini_Create(Archivo);
if(dini_Exists(Archivo))//en la linea de arriba lo crias, entoces porque vas a detectar se existe?
{
    dini_FloatSet(Archivo, "Pos[X]", Float:Pos[vehicleid][0]);//no nocessitar escribir Pos[X] puede ser so x e no debes usar Float:Pos[vehicleid][0] pero si Pos[vehicleid][0]
    //tiene que escribir lo mismo para los otros
    return 0;//porque retornas falso? debrias retornar verdadero! "return 1"
}
si queires que el gamemode crie el archivo si el no existe debrias usar asi

pawn Код:
if(!dini_Exists(Archivo))
{
    dini_Create(Archivo);
}
Reply
#6

pawn Код:
CALLBACK: Guardar(vehicleid)
{
    new Archivo[30], string[100], string2[5];
    FormatEx(Archivo, "Vehiculos/%d.ini", vehicleid);
    new model, Float:x, Float:y, Float:z, color1, color2;
    model = GetVehicleModel(vehicleid); GetVehiclePos(vehicleid, x, y, z);
    color1 = random(123); color2 = random(123);
    if(!dini_Exists(Archivo)) dini_Create(Archivo);
    FormatEx(string, "%d %f %f %f %f %d %d", model, x, y, z, color1, color2);
    FormatEx(string2, "%d", vehicleid);
    dini_Set(Archivo, string2, string);
    return 1;
}
Reply
#7

En vez de utilizar las funcciones dini que son my lentas, gasta un sistema database como sqlite o mysql.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)