魔力宝贝

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

[GP] King_Rank.lua--王国竞技场

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
--[[奖励设定
1: 2万声望,水蓝鼠奖章500枚礼包,竞技铜币50枚
2~3: 1万声,水蓝鼠奖章300枚望礼包,竞技铜币30枚
4~5: 5000声望,水蓝鼠奖章200枚礼包,竞技铜币20枚
6~10: 3000声望,水蓝鼠奖章100枚礼包,竞技铜币10枚
11~30: 2000声望,水蓝鼠奖章50枚礼包,竞技铜币5枚
31~50: 1000声望,水蓝鼠奖章30枚礼包,竞技铜币3枚
51~100: 500声望,水蓝鼠奖章10枚礼包,竞技铜币1枚
101~300: 100声望,参与奖

--]]
local prize_item1=91001
local prize_item2=91002
local prize_item3=91003
local prize_item4=91004
local prize_item5=91005
local prize_item6=91006
local prize_item7=91007
local prize_item8=91008

local NPC_mate_rmbitem=79500--填写阿尔卡迪亚金币(点券)道具编号


----------------------------------------
local NPC_mate_playernum=NLG.GetOnLinePlayer(1)--获取--填当前服务器CF设置的最大在线人数

Global_Reg.RegInit("King_Rank_set");--自动启动函数
Global_Reg.RegLoginEvent ("M_Arena_login")--玩家登录
Global_Reg.RegLogoutEvent ("M_Arena_logout")--玩家登出

bank_num_tab = bank_num_tab or {}
luamap_tab=luamap_tab or {}
local M_Arena_ranktab=M_Arena_ranktab or {} --rank排名表
local M_Arena_ran_nl_tab=M_Arena_ran_nl_tab or {}--rank排行对象能力中继表
M_Arena_ran_nl_tab2=M_Arena_ran_nl_tab2 or {}--rank排行对象具体能力表,全局表,给佣兵脚本使用
M_Arena_rank_save = M_Arena_rank_save or {}
NPC_mate_map_teamlong = NPC_mate_map_teamlong or {}

local time_save_tab=time_save_tab or {}
local luamap_info_tab = luamap_info_tab or {}--记录开服以来所有创建的特殊战斗地图


M_Arena_rank_give_item = M_Arena_rank_give_item or {}--存奖励用表

if tablength(M_Arena_give_Award_safe)==0 then
        for i=1,366 do
                M_Arena_give_Award_safe[i]=0
        end
end
----------------------------------------
--职业名
local M_Arena_JobName = {}
M_Arena_JobName[-1] = "游民"
M_Arena_JobName[0] = "游民"
M_Arena_JobName[10] = "剑士"
M_Arena_JobName[20] = "战斧斗士"
M_Arena_JobName[30] = "骑士"
M_Arena_JobName[40] = "弓箭手"
M_Arena_JobName[50] = "士兵"
M_Arena_JobName[60] = "传教士"
M_Arena_JobName[70] = "魔术师"
M_Arena_JobName[80] = "咒术师"
M_Arena_JobName[90] = "封印师"
M_Arena_JobName[100] = "饲养员"
M_Arena_JobName[110] = "驯兽师"
M_Arena_JobName[120] = "盗贼"
M_Arena_JobName[130] = "巫师"
M_Arena_JobName[140] = "格斗士"
M_Arena_JobName[150] = "忍者"
M_Arena_JobName[160] = "舞者"
M_Arena_JobName[170] = "竞技士兵"
M_Arena_JobName[180] = "竞技舞者"
M_Arena_JobName[190] = "吟游诗人"
M_Arena_JobName[200] = "造剑师"
M_Arena_JobName[210] = "造斧师"
M_Arena_JobName[220] = "造枪师"
M_Arena_JobName[230] = "造弓师"
M_Arena_JobName[240] = "造杖师"
M_Arena_JobName[250] = "造回力师"
M_Arena_JobName[260] = "造小刀师"
M_Arena_JobName[270] = "造头盔师"
M_Arena_JobName[280] = "造帽子师"
M_Arena_JobName[290] = "造铠师"
M_Arena_JobName[300] = "造衣服师"
M_Arena_JobName[310] = "造袍师"
M_Arena_JobName[320] = "造靴师"
M_Arena_JobName[330] = "造鞋子师"
M_Arena_JobName[340] = "造盾师"
M_Arena_JobName[350] = "厨师"
M_Arena_JobName[360] = "药剂师"
M_Arena_JobName[370] = "武器修理工"
M_Arena_JobName[380] = "防具修理工"
M_Arena_JobName[390] = "鉴定士"
M_Arena_JobName[400] = "刻印工"
M_Arena_JobName[410] = "侦探"
M_Arena_JobName[420] = "仙人"
M_Arena_JobName[430] = "护士"
M_Arena_JobName[440] = "医师"
M_Arena_JobName[450] = "伐木工"
M_Arena_JobName[460] = "猎人"
M_Arena_JobName[470] = "矿工"
M_Arena_JobName[480] = "炸弹师"
M_Arena_JobName[500] = "武器大师"
M_Arena_JobName[510] = "防具大师"
M_Arena_JobName[520] = "巧匠"
M_Arena_JobName[530] = "探险家"
M_Arena_JobName[540] = "佣兵"
M_Arena_JobName[690] = "管理员"
----------------------------------------
--虚拟玩家佣兵编号
local  M_Arena_Jobnum= {}
M_Arena_Jobnum[-1] = 5--"游民"
M_Arena_Jobnum[0] = 5--"游民"
M_Arena_Jobnum[10] = 6--"剑士"
M_Arena_Jobnum[20] = 7--"战斧斗士"
M_Arena_Jobnum[30] = 8--"骑士"
M_Arena_Jobnum[40] = 9--"弓箭手"
M_Arena_Jobnum[50] = 10--"士兵"
M_Arena_Jobnum[60] = 11--"传教士"
M_Arena_Jobnum[70] = 12--"魔术师"
M_Arena_Jobnum[80] = 13--"咒术师"
M_Arena_Jobnum[90] = 14--"封印师"
M_Arena_Jobnum[100] = 15--"饲养员"
M_Arena_Jobnum[110] = 16--"驯兽师"
M_Arena_Jobnum[120] = 17--"盗贼"
M_Arena_Jobnum[130] = 18--"巫师"
M_Arena_Jobnum[140] = 19--"格斗士"
M_Arena_Jobnum[150] = 20--"忍者"
M_Arena_Jobnum[160] = 21--"舞者"
M_Arena_Jobnum[170] = 22--"竞技士兵"
M_Arena_Jobnum[180] = 23--"竞技舞者"
M_Arena_Jobnum[190] = 24--"吟游诗人"
M_Arena_Jobnum[430] = 25--"护士"
M_Arena_Jobnum[440] = 26--"医师"
---------------***********************************************************---------------
local saveday = saveday or tonumber(os.date("%j"))
local save_start_time = os.time()-3600
---------------***********************************************************---------------
Global_Reg.RegInit("M_Arena_Script");--自动启动函数
Global_Reg.RegTalkEvent ("M_Arena_Script2");--玩家说话

function M_Arena_Script2(CharIndex, Msg, color, range, size,channeltype)
        if NLG.Get_Char_Date(CharIndex,145) > 0 then
                if Msg=="|时间测试2" then
                        M_Arena_item_send_Event()
                elseif Msg=="|发放奖励2" then--GM补发一次奖励
                        M_Arena_give_item()
                elseif Msg=="|恢复日常次数2" then--GM补发一次奖励       
                        for k,v in pairs(everyday_gift_num) do
                        everyday_gift_num[k]=10
                        end
                elseif Msg=="|查询mac" then
                        local mac=Mac["hua8978"]
                        local sl = 0
                        if login_job_tab[mac] then
                                sl=login_job_tab[mac]
                        end
                        NLG.SystemMessage(CharIndex,"他的的mac是"..Mac["hua8978"].."当前开了几个号:"..sl);--
                elseif Msg=="|删除限制" then
                        local mac=Mac["hua8978"]
                        login_job_tab[mac]=nil
                end
        end
        return 0
end


function M_Arena_Script()
        King_Rank_set_itemtab()
        M_Arena_item_send()
        return 0
end

function M_Arena_item_send(npc)
        if npc == nil then
                npc = NL.CreateNpc(nil,"M_Arena_item_send2")
        end
        Char.SetData(npc,%对象_形象%,100058)--NpcMetamo填写NPC的图档编号
        Char.SetData(npc,%对象_原形%,100058)--NpcMetamo填写NPC的图档编号
        Char.SetData(npc,%对象_地图%,777)----NpcMap填写生成NPC的地图编号
        Char.SetData(npc,%对象_X%,35)----NpcPosX填写生成NPC的地图中的X坐标
        Char.SetData(npc,%对象_Y%,41)----NpcPosY填写生成NPC的地图中的Y坐标
        Char.SetData(npc,%对象_方向%,4)----NpcDir填写NPC的方向,方向不正确图档显示会失败
        Char.SetData(npc,%对象_原名%,"排名奖励发放员")----NpcName填写想生成的NPC的名字,由于要填字符串,不要漏了""(双引号)
        NLG.UpChar(npc)
        LuaNpcIndex["M_Arena_item_send_init"]=npc;
        InstallNpc("M_Arena_item_send_init",npc);
        Char.SetLoopEvent(nil, "M_Arena_item_send_Event",npc,60000)--5分钟一次
        return true
end

function M_Arena_item_send2(index)
        return true;
end




function M_Arena_item_send_Event(npc)
        local day = tonumber(os.date("%j"))--一年的第几天
        local tam = tonumber(os.date("%H"))
        if day~=saveday and tam>=5 then
                for k,v in pairs(everyday_gift_num) do
                        everyday_gift_num[k]=10
                end
                saveday = day
        end
        if math.fmod(day,3)==0 and M_Arena_give_Award_safe[day]==0 then
                M_Arena_give_Award_safe[day]=1
                M_Arena_give_item()
        end
        return 0
