[PROBLEMA] Error con IDs de vehiculos
#1


Buenas! Tengo un problema con las id de los vehнculos de mi gm y me gustarнa que me echarais una mano.


Breve Introducciуn:

Bueno pues uso un gamemode con guardado mysql. El sistema de vehнculos no es dinбmico, por lo que los vehнculos estбn siempre spawneados.

El problema viene, en que digamos que tengo 3 vehнculos, y voy y vendo o borro el vehнculo 2. Aquн viene el problema porque el vehнculo se borra sн, pero la id del vehнculo se queda libre, y aunque crees otro vehнculo, ese 4 vehнculo sigue quedбndose como vehiculo 4 y no vehнculo 2.
Ahora, si reinicio el servidor para ver si se corren las id, efectivamente ocurre, segъn el /dl (comando por defecto de samp) la id del vehнculo 3 ahora es la id del vehнculo 2 y asн sucesivamente. Pero en los datos del gm, osea en /propiedades el vehнculo te sale como id 3 todavнa, aunque en el juego ya es id 2 al correrse.

Me gustaria que me ayuden a reparar esto, paso los codigos:

Comando Creacion Vehiculo
Код:
CMD:crearveh(playerid, params[])
{
    new aNombre[24];
    GetPlayerName(playerid,aNombre,24);
    if(!strcmp(aNombre, "Christian_Cano", true) || !strcmp(aNombre, "Christian_Cano", true) || !strcmp(aNombre, "Christian_Cano", true))
    {
        if(JugadorInfo[playerid][jAdmin] < 4) return SendClientMessage(playerid, ROJO_OSCURO, SIN_PERMISOS);
        new modelo = 3000, color1 = 3000, color2 = 3000;
        if(sscanf(params, "iii", modelo, color1, color2))
        {
            SendClientMessage(playerid, GRIS, "Uso: /crearveh [ID] [Color1] [Color2]");
            return 1;
        }
        if(modelo < 400 || modelo > 611) return SendClientMessage(playerid, ROJO_OSCURO, "* Debes introducir un modelo entre 400 y 600.");
        if(color1 < 0 || color1 > 256) return SendClientMessage(playerid, ROJO_OSCURO, "* El color debe estar entre 0 y 256.");
        if(color2 < 0 || color2 > 256) return SendClientMessage(playerid, ROJO_OSCURO, "* El color debe estar entre 0 y 256.");
        new Float:pos[3];
        GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
        AgregarVehiculo(playerid, modelo, pos[0], pos[1], pos[2], 0, 0, color1, color2, 998, 100, 0);
        return 1;
    }
    else
    {
        SendClientMessage(playerid, ROJO_OSCURO, "* Comando deshabilitado temporalmente, uso restringido a Christian Cano unicamente.");
    }
    return 1;
}

stock AgregarVehiculo

