跳到主要内容

game_server.offline_user

简介

玩家离线以后的一些功能支持

目前主要是提供获取离线玩家一些字段的功能

组件接口

offline_user.gs

函数原型函数作用
bool setup(map para = )初始化本模块
mixed get_property(string key)获取本模块的属性值
void set_user_fields(string user_rid, map user_fields)设置离线玩家信息
map raw_query_user_fields(string user_rid)获取离线玩家信息(直接从数据库中获取)
map query_user_fields(string user_rid)查询离线玩家信息(直接从当前缓存中获取)
mixed query_user_field(string user_rid, string field)查询离线玩家的某个字段值(直接从缓存中获取)
void delete_user_fields(string user_rid)删除离线玩家信息
map assure_user_fields(string user_rid)获取离线玩家信息
void refresh_user_fields(object user_ob)刷新离线玩家信息

样例

// 启动engine
cfg.init_by_map({
"server_id" : 1234,
"disable_mongo" : true
});
etc.set("transform_to_dat", false);
engine.boot();

// 离线玩家模块初始化
bool setup_result = offline_user.setup({
"user_fields" : [ "name", "level"]
});
test_equal(setup_result, true);

map user_dict = {};

// 模拟预加载离线玩家
for (int i = 1 upto 9)
{
int level = i;
string user_rid = RidD.new_rid("TST");
map user_fields = {
"name" : sprintf("test%d", level),
"level" : level
};
offline_user.set_user_fields(user_rid, user_fields);

// 记录离线玩家信息
user_dict[user_rid] = level;
}

for (string user_rid, int level : user_dict)
{
string name = sprintf("test%d", level);
test_equal(offline_user.query_user_field(user_rid, "level"), level);
test_equal(offline_user.query_user_field(user_rid, "name"), name);

map user_fields = offline_user.query_user_fields(user_rid);
test_equal(user_fields.level, level);
test_equal(user_fields.name, name);
}

// 不存在的rid
string unknown_rid1 = RidD.new_rid("TST");
test_equal(offline_user.assure_user_fields(unknown_rid1), nil);