end

--[[奖励设定
1: 2万声望礼包
2~3: 1万声望礼包
4~5: 5000声望礼包
6~10: 2000声望礼包
11~30: 1000声望礼包
31~50: 500声望礼包
51~100: 100声望礼包
101~300: 参与奖
--]]
function M_Arena_give_item()
        local query = "SELECT * FROM tab_MercenaryArenaRank "
        local tab = SQL.Run(query)
        if type(tab)=="table" then
                local long = ((tablength(tab)-2)/4) -1 --表长度为行数X列数 -2
                for i=0,long do
                        local rank = tonumber(tab[i.."_0"])
                        local cdk = tab[i.."_1"]
                        local rignum = tab[i.."_2"]
                        local tcdk = cdk..rignum
                        --NLG.SystemMessage(-1,"rank是"..rank.."对应账号是"..tcdk)
                        if rank==1 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item1)
                        elseif rank>=2 and rank<=3 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item2)
                        elseif rank>=4 and rank<=5 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item3)
                        elseif rank>=6 and rank<=10 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item4)
                        elseif rank>=11 and rank<=30 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item5)
                        elseif rank>=31 and rank<=50 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item6)
                        elseif rank>=51 and rank<=100 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item7)
                        elseif rank>=101 and rank<=300 then
                                M_Arena_give_item_help(tcdk,cdk,prize_item8)
                        end
                end
        end
end

function M_Arena_give_item_help(tcdk,cdk,prize_item_num)
        if M_Arena_rank_give_item[tcdk] then
                local long = tablength(M_Arena_rank_give_item[tcdk])
                if long<20 then
                        table.insert(M_Arena_rank_give_item[tcdk],prize_item_num)
                        local player=NLG.GetCharindexformuser(cdk);
                        if player>=0 then
                                NLG.SystemMessage(player,"[系统]:您获得了王国竞技场排行奖励,请点击右上角『管家小精灵』处领取")
                        end
                else
                        local player=NLG.GetCharindexformuser(cdk);
                        if player>=0 then
                                NLG.SystemMessage(player,"[系统]:您的『管家小精灵』仓库存满了东西,本次王国竞技场的奖励被小精灵丢入了虚空")
                        end
                end
        else
                M_Arena_rank_give_item[tcdk]={}
                table.insert(M_Arena_rank_give_item[tcdk],prize_item_num)
                local player=NLG.GetCharindexformuser(cdk);
                if player>=0 then
                        NLG.SystemMessage(player,"[系统]:您获得了王国竞技场排行奖励,请点击右上角『管家小精灵』处领取")
                end
        end
end
--[[移动银行窗口内的道具的反馈(反馈在_Data里面)
I|移动前栏位|移动后栏位|数量

I:道具前缀(item的缩写)
移动前栏位:100~119 (银行栏位1~20栏)
移动后栏位:8~27(玩家道具栏)
数量:移动过来的堆叠数量,如果非堆叠道具,反回-1

--]]
function Win_guanjia(fd,packet,player)--按下管家小精灵按钮,管家小精灵的道具都是不可堆叠的礼包
        local msg = "A"
        local CDK=Char.GetData(player,2002)
        local rignum=Char.GetData(player,48)
        local tcdk = CDK..rignum
        Char.SetData(player,%对象_银行页数%,0)
        NLG.UpChar(player,%对象_银行页数%)
        if M_Arena_rank_give_item[tcdk] then
                --[[local long1 = tablength(M_Arena_rank_give_item[tcdk])
                for i = long1, 1, -1 do
                        if M_Arena_rank_give_item[tcdk][i] == nil then
                                table.remove(M_Arena_rank_give_item[tcdk], i)
                        end
                end--]]
                local long = tablength(M_Arena_rank_give_item[tcdk])
                if long>20 then
                        long=20
                end
                if long~=0 then
                        for i=1,long do
                                local itemnum=M_Arena_rank_give_item[tcdk][i]
                                msg = msg..lua_itembank_msg(itemnum,0)
                        end
                else
                        msg = msg.."||||||"
                end
        else
                msg = msg.."||||||"
        end
        msg = msg.."|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||0"
        NLG.ShowWindowTalked(player,23,0,1000,msg,LuaNpcIndex.M_Arena_master_index)
        return 0
end

function lua_itembank_msg(itemid,duidie)--duidie:堆叠数,这里填0
        if duidie==nil then
                duidie="0"
        end
        local msg = "|"
        local iteminfo = Item.MakeItemStatusDateString(itemid)
        local newinfo = Split(iteminfo,"|")
        local name = newinfo[1]
        local itemmsg = newinfo[3]
        itemmsg = string.gsub(itemmsg,"\\S"," ")
        itemmsg = string.gsub(itemmsg,"\\\\","\\")
        local img = newinfo[4]
        msg = msg..img.."|"..duidie.."|0|"..name.."||"..itemmsg
        return msg
end

function M_Arena_login(CharIndex)
        local job = Char.GetData(CharIndex,51)
        if job~=540 then
                local CDK=Char.GetData(CharIndex,2002)
                local rignum=Char.GetData(CharIndex,48)
                local tcdk = CDK..rignum
                if M_Arena_rank_give_item[tcdk]==nil then
                        M_Arena_rank_give_item[tcdk]={}
                end
                if time_save_tab[tcdk] then
                        local yue,ri=get_now_time()
                        if ri>time_save_tab[tcdk][2] then
                                time_save_tab[tcdk]={yue,ri,5,5}
                        elseif yue>time_save_tab[tcdk][1] then
                                time_save_tab[tcdk]={yue,ri,5,5}
                        end
                else
                        local yue,ri=get_now_time()
                        time_save_tab[tcdk]={yue,ri,5,5}--{月份,日期,今日剩余挑战次数,今日可用点券购买的挑战次数}
                end
                local bank_num = Char.GetData(CharIndex,%对象_银行页数%)
                if bank_num<5 then
                        Char.SetData(CharIndex,%对象_银行页数%,4)
                        NLG.UpChar(CharIndex,%对象_银行页数%)
                end
                local CDK=Char.GetData(CharIndex,2002)
                local rignum=Char.GetData(CharIndex,48)
                local tcdk = CDK..rignum
                bank_num_tab[tcdk]=Char.GetData(CharIndex,%对象_银行页数%)
               
        end
        return 0
end

function M_Arena_logout(CharIndex)
        --print("\n\n\n"..Char.GetData(CharIndex, %对象_名字%).."登出游戏!");
        if M_Arena_ranktab[CharIndex] then
                M_Arena_ranktab[CharIndex]=nil
        end
        if luamap_tab[CharIndex] then
                local mapid = luamap_tab[CharIndex] or -1
                local maptype = Char.GetData(CharIndex,3)
                if maptype==1 then
                        local mapid2 = Char.GetData(CharIndex,4)
                        if mapid2==mapid then
                                local RegistNumber = Char.GetData(CharIndex,%对象_RegistNumber%)
                                local cdk = Char.GetData(CharIndex,%对象_帐号%)
                                local FL=1000
                                local x=233
                                local y=78
                                if Char.GetData(CharIndex,151) == 0 then--判断玩家定居点为0号定居点
                                        local rd = math.random(1,6);
                                        if rd == 1 then
                                                FL=1000
                                                x=233
                                                y=78
                                        elseif rd == 2 then
                                                FL=1000
                                                x=242
                                                y=100
                                        elseif rd == 3 then
                                                FL=1000
                                                x=141
                                                y=148
                                        elseif rd == 4 then
                                                FL=1000
                                                x=63
                                                y=79
                                        elseif rd == 5 then
                                                FL=1000
                                                x=162
                                                y=130
                                        else
                                                FL=1000
                                                x=72
                                                y=123
                                        end
                                elseif Char.GetData(CharIndex,151) == 1 then--判断玩家定居点为1
                                        FL=33200
                                        x=99
                                        y=165--阿凯鲁法村定居点坐标
                                elseif Char.GetData(CharIndex,151) == 2 then--判断玩家定居点为2
                                        FL=43100
                                        x=120
                                        y=107--哥拉尔镇定居点坐标
                                end
                                NLG.Warp(CharIndex, 0, FL, x, y);
                        end
                end
                if M_Arena_ran_nl_tab2[mapid] then
                        M_Arena_ran_nl_tab2[mapid]=nil
                end
                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid] or -1
                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid] or -1
                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid] or -1
                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid] or -1
                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid] or -1
                if NPC1>=0 then
                        NL.DelNpc(NPC1);
                        LuaNpcIndex["test_map_npc_1"..mapid]=nil
                end
                if NPC2>=0 then
                        NL.DelNpc(NPC2);
                        LuaNpcIndex["test_map_npc_2"..mapid]=nil
                end
                if NPC3>=0 then
                        NL.DelNpc(NPC3);
                        LuaNpcIndex["test_map_npc_3"..mapid]=nil
                end
                if NPC4>=0 then
                        NL.DelNpc(NPC4);
                        LuaNpcIndex["test_map_npc_4"..mapid]=nil
                end
                if NPC5>=0 then
                        NL.DelNpc(NPC5);
                        LuaNpcIndex["test_map_npc_5"..mapid]=nil
                end
                Map.Delete(nil,nil,1,mapid)
                luamap_tab[CharIndex]=nil
        end
        local CDK=Char.GetData(CharIndex,2002)
        local rignum=Char.GetData(CharIndex,48)
        local tcdk = CDK..rignum
        if bank_num_tab[tcdk] then
                local yhym = Char.GetData(CharIndex,%对象_银行页数%)
                if bank_num_tab[tcdk]~=yhym then
                        Char.SetData(CharIndex,%对象_银行页数%,bank_num_tab[tcdk])
                        NLG.UpChar(CharIndex,%对象_银行页数%)
                end
        end
        return 0
