forked from metin2/server
150 lines
4.1 KiB
Plaintext
150 lines
4.1 KiB
Plaintext
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
|
|
|
|
|