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

Problem w działaniu Dungeonów.


Rekomendowane odpowiedzi

Opublikowano

Witam serdecznie!

Jeżeli byłby ktoś w stanie wytlumaczyć mi co robię nie tak, byłbym naprawdę wdzięczny.

 

Dzialam na dodatkowej maszynie terenza, z klientem lajka 40k. Dodalem parę nowych mapek do testowania itp, wszystko sprawne.

Zostawilem dungeony ktore byly, smoka w grocie i diabelskie katakumby.

 

Problem polega na tym, że dodając quest, obojetnie czy to do devilcatacomb czy komnaty smoka, czy nawet do nowego dungeona (dodaje wpisy index, map_allowy pod channel, npc na danym game z map_allow itp + client) NPC przenosi mnie na mapke owszem, ale nie wlacza sie zaden quest, sa poprostu regeny mobow z mapy i tyle, moze waznym byc tez to, ze npc przenosi kazdego gracza (na taki "dungeon" wchodzi kazdy kto kliknie na danego npc.chat z questa) tak jakby byla to normalna mapa. Proszę o pomoc i z góry dziękuje ;) pozdrawiam i spokojnego wieczoru wszystkim! xLami

Opublikowano

Czesc, moge Ci podeslac te ktore sprawdzalem, org. z plikow terenza i jeden nowy dung, testowalem tez komnate smoka i niby metiny sie pokazywaly ale tepalo kazdego kto chcial w to samo miejsce + zadnego info czy syschatu odnosnie questa. Sprawdzalem czy aby napewno mam wszystkie funkcje w game i questfunctions dopisane i jest to co powinno byc napewno. Questy zaraz podesle.
EDIT. Probowalem na testowej maszynie tego wlasnie questa dograc i taki objaw jest, ze wejsc na mape wejde to chyba indexy w porzadku, tylko nie pokazuje sie zaden syschat czy co ma sie dziac na dungeonie itp.

Quest na devilcatacombs

 