end

function King_Rank_set()
        M_Arena_NPC_master()
        M_Arena_NPC_sever()
        return 0
end


function M_Arena_NPC_master(npc)
        if npc == nil or npc < 0 then
        npc = NL.CreateNpc(nil,"test_map_npcex")
        end
--Char.SetData(npc,%对象_形象%,10414)
        Char.SetData(npc,%对象_形象%,14056)
        Char.SetData(npc,%对象_原形%,14056)
        Char.SetData(npc,%对象_地图类型%,0)
        Char.SetData(npc,%对象_地图%,38082)
        Char.SetData(npc,%对象_X%,22)
        Char.SetData(npc,%对象_Y%,10)
        Char.SetData(npc,%对象_方向%,4)
        Char.SetData(npc,%对象_原名%,"王国竞技场报名处")
        NLG.UpChar(npc)
        LuaNpcIndex["M_Arena_master_index"]=npc;
        Char.SetTalkedEvent(nil, "M_Arena_master_talk",npc)
        Char.SetWindowTalkedEvent(nil,"M_Arena_master_windows",npc)
        return true
end

function M_Arena_NPC_sever(npc)
        if npc == nil or npc < 0 then
        npc = NL.CreateNpc(nil,"test_map_npcex2")
        end
--Char.SetData(npc,%对象_形象%,10414)
        Char.SetData(npc,%对象_形象%,11425)
        Char.SetData(npc,%对象_原形%,11425)
        Char.SetData(npc,%对象_地图类型%,0)
        Char.SetData(npc,%对象_地图%,38082)
        Char.SetData(npc,%对象_X%,24)
        Char.SetData(npc,%对象_Y%,10)
        Char.SetData(npc,%对象_方向%,6)
        Char.SetData(npc,%对象_原名%,"王国竞技场排名表")
        NLG.UpChar(npc)
        LuaNpcIndex["M_Arena_sever_index"]=npc;
        Char.SetTalkedEvent(nil, "M_Arena_sever_talk",npc)
        --Char.SetWindowTalkedEvent(nil,"M_Arena_sever_windows",npc)
        return true
end

function M_Arena_msg_colour(str)--传入数字
        local str=tonumber(str)
        if str>=1 and str<=3 then
                str="$4"..str.."$0"
        elseif str>=4 and str<=10 then
                str="$8"..str.."$0"
        elseif str>=11 and str<=20 then
                str="$5"..str.."$0"
        end
        return str;
end

function M_Arena_sever_talk(npc,player)
        if NLG.CanTalk(npc,player) then
                local nowsql="SELECT * FROM tab_MercenaryArenaRank order by rank ASC limit 0,20"
                local nowtab=SQL.Run(nowsql)
                local day = tonumber(os.date("%j"))--一年的第几天
                local yushu = math.fmod(day,3)
                local fjmsg = ""
                if yushu==2 then
                        fjmsg="《发奖日:今天24时》"
                elseif yushu==1 then
                        fjmsg="《发奖日:明天24时》"
                elseif yushu==0 then
                        fjmsg="《发奖日:后天24时》"
                end
                local msg="                    $4『王国竞技场前20排名』$0\n\n      $9〖名字——一—一"..fjmsg.."—一——一名次〗\n"
                if(type(nowtab) == "table")then
                        local long = ((tablength(nowtab)-2)/4) -1 --表长度为行数X列数 -2
                        for i=0,long do
                                local rank = tonumber(nowtab[i.."_0"])
                                local colourrank = M_Arena_msg_colour(rank)
                                local cdk = nowtab[i.."_1"]
                                local rignum = nowtab[i.."_2"]
                                local name = nowtab[i.."_3"]
                                msg=msg.."       $8「$4"..paibancl(name.."$8」",41).."$8「"..colourrank.."$8」\n"
                        end
                end
                NLG.ShowWindowTalked(player,10,2,0,msg,npc)
        end
        return
end


function M_Arena_master_talk(npc,player)
        if NLG.CanTalk(npc,player) then
                local msg = ""
                local seqNo=0
                local anniu=2
                if tablength(luamap_tab)<200 then
                        local CDK=Char.GetData(player,%对象_帐号%)
                        local RegistNumber=Char.GetData(player,%对象_RegistNumber%)
                        local query = "SELECT rank FROM tab_MercenaryArenaRank WHERE CDK='"..CDK.."' AND rignum='"..RegistNumber.."'"
                        local tab = SQL.Run(query)
                        if(type(tab) == "table")then
                                M_Arena_ranktab[player]=tonumber(tab["0_0"])
                        end
                        if M_Arena_ranktab[player] then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk = CDK..rignum
                                local cishu = time_save_tab[tcdk][3]
                                msg="4\n     您当前在$4[王国竞技场]$0的排名是第$4『"..M_Arena_ranktab[player].."』$0名"
                                        .."\n\n"..String.Centering("今日剩余挑战次数[$8"..cishu.."$0/ 5]")
                                        .."\n\n1.[王国竞技场介绍]"
                                        .."\n2.[防守偏好设置]"
                                        .."\n3.[防守宣言]"
                                        .."\n4.[登记&挑战王国竞技场]"
                                if cishu==0 then
                                        msg="5\n     您当前在$4[王国竞技场]$0的排名是第$4『"..M_Arena_ranktab[player].."』$0名"
                                        .."\n          今日剩余挑战次数[$8"..cishu.."$0/ 5]$0\n"
                                        local num = time_save_tab[tcdk][4]
                                        if num==5 then
                                        msg=msg.."*:点击$1[确定]$0花费10枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==4 then
                                        msg=msg.."*:点击$1[确定]$0花费20枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==3 then
                                        msg=msg.."*:点击$1[确定]$0花费50枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==2 then
                                        msg=msg.."*:点击$1[确定]$0花费50枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==1 then
                                        msg=msg.."*:点击$1[确定]$0花费100枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        else
                                                msg=msg.."\n        $6*:您今日的挑战次数已耗尽$0\n"
                                        end
                                        msg = msg.."\n1.[王国竞技场介绍]"
                                        .."\n2.[防守偏好设置]"
                                        .."\n3.[防守宣言]"
                                        .."\n4.[登记&挑战王国竞技场]"
                                end
                                seqNo=1
                        else
                                local Name = Char.GetData(player,%对象_原名%)
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk = CDK..rignum
                                local cishu = time_save_tab[tcdk][3]
                                msg="4\n尊敬的"..Name..",这里是$4[王国竞技场]$0报名处"
                                .."\n\n        您今日的剩余挑战次数是"..cishu.."/5\n"
                                .."\n1.[王国竞技场介绍]"
                                .."\n2.[登记&挑战王国竞技场]"
                                if cishu==0 then
                                        msg="6\n尊敬的"..Name.."这里是$4[王国竞技场]$0报名处"
                                        .."\n\n        您今日的剩余挑战次数是"..cishu.."/5\n"
                                       
                                        local num = time_save_tab[tcdk][4]
                                        if num==5 then
                                        msg=msg.."*:点击$1[确定]$0花费10枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==4 then
                                        msg=msg.."*:点击$1[确定]$0花费20枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==3 then
                                        msg=msg.."*:点击$1[确定]$0花费50枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==2 then
                                        msg=msg.."*:点击$1[确定]$0花费50枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        elseif num==1 then
                                        msg=msg.."*:点击$1[确定]$0花费100枚$4[阿尔卡迪亚金币]$0恢复1次挑战次数\n"
                                        anniu=3
                                        else
                                                msg=msg.."\n        $6*:您今日的挑战次数已耗尽$0\n"
                                        end
                                        msg=msg.."\n1.[王国竞技场介绍]"
                                        .."\n2.[登记&挑战王国竞技场]"
                                end
                        end
                else
                        anniu=2
                        local Name = Char.GetData(player,%对象_原名%)
                        msg="4\n尊敬的"..Name..",这里是$4[王国竞技场]$0报名处"
                                .."\n\n\n         王国竞技场满员中,请稍许等待"
                end
                NLG.ShowWindowTalked(player,2,anniu,seqNo,msg,npc)
        end
        return;
end

