GTA Közösség - A magyar GTA fórum
Grand Theft Auto: Közösség => Általános => A témát indította: ripme0 - 2022. január 15. - 17:15:48
-
Sziasztok! A problémám annyi lenne, hogy mai nap felhívtam egy barátomat a szerveremre, amit már több éve írok. Először feljött, beregisztrált minden oké, lelépett majd vissza, és az Én mentett dolgaimat kapta meg, a jelszó kivételével. Disconnectnél levan nullázva minden érték, miután lementette a játékos értékeit, de összebuggol, és már nem tudom mit tudnék vele tenni. Ha esetleg valaki tudna segíteni, azt megköszönném.:) Remélem érthetően írtam, további szépeket!
-
Kodot is masolnod kell, maskepp nem fogunk tudni segiteni
-
azt tudom, hogy előbb menteni kell, utána nullázni annak fejébe, hogy ne legyen az, ami a problémám jelenleg, de valahogy nem adja ki a dolog.
public OnPlayerDisconnect(playerid, reason)
{
new dcstring[256];
new file[128];
GetNev;
format(dcstring,sizeof(dcstring),"[AC-LOG][ID: %d] %s elhagyta a szervert!",playerid, nev);
SendAdminMessage(-1,dcstring);
format(file,sizeof(file),"/Karakterek/%s.ini",nev);
if(fexist(file) && playerlogin[playerid] == 1)
{
dini_IntSet(file,"Szint", playerInfo[playerid][Szint]);
dini_IntSet(file,"Penz", playerInfo[playerid][Penz]);
dini_IntSet(file,"DoorDashErtekeles", playerInfo[playerid][DoorDashErtekeles]);
nyilván van több mentés is, de az egészet hadd ne másoljam be
}
playerInfo[playerid][Szint] = 0;
playerInfo[playerid][Penz] = 0;
playerInfo[playerid][DoorDashErtekeles] = 0;
pár killtimer
textdrawhideok
}
return 1;
-
playerid az a szerveren lévő idja? egy sornyi kódot se írtam, de én elsőre a leírtak alapján arra gondolok, hogy id-t cseréltetek, amikor visszaléptetek akkor arra az idre mentett dolgokat kapta vissza a bejelentkezett játékos
-
igen, de az a te id-d. ha csak simán id lenne az a másik játékos idje. ergo muszáj vagyok playeridt használni. legalábbis én így látom/tudom.
-
Nézd meg ha kilép a játékos normálisan mentődik minden? Ha igen akkor a betöltésnél valami nincs rendben. Ha más játékos adatait kapjátok meg akkor a név ellenőrzésnél nincs valami rendben. Másold be a betöltést nekem.
ennek a helyére pedig
if(fexist(file) && playerlogin[playerid] == 1)
ezt ragd inkább, írd ki normálisan a dini ellenőrzéssel..
if(dini_Exists(file) && playerlogin[playerid] == 1)
-
Szerintem ott valami a GetNev funkcioval lesz
-
A GetNev funkció csak egy #define GetNev GetPlayerName(playerid,nev,sizeof(nev)) egyszerűsítés.
A betöltés pedig a bejelentkezésnél, dialogra reagálva:
format(file,sizeof(file),"/Karakterek/%s.ini", nev);
if(dini_Exists(file))
{
new pw = dini_Int(file, "Jelszo");
if(udb_hash(inputtext) == pw)
{
playerLoad(playerid); azóta átraktam a betöltést stockba, hátha.
SpawnPlayer(playerid);
}
else
{
SendClientMessage(playerid,HIBA,"[HIBA] Rossz adatot adtál meg!");
printf("[LOG] %s bejelentkezése sikertelen volt!",nev);
Kick(playerid);
}
}
a stockos betöltés pedig:
stock playerLoad(playerid)
{
GetNev;
new file[128];
format(file,sizeof(file),"/Karakterek/%s.ini", nev);
if(dini_Exists(file))
{
Belepve[playerid] = 1;
ResetPlayerMoney(playerid);
playerInfo[playerid][Szint] = dini_Int(file,"Szint"), TextDrawSetString(LEVEL[playerid], playerInfo[playerid][Szint]);
playerInfo[playerid][Skin] = dini_Int(file,"Skin"),SetPlayerSkin(playerid, playerInfo[playerid][Skin]);
playerInfo[playerid][Penz] = dini_Int(file,"Penz");
itt is van egy rakás betöltés.
}
}
-
Nincs meg a betöltésnél neked egy !
if(!dini_Exists(file))
-
stocknál?
-
Nézd meg ha kilép a játékos normálisan mentődik minden? Ha igen akkor a betöltésnél valami nincs rendben. Ha más játékos adatait kapjátok meg akkor a név ellenőrzésnél nincs valami rendben. Másold be a betöltést nekem.
ennek a helyére pedig
if(fexist(file) && playerlogin[playerid] == 1)
ezt ragd inkább, írd ki normálisan a dini ellenőrzéssel..
if(dini_Exists(file) && playerlogin[playerid] == 1)
Ez teljesen mindegy, a két függvény ugyan azt csinálja, tehát az eredeti megoldás is "normális". A probléma valóban a GetNev környékén keresendő, a "nev" egy globális változó, amit minden alkalommal felülírsz, mikor lekéred valaki nevét. Valószínűleg emiatt kavarodik meg, mert mire a barátod eljut ahhoz a részhez, hogy a névvel kitöltöd a fájl olvasást, már a te neved van benne. Használj lokális változót inkább. Ha elfogadsz egy jó tanácsot, így semiképpen se rövidíts függvényt, mert átláthatatlan lesz, és ilyen formában nem is illik.