Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bramy Piekieł Quest - r40267


Rekomendowane odpowiedzi

Opublikowano

Event Flame Dungeon Open -

 

quest event_flame_dungeon_open begin
    state start begin
        when 20381.chat.gameforge.event_flame_dungeon_open._010_npcChat with pc.get_level() >= 90 begin
            say(gameforge.event_flame_dungeon_open._020_say)
            wait()
            say(gameforge.event_flame_dungeon_open._030_say)
            wait()
            say(gameforge.event_flame_dungeon_open._080_say)
            pc.setqf("event_FD_time", 0)
            set_state(run)
        end
    end
 
    state run begin
        when 20381.chat.gameforge.event_flame_dungeon_open._040_npcChat with game.get_event_flag("w21open_event")>0 begin
            say(gameforge.event_flame_dungeon_open._050_say)
            wait()
            
            local t = pc.getqf("event_FD_time")
            local killcount = pc.getqf("kill_done")
            if killcount == 0 then
                say(gameforge.event_flame_dungeon_open._080_say)
            elseif (t==0) or (t+86400 < get_global_time()) then
                say(gameforge.event_flame_dungeon_open._060_say)
                pc.give_item2(71173, 1)
                pc.give_item2(71174, 3)
                pc.setqf("event_FD_time", get_global_time())
                pc.setqf("kill_count_1", 0)
            else
                say(gameforge.event_flame_dungeon_open._070_say)
            end 
        end
 
        when letter with game.get_event_flag("w21open_event")>0 begin
send_letter(gameforge.event_flame_dungeon_open._010_npcChat) 
  --ł˛Ŕş óġ Ľö ľČł»ą® 
q.set_counter_name(gameforge.main_quest_lv98._680_counterName)
event_flame_dungeon_open.kill_count() 
end
        
        when button or info with game.get_event_flag("w21open_event")>0 begin
say_title(gameforge.event_flame_dungeon_open._010_npcChat) 
say(string.format(gameforge.levelup._26_say, 100 - pc.getqf("kill_count_1")))
end
        
        when 3101.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
        
        when 3102.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 3103.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 3104.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 3105.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 3190.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 3191.kill begin
            local kill_count = pc.getqf("kill_count_1")
            pc.setqf("kill_count_1", kill_count+1)
            event_flame_dungeon_open.kill_count() 
        end
 
        when 71173.use begin
            pc.warp(614200, 706800, 62)
            pc.remove_item(71173, 1)
        end
        
        function kill_count()
            local total_remain = 100
            local remain1 = pc.getqf("kill_count_1")
            local remain_count = total_remain - remain1
            q.set_counter_value(remain_count)
            if total_remain == 0 then
                pc.setqf("kill_done", 1)
            end
        end
    end
end

 

 

 

Flame Dungeon

 

 

 

define BLOCK_DOOR 20387
define DUNGEON_MAN 20385
define DUNGEON_MAN_DIR 0
define DUNGEON_MAP_INDEX 351
define ENTER_LIMIT_TIME 30
define ENTRY_MAN 20394
define ENTRY_MAP_INDEX 62
define FINAL_BOSS 6091
define LEVEL2_KEY 30329
define LEVEL2_STONE 20386
define LEVEL4_TARGET 6051
define LEVEL5_REALKEY 30330
define LEVEL5_STONE 20386
define LEVEL5_GEN_LIMIT 100
define LEVEL6_TARGET 8057
define LEVEL_CUT 100
define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
define IN_DOOR 20388
define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
define TICKET_GROUP 10033
define LIMITED_PASS_TICKET 71175