quest devilcave begin
state start begin
--Reset stanu DC
when 20351.chat."Zresetuj stan Devil's Catacomb!" with pc.is_gm begin
say_title("Strażnik Katakumb")
say("")
say_reward("Status zresetowany!")
say("")
game.set_event_flag("dc_versuche",1)
game.set_event_flag("dcgamer",0)
game.set_event_flag("dc_geschaft",0)
end
--Konfiguracja
when 20351.chat."Konfiguracja Devil's Catacomb!" with game.get_event_flag("block_dc_config") == 0 and pc.is_gm begin
game.set_event_flag("dc_is_ok",1)
game.set_event_flag("block_dc_config",1)
game.set_event_flag("dc_versuche",1)
end
--Nieudane wejście
--when 20351.chat."Lv.80 - Devil's Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 and pc.level > 80 begin
--say_title("Strażnik Katakumb")
--say("")
--say_reward("Nie możesz wejść do Devil's Catacomb!")
--say("")
--say_reward("Przynieś mi Relikt Żniwiarza!")
--say_reward("Wtedy pozwolę Ci iść dalej!")
--end
--when 20351.chat."Lv.80 - Devil's Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 1 and pc.level < 80 begin
--say_title("Strażnik Katakumb")
--say("")
--say_reward("Posiadasz zbyt niski poziom!")
--say("")
--end
--Oddanie przedmiotu
--when 20351.take with item.vnum == 30122 and pc.getqf("can_in_dc") == 0 begin
--if pc.level < 80 then
--say_title("Strażnik Katakumb")
--say("")
--say_reward("Musisz posiadać 80 poziom oraz Relikt Żniwiarza!")
--say("")
--else
--item.remove()
--say_title("Strażnik Katakumb")
--say("")
--say_reward("Dobrze, możesz wejść do Devil's Catacomb!")
--say("")
--pc.setqf("can_in_dc", 1)
--end
--end
--Wejście
when 20351.chat."Devil's Catacomb" with game.get_event_flag("dc_is_ok") == 1 and pc.getqf("can_in_dc") == 0 begin
if pc.level < 80 then
say_title("Strażnik Katakumb")
say("")
say_reward("Posiadasz zbyt niski poziom!")
say("")
else
say_title("Strażnik Katakumb")
say("")
say("Do tej pory "..game.get_event_flag("dcgamer").." wojowników weszło")
say("do Katakumb. Tylko "..game.get_event_flag("dc_geschaft").." wróciło")
say("bezpiecznie do swoich domów!")
wait()
say_title("Strażnik Katakumb")
say("")
say_reward("Jesteś pewien swojej decyzji?")
say_reward("Wojowników których próbowało przejść ")
say_reward("przez Katakumby, było aż "..game.get_event_flag("dc_versuche")..".")
say_reward("Niewielu z nich dożyło dnia dzisiejszego...")
say("")
local dc_login = select("Spróbuj", "Anuluj")
if dc_login == 1 then
pc.warp(314800, 1209800)
elseif dc_login == 2 then
return
end
end
end
--Poziom 1
when login with pc.get_map_index() == 209 begin
game.set_event_flag("trumetin", 0)
game.set_event_flag(("dcgamer"), game.get_event_flag("dcgamer")+1)
game.set_event_flag(("dc_versuche"), game.get_event_flag("dc_versuche")+1)
say_title("Devil's Catacomb")
say("Aby dostać się na drugi poziom musisz...")
say_item("Kryształowy Klucz Duszy", 30311, "")
say("przeciągnąć klucz na posąg!")
say("")
say_reward("Powodzenia!")
say("")
pc.setqf("sksgedroppt", 0)
end
when kill with not npc.is_pc() and pc.get_map_index() == 209 begin
local sks = number(1,15)
if sks==1 and pc.getqf("sksgedroppt")==0 then
pc.setqf("sksgedroppt", 1)
chat("Udało Ci się! Znalazłeś Kryształowy Klucz Duszy!")
game.drop_item(30311, 1)
else
chat("Ten potwór nie posiadał Klucza...")
end
end
when 30101.take with item.vnum == 30311 begin
item.remove()
d.new_jump_all(209, 3636, 12086)
timer("dc1", 600)
d.notice("Musisz przedostać się przez Piekielne Bramy!")
d.notice("Twój czas to tylko 10 minut!")
d.regen_file("data/dungeon/devilcave/dc_regen_ebene2.txt")
d.regen_file("data/dungeon/devilcave/dc_regen_tore.txt")
d.regen_file("data/dungeon/devilcave/dc_regen_tore_left.txt")
d.spawn_mob(30104, 741, 221)
end
when dc1.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
when dc2.timer begin
d.notice("Pozostało 50 minut!")
timer("dc3", 209)
end
when dc3.timer begin
d.notice("Pozostało 45 minut!")
timer("dc4", 209)
end
when dc4.timer begin
d.notice("Pozostało 40 minut!")
timer("dc5", 209)
end
when dc5.timer begin
d.notice("Pozostało 40 minut!")
timer("dc6", 209)
end
when dc6.timer begin
d.notice("Pozostało 35 minut!")
timer("dc7", 209)
end
when dc7.timer begin
d.notice("Pozostało 30 minut!")
timer("dc8", 209)
end
when dc8.timer begin
d.notice("Pozostało 25 minut!")
timer("dc9", 209)
end
when dc9.timer begin
d.notice("Pozostało 20 minut!")
timer("dc10", 209)
end
when dc10.timer begin
d.notice("Pozostało 15 minut!")
timer("dc11", 209)
end
when dc11.timer begin
d.notice("Pozostało 10 minut!")
timer("dc12", 600)
end
when dc12.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
--Poziom 2
when 30104.chat."Poziom 3 - Strażnik" begin
npc.purge()
say("To dopiero początek...")
wait()
d.new_jump_all(209, 4427, 12284)
timer("dc1", 6000)
timer("dc2", 600)
d.setf("goto_ebene3", 0)
d.notice("Przed tobą jeszcze długa droga...")
d.notice("Znajdź i zniszcz Metiny Odwetu")
d.regen_file("data/dungeon/devilcave/dc_regen_ebene3.txt")
d.spawn_mob(8038, 1351, 348)
d.spawn_mob(8038, 1148, 350)
d.spawn_mob(8038, 1151, 155)
d.spawn_mob(8038, 1351, 149)
end
when kill with npc.race == 8038 and pc.in_dungeon() begin
local n = number(1,4)
if n == 1 or game.get_event_flag("trumetin") == 3 then
d.notice("Prawdziwy Kamień Metin został zniszczony")
timer("dc2", 6000)
timer("devils_catacomb_goto_ebene5", 5)
else
d.notice("Zniszczyłeś fałszywy Kamień Metin")
game.set_event_flag("trumetin", game.get_event_flag("trumetin")+1)
end
end
when dc2.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
--Poziom 4 (Labirynt)
when devils_catacomb_goto_ebene4.timer begin
d.new_jump_all(209, 3143, 12657)
d.setf("labyrinth", 1)
timer("dc3", 600)
d.notice("Znajdź wyjście z labiryntu")
d.notice("następnie przeczytaj napis z posągu")
if game.get_event_flag("dc_is_wartung") == 1 then
d.spawn_mob(30104, 72, 586)
end
end
when 30104.chat."Labirynt - Napis" with pc.in_dungeon() begin
timer("dc3", 6000)
d.notice("Odnalałeś właściwą drogę ")
timer("devils_catacomb_goto_ebene5", 5)
end
when dc3.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
--Poziom 6 (Tartar)
when devils_catacomb_goto_ebene5.timer begin
d.new_jump_all(209, 3917, 12925)
d.notice("Znajdź i zabij Tartara, aby otrzymać Totem!")
d.notice("Gdy go otrzymasz, przeciągnij i upuść na obelisku")
d.spawn_mob(30102, 848, 739)
timer("dc4", 600)
d.regen_file("data/dungeon/devilcave/dc_regen_ebene5.txt")
local tartaros = number(1,4)
if tartaros==1 then
d.spawn_mob(2593, 991, 848)
elseif tartaros==2 then
d.spawn_mob(2593, 999, 652)
elseif tartaros==3 then
d.spawn_mob(2593, 848, 577)
elseif tartaros==4 then
d.spawn_mob(2593, 703, 644)
elseif tartaros==5 then
d.spawn_mob(2593, 692, 817)
end
end
when kill with npc.race == 2593 and pc.in_dungeon() begin
d.notice("Tartar został pokonany!")
game.drop_item(30312, 1)
end
when 30102.take with item.vnum == 30312 begin
timer("dc4", 6000)
item.remove()
npc.purge()
say_reward("...")
d.notice("Udało się!")
timer("devils_catacomb_goto_ebene6", 5)
end
when dc4.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
--Poziom 7 (Charon)
when devils_catacomb_goto_ebene6.timer begin
d.new_jump_all(209, 4411, 12736)
timer("dc5", 600)
d.notice("Zabij Charona aby dostać się na ostatni poziom!")
d.regen_file("data/dungeon/devilcave/dc_regen_ebene6.txt")
end
when kill with npc.race == 2597 and pc.in_dungeon() begin
timer("dc5", 6000)
d.notice("Pokonałeś Charona!")
d.notice("Przygotuj się do walki z Azraelem!")
timer("devils_catacomb_goto_ebene7", 10)
end
when dc5.timer begin
d.notice("Czas upłynął, zostaniesz przeniesiony do M1!")
warp_all_to_village()
end
--Poziom 8 (Azrael)
when devils_catacomb_goto_ebene7.timer begin
d.new_jump_all(209, 3147, 13191)
d.notice("Pokonaj Azraela, wówczas otrzymasz nagrodę!")
d.regen_file("data/dungeon/devilcave/dc_regen_ebene7.txt")
end
when kill with npc.race == 2598 and pc.in_dungeon() begin
game.set_event_flag(("dc_geschaft"), game.get_event_flag("dc_geschaft")+1)
local level = pc.level
d.notice("Pokonałeś Azraela, zasłużyłeś na nagrodę!")
d.kill_all()
d.kill_all()
notice_all("Gracz ".. pc.get_name() .." z poziomem ".. (level) .." zabił Azraela!")
timer("goout_from_dc", 60)
d.spawn_mob(9012, 74, 1159)
pc.give_item2(50186)
end
end
end

 