function M_Arena_master_windows(_TalkIndex, player, _Seqno, _Select, _Data)
        --NLG.SystemMessage(player,"seqno是".._Seqno.." _Select是".._Select.." _Data是".._Data.."它的类型是"..type(_Data))
        if _Select~=2 then
                if _Seqno==0 then
                        if _Select==1 then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk = CDK..rignum
                                local num = time_save_tab[tcdk][4]
                                if num==5 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=10 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,10)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==4 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=20 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,20)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==3 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=50 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,50)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==2 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=50 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,50)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==1 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=100 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,100)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                end
                        elseif _Data=="1" then--介绍
                                local msg="                     $4Ⅹ王国竞技场规则Ⅹ$0"
                                                .."\n\n  $9①:只能和$4『NPC伙伴』$9一起挑战"
                                                .."\n  $9*$4『NPC伙伴』$9:通过右侧$4『同伴招募』$9按钮进行签约&招募"
                                                .."\n  $9②:选择$4[进入王国竞技场]$9后每次会出现$4『5』$9个挑战对手,挑战前   $9可查看对手的$4『排名』$9后,挑战成功后您就能替代对手的$4『名次』$9"
                                                .."\n  $9③:当您挑战胜利或失败时,都可以获得一定量的声望,声望可用于  $4『伙伴签约』"
                                                .."\n  $9④:每隔三天的$4『凌晨5点』$9都会根据您当前$4『排名』$9自动发放丰厚  $9奖励至$4『管家小精灵』$9处(右上角芝麻娃娃按钮)"
                                                .."\n\n                        $4『排名奖励』$9"
                                                .."\n\n     $9第1名:      2万声望女神苹果, 水蓝鼠奖章500枚礼包"
                                                .."\n     $9第2~3名:    1万声望女神苹果, 水蓝鼠奖章300枚礼包"
                                                .."\n     $9第4~5名:    5000声望女神苹果,水蓝鼠奖章200枚礼包"
                                                .."\n     $9第6~10名:   3000声望女神苹果,水蓝鼠奖章100枚礼包"
                                                .."\n     $9第11~30名:  2000声望女神苹果,水蓝鼠奖章50枚礼包"
                                                .."\n     $9第31~50名:  1000声望女神苹果,水蓝鼠奖章30枚礼包"
                                                .."\n     $9第51~100名: 500声望女神苹果, 水蓝鼠奖章10枚礼包"
                                                .."\n\n  $8特别事项4『管家小精灵』$8只能寄存20件礼包,若有礼包请尽快领取  ,以免造成非必要的损失"
                                NLG.ShowWindowTalked(player,10,2,99,msg,_TalkIndex)
                        elseif _Data=="2" then
                                for i = 1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job~=540 then
                                                        NLG.DischargeParty(GroupIndex);
                                                        NLG.SystemMessage(GroupIndex,"王国竞技场只能由队长和他的『NPC伙伴』进行挑战")
                                                else
                                                        local catordog = string.sub(Char.GetData(GroupIndex,2002),-1,-1)
                                                        if catordog=="!" then
                                                                NLG.DischargeParty(GroupIndex);
                                                        end
                                                end
                                        end
                                end
                                if luamap_tab[player] then
                                        for k,v in pairs(luamap_tab) do
                                                if k==player then
                                                        NLG.Warp(player,1, v,22, 16)
                                                        return
                                                end
                                        end
                                        local msg="请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择$4[登记&挑战王国竞技场]$0)"
                                        NLG.ShowWindowTalked(player,0,3,100,msg,_TalkIndex)
                                else
                                        local CDK=Char.GetData(player,2002)
                                        local rignum=Char.GetData(player,48)
                                        local tcdk = CDK..rignum
                                        local cishu = time_save_tab[tcdk][3]
                                        if cishu>0 then
                                                local query = "SELECT cdk,rignum FROM tab_MercenaryArenaRank order by rank desc limit 0,5"--读取排行榜倒数第一~第五的排名
                                                local tab = SQL.Run(query)
                                                local cdk1=tab["0_0"]--倒数第一
                                                local rig1=tonumber(tab["0_1"])
                                                local cdk2=tab["1_0"]
                                                local rig2=tonumber(tab["1_1"])
                                                local cdk3=tab["2_0"]
                                                local rig3=tonumber(tab["2_1"])
                                                local cdk4=tab["3_0"]
                                                local rig4=tonumber(tab["3_1"])
                                                local cdk5=tab["4_0"]
                                                local rig5=tonumber(tab["4_1"])
                                                local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                if(CreatIndex >= 0)then
                                                        M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                        NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                else
                                                        NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                end
                                        else
                                                local msg="您今天的挑战次数已经耗尽"
                                                NLG.ShowWindowTalked(player,0,3,101,msg,_TalkIndex)
                                        end
                                end
                        end
                elseif _Seqno==1 then
                        if _Select==1 then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk = CDK..rignum
                                local num = time_save_tab[tcdk][4]
                                if num==5 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=10 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,10)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==4 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=20 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,20)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==3 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=50 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,50)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==2 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=50 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,50)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                elseif num==1 then
                                        local RMB = Char.ItemNum(player,NPC_mate_rmbitem)
                                        if RMB>=100 then
                                                time_save_tab[tcdk][4]=time_save_tab[tcdk][4]-1
                                                time_save_tab[tcdk][3]=time_save_tab[tcdk][3]+1
                                                local msg="\n\n\n          您获得了一次竞技场挑战机会"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                                local tNum = NLG.DelItem(player,NPC_mate_rmbitem,100)
                                        else
                                                local msg="\n\n\n        您身上的$4[阿尔卡迪亚金币]$0数量不够"
                                                NLG.ShowWindowTalked(player,0,3,10,msg,_TalkIndex)
                                        end
                                end
                        elseif _Data=="1" then--介绍
                                local msg="                     $4Ⅹ王国竞技场规则Ⅹ$0"
                                                .."\n\n  $9①:只能和$4『NPC伙伴』$9一起挑战"
                                                .."\n  $9*$4『NPC伙伴』$9:通过右侧$4『同伴招募』$9按钮进行签约&招募"
                                                .."\n  $9②:选择$4[进入王国竞技场]$9后每次会出现$4『5』$9个挑战对手,挑战前   $9可查看对手的$4『排名』$9后,挑战成功后您就能替代对手的$4『名次』$9"
                                                .."\n  $9③:当您挑战胜利或失败时,都可以获得一定量的声望,声望可用于  $4『伙伴签约』"
                                                .."\n  $9④:每隔三天的$4『凌晨5点』$9都会根据您当前$4『排名』$9自动发放丰厚  $9奖励至$4『管家小精灵』$9处(右上角芝麻娃娃按钮)"
                                                .."\n\n                        $4『排名奖励』$9"
                                                .."\n\n     $9第1名:      2万声望女神苹果, 水蓝鼠奖章500枚礼包"
                                                .."\n     $9第2~3名:    1万声望女神苹果, 水蓝鼠奖章300枚礼包"
                                                .."\n     $9第4~5名:    5000声望女神苹果,水蓝鼠奖章200枚礼包"
                                                .."\n     $9第6~10名:   3000声望女神苹果,水蓝鼠奖章100枚礼包"
                                                .."\n     $9第11~30名:  2000声望女神苹果,水蓝鼠奖章50枚礼包"
                                                .."\n     $9第31~50名:  1000声望女神苹果,水蓝鼠奖章30枚礼包"
                                                .."\n     $9第51~100名: 500声望女神苹果, 水蓝鼠奖章10枚礼包"
                                                .."\n\n  $8特别事项4『管家小精灵』$8只能寄存20件礼包,若有礼包请尽快领取  ,以免造成非必要的损失"
                                NLG.ShowWindowTalked(player,10,2,99,msg,_TalkIndex)
                        elseif _Data=="2" then--修改AI偏好
                                local msg="2\n"..String.Centering("$5『请选择您的防守偏好』$0")
                                                .."\n\n ①:智能模式(默认)"
                                                .."\n ②:优先攻击血少对象"
                                                .."\n ③:优先攻击血多对象"
                                                .."\n ④:优先攻击传教对象"
                                                .."\n ⑤:随机选择攻击对象(排除宠物)"
                                                .."\n ⑥:随机选择攻击对象(包括宠物)"
                                NLG.ShowWindowTalked(player,2,2,200,msg,_TalkIndex)
                        elseif _Data=="3" then--修改宣言
                                local msg="\n"..String.Centering("$4『请输入您的防守宣言』$0")
                                                .."\n\n\n\n *:请不要使用粗俗语言或传播不良信息"
                                NLG.ShowWindowTalked(player,1,3,300,msg,_TalkIndex)
                        elseif _Data=="4" then--进行排名挑战
                                for i = 1,4 do
                                        local GroupIndex = Char.GetTeamIndex(player, i);
                                        if GroupIndex>=0 then
                                                local job = Char.GetData(GroupIndex,51)
                                                if job~=540 then
                                                        NLG.DischargeParty(GroupIndex);
                                                        NLG.SystemMessage(GroupIndex,"王国竞技场只能由队长和他的『NPC伙伴』进行挑战")
                                                else
                                                        local catordog = string.sub(Char.GetData(GroupIndex,2002),-1,-1)
                                                        if catordog=="!" then
                                                                NLG.DischargeParty(GroupIndex);
                                                        end
                                                end
                                        end
                                end
                                if luamap_tab[player] then
                                        for k,v in pairs(luamap_tab) do
                                                if k==player then
                                                        NLG.Warp(player,1, v,22, 16)
                                                        return
                                                end
                                        end
                                        local msg="请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择$4[登记&挑战王国竞技场]$0)"
                                        NLG.ShowWindowTalked(player,0,3,100,msg,_TalkIndex)
                                else
                                        local CDK=Char.GetData(player,2002)
                                        local rignum=Char.GetData(player,48)
                                        local tcdk = CDK..rignum
                                        local cishu = time_save_tab[tcdk][3]
                                        if cishu>0 then
                                                local rank=M_Arena_ranktab[player]
                                                if rank>5 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>='"..(rank-5).."' AND rank<'"..rank.."' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                elseif rank==5 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>='1' AND rank!=5 and rank<'7' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                elseif rank==4 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>='1' AND rank!=4 and rank<'7' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                elseif rank==3 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>='1' AND rank!=3 and rank<'7' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                elseif rank==2 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>='1' AND rank!=2 and rank<'7' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                elseif rank==1 then
                                                        local query = "SELECT CDK,rignum FROM tab_MercenaryArenaRank WHERE rank>'1' and rank<'7' order by rank desc "
                                                        local tab = SQL.Run(query)
                                                        local cdk1=tab["0_0"]--倒数第一
                                                        local rig1=tonumber(tab["0_1"])
                                                        local cdk2=tab["1_0"]
                                                        local rig2=tonumber(tab["1_1"])
                                                        local cdk3=tab["2_0"]
                                                        local rig3=tonumber(tab["2_1"])
                                                        local cdk4=tab["3_0"]
                                                        local rig4=tonumber(tab["3_1"])
                                                        local cdk5=tab["4_0"]
                                                        local rig5=tonumber(tab["4_1"])
                                                        local dummy1 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk1.."' and rignum='"..rig1.."'"
                                                        local dummy2 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk2.."' and rignum='"..rig2.."'"
                                                        local dummy3 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk3.."' and rignum='"..rig3.."'"
                                                        local dummy4 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk4.."' and rignum='"..rig4.."'"
                                                        local dummy5 = "SELECT * FROM tab_MercenaryArena WHERE CDK='"..cdk5.."' and rignum='"..rig5.."'"
                                                        local CreatIndex = Map.Copy(nil,"CopyMap_CallBackEvent_test",0,38081);
                                                        if(CreatIndex >= 0)then
                                                                M_Arena_ran_nl_tab[CreatIndex]={player,SQL.Run(dummy1),SQL.Run(dummy2),SQL.Run(dummy3),SQL.Run(dummy4),SQL.Run(dummy5)}
                                                                NLG.SystemMessage(player,"请耐心等待1~5分钟,您的对手正在修整装备(到达等待时间后可重新选择[登记&挑战王国竞技场]进行挑战)")
                                                        else
                                                                NLG.SystemMessage(player,"[系统]服务器承载到达上限,看到请联系GM")
                                                        end
                                                end
                                        else
                                                local msg="您今天的挑战次数已经耗尽"
                                                NLG.ShowWindowTalked(player,0,3,101,msg,_TalkIndex)
                                        end
                                end
                        end
                elseif _Seqno==200 then--修改AI偏好
                        if _Data=="1" then--修改为智能
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='0' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『智能模式』");
                        elseif _Data=="2" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='1' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『优先攻击血少对象』");
                        elseif _Data=="3" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='2' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『优先攻击血多对象』");
                        elseif _Data=="4" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='3' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『优先攻击传教对象』");
                        elseif _Data=="5" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='4' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『随机选择攻击对象(排除宠物)』");
                        elseif _Data=="6" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local sql = "update tab_MercenaryArena set airule='5' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                                NLG.SystemMessage(player,"[王国竞技场]您的防守偏好已经修改为『随机选择攻击对象(包括宠物)』");
                        end
                elseif _Seqno==300 then--修改宣言
                        if _Select==1 then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local msg=string.sub(_Data,1,40)
                                msg = King_Rank_set_msg_trim(msg)
                                local sql = "update tab_MercenaryArena set msg='"..msg.."' WHERE CDK='"..CDK.."' and rignum='"..rignum.."' "
                                local sqlfh = SQL.Run(sql)
                        end
                elseif _Seqno==1000 then
                        if string.sub(_Data,1,2) == "I|" then
                                local tab = Split(_Data,"|")
                                local itemfield = tonumber(tab[2])
                                if tonumber(tab[2])>=100 then--从银行窗口内取出
                                        local itemfield2 = tonumber(tab[3])
                                        if itemfield2>=8 and itemfield2<=27 then
                                                local ItemIndex = Char.GetItemIndex(player,itemfield2);
                                                if ItemIndex<0 then
                                                        local lanwei = itemfield - 99
                                                        local CDK=Char.GetData(player,2002)
                                                        local rignum=Char.GetData(player,48)
                                                        local tcdk = CDK..rignum
                                                        local itemnum=M_Arena_rank_give_item[tcdk][lanwei]
                                                        NLG.GiveItem(player, itemnum,1);
                                                        table.remove(M_Arena_rank_give_item[tcdk],lanwei)
                                                        Win_guanjia(0,0,player)
                                                else
                                                        NLG.SystemMessage(player,"请选择没有道具的空余栏位")
                                                end
                                        end
                                else
                                        NLG.SystemMessage(player,"『管家小精灵』不能存道具哦")
                                end
                        elseif string.sub(_Data,1,2) == "G|" then
                                NLG.SystemMessage(player,"『管家小精灵』不能存金币哦")
                        elseif string.sub(_Data,1,2) == "|" then
                                NLG.SystemMessage(player,"『管家小精灵』不能存宠物哦")
                        elseif _Data == "C" then
                                local CDK=Char.GetData(player,2002)
                                local rignum=Char.GetData(player,48)
                                local tcdk = CDK..rignum
                                local bank_num = bank_num_tab[tcdk]
                                Char.SetData(player,%对象_银行页数%,bank_num)
                                NLG.UpChar(player,%对象_银行页数%)
                        end
                end
        end
