Szerző Téma: Dini-vel összebugol több karakter  (Megtekintve 1221 alkalommal)

Dini-vel összebugol több karakter
« Dátum: 2022. Január 15. - 17:15:48 »
0
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!

Nem elérhető CMike

  • 332
  • FB.COM/sampdayrpg
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #1 Dátum: 2022. Január 15. - 20:11:10 »
0
Kodot is masolnod kell, maskepp nem fogunk tudni segiteni
Egy új project-en dolgozom!
server28.clans.hu:7793
FB.COM/UJSAMP

Re:Dini-vel összebugol több karakter
« Válasz #2 Dátum: 2022. Január 15. - 20:47:14 »
0
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;
« Utoljára szerkesztve: 2022. Január 16. - 08:25:11 írta ZyZu. »

Nem elérhető BigTics

  • 1573
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #3 Dátum: 2022. Január 15. - 21:12:48 »
0
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
« Utoljára szerkesztve: 2022. Január 15. - 21:14:50 írta BigTics »

Re:Dini-vel összebugol több karakter
« Válasz #4 Dátum: 2022. Január 15. - 23:19:32 »
0
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.
« Utoljára szerkesztve: 2022. Január 15. - 23:26:47 írta ripme0 »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #5 Dátum: 2022. Január 16. - 08:24:55 »
0
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)
« Utoljára szerkesztve: 2022. Január 16. - 08:41:48 írta ZyZu. »

Nem elérhető CMike

  • 332
  • FB.COM/sampdayrpg
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #6 Dátum: 2022. Január 16. - 13:03:49 »
0
Szerintem ott valami a GetNev funkcioval lesz
Egy új project-en dolgozom!
server28.clans.hu:7793
FB.COM/UJSAMP

Re:Dini-vel összebugol több karakter
« Válasz #7 Dátum: 2022. Január 16. - 14:41:30 »
0
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.
   }
}


Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #8 Dátum: 2022. Január 16. - 17:54:56 »
0
Nincs meg a betöltésnél neked egy !

if(!dini_Exists(file))

Re:Dini-vel összebugol több karakter
« Válasz #9 Dátum: 2022. Január 16. - 18:06:45 »
0
stocknál?

Nem elérhető Sramm

  • 596
    • Profil megtekintése
Re:Dini-vel összebugol több karakter
« Válasz #10 Dátum: 2022. Január 17. - 23:03:51 »
0
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.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal