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

Zaplanowane zadania w PhpMyAdmin


Raiso

Rekomendowane odpowiedzi

Opublikowano

[TUT] Zaplanowane zadania w PhpMyAdmin

 

PhpMyAdmin posiada pewną opcję która się nazywa "Zdarzenia".
Dzięki niej możemy zaplanować wykonywanie jakiejś funkcji automatycznie
w określonym przez na czasie bez ciągłego wchodzenia i ręcznego ustawiania.


W "Shakes & Fidget" mamy kilka opcji które możemy ustawić jako zadania
dla przykładu podam wam jak ustawić sobie reset wieży który będzie się
odbywał w zdefinowanym przez nas czasie.


1. Wchodzimy do PhpMyAdmin i wybieramy naszą bazę.

2. Z zakładek nad tabelami wybieramy "Zdarzenia"

 

 

 

 

PZa80c5.jpg

 

 

 

 

3. Włączamy harmonogram zadań i dodajemy nowe zdarzenie

 

 

 

 

X1JvQSi.jpg

 

 

 

 

4. Aby zrestartować wieże potrzebna jest nam funkcja gdzie:
1 - oznacza do jakiego poziomu mamy cofnąć wieże,
101 - oznacza na jakim poziomie naszej wieży dojdzie do jej zrestartowania

Poniższy kod to przedstawia:

 

UPDATE `user_data` SET `tower_level`= 1 WHERE `tower_level`= 101

5. Dodajemy zdażenie:

Pojawia się nam tabelka którą musimy uzupełnić:
Dla przykładu ustawiłem reset co 6 godzin.

 

 

 

 

Yws5Aji.jpg

 

 

 

 

6. Jeśli wszystkie czynności przeprowadzimy prawidłowo
pojawi się nam nowe zdarzenie oraz server zwróci komunikat
z pozytywnym wynikiem.

 

 

 

 

KYqLlyy.jpg

 

 

 

 

PS: Dodam że jeśli ktoś ustawił swój server na max lvl np: 300
Może zrobić reset tego levelu na 1 przy pozostawieniu statystyk
w nienaruszonym stanie o to kod:

Dla przykładu ustawione jest by każda postać która posiada
poziom większy niż 300 została zresetowana do poziomu 1 lub
możemy ustawić na konkretny poziom wtedy zamiast
`lvl`> 300 wpisujemy `lvl`= 300 jak ustawicie zależy od waszej
fantazji :P


 

UPDATE `user_data` SET `lvl`= 1 WHERE `lvl`> 300

Pozdrawiam i mam nadzieje że komuś się przyda :D

 

Pracuje na tym programie

http://www.webserv.pl/

Chcesz sobie popykać bez stresu :D

Wejdż tu : http://www.mpcforum.pl/topic/1206813-sf-serwer-game/

Opublikowano

Czy aby np dodawać grzyby co 12 godzin wszystkim graczom także można posłużyć się tym sposobem jeżeli tak jaki będzie wyglądał kod?

 

Pozdrawiam

Opublikowano

UPDATE user_data SET mushroom = mushroom + 10

Tu masz kod + 10 oznacza że zwiększyłeś ilość grzybów o 10

Możesz podstawić dowolną wartość :D

 

Tu masz kod na złoto :D

Gdzie 100 = 1gold

UPDATE user_data SET silver = silver + 100

Tu masz kod na warunek :D

Gdzie 100 = 100 poziom a gracz z takim poziomem lub mniejszym dostaje 10 grzybów

Jeśli znak  <  zmienisz na   >  to każdy gracz z poziomem większym niż 100 lvl dostanie 10 grzybów

UPDATE user_data SET mushroom = mushroom + 10 where lvl < 100

Server VIP [ Bonusy dla donatorów ]

 

Tworzymy w PhpMyAdmin w 'user_data' kolumne np: 'vip' - może być inna :D

 

ALTER TABLE user_data ADD vip int

Wchodzimy w dane użytkownika i wpisujemy mu tam wartość np: 1

Ponieważ ten użytkownik np: zdotował strone lub server.

Chcemy by tacy użytkownicy dostawali jakieś profity np: grzyby, złoto itp.

Wykonujemy zadanie by taki użytkownik dostał swoje.

UPDATE user_data SET mushroom = mushroom + 10 where vip = 1
UPDATE user_data SET silver = silver + 100000000 where vip = 1

Chcesz sobie popykać bez stresu :D

Wejdż tu : http://www.mpcforum.pl/topic/1206813-sf-serwer-game/

Nowicjusz
Opublikowano