Opublikowano

Intern probowalem d.join i tez przenosi na mapke ale nie odpala questa (tak jakby teleportowalo na exp mape czy miasto) mobki regeny sa ale zadnego info czy syschatu z questa. Nie dogrywa tez do chatu npc tej funkcji -- Konfiguracja w quescie powyzej. Macie moze jakis najprostszy quest obojetnie smoka czy azraela wrzuce i sprawdze czy funkcje wszystkie dogralem? Z gory dzieki.

Opublikowano

w queście z dungeonem, jak już użyjesz komendy d.join(indeks) to następnie przy każdym whenie musisz sprawdzać czy postać jest w dungeonie oraz czy jest na podanym indeksie mapy, dla przykładu

quest dungeon begin
	state start begin
		when IDNPC.chat. "Wejdź " begin
			say("Zostaniesz przeniesiony!")
			wait()
			d.joing(210) -- przykładowy indeks
		end
		when login with pc.in_dungeon() and pc.get_map_index() >= 2100000 and pc.get_map_index() <= 2200000 begin
			--piszesz to co ma się wykonywać
		end
	end
end
Opublikowano

Ok, to probujemy z Waszymi poradami cos sam zdzialac, pora sie w koncu cos pouczyc wiecej :) dzieki wielkie wszyscy macie po plusie. Spokojnej nocy.

