Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Gra przeglądarkowa zloto
Forum PHP.pl > Forum > Przedszkole
xxdrago
Witam, robię grę przeglądarkową na gotowym silniku (tylko go edytuje) i problem polega na tym że już kombinuje z 2h i nie wymyśliłem a wiec jak mogę tutaj
zmienić zlot za każdą prace chodzi mi o to że są 3 prace stolarz , myśliwy , łowienie ryb i ze by każda miała inną stawkę próbowałem przenieść

  1. $zloto = 15 + 5 * $uzytkownik['punkty'] ;
ale to nic nie dawało to znaczy że po kliknięciu w prace dodawało kasę a jak się kliknęło przerwij no to zostawała kasa.

  1. //sprawdzamy czy gracz pracuje
  2. if( ($uzytkownik['pracuje'] > 0) && ($uzytkownik['pracuje'] < time()) ){
  3. //jeżeli gracz ma ustawione, że pracuje, ale czas pracy już się zakończył to wydaj mu odpowiednią ilość złota za pracę i ustaw, że już nie pracuje
  4.  
  5. //w naszym przykładzie ilość otrzymanego złota za wykonanie pracy zależy od posiadanych punktów
  6. $zloto = 15 + 5 * $uzytkownik['punkty'] ;
  7.  
  8.  
  9. //wysyłamy polecenie do bazy danych
  10. mysql_query("update gracze set pracuje = 0, zloto = zloto + ".$zloto." where gracz = ".$uzytkownik['gracz']);
  11.  
  12. //odświeżamy stronę
  13. header("Location: praca.php");
  14. } elseif ($uzytkownik['pracuje'] > 0){
  15. if(isset($_GET['przerwij'])){
  16. //jeżeli wciśnięto przerwanie pracy
  17. mysql_query("update gracze set pracuje = 0 where gracz = ".$uzytkownik['gracz']);
  18. //odświeżamy stronę
  19. header("Location: praca.php");
  20. }
  21. //obliczamy ile czasu pozostało do końca pracy
  22. $pozostalo = $uzytkownik['pracuje'] - time();
  23. ?>
  24. <script type="text/javascript">
  25. function liczCzas(ile) {
  26. godzin = Math.floor(ile / 3600);
  27. minut = Math.floor((ile - godzin * 3600) / 60);
  28. sekund = ile - minut * 60 - godzin * 3600;
  29. if (godzin < 10){ godzin = "0"+ godzin; }
  30. if (minut < 10){ minut = "0" + minut; }
  31. if (sekund < 10){ sekund = "0" + sekund; }
  32. if (ile > 0) {
  33. ile--;
  34. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  35. setTimeout("liczCzas("+ile+")", 1000);
  36. } else {
  37. document.getElementById("zegar").innerHTML = "[zakończono]";
  38. }
  39. }
  40. </script>
  41. Twoja postać jest w pracy, do jej zakończenia pozostało: <span id="zegar"></span> <a href="praca.php?przerwij">[ przerwij ]</a> <?php echo "<script type='text/javascript'>liczCzas(".$pozostalo.")</script>"; ?>
  42. <?php
  43.  
  44. } else {
  45. //gracz nie pracuje
  46.  
  47.  
  48. //jeżeli wciśnięto pracwanie
  49.  
  50. //koniec pracy = aktualny czas + ilość_godzin * 3600
  51. $ktora_czesc=$_GET['praca'];
  52. if ($ktora_czesc=="lownieryb")
  53. {
  54. $koniec = time() + 3600;
  55. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  56. //odświeżamy stronę
  57. header("Location: praca.php");
  58. }
  59. if ($ktora_czesc=="mysliwy")
  60. {
  61. $koniec = time() + 3600;
  62. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  63. //odświeżamy stronę
  64. header("Location: praca.php");
  65. }
  66. if ($ktora_czesc=="stolarz")
  67. {
  68. $koniec = time() + 28800;
  69. mysql_query("update gracze set pracuje = ".$koniec." where gracz = ".$uzytkownik['gracz']);
  70. //odświeżamy stronę
  71. header("Location: praca.php");
  72. }
askone
Spróbuj coś takiego:
  1. $rodzaj_pracy = $_GET['praca'];
  2. switch($rodzaj_pracy)
  3. {
  4. case 'lownieryb' : $stawka = 1;
  5. break;
  6. case 'mysliwy' : $stawka = 2;
  7. break;
  8. case 'stolarz' : $stawka = 3;
  9. break;
  10. }
  11. $zloto = $stawka * 3 + (5 * $uzytkownik['punkty'] );


Pozdrawiam
xxdrago
Tylko gdzie ja mam to dodać na początku?
askone
Cytat(xxdrago @ 13.04.2011, 08:39:38 ) *
Tylko gdzie ja mam to dodać na początku?


Zamiast linii 5 i 6 - przecież tam jest właśnie wyliczana ilość złota
xxdrago
zaraz powiem czy działa smile.gif

Jeszcze jedno jak zrobić zamienne exp na lvl i żeby po każdym wbitym lvl resetował się exp?
askone
Cytat(xxdrago @ 13.04.2011, 08:54:58 ) *
zaraz powiem czy działa smile.gif

Jeszcze jedno jak zrobić zamienne exp na lvl i żeby po każdym wbitym lvl resetował się exp?


A skąd niby mam to wiedziećquestionmark.gif Nie jestem jasnowidzem smile.gif Nie mam pojęcia jakiego silnika do gier używasz. Nie znam żadnego silnika do gier. Umiem tylko czytać kod i myśleć smile.gif

Pozdrawiam
xxdrago
Chodzi o to że za każdego potworka dostaje tam powiedzmy + 10 exp 100 exp = 1 lvl i ten pierwszy lvl idzie do bazy po prostu jak wymienić exp na lvl. powinieneś wiedzieć o co chodzi
drozdii07
Sprawdzaj ifem ile masz expa. jeśli exp > 100 to robisz update do bazy. robisz +1 Lvl i exp 0. sory ze bez kodu i wszystko z małej litery, ale jestem na telefonie
xxdrago
o to mi chodzi ale jak mam zrobić tak 60 lvl?
drozdii07
  1. $lvl = lvl gracza * 2
tworzysz sobie taki algorytm i na każdym lvlu jest inny exp.
xxdrago
coś takiego?
Tylko jak mam zapisać z tym lvl? musze przypisać jakaś wartość temu algorytmowi?

Kod
if($uzytkownik['punkty'] > $lvl)
  echo "Zdobyłeś nowy lvl!";
drozdii07
Właśnie o taki kod mi chodziło biggrin.gif oczywiście $lvl to jest to co napisałem wcześniej ?
askone
Może będę brutalny, ale odnoszę wrażenie że zabrałeś się za tworzenie gry nie mając większego pojęcia o procesie jej tworzenia. Prawdopodobnie nie znasz silnika w oparciu o który chcesz ją zbudować, a zabierasz się do jego przeróbki. Osobiście zanim napisałbym choćby linię kodu wpierw poświęciłbym czas na opisanie zasad jakie mają obowiązywać w grze reguły.

Przed zadaniem kolejnego pytania zastanów się, pomyśl a nie czekaj na gotowca...

ps. wiem, że to dział przedszkolem ale nawet tutaj powinien obowiązywać pewien poziom wiedzy

Pozdrawiam
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.