Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pytanie przy walce z mobami
awek520
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


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.  



Ten post edytował awek520 21.05.2014, 16:32:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
daniel1302
post
Post #2





Grupa: Zarejestrowani
Postów: 602
Pomógł: 30
Dołączył: 1.08.2007
Skąd: Nowy Sącz

Ostrzeżenie: (0%)
-----


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());
Go to the top of the page
+Quote Post
awek520
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


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..
Go to the top of the page
+Quote Post
sazian
post
Post #4





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


$_GET['numer'] nie id
Go to the top of the page
+Quote Post
awek520
post
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 0
Dołączył: 28.08.2013

Ostrzeżenie: (20%)
X----


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


Ten post edytował awek520 21.05.2014, 22:18:15
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:22