Opublikowano

Intern probowalem d.join i tez przenosi na mapke ale nie odpala questa (tak jakby teleportowalo na exp mape czy miasto) mobki regeny sa ale zadnego info czy syschatu z questa. Nie dogrywa tez do chatu npc tej funkcji -- Konfiguracja w quescie powyzej. Macie moze jakis najprostszy quest obojetnie smoka czy azraela wrzuce i sprawdze czy funkcje wszystkie dogralem? Z gory dzieki.

 

--Nieudane wejście

-- to jest komentarz więc nie ma prawa zadziałać. (To tak jakbyś w rootach wstawił #)

Opublikowano

Intern ja wiem ze to tylko komentarz -- ale cala funkcja nie dziala (npc. nie ma w chacie "Konfiguracja Devil's Catacomb" gdzie reszta smiga i przenosi na mape) tylko przy tej Konfiguracji wlasnie ustawia flage dla pc. dc_is_ok1. Walcze z tym ciagle :)

Opublikowano

Intern ja wiem ze to tylko komentarz -- ale cala funkcja nie dziala (npc. nie ma w chacie "Konfiguracja Devil's Catacomb" gdzie reszta smiga i przenosi na mape) tylko przy tej Konfiguracji wlasnie ustawia flage dla pc. dc_is_ok1. Walcze z tym ciagle :)

"Konfiguracja Devil's Catacomb"

with game.get_event_flag("block_dc_config") == 0 and pc.is_gm Begin

1. block_dc_config = 0

2. musisz być GM

 Inaczej tego nie widać

 

Ad1.

Nie ma nigdzie zerowania game.set_event_flag("block_dc_config",0)