end

function CopyMap_CallBackEvent_test(maptype,mapid,CreatIndex)
        if(maptype == -1)then
                NLG.SystemMessage(-1,"创建新的地图:"..CreatIndex.."失败了");
                return;
        end
        luamap_info_tab[mapid]=1
        local player = M_Arena_ran_nl_tab[CreatIndex][1]
        M_Arena_ran_nl_tab2[mapid]={}
        M_Arena_ran_nl_tab2[mapid][1]=M_Arena_ran_nl_tab[CreatIndex][2]
        M_Arena_ran_nl_tab2[mapid][2]=M_Arena_ran_nl_tab[CreatIndex][3]
        M_Arena_ran_nl_tab2[mapid][3]=M_Arena_ran_nl_tab[CreatIndex][4]
        M_Arena_ran_nl_tab2[mapid][4]=M_Arena_ran_nl_tab[CreatIndex][5]
        M_Arena_ran_nl_tab2[mapid][5]=M_Arena_ran_nl_tab[CreatIndex][6]
        M_Arena_ran_nl_tab[CreatIndex]=nil
        local name1 = M_Arena_ran_nl_tab2[mapid][1]["0_3"]
        local img1  = M_Arena_ran_nl_tab2[mapid][1]["0_5"]
        local namecolour1 = M_Arena_ran_nl_tab2[mapid][1]["0_6"]
        --NLG.SystemMessage(-1,"创建的东西的类型是"..type(img1)..type(namecolour1));
        local name2 = M_Arena_ran_nl_tab2[mapid][2]["0_3"]
        local img2  = M_Arena_ran_nl_tab2[mapid][2]["0_5"]
        local namecolour2 = M_Arena_ran_nl_tab2[mapid][2]["0_6"]
       
        local name3 = M_Arena_ran_nl_tab2[mapid][3]["0_3"]
        local img3  = M_Arena_ran_nl_tab2[mapid][3]["0_5"]
        local namecolour3 = M_Arena_ran_nl_tab2[mapid][3]["0_6"]       
       
        local name4 = M_Arena_ran_nl_tab2[mapid][4]["0_3"]
        local img4  = M_Arena_ran_nl_tab2[mapid][4]["0_5"]
        local namecolour4 = M_Arena_ran_nl_tab2[mapid][4]["0_6"]
       
        local name5 = M_Arena_ran_nl_tab2[mapid][5]["0_3"]
        local img5  = M_Arena_ran_nl_tab2[mapid][5]["0_5"]
        local namecolour5 = M_Arena_ran_nl_tab2[mapid][5]["0_6"]
       
        test_map_npc1(nil,maptype,mapid,name1,tonumber(img1),tonumber(namecolour1))
        test_map_npc2(nil,maptype,mapid,name2,tonumber(img2),tonumber(namecolour2))
        test_map_npc3(nil,maptype,mapid,name3,tonumber(img3),tonumber(namecolour3))
        test_map_npc4(nil,maptype,mapid,name4,tonumber(img4),tonumber(namecolour4))
        test_map_npc5(nil,maptype,mapid,name5,tonumber(img5),tonumber(namecolour5))
        luamap_tab[player]=mapid
end

function test_map_npc1(npc,maptype,mapid,name1,img1,namecolour1)
        if npc == nil then
                npc = NL.CreateNpc(nil,"test_map_npcex")
        end
        Char.SetData(npc,%对象_形象%,img1)
        Char.SetData(npc,%对象_原形%,img1)
        Char.SetData(npc,%对象_地图类型%,maptype)
        Char.SetData(npc,%对象_地图%,mapid)
        Char.SetData(npc,%对象_X%,22)
        Char.SetData(npc,%对象_Y%,12)
--Char.SetData(npc,%对象_方向%,4)
        Char.SetData(npc,%对象_方向%,4)
        Char.SetData(npc,%对象_原名%,name1)
        Char.SetData(npc,%对象_名色%,namecolour1)
        NLG.UpChar(npc)
        LuaNpcIndex["test_map_npc_1"..mapid]=npc;
        --InstallNpc("test_map_npc_1"..mapid,npc);
        Char.SetTalkedEvent(nil, "test_map_npc_talk_1",npc)
        Char.SetWindowTalkedEvent(nil,"test_map_npc_windows_1",npc)
        return true
end

function test_map_npc2(npc,maptype,mapid,name2,img2,namecolour2)
        if npc == nil then
        npc = NL.CreateNpc(nil,"test_map_npcex")
        end
        Char.SetData(npc,%对象_形象%,img2)
        Char.SetData(npc,%对象_原形%,img2)
        Char.SetData(npc,%对象_地图类型%,maptype)
        Char.SetData(npc,%对象_地图%,mapid)
        Char.SetData(npc,%对象_X%,25)
        Char.SetData(npc,%对象_Y%,14)
        Char.SetData(npc,%对象_方向%,6)
        Char.SetData(npc,%对象_原名%,name2)
        Char.SetData(npc,%对象_名色%,namecolour2)
        NLG.UpChar(npc)
        LuaNpcIndex["test_map_npc_2"..mapid]=npc;
        --InstallNpc("test_map_npc_2"..mapid,npc);
        Char.SetTalkedEvent(nil, "test_map_npc_talk_2",npc)
        Char.SetWindowTalkedEvent(nil,"test_map_npc_windows_2",npc)
        return true
end

function test_map_npc3(npc,maptype,mapid,name3,img3,namecolour3)
        if npc == nil then
        npc = NL.CreateNpc(nil,"test_map_npcex")
        end
        Char.SetData(npc,%对象_形象%,img3)
        Char.SetData(npc,%对象_原形%,img3)
        Char.SetData(npc,%对象_地图类型%,maptype)
        Char.SetData(npc,%对象_地图%,mapid)
        Char.SetData(npc,%对象_X%,25)
        Char.SetData(npc,%对象_Y%,17)
        Char.SetData(npc,%对象_方向%,6)
        Char.SetData(npc,%对象_原名%,name3)
        Char.SetData(npc,%对象_名色%,namecolour3)
        NLG.UpChar(npc)
        LuaNpcIndex["test_map_npc_3"..mapid]=npc;
        --InstallNpc("test_map_npc_3"..mapid,npc);
        Char.SetTalkedEvent(nil, "test_map_npc_talk_3",npc)
        Char.SetWindowTalkedEvent(nil,"test_map_npc_windows_3",npc)
        return true
