自定义排行榜
效果展示
新增一个自定义排行榜
- 自定义排行榜并初始化数据
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 排行榜信息
字段 | 数据结构 | 字段含义 |
---|---|---|
uuid | number | 唯一标识 |
name | string | 名字 |
sort_kv | table | 排序信息,["key"] = val ,key: 排序关键字名 val:数据值 |