Szerző Téma: Nem jól ment  (Megtekintve 1138 alkalommal)

Nem jól ment
« Dátum: 2016. május 30. - 15:35:34 »
0 Show voters
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

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Nem jól ment
« Válasz #1 Dátum: 2016. május 30. - 15:47:54 »
+1 Show voters
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]);

Nem jól ment
« Válasz #2 Dátum: 2016. május 30. - 16:06:56 »
0 Show voters
Idézetet írta: whadez date=1464616074\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"60639\" data-ipsquote-contentclass=\"forums_Topic
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?

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Nem jól ment
« Válasz #3 Dátum: 2016. május 30. - 16:11:49 »
0 Show voters
A változódba alapvetően nem töltetted be az értéket, hanem egyből a GivePlayerMoney()-al a pénzbárodba insertelted az értéket. Így a változódnak az értéke az alapértelmezett (0) maradt. A kettő kódot amit küldtem másold be, illetve a te általad (a kódodban látható) GivePlayerMoney(); függvényedet töröld, és a kettő sort amit küldtem másold be, majd teszteld.  :-[

Nem jól ment
« Válasz #4 Dátum: 2016. május 30. - 16:29:26 »
0 Show voters
Idézetet írta: whadez date=1464617509\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"60639\" data-ipsquote-contentclass=\"forums_Topic
A változódba alapvetően nem töltetted be az értéket, hanem egyből a GivePlayerMoney()-al a pénzbárodba insertelted az értéket. Így a változódnak az értéke az alapértelmezett (0) maradt. A kettő kódot amit küldtem másold be, illetve a te általad (a kódodban látható) GivePlayerMoney(); függvényedet töröld, és a kettő sort amit küldtem másold be, majd teszteld.  :-[
 
Teszteltem. Nem müködik

Nem elérhető whadez

  • 719
  • DEFEATER
    • Profil megtekintése
Nem jól ment
« Válasz #5 Dátum: 2016. május 30. - 16:31:06 »
0 Show voters
Tisztázzuk.
Tehát, ha lelépsz a szerverről, akkor a Penz \'oszlopod\'-nak az értéke változik?
A betöltés amit küldtem az jó, az legyen bent, a mentéssel valami nem jó. Próbáld meg ki printf-eltetni a pInfo[playerid][Penz] értékedet kilépéskor, és betöltéskor, hogy hol van konkrétan a hiba. Lehet hogy maga a változódnak az értéke nem változik.  ::|

Nem jól ment
« Válasz #6 Dátum: 2016. május 30. - 17:07:50 »
0 Show voters
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 jól ment
« Válasz #7 Dátum: 2016. május 30. - 17:19:43 »
0 Show voters
M[K]_Sh1ft_\" post=\"575669\" timestamp=\"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.
 
[/quote]
Nem igazán értem.

Nem jól ment
« Válasz #8 Dátum: 2016. május 30. - 17:41:05 »
0 Show voters
Idézetet írta: swk.cheese date=1464621583\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"60639\" data-ipsquote-contentclass=\"forums_Topic

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
« Utoljára szerkesztve: 2016. május 30. - 17:52:19 írta _[G]M[K]_Sh1ft_ »

Nem jól ment
« Válasz #9 Dátum: 2016. május 30. - 18:22:25 »
0 Show voters
M[K]_Sh1ft_\" post=\"575685\" timestamp=\"1464622865\"]

 
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.
 
[/quote]
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
 
[/quote]
Teszteltem, és müködik nagyon köszi a segítséget:)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal