Skocz do zawartości
Opublikowano

Siemano, nie widziałem tematu na forum to zapytam dla siebie i dla potomnych.
Quest pochodzi z nostalgicznego forum który edytowałem delikatnie zmieniając index mapy oraz wymóg pt.

Chciałby ktoś wyjaśnić dwie sprawy:

Dlaczego "when login with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.getqf("spider_dungeon")" jest tak wielki?

Quest pozwoli mi normalnie wejść na dunga ale mam dwa problemy:

  • nie wyświetla mi w ogóle "d.notice("<Informacja>" oraz nie pojawiają się potwory.

quest spider_dungeon begin

state start begin

when 20095.chat."Wejdź do Komnaty Baronówny Pająków " begin

say_green(""..mob_name(20095)..":")

say("Witaj! ")

say("W dzisiejszych czasach mało tak odważnych ")

say("wojowników, widocznie jesteś jakimś odmiennikiem. ")

say("Baronówna jest wściekła uważajcie na siebie! ")

say("Musicie spełnić warunki:")

say_reward("Minimalnie 75 poziom lidera grupy.")

say_reward("Posiadać Pajęczy Klucz.")

say_reward("Przynajmniej 1 osobową grupe.")

wait()

if pc.get_level() < 75 then

say_green(""..mob_name(20095)..":")

say("Wybacz, mogę wpuszczać tylko osoby od 75 poziomu. ")

party.chat("Lider grupy nie posiada 75 poziomu. ")

return

elseif pc.countitem(19) < 1 then

say_green(""..mob_name(20095)..":")

say("Nie posiadasz:")

say_item_vnum(19)

return

else

say_green(""..mob_name(20095)..":")

say("Spełniacie wszystkie warunki! ")

say("Czy aby na pewno chcecie wejść? ")

local x = select("Tak!", "Nie!")

if x == 2 then

return

elseif x == 1 then

pc.remove_item(19, 1)

pc.setqf("spider_dungeon", 1)

pc.setqf("eldorado", 1)

d.join(22)

end

end

end

when login with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.getqf("spider_dungeon") 1 and pc.getqf("eldorado") 1 and pc.in_dungeon() begin

pc.setqf("spider_dungeon", 0)

pc.setqf("eldorado", 0)

d.notice("<Informacja> Witajcie w Komnacie Baronówny Pająków! ")

d.notice("<Informacja> Odpierajcie ataki wroga w tym czasie musicie rozbić 5 Pajęczych Jaj, następnie czeka Was kolejne wyzwanie!")

d.notice("<Informacja> Macie na to 20 minut.")

d.notice("<Informacja> Powodzenia!")

d.spawn_mob(2095, 357, 577)

d.spawn_mob(2095, 378, 578)

d.spawn_mob(2095, 376, 598)

d.spawn_mob(2095, 357, 596)

d.spawn_mob(2095, 367, 585)

timer("regen", 2)

timer("eldoka", 1200)

end

when eldoka.timer with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.notice("<Informacja> Czas się skończył! Zostaniecie wyrzuceni z Komnaty Baronówenj!")

d.exit_all()

end

when regen.timer with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.regen_file("data/dungeon/spider_dungeon_regen.txt")

end

when 2095.party_kill with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.setf("metin", d.getf("metin")+1)

if d.getf("metin") == 1 then

d.notice("<Informacja> Jedeo Pajęcze Jajo został zniszczony!")

elseif d.getf("metin") == 2 then

d.notice("<Informacja> Dwa Pajęcze Jaja zostały zniszczone!")

elseif d.getf("metin") == 3 then

d.notice("<Informacja> Trzy Pajęcze Jaja zostały zniszczone!")

elseif d.getf("metin") == 4 then

d.notice("<Informacja> Cztery Pajęcze Jaja zostały zniszczone!")

elseif d.getf("metin") == 5 then

d.kill_all()

d.jump_all(368+512, 523+5632)

d.notice("<Informacja> Zbiliście wszystkie Pajęcze Jaja. ")

d.notice("<Informacja> Teraz musicie zabić wszystkie potwory, następnie pokonajcie Baronówne Pająków! ")

timer("regenikxd", 2)

end

end

when regenikxd.timer with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.regen_file("data/dungeon/spider_dungeon_regen.txt")

end