quest flame_dungeon begin
	state start begin	
		when ENTRY_MAN.click with pc.get_level() >= 90 begin
			pc.give_item2(LIMITED_PASS_TICKET, 1)
			set_state(run)
		end
	end

	state run begin
	
	function setting()
		return 
		{
		["bossroom_entry_pos"] = {8109,6867},
		["boss_pos"] = {686,637},
		["doors_pos"] = {
			{320,394},
			{293,359},
			{333,321},
			{378,320},
			{400,355},
			{394,401}
		},
		["idoors_pos"] = {
			{268,447},
			{234,359},
			{300,264},
			{454,217},
			{470,355},
			{467,469}
		},
		["doors_dir"] = {135,90,210,152,90,223},
		["idoors_dir"] = {135,90,210,135,90,239},
		["dungeon_entry_pos"] = {7762, 6739},-- ´řŔüżˇ ĂłŔ˝ µéľîżŔ´Â °÷
		["DUNGEON_MAN_bpos"] = {690,722},
		["DUNGEON_MAN_pos"] = {354,362},
		["LEVEL2_STONE_pos"] = {195,352},
		["LEVEL4_TARGET_pos"] = {470,175},
		["LEVEL5_STONE_pos"] = {
				{486, 345},
				{511, 336},
				{525, 349},
				{521, 365},
				{503, 372},
				{486, 365},
				{500, 354}
		},
		["LEVEL6_TARGET_pos"] = {511,480},
		["outside_entry_pos"] = {6142,7068}, --ŔÔŔĺ˝ĂÄŃÁÖ´ÂľÖ Ľ­ŔÖ´Â °÷
		["YAK_pos"] = {376, 397} -- ľŕČŻ şÎÇĎ
		
		}
	end
	function is_flamed(idx) -- Ŕű·ćĽşżˇ ŔÖ´ÂÁö Č®ŔÎ 
		return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
	end
	function make_dungeon() -- ´řŔü ¸¸µé±â
		local setting = flame_dungeon.setting()
		d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
		-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
		-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
		d.regen_file(NPC_REGEN_FILE_PATH)
		d.setf("level",0)
		for i=1,6 do
			d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
		end
		for i=1,6 do
			d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
		end
		d.setf("clear_count",0)
		d.setf("started",0)
		d.setf("dungeon_enter",0) -- Á¤»óŔűŔ¸·Î ŔÔŔĺÇß´ÂÁö? // şńÁ¤»ó : 0 Á¤»ó : 1 // ƨ±â¸é ŔÔŔĺÁ¦ÇѽðŁŔ» ±â·Ď ľČÇÔ
	end	
	function go_boss() -- ş¸˝ş·ë °ˇ±â 
		local setting = flame_dungeon.setting()
		if pc.get_level() < 104 then --·ąş§Č®ŔÎ
            -- syschat(gameforge.flame_dungeon._580_notice)
            say(gameforge.flame_dungeon._580_notice)
            return
		else
			if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- Ľ±ÇŕÄů˝şĆ® Č®ŔÎ
				-- say_title(gameforge.flame_dungeon._010_say)
                say(gameforge.flame_dungeon._010_say)
				local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
				if warp == 1 then
					d.setf("level",17)
					d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
				--	d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
					d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
				end
			else 
                -- syschat(gameforge.flame_dungeon._040_notice)
                say(gameforge.flame_dungeon._040_notice)
                return
			end
		end
	end
	function level_clear() -- ·ąş§ ˛ŁŔ»¶§, ¸®Á¨Ĺ¬¸®ľî, ÁöżŞĹ¬¸®ľî
		d.setf("level",0)
		d.clear_regen()
		d.purge_area(750000,620000,817400,689400) -- ¸ĘŔüĂĽ -- d.purge() »çżë°í·Á
	end
	function clear_timer(inx) -- ŸŔĚ¸Ó ´ŮÁöżě±â
		clear_server_timer ("flame_dungeon_0m_left_timer", inx)
		clear_server_timer ("flame_dungeon_1m_left_timer", inx)
		clear_server_timer ("flame_dungeon_5m_left_timer", inx)
		clear_server_timer ("flame_dungeon_10m_left_timer", inx)
		clear_server_timer ("flame_dungeon_15m_left_timer", inx)
		clear_server_timer ("flame_dungeon_30m_left_timer", inx)
		clear_server_timer ("flame_dungeon_45m_left_timer", inx)
		clear_server_timer ("killed_A_1", inx)
		clear_server_timer ("killed_A_2", inx)
		clear_server_timer ("flame_dungeon_ticket_remove", inx)	
	end
	
		when login begin
			local idx = pc.get_map_index()
			local setting = flame_dungeon.setting()
			if idx == DUNGEON_MAP_INDEX then
				pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			elseif flame_dungeon.is_flamed(idx) then -- ´řŔü ŔÔŔĺ, ş¸˝ş·ë ŔÔŔĺ żążÜ
			------------------------------------------------------------------------------------------------------------------------------------------------------
			--ľĆ·ˇŔÇ µÎÁŮÁß Ŕ§żˇÁŮŔ» »çżëÇĎ¸é ´řŔüżˇĽ­ Áľ·áÇßŔ»°ćżě ´Ů˝Ă żř·ˇ Ŕ§Äˇ·Î µąľĆżÂ´Ů. ľĆ·ˇÁŮŔ» ȰĽşČ­ ÇĎ¸é ´řŔüżˇĽ­ Áľ·áÇßŔ» °ćżě ´řŔü ąŰŔ¸·Î łŞ°ˇ°Ô µČ´Ů.
			--´řŔüżˇĽ­ Áľ·áÇßŔ» °ćżě ´Ů˝Ă żř·ˇ Ŕ§Äˇ·Î µąľĆżĂ °ćżě, ´řŔüżˇĽ­ łŞ°ˇ´Â ąćąýŔ» ¸¸µéľîÁŕľß Çϱ⠶§ą®żˇ Ŕű·ćĽşşńŔÇ łŞ°ˇ±â¶ő żÉĽÇŔ» ȰĽşČ­ ÇŘÁŕľß ÇŃ´Ů.
			------------------------------------------------------------------------------------------------------------------------------------------------------
				-- pc.set_warp_location(0, 0 , 0) --ƨ°ĺŔ»¶§ ´Ů˝Ă µąľĆżŔ°Ô ¸¸µéľî ÁÖ´Â şÎşĐ
				pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ´řŔü łŞ°¬Ŕ» ¶§ ąŰŔ¸·Î ƨ±â°ÔÇÔ
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				if d.getf("dungeon_enter") == 0 then -- ÁřÇŕÁßŔĚ ľĆ´Ď¸é
					local canPass = false
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							canPass = true
							break
						end
					end

					if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- ŔÔŔĺÁ¦ÇѽðŁŔĚ °É·ČŔ¸¸é
						notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
						say(gameforge.flame_dungeon._060_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif not canPass then
						notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
						say(gameforge.flame_dungeon._080_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif pc.get_level() < 100 then
						notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
						say(gameforge.flame_dungeon._100_say)
						timer("flame_dungeon_warp_timer", 5)
					end
				elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ÁřÇŕÁßŔεĄ ĆĽÄĎŔĚ ľČÁöżöÁłŔ»°ćżě
					
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							pc.remove_item(ticketGroup[i], ticketGroup[i+1])
							break
						end
					end
					pc.setf("flame_dungeon","ticket_delete",1)
				end
			else
				pc.setf("flame_dungeon","ticket_delete",0)
			end
		end
		when flame_dungeon_warp_timer.timer begin
			local setting = flame_dungeon.setting()
			pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
		end
		when logout begin
			local idx = pc.get_map_index()
			if flame_dungeon.is_flamed(idx) then 
				if d.getf("dungeon_enter") == 1 then -- Á¤»óŔűŔÎ ´řŔü ŔÔŔĺ ČÄ ·Î±×ľĆżô
					pc.setf("flame_dungeon","exit_time",get_global_time()) -- ŔνşĹĎ˝ş ľČżˇĽ­ŔÇ ¸¶Áö¸· ˝Ă°ŁŔ» ±â·Ď, ±ŮµĄ ˝Ă°ŁÁ¦ÇŃ ¶§ą®żˇ or ±×łÉ ƨ±ä°Ĺ¸é ľČ±â·Ď
				end
				

			end
		end
		when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
		
			local setting = flame_dungeon.setting()
			if party.is_party() then
				-- ´řŔü µµÁß łŞ°Ą °ćżě ŔçŔÔŔĺ °ˇ´ÉÇϵµ·Ď
				local party_check = 0
				if d.find(party.getf("dungeon_index")) then
					party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
				end
				
				if d.find(party.getf("dungeon_index")) and party_check then
					if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- Á˘Áľ ŔĚČÄ 5şĐ ł»?
						local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
						if dungeon_level == 17 then -- ş¸˝ş
							pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
						else
							pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
						end
					else -- 5şĐ ĂʰúÇĎż© Ŕç ŔÔŔĺ şŇ°ˇ
						say_title(mob_name(ENTRY_MAN))
                        say(gameforge.flame_dungeon._590_say)
					end
				else
					local pids = {party.get_member_pids()}
					local noTicketMembers = {}
					local notEnoughLevelMembers = {}
					local ticketCheck = true
					local levelCheck = true
					local ticketGroup = {get_special_item_group (TICKET_GROUP)}
					for i, pid in next, pids, nil do
						q.begin_other_pc_block(pid)
						local canPass = false
						for idx=1, table.getn(ticketGroup),2 do 
							if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
								canPass = true
								break
							end
						end
						
						if not canPass then
							table.insert(noTicketMembers, pc.get_name())
							ticketCheck = false
						end
						if pc.level < LEVEL_CUT then
							table.insert(notEnoughLevelMembers, pc.get_name())
							levelCheck = false
						end
						q.end_other_pc_block()
					end

					if not ticketCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._610_say)
						for i, name in next, noTicketMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						if levelCheck then
							return
						else
							wait()
						end
					end

					if not levelCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._630_say)
						for i, name in next, notEnoughLevelMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						return
					end

					if party.is_leader() then
						say(gameforge.flame_dungeon._120_say)
						local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
						if warp == 1 then
							if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
								flame_dungeon.make_dungeon()
							else
								--say("test : ĆÄĆĽżřŔÇ ŔÔŔĺ Á¦ÇѽðŁŔĚ łˇłŞÁö ľĘľŇ˝Ŕ´Ď´Ů.")
								say(gameforge.flame_dungeon._600_say)
							end
						end
						
						party.setf("flame_dungeon_boss_kill_count", 0)
						
					else
						say(gameforge.flame_dungeon._150_say)
					end
				end
			else
				say(gameforge.flame_dungeon._160_say)
			end
		end
		-- when ENTRY_MAN.chat."Test : ¸®ĽŇ˝şČ®ŔÎ" with is_test_server() begin -- Ĺ×˝şĆ®żë
			-- local setting = flame_dungeon.setting()
			-- pc.setf("flame_dungeon","fdRtest",1)
			-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
		-- end
		
		
		when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- Ĺ×˝şĆ®żë
			pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
			say("Done")
		end
		-- when DUNGEON_MAN.chat."Test : ÇöŔç »óĹÂ" with is_test_server() begin -- Ĺ×˝şĆ®żë
			-- say("ł˛Ŕş ¸ó˝şĹÍ : "..d.count_monster())
			-- say("level : "..d.getf("level"))
			-- say("Dmap index : "..d.get_map_index())
			-- say("Pmap index : "..pc.get_map_index())
			-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
			-- say("global time : "..get_global_time())
			-- if flame_dungeon.is_flamed(d.get_map_index()) then
				-- say("in dungeon") -- is_flamed ÇÔĽö ĂĽĹ©
			-- end
			-- if d.is_unique_dead("stone1") then
				-- say("stone1 is dead")
			-- else
				-- say("stone1 is not dead")
			-- end
		-- end
		-- when DUNGEON_MAN.chat."ĂłŔ˝Ŕ¸·Î" begin -- Ĺ×˝şĆ®żë
			-- say("ĂʱâČ­ ÇŐ´Ď´Ů")
			-- flame_dungeon.clear_timer(d.get_map_index())
			-- flame_dungeon.make_dungeon()
		-- end
		when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- Ĺ×˝şĆ®żë
			flame_dungeon.go_boss()
		end
		
		-- < ˝Ă°Ł °ć°ú ŸŔ̸Ó>
		-- when DUNGEON_MAN.chat."łŞ°ˇ±â" begin -- ´řŔüżˇĽ­ ƨ±âÁö ľĘ°Ô ÇŇ °ćżě ȰĽşČ­
			-- local setting = flame_dungeon.setting()
			-- say("ąŰŔ¸·Î łŞ°ˇ˝Ă°Ú˝Ŕ´Ď±î?")
			-- local warp = select("Č®ŔÎ","ĂëĽŇ")
			-- if warp == 1 then
				-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			-- end
		-- end
		when flame_dungeon_45m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_30m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_15m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_5m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_1m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
			end
		end
		when flame_dungeon_0m_left_timer.server_timer begin
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then		
				notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
				server_timer("dungeon_end_timer",10,d.get_map_index())	
			end
		end	


		-- <<<< ´řŔü ÁřÇŕ>>>> --
		when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'´Â xąř° ·ąş§ Äů˝şĆ® ąŢŔ» Ľö ŔÖ´Â »óĹ , '1x'´Â xąř° ·ąş§ Äů˝şĆ® ÁřÇŕÁß
			local setting = flame_dungeon.setting()
			if d.getf("started") == 0 then
				say(gameforge.flame_dungeon._230_say)
				say(gameforge.flame_dungeon._240_say)
				wait()
				d.setf("started",1)
				-- ĆÄĆĽżřŔĚ Ć¨°Üąö·Č´ÂµĄ Ŕڱ⸸ ł˛ľĆĽ­ exit timer°ˇ ¸®ĽÂµÇ¸é ľČµÇ´Ď±ń ´ŮŔ˝·ąş§Ŕ» ´­·¶Ŕ»¶§¸¦ ˝ĂŔŰÇҶ§·Î ş˝
				server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
				notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				
				-- ĹëÇŕÁő °ü·ĂµČ Ăł¸®
				-- ŔÔŔĺ ČÄżˇ ĆĽÄĎŔ» ľřľŘ »ç¶÷Ŕ» ƨ°Üł»±â Ŕ§ÇŘĽ­ ŸŔ̸Ӹ¦ ŔĚżëÇŘ ĆĽÄĎŔ» Á¦°ĹÇŃ´Ů.
				local pids = {party.get_member_pids()}
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				for i, pid in next, pids, nil do
					q.begin_other_pc_block(pid)
					local canPass = false
					for idx=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
							canPass = true
							pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
							break
						end
					end
					
					if not canPass then
						pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
					end
					q.end_other_pc_block()
				end
				d.setqf2("flame_dungeon","ticket_delete",1)
				d.setf("dungeon_enter",1)
				
				-- ´řŔü°ú ĆÄĆĽżˇ Ľ­·Îżˇ ´ëÇŃ Á¤ş¸¸¦ ŔúŔĺÇŃ´Ů.
				party.setf("dungeon_index", d.get_map_index())
				d.setf("party_leader_pid", party.get_leader_pid())
			end
			if d.getf("level") < 7 then --ÁřÇŕÁßŔĚ ľĆ´Ď¸é
				if d.getf("clear_count") == 6 then -- ąć ż©Ľ¸°ł ÇßŔ¸¸é ş¸˝şąć
					d.setf("level",7)
				else
					local rand = number(1,6)--·Ł´ýżˇĽ­ ąćą®ĂĽĹ©´Â µű·Î ąčż­ľřŔĚ ąćŔÇ ą®ŔÇ ż­·ÁŔÖ´ÂÁö·Î ĂĽĹ©ÇÔ
					local setlev = 0
					d.setf("level",7) -- Ȥ˝Ă ¸đ¸¦ ą®Á¦°ˇ »ý°Ü ·ąş§ŔĚ ľČŔâČú°ćżě¸¦ ´ëşńÇŘ ş¸˝ş·ëŔ¸·Î ĽÂĆĂÇصŇ
					for i=1,50 do
						setlev = setlev + 1
						if setlev > 6 then
							setlev = 1
						end
						if not d.is_unique_dead("door"..setlev) then
							rand = rand - 1
							if rand == 0 then
								d.setf("level",setlev)
								d.setf("clear_count",d.getf("clear_count")+1)
								break
							end	
						end
					end
				end
			end
				if d.getf("level") == 1 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door1")
					d.kill_unique("idoor1")
					d.setf("level",11)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
						
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 11 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
				elseif d.getf("level") == 2 then
						say(gameforge.flame_dungeon._290_say)
						say(gameforge.flame_dungeon._300_say)
						notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
						notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
						d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- şŔŔÎĽ® ĽŇČŻ
						d.kill_unique("door2")
						d.kill_unique("idoor2")
						d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
						d.setf("level",12)
				elseif d.getf("level") == 12 then
					say(gameforge.flame_dungeon._310_say)
				elseif d.getf("level") == 3 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door3")
					d.kill_unique("idoor3")
					d.setf("level",13)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 13 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
				elseif d.getf("level") == 4 then -- 474 178
					say(gameforge.flame_dungeon._320_notice)
					notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
					d.setf("level",14)
					d.kill_unique("door4")
					d.kill_unique("idoor4")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
					d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- Ÿ°Ů¸ó˝şĹÍ ĽŇÇŃ
				elseif d.getf("level") == 14 then
					say(gameforge.flame_dungeon._330_say)
					say(gameforge.flame_dungeon._340_say)
				elseif d.getf("level") == 5 then -- 510 355
					say(gameforge.flame_dungeon._350_say)
					say(gameforge.flame_dungeon._360_say)
					notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
					notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
					d.kill_unique("door5")
					d.kill_unique("idoor5")
					d.setf("level",15)
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					local vis = { 0,0,0,0,0,0,0}
					for i=1,7 do
						vis[i] = 0
					end
					for i = 1, 7 do -- ·Ł´ýÇĎ°Ô µąĽŇČŻ
						local ran = number(1,7)
						local st = 0
						for j = 1, 50 do
							st = st + 1
							if st > 7 then
								st = 1
							end
							if vis[st] == 0 then
								ran = ran - 1
								if ran == 0 then
									vis[st] = 1
									d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
									break
								end
							end
						end
					end  
				elseif d.getf("level") == 15 then
					say(gameforge.flame_dungeon._370_say)
				elseif d.getf("level") == 6 then -- 507 490
					say(gameforge.flame_dungeon._380_say) 
					notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
					d.setf("level",16)
					d.kill_unique("door6")
					d.kill_unique("idoor6")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
					d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- Ÿ°ŮżŔşęÁ§Ć® ĽŇČŻ
				elseif d.getf("level") == 16 then
					say(gameforge.flame_dungeon._390_say)
					say(gameforge.flame_dungeon._400_say)
				elseif d.getf("level") == 7 then
					-- setskin(NOWINDOW)
                    flame_dungeon.go_boss()
				else
					say(gameforge.flame_dungeon._410_say)
				end
			npc.unlock()		
		end
	


		when dungeon_end_timer.server_timer begin -- Áľ·á ŸŔĚ¸Ó (łˇłŞ°í łŞ°ˇ´Â°Ĺ)
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then
				flame_dungeon.clear_timer(d.get_map_index())		
				d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) 
				d.exit_all()
				d.setf("party_leader_pid", 0)
			end
		end

		when killed_A_1.server_timer begin -- ŸŔĚ¸Ó µą¸®±â1 (level1,level3)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1·ąş§ ¸ó˝şĹÍ Ŕü¸ę˝Ă
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_2", 6, get_server_timer_arg())
				end
			end
		end
		when killed_A_2.server_timer begin -- ŸŔĚ¸Ó µą¸®±â2 (1°ú 2 ąř°ĄľĆ°ˇ¸éĽ­ µąľĆ°¨)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1·ąş§ ¸ó˝şĹÍ Ŕü¸ę˝Ă
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_1", 6, get_server_timer_arg())
				end
			end
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2·ąş§ şŔŔÎĽ® ż­Ľč µĺ¶ř
			local i = number(1, 100) -- 100şĐŔÇ 1 Č®·ü·Î ż­Ľčµĺ¶ř
			if i == 1 then
				game.drop_item (LEVEL2_KEY, 1)
			end
		end
		when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2·ąş§ ż­Ľč ¸ÔľúŔ»¶§
			local i = number(1, 5) -- 5şĐŔÇ 1 Č®·ü·Î ÁřÂĄ ż­Ľč
			if i == 1 then
				npc.purge()
				item.remove()
				notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
				flame_dungeon.level_clear()
			else
				item.remove()
				say(gameforge.flame_dungeon._450_say)
			end
		end

		when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
			notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5·ąş§ şŔŔÎĽ® ż­Ľč µĺ¶ř
			local i = number(1, 30) -- 30şĐŔÇ 1 Č®·ü·Î ż­Ľčµĺ¶ř
			if i == 1 then
				game.drop_item (LEVEL5_REALKEY, 1)
			end
		end
		when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5·ąş§ ÁřÂĄż­Ľč ¸ÔľúŔ»¶§
			local setting = flame_dungeon.setting()
			if npc.get_vid() == d.get_unique_vid("stone5_1") then -- Ăąąř° ˛¨´Â Ľ±ÇŕµÇľîľß ÇŇ ŔĎŔĚ ÇĘżäľřŔ¸´Ď ĂŁŔÚ¸¶ŔÚ Á¦°ĹÇŘÁÜ
				npc.purge()
				item.remove()
				say(gameforge.flame_dungeon._470_say)
				d.setf("stonekill",2) -- 2ąř µąŔ» Á׿©¶ó
				if d.count_monster() < LEVEL5_GEN_LIMIT then
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_2") then 
				if d.getf("stonekill") == 2 then -- 2ąřµąŔ» Á×ŔĎ Â÷·ËµĄ 2ąřµążˇ°Ô ż­Ľč¸¦ ¸Ôż´Ŕ» ¶§
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._480_say)
					d.setf("stonekill",3)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("2ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
				if d.getf("stonekill") == 3 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._500_say)
					d.setf("stonekill",4)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("3ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
				if d.getf("stonekill") == 4 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._510_say)
					d.setf("stonekill",5)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
				--	say("4ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
				if d.getf("stonekill") == 5 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._520_say)
					d.setf("stonekill",6)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("5ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
				if d.getf("stonekill") == 6 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._530_say)
					d.setf("stonekill",7)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("6ąř")
				end
			else 
				if d.getf("stonekill") == 7 then
					npc.purge()
					item.remove()
					notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
					notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					flame_dungeon.level_clear()
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("7ąř")
				end
			end
		end

		when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ¸Á¸¶Ľ® Ćı«ÇßŔ» ¶§
			notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- ş¸˝ş Á׿´Ŕ»¶§
			notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
			server_timer("dungeon_end_timer", 60,d.get_map_index())	
			flame_dungeon.level_clear()
			
			-- ĆÄĆĽżř Áß, ľß¸¶Ăµ Ŕâ´Â Äů˝şĆ®(104·ľ, 105·ľ Äů˝şĆ®) ÁřÇŕÁßŔÎ »ç¶÷ŔĚ ŔÖŔ¸¸é Äů˝şĆ® Ŭ¸®ľî µÇµµ·Ď.
			if party.is_party() then
				party.setf("flame_dungeon_boss_kill_count", 1)
			end
			
		end
	end
