quest deviltower_zone begin state start begin when login begin if pc.get_map_index() == 66 then -- 並非在1樓時, 送返�~*�. -- 層數 範圍 -- 1樓 88 577 236 737 -- 2樓 91 343 238 504 -- 3樓 104 107 248 269 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 devil_stone1.kill begin timer("devil_stone1_1", 6) 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("這裡是4樓,選擇的門關。"); d.notice("無數隕石迷惑所有人耳目。"); d.notice("在15分鐘內找出真隕石,逐一擊破它*�!"); d.notice("只有這樣,才能進入選擇的門關。"); end
when devil_stone4_fail1.server_timer begin if d.select(get_server_timer_arg()) then d.notice("剩下10分鐘。") 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("剩下5分鐘。") 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("**定時間已到,任務失敗。") 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("假隕石消失...."); 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("憑著出色的判斷力和第六感,把隕石全部擊破了!"); d.notice("即將移到5樓。") 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("這裡是5樓,封印的門關。") d.notice("這裡無數怪物拿著前往6樓的結界石。") d.notice("而部份怪物則有能解體結界石的鎖匙。") d.notice("20分鐘內把結界石解體,再登上6樓!") 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.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("剩下15分鐘。") 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("剩下10分鐘。") 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("剩下5分鐘。") 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("**定時間已到,任務失敗。") 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 --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("所有結界石已解除封印,移到6樓。") d.notice("消滅�`靈戰神守�@著的6樓的所有怪物。") 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("解除了封印! 剩下"..d.getf("stone_count").."隻怪物。") end end
when devil_stone6.kill begin -- 傳送到煉聖所在的地圖 -- 否則,開�]一*虓s煉聖 --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.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."關於塔的上層.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin say(""..mob_name(20074).."") say("您發�{了前往7樓的方法啦。") say("*n進入7樓,需具備相當能力和技術。") say("嗯....") say("讓我看看您有沒有能力再上�@層樓..") wait() if pc.level >=75 then say("邪�*塔武器製�@師") say("您已夠資格再上�@層。") say("就讓我送您�@�{..") timer("devil_jump_7", 6) return end say("邪�*塔武器製�@師") say("您的*袙m度還未夠...") say("*n登上更高層有點困難...") say("再多�[*袙m吧。") say("") wait() pc.warp(590500, 110500) return end when 20075.chat."關於塔的上層.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin say(""..mob_name(20075).."") say("邪�*塔防禦�~製�@師") say("您發�{了前往7樓的方法啦。") say("*n進入7樓,需具備相當能力和技術。") say("嗯....") say("讓我看看您有沒有能力再上�@層樓..") wait() if pc.level >=75 then say("邪�*塔武器製�@師") say("您已夠資格再上�@層。") say("就讓我送您�@�{..") timer("devil_jump_7", 6) return end say("邪�*塔武器製�@師") say("您的*袙m度還未夠...") say("*n登上更高層有點困難...") say("再多�[*袙m吧。") say("") wait() pc.warp(590500, 110500) return end when 20076.chat."關於塔的上層.." with pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin say(""..mob_name(20076).."") say("邪�*塔裝飾�~製�@師") say("您發�{了前往7樓的方法啦。") say("*n進入7樓,需具備相當能力和技術。") say("嗯....") say("讓我看看您有沒有能力再上�@層樓..") wait() if pc.level >=75 then say("邪�*塔武器製�@師") say("您已夠資格再上�@層。") say("就讓我送您�@�{..") timer("devil_jump_7", 6) return end say("邪�*塔武器製�@師") say("您的*袙m度還未夠...") say("*n登上更高層有點困難...") say("再多�[*袙m吧。") say("") wait() pc.warp(590500, 110500) return 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("有了這張地圖,就能通過這裡。") 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() 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.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() timer("devil_end_jump", 60) end
when devil_end_jump.timer begin d.exit_all() end end end
[Biete]Entbuggte deviltower_zone.quest und 4 andere Quests 05/10/2010 - Metin2 PServer Guides & Strategies - 25 Replies Hallo Community,
ich biete euch:
1.) deviltower_zone.quest ( DE Like und entbuggt)
2.) fk_reset.quest ( selber gemachte Quest )
3.) in_grotte.quest ( selber gemachte Quest )
4.) check_trans_ticket.quest ( DE Like und entbuggt )
5.) spider_dungeon_2floor.quest ( DE Like und entbuggt )
Nat�rlich sind die Quests von mir gemacht.