--[[奖励设定
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
|
|