end
 

 

 

0LsM05U.png

  • 1 miesiąc temu...
Opublikowano

można wersje z Tabami? :)

 

 

 

define BLOCK_DOOR 20387
define DUNGEON_MAN 20385
define DUNGEON_MAN_DIR 0
define DUNGEON_MAP_INDEX 351
define ENTER_LIMIT_TIME 30
define ENTRY_MAN 20394
define ENTRY_MAP_INDEX 62
define FINAL_BOSS 6091
define LEVEL2_KEY 30329
define LEVEL2_STONE 20386
define LEVEL4_TARGET 6051
define LEVEL5_REALKEY 30330
define LEVEL5_STONE 20386
define LEVEL5_GEN_LIMIT 100
define LEVEL6_TARGET 8057
define LEVEL_CUT 100
define MOB_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/"
define IN_DOOR 20388
define NPC_REGEN_FILE_PATH = "data/dungeon/flame_dungeon/npc.txt"
define TICKET_GROUP 10033
define LIMITED_PASS_TICKET 71175

quest flame_dungeon begin
	state start begin	
		when ENTRY_MAN.click with pc.get_level() >= 90 begin
			pc.give_item2(LIMITED_PASS_TICKET, 1)
			set_state(run)
		end
	end

	state run begin
	
	function setting()
		return 
		{
		["bossroom_entry_pos"] = {8109,6867},
		["boss_pos"] = {686,637},
		["doors_pos"] = {
			{320,394},
			{293,359},
			{333,321},
			{378,320},
			{400,355},
			{394,401}
		},
		["idoors_pos"] = {
			{268,447},
			{234,359},
			{300,264},
			{454,217},
			{470,355},
			{467,469}
		},
		["doors_dir"] = {135,90,210,152,90,223},
		["idoors_dir"] = {135,90,210,135,90,239},
		["dungeon_entry_pos"] = {7762, 6739},-- ´řŔüżˇ ĂłŔ˝ µéľîżŔ´Â °÷
		["DUNGEON_MAN_bpos"] = {690,722},
		["DUNGEON_MAN_pos"] = {354,362},
		["LEVEL2_STONE_pos"] = {195,352},
		["LEVEL4_TARGET_pos"] = {470,175},
		["LEVEL5_STONE_pos"] = {
				{486, 345},
				{511, 336},
				{525, 349},
				{521, 365},
				{503, 372},
				{486, 365},
				{500, 354}
		},
		["LEVEL6_TARGET_pos"] = {511,480},
		["outside_entry_pos"] = {6142,7068}, --ŔÔŔĺ˝ĂÄŃÁÖ´ÂľÖ Ľ­ŔÖ´Â °÷
		["YAK_pos"] = {376, 397} -- ľŕČŻ şÎÇĎ
		
		}
	end
	function is_flamed(idx) -- Ŕű·ćĽşżˇ ŔÖ´ÂÁö Č®ŔÎ 
		return idx >= DUNGEON_MAP_INDEX * 10000 and idx < (DUNGEON_MAP_INDEX + 1) *10000
	end
	function make_dungeon() -- ´řŔü ¸¸µé±â
		local setting = flame_dungeon.setting()
		d.new_jump_party(DUNGEON_MAP_INDEX, setting.dungeon_entry_pos[1], setting.dungeon_entry_pos[2])
		-- d.spawn_mob_ac_dir(DUNGEON_MAN, setting.DUNGEON_MAN_pos[1], setting.DUNGEON_MAN_pos[2],DUNGEON_MAN_DIR)
		-- d.spawn_mob(YAK,setting.YAK_pos[1],setting.YAK_pos[2])
		d.regen_file(NPC_REGEN_FILE_PATH)
		d.setf("level",0)
		for i=1,6 do
			d.set_unique("door"..i, d.spawn_mob_ac_dir(BLOCK_DOOR, setting.doors_pos[i][1], setting.doors_pos[i][2],setting.doors_dir[i]))
		end
		for i=1,6 do
			d.set_unique("idoor"..i, d.spawn_mob_ac_dir(IN_DOOR, setting.idoors_pos[i][1], setting.idoors_pos[i][2],setting.idoors_dir[i]))
		end
		d.setf("clear_count",0)
		d.setf("started",0)
		d.setf("dungeon_enter",0) -- Á¤»óŔűŔ¸·Î ŔÔŔĺÇß´ÂÁö? // şńÁ¤»ó : 0 Á¤»ó : 1 // ƨ±â¸é ŔÔŔĺÁ¦ÇѽðŁŔ» ±â·Ď ľČÇÔ
	end	
	function go_boss() -- ş¸˝ş·ë °ˇ±â 
		local setting = flame_dungeon.setting()
		if pc.get_level() < 104 then --·ąş§Č®ŔÎ
            -- syschat(gameforge.flame_dungeon._580_notice)
            say(gameforge.flame_dungeon._580_notice)
            return
		else
			if pc.getf("main_quest_flame_lv103", "__status")==main_quest_flame_lv103.__COMPLETE__ then -- Ľ±ÇŕÄů˝şĆ® Č®ŔÎ
				-- say_title(gameforge.flame_dungeon._010_say)
                say(gameforge.flame_dungeon._010_say)
				local warp = select(gameforge.flame_dungeon._020_select,gameforge.flame_dungeon._030_select)
				if warp == 1 then
					d.setf("level",17)
					d.jump_all(setting.bossroom_entry_pos[1],setting.bossroom_entry_pos[2])
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_fild_boss.txt")
				--	d.spawn_mob(DUNGEON_MAN,setting.DUNGEON_MAN_bpos[1],setting.DUNGEON_MAN_bpos[2])
					d.spawn_mob(FINAL_BOSS,setting.boss_pos[1],setting.boss_pos[2])
				end
			else 
                -- syschat(gameforge.flame_dungeon._040_notice)
                say(gameforge.flame_dungeon._040_notice)
                return
			end
		end
	end
	function level_clear() -- ·ąş§ ˛ŁŔ»¶§, ¸®Á¨Ĺ¬¸®ľî, ÁöżŞĹ¬¸®ľî
		d.setf("level",0)
		d.clear_regen()
		d.purge_area(750000,620000,817400,689400) -- ¸ĘŔüĂĽ -- d.purge() »çżë°í·Á
	end
	function clear_timer(inx) -- ŸŔĚ¸Ó ´ŮÁöżě±â
		clear_server_timer ("flame_dungeon_0m_left_timer", inx)
		clear_server_timer ("flame_dungeon_1m_left_timer", inx)
		clear_server_timer ("flame_dungeon_5m_left_timer", inx)
		clear_server_timer ("flame_dungeon_10m_left_timer", inx)
		clear_server_timer ("flame_dungeon_15m_left_timer", inx)
		clear_server_timer ("flame_dungeon_30m_left_timer", inx)
		clear_server_timer ("flame_dungeon_45m_left_timer", inx)
		clear_server_timer ("killed_A_1", inx)
		clear_server_timer ("killed_A_2", inx)
		clear_server_timer ("flame_dungeon_ticket_remove", inx)	
	end
	
		when login begin
			local idx = pc.get_map_index()
			local setting = flame_dungeon.setting()
			if idx == DUNGEON_MAP_INDEX then
				pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			elseif flame_dungeon.is_flamed(idx) then -- ´řŔü ŔÔŔĺ, ş¸˝ş·ë ŔÔŔĺ żążÜ
			------------------------------------------------------------------------------------------------------------------------------------------------------
			--ľĆ·ˇŔÇ µÎÁŮÁß Ŕ§żˇÁŮŔ» »çżëÇĎ¸é ´řŔüżˇĽ­ Áľ·áÇßŔ»°ćżě ´Ů˝Ă żř·ˇ Ŕ§Äˇ·Î µąľĆżÂ´Ů. ľĆ·ˇÁŮŔ» ȰĽşČ­ ÇĎ¸é ´řŔüżˇĽ­ Áľ·áÇßŔ» °ćżě ´řŔü ąŰŔ¸·Î łŞ°ˇ°Ô µČ´Ů.
			--´řŔüżˇĽ­ Áľ·áÇßŔ» °ćżě ´Ů˝Ă żř·ˇ Ŕ§Äˇ·Î µąľĆżĂ °ćżě, ´řŔüżˇĽ­ łŞ°ˇ´Â ąćąýŔ» ¸¸µéľîÁŕľß Çϱ⠶§ą®żˇ Ŕű·ćĽşşńŔÇ łŞ°ˇ±â¶ő żÉĽÇŔ» ȰĽşČ­ ÇŘÁŕľß ÇŃ´Ů.
			------------------------------------------------------------------------------------------------------------------------------------------------------
				-- pc.set_warp_location(0, 0 , 0) --ƨ°ĺŔ»¶§ ´Ů˝Ă µąľĆżŔ°Ô ¸¸µéľî ÁÖ´Â şÎşĐ
				pc.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) -- ´řŔü łŞ°¬Ŕ» ¶§ ąŰŔ¸·Î ƨ±â°ÔÇÔ
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				if d.getf("dungeon_enter") == 0 then -- ÁřÇŕÁßŔĚ ľĆ´Ď¸é
					local canPass = false
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							canPass = true
							break
						end
					end

					if get_global_time() - pc.getf("flame_dungeon","exit_time") < ENTER_LIMIT_TIME * 60 then -- ŔÔŔĺÁ¦ÇѽðŁŔĚ °É·ČŔ¸¸é
						notice_multiline(gameforge.flame_dungeon._050_notice,d.notice)
						say(gameforge.flame_dungeon._060_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif not canPass then
						notice_multiline(gameforge.flame_dungeon._070_notice,d.notice)
						say(gameforge.flame_dungeon._080_say)
						timer("flame_dungeon_warp_timer", 5)
					elseif pc.get_level() < 100 then
						notice_multiline(gameforge.flame_dungeon._090_notice,d.notice)
						say(gameforge.flame_dungeon._100_say)
						timer("flame_dungeon_warp_timer", 5)
					end
				elseif pc.getf("flame_dungeon","ticket_delete") == 0 then -- ÁřÇŕÁßŔεĄ ĆĽÄĎŔĚ ľČÁöżöÁłŔ»°ćżě
					
					for i=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[i]) >= ticketGroup[i+1] then
							pc.remove_item(ticketGroup[i], ticketGroup[i+1])
							break
						end
					end
					pc.setf("flame_dungeon","ticket_delete",1)
				end
			else
				pc.setf("flame_dungeon","ticket_delete",0)
			end
		end
		when flame_dungeon_warp_timer.timer begin
			local setting = flame_dungeon.setting()
			pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
		end
		when logout begin
			local idx = pc.get_map_index()
			if flame_dungeon.is_flamed(idx) then 
				if d.getf("dungeon_enter") == 1 then -- Á¤»óŔűŔÎ ´řŔü ŔÔŔĺ ČÄ ·Î±×ľĆżô
					pc.setf("flame_dungeon","exit_time",get_global_time()) -- ŔνşĹĎ˝ş ľČżˇĽ­ŔÇ ¸¶Áö¸· ˝Ă°ŁŔ» ±â·Ď, ±ŮµĄ ˝Ă°ŁÁ¦ÇŃ ¶§ą®żˇ or ±×łÉ ƨ±ä°Ĺ¸é ľČ±â·Ď
				end
				

			end
		end
		when ENTRY_MAN.chat.gameforge.flame_dungeon._110_npcChat begin
		
			local setting = flame_dungeon.setting()
			if party.is_party() then
				-- ´řŔü µµÁß łŞ°Ą °ćżě ŔçŔÔŔĺ °ˇ´ÉÇϵµ·Ď
				local party_check = 0
				if d.find(party.getf("dungeon_index")) then
					party_check = (d.getf_from_map_index("party_leader_pid", party.getf("dungeon_index")) == party.get_leader_pid())
				end
				
				if d.find(party.getf("dungeon_index")) and party_check then
					if get_global_time() - pc.getf("flame_dungeon","exit_time") < 5 * 60 then -- Á˘Áľ ŔĚČÄ 5şĐ ł»?
						local dungeon_level = d.getf_from_map_index("level", party.getf("dungeon_index"))
						if dungeon_level == 17 then -- ş¸˝ş
							pc.warp(setting.bossroom_entry_pos[1] * 100, setting.bossroom_entry_pos[2] * 100, party.getf("dungeon_index"))
						else
							pc.warp(setting.dungeon_entry_pos[1] * 100, setting.dungeon_entry_pos[2] * 100, party.getf("dungeon_index"))
						end
					else -- 5şĐ ĂʰúÇĎż© Ŕç ŔÔŔĺ şŇ°ˇ
						say_title(mob_name(ENTRY_MAN))
                        say(gameforge.flame_dungeon._590_say)
					end
				else
					local pids = {party.get_member_pids()}
					local noTicketMembers = {}
					local notEnoughLevelMembers = {}
					local ticketCheck = true
					local levelCheck = true
					local ticketGroup = {get_special_item_group (TICKET_GROUP)}
					for i, pid in next, pids, nil do
						q.begin_other_pc_block(pid)
						local canPass = false
						for idx=1, table.getn(ticketGroup),2 do 
							if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
								canPass = true
								break
							end
						end
						
						if not canPass then
							table.insert(noTicketMembers, pc.get_name())
							ticketCheck = false
						end
						if pc.level < LEVEL_CUT then
							table.insert(notEnoughLevelMembers, pc.get_name())
							levelCheck = false
						end
						q.end_other_pc_block()
					end

					if not ticketCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._610_say)
						for i, name in next, noTicketMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						if levelCheck then
							return
						else
							wait()
						end
					end

					if not levelCheck then
						say_title(mob_name(ENTRY_MAN))
						say(gameforge.flame_dungeon._630_say)
						for i, name in next, notEnoughLevelMembers, nil do
							say(color(1,1,0), "    "..name)
						end
						return
					end

					if party.is_leader() then
						say(gameforge.flame_dungeon._120_say)
						local warp = select(gameforge.flame_dungeon._130_select,gameforge.flame_dungeon._140_select)
						if warp == 1 then
							if party.is_map_member_flag_lt("exit_time", get_global_time() - ENTER_LIMIT_TIME * 60 ) then
								flame_dungeon.make_dungeon()
							else
								--say("test : ĆÄĆĽżřŔÇ ŔÔŔĺ Á¦ÇѽðŁŔĚ łˇłŞÁö ľĘľŇ˝Ŕ´Ď´Ů.")
								say(gameforge.flame_dungeon._600_say)
							end
						end
						
						party.setf("flame_dungeon_boss_kill_count", 0)
						
					else
						say(gameforge.flame_dungeon._150_say)
					end
				end
			else
				say(gameforge.flame_dungeon._160_say)
			end
		end
		-- when ENTRY_MAN.chat."Test : ¸®ĽŇ˝şČ®ŔÎ" with is_test_server() begin -- Ĺ×˝şĆ®żë
			-- local setting = flame_dungeon.setting()
			-- pc.setf("flame_dungeon","fdRtest",1)
			-- pc.warp( setting.dungeon_entry_pos[1]*100, setting.dungeon_entry_pos[2]*100, DUNGEON_MAP_INDEX)
		-- end
		
		
		when ENTRY_MAN.chat."TEST : Init time limit init" with is_test_server() begin -- Ĺ×˝şĆ®żë
			pc.setf("flame_dungeon","exit_time",get_global_time()-1800)
			say("Done")
		end
		-- when DUNGEON_MAN.chat."Test : ÇöŔç »óĹÂ" with is_test_server() begin -- Ĺ×˝şĆ®żë
			-- say("ł˛Ŕş ¸ó˝şĹÍ : "..d.count_monster())
			-- say("level : "..d.getf("level"))
			-- say("Dmap index : "..d.get_map_index())
			-- say("Pmap index : "..pc.get_map_index())
			-- say("access limit : "..pc.getf("flame_dungeon","exit_time"))
			-- say("global time : "..get_global_time())
			-- if flame_dungeon.is_flamed(d.get_map_index()) then
				-- say("in dungeon") -- is_flamed ÇÔĽö ĂĽĹ©
			-- end
			-- if d.is_unique_dead("stone1") then
				-- say("stone1 is dead")
			-- else
				-- say("stone1 is not dead")
			-- end
		-- end
		-- when DUNGEON_MAN.chat."ĂłŔ˝Ŕ¸·Î" begin -- Ĺ×˝şĆ®żë
			-- say("ĂʱâČ­ ÇŐ´Ď´Ů")
			-- flame_dungeon.clear_timer(d.get_map_index())
			-- flame_dungeon.make_dungeon()
		-- end
		when DUNGEON_MAN.chat."Test : Boss Room" with is_test_server() begin -- Ĺ×˝şĆ®żë
			flame_dungeon.go_boss()
		end
		
		-- < ˝Ă°Ł °ć°ú ŸŔ̸Ó>
		-- when DUNGEON_MAN.chat."łŞ°ˇ±â" begin -- ´řŔüżˇĽ­ ƨ±âÁö ľĘ°Ô ÇŇ °ćżě ȰĽşČ­
			-- local setting = flame_dungeon.setting()
			-- say("ąŰŔ¸·Î łŞ°ˇ˝Ă°Ú˝Ŕ´Ď±î?")
			-- local warp = select("Č®ŔÎ","ĂëĽŇ")
			-- if warp == 1 then
				-- pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
			-- end
		-- end
		when flame_dungeon_45m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 45),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_30m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_30m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 30),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_15m_left_timer', 15*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_15m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 15),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_5m_left_timer', 10*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_5m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 5),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer('flame_dungeon_1m_left_timer', 4*60, get_server_timer_arg())
			end
		end
		when flame_dungeon_1m_left_timer.server_timer begin
			if d.select(get_server_timer_arg()) then
				notice_multiline(string.format(gameforge.flame_dungeon._180_notice, 1),d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				server_timer ("flame_dungeon_0m_left_timer", 60, get_server_timer_arg())
			end
		end
		when flame_dungeon_0m_left_timer.server_timer begin
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then		
				notice_multiline(gameforge.flame_dungeon._190_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._200_notice,d.notice)
				server_timer("dungeon_end_timer",10,d.get_map_index())	
			end
		end	


		-- <<<< ´řŔü ÁřÇŕ>>>> --
		when DUNGEON_MAN.chat.gameforge.flame_dungeon._210_npcChat with npc.lock() begin -- '0x'´Â xąř° ·ąş§ Äů˝şĆ® ąŢŔ» Ľö ŔÖ´Â »óĹ , '1x'´Â xąř° ·ąş§ Äů˝şĆ® ÁřÇŕÁß
			local setting = flame_dungeon.setting()
			if d.getf("started") == 0 then
				say(gameforge.flame_dungeon._230_say)
				say(gameforge.flame_dungeon._240_say)
				wait()
				d.setf("started",1)
				-- ĆÄĆĽżřŔĚ Ć¨°Üąö·Č´ÂµĄ Ŕڱ⸸ ł˛ľĆĽ­ exit timer°ˇ ¸®ĽÂµÇ¸é ľČµÇ´Ď±ń ´ŮŔ˝·ąş§Ŕ» ´­·¶Ŕ»¶§¸¦ ˝ĂŔŰÇҶ§·Î ş˝
				server_timer ("flame_dungeon_45m_left_timer",15*60, d.get_map_index())
				notice_multiline(gameforge.flame_dungeon._250_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._170_notice,d.notice)
				
				-- ĹëÇŕÁő °ü·ĂµČ Ăł¸®
				-- ŔÔŔĺ ČÄżˇ ĆĽÄĎŔ» ľřľŘ »ç¶÷Ŕ» ƨ°Üł»±â Ŕ§ÇŘĽ­ ŸŔ̸Ӹ¦ ŔĚżëÇŘ ĆĽÄĎŔ» Á¦°ĹÇŃ´Ů.
				local pids = {party.get_member_pids()}
				local ticketGroup = {get_special_item_group (TICKET_GROUP)}
				for i, pid in next, pids, nil do
					q.begin_other_pc_block(pid)
					local canPass = false
					for idx=1, table.getn(ticketGroup),2 do 
						if pc.count_item(ticketGroup[idx]) >= ticketGroup[idx+1] then
							canPass = true
							pc.remove_item(ticketGroup[idx], ticketGroup[idx+1])
							break
						end
					end
					
					if not canPass then
						pc.warp(setting.outside_entry_pos[1]*100, setting.outside_entry_pos[2] * 100, ENTRY_MAP_INDEX)
					end
					q.end_other_pc_block()
				end
				d.setqf2("flame_dungeon","ticket_delete",1)
				d.setf("dungeon_enter",1)
				
				-- ´řŔü°ú ĆÄĆĽżˇ Ľ­·Îżˇ ´ëÇŃ Á¤ş¸¸¦ ŔúŔĺÇŃ´Ů.
				party.setf("dungeon_index", d.get_map_index())
				d.setf("party_leader_pid", party.get_leader_pid())
			end
			if d.getf("level") < 7 then --ÁřÇŕÁßŔĚ ľĆ´Ď¸é
				if d.getf("clear_count") == 6 then -- ąć ż©Ľ¸°ł ÇßŔ¸¸é ş¸˝şąć
					d.setf("level",7)
				else
					local rand = number(1,6)--·Ł´ýżˇĽ­ ąćą®ĂĽĹ©´Â µű·Î ąčż­ľřŔĚ ąćŔÇ ą®ŔÇ ż­·ÁŔÖ´ÂÁö·Î ĂĽĹ©ÇÔ
					local setlev = 0
					d.setf("level",7) -- Ȥ˝Ă ¸đ¸¦ ą®Á¦°ˇ »ý°Ü ·ąş§ŔĚ ľČŔâČú°ćżě¸¦ ´ëşńÇŘ ş¸˝ş·ëŔ¸·Î ĽÂĆĂÇصŇ
					for i=1,50 do
						setlev = setlev + 1
						if setlev > 6 then
							setlev = 1
						end
						if not d.is_unique_dead("door"..setlev) then
							rand = rand - 1
							if rand == 0 then
								d.setf("level",setlev)
								d.setf("clear_count",d.getf("clear_count")+1)
								break
							end	
						end
					end
				end
			end
				if d.getf("level") == 1 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door1")
					d.kill_unique("idoor1")
					d.setf("level",11)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_a.txt")
						
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 11 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle .. d.count_monster())
				elseif d.getf("level") == 2 then
						say(gameforge.flame_dungeon._290_say)
						say(gameforge.flame_dungeon._300_say)
						notice_multiline(gameforge.flame_dungeon._290_say,d.notice)
						notice_multiline(gameforge.flame_dungeon._300_say,d.notice)
						d.spawn_mob(LEVEL2_STONE, setting.LEVEL2_STONE_pos[1], setting.LEVEL2_STONE_pos[2]) -- şŔŔÎĽ® ĽŇČŻ
						d.kill_unique("door2")
						d.kill_unique("idoor2")
						d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_b.txt")
						d.setf("level",12)
				elseif d.getf("level") == 12 then
					say(gameforge.flame_dungeon._310_say)
				elseif d.getf("level") == 3 then
					say(gameforge.flame_dungeon._260_say)
					notice_multiline(gameforge.flame_dungeon._260_say,d.notice)
					d.kill_unique("door3")
					d.kill_unique("idoor3")
					d.setf("level",13)
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_c.txt")
					server_timer ("killed_A_1", 12, d.get_map_index())
				elseif d.getf("level") == 13 then
					say(gameforge.flame_dungeon._270_say)
					say_title(gameforge.flame_dungeon._280_sayTitle..d.count_monster())
				elseif d.getf("level") == 4 then -- 474 178
					say(gameforge.flame_dungeon._320_notice)
					notice_multiline(gameforge.flame_dungeon._320_notice,d.notice)
					d.setf("level",14)
					d.kill_unique("door4")
					d.kill_unique("idoor4")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_d.txt")
					d.spawn_mob(LEVEL4_TARGET,setting.LEVEL4_TARGET_pos[1],setting.LEVEL4_TARGET_pos[2] ) -- Ÿ°Ů¸ó˝şĹÍ ĽŇÇŃ
				elseif d.getf("level") == 14 then
					say(gameforge.flame_dungeon._330_say)
					say(gameforge.flame_dungeon._340_say)
				elseif d.getf("level") == 5 then -- 510 355
					say(gameforge.flame_dungeon._350_say)
					say(gameforge.flame_dungeon._360_say)
					notice_multiline(gameforge.flame_dungeon._350_say,d.notice)
					notice_multiline(gameforge.flame_dungeon._360_say,d.notice)
					d.kill_unique("door5")
					d.kill_unique("idoor5")
					d.setf("level",15)
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					local vis = { 0,0,0,0,0,0,0}
					for i=1,7 do
						vis[i] = 0
					end
					for i = 1, 7 do -- ·Ł´ýÇĎ°Ô µąĽŇČŻ
						local ran = number(1,7)
						local st = 0
						for j = 1, 50 do
							st = st + 1
							if st > 7 then
								st = 1
							end
							if vis[st] == 0 then
								ran = ran - 1
								if ran == 0 then
									vis[st] = 1
									d.set_unique("stone5_"..st, d.spawn_mob(LEVEL5_STONE, setting.LEVEL5_STONE_pos[i][1], setting.LEVEL5_STONE_pos[i][2]))
									break
								end
							end
						end
					end  
				elseif d.getf("level") == 15 then
					say(gameforge.flame_dungeon._370_say)
				elseif d.getf("level") == 6 then -- 507 490
					say(gameforge.flame_dungeon._380_say) 
					notice_multiline(gameforge.flame_dungeon._380_say,d.notice)
					d.setf("level",16)
					d.kill_unique("door6")
					d.kill_unique("idoor6")
					d.set_regen_file (MOB_REGEN_FILE_PATH.."fd_f.txt")
					d.spawn_mob(LEVEL6_TARGET, setting.LEVEL6_TARGET_pos[1],setting.LEVEL6_TARGET_pos[2]) -- Ÿ°ŮżŔşęÁ§Ć® ĽŇČŻ
				elseif d.getf("level") == 16 then
					say(gameforge.flame_dungeon._390_say)
					say(gameforge.flame_dungeon._400_say)
				elseif d.getf("level") == 7 then
					-- setskin(NOWINDOW)
                    flame_dungeon.go_boss()
				else
					say(gameforge.flame_dungeon._410_say)
				end
			npc.unlock()		
		end
	


		when dungeon_end_timer.server_timer begin -- Áľ·á ŸŔĚ¸Ó (łˇłŞ°í łŞ°ˇ´Â°Ĺ)
			local setting = flame_dungeon.setting()
			if d.select(get_server_timer_arg()) then
				flame_dungeon.clear_timer(d.get_map_index())		
				d.set_warp_location(ENTRY_MAP_INDEX, setting.outside_entry_pos[1] , setting.outside_entry_pos[2]) 
				d.exit_all()
				d.setf("party_leader_pid", 0)
			end
		end

		when killed_A_1.server_timer begin -- ŸŔĚ¸Ó µą¸®±â1 (level1,level3)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1·ąş§ ¸ó˝şĹÍ Ŕü¸ę˝Ă
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_2", 6, get_server_timer_arg())
				end
			end
		end
		when killed_A_2.server_timer begin -- ŸŔĚ¸Ó µą¸®±â2 (1°ú 2 ąř°ĄľĆ°ˇ¸éĽ­ µąľĆ°¨)
			if d.select(get_server_timer_arg()) then
				if d.count_monster() <= 0 then -- 1·ąş§ ¸ó˝şĹÍ Ŕü¸ę˝Ă
					if d.getf("level") == 11 then
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					else
						notice_multiline(gameforge.flame_dungeon._420_notice,d.notice)
						notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					end
					d.setf("level",0)
				else 
					server_timer ("killed_A_1", 6, get_server_timer_arg())
				end
			end
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 12 begin -- 2·ąş§ şŔŔÎĽ® ż­Ľč µĺ¶ř
			local i = number(1, 100) -- 100şĐŔÇ 1 Č®·ü·Î ż­Ľčµĺ¶ř
			if i == 1 then
				game.drop_item (LEVEL2_KEY, 1)
			end
		end
		when LEVEL2_STONE.take with flame_dungeon.is_flamed(pc.get_map_index()) and item.vnum == LEVEL2_KEY and d.getf("level") == 12 begin -- 2·ąş§ ż­Ľč ¸ÔľúŔ»¶§
			local i = number(1, 5) -- 5şĐŔÇ 1 Č®·ü·Î ÁřÂĄ ż­Ľč
			if i == 1 then
				npc.purge()
				item.remove()
				notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
				notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
				flame_dungeon.level_clear()
			else
				item.remove()
				say(gameforge.flame_dungeon._450_say)
			end
		end

		when LEVEL4_TARGET.kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 14 begin
			notice_multiline(gameforge.flame_dungeon._460_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when kill with flame_dungeon.is_flamed(pc.get_map_index()) and d.getf("level") == 15 begin -- 5·ąş§ şŔŔÎĽ® ż­Ľč µĺ¶ř
			local i = number(1, 30) -- 30şĐŔÇ 1 Č®·ü·Î ż­Ľčµĺ¶ř
			if i == 1 then
				game.drop_item (LEVEL5_REALKEY, 1)
			end
		end
		when LEVEL5_STONE.take with flame_dungeon.is_flamed(d.get_map_index()) and item.vnum == LEVEL5_REALKEY and d.getf("level") == 15 begin -- 5·ąş§ ÁřÂĄż­Ľč ¸ÔľúŔ»¶§
			local setting = flame_dungeon.setting()
			if npc.get_vid() == d.get_unique_vid("stone5_1") then -- Ăąąř° ˛¨´Â Ľ±ÇŕµÇľîľß ÇŇ ŔĎŔĚ ÇĘżäľřŔ¸´Ď ĂŁŔÚ¸¶ŔÚ Á¦°ĹÇŘÁÜ
				npc.purge()
				item.remove()
				say(gameforge.flame_dungeon._470_say)
				d.setf("stonekill",2) -- 2ąř µąŔ» Á׿©¶ó
				if d.count_monster() < LEVEL5_GEN_LIMIT then
					d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_2") then 
				if d.getf("stonekill") == 2 then -- 2ąřµąŔ» Á×ŔĎ Â÷·ËµĄ 2ąřµążˇ°Ô ż­Ľč¸¦ ¸Ôż´Ŕ» ¶§
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._480_say)
					d.setf("stonekill",3)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("2ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_3") then
				if d.getf("stonekill") == 3 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._500_say)
					d.setf("stonekill",4)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("3ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_4") then
				if d.getf("stonekill") == 4 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._510_say)
					d.setf("stonekill",5)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
				--	say("4ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_5") then
				if d.getf("stonekill") == 5 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._520_say)
					d.setf("stonekill",6)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("5ąř")
				end
			elseif npc.get_vid() == d.get_unique_vid("stone5_6") then
				if d.getf("stonekill") == 6 then
					npc.purge()
					item.remove()
					say(gameforge.flame_dungeon._530_say)
					d.setf("stonekill",7)
					if d.count_monster() < LEVEL5_GEN_LIMIT then
						d.regen_file (MOB_REGEN_FILE_PATH.."fd_e.txt")
					end
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("6ąř")
				end
			else 
				if d.getf("stonekill") == 7 then
					npc.purge()
					item.remove()
					notice_multiline(gameforge.flame_dungeon._440_notice,d.notice)
					notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
					flame_dungeon.level_clear()
				else
					item.remove()
					say(gameforge.flame_dungeon._490_say)
			--		say("7ąř")
				end
			end
		end

		when LEVEL6_TARGET.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==16 begin -- ¸Á¸¶Ľ® Ćı«ÇßŔ» ¶§
			notice_multiline(gameforge.flame_dungeon._540_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._430_notice,d.notice)
			flame_dungeon.level_clear()
		end

		when FINAL_BOSS.kill with flame_dungeon.is_flamed(d.get_map_index()) and d.getf("level") ==17 begin -- ş¸˝ş Á׿´Ŕ»¶§
			notice_multiline(gameforge.flame_dungeon._550_notice,d.notice)
			notice_multiline(gameforge.flame_dungeon._560_notice,d.notice)
			server_timer("dungeon_end_timer", 60,d.get_map_index())	
			flame_dungeon.level_clear()
			
			-- ĆÄĆĽżř Áß, ľß¸¶Ăµ Ŕâ´Â Äů˝şĆ®(104·ľ, 105·ľ Äů˝şĆ®) ÁřÇŕÁßŔÎ »ç¶÷ŔĚ ŔÖŔ¸¸é Äů˝şĆ® Ŭ¸®ľî µÇµµ·Ď.
			if party.is_party() then
				party.setf("flame_dungeon_boss_kill_count", 1)
			end
			
		end
	end
