Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Prosty skrypt na bazie liczenia surowców


xenex

Rekomendowane odpowiedzi

Opublikowano

Witam, chciałbym napisać prosty skrypt, który bazuje na liczeniu surowców w grach strategicznych typu plemiona, travian itp.

 

Chcę, aby "surowce" były naliczane cały czas, niezależnie czy ktoś jest zalogowany czy nie.

 

Jak na razie wykminiłem taką opcję, żeby w mysql zapisać datę pustego magazynu i tempo produkcji.

potem skrypt (napisany i wywoływany w php) mierzy czas między wpisana datą, a obecną, mnoży przez produkcję i wychodzi ilość surowców.

 

Ale to rozwiązanie jest krótko-rozwojowe, gdyż dalsze operacje będą stanowić wiele problemów.

Dla przykładu przybycie handlarza, to dodatkowe dodawanie czasu, grabież to odejmowanie czasu, za dużo roboty.

 

I zastanawiam się, jak zrobić funkcję że np. handlarz idzie pół godziny, do jakiejś osoby, i dotrze, nawet jeśli obydwie nie będą zalogowane.

 

Co prawda skrypt nie ma związku z handlarzami, surowcami, a nawet grą, ale sterują tym podobne mechanizmy jak w grach przeglądarkowych, więc postanowiłem napisać tutaj temat.

Z góry dziękuję za odpowiedź.

Oddajcie minusy! :(

Opublikowano

Nie przychodzi mi do głowy inny sposób symulowania takiego real-time niż ten, który wskazałeś. Taki już urok php, który nie działa ciągle tylko jak jest wywoływany. Aby uprościć obliczenia (żeby nie trzeba było liczyć wszystkiego od punktu "0") możesz zastosować zadania cron, ktróre uruchamiają przeliczanie świata np co 1h (choć jest to zły pomysł jeśli chodzi o wydajność - lepiej przeliczać tylko na żądanie gracza).

 

To, że stopień skomplikowania rośnie wraz z ilością zadań to tego nie przeskoczysz ;)

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

 

 

Chcę, aby "surowce" były naliczane cały czas, niezależnie czy ktoś jest zalogowany czy nie.

 

Najprościej możesz zliczać czas od ostatniego update w bazie danego surowca i aktualizować o X wartości. Jeżeli user jest wylogowany to zapisz sobie date wylogowania (ostatniej akcji) w bazie i porównaj ją z obecną i Ci skrypt wyliczy ile powinno dodać danemu użytkownikowi surowców.

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista


"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer


 


Potrzebujesz czegoś? Oznacz mnie @Salur

Opublikowano

@Salur w sumie to napisałeś to co xenex ;)

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

mam to zrobione w swoim projekcie, należy dodać metodę, które po id wioski/gracza zrobi pełny update jego surowców punktów itp, przy wykonywaniu grabieży i tym podobnych akcji, które mogą być wykonane, gdy user jest offline, no i wiadomo musisz ją wykonać :)

bannerMPC.png

Opublikowano

Takie rzeczy zazwyczaj wykonuje się cyklicznie przez CRON.

Ale moim zdaniem najlepszym rozwiązaniem byłoby napisanie jakiegoś daemona php.

gamedevmania.com

Opublikowano

Jak juz ktos tutaj napisal, najlepiej jest zapisac czas w ktorym uzytkownik opuscil nasz serwis, po ponownym zalogowaniu zaktualizowac tabele w mysql.

 

update = date * surowce

 

Czas od ostatniego zalogowania powiedzmy 12 godzin, pomnozony przez ilosc surowcow na godzine/minute.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...