Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Opóźnienie wykonania skryptu...
Forum PHP.pl > Forum > PHP
simoc007
Witam;
Mam Taki problem posiadam skrypt php/js który wykonuje mi walkę i by użytkownik mógł dokonać następnej walki musi odczekać 5 minut. Czas jest zapisany w bazie danych MySql:

  1. <?php
  2. require_once('config.php');
  3. require_once('test_login.php');
  4. require_once('menu.php');
  5. require_once('dane_konta.php');
  6.  
  7. if(isset($_GET['walka'])){
  8.  
  9. $_GET['walka'] = (int)$_GET['walka'];
  10.  
  11.  
  12. $pozostalo = $uzytkownik['ostatnia_walka_pvc'] + 300 - time();
  13.  
  14.  
  15. if($uzytkownik['zycie'] < 5){
  16. echo "masz za mało życia by walczyć<hr/>";
  17. } elseif($pozostalo > 0){
  18. echo "ostatnio prowadziłe walkę<hr/>";
  19. } else {
  20.  
  21. $przeciwnik = mysql_fetch_array(mysql_query("select * from ziemia1 where potwor = ".$_GET['walka']));
  22.  
  23. if(empty($przeciwnik)){
  24.  
  25. //jeżeli nie pobrano przeciwnika
  26. echo "nie ma takiego potwora<hr/>";
  27.  
  28. }
  29. else
  30. {
  31.  
  32. echo "<center><a href='#dol'>Przejdzi do Wyniku</a></center>";
  33.  
  34. echo "<table border=0 width='100%'><tr><td>
  35.  
  36. <table border='1' width='100%'><tr>
  37.  
  38. <td width='50%'><center>";
  39.  
  40. if($uzytkownik['poziom'] <= 4) echo "<img src='avatar/g1.png' alt='' />";
  41. if($uzytkownik['poziom'] >= 5) echo "<img src='avatar/g2.png' alt='' />";
  42.  
  43.  
  44. echo "</center></td>
  45.  
  46.  
  47.  
  48. <td align='right' width='50%'>
  49.  
  50. <img src=".$przeciwnik['obrazek']." width='250' height='200'/>
  51. </td></tr>
  52. <tr>
  53. <td>
  54.  
  55. <table width='100%'>
  56.  
  57. <tr><td align='left' id='wkonto'>Życie</td><td align='right' id='wkonto'>".$uzytkownik['zycie']."&nbsp;</td></tr>
  58.  
  59. <tr><td align='left' id='wkonto'>Obrarzenia</td><td align='right' id='wkonto'>".$uzytkownik['obrazenia_min']." - ".$uzytkownik['obrazenia_max']."&nbsp;</td></tr>
  60. <tr><td align='left' id='wkonto'>Atak</td><td align='right' id='wkonto'>".$uzytkownik['atak']."&nbsp;</td></tr>
  61. <tr><td align='left' id='wkonto'>Obrona</td><td align='right' id='wkonto'>".$uzytkownik['obrona']."&nbsp;</td></tr>
  62. <tr><td align='left' id='wkonto'>Szybkość</td><td align='right' id='wkonto'>".$uzytkownik['szybkosc']."&nbsp;</td></tr>
  63. <tr><td align='left' id='wkonto'>Furia</td><td align='right' id='wkonto'>".$uzytkownik['krytyk']."&nbsp;</td></tr>
  64.  
  65.  
  66.  
  67.  
  68. </table>
  69.  
  70. </td>
  71.  
  72. <td>
  73.  
  74. <table width='100%'>
  75. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['zycie']."</td><td align='right' id='wkonto'>Życie</td></tr>
  76. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['obrazenia_min']." - ".$przeciwnik['obrazenia_max']."</td><td align='right' id='wkonto'>Obrarzenia</td></tr>
  77. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['atak']."</td><td align='right' id='wkonto'>Atak</td></tr>
  78. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['obrona']."</td><td align='right' id='wkonto'>Obrona</td></tr>
  79. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['szybkosc']."</td><td align='right' id='wkonto'>Szybkość</td></tr>
  80. <tr><td align='left' id='wkonto'>&nbsp;".$przeciwnik['krytyk']."</td><td align='right' id='wkonto'>Furia</td></tr>
  81.  
  82. </table>
  83.  
  84. </td>
  85.  
  86.  
  87. </tr>
  88. </table>
  89.  
  90. </td></tr><tr><td>";
  91.  
  92. echo "<table border='0' width='100%' id='walkt'>";
  93.  
  94. $runda=0;
  95.  
  96. //pętla
  97.  
  98.  
  99. while(($uzytkownik['zycie'] > 0) && ($przeciwnik['zycie'] > 0)){
  100.  
  101.  
  102.  
  103. $runda++;
  104. If($runda>=2)
  105. {
  106.  
  107. echo "
  108. <tr><td colspan='2'height='20'></td></tr>";
  109.  
  110. }
  111.  
  112. echo "<tr><td bgcolor=#ccccaa colspan='2' height='40' align='center' middle='middle'><font size='4' ><b>RUNDA ".$runda."<br></b></font></td></tr>";
  113.  
  114.  
  115.  
  116.  
  117. echo "<tr><td id='walk'>";
  118.  
  119. $obrazenia=$uzytkownik['zycie']-$przeciwnik['obrona'];
  120.  
  121. $przeciwnik['zycie'] -= $obrazenia;
  122.  
  123.  
  124. echo "<center>Zadałeś <font color='red'><b>".$obrazenia."</b></font> obrażeń przeciwnikowi<br/></center></td>";
  125.  
  126. }
  127.  
  128.  
  129. if($przeciwnik['zycie'] < 1) { echo "<td id='walk1'><font color='red'><center>Przeciwnik Pokonany</center></font></td><tr>
  130.  
  131. <td colspan='2' ><br><font color='#fff'><center>ostateczny cios zabija potwora</center>"; }
  132.  
  133.  
  134. else
  135.  
  136.  
  137. {
  138.  
  139. $obrazenia=$przeciwnik['atak']-$uzytkownik['obrona'];
  140.  
  141. $uzytkownik['zycie'] -= $obrazenia;
  142.  
  143. echo "<center><b>".$przeciwnik['nazwa']."</b> zadał Ci <font color='red'><b>".$obrazenia."</b></font> obrażeń<br/></center></td></tr>";
  144. }
  145. if($uzytkownik['zycie'] < 1){
  146.  
  147. echo "<tr><td colspan='2'><br/><center>morderczy cios posyła Cię na ziemię, trochę czasu minie nim się pozbierasz<br/>";
  148. }
  149. }
  150.  
  151.  
  152. //koniec pentli
  153.  
  154. }
  155.  
  156.  
  157. if($uzytkownik['zycie'] > 0){
  158. $zloto = rand(1,$przeciwnik['zloto']);
  159.  
  160.  
  161. echo "<br><center>wygrałeś walkę i zdobywasz ".$przeciwnik['punkty']." punktów oraz ".$zloto." złota <br><br></center>";
  162.  
  163. mysql_query("UPDATE `gracze` SET `zabitepotwory` = zabitepotwory + 1 WHERE gracz='".$uzytkownik['gracz']."'");
  164. mysql_query("UPDATE `gracze` SET `owygrane` = owygrane + 1 WHERE gracz='".$uzytkownik['gracz']."'");
  165. mysql_query("update gracze set ostatnia_walka_pvc = ".time().", punkty = punkty + ".$przeciwnik['punkty'].", zloto = zloto + ".$zloto.", zycie = ".$uzytkownik['zycie']." where gracz = ".$uzytkownik['gracz']);
  166.  
  167. } else {
  168. //przegrałełe
  169. mysql_query("UPDATE `gracze` SET `oprzegrane` = oprzegrane + 1 WHERE gracz='".$uzytkownik['gracz']."'");
  170. mysql_query("UPDATE `gracze` SET `przegrane` = przegrane + 1 WHERE gracz='".$uzytkownik['gracz']."'");
  171. mysql_query("update gracze set ostatnia_walka_pvc = ".time().", zycie = 0 where gracz = ".$uzytkownik['gracz']);
  172. }
  173.  
  174. $uzytkownik['ostatnia_walka_pvc'] = time();
  175.  
  176. }
  177. }
  178.  
  179. }
  180.  
  181.  
  182.  
  183. $pozostalo = $uzytkownik['ostatnia_walka_pvc'] + 300 - time();
  184. if($uzytkownik['zycie'] < 5){
  185. echo "<center>masz za mało życia by walczyć<a name='dol'></a><br><br></td></tr></center>";
  186. } elseif($pozostalo > 0){
  187.  
  188. //gracz niedawno prowadził walkę
  189.  
  190. //dodajemy funkcja licząca czas
  191. ?>
  192. <script type='text/javascript'>
  193. function liczCzas(ile) {
  194. godzin = Math.floor(ile / 3600);
  195. minut = Math.floor((ile - godzin * 3600) / 60);
  196. sekund = ile - minut * 60 - godzin * 3600;
  197. if (godzin < 10){ godzin = "0"+ godzin; }
  198. if (minut < 10){ minut = "0" + minut; }
  199. if (sekund < 10){ sekund = "0" + sekund; }
  200. if (ile > 0) {
  201. ile--;
  202. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  203. setTimeout("liczCzas("+ile+")", 1000);
  204. } else {
  205. var str = "Kontynułuj";
  206. document.getElementById("zegar").innerHTML = (str.link("mapa.php"));
  207. }
  208. }
  209. </script>
  210. <center> Twoja postać niedawno prowadziła walkę: <span id='zegar'></span></center><a name='dol'></a></td></tr>
  211.  
  212. <?php
  213.  
  214.  
  215.  
  216. echo "</table></td></tr></table> <br><br><br> ";
  217.  
  218.  
  219.  
  220. echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>";
  221. }
  222.  
  223. else
  224.  
  225.  
  226. {
  227.  
  228. $potwory = mysql_query("select * from ziemia1");
  229. if(mysql_num_rows($potwory) == 0){
  230. echo " brak potworów na mapie";
  231. }
  232. else
  233.  
  234. {
  235. echo "<center>
  236. <table border='0' id='tekst'>
  237. <tr>
  238.  
  239. <th width='100'>Wygląd</th>
  240. <th width='80'>Potwór</th>
  241. <th width='50'>życie</th>
  242. <th width='80'>Obrażenia</th>
  243. <th width='50'>Atak</th>
  244. <th width='50'>Obrona</th>
  245. <th width='70'>szybkosc</th>
  246. <th width='50'>ktytyk</th>
  247. <th width='50'>Exp</th>
  248. <th width='40'>Walcz</th>
  249. </tr>
  250. <tr>
  251. <td colspan='10'>
  252. <hr>
  253. </td>
  254. </tr>
  255. ";
  256. while($potwor = mysql_fetch_array($potwory)){
  257. echo "
  258. <tr>
  259.  
  260. <td><img src=".$potwor['obrazek']." /></td>
  261. <td>".$potwor['nazwa']."</td>
  262. <td>".$potwor['zycie']."</td>
  263. <td>".$potwor['obrazenia_min']." - ".$potwor['obrazenia_max']."</td>
  264. <td>".$potwor['atak']."</td>
  265. <td>".$potwor['obrona']."</td>
  266. <td>".$potwor['szybkosc']."</td>
  267. <td>".$potwor['krytyk']."</td>
  268. <td>".$potwor['punkty']."</td>
  269. <td><a href='ziemia1.php?walka=".$potwor['potwor']."'>Walcz</a></td>
  270. </tr>";
  271. }
  272. echo " </table></center><br><br>";
  273. }
  274.  
  275. }
  276.  
  277.  
  278. ?>


Skrypt walki został praktycznie skasowany gdyż post był za długi więc nie przejmujcie się tym że "atak - obrona = obrażenia" bo to nie prawda;

Moje pytanie brzmi jak przerobić to w sposób taki by po kliknięciu Walcz postać musiała odczekać 5 minut i wtedy walka by się wykonała, lecz musi mieć zabezpieczenie, że jak ktoś zmieni stronę lub się wyloguje to po zalogowaniu i wejściu na te stronę walka się wykonała od razu tak by miał wynik... Gdy prubuje to przerobić niby mi wszystko działa ale po kliknięciu na inną stronę wszystko się rozjeżdża;/ Proszę o pomoc
!*!
Zapisz ID i czas walki w sesji oraz do bazy. Przy każdej akcji sprawdzaj czy minęło 5 minut.
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.