when 2074.party_kill with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.set_warp_at_eliminate(2, d.get_map_index(), 512+368, 5632+523, "data/dungeon/spider_dungeon_regen1.txt")

end

when 2092.party_kill with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

timer("Exit_Z", 40)

d.notice("<Informacja> Doskonała robota Baronówna pokonana! ")

d.notice("<Informacja> Macie 40 sekund zanim Was wyrzuci, pospieszcie się! ")

end

when Exit_Z.timer with pc.get_map_index() >= 22000000 and pc.get_map_index() < 23000000 and pc.in_dungeon() begin

d.exit_all()

end

end

end

Rozwiązane przez ouiai

Przejdź do rozwiązania

Featured Replies

Opublikowano

Weź tego questa daj do kosza, wygląda jak z 2008 roku. Jak chcesz to Ci napisze normalnego dunga za jakieś grosze.

Opublikowano
  • Rozwiązanie

d.join(22) -> 22 to id twojej mapy dungeona. Prywatna instancja tworzy index mapy mnożąc base id razy 10 000. Tzn pierwsza instancja dungeonu bedzie miala id w twoim przpadku 220000 kolejna 220001 itd... az do restartu serwera. Wiec warunek powinienes poprawic na:
when login with pc.get_map_index() >= 220000 and pc.get_map_index() < 230000 and pc.getqf("spider_dungeon") begin.

when login with pc.get_map_index() >= 220000and pc.get_map_index() < 230000 and d.getqf("spider_dungeon") == 1 and pc.in_dungeon() begin
d.notice("<Informacja> Witajcie w Komnacie Baronówny Pająków! ")

Powinno wtedy zadziałać.


I lepiej uzywac zmiennych przypisanych do dungeona d. niz postaci pc. moim zdaniem.
Zamiast pc.setqf("spider_dungeon", 1) to d.setqf("spider_dungeon", 1) zaraz po d.join()
Chociaż i bez tego by sie obeszło.

I zamiast zwyklych timerów to server timery lepiej uzywac, przekazująć w arg() id prywatnej instancji dungeona, zwykle timery ci padną jak wywali postac i mozesz zapomniec o powrocie na dunga na takim quescie + mają jeszcze inne wady.

Opublikowano
  • Programista
30 minut temu, ouiai napisał(a):

d.join(22) -> 22 to id twojej mapy dungeona. Prywatna instancja tworzy index mapy mnożąc base id razy 10 000. Tzn pierwsza instancja dungeonu bedzie miala id w twoim przpadku 220000 kolejna 220001 itd... az do restartu serwera. Wiec warunek powinienes poprawic na:
when login with pc.get_map_index() >= 220000 and pc.get_map_index() < 230000 and pc.getqf("spider_dungeon") begin.

when login with pc.get_map_index() >= 220000and pc.get_map_index() < 230000 and d.getqf("spider_dungeon") == 1 and pc.in_dungeon() begin
d.notice("<Informacja> Witajcie w Komnacie Baronówny Pająków! ")

Powinno wtedy zadziałać.


I lepiej uzywac zmiennych przypisanych do dungeona d. niz postaci pc. moim zdaniem.
Zamiast pc.setqf("spider_dungeon", 1) to d.setqf("spider_dungeon", 1) zaraz po d.join()
Chociaż i bez tego by sie obeszło.

I zamiast zwyklych timerów to server timery lepiej uzywac, przekazująć w arg() id prywatnej instancji dungeona, zwykle timery ci padną jak wywali postac i mozesz zapomniec o powrocie na dunga na takim quescie + mają jeszcze inne wady.

Co ma wspólnego server_timer z powrotem na dungeon?

34 minuty temu, Rain94 napisał(a):

Weź tego questa daj do kosza, wygląda jak z 2008 roku. Jak chcesz to Ci napisze normalnego dunga za jakieś grosze.

Darmowe lepsze

Opublikowano
2 minuty temu, KoYGeR napisał(a):

Co ma wspólnego server_timer z powrotem na dungeon?

Darmowe lepsze

