跳到主要内容

自定义排行榜

效果展示

全局排行榜

新增一个自定义排行榜

  • 自定义排行榜并初始化数据
local rank_key = "_level_rank"
local sort_key_name = "player_lv"

-- 创建自定义排行榜
local function _create_rank(player)
edi.rank:init(rank_key, 10) -- 初始化排行榜, 展示数量为10
edi.rank:add_sort_rule(rank_key, sort_key_name, true) --添加排行榜规则,按玩家等级降序排列
local msg = "添加<"..rank_key..">排行榜"..", 展示前十名玩家。 排行榜按照玩家等级降序排列。"
edi.general:send_player_notice(player, core_def.NOTICE_TYPE.ChatBox, msg)
end

edi.event:reg_gm("test:_create_rank", _create_rank)
  • 将玩家所属行会成员都加入到该排行榜,并更新排行榜数据
-- 添加人员至自定义排行榜
local function _add_player(player)
edi.rank:update_info(rank_key, edi.player:get_uuid(player), edi.player:get_name(player), { player_lv = edi.player:get_level(player)}, true) --当前玩家加入排行榜中
local msg = "进入排行榜的玩家有 :\n"
local guild_name = edi.player:get_guild_name(player)--玩家的行会成员加入排行榜中 并更新数据
local guild_obj = edi.guild:get_guild_by_name(guild_name)
if nil == guild_obj then
LOGI("isc_test_guild:get_guild nil")
else
local member_ids = edi.guild:get_member_ids(guild_obj)
for _, member_id in pairs(member_ids) do
local member = edi.player:get_by_uuid(member_id)
if member ~= nil then
msg = msg .. _ .. ". " .. edi.player:get_name(member).."\n"
edi.rank:update_info(rank_key, member_id, edi.player:get_name(member), { player_lv = edi.player:get_level(member)}, true) --更新排行榜信息
end
end
end
edi.general:send_player_notice(player, core_def.NOTICE_TYPE.ChatBox, msg)
end

edi.event:reg_gm("test:_add_player", _add_player)
  • 输出排行榜数据
-- 查看排行榜信息
local function _rank_info(player)
local msg = "\n排行榜列表数据:\n"
local list = edi.rank:get_rank_list_info(rank_key, 1, 10)
for rank, data in ipairs(list) do
msg = msg .. "排名: " .. rank.."\n" .. "唯一标记: ".. data.uuid .."\n".. "名字: " .. data.name .. "\n"
end
edi.general:send_player_notice(player, core_def.NOTICE_TYPE.ChatBox, msg)

local msg1 = "\n当前玩家所属排行榜信息:\n"
local info = edi.rank:get_rank_info(rank_key, edi.player:get_uuid(player))
msg1 = msg1 .. "唯一标记 : " .. info.uuid.."\n" .. "名字 " .. info.name.."\n"
edi.general:send_player_notice(player, core_def.NOTICE_TYPE.ChatBox, msg1)

local rank = edi.rank:get_rank_pos(rank_key, edi.player:get_uuid(player))
local msg3 = "\n排行榜的排位:" .. rank
edi.general:send_player_notice(player, core_def.NOTICE_TYPE.ChatBox, msg3)
end

edi.event:reg_gm("test:_rank_info", _rank_info)
  • 上述样例效果展示

排行榜

排行榜

接口说明

接口接口说明参数返回值
init(rank_key, size)初始化排行榜排行榜key, 展示榜的排名数量
add_sort_rule(rank_key, sort_key_name, is_low)添加排行榜规则排行榜key,排序关键字名,是否降序 true-降序 false-升序
get_rank_list_info(rank_key, start_idx, end_idx)查询排行榜信息排行榜信息,从第几名开始查询(从1开始),从第几名查询结束查询(从1开始)排行榜列表信息 rank_info
update_info(rank_key, uuid, name, t, notify)更新排行榜信息排行榜key,排行信息唯一标识符,名字,table(key: 排序关键字名 val:数据值)是否更新成功
clean(rank_key)清空排行榜排行榜key
get_rank_info(rank_key, uuid)获取目标排名排行榜key, 排行信息唯一标识符排行榜信息 rank_info

rank_info 排行榜信息

字段数据结构字段含义
uuidnumber唯一标识
namestring名字
sort_kvtable排序信息,["key"] = val ,key: 排序关键字名 val:数据值