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);