end

function test_map_npc4(npc,maptype,mapid,name4,img4,namecolour4)
        if npc == nil then
        npc = NL.CreateNpc(nil,"test_map_npcex")
        end
        Char.SetData(npc,%对象_形象%,img4)
        Char.SetData(npc,%对象_原形%,img4)
        Char.SetData(npc,%对象_地图类型%,maptype)
        Char.SetData(npc,%对象_地图%,mapid)
        Char.SetData(npc,%对象_X%,24)
        Char.SetData(npc,%对象_Y%,20)
        Char.SetData(npc,%对象_方向%,7)
        Char.SetData(npc,%对象_原名%,name4)
        Char.SetData(npc,%对象_名色%,namecolour4)
        NLG.UpChar(npc)
        LuaNpcIndex["test_map_npc_4"..mapid]=npc;
        --InstallNpc("test_map_npc_4"..mapid,npc);
        Char.SetTalkedEvent(nil, "test_map_npc_talk_4",npc)
        Char.SetWindowTalkedEvent(nil,"test_map_npc_windows_4",npc)
        return true
end

function test_map_npc5(npc,maptype,mapid,name5,img5,namecolour5)
        if npc == nil then
        npc = NL.CreateNpc(nil,"test_map_npcex")
        end
        Char.SetData(npc,%对象_形象%,img5)
        Char.SetData(npc,%对象_原形%,img5)
        Char.SetData(npc,%对象_地图类型%,maptype)
        Char.SetData(npc,%对象_地图%,mapid)
        Char.SetData(npc,%对象_X%,19)
        Char.SetData(npc,%对象_Y%,14)
        Char.SetData(npc,%对象_方向%,2)
--Char.SetData(npc,%对象_原名%,name5)
        Char.SetData(npc,%对象_原名%,name5)
--Char.SetData(npc,%对象_名色%,namecolour5)
        Char.SetData(npc,%对象_名色%,namecolour5)
        NLG.UpChar(npc)
        LuaNpcIndex["test_map_npc_5"..mapid]=npc;
        --InstallNpc("test_map_npc_5"..mapid,npc);
        Char.SetTalkedEvent(nil, "test_map_npc_talk_5",npc)
        Char.SetWindowTalkedEvent(nil,"test_map_npc_windows_5",npc)
        return true
end

function test_map_npc_talk_1(npc,player)
        if NLG.CanTalk(npc,player) then
                local mapid=Char.GetData(player,%对象_地图%)
               
                local CDK=M_Arena_ran_nl_tab2[mapid][1]["0_0"]
                local rignum=tonumber(M_Arena_ran_nl_tab2[mapid][1]["0_1"])
                local que ="select rank from tab_MercenaryArenaRank WHERE CDK='"..CDK.."' and rignum='"..rignum.."'"
                local ranknum = SQL.Run(que)--总计有多少排名
                local rank=tonumber(ranknum["0_0"])
               
                M_Arena_rank_save[mapid]=M_Arena_rank_save[mapid] or {}
                M_Arena_rank_save[mapid][1]=rank
                local jobnum=tonumber(M_Arena_ran_nl_tab2[mapid][1]["0_7"])
                local job=M_Arena_JobName[jobnum]
                local declaration="来一场愉快的对战吧~!"
                if M_Arena_ran_nl_tab2[mapid][1]["0_2"] then
                        declaration=M_Arena_ran_nl_tab2[mapid][1]["0_2"]
                end
                local playercdk = Char.GetData(player,2002)
                local playerrignum = Char.GetData(player,48)
                local tcdk = playercdk..playerrignum
                local cishu = time_save_tab[tcdk][3]
                local msg = NLG.c("$4『排名』:")..rank
                                        .."\n\n           今日剩余挑战次数:[ $8"..cishu.."$0/ 5]"
                                        .."$0\n\n「名字」:"..M_Arena_ran_nl_tab2[mapid][1]["0_3"]
                                        .."\n「等级」:"..M_Arena_ran_nl_tab2[mapid][1]["0_4"]
                                        .."\n「职业」:"..job
                                        .."\n$8「宣言」:"..declaration
                NLG.ShowWindowTalked(player,0,3,0,msg,npc)--seqNo编号为0
        end
        return;
end

function test_map_npc_talk_2(npc,player)
        if NLG.CanTalk(npc,player) then
                local mapid=Char.GetData(player,%对象_地图%)
                local CDK=M_Arena_ran_nl_tab2[mapid][2]["0_0"]
                local rignum=tonumber(M_Arena_ran_nl_tab2[mapid][2]["0_1"])
                local que ="select rank from tab_MercenaryArenaRank WHERE CDK='"..CDK.."' and rignum='"..rignum.."'"
                local ranknum = SQL.Run(que)--总计有多少排名
                local rank=tonumber(ranknum["0_0"])
                M_Arena_rank_save[mapid]=M_Arena_rank_save[mapid] or {}
                M_Arena_rank_save[mapid][2]=rank
                local jobnum=tonumber(M_Arena_ran_nl_tab2[mapid][2]["0_7"])
                local job=M_Arena_JobName[jobnum]
                local declaration="来一场愉快的对战吧~!"
                if M_Arena_ran_nl_tab2[mapid][2]["0_2"] then
                        declaration=M_Arena_ran_nl_tab2[mapid][2]["0_2"]
                end
                local playercdk = Char.GetData(player,2002)
                local playerrignum = Char.GetData(player,48)
                local tcdk = playercdk..playerrignum
                local cishu = time_save_tab[tcdk][3]
                local msg = NLG.c("$4『排名』:")..rank
                                        .."\n\n           今日剩余挑战次数:[ $8"..cishu.."$0/ 5]"
                                        .."$0\n\n「名字」:"..M_Arena_ran_nl_tab2[mapid][2]["0_3"]
                                        .."\n「等级」:"..M_Arena_ran_nl_tab2[mapid][2]["0_4"]
                                        .."\n「职业」:"..job
                                        .."\n$8「宣言」:"..declaration
                NLG.ShowWindowTalked(player,0,3,0,msg,npc)--seqNo编号为0
        end
        return;
end

function test_map_npc_talk_3(npc,player)
        if NLG.CanTalk(npc,player) then
                local mapid=Char.GetData(player,%对象_地图%)
                local CDK=M_Arena_ran_nl_tab2[mapid][3]["0_0"]
                local rignum=tonumber(M_Arena_ran_nl_tab2[mapid][3]["0_1"])
                local que ="select rank from tab_MercenaryArenaRank WHERE CDK='"..CDK.."' and rignum='"..rignum.."'"
                local ranknum = SQL.Run(que)--总计有多少排名
                local rank=tonumber(ranknum["0_0"])
                M_Arena_rank_save[mapid]=M_Arena_rank_save[mapid] or {}
                M_Arena_rank_save[mapid][3]=rank
                local jobnum=tonumber(M_Arena_ran_nl_tab2[mapid][3]["0_7"])
                local job=M_Arena_JobName[jobnum]
                print("\n"..type(M_Arena_ran_nl_tab2[mapid][3]["0_4"]))
                local declaration="来一场愉快的对战吧~!"
                if M_Arena_ran_nl_tab2[mapid][3]["0_2"] then
                        declaration=M_Arena_ran_nl_tab2[mapid][3]["0_2"]
                end
                local playercdk = Char.GetData(player,2002)
                local playerrignum = Char.GetData(player,48)
                local tcdk = playercdk..playerrignum
                local cishu = time_save_tab[tcdk][3]
                local msg = NLG.c("$4『排名』:")..rank
                                        .."\n\n           今日剩余挑战次数:[ $8"..cishu.."$0/ 5]"
                                        .."$0\n\n「名字」:"..M_Arena_ran_nl_tab2[mapid][3]["0_3"]
                                        .."\n「等级」:"..M_Arena_ran_nl_tab2[mapid][3]["0_4"]
                                        .."\n「职业」:"..job
                                        .."\n$8「宣言」:"..declaration
                NLG.ShowWindowTalked(player,0,3,0,msg,npc)--seqNo编号为0
        end
        return;
end

function test_map_npc_talk_4(npc,player)
        if NLG.CanTalk(npc,player) then
                local mapid=Char.GetData(player,%对象_地图%)
                local CDK=M_Arena_ran_nl_tab2[mapid][4]["0_0"]
                local rignum=tonumber(M_Arena_ran_nl_tab2[mapid][4]["0_1"])
                local que ="select rank from tab_MercenaryArenaRank WHERE CDK='"..CDK.."' and rignum='"..rignum.."'"
                local ranknum = SQL.Run(que)--总计有多少排名
                local rank=tonumber(ranknum["0_0"])
                M_Arena_rank_save[mapid]=M_Arena_rank_save[mapid] or {}
                M_Arena_rank_save[mapid][4]=rank
                local jobnum=tonumber(M_Arena_ran_nl_tab2[mapid][4]["0_7"])
                local job=M_Arena_JobName[jobnum]
                local declaration="来一场愉快的对战吧~!"
                if M_Arena_ran_nl_tab2[mapid][4]["0_2"] then
                        declaration=M_Arena_ran_nl_tab2[mapid][4]["0_2"]
                end
                local playercdk = Char.GetData(player,2002)
                local playerrignum = Char.GetData(player,48)
                local tcdk = playercdk..playerrignum
                local cishu = time_save_tab[tcdk][3]
                local msg = NLG.c("$4『排名』:")..rank
                                        .."\n\n           今日剩余挑战次数:[ $8"..cishu.."$0/ 5]"
                                        .."$0\n\n「名字」:"..M_Arena_ran_nl_tab2[mapid][4]["0_3"]
                                        .."\n「等级」:"..M_Arena_ran_nl_tab2[mapid][4]["0_4"]
                                        .."\n「职业」:"..job
                                        .."\n$8「宣言」:"..declaration
                NLG.ShowWindowTalked(player,0,3,0,msg,npc)--seqNo编号为0
        end
        return;
