Sorunsuz Şeytan Kulesi Quest'i
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 logout begin
        if pc.count_item(30300) >= 1 then
            pc.remove_item(30300, pc.count_item(30300))
        end
        -- not used in the game
        -- pc.remove_item(30301, pc.count_item(30301))
        if pc.count_item(30302) >= 1 then
            pc.remove_item(30302, pc.count_item(30302))
        end
    end
        
    when deviltower_man.chat.gameforge.deviltower_zone._10_npcChat begin
        if pc.get_level() < 40 then
            say_title(gameforge.deviltower_zone._20_sayTitle)
            say(gameforge.deviltower_zone._30_say)
        else
            say_title(gameforge.deviltower_zone._20_sayTitle)
            say(gameforge.deviltower_zone._40_say)
            local s =  select(gameforge.locale.monkey_dungeon.enter, gameforge.locale.monkey_dungeon.no_enter)
            if s == 1 then
                pc.warp(216500,727000)
            end
        end
    end
    when kill with npc.get_race() == 8015 begin
        timer("devil_stone1_1", 6)
    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 kill with npc.get_race() == 1091 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 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 kill with npc.get_race() == 8016 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
            test_chat(positions[i][1], positions[i][2])
            d.set_unique("fake" .. i , d.spawn_mob(8017, positions[i][1], positions[i][2]))
        end
 
        test_chat(positions[7][1], positions[7][2])
 
        local vid = d.spawn_mob(8017, positions[7][1], positions[7][2])
        test_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())
        
        notice_multiline(gameforge.deviltower_zone._50_dNotice,d.notice)
        
    end
 
    when devil_stone4_fail1.server_timer begin
        if d.select(get_server_timer_arg()) then
            notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
            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
            notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
            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
            notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
            d.clear_regen()
            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)
                            notice_multiline(gameforge.deviltower_zone._90_dNotice,d.notice)
                        end
                    end
                end
            else
                server_timer("devil_stone4_end", 5, get_server_timer_arg())
                --d.kill_all()
                d.purge()
                notice_multiline(gameforge.deviltower_zone._100_dNotice,d.notice)
                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
            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())
            
            -- clear regen from memory when exit
            d.clear_regen()
            
            d.setf("level", 5)
            d.setf("stone_count", 5)
            notice_multiline(gameforge.deviltower_zone._110_dNotice,d.notice)
            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())
 
            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
            notice_multiline(gameforge.deviltower_zone._120_dNotice,d.notice)
            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
            notice_multiline(gameforge.deviltower_zone._60_dNotice,d.notice)
            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
            notice_multiline(gameforge.deviltower_zone._70_dNotice,d.notice)
            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
            notice_multiline(gameforge.deviltower_zone._80_dNotice,d.notice)
            d.exit_all()
        end
    end
 
 
    when kill with npc.get_race() == 1062 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.setf("level", 6)
            d.clear_regen()
            d.regen_file("data/dungeon/deviltower6_regen.txt")
 
            notice_multiline(gameforge.deviltower_zone._130_dNotice,d.notice)
            d.jump_all(special.devil_tower[5][1], special.devil_tower[5][2])
            local server_arg = d.get_map_index()
            clear_server_timer('devil_stone5_fail1', server_arg)
            clear_server_timer('devil_stone5_fail2', server_arg)
            clear_server_timer('devil_stone5_fail3', server_arg)
            clear_server_timer('devil_stone5_fail', server_arg)
        else
            d.notice(string.format(gameforge.deviltower_zone._140_dNotice, d.getf("stone_count")))
        end
    end
 
    when kill with npc.get_race() == 1092 and pc.in_dungeon() and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 and d.getf("level") == 6 begin
        d.kill_all()
        notice_multiline(gameforge.deviltower_zone._150_dNotice,d.notice)
        d.check_eliminated()
        notice_multiline(gameforge.deviltower_zone._160_dNotice,d.notice)
        local reward_alchemist = {20074, 20075, 20076}
        d.spawn_mob(reward_alchemist[number(1,3)], 425, 216);
        d.setqf2("deviltower_zone","can_refine", 1)
    end
 
 
    when 20074.chat.gameforge.deviltower_zone._170_npcChat 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(gameforge.deviltower_zone._190_say)
        wait()
        if pc.level >=75 then
            say_title(mob_name(20074))
 
            say(gameforge.deviltower_zone._200_say)
            local s= select(gameforge.deviltower_zone._210_select, gameforge.locale.cancel, gameforge.deviltower_zone._220_select)
            if s==3 then
                pc.warp(590500, 110900)
                return
            end
            if s==2 then
                return
            end
 
            timer("devil_jump_7", 6)
            npc.unlock()
            d.purge()
            return
        end
        say_title(mob_name(20074))
        say(gameforge.deviltower_zone._230_say)
        wait()
        pc.warp(590500, 110500)
        return
    end
 
    when 20075.chat.gameforge.deviltower_zone._170_npcChat 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(gameforge.deviltower_zone._190_say)
        wait()
        if pc.level >=75 then
            say_title(mob_name(20075))
 
            say(gameforge.deviltower_zone._200_say)
            local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
            if s==3 then
                pc.warp(590500, 110900)
                return
            end
            if s==2 then
                return
            end
 
            timer("devil_jump_7", 6)
            npc.unlock()
            d.purge()
            return
        end
        say_title(mob_name(20075))
        say(gameforge.deviltower_zone._230_say)
        wait()
        pc.warp(590500, 110500)
        return
    end
    when 20076.chat.gameforge.deviltower_zone._170_npcChat 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(gameforge.deviltower_zone._190_say)
        wait()
        if pc.level >=75 then
            say_title(mob_name(20076))
 
            say(gameforge.deviltower_zone._200_say)
            local s= select(gameforge.deviltower_zone._210_select, gameforge.deviltower_zone._220_select)
            if s==3 then
                pc.warp(590500, 110900)
                return
            end
            if s==2 then
                return
            end
 
            timer("devil_jump_7", 6)
            npc.unlock()
            d.purge()
            return
        end
        say_title(mob_name(20076))
        say(gameforge.deviltower_zone._230_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)
 
 
        notice_multiline(gameforge.deviltower_zone._240_dNotice,d.notice)
        d.jump_all(2048+590, 6656+638)
    end
 
    when kill with npc.get_race() == 8018 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 kill with npc.get_race() == 8019 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
        if d.getf( "level" ) != 7 then
            pc.remove_item( "30302", 1)
            return
        end
            
        say_title(gameforge.blacksmith._40_sayTitle)
        say(gameforge.deviltower_zone._250_say)
        pc.remove_item("30302", 1)
        timer("devil_jump_8", 6)
        d.clear_regen()
    end
 
    when devil_jump_8.timer begin
        d.setf("level", 8)
 
        notice_multiline(gameforge.deviltower_zone._260_dNotice,d.notice)
        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 kill with npc.get_race() == 1040 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
        npc.purge()
        item.remove()
        timer("devil_jump_9", 6)
    end
 
    when devil_jump_9.timer begin
        d.setf("level", 9)
 
 
        notice_multiline(gameforge.deviltower_zone._270_dNotice,d.notice)
        d.jump_all(2048+590, 6656+155)
        d.regen_file("data/dungeon/deviltower9_regen.txt")
    end
 
    when kill with npc.get_race() == 1093 and pc.get_map_index() >= 660000 and pc.get_map_index() < 670000 begin
        d.kill_all()
        d.setqf2("deviltower_zone","9_done", 1)
        notice_multiline(gameforge.deviltower_zone._280_dNotice,d.notice)
        notice_multiline(gameforge.deviltower_zone._290_dNotice,d.notice)
        server_timer("devil_end_jump", 60, d.get_map_index())
    end
 
        when devil_end_jump.server_timer begin
            if d.select (get_server_timer_arg()) then
                d.clear_regen()
                d.exit_all()
            end
        end
    end
