Sziasztok! Van egy /sveh parancsom, ami lementi egy fájlba az autókat, és betölti azokat szerverindításkor. Mikor újrainditoma s zervert, lehozok egy autót, és beírom, hogy /sveh, akkor ami ugyanazona rendszámon volt autó lementve, azt átírja erre, tehát a frissebbik lementésre. Hoyg lehetne emgcsinálni, hogy ellenõrizze, hogy van-e olyan autó már és ha van akkor egy új számot adjon neki? tehát 50es az ID, és lementené 50es IDvel, de mivel már van olyan, ezért 51essel menti le. De ha olyan is van, akkor 52el, és így tovább. Remélem értitek.
Kód:
new svehmentes[128];
public OnGameModeInit()
{
for(new i=0; i<MAX_VEHICLES; i++) // Egy ciklus amivel végig megyünk az összes kocsin
{
format(svehmentes,sizeof(svehmentes),\"/Carss/%d.ini\",i); // Formázzuk a fájlt
if(fexist(svehmentes)) // Ha létezik a file
{
new Float:posx, Float:posy, Float:posz, Float:angle, model,color1,color2; // Létrehozzuk a megfelelõ változókat
posx = dini_Float(svehmentes,\"PosX\"); // Lekérjük a fájlból az -X kordinátát
posy = dini_Float(svehmentes,\"PosY\"); // -Y kordinátát
posz = dini_Float(svehmentes,\"PosZ\"); // -Z kordinátát
angle = dini_Float(svehmentes,\"Angle\"); // -Forgásirányát
model = dini_Int(svehmentes,\"Model\"); // -a model id-jét
color1 = dini_Int(svehmentes,\"Color1\");
color2 = dini_Int(svehmentes,\"Color2\");
CreateVehicle(model,posx,posy,posz,angle,color1,color2,-1); // Létrehozzuk a kocsit
...
}
}
CMD:sveh(playerid)
{
if(IsPlayerConnected(playerid) && Belepve[playerid] == 1)
{
if(JatekosInfo[playerid][Tulaj] == 1)
{
if(IsPlayerInAnyVehicle(playerid)) // Ha jármûben van a játékos
{
new color1, color2;
new vehid = GetPlayerVehicleID(playerid); // Lekérjük hogy a játékos melyik id-jû kocsiban van
new Float:posx, Float:posy, Float:posz, Float:angle, model; // Létrehozzul a változókat
model = GetVehicleModel(vehid);
GetVehiclePos(vehid,posx,posy,posz); // Lekérjük a kocsi kordinátáját
GetVehicleZAngle(vehid,angle); // Lekérjük a kocsi forgásirányát
GetVehicleColor(vehid,color1,color2);
format(svehmentes,sizeof(svehmentes),\"/Cars1/%d.ini\",vehid); // Formázzuk a file változót a mappának megfelelõen
if(!fexist(svehmentes)) // Ha létezik a file
{
dini_Create(svehmentes); // Létrehozzuk a fájlt
dini_FloatSet(svehmentes,\"PosX\",posx); // Lementjük az -X koordinátát
dini_FloatSet(svehmentes,\"PosY\",posy); // -Y koordinátát
dini_FloatSet(svehmentes,\"PosZ\",posz); // -Z koordinátát
dini_FloatSet(svehmentes,\"Angle\",angle); // -Forgásirányát
dini_IntSet(svehmentes,\"Model\",model); // -A model id-jét
dini_IntSet(svehmentes,\"Color1\",color1);
dini_IntSet(svehmentes,\"Color2\",color2);
SendClientMessage(playerid,COLOR_BLUE,\"Játmû lementve!\");
}
else // Ha nem létezik a file
{
dini_FloatSet(svehmentes,\"PosX\",posx); // Lementjük az -X koordinátát
dini_FloatSet(svehmentes,\"PosY\",posy); // -Y koordinátát
dini_FloatSet(svehmentes,\"PosZ\",posz); // -Z koordinátát
dini_FloatSet(svehmentes,\"Angle\",angle); // -Forgásirányát
dini_IntSet(svehmentes,\"Model\",model); // -A model id-jét
dini_IntSet(svehmentes,\"Color1\",color1);
dini_IntSet(svehmentes,\"Color2\",color2);
}
}
else // Ha nincs jármûben a játékos
{
SendClientMessage(playerid,COLOR_LIGHTRED,\"Nem vagy jármûben!\");
}
}
else MSG(playerid,COLOR_LIGHTRED,\"Nem vagy Tulajdonos!\");
}
else SendClientMessage(playerid,COLOR_LIGHTRED,\"Nem vagy bejelentkezve!\");
return 1;
}
((nem tudom pawn kódot beírni emrt nincs ott az ikonja, bocsi))
[mod]Javítottam a
taget
tagre![/mod]
Írok egy gyors példaszerûséget, ne pont így írd, csak ilyesmit:
Mondjuk létrehozol egy integer tömböt a jármûveknek, amiben megadod, hogy hova tartoznak. A jármûvek betöltésénél kiolvasod, a mentési résznél kíírod az értékét. A kód elején definálod, hogy hova tartozhatnak a jármûvek, pl.:
#define FK_CIVIL 0
#define FK_VALAMI 1
#define FK_VALAMICSODA 2
stb..
Vagy ha már definálva vannak frakció ID-k, akkor azokat használod.
Létrehozol egy új parancsot, mondjuk CMD:setvehfk. Itt megadhatod a jármû frakció ID-jét, miután létrehoztad.
Aztán a motorbeindítás parancsnál ellenõrzöd, hogy a játékos ugyan abba a frakcióba tartozik-e, mint a jármû, vagy a jármû civil-e. Ha egyik sem, akkor nem tudja beindítani a jármûvet.
a fájlokat az id-re mentsd.
létrehozol egy változót, ami alapértelmezetten 0.
aztán egy eljárást hozol létre, ami ellenõrzi, hogy a jármû id-jérevan- efájl. ha van, akkor megnöveled eggyel a változót, és újra futtatod.
iff van, hogy hogy csináld, a többivel kitudod egészíteni
new mentesiid;
CMD:sveh(playerid)
{
mentesiid = 1;
Kocsimentes(playerid);
return 1;
}
stock Kocsimentes(playerid, vehicleid)
{
new file[128];
vid = GetPlayerVehicleID(playerid);
format(file, sizeof(file), \"/Cars1/%s.ini\", mentesiid);
if(dini_Exists(file)) return mentesiid++, Kocsimentes(playerid);
else
{
/*
mentési cucc
*/
}
return 1;
}
jaa, nem teszteltem le, de mûködnie KELL!
xd