forked from metin2/server
1
0
Fork 0
server/gamefiles/locale/english/quest/arena_manager.quest

150 lines
4.1 KiB
Plaintext
Raw Normal View History

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