[AYUDA] Con este Script que estoy haciendo!
#1

pawn Код:
CMD:addv(playerid, params[])
    {
    if(PlayerInfo[playerid][pAdmin] < 1338) return SendClientMessage(playerid, COLOR_RED, "You are not admin!");
    new model[32], modelid, color1, color2, price;
    if(sscanf(params, "s[32]ddd", model, color1, color2, price)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /addv [model] [color1] [color2] [price]");
    if(IsNumeric(model)) modelid = strval(model);
    else modelid = GetVehicleModelIDFromName(model);
    //if(modelid  > 400 || modelid < 611) return SendClientMessage(playerid, COLOR_RED, "Invalid model ID!");
    if(color1 < 0 || color2 < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid color!");
    if(price < 0) return SendClientMessage(playerid, COLOR_RED, "Invalid price!");
    new Float:X, Float:Y, Float:Z, Float:angle;
    GetPlayerPos(playerid, X, Y, Z);
    GetPlayerFacingAngle(playerid, angle);
    X += floatmul(floatsin(-angle, degrees), 4.0);
    Y += floatmul(floatcos(-angle, degrees), 4.0);
    for(new i = COCHE_DESDE; i < sizeof(CarInfo); i++)
    {
    if(!VehicleCreated[i])
    {
    CarInfo[i][cModel]= modelid;
    CarInfo[i][cLocationx]= X;
    CarInfo[i][cLocationy]= Y;
    CarInfo[i][cLocationz]= Z;
    CarInfo[i][cAngle]= angle+90.0;
    CarInfo[i][cColorOne]=color1;
    CarInfo[i][cColorTwo]=color2;
    CarInfo[i][cValue]=price;
    strmid(CarInfo[i][cOwner], "NO", 0, strlen("NO"), 255);
    CarInfo[i][cLock]= 0;
    CrearCoche(i);
    CreateVehicle(CarInfo[i][cModel],CarInfo[i][cLocationx],CarInfo[i][cLocationy],CarInfo[i][cLocationz]+1.0,CarInfo[i][cAngle],CarInfo[i][cColorOne],CarInfo[i][cColorTwo],60000);
    return 1;
    }
    }
    SendClientMessage(playerid, COLOR_RED, "Can't add any more vehicles!");
    return 1;
    }
bueno ese es mi CMD al ponerlo crea el coche y y ise esta callback aparte para guardar el coche:

pawn Код:
forward CrearCoche(vehicleid);
public CrearCoche(vehicleid)
{
new file[26];
format(file, sizeof(file),"/Coches/v%d.ini", vehicleid);
if(!fexist(file))
{
SI_Open(file);
SI_WriteInt("Model",CarInfo[vehicleid][cModel]);
SI_WriteFloat("Location_X",CarInfo[vehicleid][cLocationx]);
SI_WriteFloat("Location_Y",CarInfo[vehicleid][cLocationy]);
SI_WriteFloat("Location_Z",CarInfo[vehicleid][cLocationz]);
SI_WriteFloat("Location_A",CarInfo[vehicleid][cAngle]);
SI_WriteInt("Color_1",CarInfo[vehicleid][cColorOne]);
SI_WriteInt("Color_2",CarInfo[vehicleid][cColorTwo]);
SI_WriteString("Owner",CarInfo[vehicleid][cOwner]);
SI_WriteInt("Value",CarInfo[vehicleid][cValue]);
SI_WriteInt("Owned",CarInfo[vehicleid][cOwned]);
SI_WriteInt("Locked",CarInfo[vehicleid][cLock]);
SI_Save();
SI_Close();
}
return 1;
}
Lo que pasa es que solo me crea uno y listo por ej borro el que acabo de crear y puedo crear denuevo pero no como yo quiero por ej yo quiero hacer que al crearlo si esta el coche 58 se cree el 59 si esta el 56 y el 58 se cree el 57 espero que me entiendan .

ACLARACION: El Include que uso es SII pero como vieron SII es parecido a Y_ini en sentido de los nombres de las funciones lo que ise fue cambiar lo de SII(INI_) por SI_...
Reply
#2

Prueba asi:

define el macro:
pawn Код:
#define Loop(%0,%1) for(new %0; %0 != %1; %0++)
luego coloca este stock.

pawn Код:
stock ProximoVehiculo()
{
    new archivo[256];
    Loop(h, sizeof(CarInfo))
    {
        format(archivo, sizeof(archivo), "/Coches/v%d.ini", h);
        if(!fexist(archivo))
        {
            return h;
        }
    }
    return -1;
}
y luego cuando vallas a crear el vehiculo pones:

pawn Код:
forward CrearCoche(vehicleid);
public CrearCoche(vehicleid)
{
vehicleid = ProximoVehiculo();
new file[26];
format(file, sizeof(file),"/Coches/v%d.ini", vehicleid);
if(!fexist(file))
{
SI_Open(file);
SI_WriteInt("Model",CarInfo[vehicleid][cModel]);
SI_WriteFloat("Location_X",CarInfo[vehicleid][cLocationx]);
SI_WriteFloat("Location_Y",CarInfo[vehicleid][cLocationy]);
SI_WriteFloat("Location_Z",CarInfo[vehicleid][cLocationz]);
SI_WriteFloat("Location_A",CarInfo[vehicleid][cAngle]);
SI_WriteInt("Color_1",CarInfo[vehicleid][cColorOne]);
SI_WriteInt("Color_2",CarInfo[vehicleid][cColorTwo]);
SI_WriteString("Owner",CarInfo[vehicleid][cOwner]);
SI_WriteInt("Value",CarInfo[vehicleid][cValue]);
SI_WriteInt("Owned",CarInfo[vehicleid][cOwned]);
SI_WriteInt("Locked",CarInfo[vehicleid][cLock]);
SI_Save();
SI_Close();
}
return 1;
}
me avisas si te funciona , si no ahi vemos
Reply
#3

Quote:
Originally Posted by MemoX
Посмотреть сообщение
Prueba asi:

define el macro:
pawn Код:
#define Loop(%0,%1) for(new %0; %0 != %1; %0++)
luego coloca este stock.

pawn Код:
stock ProximoVehiculo()
{
    new archivo[256];
    Loop(h, sizeof(CarInfo))
    {
        format(archivo, sizeof(archivo), "/Coches/v%d.ini", h);
        if(!fexist(archivo))
        {
            return h;
        }
    }
    return -1;
}
y luego cuando vallas a crear el vehiculo pones:

pawn Код:
forward CrearCoche(vehicleid);
public CrearCoche(vehicleid)
{
vehicleid = ProximoVehiculo();
new file[26];
format(file, sizeof(file),"/Coches/v%d.ini", vehicleid);
if(!fexist(file))
{
SI_Open(file);
SI_WriteInt("Model",CarInfo[vehicleid][cModel]);
SI_WriteFloat("Location_X",CarInfo[vehicleid][cLocationx]);
SI_WriteFloat("Location_Y",CarInfo[vehicleid][cLocationy]);
SI_WriteFloat("Location_Z",CarInfo[vehicleid][cLocationz]);
SI_WriteFloat("Location_A",CarInfo[vehicleid][cAngle]);
SI_WriteInt("Color_1",CarInfo[vehicleid][cColorOne]);
SI_WriteInt("Color_2",CarInfo[vehicleid][cColorTwo]);
SI_WriteString("Owner",CarInfo[vehicleid][cOwner]);
SI_WriteInt("Value",CarInfo[vehicleid][cValue]);
SI_WriteInt("Owned",CarInfo[vehicleid][cOwned]);
SI_WriteInt("Locked",CarInfo[vehicleid][cLock]);
SI_Save();
SI_Close();
}
return 1;
}
me avisas si te funciona , si no ahi vemos
Si me funciona pero de esta manera:

pawn Код:
stock ProximoVehiculo()
{
new archivo[256];
for(new h = COCHE_DESDE; h < sizeof(CarInfo) ; h++)
{
format(archivo, sizeof(archivo), "/Coches/v%d.ini", h);
if(!fexist(archivo))
{
return h;
}
}
return -1;
}
ahora la cagada es que por ej yo creo un coche y despues creo otro y el otro aparece todo en 0 0 0 0 pero en el primero que creo sale bien pasa al igual al crear 3 4 5 6 ....
nose que sera es como si solo dejara crear 1 y nada mas D: ahh y al reiniciar el sv y ya cree uno y creo otro igual pasa es decir solo se puede crear 1....

Espero que me puedas Ayudar en esto.

ACLARO: Al Reiniciar el sv y yo ya use anteriormente el CMD(Cree un Coche) ese coche que estoy creando ahora aparece en 0 0 0 el Model,Pos,Color... esto pasa tambien al crear 2coches es decir borro todos los coches de la carpeta ScriptFiles creo uno(este sale bien) despues creo otro(este sale todo en 0 excepto los nombres xd=0) y es como si creara un archivito con la id bien pero con lo de adentro todo en 0 jaja.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)