Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pytanie przy walce z mobami
Forum PHP.pl > Forum > PHP
awek520
Witam.. Zrobiłem taki mały system walki z mobami, do testowania i wgl smile.gif Na początku jak mam z bazy wybrac ID odpowiadające temu z linku ? funkja GET? nie działa mi to ciągle : /

Chciałbym zapytac jak zrobic, zeby powiedzmy graczowi z 30 poziomem pokazywały się tylko potworki z poziomu 20, +, + ,+ 40 ?
A i jeszcze jedno pytanko.. chodzi o samą walkę.. ostatnia już tura, gdy ktoś zginie, to jeszcze przed "śmiercią" uda mu się zabic 2.. i wtedy nie ma remisu tylko wygrana jednego z graczy.. czemu ? próbowałem robic if'y ale nic z tego nie wyszlo.. : /


Oto kodzik:

Proszę o pomoc..

  1.  
  2. <?php
  3. if($_GET['numer']!=''){
  4. $monster=mysql_query("SELECT * FROM monster WHERE id = ID ? LIMIT 1");
  5.  
  6. if(mysql_num_rows($monster)!==1){
  7. echo 'Taki potwór nie istnieje!';
  8. }
  9.  
  10. else {
  11. $atakujacy=mysql_query("SELECT * FROM users WHERE login='".$_SESSION['login']."' LIMIT 1");
  12. $atakujacy=mysql_fetch_assoc($atakujacy);
  13. $monster=mysql_fetch_assoc($monster);
  14. $atakujacy['hp']=$user['hp'];
  15. if($user['hp']>0) {
  16.  
  17. echo 'Twoja postac: '.$atakujacy['login'].' | '.$atakujacy['hp'].'<br>';
  18. echo 'Potwór: '.$monster['nazwa'].' | '.$monster['hp'].'<br><br><br>';
  19.  
  20. for($i=0;$i<7;$i++){
  21. $cios=(int)($atakujacy['str']+$atakujacy['sta']/2+rand($atakujacy['dex'], $atakujacy['dex']*2));
  22. $monster['hp']-=$cios;
  23. echo '<font color="green">'.$atakujacy['login'].'</font> zaatakował <font color="red">'.$monster['nazwa'].'</font> Zabierając mu <b>'.$cios.'</b> pkt życia ['.$atakujacy['hp'].']<br>';
  24.  
  25. $cios=(int)($monster['str']+$monster['sta']/2+rand($monster['dex'], $monster['dex']*2));
  26. $atakujacy['hp']-=$cios;
  27. echo '<font color="red">'.$monster['nazwa'].'</font> zaatakował <font color="green">'.$atakujacy['login'].'</font> Zabierając mu <b>'.$cios.'</b> pkt życia ['.$monster['hp'].']<br><br>';
  28.  
  29. if($monster['hp']<=1){
  30. mysql_query("UPDATE users SET hp=($atakujacy[hp]), xp=xp+($monster[xp]), cash=cash+($monster[cash]) WHERE id=$atakujacy[id]");
  31. echo '<font color="green">Wygrana walka! </font> Zyskujesz '.(int)($monster[cash]).'$ a także '.(int)($monster[xp]).' punktów doświadczenia';
  32. break;
  33. }
  34. elseif ($atakujacy['hp']<=1){
  35. mysql_query("UPDATE users SET przegrane=przegrane+1, xp=xp-($atakujacy[xp]/20), hp=0, cash=cash-($atakujacy[cash]/5) WHERE id=$atakujacy[id]");
  36. echo '<font color="red">Przegrana walka! </font> Tracisz '.(int)($atakujacy[cash]).'$ a także '.(int)($atakujacy[xp]).' punktów doświadczenia';
  37. break;
  38. }
  39. elseif ($i>5){
  40. mysql_query("UPDATE users SET hp=($atakujacy[hp]) WHERE id=$atakujacy[id]");
  41. echo 'REMIS';
  42. }
  43. }
  44. }
  45. else {
  46. echo 'Jesteś martwy! <a href="game.php?a=med">Ulecz się!</a>';
  47. }
  48. }
  49. }
  50.  
  51. ?>
  52.  
  53. <br><br>
  54. <?
  55. //*Wyświetlana lista potworów*//
  56.  
  57. $result = mysql_query("SELECT * FROM monster ORDER BY id ASC") or die(mysql_error());
  58. while ($dane=mysql_fetch_array($result)) {
  59.  
  60. echo '<br><a href="game.php?a=wal_potwor&numer='.$dane['id'].'">'.$dane['nazwa'].'</a> Walcz!<br>';
  61. }
  62. ?>
  63.  

daniel1302
Zacznę od tyłu od pytania nr 2)
Musisz pierwsze sprawdzić czy obaj nie żyją czy hp zaatakowanego jest mniejsze bądź równe 0 i czy atakujący ma mniej bądź 0 hp. Musisz to dać przed linią 29 i zapoznań się jak dziala struktura if elseif.

Jeśli masz strukturę if elseif i np jakiś warunek w pierwszym if'ie bedzie prawdziwy to else if(ten drugi) jest jakby ignorowany, parser go nie sprawdza.

1)
Załóżmy, że $poziom to level playera oraz w tabeli monster poziom potwora przechowuje kolumna level. Teraz mamy takie zapytanie:

$result = mysql_query("SELECT * FROM monster WHERE level>'.$poziom-10 .' AND level<'.$poziom+10 .' ORDER BY id ASC") or die(mysql_error());
awek520
To miałem tak napisane.. no ale nie działało mi to : / Miałem to na 38 linijce i chyba dlatego : /

Sprawdze to zaraz co i jak smile.gif

A co do tego, żeby z linku "game.php?a=wal_potwor&numer='.$dane['id'].'"" byla przekazywana informacja, że walczymy np. z ID = 1.. jak zrobic te zapytanie?

"$monster=mysql_query("SELECT * FROM monster WHERE id = ID ? LIMIT 1");"

questionmark.gif

Próbuje od godziny i nic.. Mam tak, id='".$_GET['id']."' no ale wywala błąd że taki potwór nie istnieje.. id zwraca pusta informacje jak sprawdzałem..
sazian
$_GET['numer'] nie id
awek520
Ahaa.. a tak kombinowałem.. ale mi to nie pasowało ciągle ; / bo jak id z numerem..

Ale dziękuje bardzo.. wszystko działa jak nalezy smile.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.