więc albo dodaj pod game.set_event_flag("dc_geschaft",0) albo zmień na:

when 20351.chat."Konfiguracja Devil's Catacomb!" with pc.is_gm begin
game.set_event_flag("dc_is_ok",1)
game.set_event_flag("dc_versuche",1)
end
Opublikowano

Ok, wrocilem z roboty i zaraz sprawdze, dzieki wielkie za odpowiedz.

EDIT.

Spróbowałem sam złożyć banalny quest, który powinien mnie przenieść na dungeon (i to robi) i odpalić info po przeniesieniu z Testowym tekstem. Przenosić na mapke przenosi bez problemu, ale dalej nic sie nie dzieje.

Quest :

 

quest testowy_dungeon begin
state start begin
when 20367.chat."Test Dungeon" begin
if pc.get_level() < 75 then
say("Wybacz, do testu wpuszcze tylko 75.lv +")
else
say("Witaj "..pc.get_name().." ")
say("Testowy tekst ktory wyswietla sie normalnie na czacie")
say("u npc. Do pierwszego when i teleportu na mape wszystko dziala.")
say("Nie wiem gdzie dalej popelniam blad.")
wait()
say("Testowy item ktory jest przepustka na dungeon")
say_item_vnum(30319)
local test = select("Sprobuje", "Rezygnuje")
if test == 1 and pc.count_item(30319) == 1 then
say("MASZ ITEM TEST CZYLI WEJDZIESZ NA DUNGEON")
wait()
d.join(353)
elseif pc.count_item(30319) == 0 then
say("Niestety nie posiadasz ITEMU.")
say_item_vnum(30319)
elseif test == 2 then
return
end
end
end
when login with pc.get_map_index() >= 2100000 and pc.get_map_index() <= 2200000 and pc.is_gm begin
say("Testowy tekst ktory powinien sie wyswietlic")
say("po wejsciu do dungeonu... Ale sie nie wyswietla...")
end
when 1094.kill with pc.get_map_index() >= 2100000 and pc.get_map_index() <= 2200000 and pc.is_gm begin
say("Brawo, zabiles moba o vnumie 1094.")
say("Tzn zabilbys gdyby ten quest dzialal...")
timer("first", 6)
end
when first.timer with pc.get_map_index() >= 2100000 and pc.get_map_index() <= 2200000 and pc.is_gm begin
chat("Test czy zalaczy drugie pietro")
d.new_jump_all(353, 250, 250)
d.spawn_mob(1094, 265, 265)
end
end
end

 

Z góry bardzo dziękuje za odpowiedzi. Próbuje się czegoś sam nauczyć.

EDIT2.

To chyba znalazlem winowajce. Z komenda d.join przenosi na mapke ale nic sie nie dzieje, zmienilem na pc.warpa, przenosi i odpala funkcje z questa. Ale dalej nie wiem dlaczego tak sie dzieje.

Opublikowano

funkcje się nie wykonują, ponieważ masz d.join(353), a w warunku wykonania danej czynności sprawdzasz czy gracz jest na innym indeksie

 

jeżeli używasz d.join(353) - 353 indeks mapy to w tej instrukcji

pc.get_map_index() >= 2100000 and pc.get_map_index() <= 2200000

musisz podać również ten indeks z 4 zerami na końcu, chodzi tutaj o to, żeby każdy gracz wchodzący na dungeon w tym samym czasie "miał go dla siebie", czyli w tym samym momencie może być wykonywane 100 000 dungów, a więc jeśli Twój indeks ma numer 353 to ustawiasz

pc.get_map_index() >= 3530000 and pc.get_map_index() <= 3540000 
Opublikowano

@jkindly stary jesteś wielki! Faktycznie, błąd był w błędnym indexie, że sam nie przemyślałem tematu. Teleportuje bez problemu i pojedynczych graczy na inny index. Mega Ci dziękuje, limicik się należy :) !

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...