跳到主要内容

game_server.game_social

简介

和社交服务器交互的功能模块

本功能模块导入项目的几点说明

  1. 本模块基于engine层

  2. 本模块依赖游戏服务器的网络服务和http服务,必须在游戏服务器的网络服务和http服务就位后才能进行加载

  3. 需要调用本模块的setup方法进行初始化

  4. 本模块提供一些预置的脚本功能和游戏指令等,也可以通过包含本模块提供的组件进行扩展

其它说明:

  1. cmds/refresh_social_token.gs - 刷新游戏客户端用于登录社交服的token

  2. cmds/take_mail_gifts.gs - 领取邮件附件奖励的指令

  3. http_cmds/auth_social_account.gs - 游戏服务器做为社交服的登录验证代理时提供的http指令(验证游戏服提供的登录社交服的token)

  4. scripts/chat_scripts.gs - 预置的几个聊天相关的功能函数的集合

  5. scripts/mail_scripts.gs - 预置的几个邮件相关的功能函数的集合

  6. 可以通过game_social.dump_scripts()输出所有可用的功能脚本(通过game_social.eval调用)

  7. 可以通过包含FUserSocial组件,开启社交服用户创建、验证等功能

  8. 可以通过包含FSocialScript组件,自定扩展功能模块的功能(通过game_social.eval方法进行调用)

组件接口

FSocialScript.gs

用于扩展社交服对接模块的功能组件 所有用于增加自定义的本地功能脚本(参考scripts/目录下的功能脚本)应该包含本组件

函数原型函数作用
void register_scripts(string prefix, array func_name_list)注册一组指定名称的脚本函数
void auto_register_scripts(string prefix)自动注册脚本函数(底层限制,不太精准,但是可用)
void register_script_func(string script_name, function func)注册脚本函数
void unregister_script_func(string script_name)注销脚本函数
void unregister_all_script_func()注销所有脚本函数

FUserSocial.gs

为User对象提供的社交服组件 1.生成一个随机数提供给游戏客户端,做为游戏客户端登录社交服务器的凭证(token) 2.游戏客户端可以通过refresh_social_token指令,向游戏服务器重新请求社交服登录凭证(token)

函数原型函数作用
void assure_social_account(map para = )确保社交服账号存在并向游戏客户端发送社交服登录凭证(已经存在则下发登录token,不存在则创建账号后再下发登录token)
bool check_social_token(mixed token)校验社交服登录token是否和玩家持有的token匹配
bool refresh_social_token()刷新社交服登录凭证(token)

game_social.gs

函数原型函数作用
bool setup(mixed para = nil)初始化模块
mixed send_request(string cmd, map args)向社交服发送指令,并阻塞等待指令结果返回
void send(string cmd, map args)向社交服发送指令,不等待指令结果返回
bool contains_script(mixed script_name_list)是否包含指定的脚本函数
mixed eval(string script_name, ...)执行脚本函数
void register_script_func_dict(map dict)登记一组脚本函数(登记后才能通过game_social.eval函数调用)
void register_script_func(string script_name, function func)登记脚本函数
void unregister_script_func(string script_name)移除已登记脚本函数
void unregister_script_funcs(array script_name_list)移除一组已登记的脚本函数
void register_scripts_owner(array script_name_list, object owner)注册脚本函数的所有者(已存在则覆盖)
array unregister_scripts_owner(array script_name_list, object ob)移除脚本函数的所有者
object admin()获取社交服的客户端连接对象(全局唯一,有管理员权限)
void dump_scripts()调试接口 - 显示所有已登记脚本函数名称
bool create_account(string account, map info = )创建社交服账号
bool check_account(string account)检查指定社交服账号是否存在
bool delete_account(string account, bool mark_deleted = true)删除社交服账号

chat_scripts.gs

为game_social添加聊天操作的脚本

函数原型函数作用
void send_sys_world_chat(string content, map extra_para = nil)发送系统的世界聊天信息
void send_channel_chat(map args)发送频道聊天信息

mail_scripts.gs

为game_social添加邮件操作的脚本

函数原型函数作用
void broadcast_mail(string title, string content, mixed gifts = nil, mixed category = nil, mixed category_data = nil, mixed register_time = nil, string channel = nil, map extra_data = nil)广播邮件
void send_mail(mixed receiver, string title, string content, mixed gifts = nil, mixed category = nil, mixed category_data = nil, mixed register_time = nil, string channel = nil, map extra_data = nil)发送邮件
mixed get_mails_with_attachment(string mail_owner, array mail_ids)获取拥有待领取附件的邮件信息列表
mixed take_mails_attachment(string mail_owner, array mail_ids)执行批量标记邮件附件为已领状态

Mail

邮件数据结构

成员变量

变量名类型初始值须初始化描述
cookieint0可选邮件必须有的字段:
cookie,当Mail做为阻塞请求参数时需要
receivermixednil可选邮件收件人
contentstringnil可选邮件文本内容
titlestringnil可选以下是自定义字段:
邮件标题
attachmentmapnil可选附件
categorystringnil可选邮件分类
category_datamapnil可选邮件分类特有的数据
channelstringnil可选收件人注册渠道限制(可选)
register_timemixednil可选收件人注册时间限制(可选)
extra_dictmapnil可选其它附加字段词典(可选)

成员方法

函数原型函数作用
void set_title(string title)设置邮件标题
void set_content(string content)设置邮件内容
void set_receiver(mixed receiver)设置邮件收件人
void set_category(string category)设置邮件分类
void set_category_data(map category_data)设置邮件分类特有的数据
void set_register_time(int register_time)设置邮件收件人注册时间限制
void set_channel(string channel)设置邮件收件人注册渠道限制
void set_extra_field(string key, mixed value)设置邮件附加字段
void set_extra_fields(map dict)设置一组邮件附加字段
map get_entire_dict()获取邮件的所有字段词典
void add_gifts(mixed gift_data)向邮件添加礼物数据

样例


// 社交服模块安装
game_social.setup({
"extra_script_path" : __DIR__ "other_scripts/",
"extra_cmd_path" : __DIR__ "other_cmds/",
"extra_http_cmd_path" : __DIR__ "other_http_cmds/",
"httpserver_ob" : httpserver.find_server_by_port(http_server_port)
});