• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

gra przeglądarkowa przyrost surowców

Object Storage Arubacloud
+2 głosów
551 wizyt
pytanie zadane 30 kwietnia 2017 w PHP przez Dawid Warduliński Obywatel (1,830 p.)

Witam mam mały problem z przyrostem surowców w grze przeglądarkowej zrobiłem tak 

 $time = time();
 $czas = time() - $r['ost_akcja']; // czas jaki minął od ostatniego przeładowania strony
 $metal = $czas * $r['metal_przyrost']; // mnożymy czas jaki minął przez mnożnik metalu w bazie 
 $upd2 = mysqli_query($link, "UPDATE user SET metal = metal + " . $metal . " WHERE id = '" .      $_SESSION['id'] . "'");

$r['metal_przyrost'] załóżmy że jest równy 30 to po 60 min będzie go za dużo, Jak zrobić aby po 60 min było go 30 ale też aby po rozbudowie kopali metalu na wyższy poziom było go więcej. 

tabela przyrostu jaka mnie mniej więcej interesuje

0    20    
1    33    
2    72    
3    119
4    175    
5    241    
6    318    
7    409    
8    172    
9    213    
10    260    
11    314    
12    377    
13    449    
14    532    
15    627    
16    736    
17    860    
18    1,001    
19    1,163    
20    1,346    

 

 

 

 

komentarz 30 kwietnia 2017 przez Boshi VIP (100,240 p.)
Napisz to jeszcze raz, bo nic nie idzie z tego zrozumieć. Za dużo w stosunku do czego?
komentarz 30 kwietnia 2017 przez Evelek Nałogowiec (28,960 p.)
Podobne do plemiona.pl. :D
komentarz 30 kwietnia 2017 przez Boshi VIP (100,240 p.)
Tyle, że z tego nic nie wynika.
komentarz 2 maja 2017 przez Dawid Warduliński Obywatel (1,830 p.)
tak tylko źle opisane

ten skrypt dodaje do bazy liczby po kilka tysięcy co odświeżenie nie cała minuta. a chcę aby w godzinę dodał 30 ptk lub więcej w zależności od poziomu budynku. TAK jak na ogmae lub silniku gry xnowa

1 odpowiedź

+1 głos
odpowiedź 30 kwietnia 2017 przez Chess Szeryf (76,710 p.)
edycja 30 kwietnia 2017 przez Chess

Zainteresuj się funkcją, procedurą "wyzwalaczem" trigger w MySQL. Nie wiem, czy to można nazwać funkcją, czy procedurą, ale mniejsza z tym.

Tut: https://dev.mysql.com/doc/refman/5.5/en/create-trigger.html

Tut: http://it.dth.pl/triger-wyzwalacz-mysql-opis-i-przyklady/

Możesz także zainteresować się tzw. widokami, z ang. view.

Tut: https://dev.mysql.com/doc/refman/5.7/en/create-view.html

Tut: http://strefakodera.pl/bazy-danych/sql/widoki-tworzenie-i-usuwanie-widokow-w-sql-cz-i

Polecam także przejżeć link poniżej, z ang. event.

Tut: https://dev.mysql.com/doc/refman/5.7/en/create-event.html

Wydaje mi się, że do rozwiązania twojego zadania potrzebny jest właśnie event.

Tut: https://dev.mysql.com/doc/refman/5.6/en/events-configuration.html

Skorzystaj przede wszystkim z tego tutoriala: https://dev.mysql.com/doc/refman/5.7/en/create-event.html

Jestem już prawie całkowicie przekonany, że do wykonania tego zadania, potrzebować trzeba będzie użyć event'a.

Reasumując napisz event'a, który np. co 60 minut będzie ci zmieniał stan surowca na inną ilość dodając przy tym odpowiedni warunek, gdzie po 60 minutach, ma go być 20, po drugiej godzinie ma go być 72, po 3. 119 itd.... Tak jak masz to w swojej tabeli.

