close
15224672389_afebb12873_h

W tej części kursu napiszemy system pracy, dzięki któremu gracz będzie mógł zarobić złoto aby móc je później wydać np. na podniesienie statystyk. Zaczynajmy 🙂

Na początku przejdźmy do bazy danych i stwórzmy nową tabelę o nazwie work.

Tabela work:

work table

Możesz kliknąć na powyższy obrazek aby go powiększyć.

Tabela składa się z:

  • id – unikalny identyfikator pracy
  • uid – identyfikator pracującego użytkownika
  • finish_date – czas zakończenia pracy podany w sekundach
  • reward – nagroda w złocie

Jak będzie działał system pracy?

Gracz będzie wybierał na ile godzin chce iść do pracy (1-8). Jeśli podane w formularzu dane będą prawidłowe to do tabeli work zostanie dodany rekord zawierający id gracza, czas zakończenia zlecenia (aktualny czas uniksowy + ilość godzin pracy * 3600) oraz nagroda, która będzie zależna od ilości przepracowanych godzin. W tym samym momencie na stronie praca pojawi się licznik, który będzie odliczał pozostały czas pracy. Gracz otrzyma nagrodę gdy licznik dojdzie do zera. Jednocześnie zostanie skasowany rekord w tabeli work.

Przejdźmy teraz do pliku ModuleLoader.class.php i uzupełnijmy case praca oraz dodajmy nowy case – timer, który wyświetli wspomniany licznik.

Case praca:

Na początku wybieramy z tabeli work rekord, w którym id użytkownika jest równe numerowi id, który jest przechowywany w sesji. Jeśli nie zostanie znaleziony taki rekord to zmienna $select będzie przechowywała false. Tylko w tym przypadku możemy wyświetlić formularz odpowiedzialny za wysłanie do pracy, ponieważ można wykonywać tylko jedną pracę w tym samym czasie. Jeśli rekord zostałby znaleziony to za pomocą case timer wyświetlamy licznik.

Case timer:

Jeżeli gracz pracuje to obliczany jest czas do końca pracy. Następni wyświetlany jest kod javascript, który ten czas w sekundach konwertuje do godzin, minut i sekund oraz rozpoczyna odliczanie.

Dodajmy też kilka reguł CSS w pliku style.css:

 

Możemy teraz przejść do stworzonej w poprzedniej części klasy GameManager i dodać metodę, która umieści w tabeli work rekord. Przed kończącym klasę znakiem dodaj nową metodę:

Ta metoda doda nowy rekord w tabeli work, pod warunkiem, że już go tam nie ma.

Stwórzmy teraz nowy plik w folderze LIBRARY o nazwie toWork.library.php. Będzie on odpowiadał za sprawdzenie przesyłanych przez użytkownika danych i wysłanie ich do metody sendToWork.

Plik toWork.library.php:

Plik jest bardzo podobny do pliku updateStats.library.php, który napisaliśmy w poprzedniej części. Jak zwykle musimy jeszcze dodać case do klasy MainPage:

Przejdźmy teraz do pliku wlasny.js i dodajmy kod odpowiedzialny za obsłużenie formularza:

Mamy już prawie wszystko. Pozostało nam jeszcze napisać metodę, która sprawdzi czy praca została zakończona, doda nagrodę i usunie rekord. Wróćmy do klasy GameManager i dodajmy kolejną metodę:

Wywołajmy teraz tą metodę na stronach statystykipracasklepwalka oraz ranking. Na tych podstronach zaraz pod instrukcją die dodaj poniższy kod.

Dzięki temu status pracy będzie aktualizowany.

I to tyle. Wszystko już działa 🙂

Paczkę możesz pobrać tutaj.

Zobacz przykład klikając tutaj.

Tags : tworzenie gry przeglądarkowej php javascript