wiesz.. szkoły jeszcze nie skończyłem ale wydaję mi się że tego typu rozwiązanie jak podałeś z wieżą będzie musiało sprawdzać warunek non stop. czy ktoś przypadkiem nie osiągnął tego poziomu wieży. w sprawnym projektowaniu jakich kolwiek aplikacji czy systemów chodzi po pierwsze o jak najlepsze działanie, i najbardziej wydajne. biorąc pod uwagę że nie wiedziałem tu nikogo z na prawdę porządnym serwerem, idziesz w złą stronę. 

Poczytaj o tym:

http://wortal.php.pl/phppl/Wortal/Artykuly/Pomysly-porady-sugestie-dobre-nawyki/Okresowe-uruchamianie-skryptow-php

 - podstawy podstaw.

 

Jeśli jednak się mylę, popraw mnie:)

Opublikowano

wiesz.. szkoły jeszcze nie skończyłem ale wydaję mi się że tego typu rozwiązanie jak podałeś z wieżą będzie musiało sprawdzać warunek non stop. czy ktoś przypadkiem nie osiągnął tego poziomu wieży. w sprawnym projektowaniu jakich kolwiek aplikacji czy systemów chodzi po pierwsze o jak najlepsze działanie, i najbardziej wydajne. biorąc pod uwagę że nie wiedziałem tu nikogo z na prawdę porządnym serwerem, idziesz w złą stronę. 

 

Poczytaj o tym:

http://wortal.php.pl/phppl/Wortal/Artykuly/Pomysly-porady-sugestie-dobre-nawyki/Okresowe-uruchamianie-skryptow-php

 - podstawy podstaw.

 

Jeśli jednak się mylę, popraw mnie:)

 

Pozostawie to w kwesti użytkowników forum niech oni się na ten temat wypowiedzą.

Chcesz sobie popykać bez stresu :D

Wejdż tu : http://www.mpcforum.pl/topic/1206813-sf-serwer-game/

Opublikowano

Dzięki ale mam pewien problem gdy chcę uruchomić harmonogram zdarzeń stanu wyskakuje coś takiego:

 

Błąd
Zapytanie SQL:

SET GLOBAL event_scheduler =  "ON"

MySQL zwrócił komunikat: Dokumentacja

#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation

 

Jeżeli ktoś miał ten sam problem i udało mu się go rozwiązać prosiłbym o pomoc

 

Pozdrawiam

Nowicjusz
Opublikowano

Swoją drogą nie prościej tak?

if($lvl > 98){$db->query("UPDATE `nazwa_tabeli_graczy` SET tower='0' WHERE id='id_gracza'");}else{$db->query("UPDATE `nazwa_tabeli_graczy` SET tower='".++$lvl."' WHERE id='id_grazca'");}
Opublikowano

tzn a poprzes ten kod da sie zrobić zeby po czyms dodalo nam +2% do skarbca i trenera ? xD tak sie zastanawiam jakby to tylko edytowac :)

if($lvl > 1){$db->query("UPDATE `guild` SET instructor='teraz co tu?' WHERE id='id_gildi'");}else{$db->query("UPDATE `giuld` SET 
tower='".++$lvl."' WHERE id='id_grazca'");} 

Hmmm jak by to miało wyglądac ?

Nowicjusz
Opublikowano

Wszystko się da -.-
Wiesz.. nie jestem wróżką z zawodu tylko programistą więc nie bardzo wiem co chcesz zrobić.

if(warunek){metoda} <- to lepiej edytuj i nie patrz na mój kod bo nawet nie mam silnika na dysku i pisałem to na pałę. 

Opublikowano

Wszystko się da -.-

Wiesz.. nie jestem wróżką z zawodu tylko programistą więc nie bardzo wiem co chcesz zrobić.

if(warunek){metoda} <- to lepiej edytuj i nie patrz na mój kod bo nawet nie mam silnika na dysku i pisałem to na pałę. 

Jemu chodzi o skopiowanie danych pomiędzy dwiema kolumnami w dwóch różnych tabelach.

Kopiowanie z user_data tower_level do guilds dung.

Gdzie pierwsze to nazwa tabeli a drugie kolumny, a tower_level jest zależny od $stage.

Opublikowano

Ludzie. Nie prościej zrobić to przez cron ? 


Szkoda że na superxd nie działa bo 

http://scr.hu/2ipt/x2pit

ale leci +

W trosce o bezpieczeństwo klientów nie udostępniamy takiej funkcji . Natomiast jest funkcja cron dostępna w każdym naszym pakiecie i jest to o wiele lepsze rozwiązanie. Pozdrawiam 

Opublikowano

Tworzysz plik php który wykonuje zdarzenie, następnie tworzysz polecenie cron w panelu DirectAdmin. Nic prostrzego. Metoda z zdarzeniem podana wyżej nie jest sprawdzoną metodą i znacznie destabilizuje pracę serwera z MySQL. Pozdrawiam

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...