ersetz mal bitte die devil_tower.quest mit dieser hier.
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((5376+532)*100, (512+596+4)*100, 65)
end
pc.set_warp_location(65, 5376+532, 512+596+4)
elseif pc.get_map_index() >= 660000 and pc.get_map_index() <= 670000 then
pc.set_warp_location(65, 5376+532, 512+596+4)
end
end
when deviltower_man.chat.locale.deviltower_man_chat begin
if pc.get_level() < 40 then
say(locale.deviltower_man_say_you_cant)
else
--- say(locale.deviltower_man_say)
local s = select(locale.deviltower_enter,locale.deviltower_no_enter)
if s == 1 then
-- warp into!
pc.warp(216500,727000)
end
end
end
when deviltower_man.chat."Reichsteleport" begin
local map=pc.get_map_index()
local warp=0
local s=0
local check=0
say("Wohin m鐼htest du?")
if map!=1 and map!=21 and map!=41 then
check=1
s=select("Rotes Reich", "Gelbes Reich", "Blaues Reich", "Abbrechen")
warp=s
if s==4 then
return
end
end
if map==1 then
s=select("Gelbes Reich", "Blaues Reich", "Abbrechen")
if s==1 then
warp=2
elseif s==2 then
warp=3
end
elseif map==21 then
s=select("Rotes Reich", "Blaues Reich", "Abbrechen")
if s==1 then
warp=1
elseif s==2 then
warp=3
end
elseif map==41 then
s=select("Rotes Reich", "Gelbes Reich", "Abbrechen")
warp=s
end
if s==3 and check==0 then
return
end
if warp==1 then
pc.warp(474200, 954400)
elseif warp==2 then
pc.warp(63200, 166100)
elseif warp==3 then
pc.warp(960100, 268700)
end
end
when devil_stone1.kill begin
timer("devil_stone1_1", 5)
end
when 30121.take with item.vnum == 30185 begin
item.remove()
d.new_jump_all(66, special.devil_tower[1][1], special.devil_tower[1][2])
d.regen_file("data/dungeon/deviltower2_2_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_2_regen.txt")
end
when 30121.chat."Wer bist du?" begin
say("Sei gegr�腷 Fremder!")
say("Ich bin der W踄hter der zweiten, geheimem Ebne")
say("Um sie zu betreten, musst du mir")
say("ein spezeilles Item bringen")
say("Dies kriegst du nur vom Blauen Tod!")
say_item("Schwarzes Eis", 30185, "")
wait()
say("Zieh es einfach auf mich,")
say("und ich werde dir und deinen Gef鄣rten")
say("den Weg in die geheime Ebne zeigen...")
end
when devil_stone1_1.timer begin
local mapto7= pc.count_item(30302) -- 消滅不知是否存在的真�`靈塔
pc.remove_item(30302,mapto7)
local boxto7= pc.count_item(30300) -- 消滅不知是否存在的不知名的箱子
pc.remove_item(30300,boxto7)
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_stone2.kill begin
--d.jump_all_local(special.devil_tower[2][1], special.devil_tower[2][2])
--end
when devil_stone3.kill begin
--d.jump_all_local(special.devil_tower[3][1], special.devil_tower[3][2])
--d.set_exit_all_at_eliminate(6)
--d.set_warp_at_eliminate(6, d.get_map_index(), 100, 100)
--d.set_warp_at_eliminate(4, 65, 5376+532, 512+596+4)
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()
--d.exit_all()
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
--for i = 1, 7 do
-- positions[i][1] = positions[i][1] * 100
-- positions[i][2] = positions[i][2] * 100
-- 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)
-- 再現大量怪物及製造真石頭和假石頭
--d.regen_file("data/dungeon/deviltower4_regen.txt")
local positions = deviltower_zone.get_4floor_stone_pos()
for i = 1, 6 do
chat(positions[i][1], positions[i][2])
d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
end
chat(positions[7][1], positions[7][2])
local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
chat(vid)
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 den Metin des Teufels");
d.notice("Zerst顤t!");
d.notice("Du hast nun 15Min Zeit, den Richtigen");
d.notice("Metin des Sturzes zu zerst顤en!");
d.notice("Nur duch Zerst顤ung ddes Richtigen kommtst du weiter!");
end
when devil_stone4_fail1.server_timer begin
if d.select(get_server_timer_arg()) then
d.notice("Es verbleiben noch 10min!")
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("Es verbleiben noch 5min!")
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()) then
d.notice("Die Zeit ist abgelaufen.")
d.exit_all()
clear_server_timer('devil_stone4_update', get_server_timer_arg())
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("Die falschen Metinsteine Verschwinden...");
end
end
end
else
--d.clear_regen()
--d.regen_file("data/dungeon/deviltower5_regen.txt")
server_timer("devil_stone4_end", 5, get_server_timer_arg())
d.notice("Du hast den Richtigen Metin des Sturzes zerst顤t!");
d.notice("Du wirst in den 5ten Stock Teleportiert..")
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())
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
d.setf("level", 5)
d.setf("stone_count", 5)
d.notice("Du bist nun im 5ten Stock")
d.notice("Auf dieser Ebene ist viel K霵nen gefragt!")
d.notice("Einige Monster droppen einen 'Schl�sselsein'")
d.notice("Ziehe diesen Stein auf die S酳len,")
d.notice("und komme auf Ebene6!")
d.jump_all(special.devil_tower[4][1], special.devil_tower[4][2])
server_timer('devil_stone5_fail1', 5*60, get_server_timer_arg())
clear_server_timer('devil_stone4_update', get_server_timer_arg())
-- 5樓繼續再現
d.set_regen_file("data/dungeon/deviltower5_regen.txt")
-- 5樓封印石再現
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("蛀s verbleiben noch 15min!")
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("Es verbleiben noch 10min!")
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("蛀s verbleiben noch 5min!")
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()) then
d.notice("Die Zeit ist abgelaufen.")
d.exit_all()
end
end
--when devil_stone4.kill begin
--d.setf("level", 5)
--d.setf("stone_count", 4)
--d.clear_regen()
--d.regen_file("data/dungeon/deviltower5_regen.txt")
--d.jump_all_local(special.devil_tower[4][1], special.devil_tower[4][2])
--end
when 1062.kill with pc.in_dungeon() and d.getf("level") == 5 begin
local KILL_COUNT_FOR_DROP_KEY = 50
--if is_test_server() then
--KILL_COUNT_FOR_DROP_KEY = 1
--end
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.setf("level", 6)
d.clear_regen()
d.regen_file("data/dungeon/deviltower6_regen.txt")
d.notice("Du hast das Siegel ge鐪fnet!")
d.notice("Du wirst nun auf die 6te Ebene zu dem D鄝onenk霵ig geportet!")
d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
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())
else
d.notice("Du hast ein Siegel ge鐪fnet! "..d.getf("stone_count").." verbleiben noch!")
end
end
when devil_stone6.kill begin
-- Geschickt, um eine Karte, wo die Verfeinerung St.
-- Ansonsten □fnen Sie ein neues Lian Sheng
-- d.jump_all(special.devil_tower[6][1], special.devil_tower[6][2])
d.kill_all()
--d.set_warp_at_eliminate(3*60, 65, 5376+532, 512+596+4)
d.notice("Der D鄝onenk霵ig wurde get飆et. In wenigen Sekunden")
d.notice("wird dich ein Schmied belohnen.")
timer("schmied_spawn",10)
--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 schmied_spawn.timer begin
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
--------------------------------------
-- 由進入7樓至到達8樓之前
--------------------------------------
when 20074.chat."Zu den H鐬eren Stockwerken.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000begin
npc.lock()
say(""..mob_name(20074).."")
say("In den H鐬eren Ebenen des Turms")
say("wartet der Sensenmann auf dich!")
say("Du musst mindestens Lvl 75 sein!")
say("Bist du sicher das du voranschreiten willst?")
wait()
if pc.level >=75 then
say("Du bist mutig..")
say("Ich werde dich Teleportieren...")
say("")
npc.purge()
timer("devil_jump_7", 6)
return
end
say("Du bist unter Level 75!")
say("Du wirst weiter oben nur Grausame Qualen zusp�ren bekommen...")
say("Ich Teleportiere dich jetzt runter...zu deiner Sicherheit...")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20075.chat."Zu den H鐬eren Stockwerken.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
npc.lock()
say(""..mob_name(20075).."")
say("In den H鐬eren Ebenen des Turms")
say("wartet der Sensenmann auf dich!")
say("Du musst mindestens LV75 sein!")
say("Bist du sicher das du voranschreiten willst?")
wait()
if pc.level >=75 then
say("Du bist mutig..")
say("Ich werde dich Teleportieren...")
say("")
npc.purge()
timer("devil_jump_7", 6)
return
end
say("Du bistt unter Level75!")
say("Du wirst weiter oben nur Grausame Qualen zusp�ren bekommen...")
say("Ich Teleportiere dich jetzt runter...zu deiner Sicherheit...")
say("")
wait()
pc.warp(590500, 110500)
return
end
when 20076.chat."Zu den H鐬eren Stockwerken.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
npc.lock()
say(""..mob_name(20076).."")
say("In den H鐬eren Ebenen des Turms")
say("wartet der Sensenmann auf dich!")
say("Du musst mindestens LV75 sein!")
say("Bist du sicher das du voranschreiten willst?")
wait()
if pc.level >=75 then
say("Du bist mutig..")
say("Ich werde dich Teleportieren...")
say("")
npc.purge()
timer("devil_jump_7", 6)
return
end
say("Du bist unter Level 75!")
say("Du wirst weiter oben nur Grausame Qualen zusp�ren bekommen...")
say("Ich Teleportiere dich jetzt runter...zu deiner Sicherheit...")
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,10)
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樓
say("Du wirst in den 7ten Stock Teleportiert..")
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
local pct1 = number(1, 5)
if pct1 == 1 then
local pct2 = number(1, 10)
if pct2 == 1 then
-- 掉下真鎖匙
game.drop_item(30304, 1)
else
-- 掉下假鎖匙
game.drop_item(30303, 1)
end
else
return
end
end
when 20366.take with item.vnum == 30304 begin
-- 9樓封印解除
npc.purge()
item.remove()
d.kill_all()
timer("devil_jump_9", 6)
end
---------------------------------------------
-- 由進入9樓至結束
---------------------------------------------
when devil_jump_9.timer begin
d.setf("level", 9)
d.jump_all(2048+590, 6656+155)
d.clear_regen()
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.notice("Du hast das Oberhaupt der D鄝onen get飆et...")
d.notice("Du bist wahrhaft ein m踄htiger k鄝pfer...")
d.kill_all()
timer("devil_jump_10", 6)
end
---------------------------------------------
-- 由進入9樓至結束
---------------------------------------------
when devil_jump_10.timer begin
d.setf("level", 10)
d.clear_regen()
d.jump_all(2048+590, 6656+403)
d.regen_file("data/dungeon/deviltower10_regen.txt")
d.spawn_mob(1094, 602, 442)
end
when 1094.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.check_eliminated()
timer("devil_jump_11", 6)
end
---------------------------------------------
-- 由進入9樓至結束
---------------------------------------------
when devil_jump_11.timer begin
d.setf("level", 11)
d.clear_regen()
d.jump_all(2048+590, 6656+155)
d.regen_file("data/dungeon/deviltower11_regen.txt")
d.spawn_mob(1095, 610, 194)
end
when 1095.kill with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
d.kill_all()
d.kill_all()
d.notice("Du hast das geschafft, was keiner gedacht hat...")
d.notice("Du hast den Blauten Tod get飆et...")
d.notice("Nun erscheinen 3 Schmiede...")
d.notice("In 2min wirst du herraus telepotiert!")
d.check_eliminated()
--d.spawn_mob(20366, 690, 158);
d.spawn_mob(20074,600,168,0,0,1);
d.spawn_mob(20075,605,178,0,0,1);
d.spawn_mob(20076,610,188,0,0,1);
d.setqf("can_refine", 3)
timer("lolbai", 60)
end
when lolbai.timer begin
d.exit_all()
end
end
end