[Ayuda] Con sistema de autos
#1

Estamos creando un sistema de autos, se guardan en archivos independientes, la informaciуn de cada auto se guarda en un archivo .ini, el nombre del archivo .ini es la ID del coche dentro del servidor (ejemplo: 4.ini), me gustarнa saber como hacer cargar ese auto cada vez que reinicie el servidor, ya que si lo reinicio obviamente se borrarб, y necesitarй volverlo a crear con los mismos datos que estйn en el archivo y no se hacerlo. Agradezco la ayuda.
Reply
#2

Prueba con esto si te sirve:

Код:
stock CargarAutos(const filename[])
{
    new File:file_ptr;
        new line[256];
        new var_from_line[64];
        new vehicletype;
        new Float:SpawnX;
        new Float:SpawnY;
        new Float:SpawnZ;
        new Float:SpawnRot;
        new Color1, Color2;
        new index;
        new vehicles_loaded;

        file_ptr = fopen(filename,filemode:io_read);
        if(!file_ptr) return 0;

        vehicles_loaded = 0;

    while(fread(file_ptr,line,256) > 0)
    {
        index = 0;

            index = token_by_delim(line,var_from_line,',',index);
            if(index == (-1)) continue;
            vehicletype = strval(var_from_line);
            if(vehicletype < 400 || vehicletype > 611) continue;

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnX = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnY = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnZ = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            SpawnRot = floatstr(var_from_line);

            index = token_by_delim(line,var_from_line,',',index+1);
            if(index == (-1)) continue;
            Color1 = strval(var_from_line);

            index = token_by_delim(line,var_from_line,';',index+1);
            Color2 = strval(var_from_line);

                                                  // respawn en 30 minutos
            AddStaticVehicleEx(vehicletype,SpawnX,SpawnY,SpawnZ+1,SpawnRot,Color1,Color2,(30*60));
            vehicles_loaded++;
    }
    fclose(file_ptr);
    printf("Cargado %d vehнculos de: %s",vehicles_loaded,filename);
    return vehicles_loaded;
}
OnGamemodeInit:

Код:
public OnGameModeInit()
{
    CargarAutos("archivo.ini"); //poner nombre aquн
    return 1;
}
Reply
#3

Perdуn que me meta pero tengo el mismo problema.

Macklemore, yo necesito cargar los coches, que tambiйn se guardan en archivos independientes. (4.ini,27.ini). Estos cargarlos desde la carpeta Coches. El script serнa Coches/%d.ini , pero ahн veo que en OnGameModeInit estбs cargando solo un archivo. їCуmo serнa para que cargue todos los archivos creados?
Reply
#4

Exacto, son varios archivos los que estarбn en Vehiculos/%d.ini, como los cargo todos y no solo uno?
Reply
#5

mira lo que harб esto:

pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
    {
        printf("%d", i);
    }
esto mostrarб 500 nъmeros, asн lo haces, cambias MAX_PLAYERS por la cantidad mбxima de autos que han sido creados, creas una condiciуn que vele por si el archivo existe usando un format y de argumento "i", y listo
Reply
#6

Me pondrнas un ejemplo? La verdad que desde ayer a la tarde estoy estancado con esto y me tiene mareado
Reply
#7

Quote:
Originally Posted by Juance
Посмотреть сообщение
Me pondrнas un ejemplo? La verdad que desde ayer a la tarde estoy estancado con esto y me tiene mareado
pawn Код:
new file[27];
    for(new idx = 1; idx < sizeof(Vehiculo) ; idx++)
    {
        format(file, sizeof(file),"Autos/%d.ini", idx);
        if(dini_Exists(file))
        {
            strmid(Vehiculo[idx][vDueno], dini_Get(file,"Propietario"), 0, strlen(dini_Get(file,"Propietario")), 255);
            Vehiculo[idx][vIDc] = dini_Int(file,"vID");
            Vehiculo[idx][vModelo] = dini_Int(file,"Modelo");
            Vehiculo[idx][Precio] = dini_Int(file,"Precio");

            Vehiculo[idx][Comprado] = dini_Int(file,"Comprado");
            //Vehiculo[idx][EstadoMotorV] = dini_Int(file,"EstadoMotor");
            Vehiculo[idx][vSeguro] = dini_Int(file,"CocheCerrado");

            Vehiculo[idx][PosX] = dini_Float(file,"Pos_x");
            Vehiculo[idx][PosY] = dini_Float(file,"Pos_y");
            Vehiculo[idx][PosZ] = dini_Float(file,"Pos_z");
            Vehiculo[idx][Rot] = dini_Float(file,"Rot");
            Vehiculo[idx][vVidaCoche] = dini_Float(file,"Carroceria");
            Vehiculo[idx][vGasolina] = dini_Float(file,"Gasolina");
            Vehiculo[idx][vColorUno] = dini_Int(file,"ColorUno");
            Vehiculo[idx][vColorDos] = dini_Int(file,"ColorDos");
            printf("[VEHICULOS]: Vehiculo %d cargado.", idx);
        }
    }
    return 1;
}
Reply
#8

Bien. Me dice: Vehiculo 27 cargado. Es el ъnico vehнculo que tengo en Scriptfiles/Autos. Ahora que supuestamente cargaron los datos del .ini , si yo quiero que el vehнculo se cree con esos datos al iniciar el servidor їcуmo harнa? probй "CreateVehicle" pero de alguna manera no me funcionу.
Reply
#9

AddPlayerVehicle o CreateVehicle con los datos que vas cargando usando "i" de vehicleid
Reply
#10

No comprendo. He hecho esto, pero no me creу el coche:

pawn Код:
new file[27];
for(new idx = 1; idx < sizeof(Vehiculo) ; idx++)
{
    format(file, sizeof(file),"Coches/%d.ini", idx);
    if(dini_Exists(file))
    {
        CreateVehicle(Vehiculo[idx][vModelo],Vehiculo[idx][Pos_X],Vehiculo[idx][Pos_Y],Vehiculo[idx][Pos_Z],Vehiculo[idx][Rot],Vehiculo[idx][vColorUno],Vehiculo[idx][vColorDos],-1);
        printf("Vehiculo %d creado correctamente",idx);
    }
}
Reply


Forum Jump:


Users browsing this thread: