Acest tutorial iti arata cum sa gestionezi dinamic mesajele de tip "Time remaining" in questurile Metin2, folosind un singur server timer in loc de mai multe timere separate. Metoda este mai curata, mai eficienta si mai usor de adaptat pentru dungeon-uri, evente cu timp limita si questuri custom.
In loc sa folosesti cate un timer pentru fiecare notificare (45 min, 30 min, 15 min etc.), aici vei folosi un singur server loop timer care verifica periodic timpul ramas si executa actiunea finala cand timpul expira.
*Link download / Code:
Deschide questul tau dungeon / event si cauta partea unde initializezi timerele de timp ramas, de exemplu:
Code:
when devilcatacomb_45m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 45))
server_timer('devilcatacomb_30m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_30m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 30))
server_timer('devilcatacomb_15m_left_timer', 60 * 15, get_server_timer_arg())
end
end
when devilcatacomb_15m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 15))
server_timer('devilcatacomb_5m_left_timer', 60 * 10, get_server_timer_arg())
end
end
when devilcatacomb_5m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 5))
server_timer('devilcatacomb_1m_left_timer', 60 * 4, get_server_timer_arg())
end
end
when devilcatacomb_1m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(string.format(gameforge.devilcatacomb_zone._20_say, 1))
server_timer("devilcatacomb_0m_left_timer", 60 * 1, get_server_timer_arg())
end
end
when devilcatacomb_0m_left_timer.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice(gameforge.devilcatacomb_zone._210_dNotice)
d.set_warp_location(65, 5914, 992)
server_timer('devilcatacomb_exit_timer', 7, get_server_timer_arg())
end
end
Deschide questul tau dungeon / event si cauta locul unde pornesti dungeon-ul sau eventul:
Code:
-- aici pornesti dungeon-ul / eventul
Explicatie scurta:
- TIME_OUT = timpul total al dungeon-ului sau eventului, in secunde
- TIME_OUT_STEP = la cate secunde sa se faca verificarea si anuntul
- seconds_passed = flag care retine cate secunde au trecut
- cand timpul ajunge la limita, timerul este oprit si jucatorii sunt scosi din dungeon
Exemplu util:
- 3600 = 1 ora
- 60 = verificare din minut in minut
- daca vrei update mai des, poti seta 30 sau 10 secunde
Observatie:
Pentru acest sistem ai nevoie ca functiile InDungeon(...) si get_time_format(...) sa existe deja in sursa ta de questuri, daca vrei sa folosesti exact exemplul de mai sus. Daca nu le ai, poti adapta mesajele fara ele.
Avantajul acestui sistem este ca ai control complet dintr-un singur timer, codul este mai curat si poti modifica foarte usor timpul ramas afisat in orice dungeon Metin2.


la acest mesaj și conținutul se va afișa automat.