end

function test_map_npc_talk_5(npc,player)
        if NLG.CanTalk(npc,player) then
                local mapid=Char.GetData(player,%对象_地图%)
                local CDK=M_Arena_ran_nl_tab2[mapid][5]["0_0"]
                local rignum=tonumber(M_Arena_ran_nl_tab2[mapid][5]["0_1"])
                local que ="select rank from tab_MercenaryArenaRank WHERE CDK='"..CDK.."' and rignum='"..rignum.."'"
                local ranknum = SQL.Run(que)--总计有多少排名
                local rank=tonumber(ranknum["0_0"])
                M_Arena_rank_save[mapid]=M_Arena_rank_save[mapid] or {}
                M_Arena_rank_save[mapid][5]=rank
                local jobnum=tonumber(M_Arena_ran_nl_tab2[mapid][5]["0_7"])
                local job=M_Arena_JobName[jobnum]
                local declaration="来一场愉快的对战吧~!"
                if M_Arena_ran_nl_tab2[mapid][5]["0_2"] then
                        declaration=M_Arena_ran_nl_tab2[mapid][5]["0_2"]
                end
                local playercdk = Char.GetData(player,2002)
                local playerrignum = Char.GetData(player,48)
                local tcdk = playercdk..playerrignum
                local cishu = time_save_tab[tcdk][3]
                local msg = NLG.c("$4『排名』:")..rank
                                        .."\n\n           今日剩余挑战次数:[ $8"..cishu.."$0/ 5]"
                                        .."$0\n\n「名字」:"..M_Arena_ran_nl_tab2[mapid][5]["0_3"]
                                        .."\n「等级」:"..M_Arena_ran_nl_tab2[mapid][5]["0_4"]
                                        .."\n「职业」:"..job
                                        .."\n$8「宣言」:"..declaration
                NLG.ShowWindowTalked(player,0,3,0,msg,npc)--seqNo编号为0
        end
        return;
end

function test_map_npc_windows_1(_TalkIndex, player, _Seqno, _Select, _Data)
        --NLG.SystemMessage(player,"seqno是".._Seqno.." _Select是".._Select.." _Data是".._Data.."它的类型是"..type(_Data))
        if _Select~=2 then
                if _Select==1 then
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk = CDK..rignum
                        if time_save_tab[tcdk][3]>0 then
                                local zxrs=NLG.GetOnLinePlayer()
                                if NPC_mate_playernum-zxrs>50 then
                                        opponent_summon(player,1)
                                        --[[local mapid=Char.GetData(player,4)
                                        local frindex=NPC_mate_map_queue[mapid]
                                        local battleIndex = NLG.CreateBattlePvP(player,frindex)--开始战斗
                                        NPC_mate_if_rank[battleIndex]=M_Arena_rank_save[mapid][1]
                                        M_Arena_rank_save[mapid]=nil--]]
                                       
                                        time_save_tab[tcdk][3]=time_save_tab[tcdk][3]-1
                                else
                                        NLG.SystemMessage(player,"[系统]当前竞技场内人数过多,请等待其他竞技战斗的结束")
                                end
                        else
                                local mapid = Char.GetData(player,4)
                                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid]
                                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid]
                                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid]
                                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid]
                                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid]
                                NL.DelNpc(NPC1);
                                LuaNpcIndex["test_map_npc_1"..mapid]=nil
                                NL.DelNpc(NPC2);
                                LuaNpcIndex["test_map_npc_2"..mapid]=nil
                                NL.DelNpc(NPC3);
                                LuaNpcIndex["test_map_npc_3"..mapid]=nil
                                NL.DelNpc(NPC4);
                                LuaNpcIndex["test_map_npc_4"..mapid]=nil
                                NL.DelNpc(NPC5);
                                LuaNpcIndex["test_map_npc_5"..mapid]=nil
                                if luamap_tab[player] then
                                        luamap_tab[player]=nil--删除玩家进入哪个王国竞技场地图的记录       
                                end
                                NLG.Warp(player, 0, 38082, 22, 12)
                                NLG.DischargeParty(player)
                                Map.Delete(nil,nil,1,mapid)
                                if M_Arena_ran_nl_tab2[mapid] then
                                        M_Arena_ran_nl_tab2[mapid]=nil
                                end
                                if M_Arena_rank_save[mapid] then
                                        M_Arena_rank_save[mapid]=nil
                                end
                                NLG.SystemMessage(player,"[系统]您的挑战次数不足,离开王国竞技场")
                        end
                end
        end
end

function test_map_npc_windows_2(_TalkIndex, player, _Seqno, _Select, _Data)
        if _Select~=2 then
                if _Select==1 then
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk = CDK..rignum
                        if time_save_tab[tcdk][3]>0 then
                                local zxrs=NLG.GetOnLinePlayer()
                                if NPC_mate_playernum-zxrs>50 then
                                        opponent_summon(player,2)
                                        --[[local mapid=Char.GetData(player,4)
                                        local frindex=NPC_mate_map_queue[mapid]
                                        local battleIndex = NLG.CreateBattlePvP(player,frindex)--开始战斗
                                        NPC_mate_if_rank[battleIndex]=M_Arena_rank_save[mapid][1]
                                        M_Arena_rank_save[mapid]=nil--]]
                                       
                                        time_save_tab[tcdk][3]=time_save_tab[tcdk][3]-1
                                else
                                        NLG.SystemMessage(player,"[系统]当前竞技场内人数过多,请等待其他竞技战斗的结束")
                                end
                        else
                                local mapid = Char.GetData(player,4)
                                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid]
                                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid]
                                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid]
                                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid]
                                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid]
                                NL.DelNpc(NPC1);
                                LuaNpcIndex["test_map_npc_1"..mapid]=nil
                                NL.DelNpc(NPC2);
                                LuaNpcIndex["test_map_npc_2"..mapid]=nil
                                NL.DelNpc(NPC3);
                                LuaNpcIndex["test_map_npc_3"..mapid]=nil
                                NL.DelNpc(NPC4);
                                LuaNpcIndex["test_map_npc_4"..mapid]=nil
                                NL.DelNpc(NPC5);
                                LuaNpcIndex["test_map_npc_5"..mapid]=nil
                                if luamap_tab[player] then
                                        luamap_tab[player]=nil--删除玩家进入哪个王国竞技场地图的记录       
                                end
                                NLG.Warp(player, 0, 38082, 22, 12)
                                NLG.DischargeParty(player)
                                Map.Delete(nil,nil,1,mapid)
                                if M_Arena_ran_nl_tab2[mapid] then
                                        M_Arena_ran_nl_tab2[mapid]=nil
                                end
                                if M_Arena_rank_save[mapid] then
                                        M_Arena_rank_save[mapid]=nil
                                end
                                NLG.SystemMessage(player,"[系统]您的挑战次数不足,离开王国竞技场")
                        end
                end
        end
end

function test_map_npc_windows_3(_TalkIndex, player, _Seqno, _Select, _Data)
        if _Select~=2 then
                if _Select==1 then
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk = CDK..rignum
                        if time_save_tab[tcdk][3]>0 then
                                local zxrs=NLG.GetOnLinePlayer()
                                if NPC_mate_playernum-zxrs>50 then
                                        opponent_summon(player,3)
                                        --[[local mapid=Char.GetData(player,4)
                                        local frindex=NPC_mate_map_queue[mapid]
                                        local battleIndex = NLG.CreateBattlePvP(player,frindex)--开始战斗
                                        NPC_mate_if_rank[battleIndex]=M_Arena_rank_save[mapid][1]
                                        M_Arena_rank_save[mapid]=nil--]]
                                       
                                        time_save_tab[tcdk][3]=time_save_tab[tcdk][3]-1
                                else
                                        NLG.SystemMessage(player,"[系统]当前竞技场内人数过多,请等待其他竞技战斗的结束")
                                end
                        else
                                local mapid = Char.GetData(player,4)
                                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid]
                                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid]
                                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid]
                                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid]
                                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid]
                                NL.DelNpc(NPC1);
                                LuaNpcIndex["test_map_npc_1"..mapid]=nil
                                NL.DelNpc(NPC2);
                                LuaNpcIndex["test_map_npc_2"..mapid]=nil
                                NL.DelNpc(NPC3);
                                LuaNpcIndex["test_map_npc_3"..mapid]=nil
                                NL.DelNpc(NPC4);
                                LuaNpcIndex["test_map_npc_4"..mapid]=nil
                                NL.DelNpc(NPC5);
                                LuaNpcIndex["test_map_npc_5"..mapid]=nil
                                if luamap_tab[player] then
                                        luamap_tab[player]=nil--删除玩家进入哪个王国竞技场地图的记录       
                                end
                                NLG.Warp(player, 0, 38082, 22, 12)
                                NLG.DischargeParty(player)
                                Map.Delete(nil,nil,1,mapid)
                                if M_Arena_ran_nl_tab2[mapid] then
                                        M_Arena_ran_nl_tab2[mapid]=nil
                                end
                                if M_Arena_rank_save[mapid] then
                                        M_Arena_rank_save[mapid]=nil
                                end
                                NLG.SystemMessage(player,"[系统]您的挑战次数不足,离开王国竞技场")
                        end
                end
        end
end