end

 

Kurulum: Yukarıdaki Kodu deviltower_zone.quest isimli Dosya Açıp İçine Atınız. notepad++ ile açın Sorun Olmasın Daha Sonra o Dosyayı Filezillada /usr/game/share/locale/turkey/quest dizisine atın ve İzinleri 777 Yapın ardından puttye login olup
 

cd /usr/game/share/locale/turkey/quest

ENTER

./qc deviltower_zone.quest

ENTER

Quest Kurulacaktır Ardından Oyuna Girip Gm Çarınıza /reload q Yazmanız Yeterli.

YAZAR HAKKINDA;
admin
Admin

Admin

KONU YORUMLARI
YORUM YAP

Metin2 PvP Server Files

Sorunsuz Şeytan Kulesi Quest'i

Şeytan kulesinden atma sorunu yaşayan pvp server sahipleri için hatasız ve açıksız kule sistemi questidir.

EN ÇOK OKUNAN 5 MAKALELER
admin
Admin Yazdı;

7 gün önce

Metin2 Pvp Nedir?, Pvp Ne Anlama Gelir?, Metin2 Pvp Nasıl Kurulur? Hep..

admin
Admin Yazdı;

22 gün önce

Metin2 Pvp Tanıtımı nasıl yapılmalıdır, Pvp Server Reklam tiyoları. M..

admin
Admin Yazdı;

19 gün önce

İyi Bir Metin2 Pvp Server Tanıtımı Naıl Olmalı, Nelere Dikkat Edilmeli..

admin
Admin Yazdı;

4 gün önce

Metin2 Pvp Server sahipleri için hazırlamış olduğumuz Gm Kodları ve Gm..

admin
Admin Yazdı;

19 gün önce

Metin2'de hangi karakter 92 ve 94 biyolog görevlerinden hangi özellikl..