Код:
stock AgregarVehiculo(playerid, modelo, Float:coord_x, Float:coord_y, Float:coord_z, Float:angulo, inter, color_1, color_2, fac_id, gas, job, owner[]="Admin")
{
    if(fac_id == 8888)
    {
        if(JugadorInfo[playerid][jCoches][0] != NOEXISTE && JugadorInfo[playerid][jCoches][1] != NOEXISTE && JugadorInfo[playerid][jCoches][2] != NOEXISTE)
        {
            SendClientMessage(playerid, ROJO_OSCURO, "* No te quedan slots de coches disponibles.");
            return 1;
        }
    }

    new ret = CreateVehicle(modelo, coord_x, coord_y, coord_z, angulo, color_1, color_2, 3000000);
    LinkVehicleToInterior(ret, inter);

    new panels,doors,lights,tires;
    GetVehicleDamageStatus(ret,panels,doors,lights,tires);
    //printf("Panels: %d | Doors: %d | Lights: %d | Tires: %d", panels, doors, lights, tires);
    new query[512];
    format(query, 512, "INSERT INTO vehiculos (Modelo, X, Y, Z, Angle, Color1, Color2, FaccionID, Interior, Vida, panels, doors, lights, tires, Gasolina, Job, Paintjob, Componentes, Dueno, Roto) VALUES (%d, %f, %f, %f, %f, %d, %d, %d, %d, %f, %d, %d, %d, %d, %d, %d, -1, '', '%s', 0)", modelo, coord_x, coord_y, coord_z, angulo, color_1, color_2, fac_id, inter, 1000.0, panels, doors, lights, tires, gas, job, owner);
    mysql_query(database, query, true);

    AutoInfo[ret][aID] = cache_insert_id(); // Aquн es donde le asigna la ID segun el gm, que se usara en /propiedades o todos los demas comandos
    AutoInfo[ret][aModelo] = modelo;
    AutoInfo[ret][ax] = coord_x;
    AutoInfo[ret][ay] = coord_y;
    AutoInfo[ret][az] = coord_z;
    AutoInfo[ret][aa] = angulo;
    AutoInfo[ret][aColor1] = color_1;
    AutoInfo[ret][aColor2] = color_2;
    AutoInfo[ret][aFaccionID] = fac_id;
// No Pongo mas datos de esto porque lo importante creo que es lo que indiquй
Funcion Spawnear vehiculo

Код:
public OnVehicleSpawn(vehicleid)
{
    if(GetVehicleModel(vehicleid) == 528) //FBI TRUCK UNOE
    {
        SetVehicleHealthEx(vehicleid, 2000);
    }
    CargaDelCamion[vehicleid] = 0;
    luzlanewestado[vehicleid] = 0;
    luzlanews1[vehicleid] = 0;
    luzlanews2[vehicleid] = 0;
    luzlanews3[vehicleid] = 0;
    luzlanews4[vehicleid] = 0;
    DestroyObject(luzlanews1[vehicleid]);
    DestroyObject(luzlanews2[vehicleid]);
    DestroyObject(luzlanews3[vehicleid]);
    DestroyObject(luzlanews4[vehicleid]);
    DestroyDynamicObject(LuzSS[0][vehicleid]);
    DestroyDynamicObject(LuzSS[1][vehicleid]);
    DestroyDynamicObject(LuzSS[2][vehicleid]);
    DestroyDynamicObject(LuzSS[3][vehicleid]);
    SinSonido[vehicleid] = 0;
    VehAlquilado[vehicleid] = 0;
    AutoInfo[vehicleid][aMotor] = 0;

    if(VehExploto[vehicleid] == 1)
    {
        SetVehicleHealthEx(vehicleid, 350.0);
        AutoInfo[vehicleid][aRoto] = 1;
        UpdateVehicleDamageStatus(vehicleid, 3565161, 33554946, 4, 0);
    }
    SetVehiclePos(vehicleid, AutoInfo[vehicleid][ax], AutoInfo[vehicleid][ay], AutoInfo[vehicleid][az]);
    SetVehicleZAngle(vehicleid, AutoInfo[vehicleid][aa]);
    LinkVehicleToInterior(vehicleid, AutoInfo[vehicleid][aInteriorID]);
    new matricula[40];
    format(matricula, sizeof(matricula), "LS-%d", AutoInfo[vehicleid][aID]);
    SetVehicleNumberPlate(vehicleid, matricula);
    return 1;
}

Parte del comando que se encarga de borrar

Код:
else if(strcmp(opcion, "eliminar", true) == 0)
    {
        DestroyVehicle(vehicleid);
        EliminarVehiculo(vehicleid);
        format(string, sizeof(string), "Administraciуn: %s eliminу el vehнculo %d.",  NombreJugador(playerid), AutoInfo[vehicleid][aID]);
        ABroadCast(ROJO, string, 1);
        return 1;
    }
Funciуn Eliminar Vehiculo

Код:
stock EliminarVehiculo(vehicleid)
{
    new query[128];
    format(query, 128, "DELETE FROM vehiculos WHERE ID = %d", AutoInfo[vehicleid][aID]);
    mysql_query(database, query, false);
}
Reply


Messages In This Thread
[PROBLEMA] Error con IDs de vehiculos - by GutyMontana - 20.01.2017, 13:51
Respuesta: [PROBLEMA] Error con IDs de vehiculos - by Eloy - 20.01.2017, 14:04
Respuesta: [PROBLEMA] Error con IDs de vehiculos - by matias770 - 20.01.2017, 14:34
Re: Respuesta: [PROBLEMA] Error con IDs de vehiculos - by GutyMontana - 20.01.2017, 18:42
Respuesta: [PROBLEMA] Error con IDs de vehiculos - by Goncho28 - 20.01.2017, 18:51

Forum Jump:


Users browsing this thread: 1 Guest(s)