Register for your free account! | Forgot your password?

You last visited: Today at 21:19

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[HILFEDevilsCatacomb

Discussion on [HILFEDevilsCatacomb within the Metin2 Private Server forum part of the Metin2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2014
Posts: 59
Received Thanks: 1
Question [HILFEDevilsCatacomb

Guten Abend Epvp.
Habe ein problem mit meiner Devils Catacomb.
Ich habe es nach dem vidieo vom "LenoxMt2" gemacht.
Jedoch ist mir aufgefallen da fehlen die Portale irgendwie,
denn wenn man Ebende 4 also beim Labyrinth durch die Portale gehen will,
passiert nichts...
Jetzt wollte ich fragen was ich dagegen machen kann?
Jemand meinte ich muss das bei Navicat in die mob_proto einfügen.
nun die frage, die schreibt man die querys dafür.

Hier er ausschnitt der Etage:

PHP Code:
        end
            
if d.getf("Ebene") == 4 then
            chat
("Findet den Weg aus dem Labyrinth.")
            
chat("Und findet die Inschrift am Runenpfahl.")
            
chat("Ihr habt 15 Minuten Zeit.")
            
timer("dc3"900)
            
d.spawn_mob(30104500800)
            
d.spawn_mob(10800328779)
            
d.spawn_mob(1080170672)
            
d.spawn_mob(10802142865)
            
d.spawn_mob(10803433935)
            
d.spawn_mob(10804243854)
            
d.spawn_mob(10805182667)
        
end 
ServerGott is offline  
Old 04/18/2015, 06:56   #2
 
SolWayne's Avatar
 
elite*gold: 30
Join Date: Feb 2015
Posts: 362
Received Thanks: 58
Da hast du die DE quest dafür

PHP Code:
quest devilcatacomb_zone begin
    state start begin
    
    
function is_closed()
        return (
game.get_event_flag("dc_closed") > 0)    --close dialog
    end
    
    
function setting()
        return
        {

        [
"base"]={["x"] = 3072  , ["y"]= 12032 ,},
        [
"floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        [
"floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        [
"floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        [
"floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        [
"floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        [
"floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        [
"floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        [
"floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        [
"floor5_entry"] = {["x"] = 846, ["y"] = 898},
        [
"floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        [
"floor7_entry"] = {["x"] = 73, ["y"] = 1156},

        [
"map_idx"] = 216,
        [
"rag"] = 30311,

        [
"devil_king"] = 2591,

        [
"reapers_credit1"] = 30319,
        [
"reapers_credit2"] = 30320,
        [
"reapers_credit3"] = 76002,

        [
"floor3_stone"] = 8038,  
        [
"floor3_stone_pos"] = {
                {
1366,    150},
                {
1366,    351},
                {
1234,    365},
                {
1234,    140},
                {
1150,    135},
                {
1130,    365},
                {
1135,    253}
        },

        [
"mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
        [
"floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
                               
"devilcatacomb_floor4_regen2.txt",
                               
"devilcatacomb_floor4_regen3.txt",
                               
"devilcatacomb_floor4_regen4.txt",
                               
"devilcatacomb_floor4_regen5.txt"} ,

        [
"credit_stone"] = 30101,
        [
"credit_stone_pos"] = {307,323},
        [
"floor2_stone"] = 30103,
        [
"floor2_stone_pos"] = {741,217},
        [
"floor2_merchant_npc"] = 20368,
        [
"floor2_merchant_npc_pos"] = {734,214},
        
        [
"floor4_npc"] = 30104,
        [
"floor4_npc_pos"] = {500717},

        [
"devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},

        [
"unlock_stone"] = 30312,
        [
"floor5_stone"] = 30102,
        [
"floor5_stone_pos"] = {848735},

        [
"devil_great_king"] = 2597 ,
        [
"devil_great_king_pos"] = {1303,704},
        [
"devil_emperor"] = 2598,
        [
"devil_emperor_pos"] = {74,1103},

        [
"dc2_door_set_size"] = {4,2,3,2},
        [
"dc2_door_set1"] = {
                                {{
30111,    566,    117,    5},{30112,  562,    311,    5,},{30118663,    434,    7},{30119,  881,    434,    7}},
                                {{
30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{
30113,    654,    211,    5},{30111,  707,    338,    7,},{30112775,    336,    7}},
                                {{
30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        [
"dc2_door_set2"] = {
                                {{
30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    647}},
                                {{
30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{
30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{
30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    
end
        when login begin
            local setting 
devilcatacomb_zone.setting()
            
local idx pc.get_map_index()
            if 
idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
--                pc.set_warp_location(655914992)         -----------&#50500;귀동굴 좌표로
                
local level d.getf("level")
                -- 
warp location&#51060; 0,0 이면 시스템 상으로, 종료 시, 종료 위치를 시작 위치로 저장한다.
                
d.set_warp_location (000)
                    
                if 
level == 2 then
                    say
(gameforge.devilcatacomb_zone._10_say)
                    
say(string.format(gameforge.devilcatacomb_zone._20_say60))
                elseif 
level == pc.getqf ("level"then
--                    say ("낙오되지 않기 위해 동료들과 합류하십시오.")
                    
say(gameforge.devilcatacomb_zone._30_say)
                else
                    
say(gameforge.devilcatacomb_zone._40_say)
--                    
say ("당신은 낙오되었습니다. 용신의 힘을 빌어 잠시 뒤 동굴 밖으로 이동합니다.")
                    
timer ("devilcatacomb_ban_timer"5)
                
end
            end
            
if idx == setting.map_idx then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
                -- 
2&#52789;이상이면, 쫓겨나
                
if pc.get_x() < setting.floor1_s.setting.base.x
                    
or pc.get_y() < setting.floor1_s.setting.base.y
                    
or pc.get_x() > setting.floor1_e.setting.base.x
                    
or pc.get_y() > setting.floor1_e.setting.base.y
                then
                    
-- &#50500;귀동굴 입구로
--                    if not is_test_server() then
                        say
(gameforge.devilcatacomb_zone._40_say)
                        
timer ("devilcatacomb_ban_timer"5)
--                    
end
                
else 
                    -- &
#50500;귀동굴 입구로
--                    pc.set_warp_location(655914992)
                    
say(gameforge.devilcatacomb_zone._50_say)
                
end
            end
        end

        when logout begin
            local idx 
pc.get_map_index()
            
local setting devilcatacomb_zone.setting()
            if 
idx == setting.map_idx or idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
            
end
        end

        when devilcatacomb_ban_timer
.timer begin
            pc
.warp((5914)*100, (992)*10065)
        
end

        when warp_timer
.timer begin
            local level 
d.getf("level")
            
local level_switch = {
                [
3] = gameforge.devilcatacomb_zone._60_say,
                [
4] = gameforge.devilcatacomb_zone._70_say,
                [
5] = gameforge.devilcatacomb_zone._80_say,
                [
6] = gameforge.devilcatacomb_zone._90_say,
            }
            
local t 3600 -(get_global_time() - d.getf("enter_time"))
            
local t_r math.mod (t60)
            
local t_m = (t_r) / 60
            d
.notice level_switch[level] )
            
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
            
d.set_warp_location (000)
        
end

        when devilcatacomb_man
.chat.gameforge.devilcatacomb_zone._100_npcChat with not devilcatacomb_zone.is_closed() begin
            local setting 
devilcatacomb_zone.setting()
            if 
pc.get_level() < 75 then
                say
(gameforge.devilcatacomb_zone._110_say)
            elseif 
pc.getf("deviltower_zone","9_done") == 0 then
                say
(gameforge.devilcatacomb_zone._120_say)
            elseif ((
get_global_time() - pc.getf("devilcatacomb_zone","last_exit_time")) < 1800then
                say
(gameforge.devilcatacomb_zone._130_say)
            else
                
say(gameforge.devilcatacomb_zone._140_say)
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    pc
.warp ((setting.floor1_entry.setting.base.)* 100, (setting.floor1_entry.setting.base.y) * 100)
                
end
            end
        end
    
        
-- &#47788;스터가 죽으면 발생하는 이벤트.
        
when kill begin
            local setting 
devilcatacomb_zone.setting()
            -- &
#50500;귀동굴 1층이면 1% 확률로 금시건을 드랍한다.
            
if pc.get_x() > setting.floor1_s.setting.base.x
                    
and pc.get_y() > setting.floor1_s.setting.base.y
                    
and pc.get_x() < setting.floor1_e.setting.base.x
                    
and pc.get_y() < setting.floor1_e.setting.base.y then
                local j 
number(1100)
                if 
== 1 then
                    game
.drop_item (setting.rag1)
                
end
            end
        end

    
function spawn_doors ()
        
local setting devilcatacomb_zone.setting()
        for 
1do
            
local mob_set setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
d.set_unique (i.."_1_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
            mob_set 
setting.dc2_door_set2[i]
            for 
1set_size do
                
d.set_unique (i.."_2_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
        end
    end
        
-- &#44552;시건을 나찰인증석에 드래그하면 2층으로 보낸다. 2층부터는 던전이다.
        
when devilcatacomb_credit_stonetake  begin
            local setting 
devilcatacomb_zone.setting()
        
            if 
item.vnum == setting.rag then 
                
if not party.is_party() then
                    say
(gameforge.devilcatacomb_zone._170_say)
                    return
                elseif 
party.is_in_dungeon() then
                    say
(gameforge.devilcatacomb_zone._180_say)
                    return
                
end

                item
.remove()
                
say(gameforge.devilcatacomb_zone._190_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._200_say)
                
wait()
                
d.new_jump_party (setting.map_idxsetting.floor2_entry.setting.base.x  setting.floor2_entry.setting.base.)
                
d.setqf2("devilcatacomb_zone","level"2)
                
d.setf ("level",2)
                
d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
                
                
d.spawn_mob (setting.floor2_merchant_npcsetting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
                
d.spawn_mob (setting.floor2_stonesetting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
                
                
devilcatacomb_zone.spawn_doors ()
                
server_timer('devilcatacomb_45m_left_timer',60 15d.get_map_index())
                
d.setf("enter_time"get_global_time())
            
end    
        end
        
        when devilcatacomb_45m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say45))
                
server_timer('devilcatacomb_30m_left_timer'60 15get_server_timer_arg())
            
end
        end

        when devilcatacomb_30m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say30))
                
server_timer('devilcatacomb_15m_left_timer'60 15get_server_timer_arg())
            
end
        end
    
        when devilcatacomb_15m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say15))
                
server_timer('devilcatacomb_5m_left_timer'60 10get_server_timer_arg())
            
end
        end

        when devilcatacomb_5m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say5))
                
server_timer('devilcatacomb_1m_left_timer'60 4get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_1m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say1))
                
server_timer ("devilcatacomb_0m_left_timer"60 1get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_0m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice (gameforge.devilcatacomb_zone._210_dNotice)
                
d.set_warp_location (655914992)
                
server_timer('devilcatacomb_exit_timer'7get_server_timer_arg())
            
end
        end
    
    
function is_dc2_doors_clear ()
        
local setting devilcatacomb_zone.setting()
        
local clear true
        
for 1do
            
local set_clear true
            local mob_set 
setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
set_clear set_clear and d.is_unique_dead (i.."_1_"..j)
            
end
            
if not set_clear then
                set_clear 
true
                mob_set 
setting.dc2_door_set2[i]
                for 
1set_size do
                    
set_clear set_clear and d.is_unique_dead (i.."_2_"..j)
                
end
            end
            clear 
clear and set_clear
        end

        
return clear
    end
    
        
-- &#54788;황석을 클릭하면 3층 진입 여부를 선택할 수 있고
        
-- &#51652;입시 사신의증표를 검사한다.
        
-- &#49324;신의 증표가 없다면 밖으로 워프된다.
        
when devilcatacomb_floor2_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
            if 
d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                
if not devilcatacomb_zone.is_dc2_doors_clear () then
                    say
(gameforge.devilcatacomb_zone._220_say)
                    
wait ()
                    return
                
end
                say
(gameforge.devilcatacomb_zone._230_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._240_say)
                
wait()
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                        d
.setf("devilcatacomb_floor2_stone_clicked"1)
                        
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                        
d.set_item_group ("reapers_credit"3setting.reapers_credit31setting.reapers_credit21setting.reapers_credit11)
                        
d.say_diff_by_item_group("reapers_credit"gameforge.devilcatacomb_zone._250_saygameforge.devilcatacomb_zone._260_say)
                        
timer ("devilcatacomb_floor3_enter_timer"7)
                    
end
                end
            
else
                
say(gameforge.devilcatacomb_zone._270_say)
            
end
        end
        
        when devilcatacomb_floor3_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.set_warp_location (655914992)
            
d.exit_all_by_item_group ("reapers_credit")
            
d.delete_item_in_item_group_from_all ("reapers_credit")
            
d.purge ()
            
d.jump_all (setting.floor3_entry.setting.base.setting.floor3_entry.setting.base.y)
            
d.setf("level",3)
            
d.setqf2("devilcatacomb_zone","level"3)
            
d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
            
timer("warp_timer",3)
            
            
local position setting.floor3_stone_pos
        
            local n 
number(1,7)
            for 
1do
                if (
!= n)
                
then
                    d
.set_unique("fake"..id.spawn_mobsetting.floor3_stoneposition[i][1], position[i][2]))
                
end
            end
        
            local vid 
d.spawn_mobsetting.floor3_stoneposition[n][1], position[n][2])
            
d.set_unique ("real",vid)
            if (
is_test_server()) then
                
-- real stone pos
                chat 
(position[n][1],position[n][2])
            
end
    
        end

        when devilcatacomb3_stone
.kill begin
            local setting 
devilcatacomb_zone.setting()
            -- &
#46028;이 파괴되면 진짜가 죽었는지 확인해본다.
            
-- &#51652;짜가 죽었으면 4층으로 이동한다.
            
if d.is_unique_dead("real"then
                d
.notice(gameforge.devilcatacomb_zone._280_dNotice)
                
                
d.setf ("level",4)
                
d.setqf2("devilcatacomb_zone","level"4)
                
timer ("devilcatacomb_floor4_enter_timer"3)
            else
                
d.notice(gameforge.devilcatacomb_zone._290_dNotice)
            
end
        end

        when devilcatacomb_floor4_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
local i number (15)
            
timer("warp_timer",3)
            
d.purge ()
            
d.jump_all (setting.floor4_entry.setting.base.setting.floor4_entry.setting.base.y)
            
d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
            
d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file[i])
            if (
is_test_server()) then
                d
.notice (setting.floor4_regen_file[i])
            
end
            d
.spawn_mob (setting.floor4_npcsetting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
        
end

        
-- devilcatacomb_floor4_stone&#45716; 클릭 시 4층에서 5층으로 이동시키는 npc이다.
        
when devilcatacomb_floor4_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
local n number (1,5)
            
say(gameforge.devilcatacomb_zone._300_say)
            
wait()
            if (
is_test_server()) then
                
-- devil_king pos
                chat 
(setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
end
            d
.purge ()
            
d.jump_all (setting.floor5_entry.setting.base.xsetting.floor5_entry.setting.base.)
            
d.setf ("level",5)
            
d.setqf2("devilcatacomb_zone","level"5)
            
timer("warp_timer",3)
            
d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
            
d.spawn_mob (setting.devil_kingsetting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
d.spawn_mob (setting.floor5_stonesetting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
        
end
        
        
-- &#50500;귀왕(2591)이 죽으면 봉인해체석 드랍
        
when devilcatacomb_devil_king.kill begin
            local setting 
devilcatacomb_zone.setting()
            
game.drop_item (setting.unlock_stone1)
        
end

        
-- &#49324;신금제비(30102)에 금제해체석봉을 드래그하면 모든 몬스터를 죽이고
        
-- 6&#52789;으로 이동하는 타이머를 동작시킨다.
        
when devilcatacomb_floor5_stone.take begin
            local setting 
devilcatacomb_zone.setting()
            if 
item.vnum == setting.unlock_stone then
                item
.remove ()
                
d.notice(gameforge.devilcatacomb_zone._310_dNotice)
                -- 
6&#52789;으로 이동
                
d.clear_regen()
                
d.purge()
                
timer("devilcatacomb_floor6_timer",2)
            
end
        end

        when devilcatacomb_floor6_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.setf("level",6)
            
d.setqf2("devilcatacomb_zone","level"6)
            
d.jump_all (setting.floor6_entry.setting.base.xsetting.floor6_entry.setting.base.)
            
d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
            
d.spawn_mob (setting.devil_great_kingsetting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
            
timer("warp_timer",3)
        
end
        
        
-- &#50500;걸(2597)이 죽으면, 6층의 타이머1이 동작한다.
        
when devilcatacomb_devil_great_king.kill begin
            server_timer 
("floor6_eli_check_timer_1"5,d.get_map_index())
        
end

        
-- 6&#52789;의 타이머1은 던전의 모든 몬스터 숫자를 보고,
        
-- 0&#51060;면 7층으로 워프하는 타이머를 동작한다.
        
-- &#48148;로 7층으로 가지 않는 이유는, 유저에게 준비할 시간을 주기 위해서이다.
        
-- 1&#51060;면 타이머2를 동작시킨다.
        
-- &#53440;이머1을 recursive하게 동작시키지 않은 것은,
        
-- &#44536;럴 경우 reset한 타이머1이 동작하지 않았기 때문이다.
        
when floor6_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer ("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor6_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end
        
        when devilcatacomb_floor7_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                local setting 
devilcatacomb_zone.setting()

                
d.setf("level",7)
                
d.setqf2("devilcatacomb_zone","level"7)
                
d.jump_all (setting.floor7_entry.setting.base.xsetting.floor7_entry.setting.base.)
                
d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
                
d.spawn_mob (setting.devil_emperorsetting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
                
server_timer ("devilcatacomb_floor7_say_timer"2get_server_timer_arg())
            
end    
        end

        when devilcatacomb_floor7_say_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then

                local t 
3600 -(get_global_time() - d.getf("enter_time"))
                
local t_r math.mod (t60)
                
local t_m = (t_r) / 60
                d
.notice(gameforge.devilcatacomb_zone._330_dNotice)
                
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
                
d.set_warp_location (000)
            
end
        end

        
-- 6&#52789;과 마찬가지로 사마휘(2598)이 죽으면
        
-- 7&#52789;의 타이머가 작동한다.
        
when devilcatacomb_devil_emperor.kill begin
            server_timer 
("floor7_eli_check_timer_1"5d.get_map_index())
        
end
        
        
-- 7&#52789;의 타이머는 6층 타이머와 비슷하며,
        
-- &#47788;스터 숫자가 0이면 exit 타이머를 발생시킨다.
        
-- &#48148;로 exit하지 않는 이유는, 유저들에게 준비할 시간을 주기 위해서이다.
        
when floor7_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor7_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end

        when devilcatacomb_exit_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.setqf2("devilcatacomb_zone","level"0)
                
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                
clear_server_timer("devilcatacomb_5m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_1m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_0m_left_timer"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_say_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                
d.clear_regen()
                
d.exit_all()
            
end
        end
    end  
--state
end   
--quest 
SolWayne is offline  
Old 04/18/2015, 08:09   #3
 
.Various's Avatar
 
elite*gold: 35
Join Date: Aug 2014
Posts: 336
Received Thanks: 267
Quote:
Originally Posted by SolWayne View Post
Da hast du die DE quest dafür

PHP Code:
quest devilcatacomb_zone begin
    state start begin
    
    
function is_closed()
        return (
game.get_event_flag("dc_closed") > 0)    --close dialog
    end
    
    
function setting()
        return
        {

        [
"base"]={["x"] = 3072  , ["y"]= 12032 ,},
        [
"floor1_s"] = { ["x"] = 20, ["y"] = 20, },
        [
"floor1_e"] = { ["x"] = 500, ["y"] = 470,},
        [
"floor2_s"] = { ["x"] = 510, ["y"] = 18, },
        [
"floor2_e"] = { ["x"] = 978, ["y"] = 470,},
        [
"floor1_entry"] = {["x"] = 73, ["y"] = 63,},
        [
"floor2_entry"] = {["x"] = 550, ["y"] = 45,},
        [
"floor3_entry"] = {["x"] = 1378, ["y"] = 249,},
        [
"floor4_entry"] = {["x"] = 70, ["y"] = 592,},
        [
"floor5_entry"] = {["x"] = 846, ["y"] = 898},
        [
"floor6_entry"] = {["x"] = 1362, ["y"] = 666},
        [
"floor7_entry"] = {["x"] = 73, ["y"] = 1156},

        [
"map_idx"] = 216,
        [
"rag"] = 30311,

        [
"devil_king"] = 2591,

        [
"reapers_credit1"] = 30319,
        [
"reapers_credit2"] = 30320,
        [
"reapers_credit3"] = 76002,

        [
"floor3_stone"] = 8038,  
        [
"floor3_stone_pos"] = {
                {
1366,    150},
                {
1366,    351},
                {
1234,    365},
                {
1234,    140},
                {
1150,    135},
                {
1130,    365},
                {
1135,    253}
        },

        [
"mob_regen_file_path"] = "data/dungeon/devilcatacomb/",
        [
"floor4_regen_file"] = {"devilcatacomb_floor4_regen1.txt",
                               
"devilcatacomb_floor4_regen2.txt",
                               
"devilcatacomb_floor4_regen3.txt",
                               
"devilcatacomb_floor4_regen4.txt",
                               
"devilcatacomb_floor4_regen5.txt"} ,

        [
"credit_stone"] = 30101,
        [
"credit_stone_pos"] = {307,323},
        [
"floor2_stone"] = 30103,
        [
"floor2_stone_pos"] = {741,217},
        [
"floor2_merchant_npc"] = 20368,
        [
"floor2_merchant_npc_pos"] = {734,214},
        
        [
"floor4_npc"] = 30104,
        [
"floor4_npc_pos"] = {500717},

        [
"devil_king_pos"] = {{673,829},{691,638},{848,568},{1026,642},{1008,862}},

        [
"unlock_stone"] = 30312,
        [
"floor5_stone"] = 30102,
        [
"floor5_stone_pos"] = {848735},

        [
"devil_great_king"] = 2597 ,
        [
"devil_great_king_pos"] = {1303,704},
        [
"devil_emperor"] = 2598,
        [
"devil_emperor_pos"] = {74,1103},

        [
"dc2_door_set_size"] = {4,2,3,2},
        [
"dc2_door_set1"] = {
                                {{
30111,    566,    117,    5},{30112,  562,    311,    5,},{30118663,    434,    7},{30119,  881,    434,    7}},
                                {{
30116,    743,    390,    3},{30119,  612,    251,    1,}},
                                {{
30113,    654,    211,    5},{30111,  707,    338,    7,},{30112775,    336,    7}},
                                {{
30117,    733,    294,    3},{30113,  694,    271,    1,}}
                            },
        [
"dc2_door_set2"] = {
                                {{
30115,    942,    141,    5},{30116,  942,    245,    5},{30117,  942,    321,    5},{30115,  763,    647}},
                                {{
30118,    643,    116,    3},{30114,  900,    167,    1}},
                                {{
30114,    850,    293,    5},{30113,  715,    164,    7},{30114,  817,    162,    7}},
                                {{
30111,    802,    277,    1},{30112,  800,    241,    1}}
                            },
        }
    
end
        when login begin
            local setting 
devilcatacomb_zone.setting()
            
local idx pc.get_map_index()
            if 
idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
--                pc.set_warp_location(655914992)         -----------&#50500;귀동굴 좌표로
                
local level d.getf("level")
                -- 
warp location&#51060; 0,0 이면 시스템 상으로, 종료 시, 종료 위치를 시작 위치로 저장한다.
                
d.set_warp_location (000)
                    
                if 
level == 2 then
                    say
(gameforge.devilcatacomb_zone._10_say)
                    
say(string.format(gameforge.devilcatacomb_zone._20_say60))
                elseif 
level == pc.getqf ("level"then
--                    say ("낙오되지 않기 위해 동료들과 합류하십시오.")
                    
say(gameforge.devilcatacomb_zone._30_say)
                else
                    
say(gameforge.devilcatacomb_zone._40_say)
--                    
say ("당신은 낙오되었습니다. 용신의 힘을 빌어 잠시 뒤 동굴 밖으로 이동합니다.")
                    
timer ("devilcatacomb_ban_timer"5)
                
end
            end
            
if idx == setting.map_idx then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
                -- 
2&#52789;이상이면, 쫓겨나
                
if pc.get_x() < setting.floor1_s.setting.base.x
                    
or pc.get_y() < setting.floor1_s.setting.base.y
                    
or pc.get_x() > setting.floor1_e.setting.base.x
                    
or pc.get_y() > setting.floor1_e.setting.base.y
                then
                    
-- &#50500;귀동굴 입구로
--                    if not is_test_server() then
                        say
(gameforge.devilcatacomb_zone._40_say)
                        
timer ("devilcatacomb_ban_timer"5)
--                    
end
                
else 
                    -- &
#50500;귀동굴 입구로
--                    pc.set_warp_location(655914992)
                    
say(gameforge.devilcatacomb_zone._50_say)
                
end
            end
        end

        when logout begin
            local idx 
pc.get_map_index()
            
local setting devilcatacomb_zone.setting()
            if 
idx == setting.map_idx or idx >= (setting.map_idx 10000) and idx < ((setting.map_idx 1) * 10000then
                pc
.setf("devilcatacomb_zone","last_exit_time"get_global_time())
            
end
        end

        when devilcatacomb_ban_timer
.timer begin
            pc
.warp((5914)*100, (992)*10065)
        
end

        when warp_timer
.timer begin
            local level 
d.getf("level")
            
local level_switch = {
                [
3] = gameforge.devilcatacomb_zone._60_say,
                [
4] = gameforge.devilcatacomb_zone._70_say,
                [
5] = gameforge.devilcatacomb_zone._80_say,
                [
6] = gameforge.devilcatacomb_zone._90_say,
            }
            
local t 3600 -(get_global_time() - d.getf("enter_time"))
            
local t_r math.mod (t60)
            
local t_m = (t_r) / 60
            d
.notice level_switch[level] )
            
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
            
d.set_warp_location (000)
        
end

        when devilcatacomb_man
.chat.gameforge.devilcatacomb_zone._100_npcChat with not devilcatacomb_zone.is_closed() begin
            local setting 
devilcatacomb_zone.setting()
            if 
pc.get_level() < 75 then
                say
(gameforge.devilcatacomb_zone._110_say)
            elseif 
pc.getf("deviltower_zone","9_done") == 0 then
                say
(gameforge.devilcatacomb_zone._120_say)
            elseif ((
get_global_time() - pc.getf("devilcatacomb_zone","last_exit_time")) < 1800then
                say
(gameforge.devilcatacomb_zone._130_say)
            else
                
say(gameforge.devilcatacomb_zone._140_say)
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    pc
.warp ((setting.floor1_entry.setting.base.)* 100, (setting.floor1_entry.setting.base.y) * 100)
                
end
            end
        end
    
        
-- &#47788;스터가 죽으면 발생하는 이벤트.
        
when kill begin
            local setting 
devilcatacomb_zone.setting()
            -- &
#50500;귀동굴 1층이면 1% 확률로 금시건을 드랍한다.
            
if pc.get_x() > setting.floor1_s.setting.base.x
                    
and pc.get_y() > setting.floor1_s.setting.base.y
                    
and pc.get_x() < setting.floor1_e.setting.base.x
                    
and pc.get_y() < setting.floor1_e.setting.base.y then
                local j 
number(1100)
                if 
== 1 then
                    game
.drop_item (setting.rag1)
                
end
            end
        end

    
function spawn_doors ()
        
local setting devilcatacomb_zone.setting()
        for 
1do
            
local mob_set setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
d.set_unique (i.."_1_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
            mob_set 
setting.dc2_door_set2[i]
            for 
1set_size do
                
d.set_unique (i.."_2_"..jd.spawn_mob_dir (mob_set[j][1], mob_set[j][2], mob_set[j][3], mob_set[j][4]))
            
end
        end
    end
        
-- &#44552;시건을 나찰인증석에 드래그하면 2층으로 보낸다. 2층부터는 던전이다.
        
when devilcatacomb_credit_stonetake  begin
            local setting 
devilcatacomb_zone.setting()
        
            if 
item.vnum == setting.rag then 
                
if not party.is_party() then
                    say
(gameforge.devilcatacomb_zone._170_say)
                    return
                elseif 
party.is_in_dungeon() then
                    say
(gameforge.devilcatacomb_zone._180_say)
                    return
                
end

                item
.remove()
                
say(gameforge.devilcatacomb_zone._190_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._200_say)
                
wait()
                
d.new_jump_party (setting.map_idxsetting.floor2_entry.setting.base.x  setting.floor2_entry.setting.base.)
                
d.setqf2("devilcatacomb_zone","level"2)
                
d.setf ("level",2)
                
d.regen_file (setting.mob_regen_file_path.."dc_2f_regen.txt")
                
                
d.spawn_mob (setting.floor2_merchant_npcsetting.floor2_merchant_npc_pos[1], setting.floor2_merchant_npc_pos[2])
                
d.spawn_mob (setting.floor2_stonesetting.floor2_stone_pos[1], setting.floor2_stone_pos[2])
                
                
devilcatacomb_zone.spawn_doors ()
                
server_timer('devilcatacomb_45m_left_timer',60 15d.get_map_index())
                
d.setf("enter_time"get_global_time())
            
end    
        end
        
        when devilcatacomb_45m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say45))
                
server_timer('devilcatacomb_30m_left_timer'60 15get_server_timer_arg())
            
end
        end

        when devilcatacomb_30m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say30))
                
server_timer('devilcatacomb_15m_left_timer'60 15get_server_timer_arg())
            
end
        end
    
        when devilcatacomb_15m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say15))
                
server_timer('devilcatacomb_5m_left_timer'60 10get_server_timer_arg())
            
end
        end

        when devilcatacomb_5m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say5))
                
server_timer('devilcatacomb_1m_left_timer'60 4get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_1m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice(string.format(gameforge.devilcatacomb_zone._20_say1))
                
server_timer ("devilcatacomb_0m_left_timer"60 1get_server_timer_arg())
            
end
        end
        
        when devilcatacomb_0m_left_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.notice (gameforge.devilcatacomb_zone._210_dNotice)
                
d.set_warp_location (655914992)
                
server_timer('devilcatacomb_exit_timer'7get_server_timer_arg())
            
end
        end
    
    
function is_dc2_doors_clear ()
        
local setting devilcatacomb_zone.setting()
        
local clear true
        
for 1do
            
local set_clear true
            local mob_set 
setting.dc2_door_set1[i]
            
local set_size setting.dc2_door_set_size[i]
            for 
1set_size do
                
set_clear set_clear and d.is_unique_dead (i.."_1_"..j)
            
end
            
if not set_clear then
                set_clear 
true
                mob_set 
setting.dc2_door_set2[i]
                for 
1set_size do
                    
set_clear set_clear and d.is_unique_dead (i.."_2_"..j)
                
end
            end
            clear 
clear and set_clear
        end

        
return clear
    end
    
        
-- &#54788;황석을 클릭하면 3층 진입 여부를 선택할 수 있고
        
-- &#51652;입시 사신의증표를 검사한다.
        
-- &#49324;신의 증표가 없다면 밖으로 워프된다.
        
when devilcatacomb_floor2_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
            if 
d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                
if not devilcatacomb_zone.is_dc2_doors_clear () then
                    say
(gameforge.devilcatacomb_zone._220_say)
                    
wait ()
                    return
                
end
                say
(gameforge.devilcatacomb_zone._230_say)
                
wait()
                
say(gameforge.devilcatacomb_zone._240_say)
                
wait()
                
local s select(gameforge.devilcatacomb_zone._150_selectgameforge.devilcatacomb_zone._160_select)
                if 
== 1 then
                    
if d.getf("devilcatacomb_floor2_stone_clicked") == 0 then
                        d
.setf("devilcatacomb_floor2_stone_clicked"1)
                        
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                        
d.set_item_group ("reapers_credit"3setting.reapers_credit31setting.reapers_credit21setting.reapers_credit11)
                        
d.say_diff_by_item_group("reapers_credit"gameforge.devilcatacomb_zone._250_saygameforge.devilcatacomb_zone._260_say)
                        
timer ("devilcatacomb_floor3_enter_timer"7)
                    
end
                end
            
else
                
say(gameforge.devilcatacomb_zone._270_say)
            
end
        end
        
        when devilcatacomb_floor3_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.set_warp_location (655914992)
            
d.exit_all_by_item_group ("reapers_credit")
            
d.delete_item_in_item_group_from_all ("reapers_credit")
            
d.purge ()
            
d.jump_all (setting.floor3_entry.setting.base.setting.floor3_entry.setting.base.y)
            
d.setf("level",3)
            
d.setqf2("devilcatacomb_zone","level"3)
            
d.regen_file (setting.mob_regen_file_path.."dc_3f_regen.txt")
            
timer("warp_timer",3)
            
            
local position setting.floor3_stone_pos
        
            local n 
number(1,7)
            for 
1do
                if (
!= n)
                
then
                    d
.set_unique("fake"..id.spawn_mobsetting.floor3_stoneposition[i][1], position[i][2]))
                
end
            end
        
            local vid 
d.spawn_mobsetting.floor3_stoneposition[n][1], position[n][2])
            
d.set_unique ("real",vid)
            if (
is_test_server()) then
                
-- real stone pos
                chat 
(position[n][1],position[n][2])
            
end
    
        end

        when devilcatacomb3_stone
.kill begin
            local setting 
devilcatacomb_zone.setting()
            -- &
#46028;이 파괴되면 진짜가 죽었는지 확인해본다.
            
-- &#51652;짜가 죽었으면 4층으로 이동한다.
            
if d.is_unique_dead("real"then
                d
.notice(gameforge.devilcatacomb_zone._280_dNotice)
                
                
d.setf ("level",4)
                
d.setqf2("devilcatacomb_zone","level"4)
                
timer ("devilcatacomb_floor4_enter_timer"3)
            else
                
d.notice(gameforge.devilcatacomb_zone._290_dNotice)
            
end
        end

        when devilcatacomb_floor4_enter_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
local i number (15)
            
timer("warp_timer",3)
            
d.purge ()
            
d.jump_all (setting.floor4_entry.setting.base.setting.floor4_entry.setting.base.y)
            
d.regen_file (setting.mob_regen_file_path.."dc_4f_regen.txt")
            
d.regen_file (setting.mob_regen_file_path..setting.floor4_regen_file[i])
            if (
is_test_server()) then
                d
.notice (setting.floor4_regen_file[i])
            
end
            d
.spawn_mob (setting.floor4_npcsetting.floor4_npc_pos[1], setting.floor4_npc_pos[2])
        
end

        
-- devilcatacomb_floor4_stone&#45716; 클릭 시 4층에서 5층으로 이동시키는 npc이다.
        
when devilcatacomb_floor4_stone.click begin
            local setting 
devilcatacomb_zone.setting()
            
local n number (1,5)
            
say(gameforge.devilcatacomb_zone._300_say)
            
wait()
            if (
is_test_server()) then
                
-- devil_king pos
                chat 
(setting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
end
            d
.purge ()
            
d.jump_all (setting.floor5_entry.setting.base.xsetting.floor5_entry.setting.base.)
            
d.setf ("level",5)
            
d.setqf2("devilcatacomb_zone","level"5)
            
timer("warp_timer",3)
            
d.regen_file (setting.mob_regen_file_path.."dc_5f_regen.txt")
            
d.spawn_mob (setting.devil_kingsetting.devil_king_pos[n][1], setting.devil_king_pos[n][2])
            
d.spawn_mob (setting.floor5_stonesetting.floor5_stone_pos[1], setting.floor5_stone_pos[2])
        
end
        
        
-- &#50500;귀왕(2591)이 죽으면 봉인해체석 드랍
        
when devilcatacomb_devil_king.kill begin
            local setting 
devilcatacomb_zone.setting()
            
game.drop_item (setting.unlock_stone1)
        
end

        
-- &#49324;신금제비(30102)에 금제해체석봉을 드래그하면 모든 몬스터를 죽이고
        
-- 6&#52789;으로 이동하는 타이머를 동작시킨다.
        
when devilcatacomb_floor5_stone.take begin
            local setting 
devilcatacomb_zone.setting()
            if 
item.vnum == setting.unlock_stone then
                item
.remove ()
                
d.notice(gameforge.devilcatacomb_zone._310_dNotice)
                -- 
6&#52789;으로 이동
                
d.clear_regen()
                
d.purge()
                
timer("devilcatacomb_floor6_timer",2)
            
end
        end

        when devilcatacomb_floor6_timer
.timer begin
            local setting 
devilcatacomb_zone.setting()
            
d.setf("level",6)
            
d.setqf2("devilcatacomb_zone","level"6)
            
d.jump_all (setting.floor6_entry.setting.base.xsetting.floor6_entry.setting.base.)
            
d.regen_file (setting.mob_regen_file_path.."dc_6f_regen.txt")
            
d.spawn_mob (setting.devil_great_kingsetting.devil_great_king_pos[1], setting.devil_great_king_pos[2])
            
timer("warp_timer",3)
        
end
        
        
-- &#50500;걸(2597)이 죽으면, 6층의 타이머1이 동작한다.
        
when devilcatacomb_devil_great_king.kill begin
            server_timer 
("floor6_eli_check_timer_1"5,d.get_map_index())
        
end

        
-- 6&#52789;의 타이머1은 던전의 모든 몬스터 숫자를 보고,
        
-- 0&#51060;면 7층으로 워프하는 타이머를 동작한다.
        
-- &#48148;로 7층으로 가지 않는 이유는, 유저에게 준비할 시간을 주기 위해서이다.
        
-- 1&#51060;면 타이머2를 동작시킨다.
        
-- &#53440;이머1을 recursive하게 동작시키지 않은 것은,
        
-- &#44536;럴 경우 reset한 타이머1이 동작하지 않았기 때문이다.
        
when floor6_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer ("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor6_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    say_in_map 
(get_server_timer_arg(), gameforge.devilcatacomb_zone._320_say)
                    
server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                else
                    
server_timer ("floor6_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end
        
        when devilcatacomb_floor7_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                local setting 
devilcatacomb_zone.setting()

                
d.setf("level",7)
                
d.setqf2("devilcatacomb_zone","level"7)
                
d.jump_all (setting.floor7_entry.setting.base.xsetting.floor7_entry.setting.base.)
                
d.regen_file (setting.mob_regen_file_path.."dc_7f_regen.txt")
                
d.spawn_mob (setting.devil_emperorsetting.devil_emperor_pos[1], setting.devil_emperor_pos[2])
                
server_timer ("devilcatacomb_floor7_say_timer"2get_server_timer_arg())
            
end    
        end

        when devilcatacomb_floor7_say_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then

                local t 
3600 -(get_global_time() - d.getf("enter_time"))
                
local t_r math.mod (t60)
                
local t_m = (t_r) / 60
                d
.notice(gameforge.devilcatacomb_zone._330_dNotice)
                
d.notice(string.format(gameforge.devilcatacomb_zone._20_sayt_m))
                
d.set_warp_location (000)
            
end
        end

        
-- 6&#52789;과 마찬가지로 사마휘(2598)이 죽으면
        
-- 7&#52789;의 타이머가 작동한다.
        
when devilcatacomb_devil_emperor.kill begin
            server_timer 
("floor7_eli_check_timer_1"5d.get_map_index())
        
end
        
        
-- 7&#52789;의 타이머는 6층 타이머와 비슷하며,
        
-- &#47788;스터 숫자가 0이면 exit 타이머를 발생시킨다.
        
-- &#48148;로 exit하지 않는 이유는, 유저들에게 준비할 시간을 주기 위해서이다.
        
when floor7_eli_check_timer_1.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_2"5get_server_timer_arg())
                
end
            end
        end

        when floor7_eli_check_timer_2
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                
if d.count_monster() == 0 then
                    d
.set_warp_location (655914992)
                    
d.setqf2("devilcatacomb_zone","done"1)
                    
say_in_map (get_server_timer_arg(), gameforge.devilcatacomb_zone._340_say)
                    
clear_server_timer ("devilcatacomb_0m_left_timer"get_server_timer_arg())
                    
server_timer("devilcatacomb_exit_timer"60get_server_timer_arg())
                else
                    
server_timer ("floor7_eli_check_timer_1"5get_server_timer_arg())
                
end
            end
        end

        when devilcatacomb_exit_timer
.server_timer begin
            
if d.select(get_server_timer_arg()) then
                d
.setqf2("devilcatacomb_zone","level"0)
                
d.setqf2("devilcatacomb_zone","last_exit_time"get_global_time())
                
clear_server_timer("devilcatacomb_5m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_1m_left_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_0m_left_timer"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor6_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_1"get_server_timer_arg())
                
clear_server_timer("floor7_eli_check_timer_2"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_say_timer"get_server_timer_arg())
                
clear_server_timer("devilcatacomb_floor7_timer"3get_server_timer_arg())
                
d.clear_regen()
                
d.exit_all()
            
end
        end
    end  
--state
end   
--quest 
Es liegt nicht an seiner Quest. Er hat die Portale nicht drin und er sucht jetzt die für mob_proto, Serverside, die querys. Clientside ebenfalls.
.Various is offline  
Reply




All times are GMT +1. The time now is 21:22.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.