Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odpoczynek-problem z if'em
Forum PHP.pl > Forum > Przedszkole
ArekJ
Witam,
piszę modyfikację odpoczynku do skryptu gry RPG, ale niestety napotkałem problem. Chce osiągnąć takie coś, że czynność(w tym wypadku odpoczynek) musi trwać X minut, a przez ten czas nie można nic wykonywać. Nie wiem zabardzo gdzie tkwi problem, ale IF sprawdzający czy śpię czy nie jest olewany przez serwer.
Kod:
  1. <?php
  2. $title = 'Dziurawy Kocioł';
  3. $title1 = 'Dziurawy Kocioł';
  4.  
  5. require_once('includes/head.php');
  6.  
  7. if ($player -> location != 'Altara') error ('Zapomnij o tym');
  8.  
  9. $czasczynnosci = var_dump($player -> czasczynnosci);
  10.  
  11. echo $czasczynnosci;
  12.  
  13. if ((int)$player -> czasczynnosci <= time())
  14. {
  15.  
  16. $cost = array(($player -> level * 3), ($player -> level * 5), ($player -> level * 10));
  17.  
  18.  
  19. $smarty -> assign (array('Cost' => $cost[0],'Cost2' => $cost[1],'Cost3' => $cost[2]));
  20.  
  21.  
  22. if(isset ($_GET['pokoj']) && isset ($_GET['step']) && $_GET['step'] == 'wybierz'){
  23.  
  24.  
  25.  
  26. if ($_GET['pokoj'] == 'maly')
  27. {
  28.     if ($player -> credits < $cost[0]) error ('Nie masz tyle pieniędzy!');
  29.  
  30.        $czas = time()+180;
  31.        $zapytanie = mysql_query('UPDATE players SET czasczynnosci = '.$czas.' WHERE id='.$player -> id)  or die(mysql_error());
  32.    
  33.           if($player -> energy + 1 > $player -> max_energy)
  34. {
  35.       $db -> Execute('UPDATE players SET credits=credits-'.$cost[0].', energy=max_energy WHERE id='.$player -> id);
  36. }
  37.           else
  38. {
  39.        
  40.           $db -> Execute('UPDATE players SET credits=credits-'.$cost[0].', energy= energy+0.5 WHERE id='.$player -> id);
  41. }
  42. }
  43.  
  44.  
  45.  
  46. if ($_GET['pokoj'] == 'sredni')
  47. {
  48.  
  49.     if ($player -> credits < $cost[1]) error ('Nie masz tyle pieniędzy!');
  50.  
  51.        $czas = time()+300;
  52.        $zapytanie = mysql_query('UPDATE players SET czasczynnosci = '.$czas.' WHERE id='.$player -> id)  or die(mysql_error());
  53.  
  54.           if($player -> energy + 1.5 > $player -> max_energy)
  55. {
  56.       $db -> Execute('UPDATE players SET credits=credits-'.$cost[1].', energy=max_energy WHERE id='.$player -> id);
  57. }
  58.           else
  59. {
  60.        
  61.           $db -> Execute('UPDATE players SET credits=credits-'.$cost[1].', energy= energy + 1.5 WHERE id='.$player -> id);
  62. }
  63.  
  64. }
  65.  
  66.  
  67.  
  68. if ($_GET['pokoj'] == 'duzy') {
  69.  
  70.     if ($player -> credits < $cost[2]) error ('Nie masz tyle pieniędzy!');
  71.  
  72.        $czas = time()+420;
  73.        $zapytanie = mysql_query('UPDATE players SET czasczynnosci = '.$czas.' WHERE id='.$player -> id)  or die(mysql_error());
  74.  
  75.    $db -> Execute('UPDATE players SET credits=credits-'.$cost[2].', energy=max_energy WHERE id='.$player -> id);
  76.  
  77.  
  78. }
  79.  
  80. }else{
  81. if(!isset($_GET['pokoj'])) $_GET['pokoj'] = '';
  82.  
  83.    $_GET['step'] = '';
  84.  
  85. }
  86. }
  87. else
  88. {
  89. echo 'Spisz';
  90. }
  91.  
  92. $smarty -> assign (array('Pokoj' => $_GET['pokoj'], 'Step' => $_GET['step']));
  93.  
  94. $smarty -> display ('hotel.tpl');
  95.  
  96. require_once('includes/foot.php');
  97.  
  98. ?>

Z góry dzięki za odpowiedź!
erix
Cytat
piszę modyfikację odpoczynku do skryptu gry RPG

Tak nawiasem, hostingi niezbyt przychylnym okiem patrzą na Vallheru. tongue.gif

Cytat
Nie wiem zabardzo gdzie tkwi problem, ale IF sprawdzający czy śpię czy nie jest olewany przez serwer.

Masz błąd w logice warunku; powinno być coś w tym stylu:

JEŻELI (time_podjęcia_akcji+czas_blokady>=time()){
śpi;
}
ArekJ
Dobra potem spróbuję. A co do patrzenia na Vallheru... Z vallheru zostawiłem tylko karczmę i bank, resztę sam pisze smile.gif
P.S. A przynajmniej się staram bo nie zawsze mi to jak widać wychodzi tongue.gif

