Sziasztok.
Nekem egy olyan problémám van, hogy dinivel szeretném elmenteni a játékos pénzét, de ahogy kilépek, majd vissza nem menti el a pénzt. Egyszerűen nem tudom mi az oka.
Kódok:
(Disconnect alatt)
dini_IntSet(file, \"Szint\", JatekosInfo[playerid][szint]);
dini_IntSet(file, \"Penz\", JatekosInfo[playerid][Penz]);
dini_IntSet(file, \"Admin\", JatekosInfo[playerid][Admin]);
(Bejelentkezéskor)
GivePlayerMoney(playerid,dini_Int(file,\"Penz\"));
JatekosInfo[playerid][szint] = dini_Int(file,\"Szint\");
JatekosInfo[playerid][Admin] = dini_Int(file,\"Admin\");
A jelszót elmenteni, csak a pénzt nem adja vissza belépéskor.
Válaszokat előre is köszönöm
A kód amit megosztottál kevés, viszont a változóba is töltesd be az értéket, ne egyből a pénz barodra.
(( UI: Szélsebességgel tanulj MYSQL-t. ))
JatekosInfo[playerid][Penz] = dini_Int(file,\"Penz\");
GivePlayerMoney(playerid,JatekosInfo[playerid][Penz]);
A kód amit megosztottál kevés, viszont a változóba is töltesd be az értéket, ne egyből a pénz barodra.
(( UI: Szélsebességgel tanulj MYSQL-t. ))
JatekosInfo[playerid][Penz] = dini_Int(file,\"Penz\");
GivePlayerMoney(playerid,JatekosInfo[playerid][Penz]);
Mit kéne még bemásolnom?
M[K]_Sh1ft_ link=topic=65445.msg575669#msg575669 date=1464620870]
Figyelmetlenség...
Lásd
Mikor valaki lelép a szerverről, akkor mentésre kerül a pénz amit a játékos egy változója tartalmaz. (pipa)
(Remélem mikor pénz kap a kedves kliens, nem csak GivePlayerMoney(); fgv.-vel, hanem a játékos változójához is hozzá kerül az összeg...)
Mikor viszont valaki bejelentkezik, akkor a fájlból kiolvassa ugyan a változónkat, de a játékos egyik(pénz nevű) változója 0 marad, ha csak annak sem adsz egy értéket.
Nem igazán értem.
[/quote]
Akkor most egyszerűbben. Szóval mikor egy játékos fel megy a szerverre (tegyük fel nincs pénze és, hogy jó a script) akkor, mikor bejelentkezik, megkapja a pénzt. Lásd:
GivePlayerMoney(playerid,dini_Int(file,\"Penz\"));
Eddig szép és jó, mert most elvileg adott a játékosunknak 0 pénzt.
Tehát a játékos jelenlegi (egyenlege) és a játékos változójának is az értéke 0.
Tegyük fel kap 5000$ mert házhoz vitt 2pizzát.
Most pedig hogy ezt megvalósítsuk, a játékos változóját át kell írni.
JatekosInfo[playerid][Penz] += 5000;//((fontos ha pénzt adsz neki, a változó értékét is át kell írni), nem elég csak a giveplayermoney)
GivePlayerMoney(playerid,5000);//+ezt a kis sort hogy a jobb felső sarokban láthassuk a változást is
Változás:
A játékos változójának,és pénzének az értéke 0 volt ehhez jött 5000
Remek. Most gondolt egyet a játékosunk és lelépett a szerverről.
Akkor most mentsük is az adatokat:
dini_IntSet(file, \"Penz\", JatekosInfo[playerid][Penz]);
Arra akartam kilyukadni, hogy valószínűleg ott rontottad el, hogy nem figyeltél a változódra.
Nos ez volt egy lehetséges megoldás, ami úgy gondolom a legjobb a csíterek ellen.
A másik megoldás:
Mikor kilép ugye ez van:
dini_IntSet(file, \"Penz\", JatekosInfo[playerid][Penz]);
ezt szépen át írod erre:
dini_IntSet(file, \"Penz\", GetPlayerMoney(playerid));
Viszont ha így oldod meg nem sok értelme lesz azon játékos változójának, ami tárolj a pénzt. (Bár ezzel a mondattal lehetne vitatkozni)
Edit/Ui: Mikor meghívódik az onplayer connect javasolnám hogy azonnal nullázd ki a játékost. Értsd: ResetPlayerMoney, JatekesInfo[pid][Penz] =0; JatekesInfo[pid][szint] =0; stb.....
Lehet ez hülyeség amit írok, de én már ezzel szívtam úgy hogy jó ha le nulláz, na m1 ez csak egy tipp