quest arena_manager begin state start begin when 20017.chat.gameforge.arena_manager._10_npcChat begin if game.get_event_flag("arena_close") > 0 then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._30_say) return end if not npc.lock() then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._40_say) return end local useMinLevel = game.get_event_flag("arena_use_min_level") if useMinLevel == 0 then useMinLevel = 25 ; end if pc.get_level() < useMinLevel then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._50_say, useMinLevel)) npc.unlock() return else say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._60_say) local sname = input() if sname == "" then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._70_say) npc.unlock() return else say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._80_say, pc.name, sname)) wait("") local opp_vid = find_pc_by_name(sname) if opp_vid == 0 then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._90_say, sname)) npc.unlock() return elseif opp_vid == pc.get_vid() then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._100_say) npc.unlock() return end local old = pc. select(opp_vid , opp_vid ) local opp_level = pc.get_level() pc. select(old , old ) if opp_level < useMinLevel then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._110_say, useMinLevel)) npc.unlock() return end if not npc.is_near_vid(opp_vid, 10) then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._120_say, sname)) npc.unlock() return ; end local a = arena.is_in_arena(opp_vid) if a == 0 then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._130_say, sname)) npc.unlock() return ; end say_title(gameforge.arena_manager._140_sayTitle) say(string.format(gameforge.arena_manager._85_say, pc.name, sname)) local agree = confirm(opp_vid, string.format(gameforge.arena_manager._87_say, sname, pc.name), 30) if agree!= CONFIRM_OK then say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._150_say, sname)) npc.unlock() return end s = arena.start_duel(sname, 3) if s == 0 then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._160_say) elseif s == 2 then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._170_say) elseif s == 3 then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._180_say) end end end npc.unlock() end when 20017.chat.gameforge.arena_manager._190_npcChat begin local g = arena.get_duel_list() local arena_name = {} local arena_observer = {} table.foreachi(g, function(n, p) arena_name[n] = string.format(gameforge.arena_manager._195_say, p[1], p[2]) arena_observer[n] = { p[3], p[4], p[5] } end ) table.insert(arena_name, gameforge.arena_manager._200_tableInsert) table.insert(arena_observer, 0) local count = table.getn(g) if count == 0 then say_title(gameforge.arena_manager._20_sayTitle) say(gameforge.arena_manager._210_say) return ; else say_title(gameforge.arena_manager._20_sayTitle) say(string.format(gameforge.arena_manager._220_say, count)) wait() end if table.getn(g)!= 0 then local s = select_table(arena_name) if table.getn(arena_observer) == s then return ; end if table.getn(arena_observer) >= s then arena.add_observer(arena_observer[s][1], arena_observer[s][2], arena_observer[s][3]) end end end end end