Jak zwyklym timerem bedzie mialo np. rozpocząc kolejny stage dungeonu "za 10 sekund" np. zrespić bossa/spota/metka i wywali postac zanim ten timer dojdzie do konca, to timer sie nie wykona bo jest przypisany do postaci, ktorej nie ma i calego dunga szlak trafi nawet jak postać na niego wróci powrotem na dungeona, to instancja juz bedzie "zbugowana". Trzeba byloby oflagowywac doatkowe warunki "co jesli sie odjebie to i to...". Same problemy z tego tytułu. A sever timer wykona swoje zadanie nawet jesli postaci nie ma na dungeonie ani w grze. No chyba, ze sie myle to prosze mnie wyprowadzic z bledu, może sie przekonam zeby uzywac zwyklych tiemrow niz server_tiemrow, jesli przedstawisz zalety tego pierwszego.

A i tam wyzej sie jeblem nie d.getqf i d.setqf tylko d.getf i d.setf

Opublikowano
  • Programista
26 minut temu, ouiai napisał(a):

Jak zwyklym timerem bedzie mialo np. rozpocząc kolejny stage dungeonu "za 10 sekund" np. zrespić bossa/spota/metka i wywali postac zanim ten timer dojdzie do konca, to timer sie nie wykona bo jest przypisany do postaci, ktorej nie ma i calego dunga szlak trafi nawet jak postać na niego wróci powrotem na dungeona, to instancja juz bedzie "zbugowana". Trzeba byloby oflagowywac doatkowe warunki "co jesli sie odjebie to i to...". Same problemy z tego tytułu. A sever timer wykona swoje zadanie nawet jesli postaci nie ma na dungeonie ani w grze. No chyba, ze sie myle to prosze mnie wyprowadzic z bledu, może sie przekonam zeby uzywac zwyklych tiemrow niz server_tiemrow, jesli przedstawisz zalety tego pierwszego.

A i tam wyzej sie jeblem nie d.getqf i d.setqf tylko d.getf i d.setf

Ja nigdzie nie napisałem, że server_timer nie jest odpowiednim rozwiązaniem tutaj. Chodziło o to, że server_timer nie ma nic wspólnego z powrotem na dungeon, bo ani tego nie umożliwia, ani tego nie blokuje. W podstawowym src metina nie ma możliwości powrotu na dungeon (z wyjątkiem może dungeonów grupowych i to w szczególnych przypadkach, choć nie sprawdzałem tego tylko wolałem to zrobić jak trzeba). Natomiast to prawda - zwykły timer nie wykona się jeśli naszą postać wyloguje. Napisałeś to chaotycznie i nie zrozumiałem przekazu.

Edytowane przez KoYGeR

Opublikowano
15 minut temu, KoYGeR napisał(a):

Ja nigdzie nie napisałem, że server_timer nie jest odpowiednim rozwiązaniem tutaj. Chodziło o to, że server_timer nie ma nic wspólnego z powrotem na dungeon, bo ani tego nie umożliwia, ani tego nie blokuje. W podstawowym src metina nie ma możliwości powrotu na dungeon (z wyjątkiem może dungeonów grupowych i to w szczególnych przypadkach, choć nie sprawdzałem tego tylko wolałem to zrobić jak trzeba). Natomiast to prawda - zwykły timer nie wykona się jeśli naszą postać wyloguje. Napisałeś to chaotycznie i nie zrozumiałem przekazu.

No właśnie, otóż to. Bezpośrednio server_timer nie ma nic wspolnego z powrotem na dungeon, jednak pośrednio już tak, bo co z tego, że ktoś wróci na dungeon jak go już do końca nie dociągnie, bo bedzie zbugowany przez uzycie zlego timeru. Nie sztuką wgrać se system "rozszerzający" pewną funkcjonalność bazową, jeśli ona sama w sobie będzie chujowo napisana. A co do tematu to warto dzielić się dobrymi praktykami z innymi i tlumaczyc pewne aspekty a nie rzucać tekstami "wal na priv, zrobie ci gotowca za $$$" bo duzo osób jest ambitnych i wolą zrobić coś samemu i przy okazji sie czegoś nauczyć. To forum rozwojowe, dyskusyjne a nie pchli market czy jakiś bazar. To sie tyczy Obu Panów powyżej...

Opublikowano
  • Autor

@ouiai Dzięki za wyjaśnienie co jest 5 w questach dungów. Zrobiłem tako jaki swój pod dunga i trybi. Temat można zamknąć, jednak nie czyta ze zrozumieniem ^^

  • Sevence zablokował(a) ten temat
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.