废话不多说上传对应脚本
local tbl={[3]={'仙力','生命上限','攻击力','防御力','移动速度','生命偷取率','等级','轮回次数',},
[4]={'境界名称',},
}
--玩家私有变量组[是组]
local tbls={[17]={'攻击力'},
}
--此脚本仅用于上传更新表排行榜数据,
--星空露珠工作室制作
--玩家私有变量
local tbl={[3]={'玩家登录次数','玩家累计时长','玩家累计步数','玩家死亡次数','玩家累计领地'},
[4]={'称号',},
}
local tbls={[17]={'数组测试',},
}--[[玩家私有变量[不是组]
local tbl={[3]={'仙力','生命上限','攻击力','防御力','移动速度','生命偷取率','等级','轮回次数',},
[4]={'境界名称',},
}
--玩家私有变量组[是组]
local tbls={[17]={'攻击力'},
}
--]]
local libvarname1 = 'rank_10'--排行榜名称索引
local libvarname2 = 'datalist_1'--表索引
local rankname='玩家累计领地' --排行榜私有变量名字
local ranktype=3 --排行榜是数值
--设置私有变量函数
local function setvarLib(objid,actionattr,msg,num)
VarLib2:setPlayerVarByName(objid,actionattr,msg,num)
end
--获取私有变量函数并返回,数值或者字符串
local function getvarLib(objid,actionattr,msg)
local result,value = VarLib2:getPlayerVarByName(objid,actionattr,msg)
return value
end
--获取私有变量组函数并返回,数值组或者字符串组
local function getallgroup(objid,actionattr,msg)
local result,ret=Valuegroup:getAllGroupItem(actionattr, msg, objid)
return ret
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--上传排行榜
local function setorderdata(key,val)
local ret = CloudSever:setOrderDataBykey(libvarname1,key,val)
end
--获取排行榜
local function getorderdata(key)
local callback = function (ret,k,v,ix) -- 返回结果不一定有排名
if ret == ErrorCode.OK then
if getvarLib(key,ranktype,rankname) >= k then
setorderdata(key,getvarLib(key,ranktype,rankname))
end
else
setorderdata(key,getvarLib(key,ranktype,rankname))
end
end
local ret = CloudSever:getOrderDataByKeyEx(libvarname1,key,callback)
end--玩家进入游戏
local function enter(param)
local p=param.eventobjid
getorderdata(p)
local msg='玩家登录次数'
setvarLib(p,ranktype,msg,getvarLib(p,ranktype,msg)+1)
while true do local msg='玩家累计时长'
setvarLib(p,ranktype,msg,getvarLib(p,ranktype,msg)+10)
threadpool:wait(10)
end
end
ScriptSupportEvent:registerEvent_NoError('Game.AnyPlayer.EnterGame', enter)
local function move(param)
local p=param.eventobjid
local msg='玩家累计步数'
setvarLib(p,ranktype,msg,getvarLib(p,ranktype,msg)+1)
end
ScriptSupportEvent:registerEvent_NoError('Player.MoveOneBlockSize', move)
local function click(param)
local p=param.eventobjid
local msg='玩家累计领地'
setvarLib(p,ranktype,msg,getvarLib(p,ranktype,msg)+math.random(100,10000))
endScriptSupportEvent:registerEvent_NoError('Player.ClickBlock', click)
--上传玩家表 更新数据上传60秒更新
local function setdataList(key)
local result,name=Player:getNickname(key)
local code, modleName = Actor:getActorFacade(key)
local data={}
data.name=name
data.id=key
data.modleName=modleName
for k,v in pairs(tbl) do
for _,v0 in pairs(v) do
data[v0]=getvarLib(key,k,v0)
end
end
for k,v in pairs(tbls) do
for _,v0 in pairs(v) do
data[v0]=getallgroup(key,k,v0)
end
end
print('上传',data)
CloudSever:setDataListBykey(libvarname2,key,data)
end
local players={}
local function getpaly()
--获取当前存档全部玩家列表
--参数:-1全部玩家 0阵亡玩家 1存活玩家
local result,num,array=World:getAllPlayers(-1)
for k,v in pairs(array) do
--设玩家排行榜数值
setorderdata(v,getvarLib(v,ranktype,rankname))
--上传玩家表数值
setdataList(v)
end
endlocal function func_runtime(param)
-- print(param)
local tick=param.ticks
--上传房间内玩家数据60秒到刷新排行榜
if tick%600==40 then
getpaly()
end
end
ScriptSupportEvent:registerEvent('Game.RunTime', func_runtime)
以下是变量对应的数值,查看
--[[
VARTYPE.POSITION 1 位置
VARTYPE.AREAINS 2 区域
VARTYPE.NUMBER 3 数值
VARTYPE.STRING 4 字符串
VARTYPE.BOOLEAN 5 布尔值
VARTYPE.PLAYER 6 玩家
VARTYPE.PLAYERGROUP 7 玩家组
VARTYPE.BLOCKTYPE 8 方块类型
VARTYPE.ITEMTYPE 9 道具类型
VARTYPE.CREATURE 10 生物
VARTYPE.ACTORID 11 生物类型
VARTYPE.CREATUREGROUP 12 生物组
VARTYPE.TIMER 13 定时器
VARTYPE.EFFECTTYPE 14 特效类型
VARTYPE.SITEGROUP 15 位置组
VARTYPE.AREAGROUP 16 区域组
VARTYPE.NUMBERGROUP 17 数值组
VARTYPE.STRINGGROUP 18 字符串组
VARTYPE.BOOLEANGROUP 19 布尔值组
VARTYPE.BLOCKTYPEGROUP 20 方块类型组
VARTYPE.ITEMTYPEGROUP 21 道具类型组
VARTYPE.CREATURETYPEGROUP 22 生物类型组
VARTYPE.TIMERGROUP 23 计时器组
VARTYPE.EFFECTTYPEGROUP 24 特效类型组
]]