Kann mir bitte den Dämonenturm Quest ergänzen. Und zwar, sobald man den Sensenmann killt, dass man in die nächste Ebene kommt wo der Blaue Tod schon steht.
PHP Code:
quest deviltower_zone begin
state start begin
when login begin
if pc.get_map_index() == 66 then
if pc.get_x() < 2048+88 or pc.get_y() < 6656+577 or pc.get_x() > 2048+236 or pc.get_y() > 6656+737 then
pc.warp(590500, 110500)
end
pc.set_warp_location(65, 5905, 1105)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
pc.set_warp_location(65, 5905, 1105)
deviltower_zone.register_player(pc.get_vid())
end
end
when logout begin
if pc.count_item(30300) >= 1 then
pc.remove_item(30300, pc.count_item(30300))
end
if pc.count_item(30302) >= 1 then
pc.remove_item(30302, pc.count_item(30302))
end
if pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 then
deviltower_zone.unregister_player(pc.get_vid())
end
end
when deviltower_man.chat."Der Dämonenturm" begin
if pc.get_level() < 40 then
say_title("Wächter des Demonenturms:")
say("")
--- l
say("Dieser Turm ist voll mit Demonen.")
say("Nur die Stärksten schaffen es auf die Spitze.")
say("Es wird gemunkelt, das keiner der den Turm je")
say("betreten hat, ihn wieder lebendig verlassen hat.")
say("Du kannst den Turm nicht betreten, du hast ")
say("Level 40 noch nicht erreicht.")
else
say_title("Wächter des Demonenturms:")
say("")
--- l
say("Dieser Turm ist voll mit Demonen.")
say("Nur die Stärksten schaffen es auf die Spitze.")
say("Es wird gemunkelt, das keiner der den Turm je")
say("betreten hat, ihn wieder lebendig verlassen hat.")
say("Willst du den Turm wirklich betreten?")
say("")
local s = select("Ja.", "Nein.")
if s == 1 then
-- warp into!
pc.warp(216500,727000)
end
end
end
when devil_stone1.kill begin
timer("devil_stone1_1", 8)
end
when devil_stone1_1.timer begin
d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
d.regen_file("data/dungeon/deviltower2_regen.txt")
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[2][1], special.devil_tower[2][2], "data/dungeon/deviltower3_regen.txt")
end
when devil_stone3.kill begin
d.set_warp_at_eliminate(4, d.get_map_index(), special.devil_tower[3][1], special.devil_tower[3][2], "data/dungeon/deviltower4_regen.txt")
d.check_eliminated()
end
function get_4floor_stone_pos()
local positions =
{
{368, 629}, {419, 630}, {428, 653}, {422, 679},
{395, 689}, {369, 679}, {361, 658},
}
for i = 1, 6 do
local j = number(i, 7)
if i != j then
local t = positions[i];
positions[i] = positions[j];
positions[j] = t;
end
end
return positions
end
when 8016.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.setf("level", 4)
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1, 6 do
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
end
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
d.set_unique("real", vid)
server_loop_timer('devil_stone4_update', 10, pc.get_map_index())
server_timer('devil_stone4_fail1', 5*60, pc.get_map_index())
d.notice("Du hast die Ebene der Illusionen im 4. Stock erreicht.");
d.notice("Viele falsche Metin Steine werden dich hier erwarten.");
d.notice("Finde den richtigen und zerstöre ihn innerhalb 15 Minuten.");
d.notice("Dies ist der einzige Weg, die nächste Ebene zu erreichen.");
end
when devil_stone4_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Zeit übrig: 10 Minuten")
server_timer('devil_stone4_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Zeit übrig: 5 Minuten")
server_timer('devil_stone4_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone4_fail.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("level") == 4 then
d.notice("Die Zeit ist abgelaufen.")
d.exit_all()
end
end
when devil_stone4_update.server_timer begin
if d.select(get_server_timer_arg()) then
if not d.is_unique_dead("real") then
for i = 1, 6 do
if d.getf("fakedead" .. i) == 0 then
if d.unique_get_hp_perc("fake" .. i) < 50 then
d.purge_unique("fake" .. i)
d.setf("fakedead" .. i, 1)
d.notice("Der Metin verschwindet...");
end
end
end
else
server_timer("devil_stone4_end", 5, get_server_timer_arg())
d.notice("Du hast Stärke gezeigt.");
d.notice("Du hast den Richtigen Metin zerstört.")
d.purge()
end
else
server_timer('devil_stone4_stop_timer', 1, get_server_timer_arg())
end
end
when devil_stone4_stop_timer.server_timer begin
clear_server_timer('devil_stone4_update', get_server_timer_arg())
end
when devil_stone4_end.server_timer begin
if d.select(get_server_timer_arg()) then
clear_server_timer('devil_stone4_update', get_server_timer_arg())
clear_server_timer('devil_stone4_fail1', get_server_timer_arg())
clear_server_timer('devil_stone4_fail2', get_server_timer_arg())
clear_server_timer('devil_stone4_fail', get_server_timer_arg())
d.setf("level", 5)
d.setf("stone_count", 5)
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
d.notice("Du hast die Verschlossene Ebene im 5. Stock erreicht.");
d.notice("Ein paar Monster tragen den Schlüssel zum öffnen")
d.notice("der altertümlichen Schlösser bei sich.")
d.notice("Öffne die 5 Schlösser in 20 Minuten um")
d.notice("die nächste Ebene zu erreichen!")
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
d.set_regen_file("data/dungeon/deviltower5_regen.txt")
d.spawn_mob(20073, 421, 452)
d.spawn_mob(20073, 380, 460)
d.spawn_mob(20073, 428, 414)
d.spawn_mob(20073, 398, 392)
d.spawn_mob(20073, 359, 426)
end
end
when devil_stone5_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Zeit übrig: 5 Minuten")
server_timer('devil_stone5_fail2', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail2.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Zeit übrig: 10 Minuten")
server_timer('devil_stone5_fail3', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail3.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Zeit übrig: 5 Minuten")
server_timer('devil_stone5_fail', 5*60, get_server_timer_arg())
end
end
when devil_stone5_fail.server_timer begin
if d.select(get_server_timer_arg()) and d.getf("level") == 5 then
d.notice("Die Zeit ist abgelaufen.")
d.exit_all()
end
end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
local n =d.getf("count") + 1
d.setf("count", n)
if n == KILL_COUNT_FOR_DROP_KEY then
game.drop_item(50084, 1)
d.setf("count", 0)
end
end
when devil_stone5.take with item.vnum == 50084 begin
npc.purge()
item.remove()
d.setf("stone_count", d.getf("stone_count") - 1)
if d.getf("stone_count") <= 0 then
d.clear_regen()
d.kill_all()
d.notice("Du hast das letzte Schloss geöffnet,")
d.notice("ihr werdet nun den 6. Stock betreten!")
clear_server_timer('devil_stone5_fail1', get_server_timer_arg())
clear_server_timer('devil_stone5_fail2', get_server_timer_arg())
clear_server_timer('devil_stone5_fail3', get_server_timer_arg())
clear_server_timer('devil_stone5_fail', get_server_timer_arg())
d.setf("level", 6)
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
d.regen_file("data/dungeon/deviltower6_regen.txt")
d.notice("Erledige alle Demonen, bevor")
d.notice("du den König angreifst!")
else
d.notice("Du hast das Schloss geöffnet,es sind noch "..d.getf("stone_count").." übrig.")
end
end
when devil_stone6.kill begin
d.kill_all()
d.check_eliminated()
local reward_alchemist = {20074, 20075, 20076}
d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
d.setqf("can_refine", 1)
end
when 20074.chat."Höhere Ebenen des DT" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20074)..":")
say("")
----"111111222222333333444444555555666666777777888888999999000000"
say("Es wurde ein Weg gefunden, die 7.Etage zu betreten.")
say("Es erfordert einigen Mut und Stärke, dorthin zu gehen.")
say("Hmmmm...")
say("Lass dich anschauen.....")
wait()
if pc.level >=60 then
say_title(""..mob_name(20074)..":")
say("")
say("Du bist würdig, nach oben zu gelangen")
say("Hier ist der Weg..")
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20074)..":")
say("")
say("Du musst mehr Trainieren.")
say("Komm wieder, wenn du stärker geworden bist.")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat."Höhere Ebenen des DT" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20075)..":")
say("")
say("Es wurde ein Weg gefunden, die 7.Etage zu betreten.")
say("Es erfordert einigen Mut und Stärke, dorthin zu gehen.")
say("Hmmmm...")
say("Lass dich anschauen.....")
wait()
if pc.level >=60 then
say_title(""..mob_name(20075)..":")
say("")
say("Du bist würdig, nach oben zu gelangen")
say("Hier ist der Weg..")
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20075)..":")
say("")
say("Du musst mehr Trainieren.")
say("Komm wieder, wenn du stärker geworden bist.")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat."Höhere Ebenen des DT" with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and npc.lock() begin
say_title(""..mob_name(20076)..":")
say("")
say("Es wurde ein Weg gefunden, die 7.Etage zu betreten.")
say("Es erfordert einigen Mut und Stärke, dorthin zu gehen.")
say("Hmmmm...")
say("Lass dich anschauen.....")
wait()
if pc.level >=60 then
say_title(""..mob_name(20076)..":")
say("")
say("Du bist würdig, nach oben zu gelangen")
say("Hier ist der Weg..")
timer("devil_jump_7", 6)
npc.unlock()
d.purge()
return
end
say_title(""..mob_name(20076)..":")
say("")
say("Du musst mehr Trainieren.")
say("Komm wieder, wenn du stärker geworden bist.")
say("")
wait()
pc.warp(590500, 110500)
return
end
when devil_jump_7.timer begin
d.clear_regen()
d.spawn_mob(8018, 639, 658)
d.spawn_mob(8018, 611, 637)
d.spawn_mob(8018, 596, 674)
d.spawn_mob(8018, 629, 670)
d.setf("level", 7)
d.jump_all(2048+590, 6656+638)
end
when 8018.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
local cont = d.getf("7_stone_kill") + 1
d.setf("7_stone_kill", cont)
if cont >= 4 then
d.setf("7_stone_kill", 0)
d.set_regen_file("data/dungeon/deviltower7_regen.txt")
end
end
when 8019.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
game.drop_item(30300, 1)
end
when 30300.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
pc.remove_item("30300", 1)
local pct = number(1,8)
if pct == 1 then
game.drop_item(30302, 1)
d.clear_regen()
else
game.drop_item(30301, 1)
end
end
when 30302.use with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
-- 8ÃþÀ¸·Î ¿öÇÁ
if d.getf( "level" ) != 7 then
pc.remove_item( "30302", 1)
return
end
----"111111222222333333444444555555666666777777888888999999000000"
say("Mit dieser Karte, kann ich dich zur nächsten Ebene bringen!")
pc.remove_item("30302", 1)
timer("devil_jump_8", 6)
d.clear_regen()
end
--------------------------------------------
-- 8Ãþ ÁøÀÔºÎÅÍ 9Ãþ ±îÁö
--------------------------------------------
when devil_jump_8.timer begin
d.setf("level", 8)
d.jump_all(2048+590, 6656+403)
d.set_regen_file("data/dungeon/deviltower8_regen.txt")
d.spawn_mob(20366, 640, 460)
local _count = pc.count_item(30302)
pc.remove_item(30302,_count)
end
when 1040.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
if d.getf("level") < 9 then
local pct1 = number(1, 10)
if pct1 == 1 then
local pct2 = number(1, 4)
if pct2 == 1 then
-- ÁøÂ¥ ¿*¼è µå·Ó
game.drop_item(30304, 1)
else
-- °¡Â¥ ¿*¼è µå·Ó
game.drop_item(30303, 1)
end
else
return
end
end
end
when 20366.take with item.vnum == 30304 begin
-- ºÀÀÎ ÇØÃ¼ 9Ãþ ¤¡¤¡
npc.purge()
item.remove()
timer("devil_jump_9", 8)
end
---------------------------------------------
-- 9Ãþ ÁøÀÔºÎÅÍ ¿Ï·á±îÁö
---------------------------------------------
when devil_jump_9.timer begin
d.setf("level", 9)
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/deviltower9_regen.txt")
end
when 1093.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
d.spawn_mob(33002, pc.get_local_x(), pc.get_local_y())
end
when 33002.chat."Belohnung für Tapfere Krieger" with pc.get_level() >= 60 begin
say("Du hast keine Mühen gescheut um den Sensenmann zu besiegen.")
say("Deine Mühe soll belohnt werden!")
say("")
say_reward("Du hast die Truhe der Könige erhalten!")
pc.give_item(50132,1)-- Truhe vergeben!
deviltower_zone.teleport()
--timer("devil_end_jump", 30)
end
when 33002.chat."Bring mich an einen sicheren Ort" with pc.get_level() < 60 begin
say_title("Ich verstehe:")
say("Dieser Ort macht dir wohl Angst.")
say("Ich werde dich an einen sicheren Ort bringen.")
deviltower_zone.teleport()
end
function teleport()
local t = select("Ok")
if t==1 then
say_title("Wohin möchtest du teleportiert werden ?")
local s = select("DT Eingang","Joan","Pyungmoo","Yongan")
if s == 1 then
pc.warp(590500,110800)
elseif s == 2 then
pc.warp(55700, 157900)
elseif s == 3 then
pc.warp(969600, 278400)
elseif s == 4 then
pc.warp(469300, 964200)
end
end
end
when devil_end_jump.timer begin
d.exit_all()
end
function register_player(vid)
local player_count = d.getf("player_count")
player_count = player_count + 1
d.setf("player_count", tonumber(player_count))
d.setf(string.format("player%d", player_count), tonumber(vid))
end
function unregister_player(vid)
local player_count = d.getf("player_count")
local found = false
for i = 1, player_count, 1 do
if found == true then
d.setf(string.format("player%d", tonumber(i)), d.getf(string.format("player%d", i+1)))
end
p = d.getf("player"..tostring(i))
if p == vid then
i = i -1
found = true
end
end
if found == true then
d.setf("player_count", tonumber(player_count - 1))
end
end
function get_players()
local players = {}
local player_count = d.getf("player_count")
for i = 1, player_count, 1 do
players[i] = d.getf("player"..tostring(i))
end
return players
end
function give_dc_access(pindex)
local self_checked = false
local self = pc.select(d.getf("player"..tostring(pindex)))
--pc.setqf("dcenter", 1)
pc.setf("deviltower_zone", "dcenter", 1)
pc.select(self)
end
end
end