Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Awansowanie poziomu
Forum PHP.pl > Forum > PHP
Maciek316
Witam, mam napisany taki skrypt na awansowanie do kolejnego poziomu:
  1. function lvlup(){
  2. $poziom = Array(0,5,7,12,20,30,35,50,80,125);
  3.  
  4. $lvl = all("select * from users where exp >= exp_lvl");
  5. if(is_array($lvl)){
  6. foreach($lvl as $lvls){
  7. query("update users set lvl = lvl + 1, exp = exp - exp_lvl, exp_lvl = ".$poziom[$lvls->lvl+1]." where exp >= exp_lvl");
  8. } }
  9. }

Tyle ze czasem gracz o nizszym poziomie dostaje wymog doswiadczenia gracza o wyzszym poziomie. Tak jakby awansowali w tym samym czasie i cos sie zbugowalo.
Co jest nie tak?

trueblue
Po co ten update jest wykonywany w pętli?
Maciek316
Żeby brało pod uwagę każdego kto w danym czasie awansuje ;p
Tomplus
Wg mnie coś nie tak jest tutaj:
exp >= exp_lvl

Najpierw pobierasz listę graczy którzy spełniają ten warunek, a potem w SQL dodajesz taki sam, przy czym wcześniej nadajesz nową wartość exp_lvl.

W twoim wypadku wystarczy aby nadać tam id = :userId
Maciek316
Calkiem mozliwe ze to wlasnie to bylo bledem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.