Jump to content

Devil's catacomb crash


Recommended Posts

  • Premium

Hello,

I'm trying solve problem with Devil's catacomb for few hours, but i can't find solution... When someone kill Azrael in last floor in Devil's catacomb, core will crash. In syserr isn't anything about Devil's catacomb (map or quest).

 

Please can someone help me?

 

Sorry for my english, and thanks.

 

Quest:

quest devilscatacomb begin
    state start begin
    
        function getLevelByCord()
        
            if pc.get_local_x() > 30 and pc.get_local_y() > 45 and pc.get_local_x() < 450 and pc.get_local_y() < 450 then
                return 1
                
            elseif pc.get_local_x() > 540 and pc.get_local_y() > 39 and pc.get_local_x() < 1000 and pc.get_local_y() < 462 then
                return 2
                
            elseif pc.get_local_x() > 1048 and pc.get_local_y() > 35 and pc.get_local_x() < 1455 and pc.get_local_y() < 458 then
                return 3
                
            elseif pc.get_local_x() > 31 and pc.get_local_y() > 541 and pc.get_local_x() < 564 and pc.get_local_y() < 1058 then
                return 4
                
            elseif pc.get_local_x() > 650 and pc.get_local_y() > 540 and pc.get_local_x() < 1050 and pc.get_local_y() < 955 then
                return 5
                
            elseif pc.get_local_x() > 1175 and pc.get_local_y() > 576 and pc.get_local_x() < 1420 and pc.get_local_y() < 810 then
                return 6
                
            else
                return 0
            end
            
        end
        
        function isInCatacomb()
        
            if pc.get_map_index() >= (213 * 10000) and pc.get_map_index() < (214 * 10000) and pc.in_dungeon() then
                return true
            else
                return false
            end
            
        end
        
        function get3FloorStonePositions()
        
            local positions = 
            {
                {1365, 352}, {1349, 150}, {1133, 167}, {1151, 364},
                {1234, 136}, {1255, 371}, {1132, 245},
            }
            
            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
        
        function getTimeLeft()
        
            local secondsLeft = (d.getf("time") - get_time())
            local minutesLeft = math.ceil(secondsLeft / 60)
            
            d.notice("Zbývá "..minutesLeft.." minut.")
        
        end
	
        when logout begin
            pc.remove_item(30311, pc.count_item(30311))
            pc.remove_item(30312, pc.count_item(30312))
            pc.remove_item(30313, pc.count_item(30313))
        end
        
        
        when login begin
            if pc.get_map_index() == 213 then
                if devilscatacomb.getLevelByCord() > 1 or not next_time_is_now() then
                
                    pc.warp((5913)*100, (993)*100, 65) -- 5913x993  591374x
                    
                end
                
                pc.set_warp_location(65, 5913, 993)
                
                say("V první úrovni musí vaše skupina získat Klíč krystalu duše.")
                say("Až klíč Krystalu duše získáte, musíte najít sochu Kud, a použít")
		say("klíč na sochu Kud.")
				say("Poté bude vaše skupina přesunuta do další úrovně. ")
				say("")
				say_item_vnum(30311)
				say("") 
                
            elseif pc.get_map_index() >= (213 * 10000) and pc.get_map_index() <= (214 * 10000) then            
                pc.set_warp_location(65, 5913, 993)
            end
        end
        
        
        when 20367.chat." Ďáblova katakomba" begin  --Enter the Devil Catacomb
            if pc.get_level() < 75 then
                say_title(mob_name(npc.get_race()) ..":")
				say("Chceš vstoupit do Ďáblovi katakomby?")
                say("")
                say("Jestli chceš vstoupit, tak musíš ")
                say("mít aspoň úroveň 75.")
				say("Vrať se, až budeš mít úroveň 75.")
                    else
                        say_title(mob_name(npc.get_race()) ..":")
                        say("Chceš vstoupit do Ďáblovi katakomby?")
                        say("")
						say("Mohu tě teleportovat, ale ")
						say("chci tě varovat: Už vstoupili mnoho bojovníků, ")
						say("a ne všichni se vrátili!")
						say("")
						say("Chceš teleportovat?")
						say("")
                        local s = select("Ano","Ne")
                        if s == 2 then
                            return
                        elseif s == 1 then
                            pc.warp(415300, 4209200)
                        end
                    end    
                end    
        
        
        when kill with pc.get_map_index() == 213 and pc.countitem(30311) < 1 begin
            local rnd = number(1, 100)
            if rnd == 6 then
                game.drop_item_with_ownership(30311, 1)
            end
        end
        
        
        when 30101.take with item.vnum == 30311 begin --Teleport to 2nd Stage with the passenger ticket
        
            if party.is_party() then
            
                if party.is_leader() then
                    say("Portál byl otevřen.")
                    say("Můžete rychle projít!")
                    wait()
                    say("Toto je místo, kde začíná dobrodružství! Máte jen")
                    say("jednu hodinu na prozkoumání Ďáblovo katakomby.")
                    item.remove()
                    sys_log(0, "DC create try by "..pc.get_name())
                    d.join(213)
                else
                    say("Musíš být vůdce skupiny.")
                end
                
            else
                say("Bez skupiny nesmíš vstoupit.")
            end
            
        end
        
        
        when login with devilscatacomb.isInCatacomb() begin
            say("Ujisťete se, že všichni členové vaší skupiny")
            say("mají Vysušenou hlavu: ")
	say_item_vnum(30319)
		say("Vysušené hlavy si schovává Modrá smrt z Věže démonů. ")
		say("Pokud máte Vysušené hlavy, musíte najít cestu do středu")
            say("úrovně, rozbíjet brány co vám stojí v cestě, a najít Želví skálu.")
		say("Na prozkoumání celé katakomby máte 60 minut.")
			d.spawn_mob(30103, 740, 227)
            loop_timer("item_check", 10)
            if party.is_leader() then
                d.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                d.regen_file("data/dungeon/dc/dc_doors.txt")
                d.setf("level", 2) 
                server_timer("runtime", 6, pc.get_map_index())
            elseif pc.is_gm() and not party.is_party() then
                d.set_regen_file("data/dungeon/dc/dc_regen1.txt")
                d.regen_file("data/dungeon/dc/dc_doors.txt")
                d.setf("level", 2)
                server_timer("runtime", 6, pc.get_map_index())
            end
        end
        
        
        when item_check.timer with d.getf("level") == 3 begin
            if pc.countitem(30319) >= 1 then
                say("Máte vysušenou hlavu, budete teleportováni ")
                say("do 3. úrovně katakomby.")
                pc.remove_item(30319, 1)
                timer("item_check_end", 2)
            else
                d.exit_all()
            end
        end
        
        
        when item_check_end.timer begin
            cleartimer("item_check")
        end
        
        
        when runtime.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.setf("time", get_time()+60*60*1)
                devilscatacomb.getTimeLeft()
                server_timer("runtime_end", 60*60, get_server_timer_arg())
            end
        end
        
        
        when runtime_end.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice(" Čas vypršel.")
                d.exit_all()
            end
        end

        
        when 30103.click with devilscatacomb.isInCatacomb() and devilscatacomb.getLevelByCord() == 2 and npc.lock() begin
            say("Vypadá to, že na kameni je několik")
            say("míst do kterých by šla vložit vysušená hlava.")
            wait()
            say("Na kameni je vytesáno:")
            say_reward("Tento starý kámen je magický. ")
            say_reward("Při vložení vysušené hlavy od každého ")
            say_reward(" člena skupiny, tento starý kámen přenese ")
            say_reward("celou skupinu hlouběji do katakomby.")
            say_reward("Avšak každý člen musí svou vysušenou hlavu vložit ")
	    say_reward("do kamene sám.")
			say("")
            wait()
            local s = select("Všichni členové, vložte hlavy!", "Zatím ne.")
            if s == 2 then
                return
            elseif s == 1 then
                if pc.count_item(30319) >= 1 then
                    npc.purge()
                    d.setf("level", 3)
                    d.purge()
                    d.clear_regen()
                    timer("dc_jump_3", 6)
                else
                    say("Všichni členové skupiny nemají vysušenou hlavu, ")
                    say("budete teleportováni ...")
                    pc.warp(591374, 99325, 65)
                end
            end
        end
        
        
        when dc_jump_3.timer begin
            d.set_regen_file("data/dungeon/dc/dc_regen2.txt")
            d.notice("Na této úrovni musíte najít správný Balvan Naděje!")
            devilscatacomb.getTimeLeft()
            d.jump_all(5451, 42282)
            local positions = devilscatacomb.get3FloorStonePositions()
            for i = 1, 6 do
                d.set_unique("fake" .. i , d.spawn_mob(8037, positions[i][1], positions[i][2]))
            end
            d.set_unique("real", d.spawn_mob(8037, positions[7][1], positions[7][2]))
            server_loop_timer('dc_stone3_update', 10, pc.get_map_index())

        end
        
        
        when dc_stone3_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) < 30 then
                                if not d.is_unique_dead("fake" .. i) then
                                    d.purge_unique("fake" .. i)
                                end
                                d.setf("fakedead" .. i, 1)
                                d.notice("Tento balvan je falešný, hledejte dál!");
                            end
                        end
                    end
                else
                    server_timer("dc_stone_end3", 5, get_server_timer_arg())
                    d.notice("Skupina našla správný balvan, budete teleportování dále.")
                end
            else
                server_timer('dc_stone3_stop_timer', 1, get_server_timer_arg())
            end
        end

        
        when dc_stone3_stop_timer.server_timer begin
            clear_server_timer('dc_stone3_update', get_server_timer_arg())
        end
        
        
        when dc_stone_end3.server_timer begin
            if d.select(get_server_timer_arg()) then
                clear_server_timer('dc_stone3_update', get_server_timer_arg())
                d.setf("level", 4)
                d.jump_all(4347, 42810)        
                d.clear_regen()
                d.set_regen_file("data/dungeon/dc/dc_regen3.txt")
                d.regen_file("data/dungeon/dc/dc_warps.txt")
                d.spawn_mob(30104, 500, 716)
            end
        end
        
        
        when 30104.click with devilscatacomb.isInCatacomb() and devilscatacomb.getLevelByCord() == 4  and npc.lock() begin
            npc.purge()
            say_in_map(pc.get_map_index(),"Dokázali jste to! [ENTER] Toto vypadá jako výstup z bludiště! [ENTER] Budete přesunuti do 5. patra.")
            server_timer("dc4_enter", 6, pc.get_map_index())
        end
        
        
        when dc4_enter.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.jump_all(4918, 42939)
                
                d.set_regen_file("data/dungeon/dc/dc_regen4.txt")
                d.spawn_mob(30102, 848, 739)
                
                local mob_pos = { {1006, 649}, {979, 829}, {691, 822}, {714, 653}, {848, 593} }
                local rnd = number(1, 5)
                d.spawn_mob(2591, mob_pos[rnd][1], mob_pos[rnd][2])
                
                server_timer("dc4_message", 3, get_server_timer_arg())
            end
        end
        
        
        when dc4_message.server_timer begin
            if d.select(get_server_timer_arg()) then
                d.notice("Na této úrovni musíte najít Šklebící se totem. Schovává ho u sebe Král Azachiel.")
                devilscatacomb.getTimeLeft()
            end
        end
        
        
        when 30102.take with item.vnum == 30312 begin
			say("Našli jste Šklebící se totem.")
            say("Budete přesunuti na další úroveň!")
			say("")
			wait()
			say("Dobrá práce!")
            item.remove()
			npc.purge()
            d.clear_regen()
            timer("dc_level_5", 6)
        end
        
        
        when dc_level_5.timer begin
            d.jump_all(5312, 42799)
            timer("dc_level_5_start", 5)
        end
        
        
        when dc_level_5_start.timer begin
            d.setf("level", 5)
            d.notice("Poražte Charona!")
            devilscatacomb.getTimeLeft()
            d.regen_file("data/dungeon/dc/dc_regen5.txt")
            d.spawn_mob(2597, 1301, 699)
        end
        
        
        when kill begin
            if devilscatacomb.isInCatacomb() then
                if npc.race == 2597 then
                    if d.count_monster() < 1000 then
                        d.setf("level", 6)
                        d.clear_regen()
                        timer("dc_level_5_end", 12)
                    else
                        if d.getf("charon_spawns") < 4 then
                            d.spawn_mob(2597, 1301, 699)
                            d.setf("charon_spawns", d.getf("charon_spawns") + 1)
                        else
                            d.notice("Bohužel se vám nepodařilo zabít Charona.")
                            d.notice("Budete teleportováni.")
                            local nextTime=get_time()+time_min_to_sec(1)
                            d.setqf("__NEXT_TIME__", nextTime)
                            d.exit_all()
                        end
                    end
                end
                
                
                if npc.race == 2591 then
                    game.drop_item_with_ownership(30312, 1)
                end
            end
        end
        
        when 2598.kill with pc.in_dungeon() begin
            clear_server_timer("runtime", get_server_timer_arg())
            clear_server_timer("runtime_end", get_server_timer_arg())
                    notice_all("Skupina hráče "..pc.get_name().." zabila Azraela!")
		            local text = "Azrael byl poražen. Za 60 sekund budete teleportováni."
            --d.spawn_mob(9012, 74, 1159) 
            say_in_map(pc.get_map_index(), text)
                    timer("glory_message", 60)
        end        

        when dc_level_5_end.timer begin
	    d.setf("level", 6)
            say_in_map(pc.get_map_index(),"Podařilo se vám zabít Charona.[ENTER]Budete teleportování na poslední úroveň katakomby.")
            timer("dc_level_6", 3)
        end
        
        
        when dc_level_6.timer begin
            d.jump_all(4145, 43187)
            timer("dc_level_6_into", 3)
        end
        
        when dc_level_6_into.timer begin
            d.regen_file("data/dungeon/dc/dc_regen6.txt")
            d.spawn_mob(2598, 74, 1103)
            d.notice("Poražte Azraela!")
        end
        
        when glory_message.timer begin
            --local text = "Azrael byl poražen. Můžete se teleportovat."
            --d.spawn_mob(9012, 74, 1159) 
            --say_in_map(pc.get_map_index(), text)
            local nextTime=get_time()+time_min_to_sec(1)
            d.setqf("__NEXT_TIME__", nextTime)
            d.exit_all()
            --timer("dc_end", 60) 
        end
        
        
        when dc_end.timer begin
            local nextTime=get_time()+time_min_to_sec(1)
            d.setqf("__NEXT_TIME__", nextTime)
            d.exit_all()
            return
        end
    end
