Jump to content

Nemer dungeon crashcore


Recommended Posts

Hi, can anyone help me solve this ? if i want jump to level 5 my core crash.. 

on this -> 

 

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x081a2ff2 in quest::CQuestManager::SendScript (this=<optimized out>) at questmanager.h:165
165     questmanager.h: No such file or directory.
[Current thread is 1 (LWP 100217)]
(gdb) Quit
(gdb) bt bull
No symbol "bull" in current context.
(gdb) bt full
#0  0x081a2ff2 in quest::CQuestManager::SendScript (this=<optimized out>) at questmanager.h:165
        packet_script = {header = 45 '-', size = 12, skin = 0 '\000', src_size = 6}
        buf = {buf = 0x28fdcfa0, forceDelete = false}
#1  0x081763e9 in quest::CQuestManager::GotoEndState (this=<optimized out>, qs=...) at questlua.cpp:971
No locals.
#2  0x0817758e in quest::CQuestManager::RunState (this=0xffffab54, qs=...) at questlua.cpp:1049
        ret = <optimized out>
        __FUNCTION__ = "RunState"
#3  0x081a27c7 in quest::CQuestManager::ExecuteQuestScript (pc=..., quest_name=..., state=<optimized out>, code=<optimized out>, code_size=<optimized out>,
    pChatScripts=<optimized out>, bUseCache=<optimized out>) at ../../common/singleton.h:24
        qs = {co = 0x29b4a8e0, ico = 3, args = 0, suspend_state = 0 '\000', iIndex = 0, bStart = false, st = 0, _title = {static npos = 4294967295,
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xffff9bc0 ""},
            _M_string_length = 0, {_M_local_buf = '\000' <repeats 15 times>, _M_allocated_capacity = 0}}, _clock_name = {static npos = 4294967295,
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xffff9bd8 ""},
            _M_string_length = 0, {_M_local_buf = '\000' <repeats 13 times>, "\300\341(", _M_allocated_capacity = 0}}, _counter_name = {static npos = 4294967295,
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xffff9bf0 ""},
            _M_string_length = 0, {_M_local_buf = "\000\b\342(\000\300\341(\000\000\000\000\001\065\032\b", _M_allocated_capacity = 685901824}}, _clock_value = 0,
          _counter_value = 0, _icon_file = {static npos = 4294967295,
            _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0xffff9c10 ""},
            _M_string_length = 0, {_M_local_buf = "\000\000\000\000\000\300\341(\224\347;@\001\000\000", _M_allocated_capacity = 0}},
          chat_scripts = {<std::_Vector_base<quest::AArgScript*, std::allocator<quest::AArgScript*> >> = {
              _M_impl = {<std::allocator<quest::AArgScript*>> = {<__gnu_cxx::new_allocator<quest::AArgScript*>> = {<No data fields>}, <No data fields>},



here is my quest -> 

 

quest snow_dungeon begin
	state start begin
		when 9010.chat."Spawn Estátua" with snow_dungeon.is_nemeres_dungeon() == true begin
			d.purge()
			d.spawn_mob_dir(20397, 173,262,1)
			setskin(NOWINDOW)
		end
		when 9010.chat."TESTSERVER: SnowD Jump level 9" with snow_dungeon.is_nemeres_dungeon() == true  begin
			local set = snow_dungeon.get_settings()
			d.notice("Der Richtige Schlüssel wurde gefunden, in wenigen Sekunden geht es in den nächsten Stock.")
			server_timer("Jp_9",6,d.get_map_index())
			d.clear_regen()
			d.kill_all()
			d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
			setskin(NOWINDOW)
		end
		when 9010.chat."TESTSERVER: SnowD Jump level 10" with snow_dungeon.is_nemeres_dungeon() == true  begin
			local set = snow_dungeon.get_settings()
			server_timer("Jp_Boss",3,d.get_map_index())
			d.clear_regen()
			d.kill_all()
			d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
			local v = set.BossVnumGroup
			d.spawn_group(v, 928, 335, 5 ,1, 1) --  (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
			setskin(NOWINDOW)
		end
		when 9010.chat."TESTSERVER: SnowD Spawn Boss" with snow_dungeon.is_nemeres_dungeon() == true  begin
			local set = snow_dungeon.get_settings()
			local v = set.BossVnumGroup
			d.spawn_group(v, 928, 335, 5 ,1, 1) --  (INFO from SRC: argument: vnum,x,y,radius,aggressive,count)
		end
		when 9010.chat."TESTSERVER: SnowD Ending" with snow_dungeon.is_nemeres_dungeon() == true  begin
			server_timer("Jp_OutAll",5,d.get_map_index())
			say("done")
    end
		-- when 30331.use begin --key_level_2
			-- LIB_writelog("{"..pc.get_local_x()..","..pc.get_local_y().."}",3,"snowcordis.txt")
			-- d.spawn_mob(20399, pc.get_local_x(), pc.get_local_y())
			-- chat("write north star coordinates")
		-- end
		when 9010.chat."TESTSERVER: SnowD Spawn create Cords Test level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
			snow_dungeon._Create_Stones_level5()
			setskin(NOWINDOW)
		end
		when 9010.chat."TESTSERVER: SnowD Create Key level 5" with snow_dungeon.is_nemeres_dungeon() == true  begin
			snow_dungeon._DropKeyOnLevel5()
			setskin(NOWINDOW)
		end
		when 9010.chat."TESTSERVER: SnowD Get cord from Level" with snow_dungeon.is_nemeres_dungeon() == true begin
			local set = snow_dungeon.get_settings()
			local warp_to_level = set.Position_level_1
			local level = 2
			say("old: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
			local warp_to_level = set. _G[ "Position_level_"..level ]
			say("new: x: "..warp_to_level[1].." y:"..warp_to_level[2].."")
			--DONT WORKS!
		end
	function get_settings()
		local snow_dungeon_settings = {}
        snow_dungeon_settings.map_index = 352                       --Mapindex
        snow_dungeon_settings.base_cord = {5120, 1536 }             --Base Kordinaten
        snow_dungeon_settings.outside_entry_pos = {61,4321,1667}    --Mapindex, Exit Position (Eisland)
        snow_dungeon_settings.need_level = 100                      --Ab wann ist der Dungeon betretbar.
        snow_dungeon_settings.need_level_group = 100                --Benötigte Level für Gruppenmitglieder
        snow_dungeon_settings.WaitBeforOutAllOnExit = 60            --Wartezeit bevor alle alle herausteleportiert werden bei einem erfolgreichen Run. (Empfohlen 60)
        snow_dungeon_settings.NextJumpTime = 5                      --Wann man zur nächsten ebene Gejumpt wird (timer) (Empfohlen 5)
        snow_dungeon_settings.DurationLoopTimer = 45                --Welchen intervall die Level und Missionen geprüft werden sollen. (Empfohlen 45)
        snow_dungeon_settings.wait_duration = 60*60*4               --Ab wann der Dungeon wieder betretbar ist (PartyLeader)
        snow_dungeon_settings.maxlife_time_on_dungeon = 60*60*1 --Maximale Zeit für den Dungeon.
        snow_dungeon_settings.DurationMaxOnReJoinGroup = 60*5       --Maximale Zeit innerhalb wann man wieder in die Gruppe joinen kann.
        snow_dungeon_settings.key_level_2 = 30331                   --KeyVnum für die 2.Ebene   --Frostschlüssel
        snow_dungeon_settings.NpcVnum_level_5 = 20398               --MobVnum von 5.Ebene   --Würfel des Arktos
        snow_dungeon_settings.StoneCount_level_5 = 6                --Wie viele Würfel des Arktos sollen erscheinen?
        snow_dungeon_settings.Key_on_level_5 = 30332                --KeyVnum von 5.Ebene   --Nordstern
        snow_dungeon_settings.StoneCords_level_5 = {
        {432,508},{437,493},{448,492},{448,476},{467,475},{466,464},
        {462,450},{458,428},{446,439},{431,431},{415,416},{402,427},
        {397,438},{375,434},{374,456},{390,468},{385,492},{402,505},
        {404,489},{386,482}
        }   --Positionen von Würfel des Arktos
        snow_dungeon_settings.MobVnum_level_6 = 8058                --MobVnum von 6.Ebene   --Metin der Kälte
        snow_dungeon_settings.MobVnum_level_7 = 6151                --MobVnum von 7.Ebene   --Szel
        snow_dungeon_settings.SzelCords_level_7 = {
        {752,499},{758,479},{772,452},{763,444},{750,451},{728,441},
        {726,455},{718,482},{715,491},{731,473},{748,429}
        } --Positionen von Szel
        snow_dungeon_settings.Key_on_level_8 = 30333                --KeyVnum von 8.Ebene   --Eisblumenschlüssel
        snow_dungeon_settings.NpcVnum_level_9 = 20399               --MobVnum von 9.Ebene   --Säule des Norddrachen
        snow_dungeon_settings.BossVnumGroup = 6062                  --GroupMobVnum vom Boss --(Group.txt)
        snow_dungeon_settings.BossVnum = 6191                       --MobVnum von 10.Ebene  --Nemere(6191)
         
        snow_dungeon_settings.Position_level_1 = { 171,271 }        --Position ebene 1  --Startposition     --Töte alle Monster auf dieser Ebene.
        snow_dungeon_settings.Position_level_2 = { 761,270 }        --Position ebene 2                      --Finde den richtigen Frostschlüssel, nur ein Schamane kann ihn benutzen.
        snow_dungeon_settings.Position_level_3 = { 187,491 }        --Position ebene 3                      --Töte alle Monster auf dieser Ebene.
        snow_dungeon_settings.Position_level_4 = { 421,259 }        --Position ebene 4                      --Töte alle Monster auf dieser Ebene.
        snow_dungeon_settings.Position_level_5 = { 419,530 }        --Position ebene 5                      --Öffnet die Siegel an den Würfel des Arktos in der richtigen Reihenfolge. (Zieht Nordstern auf die Würfel)
        snow_dungeon_settings.Position_level_6 = { 571,706 }        --Position ebene 6                      --Töte alle Monster auf dieser Ebene. Danach Zersöre den Metin der Kälte (Nur ein Schamane kann ihn Schaden)
        snow_dungeon_settings.Position_level_7 = { 746,534 }        --Position ebene 7                      --Töte alle Monster auf dieser Ebene und Szel
        snow_dungeon_settings.Position_level_8 = { 303,710 }        --Position ebene 8                      --Der Eisblumenschlüssel muss gedroppt werden, jedoch kann dieser nur von Schamanen und Ninja benutzt werden.
        snow_dungeon_settings.Position_level_9 = { 848,693  }       --Position ebene 9                      --Zerstört die Säule des Norddrachen. Nur Ninjas und Schamanen können ihm Schaden zufügen.
        snow_dungeon_settings.Position_level_10 = { 927,391 }       --Position ebene 10 (BossZone)          --Besiege Nemere, den König über Frost und Eis.
        snow_dungeon_settings.Enable_TestServerMode = false         --Ob TestServer mode aktiviert ist. Wenn ja werden die Aufgaben schneller beendet.
        snow_dungeon_settings.IsNewGameRevision = true              --Need GameRevision 40301
        return snow_dungeon_settings
    end
    function is_TestServerMode()
        local set = snow_dungeon.get_settings()
        return set.Enable_TestServerMode
    end
    function is_nemeres_dungeon()
        local set = snow_dungeon.get_settings()
        local map = pc.get_map_index()
        if map >= (set.map_index * 10000) and map < (set.map_index * 10000 + 9000) then
            return true
        else
            return false
        end
    end
		-- when 20395.chat."Juntar ao grupo" with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
		when 20395.chat."Nemerova strážní věž " with (party.is_party() and d.find(party.getf("ice_dungeon_map_index"))) begin
			local set = snow_dungeon.get_settings()
			local n = party.getf("ice_dungeon_map_index")
			local cord = set.base_cord
			local level = d.getf_from_map_index("level", n)
			--say("News Dungeon Level your group: "..level.."")
			if level == 0 then
				say_npc_name()
				say("O teu grupo já matou o nemere.") 
				return
			end
			if pc.getqf("out_party_time") < get_global_time() then
				say_npc()
				say("")
				say("Já saiste a "..math.ceil(set.DurationMaxOnReJoinGroup  /60) .." Minuto(s)")
				say("Já nao é possivel juntares-te ao teu grupo.")
				say(" ")
				return
			end
			if n == 0 then
				setskin(NOWINDOW)
				return
			else
				say_npc()
				say("")
				say("Chcete přesunout??")
				if select("Ano","Ne") == 1 then
					local warp_to_level = set.Position_level_1
					local level = d.getf_from_map_index("level", n)
					if level >= 1 and level <= 10 then
						if level == 1 then      warp_to_level = set.Position_level_1
						elseif level == 2 then  warp_to_level = set.Position_level_2
						elseif level == 3 then  warp_to_level = set.Position_level_3
						elseif level == 4 then  warp_to_level = set.Position_level_4
						elseif level == 5 then  warp_to_level = set.Position_level_5
						elseif level == 6 then  warp_to_level = set.Position_level_6
						elseif level == 7 then  warp_to_level = set.Position_level_7
						elseif level == 8 then  warp_to_level = set.Position_level_8
						elseif level == 9 then  warp_to_level = set.Position_level_9
						elseif level == 10 then warp_to_level = set.Position_level_10
						end
						pc.warp((cord[1] + warp_to_level[1])*100,(cord[2] + warp_to_level[2])*100,n)
					else
						return
					end
				end
			end
		end
     
		when 20395.chat."Nemerova strážní věž " begin
			local set = snow_dungeon.get_settings()
			local need_level = set.need_level
			say_npc()
			say("")
			say("Chceš přesunout?")
			if select("Ano ","Ne") == 2 then
				return
			end
			if (pc.is_gm() and pc.getf("snow_dungeon","duration") >= get_global_time()) then
				say("Jsi GM, máš možnost restartovat čekací dobu.")
				if select("Restartovat","Čekat") == 1 then
					pc.setf("snow_dungeon","duration",0)
					return
				end
			end
			if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
				say("O servidor está em modo teste.")
				say("Juntar agora.")
				timer("make_dungeon",3)
				return
			end
			if not party.is_leader() then
				say_npc()
				say("Nejdříve musí do Veže vstoupit zakladatel skupiny.")
				say("Pote se teleportují všichni členové.")
				return
			end
			if pc.get_level() < need_level then
				say("Pro vstup potřebuješ alespoň level: "..need_level.."")
				return
			end
			if pc.getf("snow_dungeon","duration") >= get_global_time() then
				say_npc()
				say("Čekací doba na znovu otevřeních Nemerovi strážní věže.")
				say("Zbývajíci čas: "..LIB_duration(pc.getf("snow_dungeon","duration") - get_global_time()).."")
				return
			end
			if snow_dungeon._CheckMembersLevel() == false then  
				return
			else
				timer("make_dungeon",2)
			end
		end
		when 20397.chat."Spustit " begin --Eisiger Löwe
			say_npc()
			say("")
			say("Opravdu chceš začít?")
			if select("Ano","Ne") == 1 then
				local set = snow_dungeon.get_settings()
				local loop_durr = set.DurationLoopTimer
				local wait_durations = set.wait_duration
				local t = get_global_time()
				d.setf("LastTimeGetOutPut",0)   
				server_loop_timer("CheckLevelAndCountKillOnMobs",loop_durr,d.get_map_index())
				d.regen_file("data/dungeon/ice_dungeon/zone_1.txt")
				d.setf("Start_Time",t + set.maxlife_time_on_dungeon)
				server_timer("Jp_OutAllFailNotice",(t + set.maxlife_time_on_dungeon) -  t,d.get_map_index())
				--pc.setqf("duration",t + wait_durations)
				d.setqf2("snow_dungeon","duration",t + wait_durations)
				d.setf("level",1)
				d.notice("Objeví se první příšery, zabijte je a budete přesunuti do dalšího patra.")
				npc.purge()
				snow_dungeon._GetLastTime()
			end
			setskin(NOWINDOW)
		end
		when make_dungeon.timer begin
			local set = snow_dungeon.get_settings()
			local cord = set.base_cord
			local start_pos = set.Position_level_1
			local t = get_global_time()
			d.new_jump_party(352,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
			--d.new_jump_all(set.map_index,(cord[1] + start_pos[1]), (cord[2] + start_pos[2]))
			snow_dungeon._ClearAlls()
			d.setf("party_leader_pid",party.get_leader_pid())
			party.setf("ice_dungeon_map_index",d.get_map_index())
			d.spawn_mob_dir(20397, 173,262,1) --Eisiger Löwe
		end
		function _ClearAlls()
			local d_index = d.get_map_index()
			clear_server_timer("CheckLevelAndCountKillOnMobs",d_index)
			clear_server_timer("Jp_1",d_index)
			clear_server_timer("Jp_2",d_index)
			clear_server_timer("Jp_3",d_index)
			clear_server_timer("Jp_4",d_index)
			clear_server_timer("Jp_5",d_index)
			clear_server_timer("Jp_6",d_index)
			clear_server_timer("Jp_7",d_index)
			clear_server_timer("Jp_8",d_index)
			clear_server_timer("Jp_9",d_index)
			clear_server_timer("Jp_10",d_index)
			clear_server_timer("Jp_OutAll",d_index)
			clear_server_timer("Jp_OutAllFail",d_index)
			clear_server_timer("Jp_OutAllFailNotice",d_index)
			d.setf("level",0)   
			d.setf("party_leader_pid",0)
			d.setf("Start_Time",0)
			d.setf("LastTimeGetOutPut",0)
			d.setf("Stone_5_count",0)
			d.setf("Stone_5_item_fail",0)
			d.clear_regen()
			d.kill_all()
		end
     
    function _CheckMembersLevel()
        local set = snow_dungeon.get_settings()
        local user_fail_level = {}
        local pids = {party.get_member_pids()}
        local need_level = set.need_level_group
        local have_ninja = false
        local have_shaman = false
        for i = 1, table.getn(pids), 1 do
            q.begin_other_pc_block(pids)
            if pc.get_level() < need_level then
                table.insert(user_fail_level, table.getn(user_fail_level) +1, pc.get_name())
            end
            local job = pc.get_job()
            have_ninja = true
            have_shaman = true
            q.end_other_pc_block()
        end
			if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
				--dchat("TestServer Mode is enable.")
				return true
			end
			if have_ninja == false then
				say("Nao podes entrar sem um ninja.")
				say("")
				return false
			end
			if have_shaman == false then
				say("Nao podes entrar sem um shaman.")
				say("")
				return false
			end
			if table.getn(user_fail_level) >= 1 then
				say_npc()
				say("")
				say("Alguns membros do grupo")
				say("ainda nao sao nivel "..need_level..":")
				for x = 1, table.getn(user_fail_level), 1 do
					say(color(1,1,0), "    "..user_fail_level[x])
				end
				return false
			end
			if table.getn(user_fail_level) == 0 then
				return true
			end
		end
		when logout begin
			if snow_dungeon.is_nemeres_dungeon() == true then
			local set = snow_dungeon.get_settings()
			pc.setqf("out_party_time",get_global_time() + set.DurationMaxOnReJoinGroup)
			--snow_dungeon.unregister_name()
			end
		end
     
		when login begin
			if snow_dungeon.is_nemeres_dungeon() == true then
				local set = snow_dungeon.get_settings()
				local backk = set.outside_entry_pos
				pc.set_warp_location(backk[1], backk[2],backk[3])
				if d.getf("party_leader_pid") != party.get_leader_pid() then
					chat("nemeres_wait_dungeon #RAUS:#  O teu grupo nao está na cave")
					chat("nemeres_wait_dungeon #RAUS:#debug -> "..d.getf("party_leader_pid").." != "..party.get_leader_pid().."")
					d.exit()
					return
				end
				if pc.get_level() < set.need_level_group then
					chat("nemeres_wait_dungeon #RAUS:#  O meu nivel é muito baixo")
					d.exit()
					return
				end
				--chat("Welcome to Nemeres waiting, you have "..math.ceil((d.getf("Start_Time")  - get_global_time()) /60) .." Minutes Time.")
				--notice("Kill all the monsters on this level to get to the next floor.")
				--snow_dungeon._GetLastTime()
			end
		end
     
		function _GetLastTime()
			local c = get_global_time()
			local t = d.getf("Start_Time") - c
			local o = d.getf("LastTimeGetOutPut")
			--d.notice("CurrentTime: "..c.." Last: "..o.."")
			if c >= o then
				if t >= 60 then
					d.notice("Zbývajíci čas: "..math.ceil(t / 60).." minut.")
				else
					d.notice("Zbývá  "..t .." sekund.")
				end
				if t >= (60*10) then
					d.setf("LastTimeGetOutPut",c + 60*5)
				elseif t >= (60*5) then
					d.setf("LastTimeGetOutPut",c + 60*2)
				else
					d.setf("LastTimeGetOutPut",c + 10)
				end
				--d.setf("LastTimeGetOutPut",c + 60*number(3,5)) -- Random
			end
		end
     
		when Jp_OutAllFailNotice.server_timer begin
			if d.select(get_server_timer_arg()) then
				d.notice("O tempo acabou.")
				server_timer("Jp_OutAll",1,d.get_map_index())
			end
		end
		
		when CheckLevelAndCountKillOnMobs.server_timer begin
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local level = d.getf("level")
				local mob_count = d.count_monster()
				local next_jump_time = set.NextJumpTime
				d.notice("Úroveň: "..level.." Počet příšer: "..mob_count.."")
				if level == 1 and mob_count <= 0 then
					d.notice("Teď by mělo být patro 2")
					d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra")
					d.notice("")
					server_timer("Jp_2",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.set_regen_file("data/dungeon/ice_dungeon/zone_2.txt")
				elseif level == 3 and mob_count <= 0 then
					d.notice("Teď by mělo být patro 4")
					d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra")
					d.notice("")
					server_timer("Jp_4",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.regen_file("data/dungeon/ice_dungeon/zone_4.txt")
				elseif level == 4 and mob_count <= 0 then
					d.notice("Teď by mělo být patro 5")
					d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra")
					d.notice("")
					server_timer("Jp_5",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.set_regen_file("data/dungeon/ice_dungeon/zone_5.txt")
				elseif level == 6 and mob_count <= 0 then
					d.notice("Teď by mělo být patro 7")
					local MobStonelvl6 = set.MobVnum_level_6
					d.notice("Porazte všechny příšery,[ENTER} a "..mob_name(MobStonelvl6).." se objeví..")
					d.notice("")
					d.clear_regen()
					d.kill_all()
					d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
					d.spawn_mob(MobStonelvl6,570,649)
				elseif level == 7 and mob_count <= 0 then
					d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra")
					d.notice("")
					server_timer("Jp_8",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.set_regen_file("data/dungeon/ice_dungeon/zone_8.txt")             
				end
				snow_dungeon._GetLastTime()
			end
		end
 
		when Jp_2.server_timer begin --Jump Level 2
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.key_level_2
				d.setf("level",2)
				local cord = set.base_cord
				local pos = set.Position_level_2
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Získejte "..item_name(v).." a budete moci postoupit.")
				d.notice("")
			end
		end
		when 30331.use with snow_dungeon.is_nemeres_dungeon() == true begin --key_level_2
			local set = snow_dungeon.get_settings()
			local next_jump_time = set.NextJumpTime
			local job = pc.get_job()
			local level = d.getf("level")
			if level == 2 then
				if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
					--dchat("SET VARIABLE JOB 3")
					job = 3
				end
				if job == pc.get_job() -- Schamane weiblich
				or job == pc.get_job() --Schamane männlich
				then
					if number(1,3) == 1 then --or d.count_monster() < 10 then
						d.notice("Teď by mělo být patro 3")
						d.notice("Tento klíč zafungoval. Budete přesunuti do dalšího patra.")
						server_timer("Jp_3",next_jump_time,d.get_map_index())
						d.clear_regen()
						d.kill_all()
						d.regen_file("data/dungeon/ice_dungeon/zone_3.txt")
						item.remove()
					else
						d.notice("Zkuste to znovu..")
						item.remove()
					end
				else
					d.notice("Apenas shamans.")
					return
				end
			end
		end
     
		when Jp_3.server_timer begin --Jump Level 3
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				d.setf("level",3)
				local cord_MQ = set.base_cord
				local pos = set.Position_level_3
				d.jump_all((cord_MQ[1] + pos[1]), (cord_MQ[2] + pos[2]))
				d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra ")
			end
		end
     
		when Jp_4.server_timer begin --Jump Level 4
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				d.setf("level",4)
				local cord = set.base_cord
				local pos = set.Position_level_4
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Porazil jste všechny příšery. Budete přesunuti do dalšího patra ")
			end
		end
     
		when Jp_5.server_timer begin --Jump Level 5
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.NpcVnum_level_5
				d.setf("level",5)
				local cord = set.base_cord
				local pos = set.Position_level_5
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Abriste "..mob_name(v).." na ordem correta.")
				if set.IsNewGameRevision == true then
					d.notice("A chave caiu do monstro ...")
				else
					d.notice("A chave foi diretamente para o teu inventário ...")
				end
				snow_dungeon._Create_Stones_level5()
			end
		end
		
		function _DropKeyOnLevel5()
			if number(1,1000) >= 666 then --Abbruch der weiteren funtion -> Damit es spannend bleibt bei den würfeln... :P
				return
			end
			local set = snow_dungeon.get_settings()
			local count = set.StoneCount_level_5
			local vnum = set.Key_on_level_5
			local get_random_unique = d.get_unique_vid("stone5_"..number(1,count).."")
			local fail_count = d.getf("Stone_5_item_fail") +1
			local search = d.getf("Stone_5_count")
			local search2 = d.get_unique_vid("stone5_"..search.."")
			if search2 != get_random_unique then
				d.setf("Stone_5_item_fail",fail_count)
			end
			--
			if set.IsNewGameRevision == true then
				--New function
				game.drop_item_and_select(vnum,1)
			else
				pc.give_item2_select(vnum,1)
			end
			--dchat("Creaty Key fail_count: "..fail_count.."")
			if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then --Wenn TestServer Modus
				item.set_socket(1,search2)
				d.setf("Stone_5_item_fail",0)
			elseif fail_count > 6 then --Wenn mehr wie x mal nicht richtig erstellt wird, dann kommt der richtige Key
				item.set_socket(1,search2)
				d.setf("Stone_5_item_fail",0)
			else   
				item.set_socket(1,get_random_unique)
			end
		end
		 
		function _Create_Stones_level5()
			local set = snow_dungeon.get_settings()
			local stone_level5_count_MQ = set.StoneCount_level_5
			local c = set.StoneCords_level_5 --{ {432,508},{437,493},{448,492},{448,476},{467,475},{466,464}}
			local v = set.NpcVnum_level_5
			for i = 1, stone_level5_count_MQ, 1 do
				local n = number(1,table.getn©)
				--d.spawn_mob(20398, c[n][1], c[n][2])
				d.set_unique("stone5_"..i.."", d.spawn_mob(v, c[n][1], c[n][2]))
				--d.set_unique("stone5_"..i.."", mob.spawn(20398, c[n][1], c[n][2],1,1,1)) --GEHT
				--d.set_unique("stone5_"..i.."", d.spawn_mob_ac_dir(20398, c[n][1], c[n][2],i)) --GEHT
				table.remove(c,n)
				if i == 1 then
					d.setf("Stone_5_count",1)
					d.setf("Stone_5_item_fail",0)
				end
			end
		end
		 
		when 20398.take begin --NpcVnum_level_5
			if snow_dungeon.is_nemeres_dungeon() == true then
				local set = snow_dungeon.get_settings()
				local stone_level5_count = set.StoneCount_level_5
				local next_jump_time = set.NextJumpTime
				local vnum = item.get_vnum()
				local key_level_5 = set.Key_on_level_5 --30332
				local unique_item = item.get_socket(1)
				dchat("unique_item: "..unique_item.."")
				if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
					d.notice("TESTSERVERMODE, vais ser teleportado para o próximo piso.")
					npc.purge()
					item.remove()
					server_timer("Jp_6",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
					return
				end
				if vnum == key_level_5 then
					local npc_vid = npc.get_vid()
					local search = d.getf("Stone_5_count")
					local search2 = d.get_unique_vid("stone5_"..search.."")
					dchat("npc_vid: "..npc_vid.." search:"..search.." search2:"..search2.." ")
					if npc_vid == search2 then
						if unique_item == npc_vid then
							local new = search +1
							if new > stone_level5_count then
								d.notice("A última pedra foi destruida, vais ser teleporado para o próximo piso.")
								npc.purge()
								item.remove()
								server_timer("Jp_6",next_jump_time,d.get_map_index())
								d.clear_regen()
								d.kill_all()
								d.regen_file("data/dungeon/ice_dungeon/zone_6.txt")
							else
								d.notice("A "..search..". pedra foi destruida. [ENTER}Faltam ".. stone_level5_count - search .." pedras.")
								npc.purge()
								item.remove()
							end
							d.setf("Stone_5_count",new)
						else
							chat("Pedra certa, chave errada.")
							item.remove()
						end
					else
						chat("Esta nao é a pedra certa.")
					end
				end
			end --if is dungeon end
		end --when end
		 
		when Jp_6.server_timer begin --Jump Level 6
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.MobVnum_level_6
				d.setf("level",6)
				local cord = set.base_cord
				local pos = set.Position_level_6
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				 
				d.notice("Mata todos os monstros. [ENTER]Depois, mata o "..mob_name(v).."")
				d.notice("Apenas os shaman podem ajudar-te.")
				--d.spawn_mob(v,570,649)
				 
			end
		end
		 
		when Jp_7.server_timer begin --Jump Level 7
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.MobVnum_level_7
				d.setf("level",7)
				local cord = set.base_cord
				local pos = set.Position_level_7
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Teď by mělo být patro 8")
				d.notice("Mataste todos os monstros, [ENTER]mata agora o "..mob_name(v)..".")
			end
		end
		 
		when Jp_8.server_timer begin --Jump Level 8
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.Key_on_level_8
				d.setf("level",8)
				local cord = set.base_cord
				local pos = set.Position_level_8
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Kill monsters to her as long "..item_name(v).." have.")
				d.notice("But only Mage and Ninjas can use it.")
			end
		end
		 
		when 30333.use with snow_dungeon.is_nemeres_dungeon() == true begin --Key_on_level_8
			local set = snow_dungeon.get_settings()
			local next_jump_time = set.NextJumpTime
			local level = d.getf("level")
			local job = pc.get_job()
			if level == 8 then
				if (is_test_server() and snow_dungeon.is_TestServerMode() == true ) then
					--dchat("SET VARIABLE JOB 3")
					job = 3
				end
				if job == 1 -- Ninja weiblich
				or job == 5 --Ninja männlich
				or job == 3 -- Schamane weiblich
				or job == 7 --Schamane männlich
				then
					if number(1,3) == 1 then
						d.notice("The correct key has been found in a few seconds[ENTER] it goes to the next floor.")
						server_timer("Jp_9",next_jump_time,d.get_map_index())
						d.clear_regen()
						d.kill_all()
						d.regen_file("data/dungeon/ice_dungeon/zone_9.txt")
						item.remove()
					else
						d.notice("That was the wrong key.")
						item.remove()
					end
				else
					d.notice("Only Mage and Ninja can use.")
					return
				end
			end
		end
		 
		when Jp_9.server_timer begin --Jump Level 9
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.NpcVnum_level_9
				d.setf("level",9)
				local cord = set.base_cord
				local pos = set.Position_level_9
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Destroy the "..mob_name(v).." ")
				d.notice("But only Mage and Ninjas can add him naught.")
				d.notice("")
				d.spawn_mob(v,849,655)
			end
		end
		 
		when Jp_Boss.server_timer begin --Jump Level BossZone
			if d.select(get_server_timer_arg()) then
				local set = snow_dungeon.get_settings()
				local v = set.BossVnum
				d.setf("level",10)
				local cord = set.base_cord
				local pos = set.Position_level_10
				d.jump_all((cord[1] + pos[1]), (cord[2] + pos[2]))
				d.notice("Defeated "..mob_name(v)..", the king of frost and ice.")
			end
		end
		 
		when kill begin
			if snow_dungeon.is_nemeres_dungeon() == true then
				local set = snow_dungeon.get_settings()
				local next_jump_time = set.NextJumpTime
				local level = d.getf("level")
				local stone_level_6 = set.MobVnum_level_6
				local stone_level_9 = set.NpcVnum_level_9
				local boss_vnum = set.BossVnum
				local wait_time = set.WaitBeforOutAllOnExit
				local mobvnum = npc.get_race()
				--dchat("nemeres_wait_dungeon MobVnum = "..mobvnum.."")
				if level == 2 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10)  then
					local v = set.key_level_2
					game.drop_item(v,1)
				elseif level == 5 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,15) then
					d.notice("Teď by mělo být patro 6")
					snow_dungeon._DropKeyOnLevel5()
				elseif level == 6 and mobvnum == stone_level_6 then
					d.notice("Teď by mělo být patro 7")
					d.notice("The "..mob_name(stone_level_6).." was destroyed,  in a few seconds it goes to the next floor.")
					d.notice("")
					server_timer("Jp_7",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.regen_file("data/dungeon/ice_dungeon/zone_7.txt") --Szel
					local v_MQv = set.MobVnum_level_7
					local c = set.SzelCords_level_7
					local n = number(1,table.getn©)
					d.spawn_mob(v_MQv, c[n][1], c[n][2])
				elseif level == 8 and mobvnum >= 6101 and mobvnum <= 6108 and 1 == number(1,10) then
					d.notice("Teď by mělo být patro 9")
					local v = set.Key_on_level_8
					game.drop_item(v,1)
				elseif level == 9 and mobvnum == stone_level_9 then
					d.notice("Teď by mělo být patro 10")
					d.notice("The "..mob_name(stone_level_9).." was destroyed, in a few seconds it goes to the next floor.")
					server_timer("Jp_Boss",next_jump_time,d.get_map_index())
					d.clear_regen()
					d.kill_all()
					d.regen_file("data/dungeon/ice_dungeon/zone_boss.txt")
					local v = set.BossVnumGroup
					d.spawn_group(v, 928, 335, 5 ,1, 1) --  (Input from SRC: argument: vnum,x,y,radius,aggressive,count)
				elseif level == 10 and mobvnum == boss_vnum then
					d.notice("Teď by mělo být patro 11")
					d.clear_regen()
					d.kill_all()
					d.notice("You defeated "..mob_name(boss_vnum).." . In "..wait_time.." seconds all be teleported.")
					server_timer("Jp_OutAll",wait_time,d.get_map_index())
				end
			end
		end
		when Jp_OutAll.server_timer begin --Jump Out Bye bye ;D
			if d.select(get_server_timer_arg()) then
				snow_dungeon._ExitAll()
			end
		end
		function _ExitAll()
			d.exit_all()
		end
	end
	end

 

Link to comment
Share on other sites

  • Replies 4
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

i found this in syserr 

SYSERR: Nov 26 13:15:37 :: AddServerTimer: already registered server timer name:CheckLevelAndCountKillOnMobs arg:3520000
SYSERR: Nov 26 13:15:37 :: AddServerTimer: already registered server timer name:Jp_OutAllFailNotice arg:3520000
SYSERR: Nov 26 13:17:12 :: RunState: LUA_ERROR: locale/turkey/quest/object/state/snow_dungeon:163: attempt to index field `?' (a nil value)
SYSERR: Nov 26 13:17:12 :: WriteRunningStateToSyserr: LUA_ERROR: quest snow_dungeon.start click

 

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

Announcements



  • Similar Content

  • Activity

    1. 24

      Experimental Renderer

    2. 11

      Multi Language System

    3. 0

      [FREE DESIGN] Interface + Logo + Discord Banner and Avatar

    4. 4

      Feeding game source to LLM

    5. 0

      Quest 6/7 Problem

    6. 5

      Effect weapons

    7. 0

      [C++] Fix Core Downer Using Negative Number in GM Codes

    8. 3

      Crystal Metinstone

  • Recently Browsing

    • No registered users viewing this page.
×
×
  • 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.