Die Quest öffnet die ersten 6 Ebene nicht zu 100% zufällig aber es sind 7 verschiedene reihenfolgen definiert.
Ihr müsst noch folgendes anpassen:
- MapIndex: Entweder ihr nehmt 235 oder ihr sucht nach 235 und ersetzt es durch euren MapIndex.
- Regen's: Die Regens sind im Anhang zu finden ihr müsst allerdings noch die Gruppen 33360 - 33370 in der group.txt neu definieren.
Die Regens müssen dann nach "data/dungeon/blazingpurgatory/"
- Koordinaten: Damit der Transport der Spieler zu 7.Ebene funktioniert müsst ihr in zeile 113 die Koordinaten anpassen!
- Sonstiges: Folgendes müsst ihr eventuell auchnoch anpassen wenn ihr andere NPC's oder Metins verwendet!
- Zeile 7: 20351 NPC über den ihr Instanziert werdet.
- Zeile 27: 100 Das benötigte Level zum betreten
- Zeile 30,33 & 38 : Item Vnums welches zum betreten benötigt werden soll.
- Zeile 130 & 149: Vnums des Items welches zum Öffnen der Siegel benötigt wird.
- Zeile 133: 6009 = Vnum von Ignator
- Zeile 138 & 209: 8034 = Vnum vom Metin in Kammer 6
- Zeile 141: 6091 = Vnum von Razador
- Zeile 184 & 192: 241 und 240 zu der Anzahl der Monster in den Regens ändern. In meinem fall waren es 241 Monster in Kammer 1
- Zeile 188 & 206: Anzahl der benötigten Kills für einen Schlüsselstein
-
So jetzt aber die Quest:
PHP Code:
quest blazingpurgatory begin
state start begin
when 20351.chat."Die Pforten zur Hölle" with pc.get_map_index() == 235 begin
say_title("Wächter der Hölle")
say("Der Gott aller Dämonen, Sung Mahi, ist erwacht,")
say("das Ende der Menschheit naht! Noch ist seine")
say("zerstörerische Kraft geschwächt, der Blick")
say("seiner allsehenden Augen getrübt. Doch seine")
say("Untertanen werden nicht eher ruhen, bis ihr")
say("Meister sich in voller Größe gegen diese")
say("Welt erheben wird!")
say("")
wait()
say_title("Wächter der Hölle")
say("Seinen getreuen Anhänger Razador,")
say("Herrscher des Feuers, obliegt die Aufgabe,")
say("den legendären Rotdrachen aus seinem Verlies")
say("zu befreien, Sollte ihm das gelingen wird")
say("es seinem Gott den Weg zur Macht weiter ebnen.")
say("")
wait()
say_title("Wächter der Hölle")
if pc.get_level() >= 100 or pc.is_gm() then
if party.is_party() or pc.is_gm() then
if party.is_leader() or pc.is_gm() then
if pc.count_item(30189) > 0 or pc.is_gm() then
say_reward("Willst du mit deiner Gruppe Razador herausfordern?")
if select("Ja, auf in die Schlacht!","Nein") == 1 then
pc.remove_item(30189,1)
d.join(235)
end
else
say_reward("Du benötigst einen Höllenstein!")
say_item_vnum(30189)
end
else
say_reward("Du musst Anführer einer Gruppe sein!")
end
else
say_reward("Du musst einer Gruppe angehören!")
end
else
say_reward("Du musst lv.100 erreicht haben!")
end
end
when login with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
say("Begib dich zum Altar und bestehe die")
say("sechs Aufgaben der Hölle!")
say("")
if party.is_party() then
if party.is_leader() then
blazingpurgatory.start()
end
else
if pc.is_gm() then
blazingpurgatory.start()
end
end
end
function start()
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
d.setf("purgatory_gate_sequence",number(1,7))
local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
for i = 1, 6 do
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
end
d.setf("acutal_round",0)
d.setf("time", get_time()+60*60*1)
server_timer("purgatorytime",3600,pc.get_map_index())
server_loop_timer("purgatorytimenotice",300,pc.get_map_index())
blazingpurgatory.NoticeTime()
end
when purgatorytimenotice.server_timer begin
if d.select(get_server_timer_arg()) then
blazingpurgatory.NoticeTime()
end
end
when purgatorytime.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Die Zeit ist abgelaufen!")
d.exit_all()
end
end
when 20385.click with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 and d.getf("block_altar") == 0 begin
if d.getf("purgatory_level") == 7 then
d.setf("block_altar",1)
d.setf("actual_round",7)
d.notice("Ihr habt alle aufgaben der Hölle gemeistert,")
d.notice("nun werdet ihr Razador gegenüber treten!")
timer("warp_to_boss",5)
else
d.setf("purgatory_level",d.getf("purgatory_level")+1)
blazingpurgatory.purge()
blazingpurgatory.LoadStage()
d.setf("block_altar",1)
blazingpurgatory.NoticeTime()
d.notice("Eine Kammer wurde geöffnet!")
end
end
when warp_to_boss.timer begin
d.jump_all(8111,6864)
d.notice("Razador")
d.notice("Wiederstand ist Zwecklos! Sung Mahi wird wieder auferstehen!")
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_7.txt")
blazingpurgatory.NoticeTime()
end
when kill with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
if d.getf("actual_round") == 1 or d.getf("actual_round") == 3 then
d.setf("kill_count_bp1",d.getf("kill_count_bp1") +1)
if d.getf("kill_count_bp1") == d.getf("bp_kill_to_next") then
d.notice("Kehrt zum Altar zurück!")
blazingpurgatory.purge()
end
elseif d.getf("actual_round") == 2 or d.getf("actual_round") == 5 then
d.setf("kill_count_bp",d.getf("kill_count_bp") +1)
if d.getf("kill_count_bp") == d.getf("kill_to_drop_key") then
game.drop_item_with_ownership(50084,1)
d.setf("kill_count_bp",0)
end
elseif d.getf("actual_round") == 4 and npc.get_race() == 6009 then
if number(1,5) == 1 then
d.notice("Kehrt zum Altar zurück!")
blazingpurgatory.purge()
end
elseif d.getf("actual_round") == 6 and npc.get_race() == 8034 then
d.notice("Kehrt zum Altar zurück!")
blazingpurgatory.purge()
elseif d.getf("actual_round") == 7 and npc.get_race() == 6091 then
d.notice("Razador ist gefallen!")
d.clear_regen()
d.kill_all()
end
end
when 20081.take with pc.get_map_index() >= 2350000 and pc.get_map_index() <= 2355000 begin
if item.get_vnum() == 50084 then
if d.getf("actual_round") == 2 then
pc.remove_item(item.get_vnum(),1)
if number(1,8) == 1 then
npc.purge()
d.notice("Kehrt zum Altar zurück!")
blazingpurgatory.purge()
else
syschat("Dies war ein Falscher Schlüsselstein!")
end
elseif d.getf("actual_round") == 5 then
local sequence = {{1,2,3,4,5,5},{4,3,2,1,5,5},{4,5,3,1,2,2},{5,3,4,2,1,1},{5,1,3,4,2,2}}
if blazingpurgatory.GetPillarID() == sequence[d.getf("sequence")][d.getf("pillarcount")] then
pc.remove_item(item.get_vnum(),1)
npc.purge()
d.setf("pillarcount", d.getf("pillarcount")+1)
if d.getf("pillarcount") == 6 then
d.notice("Kehrt zum Altar zurück!")
blazingpurgatory.purge()
else
d.notice("Ihr müsst noch weitere "..6-d.getf("pillarcount").." Siegel öffnen!")
end
elseif blazingpurgatory.GetPillarID() == false then
syschat("Begib dich näher an das Siegel heran!")
elseif blazingpurgatory.GetPillarID() != sequence[d.getf("sequence")][d.getf("pillarcount")] then
pc.remove_item(item.get_vnum(),1)
syschat("Dies ist nicht das richtige Siegel!")
end
end
end
end
function LoadStage()
if d.getf("actual_round") == 1 then -- Alle Monster tötenw
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_1.txt")
d.setf("bp_kill_to_next",241)
d.setf("kill_count_bp1",0)
elseif d.getf("actual_round") == 2 then
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_2.txt")
d.setf("kill_to_drop_key",50)
d.spawn_mob(20081,195,352)
elseif d.getf("actual_round") == 3 then
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_3.txt")
d.setf("bp_kill_to_next",240)
d.setf("kill_count_bp1",0)
elseif d.getf("actual_round") == 4 then
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_4.txt")
elseif d.getf("actual_round") == 5 then
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_5.txt")
local sequence = {{1,2,3,4,5},{4,3,2,1,5},{4,5,3,1,2},{5,3,4,2,1},{5,1,3,4,2}}
local n = number(1,5)
local coords = {{502,354},{517,354},{487,354},{502,339},{502,369}}
for i = 1, 5 do
d.spawn_mob(20081, coords[i][1],coords[i][2])
end
d.setf("pillarcount", 1)
d.setf("sequence",n)
d.setf("kill_to_drop_key",100)
elseif d.getf("actual_round") == 6 then
d.set_regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_monster_6.txt")
d.spawn_mob(8034,507,489)
end
end
function purge()
d.setf("block_altar",0)
d.clear_regen()
d.kill_all()
blazingpurgatory.LoadGates()
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_flamenpc.txt")
if d.getf("purgatory_level") == 6 then
d.setf("purgatory_level",7)
end
end
function LoadGates()
local sequence = {{1,2,3,4,5,6},{4,1,3,2,5,6},{2,5,3,1,4,6},{3,1,6,2,4,5},{5,3,2,4,6,1},{6,1,5,2,4,3},{6,3,5,3,1,4}}
for i = 1, 6-d.getf("purgatory_level") do
d.regen_file("data/dungeon/blazingpurgatory/blazingpurgatory_gate_"..sequence[d.getf("purgatory_gate_sequence")][i]..".txt")
end
d.setf("actual_round",sequence[d.getf("purgatory_gate_sequence")][7-d.getf("purgatory_level")])
end
function NoticeTime()
local secondsLeft = (d.getf("time") - get_time())
local minutesLeft = math.ceil(secondsLeft / 60)
d.notice("Verbleibende Zeit: "..minutesLeft.." Minuten!")
end
function GetPillarID()
if pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
return 1
elseif pc.get_local_x() >= 517 - 5 and pc.get_local_x() <= 517 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
return 2
elseif pc.get_local_x() >= 487 - 5 and pc.get_local_x() <= 487 + 5 and pc.get_local_y() >= 354 - 5 and pc.get_local_y() <= 354 + 5 then
return 3
elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 339 - 5 and pc.get_local_y() <= 339 + 5 then
return 4
elseif pc.get_local_x() >= 502 - 5 and pc.get_local_x() <= 502 + 5 and pc.get_local_y() >= 369 - 5 and pc.get_local_y() <= 369 + 5 then
return 5
else
return false
end
end
end
end
Ich weiß sie ist nicht sehr benutzerfreundlich was das anpassen angeht aber ihr werdet das schon hinbekommen.
Wenn ihr sehen wollt das sie funktioniert sucht bei Youtube nach "Lanostia pforten zur hölle".
Ich gebe keinen Support oder helfe beim einbau.