Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: system poziomów
Forum PHP.pl > Forum > PHP
kylu31
Witam robie gre i chciałbym zrobić jakiś fajny sytem lvli ale ,żeby go napisać musze was poprosić o pomoc. Czy mógłby ktoś napisać mi kod który wczytuje pliki z pliku np. lvl.txt w którym są poziomy z exp'em dka postaci czyli lvl | exp np :
1 | 0
2 | 200
3 | 500
...
500 | 5000000

i właśnie potrzebuje kod jakiś w stylu ,że wczytuje te dane z pliku np. lvl.txt i jeśli zmienna $exp ma np. 150 exp to będzie pisało ,że ma lvl 2 ^^

PS. nie umiem tłuaczyć i daje POMÓGŁ !
uirapuru
kylu: nikt tu nie robi za 'pomógł', możemy Cię nakierować na odpowiednie rozwiązania i sugerować lepsze niż obrałeś wink.gif zainteresuj się funkcjami file_get_contents() oraz explode(), nic więcej nie potrzebujesz smile.gif
drozdii07
Możesz jeszcze zrobić to na bazie danych smile.gif Łatwiejsze i chyba szybsze rozwiązanie.
kylu31
Teraz mam inny problem smile.gif zrobiłem system w mysql i teraz mam taki problem ,że mam takie tabele :
$lvl - Lvl
$min_exp - minimum exp do lvl
$max_exp - maksymalny exp do lvl

np.
mam tabele
lvl min_exp max_exp
1 0 500
2 501 1000
3 1001 1900

i powiedzmy ,że ktoś ma 659 exp to powinno mu pokazywać ,że ma lvl 2 smile.gif

I właśnei czy ktoś mi to zrobi/pokaże jak to zrobić ?

chodzi mi ocoś takiego ,że jesli jego exp jest wiekszy nisz $min_exp i mniejszy nisz $max_exp to pokazuje lvl np. 2 biggrin.gif

Dzięki i pozdrawiam Kylu31
Kamil Rybczyński
Robisz mysql_fetch_array z bazy wyciągając wszystkie levele:

  1. $sql_query = mysql_query('SELECT * FROM levels ORDER BY id asc');
  2. while($row = mysql_fetch_array($sql_query)){
  3.  
  4. if($user_level >= $row['min_exp'] & $user_level <= $row['max_exp']){
  5. echo "Twój level to '.$row['lvl'];
  6. }
  7.  
  8. }


Można to zrobić bardziej optymalnie, ale takie rozwiązanie spokojnie wystarczy.
Chociaż ja na Twoim miejscu elementy, które rzadko będą się zmieniać,
trzymałbym w tablicy w pliku php. Nie ma sensu obciążać sobie bazy takimi zapytaniami.

Możesz zrobić sobie też prostą funkcję,
która będzie przechowywać te wszystkie if'y.

  1. function check_level($user_exp){
  2. if($user_exp >= 0 & $user_exp <= 500){
  3. echo 'Twój level to 1';
  4. }elseif($user_exp >= 501 & $user_exp <= 1000){
  5. echo 'Twój level to 2';
  6. }elseif($user_exp >= 1001 & $user_exp <= 1900){
  7. echo 'Twój level to 3';
  8. }
  9.  
  10. }


I robisz tylko wywołanie funkcji check_level($user_exp);
Ja bym wybrał to drugie rozwiązanie lub jego pochodną. Będziesz miał dużo poważniejsze elementy do trzymania w bazie.
Giluś
Takie coś zrób:
Pobierz PD (punkty doświadczenia) z tabelki usera i punkty doświadczenia jakie musi posiadać na danym levelu coś takiego:

  1. if($gracz['pd'] >= $pd){
  2. $upd = mysql_query("UPDATE `gracze` SET `poziom` = `poziom` + 1, `pd` = `pd` - '".$pd."' WHERE `gracz` = '".$_SESSION['user']."'");
  3. }


Działa to na takiej zasadzie, że na start user ma 1lvl i 0exp, z postępem gry dostaje więcej expa i jak w jego mysql będzie więcej (lub równo) niż exp wymagany to wtedy wykonuje się warunek, i dodaje się poziom i usuwa się np nadmiar pd (bo jak bd się usuwało całe pd to też źle bo czasami za jakąś akcje dostaniemy 140% expa na poziom, a tu nam usunie 100% na odpowiedni lvl i dodatkowo 40% - chyba mnie rozumiesz )

Później informacja o wyższym poziomie

  1. if($upd) echo "LVL UP";


Pozdrawiam.
cer98
Polecam poczytać o Vallheru - silniku do gier MMO na przeglądarke
kylu31
cer93 nie lubie brać pomysłów z innych gier ^^

Kamil Rybczyński Wole zamulic troche baze i tak mam mało graczy smile.gif ps. na functionach nie chce mi się bawić haha.gif i masz Pomógł

Giluś O tym myślałem ale takie coś mi nie podchodzi wink.gif
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.