Yardım Şeytan Kulesi Bağlantı Kopma Sorunu

Konu sahibi bu konuda soru soruyor. Sorusu ile ilgili bilgisi olanların yanıtlamasını bekliyor.

leqions

Üye
Üye
Mesaj
74
Çözümler
4
Beğeni
88
Puan
669
Ticaret Puanı
0
Merhaba. şu konudaki hatanın aynısına sahibim. Lua içerisinde "notice_multiline" olan kısımları "notice" olarak yeniden düzenlediğimde, multiline için verdiği hata sona erdi. Çoklu satır olması gerekirken tek satırda veriyor metni ama o dert değil satır satır yeniden düzenleyeceğim. Fakat bu kez de, kaçıncı kat olduğundan emin değilim ama "doğru olan metin taşlarını kesme" bölümünde bağlantım tamamen kopuyor, sunucuyu yeniden başlatmadığımda ise tekrar giriş yapamıyorum. Oyun çöküyor yani bir nevi. Syserr içinde "fake3 bulunamıyor" tarzı bir hata vermiş, Luayı inceledim, orada sahte olan metin taşları için for döngüsüyle atamalar yapılmış "fake1, fake2, fake3..." tarzı. Ben bir hata göremedim, belki de gözümden kaçtı. Syserr ve Lua dosyalarını aşağıda paylaşıyorum. Ben sorunun ne olduğunu anlayamadım, yardımcı olabilirseniz sevinirim.


SYSERR: Aug 20 04:40:38 :: GetUniqueHpPerc: Unknown Key : fake3
SYSERR: Aug 20 04:40:38 :: PurgeUnique: Unknown Key or Dead: fake3

deviltower_zone.lua:
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(gameforge.deviltower_zone._50_dNotice,d.notice)
        
    end
 
    when devil_stone4_fail1.server_timer begin
        if d.select(get_server_timer_arg()) then
            notice(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(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(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(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(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(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(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(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(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(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(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(gameforge.deviltower_zone._150_dNotice,d.notice)
        d.check_eliminated()
        notice(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(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(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(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(gameforge.deviltower_zone._280_dNotice,d.notice)
        notice(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
 
çözüm: internette gezinirken 2013'ten kalma bir devil_tower questi buldum. "türkçe şeytan kulesi questi" adı altında paylaşılmıştı, elimdekini onunla değiştirdim ve şu an oyunum çökmüyor.
 
Geri
Üst