-
Sziasztok.
Lenne egy kérdésem, még pedig az hogy-hogy lehet úgy írni a játékos filejába értéket hogy azt egyből át is írja?
Én csináltam egy RP Tesztet és a végén megszeretném változtattni az RP Teszt értékét 1 -re hogy ne kérje már bejelentkezésnél.
Valami hiba lehet vele..itt a kód.
Köszönöm előre a segítséget.
U.I: Tanuló y_iniző vagyok.. :(
if(dialogid == DIALOG_SIKERES)
{
if(response)
{
GivePlayerMoney(playerid, PlayerInfo[playerid][pPenz]);
new INI:File = INI_Open(UserPath(playerid));
INI_WriteInt(File,\"RPTeszt\",1);
INI_Close(File);
SendClientMessage(playerid, -2,\"Sikeres RP Teszt, kapsz egy kis kezdőpénzt a kellő eszközök beszerzéséhez.\");
}
else
{
Kick(playerid);
}
}
-
Másold be a UserPath(playerid) stockot.. szerintem nem találja a mappát és nincs hova mentse az értéket, másold be lássam mi az.
-
stock UserPath(playerid)
{
new string[258],playername[MAX_PLAYER_NAME];
GetPlayerName(playerid,playername,sizeof(playername));
format(string,sizeof(string),MAPPA,playername);
return string;
}
Elnézést hogy eddig nem reagáltam :(..
Itt van az UserPath függvény
-
Kell legyen egy #define MAPPA \"\" azt is másold.
-
#define MAPPA \"/Tagok/%s.ini\"
Természetesen létezik a mappa a scriptfiles mappában, és működik is de én azonnali mentéseket szeretnék beleírni a játékos fájlaiba.
Szóval egy műveletnél írja át az egyik sor értékét egyből.
Ennél jobban nem tudom elmagyarázni az a legnagyobb baj...
-
Ha soronként akarod, akkor be kell \"Tag\"-elni azt az adott adattömböt, amit szeretnél töltögetni, ha egyesével akarod, akkor soronként kellene egy tag.
INI_SetTag(File,\"ertek\");
Ez így fog kinézni a forrásban:
[ertek]
RPteszt = 1 // Vagy valami hasonló fejből nem tudom az összes lehetséges szintaktikát, de a tag a lényeg.
Aztán a lényeg ha beolvasod, akkor fontos megadni a \"Tag\"-et a callbacknél.
...\"Jatekos_Adatainak_Betoltese_%s_%s\",UserPath(playerid),\"ertek\"......);
Tehát az elérés után még hozzárakod a \"Tag\"-et, így csak az adott részt fogja figyelni, és mivel abban, ha úgy állítod be, akkor csak 1 sort fog figyelni.
Ennyi információból, ezt tudtam kihozni.
-
Köszönöm Mark hogy mindig segítesz nekünk :) Az a vicces hogy ezt a variánst már megálmodtam én is.. suli után megpróbálom így :D És majd írok hogy mi a helyzet :P Addig is köszönök nektek mindent ZyZu és Mark :)
-
[data]
Jelszó = 216269482
Admin = 0
AdminDuty = 0
Pont = 0
Pénz = 1500
Nem = 0
Kor = 0
Magasság = 0
Súly = 0
Ruha = 60
Frakció = 0
FrakcióSzint = 0
Munka = 0
JogosítványA1 = 0
JogosítványA = 0
JogosítványB = 0
JogosítványD = 0
RPTeszt = 0
X = 1063.098754
Y = 1037.504394
Z = 10.158012
Angle = 318.182556
Élet = 100.000000
Páncél = 0.000000
[RPTeszt]
RPTeszt = 1
Nem egészen értem azt hogy betöltésnél mit hova kéne írni abból amit leírtál.... mellesleg nem tudom felfogni hogy miért készít új sort ugyan azzal az elnevezéssel..
Jelenleg így néz ki betöltésnél..
INI_Int(\"RPTeszt\",PlayerInfo[playerid][pRP]);
-
Elmagyarázom :D
A Y_INI a gyorsabb működés elve szerint, lehetőséget ad Tag-ek használatára. Ha megadod melyik \"Tag\" csoportot szeretnéd kezelni, akkor a többit figyelmen kívül hagyja.
Betöltésnél megadhatod, melyik fájlból, és melyik Tag csoportból olvasson ki.
Viszont, szerepelhet egy ugyanolyan érték, több Tag csoportnál is, (lásd neked az RP teszt),mivel az egyiket figyeli csak.
Betöltésnél pedig, úgy kell betölteni, hogy meg kell adni, hogy melyik Tag-ből szeretnéd kiolvasni az adott értéket.
INI_ParseFile(\"myfile.ini\", \"Callback_%s_RPTeszt\", ......);
public Callback_myfile_ini_RPTeszt(.....); // Stb.
{
INI_Int(\"RPTeszt\",pInfo[playerid][pRP]);
return 1;
}
Mentésnél szintúgy, megadsz egy Tag-et,
INI_SetTag(file,\"RPTeszt\"); // Így biztosan az RPTeszt \"Tag\"-nél lévő értékeket fogja kezelni !
INI_WriteInt(file,\"RPTeszt\",1); // itt pedig beleírod az értéket.
Tehát lényegében, mindig csak az adott Tag értékét fogja kezelni, a többitől nem veszi \"számításba\".
-
Köszönöm szépen a segítségeteket !!
Végre sikerült felemészteni amit írtál Márk! :)
U.i.: Zárható a téma, még mindig nem találtam meg hogy hol kell lezárni.. :))
-
Még egy kérdés betöltésnél hogy írjam a tag-et?
-
Van valami ilyesmi kódod :
INI_ParseFile(\"jatekosfile.ini\",\"JatekosBetoltes_%s_RPTeszt\",UserPath(playerid)..........); // Vagy valami ilyesmi, lényeg, hogy a \"%s\" után rakod a Tag-et. \"_RPTeszt\"
-
INI_ParseFile(UserPath(playerid), \"LoadUser_%s_azonnal\", .bExtra = true, .extra = playerid);
Így se jó pedig a tag elnevezése az \"azonnal\"
-
Ezt még utána kell rakni, hogy a tag-eket figyelembe vegye.
.extre = playerid, .bPassTag = true
Illetve a callbacknél is kell egy (tag[],playerid,...)
-
C:\\Users\\Krisztian\\Desktop\\NEW\\gamemodes\\Y_INI.pwn(203) : error 017: undefined symbol \"extre\"
C:\\Users\\Krisztian\\Desktop\\NEW\\gamemodes\\Y_INI.pwn(203) : warning 215: expression has no effect
C:\\Users\\Krisztian\\Desktop\\NEW\\gamemodes\\Y_INI.pwn(203) : error 029: invalid expression, assumed zero
C:\\Users\\Krisztian\\Desktop\\NEW\\gamemodes\\Y_INI.pwn(203) : error 017: undefined symbol \"bPassTag\"
C:\\Users\\Krisztian\\Desktop\\NEW\\gamemodes\\Y_INI.pwn(203) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
be raktam de errorozik..
-
az extra-t elírtam, azt javitsd ki, és úgy jó lessz. Egyébként így a Y_INI sokkal bonyolúltabb mint a MySQL, legalább is én úgy gondolom :)
-
Nekem még mindig a Dini a szimpatikus de nem tehetem azt hogy sz*rral drukkoljak elő.. :D
-
Ez nem fog menni nekem.. tiszta ideg vagyok már :D
-
Én az első \"játékmód\"-om dinibe írtam, tanulásra tökéletes, megtanulhatod a rendszereket felépítését, aztán áttérni MySQL-re már csak egy \"csettintés\", itt a rendszerek jelentik a lényeget. Habár az sem árt, ha nem esik össze a mód :) Azt javaslom kezd el megtanulni a MySQL-t. Roppant egyszerű, ha érdekel 2-3 nap alatt megtanulod, persze jó tanár(ok) kellenek hozzá.