
千人翻页排行榜迷你世界UI
local txt={'(万)','(亿)','(兆)','(京)','(垓)','(秭)','(穰)','(沟)','(涧)','(正)','(载)','(极)',}local tbl={[3]={'仙力','生命上限','攻击力','防御力','移动速度','生命偷取率','等级','轮回次数',},local tbl={[3]={'玩家登录次数','玩家累计时长','玩家累计步数','玩家死
--千人排行榜
--星空露珠工作室制作
--功能1,翻页,2,千人榜,3,查看玩家信息
--赋值表
local tbl={[3]={'玩家登录次数','玩家累计时长','玩家累计步数','玩家死亡次数','玩家累计领地'},}
print('测试',table.concat(tbl[3],","))
local tbl={[3]={'仙力','生命上限','攻击力','防御力','移动速度','生命偷取率','等级','轮回次数',},
[4]={'境界名称',},
}
--玩家私有变量组[是组]
local tbls={[17]={'攻击力'},
}
local libvarname1 = 'rank_10'--排行榜名称索引
local libvarname2 = 'datalist_123456'--表索引
local reqcount = 5000 --榜单上线
local RankInfos = {} --排行榜储存前5千人数据每分钟更新一次
local data={}
local data0={}
--获取玩家在表中的数据(不存在,赋值,存在,比较大小,重新赋值)
local function getdataList(key)
local callback = function (ret,k,v)
print(v.v)
data0[tonumber(k)]=v,v
end
local ret = CloudSever:getDataListByKeyEx(libvarname2,key,callback) --获取key1的分数
end
--转换单位保留两位数
local function chak(num)
--万亿兆京垓秭穰沟涧正载极
local txt={'(万)','(亿)','(兆)','(京)','(垓)','(秭)','(穰)','(沟)','(涧)','(正)','(载)','(极)',}
if num/10^4<1 then return num
elseif num/10^(13*4)>1 then return (math.floor(num/10^(12*4-2))/10^2)..txt[12]
end
for i, v in pairs(txt) do
if num/10^(i*4)>=1 and num/10^((i+1)*4)<1 then return (math.floor(num/10^(4*i-2))/10^2)..v end
end
end
--举例
print('56464676549=564.6亿)',chak(56464676549))
print('5646467567888865549=)',chak(5646467567888865549))local function func_runtime(param)
local tick=param.ticks
--下载排行榜玩家数据60秒
if tick%500==10 then
local callback = function (ret,value) -- 返回结果不一定有排名
if value then
print('成功获取60秒排行榜条数据,并打印如下',#value)
print(value)
RankInfos=value
end
end
CloudSever:getOrderDataIndexArea(libvarname1,-5000,callback) -- 从大到小排序的前1000名
elseif tick%500==20 then
local ret,valuesdata = CloudSever:getlistCache(libvarname2)
if ret == ErrorCode.OK then
print('获取数据成功')
for k,v in pairs(valuesdata) do data[tonumber(v.k)]=v.v end
end
end
end
--ScriptSupportEvent:registerEvent('Game.RunTime', func_runtime)
--7479770964540895138-22859_1
local RankUI = "7479770964540895138-22859" -- 填入UIID
local uid ="7479770964540895138-22859_" --UI元件前缀
local pageupele = uid..135 -- 填入向上翻页按钮节点
local pagedownele = uid..136-- 填入向下翻页按钮节点
local pageup = uid..137 -- 填入首页按钮节点
local pagedown = uid..138-- 填入末尾页按钮节点
local pagenum = uid..134-- 显示当前页码txt
local open=uid..140 --打开按钮
local close=uid..139 --关闭按钮
local uitxthide=uid..141 --关闭查看玩家资料按钮
local uitxtshow=uid..142 --显示查看玩家资料-- {"名次"13,【头像14备用】,'昵称'15,'迷你号'16,'分数'17,8,9.10.11}的元件ID,
--(i*10+3), 【 (i*10+4)】,(i+1)*5+10,(i+1)*5+10,(i+1)*5+4
--固定显示自己页码 第11行 i=11
local RefishTxt = 10 --排名10行
local PageItemCount = RefishTxt
local AllUserinfo = {} --储存玩家页码--打印个人信息个人排行榜
local function uiplayer(key)
local ret,values = CloudSever:getlistCache(libvarname1)
print('获取个人排行榜,总数',#values)
local callback = function (ret,k,v,ix) -- 返回结果不一定有排名
print('获取个人排行榜信息',ret,k,v,ix)
local result,name=Player:getNickname(key)
local code, modleName = Actor:getActorFacade(key)
Customui:setText(key,RankUI,uid..11*10+3,(#values-ix+1))
Customui:showElement(key,RankUI,uid..11*10+4)
Customui:setTexture(key,RankUI,uid..11*10+4,modleName)
Customui:setText(key,RankUI,uid..11*10+5,name..'【我】')
Customui:setText(key,RankUI,uid..11*10+6,key)
Customui:setText(key,RankUI,uid..11*10+7,chak(v))
end
local ret = CloudSever:getOrderDataByKeyEx(libvarname1,key,callback)
end
--打印临时玩家数据库
--临时富文本 7479770964540895138-22859_142
--临时赋值函数tbl转换字符串
local function chakred(num,tbl)
local str=' <br> '
for k,v in pairs(tbl) do
if type(v)=='table' then
str=str..k..':'..chakred(num+1,v)..' <br> ' --详细打印
--str=str..k..':'..table.concat(v,',')..' <br> '
elseif type(v)=='boolean' then
print('boolean')
if num==1 then
str=str..k..':'..tostring(v)..' <br> '
else str=str..'['..k..']:'..tostring(v)..','
end
else
if k=='玩家累计领地' then
str=str..k..':'..chak(tonumber(v))..' <br> '
else
if num==1 then
str=str..k..':'..tostring(v)..' <br> '
else str=str..'['..k..']:'..tostring(v)..','
end
end
end
end
return str..' <br> '
endlocal function UIchak0(uin,play)
local player=tonumber(play)
local str='玩家资料库:'..tostring(player)..' <br> '
if data[player]~=nil then
print('资料库chak')
str=str..chakred(1,data[player])
else
getdataList(player)
if data0[player]~=nil then
str=str..chakred(1,data0[player])
else
str=str..'未查到该玩家数据 <br> 请60秒后获取查看'
end
end
print('查看数据',str)
Customui:showElement(uin,RankUI,uitxthide)
Customui:setText(uin,RankUI,uitxtshow,str)
end--刷新翻页排行榜
local function RankRefish(uin)
Customui:setText(uin,RankUI,pagenum,'第'..tostring(AllUserinfo[uin]+1)..'页')
uiplayer(uin)
if not AllUserinfo[uin] then AllUserinfo[uin] = 0 end
print('当前页码'..AllUserinfo[uin]+1) --当前页码
Customui:setText(uin,RankUI,pagenum,'第'..tostring(AllUserinfo[uin]+1)..'页')
local istr = AllUserinfo[uin]*PageItemCount + 1
if istr > #RankInfos then print(istr) end
for i = 1, PageItemCount do
print('测试排行榜刷新进度'..i)
--getdataList(tonumber(RankInfos[istr].k))
if istr <= #RankInfos then
Customui:showElement(uin,RankUI,uid..i+122)
if RankInfos[istr].k==uin or tonumber(RankInfos[istr].k)==uin then
Customui:setText(uin,RankUI,uid..i*10+3,istr)
Customui:showElement(uin,RankUI,uid..i*10+4)
Customui:setTexture(uin,RankUI,uid..i*10+4,data[tonumber(RankInfos[istr].k)].modleName)
Customui:setText(uin,RankUI,uid..i*10+5,RankInfos[istr].nick..'【我】')
Customui:setText(uin,RankUI,uid..i*10+6,RankInfos[istr].k)
Customui:setText(uin,RankUI,uid..i*10+7,chak(RankInfos[istr].v))
istr = istr + 1
else
Customui:setText(uin,RankUI,uid..i*10+3,istr)
Customui:showElement(uin,RankUI,uid..i*10+4)
Customui:setTexture(uin,RankUI,uid..i*10+4,data[tonumber(RankInfos[istr].k)].modleName)
Customui:setText(uin,RankUI,uid..i*10+5,RankInfos[istr].nick )
Customui:setText(uin,RankUI,uid..i*10+6,RankInfos[istr].k)
Customui:setText(uin,RankUI,uid..i*10+7,chak(RankInfos[istr].v))
istr = istr + 1
end
else
Customui:setText(uin,RankUI,uid..i*10+3,'')
Customui:hideElement(uin,RankUI,uid..i*10+4)
Customui:setText(uin,RankUI,uid..i*10+5,'')
Customui:setText(uin,RankUI,uid..i*10+6,'')
Customui:setText(uin,RankUI,uid..i*10+7,'')
Customui:hideElement(uin,RankUI,uid..i+122)
end
end
endlocal function func_openui(e)
local uin = e.eventobjid
if #RankInfos > 0 and e.CustomUI == RankUI then
AllUserinfo[uin] = 0 --初始化玩家当前页码数值
RankRefish(uin)
uiplayer(uin)
end
end--翻页功能点击按钮
-- 查看122相减 123-132.自己133
local chak0={[uid..123]=1,[uid..124]=2,[uid..125]=3,[uid..126]=4,[uid..127]=5,[uid..128]=6,[uid..129]=7,[uid..130]=8,[uid..131]=9,[uid..132]=10,[uid..133]=0,}local function func_page(e)
local uin = e.eventobjid
if uin and e.btnelenemt then
if e.btnelenemt == pageupele then
if not AllUserinfo[uin] then AllUserinfo[uin] = 0 end
AllUserinfo[uin] = AllUserinfo[uin] + 1
if AllUserinfo[uin] >= math.ceil(#RankInfos / PageItemCount ) then AllUserinfo[uin] = math.ceil(#RankInfos / PageItemCount)-1 return end
RankRefish(uin)
elseif e.btnelenemt == pagedownele then
if not AllUserinfo[uin] then AllUserinfo[uin] = 0 end
AllUserinfo[uin] = AllUserinfo[uin] - 1
if AllUserinfo[uin] < 0 then AllUserinfo[uin] = 0 return end
RankRefish(uin)
--以下 1-11按钮重点
elseif chak0[e.btnelenemt]~=nil then --查看资料
--点击查看资料按钮1-10 自己是11
if chak0[e.btnelenemt]~=0 then
local istr = AllUserinfo[uin]*PageItemCount+chak0[e.btnelenemt]
UIchak0(uin,tonumber(RankInfos[istr].k))
else
UIchak0(uin,uin)
end
elseif e.btnelenemt==open then
Customui:showElement(uin,RankUI,uid..2)
Customui:hideElement(uin,RankUI,open)
AllUserinfo[uin] = 0 --初始化玩家当前页码数值
RankRefish(uin)
--uiplayer(uin)
elseif e.btnelenemt==close then
Customui:hideElement(uin,RankUI,uid..2)
Customui:showElement(uin,RankUI,open)
elseif e.btnelenemt==uid..141 then
Customui:hideElement(uin,RankUI,uid..141)
end
end
end----玩家进入游戏打开UI界面
local function entershowui(param)
local p=param.eventobjid
Player:openUIView(p,RankUI)
end
--玩家进入游戏打开UI界面
local function enter(param)
threadpool:work(function() entershowui(param) end)
end
ScriptSupportEvent:registerEvent('UI.Button.Click', func_page)
ScriptSupportEvent:registerEvent('UI.Show', func_openui)
ScriptSupportEvent:registerEvent('Game.RunTime', func_runtime)
--ScriptSupportEvent:registerEvent('Game.Run', Game_Update)
ScriptSupportEvent:registerEvent_NoError('Game.AnyPlayer.EnterGame', enter)
--ScriptSupportEvent:registerEvent_NoError('Game.AnyPlayer.LeaveGame', LeaveGame)
更多推荐
所有评论(0)