function test_map_npc_windows_4(_TalkIndex, player, _Seqno, _Select, _Data)
        if _Select~=2 then
                if _Select==1 then
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk = CDK..rignum
                        if time_save_tab[tcdk][3]>0 then
                                local zxrs=NLG.GetOnLinePlayer()
                                if NPC_mate_playernum-zxrs>50 then
                                        opponent_summon(player,4)
                                        --[[local mapid=Char.GetData(player,4)
                                        local frindex=NPC_mate_map_queue[mapid]
                                        local battleIndex = NLG.CreateBattlePvP(player,frindex)--开始战斗
                                        NPC_mate_if_rank[battleIndex]=M_Arena_rank_save[mapid][1]
                                        M_Arena_rank_save[mapid]=nil--]]
                                       
                                        time_save_tab[tcdk][3]=time_save_tab[tcdk][3]-1
                                else
                                        NLG.SystemMessage(player,"[系统]当前竞技场内人数过多,请等待其他竞技战斗的结束")
                                end
                        else
                                local mapid = Char.GetData(player,4)
                                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid]
                                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid]
                                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid]
                                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid]
                                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid]
                                NL.DelNpc(NPC1);
                                LuaNpcIndex["test_map_npc_1"..mapid]=nil
                                NL.DelNpc(NPC2);
                                LuaNpcIndex["test_map_npc_2"..mapid]=nil
                                NL.DelNpc(NPC3);
                                LuaNpcIndex["test_map_npc_3"..mapid]=nil
                                NL.DelNpc(NPC4);
                                LuaNpcIndex["test_map_npc_4"..mapid]=nil
                                NL.DelNpc(NPC5);
                                LuaNpcIndex["test_map_npc_5"..mapid]=nil
                                if luamap_tab[player] then
                                        luamap_tab[player]=nil--删除玩家进入哪个王国竞技场地图的记录       
                                end
                                NLG.Warp(player, 0, 38082, 22, 12)
                                NLG.DischargeParty(player)
                                Map.Delete(nil,nil,1,mapid)
                                if M_Arena_ran_nl_tab2[mapid] then
                                        M_Arena_ran_nl_tab2[mapid]=nil
                                end
                                if M_Arena_rank_save[mapid] then
                                        M_Arena_rank_save[mapid]=nil
                                end
                                NLG.SystemMessage(player,"[系统]您的挑战次数不足,离开王国竞技场")
                        end
                end
        end
end

function test_map_npc_windows_5(_TalkIndex, player, _Seqno, _Select, _Data)
        if _Select~=2 then
                if _Select==1 then
                        local CDK=Char.GetData(player,2002)
                        local rignum=Char.GetData(player,48)
                        local tcdk = CDK..rignum
                        if time_save_tab[tcdk][3]>0 then
                                local zxrs=NLG.GetOnLinePlayer()
                                if NPC_mate_playernum-zxrs>50 then
                                        opponent_summon(player,5)
                                        --[[local mapid=Char.GetData(player,4)
                                        local frindex=NPC_mate_map_queue[mapid]
                                        local battleIndex = NLG.CreateBattlePvP(player,frindex)--开始战斗
                                        NPC_mate_if_rank[battleIndex]=M_Arena_rank_save[mapid][1]
                                        M_Arena_rank_save[mapid]=nil--]]
                                       
                                        time_save_tab[tcdk][3]=time_save_tab[tcdk][3]-1
                                else
                                        NLG.SystemMessage(player,"[系统]当前竞技场内人数过多,请等待其他竞技战斗的结束")
                                end
                        else
                                local mapid = Char.GetData(player,4)
                                local NPC1=LuaNpcIndex["test_map_npc_1"..mapid]
                                local NPC2=LuaNpcIndex["test_map_npc_2"..mapid]
                                local NPC3=LuaNpcIndex["test_map_npc_3"..mapid]
                                local NPC4=LuaNpcIndex["test_map_npc_4"..mapid]
                                local NPC5=LuaNpcIndex["test_map_npc_5"..mapid]
                                NL.DelNpc(NPC1);
                                LuaNpcIndex["test_map_npc_1"..mapid]=nil
                                NL.DelNpc(NPC2);
                                LuaNpcIndex["test_map_npc_2"..mapid]=nil
                                NL.DelNpc(NPC3);
                                LuaNpcIndex["test_map_npc_3"..mapid]=nil
                                NL.DelNpc(NPC4);
                                LuaNpcIndex["test_map_npc_4"..mapid]=nil
                                NL.DelNpc(NPC5);
                                LuaNpcIndex["test_map_npc_5"..mapid]=nil
                                if luamap_tab[player] then
                                        luamap_tab[player]=nil--删除玩家进入哪个王国竞技场地图的记录       
                                end
                                NLG.Warp(player, 0, 38082, 22, 12)
                                NLG.DischargeParty(player)
                                Map.Delete(nil,nil,1,mapid)
                                if M_Arena_ran_nl_tab2[mapid] then
                                        M_Arena_ran_nl_tab2[mapid]=nil
                                end
                                if M_Arena_rank_save[mapid] then
                                        M_Arena_rank_save[mapid]=nil
                                end
                                NLG.SystemMessage(player,"[系统]您的挑战次数不足,离开王国竞技场")
                        end
                end
        end
end

function test_map_npcex(index)
        return true;
end

function test_map_npcex2(index)
        return true;
end

function opponent_summon(player,num)
        local mapid=Char.GetData(player,4)
        local Job=tonumber(M_Arena_ran_nl_tab2[mapid][num]["0_7"]) or "NULL"
        local number = M_Arena_Jobnum[Job] or 5
        local numb=tonumber(M_Arena_ran_nl_tab2[mapid][num]["0_56"]) or "NULL"
        NPC_mate_map_teamlong[player]=numb
        NPC_mate_summon(player,number,11+num)--num=place-11,还原num代码:tonumber(string.sub(place,-2,-1)) -11
        if numb>0 then
                for i=1,numb do
                        local sqllw = "0_"..tostring(32+i*29)
                        local fnum=tonumber(M_Arena_ran_nl_tab2[mapid][num][sqllw])
                        NPC_mate_summon(player,fnum,11+num+100*i)--place还原方法:place>100 第一个佣兵  >200是第二个佣兵 >300是第三个佣兵 >400是第四个佣兵,还原num代码:tonumber(string.sub(place,-2,-1)) -11
                end
        end
end


function King_Shut_down()
        --print("\n\n 服务器关闭检测成功")
        local f = io.open("./lua/luatxt/gjxjl/itemlog.txt","w+")
        local msg = ""
        for k,v in pairs(M_Arena_rank_give_item) do--k是tcdk,v是具体表
                if tablength(v)>0 then
                        msg = msg..k..":"
                        for a,b in ipairs(v) do
                                msg = msg..b..","
                        end
                        msg = msg.."\n"
                end
        end
        f:write(msg)
        f:close()
        local f = io.open("./lua/luatxt/gjxjl/itemdaylog.txt","w+")
        local msg = ""
        for k,v in ipairs(M_Arena_give_Award_safe) do--k是日期,v是是否已经发过奖励
                msg = msg..k..":"..v.."\n"
        end
        f:write(msg)
        f:close()
        for k,v in pairs(luamap_tab) do
                local tTable = NLG.GetMapPlayerList(1,v);
                if #tTable>0 then
                        for i=1,#tTable do
                                local maptype = Char.GetData(tTable[i],3)
                                if maptype==1 then
                                        local mapid = Char.GetData(tTable[i],4)
                                        if luamap_info_tab[mapid] then
                                                local RegistNumber = Char.GetData(tTable[i],%对象_RegistNumber%)
                                                local cdk = Char.GetData(tTable[i],%对象_帐号%)
                                                local FL=1000
                                                local x=233
                                                local y=78
                                                if Char.GetData(tTable[i],151) == 0 then--判断玩家定居点为0号定居点
                                                        local rd = math.random(1,6);
                                                        if rd == 1 then
                                                                FL=1000
                                                                x=233
                                                                y=78
                                                        elseif rd == 2 then
                                                                FL=1000
                                                                x=242
                                                                y=100
                                                        elseif rd == 3 then
                                                                FL=1000
                                                                x=141
                                                                y=148
                                                        elseif rd == 4 then
                                                                FL=1000
                                                                x=63
                                                                y=79
                                                        elseif rd == 5 then
                                                                FL=1000
                                                                x=162
                                                                y=130
                                                        else
                                                                FL=1000
                                                                x=72
                                                                y=123
                                                        end
                                                elseif Char.GetData(tTable[i],151) == 1 then--判断玩家定居点为1
                                                        FL=33200
                                                        x=99
                                                        y=165--阿凯鲁法村定居点坐标
                                                elseif Char.GetData(tTable[i],151) == 2 then--判断玩家定居点为2
                                                        FL=43100
                                                        x=120
                                                        y=107--哥拉尔镇定居点坐标
                                                end
                                                local sql = "UPDATE `tbl_character` SET `Map`='0',`Fl`='"..FL.."',`X`='"..x.."', `Y`='"..y.."' WHERE (`RegistNumber`='"..RegistNumber.."') AND (`CdKey`='"..cdk.."')"
                                                local sqlfh = SQL.Run(sql)
                                        end
                                end
                        end
                end
        end
end

function King_Rank_set_itemtab()
        local file = io.open("./lua/luatxt/gjxjl/itemlog.txt", "r")
        for line in file:lines() do
                local ScapePack = splitplus(line,":")
                if ScapePack[2]~=nil then--文件内容存在
                        local tab = splitplus(ScapePack[2],",")
                        local tTabKey=ScapePack[1]
                        M_Arena_rank_give_item[tTabKey]={}
                        for x,y in pairs(tab) do
                                if y~="" then
                                        M_Arena_rank_give_item[tTabKey][x]=tonumber(y)
                                end
                        end
                end
        end
        file:close()
end

function King_Rank_set_msg_trim(s)
   return string.gsub(s, "^%s*(.-)%s*$", "%1")
end


回复

使用道具 举报

Archiver|魔力研究社

GMT+8, 2025-5-15 18:14 , Processed in 0.140636 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表