Może stworzę przykładową tabelę o nazwie orzechy:

create table orzechy (id int auto_increment primary key,ilosc int,czas time);

 

A w niej takie dane:

id ilosc czas
1 null 20:30:30

Do tej tabeli kod:

CREATE EVENT `orzechy` ON SCHEDULE
EVERY 30 SECOND 
STARTS '2017-04-30 20:35:00' ON COMPLETION NOT PRESERVE ENABLE 
DO 
update orzechy set czas=now(),ilosc=(case 
when czas>='20:30:00' and czas<='20:35:30' then 12
when czas>='20:36:00' and czas<='20:40:00' then 33
when czas>='20:40:30' and czas<='20:45:30' then 42
else 90
-- zamiast 90 moze byc jakas inna przykladowa wartosc
end);

Kod dostosuj do własnych potrzeb.

Przydatne linki:

-http://stackoverflow.com/questions/34490325/mysql-combine-two-update-queries-in-one-query

- http://stackoverflow.com/questions/12754470/mysql-update-case-when-then-else

- https://mariadb.com/kb/en/mariadb/case-operator/

- http://stackoverflow.com/questions/3389713/how-does-mysql-case-work
- http://stackoverflow.com/questions/15766102/i-want-to-use-case-statement-to-update-some-records-in-sql-server-2005

- Google

 

Pamiętaj tylko o tym, że w kliencie mariadb zapytanie z CASE kończy się END, a nie jak w kliencie mysql END CASE. Ważne: Inaczej zapytanie nie wykona się. Jak nie będzie coś działało  w zapytaniach mysql, a używamy klienta mariadb to warto , a nawet konieczne jest to, aby sprawdzić jak wygląda syntax tego zapytania w oficjalnej dokumentacji

 

Oczywiście, jeśli chcesz mieć co godzinę zmienianą wartość to musisz zmienić wartość:

every 30 second, na:

every 1 hour

Możesz opcjonalnie zmienić też tę wartość oznaczającą od kiedy to ma działać:

STARTS '2017-04-30 20:35:00'

I na koniec musisz pozmieniać te wartości na swoje:

czas>='20:30:00' i czas<='20:35:30'

i tamte następne wartości też.

 

Jeśli się, gdzieś pomyliłem to proszę mnie poprawić.

 

 

komentarz 13 lipca 2017 przez kordix Gaduła (3,910 p.)
Mam pytanie, zastanawia mnie jak to działa w prawdziwych grach przeglądarkowych. Też wszystko działa na bazach sql i triggerach? Pewnie robią jakąś taką swoją bazę. Tylko ciekawe czy to też się odbywa przez php. Ktoś ma może pojęcie?
komentarz 13 lipca 2017 przez Chess Szeryf (76,710 p.)

Potrzebny jest jakiś język SERVER-SIDE, żeby móc porozumieć się z bazą danych. Nie koniecznie musi to być PHP.

Czy wszystko działa na bazach sql i triggerach?

Zależy od intencji albo inwencji autora przede wszystkim. Może to napisać na samej bazie danych, ale też może użyć do tego jakichś formatów danych, np.: XML, JSON, itp..

Jeśli chodzi oto, czy wszystko działa na bazach sql i triggerach, to jak wyżej wspomniałem, najprawdopodobniej nie, aczkolwiek jak ktoś się uprze to może napisać grę na samej bazie danych. Nie wszystko jest pisane w oparciu o triggery, bo są to wyzwalacze, które uruchamiają coś, aby coś zaczęło się dziać.

Podobne pytania

0 głosów
1 odpowiedź 337 wizyt
pytanie zadane 26 listopada 2017 w HTML i CSS przez Kapux Początkujący (360 p.)
0 głosów
1 odpowiedź 350 wizyt
0 głosów
2 odpowiedzi 1,166 wizyt
pytanie zadane 11 stycznia 2017 w Offtop przez Kamio Obywatel (1,100 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...