end
 

 

 

0LsM05U.png

Opublikowano

Define działa też na starszym game?

Strasznie nurtuje mnie to pytanie, a nie chcę zmieniac game, bo korzystam z source.

pre_1405084226__sygnatura_3.png

Opublikowano

Define działa też na starszym game?

Strasznie nurtuje mnie to pytanie, a nie chcę zmieniac game, bo korzystam z source.

 

Source przecież jest to 40k+ więc o co chodzi ?

 

Queścik się przyda :D

da5e9f82fbb05240438e374847f4a6f9.gif

Opublikowano

 

Source przecież jest to 40k+ więc o co chodzi ?

 

Queścik się przyda :D

 

 

Nie zrozumiałeś mnie.

"Czy opcja DEFINE działa też na starszym game?"

pre_1405084226__sygnatura_3.png

Opublikowano

Nie zrozumiałeś mnie.

"Czy opcja DEFINE działa też na starszym game?"

 

No jak Cię nie zrozumiałem o.O ?

 

 

Define działa też na starszym game?

Strasznie nurtuje mnie to pytanie, a nie chcę zmieniac game, bo korzystam z source.

 

Pytasz się czy działa na starszym game, nie chcesz go zmieniać, bo korzystasz z source. No jeżeli nie chcesz zmieniać, bo masz game skompilowane z source to i tak zadziała, bo to 40k + o.O ?

 

@topic

 

Nie wiem, coś tam xD

da5e9f82fbb05240438e374847f4a6f9.gif

Opublikowano

 

No jak Cię nie zrozumiałem o.O ?

 

 

 

Pytasz się czy działa na starszym game, nie chcesz go zmieniać, bo korzystasz z source. No jeżeli nie chcesz zmieniać, bo masz game skompilowane z source to i tak zadziała, bo to 40k + o.O ?

 

@topic

 

Nie wiem, coś tam xD

 

 

Dobra, teraz zadam pytanie na Twoim poziomie, widocznie nie zrozumiałeś mnie ponownie.

Czy funkcje DEFINE zadziała też na game 2089?

pre_1405084226__sygnatura_3.png

Opublikowano

Dobra, teraz zadam pytanie na Twoim poziomie, widocznie nie zrozumiałeś mnie ponownie.

Czy funkcje DEFINE zadziała też na game 2089?

 

Sprawdź i nam ogłoś rezultat bo osobiście nie sprawdzałem tego i nie jestem w stanie Ci pomóc ponieważ aktualnie nie posiadam serwera.

0LsM05U.png

  • 2 miesiące temu...

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...