Witam,
na początku przepraszam za 2 posty pod sobą. Potem przepraszam, że tak długo, ale miałem problemy z internetem...
A więc. Napisałem tak:
  1. <?php
  2. $title = 'Dziurawy Kocioł';
  3. $title1 = 'Dziurawy Kocioł';
  4.  
  5. require_once('includes/head.php');
  6.  
  7. if ($player -> location != 'Altara') error ('Zapomnij o tym');
  8.  
  9. if ((int)$player -> czasczynnosci+startczynnosci>=time())
  10. {
  11. echo 'Śpisz';
  12. }
  13. else
  14. {
  15.  
  16. $cost = array(($player -> level * 3), ($player -> level * 5), ($player -> level * 10));
  17.  
  18.  
  19. $smarty -> assign (array('Cost' => $cost[0],'Cost2' => $cost[1],'Cost3' => $cost[2]));
  20.  
  21.  
  22. if(isset ($_GET['pokoj']) && isset ($_GET['step']) && $_GET['step'] == 'wybierz'){
  23.  
  24.  
  25.  
  26. if ($_GET['pokoj'] == 'maly')
  27. {
  28.     if ($player -> credits < $cost[0]) error ('Nie masz tyle pieniędzy!');
  29.  
  30.        $zapytanie1 = mysql_query('UPDATE players SET czasczynnosci = 180 WHERE id='.$player -> id)  or die(mysql_error());
  31.    $zapytanie2 = mysql_query('UPDATE players SET startczynnosci = time() WHERE id='.$player -> id)  or die(mysql_error());
  32.    $zapytanie3 = mysql_query('UPDATE players SET czynnosc = Śpisz WHERE id='.$player -> id)  or die(mysql_error());
  33.    
  34.           if($player -> energy + 1 > $player -> max_energy)
  35. {
  36.       $db -> Execute('UPDATE players SET credits=credits-'.$cost[0].', energy=max_energy WHERE id='.$player -> id);
  37. }
  38.           else
  39. {
  40.        
  41.           $db -> Execute('UPDATE players SET credits=credits-'.$cost[0].', energy= energy+0.5 WHERE id='.$player -> id);
  42. }
  43. }
  44.  
  45.  
  46.  
  47. if ($_GET['pokoj'] == 'sredni')
  48. {
  49.  
  50.     if ($player -> credits < $cost[1]) error ('Nie masz tyle pieniędzy!');
  51.  
  52.        $czas = time()+300;
  53.        $zapytanie = mysql_query('UPDATE players SET czasczynnosci = '.$czas.' WHERE id='.$player -> id)  or die(mysql_error());
  54.  
  55.           if($player -> energy + 1.5 > $player -> max_energy)
  56. {
  57.       $db -> Execute('UPDATE players SET credits=credits-'.$cost[1].', energy=max_energy WHERE id='.$player -> id);
  58. }
  59.           else
  60. {
  61.        
  62.           $db -> Execute('UPDATE players SET credits=credits-'.$cost[1].', energy= energy + 1.5 WHERE id='.$player -> id);
  63. }
  64.  
  65. }
  66.  
  67.  
  68.  
  69. if ($_GET['pokoj'] == 'duzy') {
  70.  
  71.     if ($player -> credits < $cost[2]) error ('Nie masz tyle pieniędzy!');
  72.  
  73.        $czas = time()+420;
  74.        $zapytanie = mysql_query('UPDATE players SET czasczynnosci = '.$czas.' WHERE id='.$player -> id)  or die(mysql_error());
  75.  
  76.    $db -> Execute('UPDATE players SET credits=credits-'.$cost[2].', energy=max_energy WHERE id='.$player -> id);
  77.  
  78.  
  79. }
  80.  
  81. }else{
  82. if(!isset($_GET['pokoj'])) $_GET['pokoj'] = '';
  83.  
  84.    $_GET['step'] = '';
  85.  
  86. }
  87. }
  88.  
  89. $smarty -> assign (array('Pokoj' => $_GET['pokoj'], 'Step' => $_GET['step']));
  90.  
  91. $smarty -> display ('hotel.tpl');
  92.  
  93. require_once('includes/foot.php');
  94.  
  95. ?>

I niestety wywala mi...
Something is wrong in your syntax obok ') WHERE id=1' w linii 1
Przy próbie odpoczynku. Można prosić o sugestie?
erix
  1. UPDATE players SET startczynnosci = time()

Poczytaj o polach timestamp w MySQL, bo funkcji time" title="Zobacz w manualu PHP" target="_manual w nim nie ma. tongue.gif
mike
Cytat(erix @ 24.11.2008, 22:17:55 ) *
  1. UPDATE players SET startczynnosci = time()

Poczytaj o polach timestamp w MySQL, bo funkcji time" title="Zobacz w manualu PHP" target="_manual w nim nie ma. tongue.gif
TIME() Poczytaj mówisz ... ? tongue.gif
ArekJ
Nie za bardzo moge tam cos zmalezc... sad.gif A moge wczesniej zadeklarowac $time = time(); i potem tylko wstawiac do zapytania wynik?
erix
~mike - oooo, ale to i tak nie w tym kontekście. winksmiley.jpg Dobrze wiesz, którą funkcję miałem na myśli. ;P

~ArekJ - zajrzyj tam, gdzie zalinkował ~mike
ArekJ
Dobra dzieki! Mam nadzieje, ze jutro uda mi sie osiagnac cel, a teraz ide spac, dobranoc. Punkty za pomoc jutro wlepie, bo z konsolki niewygodnie winksmiley.jpg
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.