GTA Közösség - A magyar GTA fórum
San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: tudvari - 2012. január 01. - 17:59:03
-
Sziasztok,azt hogy lehet megcsinálni,hogy az legyen a fájl neve ami a soron következõ szám?
(pl.: van egy 0.ini akkor ez 1.ini lesz)
-
Nem biztos, mivel már nem szkriptelek, de megpróbálhatod így:
[pawn]
new file[ 10 ];
for( new x = 0; x < 100; ++x ) {
format( file, sizeof file, \"%d.ini\", x );
if( fexist( file ) ) continue;
//és ide amit akarsz az újjal
}
[/pawn]
-
Ez olyan dolog, amit még soha nem csináltam, de szerintem te jól írtad le, csak én megállítanám a ciklust a break-al, amiután megvan a fájl.
Tehát én így módosítottam:
Tesztelve, mûködik!
A ciklusban a feltételt pedig majd módosítani kell, ha a fájlok száma több, mint 99.
[pawn]
new file[ 10 ];
for( new x; x < 100; ++x )
{
format( file, sizeof file, \"%d.ini\", x );
if( fexist( file ) ) continue;
new File:MyFile = fopen( file, io_write ); // Létrehozzuk
fwrite( MyFile, \"ASD\\r\\nLine2\" ); // Beleírunk vmi hülyeséget.. Bár ha nem akarsz itt beleírni semmit, akkor ezt a sort töröld.
fclose( MyFile ); // Bezárjuk..
break; // Kilépünk a ciklusból. Ez fontos!
}
[/pawn]
Sok fájlnál szerintem ez laggolna, de nembiztos.
Nem teszteltem még az fexist() sebességét.
-
100 fájl-t készített amikor 1 kocsira alkalmazni próbáltam.
-
100 fájl-t készített amikor 1 kocsira alkalmazni próbáltam.
Próbáld az én verziómat, amiben ott van a break.
-
Na szóval :D
VAn ez a kód,aminek létre kéne hoznia egy olyan fájlt ami a számsorban a következõ lenne:
[pawn] new file[256];
new string[256];
GivePlayerMoney(playerid,-tipusar);
GetPlayerName(playerid,nev,sizeof(nev));
format(string,sizeof(string),\"%s vett egy %s-t.\", nev,tipus);
AdminnakUzenet(VZOLD, string, 1);
printf(string);
new jarmu;
jarmu = AddStaticVehicle(tipusid, 218.1325,7.9003,2.2991, 269.9501, szin1, szin2);
JarmuInfo[jarmu][szin1] = szin1;
JarmuInfo[jarmu][szin2] = szin2;
for( new x = 0; x < 100; ++x ) {
format( file, sizeof file, \"/Adatbazis/Jarmuvek/%d.ini\", x );
dini_Create(file);
dini_IntSet(file,\"ID\", x);
//dini_IntSet(file,\"Tulaj\", string2);
dini_IntSet(file,\"Model\", tipusid);
dini_IntSet(file,\"Szín1\", szin1);
dini_IntSet(file,\"Szín2\", szin2);
dini_FloatSet(file,\"X\", 218.1325);
dini_FloatSet(file,\"Y\", 7.9003);
dini_FloatSet(file,\"Z\", 2.2991);
dini_FloatSet(file,\"Forgatás\", 269.9501);[/pawn]
EEnnek meg 5 mp-nként le kéne mentenie a mappában lévõ jármûvek adatait.
[pawn]
public AutoMentes()
{
for(new i = 0; i < MAX_VEHICLES; i++)
{
new file[256];
format(file,sizeof(file),\"/Adatbazis/Jarmuvek/%d.ini\", i);
new model;
model = GetVehicleModel(i);
new Float:x, Float:y, Float:z, Float:rotate;
GetVehiclePos(i,x,y,z);
/*new szin1;
new szin2;
GetVehicleColor(jarmu,szin1,szin2);*/
GetVehicleZAngle(i, rotate);
dini_IntSet(file,\"ID\", i);
dini_IntSet(file,\"Tulaj\", 0);
dini_IntSet(file,\"Model\", model);
dini_IntSet(file,\"Szín1\", JarmuInfo[szin1]);
dini_IntSet(file,\"Szín2\", JarmuInfo[szin2]);
dini_FloatSet(file,\"X\", x);
dini_FloatSet(file,\"Y\", y);
dini_FloatSet(file,\"Z\", z);
dini_FloatSet(file,\"Forgatás\", rotate);
}
}[/pawn]
Na ebbõl kéne kihozni valami jót,amit én nem tudok létrehozni :D
-
Nos, nekem ez úgy van hogy akkor ment mikor kiszáll a játékos a kocsiból,amit késõbb ugye resinél betöltök. Szerintem old meg te is így, így a legkönyebb.
-
de ha resi következik be miközben a kocsiban van? akkor a játékos az úton lesz a kocsi meg a régi helyén.
Egyébként most,hogy jobban körül néztem a szerveren,a fent iscript miatt minden autó kétszer van meg xd
-
a /restart parancsodhoz hozzárendeled azt hogy minden játékost dobjon ki akocsiból, illetve írja ki hogy 5mp mulva restart és 5mp mulva restartol a szerver. nálam így van megoldva.
-
De én a crashekre gondoltam,vagy a véletlenszerû leállásokra.
Dupla hozzászólás automatikusan összefûzve. ( 2012. január 02. - 16:51:33 )
Valaki tudna egy olyan megoldást ami e helyett:
[pawn]format( file, sizeof file, \"/Adatbazis/Jarmuvek/%s.ini\",nev);[/pawn]
egy olyan fájlt hoz létre aminek a neve a mappában lévõ legnagyobb szám 1-elt növelt értéke?
A break-est nem értem,hogy hova kéne beillesztenem :D Megköszönném ha valaki elmagyarázná.
-
De én a crashekre gondoltam,vagy a véletlenszerû leállásokra.
Dupla hozzászólás automatikusan összefûzve. ( 2012. január 02. - 16:51:33 )
Valaki tudna egy olyan megoldást ami e helyett:
[pawn]format( file, sizeof file, \"/Adatbazis/Jarmuvek/%s.ini\",nev);[/pawn]
egy olyan fájlt hoz létre aminek a neve a mappában lévõ legnagyobb szám 1-elt növelt értéke?
A break-est nem értem,hogy hova kéne beillesztenem :D Megköszönném ha valaki elmagyarázná.
A legaljára, mert az állítja meg a ciklust. ( A ciklus legaljára )
-
Nem hoz létrefájlt,és nem lehet utána használni a parancsot a break miatt.
[pawn]
new file[ 10 ];
for( new x; x < 100; ++x )
{
format( file, sizeof file, \"/Adatbazis/Jarmuvek/%d.ini\", x );
if( fexist( file ) ) continue;
new File:MyFile = fopen( file, io_write ); // Létrehozzuk
new string[256];
GivePlayerMoney(playerid,-tipusar);
GetPlayerName(playerid,nev,sizeof(nev));
format(string,sizeof(string),\"%s vett egy %s-t.\", nev,tipus);
AdminnakUzenet(VZOLD, string, 1);
printf(string);
new jarmu;
jarmu = AddStaticVehicle(tipusid, 218.1325,7.9003,2.2991, 269.9501, szin1, szin2);
JarmuInfo[jarmu][szin1] = szin1;
JarmuInfo[jarmu][szin2] = szin2;
dini_Set(file,\"Tulaj\", nev);
dini_IntSet(file,\"Model\", tipusid);
dini_IntSet(file,\"Szín1\", szin1);
dini_IntSet(file,\"Szín2\", szin2);
dini_FloatSet(file,\"X\", 218.1325);
dini_FloatSet(file,\"Y\", 7.9003);
dini_FloatSet(file,\"Z\", 2.2991);
dini_FloatSet(file,\"Forgatás\", 269.9501);// Beleírunk vmi hülyeséget.. Bár ha nem akarsz itt beleírni semmit, akkor ezt a sort töröld.
fclose( MyFile ); // Bezárjuk..
break;[/pawn]
-
Így esetleg?
Bocs, de dini-t már nem igazán vágom fejbõl, mivel 1,5 éve SQL-el mentem az adataim.
[pawn]
new
file[ 64 ]; // Kicsi volt a buffer méret, ez így már ahogy lent van jócskán meghaladja a 10 cellát..
for( new x; x < 100; ++x )
{
format( file, sizeof file, \"/Adatbazis/Jarmuvek/%d.ini\", x );
if( fexist( file ) ) continue;
new
string[128],
jarmu;
GivePlayerMoney(playerid,-tipusar);
GetPlayerName(playerid,nev,sizeof(nev));
format(string,sizeof(string),\"%s vett egy %s-t.\", nev,tipus);
AdminnakUzenet(VZOLD, string, 1);
printf(string);
jarmu = AddStaticVehicle(tipusid, 218.1325,7.9003,2.2991, 269.9501, szin1, szin2);
JarmuInfo[jarmu][szin1] = szin1;
JarmuInfo[jarmu][szin2] = szin2;
dini_Create(file); // Létrehozzuk!
dini_Set(file,\"Tulaj\", nev);
dini_IntSet(file, \"Model\", tipusid);
dini_IntSet(file,\"Szín1\", szin1);
dini_IntSet(file,\"Szín2\", szin2);
dini_FloatSet(file,\"X\", 218.1325);
dini_FloatSet(file,\"Y\", 7.9003);
dini_FloatSet(file,\"Z\", 2.2991);
dini_FloatSet(file,\"Forgatás\", 269.9501);// Beleírunk vmi hülyeséget.. Bár ha nem akarsz itt beleírni semmit, akkor ezt a sort töröld.
break;
}
[/pawn]
-
Köszi,mûködik,és azt szeretném még valahogy megoldani,hogy megkülönböztesse az ilyen jármûveket és a publikus közhasználatú jármûveket?Csak mert az nem lenne jó,hogy ha kidobna az úttisztító kocsiból,mert nincs hozzá kulcsod :D
és azt hogy tudom beállítani a létrehozott autóból ha kiszállnak,akkor a számára létrehozott fájlába mentse a dolgokat?
Csak mert most ez a nem tudom milyen változó össze keverte nálam a dolgokat mert nem tudom,így könnyen megoldani a jelenlegi tudásommal :D
De ha tudtok egy ötletet amivel könnyne meglehet csinálni ezt a jármû mentés/kiszállás ha nem a tiéd dolgokat?
Szívesen meghallgatom,és még meg is köszönném :D