end
Link to comment
Share on other sites

  • Replies 15
  • Created
  • Last Reply

Top Posters In This Topic

  • Premium

are you sure about syserr?

did you look into the core were you have the dc map?

+ what kind of crush is this ? client/server ? (most lilely form what you said + the info it looks like a server crush but still more info means more help)

I'm sure with syserr, there is nothing about DC.

I've DC on CH99, on CH99 is only DC, nothing else.

Only core (CH99) crash when everyone warp from DC. But i found one interesing thing - when i kill Azrael in another floor, quest works without problems - someone kill Azrael, everyone warp from DC, and everything works fine - nothing crash.

 

Thanks, and sorry for my english.

Link to comment
Share on other sites

  • 2 weeks later...
  • Premium

Hello,

finally i found something about in syserr about DC, but still i can't solve this problem...

 

SYSERR: Aug 22 20:23:11 :: SetDungeon: [GA]Demoro is trying to reassigning dungeon (current 0x28d27880, new party 0x28d27880)

SYSERR: Aug 22 20:24:38 :: GetUniqueHpPerc: Unknown Key : fake6
SYSERR: Aug 22 20:24:38 :: IsUniqueDead: Unknown Key or Dead : fake6
SYSERR: Aug 22 20:25:08 :: IsUniqueDead: Unknown Key or Dead : real

 

Maybe it help with solving this problem..

Link to comment
Share on other sites

  • 1 month later...

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.