Files
joywayer 35216f75e7 feat: integrate room framework and isolated subgame bundles
Complete room UI and protocol integration, move game definitions and resources behind bundle entries, publish authoritative version XML, and document single-game builds. Include all current resource changes and experiment artifacts.
2026-09-09 03:13:18 +08:00

56 KiB
Raw Permalink Blame History

平台模板 RPC 全量清单

核对日期:2026-09-05;基线:codex/local-platform-login @ 556c47a。本文是后续联调的索引与覆盖快照,不替代 01–05 章的字段契约,也不表示清单内接口已经验收。

范围与计数

  • 共 86 个唯一名称:旧 RpcList 的 82 个(重复赋值按名称去重),加表外 submit_error、show_message、refresh_task_state,以及 h5RpcList.joinRoom。
  • 这是 Game_Surface_3 平台模板的全量:包含大厅、房间、纯推送、历史/保留名、HTTP 特例和外部桥接。具体子游戏自定义 route/rpc 没有在模板中穷举定义,留到子游戏阶段;本轮不选择或接入真实子游戏。
  • 86 是索引名称数,不是 86 个可直接调用的 WebSocket 接口。submit_log 不另计;握手 @toconcon、心跳 @serverheartbeat 和 webserve-服务器未工作 是传输控制数据,不是业务 RPC。
  • platform 是合法路由名称,但本次模板发送扫描未发现独占 route=platform 的命名业务请求;不复制 agent/room 名称来凑第三份清单。纯推送的路由归档不是当前本地服务器抓包证明。

接入与验收状态口径

  • L:本地真实 Cocos 启动、加载、游客登录已验收;仅 player_login。依据验收记录。
  • R:新 PlatformRuntime 的严格平台分发表已接入(共 11 个,含 L),仅表示源码处理链存在;除 L 外,当前批次没有真实 RPC 成功验收证据。
  • N:不在新 PlatformRuntime 平台分发表中;不代表旧 H5 或旧 PlatformSession 完全没有实现。协议常量存在、旧 room-handlers 存在,均不能算新 Runtime 已接入。
  • X:保留、HTTP 特例或本地桥接,不按普通 WS 平台命令判定。具体子游戏生命周期支持也不等于其某个对局 rpc 已实现。
  • 当前 LocalPlatformLogin 联调入口只允许发 agent/player_login;R 中的房间/切服条目仍受测试边界阻断。本文不放宽测试入口。
  • 条目中“旧发送/接收函数”只表示静态定义,不能推断调用点活跃或服务器确实响应。请求/响应摘要取自对应协议章节;未明确之处保留待核实,不补字段。

发现的差异与注意事项

  1. refresh_task_state:当前旧源码引用未定义常量;02 章称硬编码字符串,已不符。新 routes.ts 也未收录。
  2. submit_error、show_message:旧路径确有硬编码发送/命名接收器,但不在旧 RpcList,也不在新 routes.ts;不能只扫常量表。
  3. submit_log:实际 rpc 仍为 submit_error;change_room 的响应为 change_seat;quick_enter_share_room 没有同名接收器。
  4. README 仍写 WS 双层包装,而 01 章已更正为单层 {app,route,rpc,data};MessageEvent.data 是浏览器事件壳。以 01 章与已验收传输实现为准。
  5. 02 章登录 version:string 与本地已验收 number 值有差异;openid/unionid 不得依据历史“游客可空”注释省略。
  6. 新 routes.ts 的注释分组不是权威 rpc→route 映射,例如 create_room/self_join_room/get_player_grade1/get_player_grade2 在 room 注释区域,但旧发送实际为 agent;本清单按协议与发送源码归档。
  7. can_award 的旧接收器调用未定义 C_Player.can_award;五个社交保留名没有旧 Net 接收器;不能按完整可用协议验收。
  8. update_roomcard/update_bean:05_Func.js 的原生 yPaytype 与 WVJB yPaytype 回调直接上行,02 章“仅接收、无主动请求”不完整;已在条目中补齐,不能划为只读接口。
  9. 本轮仅整理清单,未修改上述历史文档、业务代码、服务端或任何 Cocos 序列化资源。

配置来源与批次边界

  • agentid/gameid/channelid/marketid/version 继续由现有配置来源经 runtime-config/local-startup 解析;各 RPC 只携带它所要求的字段,不能为统一外观给所有请求塞上整套身份。规范字段名为 channelid,不能写 chanelid。
  • openid/unionid 与游客资料由现有 visitor-account 来源读取缓存或生成;登录后的 playerid 来自服务器与 Store。查询目标 playerid 与当前登录 playerid 的语义要逐项区分。
  • roomcode/seat/shortcode/roomtype/deskinfo 等属于后续房间或子游戏范围;短信、原生数据、支付渠道等有各自前置条件,不能生成假值补齐。
  • 后续优先梳理非房间平台 RPC 的只读查询,再逐项处理写操作和推送;房间相关及子游戏最后进行。列入本清单不等于授权执行。

按功能快速浏览

  • 大厅 · 登录 / 账号(6):player_login、query_player2、binding_phone、send_phone_checkcode、send_phone_code_wechat、setSign。
  • 大厅 · 房间创建 / 进入(大厅侧)(8):create_room、self_join_room、quick_enter_share_room、advanced_roomlist、advanced_createroom、get_share_room、getInfoByShortCode、switchRoomList。
  • 大厅 · 战绩 / 排行 / 财富(5):get_player_grade1、get_player_grade2、get_treasurelist、getShortCodeRankList、getVipRankList。
  • 大厅 · 任务系统(5):get_player_task、player_finish_task、get_task_award、refresh_task_state、can_award。
  • 大厅 · 支付 / 充值 / 资产(4):get_paylist、pay_succ、topup_card、giveCoin。
  • 大厅 · 仓库 / 星星 / 魅力(4):set_bankpwd、change_star、update_charm、setAllCharm。
  • 大厅 · 邀请码 / 绑定(2):binding_invitecode、get_player_invitecode。
  • 大厅 · VIP 管理 / 黑白名单(4):optBanList、getPlayerWhiteList、optWhiteList、setVipForbidSelect。
  • 大厅 · 其它 agent 协议(8):submit_opinion、submit_location、submit_phoneinfo、submit_error、kick_server、broadcast、connect_agentserver、playerBehavior。
  • 房间 · 房间生命周期(8):self_break_room、other_break_room、self_exit_room、other_exit_room、player_prepare、change_room、share_room、change_seat。
  • 房间 · 进房推送(他人视角)(3):other_join_room、other_offline、other_online。
  • 房间 · 解散投票(开局后)(8):self_apply_free_room、other_apply_free_room、self_agree_free_room、other_agree_free_room、self_refuse_free_room、other_refuse_free_room、free_room、beanroom_surrender。
  • 房间 · 开局(2):self_makewar、other_makewar。
  • 房间 · 房间内社交(6):send_text、send_voice、send_gift、send_phiz、call_phone、hangup_phone。
  • 保留名称 · 房间社交(5):receive_chat、play_voice、other_send_gift、other_callphone、other_hangup。
  • 大厅 · 资产更新与系统推送(4):update_bean、update_roomcard、kick_offline、show_message。
  • 房间 · 服务器切换(room 侧)(1):connect_roomserver。
  • 子游戏 · 框架保留名称(2):over_game、agentserver_game。
  • 外部桥接 · 非网络 RPC(1):joinRoom。

全量条目

大厅 · 登录 / 账号(6)

01. player_login

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:L / R;新 Rpc 常量:有。
  • 用途:连接建立后 onopen 自动发送;断线重连、切服后重发(12_Logic.js:35、:61 构造,09_Net.js:122 Send_login 注入)。
  • 请求:构建身份 agentid/gameid/channelid/marketid/version;账号 openid/unionid/nickname/avatar/sex/province/city;设备与环境 machineid/machineroom/location/ip;按来源契约携带设备登录和缓存 playerid 等可选字段。完整结构见登录契约与 02/04 章。
  • 响应/推送:state(0 成功);账号/资产字段,以及可能存在的房间恢复快照。完整结构见 04 章与当前 login-contract;本批只验收不在房的成功登录。
  • 注意:真实本地启动→加载→游客登录已验收;version=1(number)已被本地服务器接受。02 章 version:string、游客 openid 可空的描述不能作为本地联调输入依据;本地服务要求 openid 与 unionid。房间恢复不在已验收范围。
  • 依据:02-协议-agent路由.md;旧函数:Send_login、player_login。

02. query_player2

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:仓库转账前查询目标玩家信息。
  • 请求:agentid、playerid(目标玩家ID)。
  • 响应/推送:avatar(string)、nickname(string)、playerid(int);昵称/头像均空时提示"未找到对应玩家"。
  • 依据:02-协议-agent路由.md;旧函数:Send_query_player2、query_player2。

03. binding_phone

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:绑定手机号。
  • 请求:agentid、playerid、phonenum、smmcode(短信验证码)。
  • 响应/推送:phonenum(string,回写 C_Player.tel)。
  • 依据:02-协议-agent路由.md;旧函数:Send_binding_phone、binding_phone。

04. send_phone_checkcode

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:发送手机短信验证码。
  • 请求:agentid、phonenum(构造点未集中定位,至少含手机号)。
  • 响应/推送:无业务字段(Desk.send_phone_checkcode 为空实现,07_Desk.js:1342)。
  • 注意:⚠️ 请求字段以后端实现为准。
  • 依据:02-协议-agent路由.md;旧函数:Send_send_phone_checkcode、send_phone_checkcode。

05. send_phone_code_wechat

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:微信渠道发送手机验证码(绑定手机流程的另一入口)。
  • 请求:agentid、phonenum(唯一调用点 11_GameUI.js:2620-2623 当前被注释,按注释代码为 agentid+phonenum)。
  • 响应/推送:无业务字段(Desk.send_phone_code_wechat 为空实现,07_Desk.js:1345)。
  • 注意:⚠️ 框架完整定义并接线,但当前前端唯一调用点(11_GameUI.js:2623)被注释,实际不发送;字段以后端实现为准。
  • 依据:02-协议-agent路由.md;旧函数:Send_send_phone_code_wechat、send_phone_code_wechat。

06. setSign

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:设置个性签名。
  • 请求:agentid、playerid、sign。
  • 响应/推送:sign(string,回显写入 C_Player.sign)。
  • 依据:02-协议-agent路由.md;旧函数:Send_setSign、setSign。

大厅 · 房间创建 / 进入(大厅侧)(8)

07. create_room

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:玩家创建房间。
  • 请求:agentid、playerid、gameid、roomtype(房间类型配置数组,见 doc04);Send_create_room 自动注入 ip=C_Player.ip、location=C_Player.addr(09_Net.js:106-107)。
  • 响应/推送:state(0成功)、roomcode、seat、roomtype、makewar、asetcount、shortcode、infinite;失败 showerror/error。详见 04 → 房间响应公共字段。
  • 依据:02-协议-agent路由.md;旧函数:Send_create_room、create_room。

08. self_join_room

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:R;新 Rpc 常量:有。
  • 用途:输入房号 / 快速加入 / H5 唤起 / 进 VIP 配置房。
  • 请求:agentid、playerid、gameid、roomcode(房号);Send_self_join_room 自动注入 location=C_Player.addr、ip=C_Player.ip(09_Net.js:254-255);进 VIP 配置房入口额外带 vipMatch:1(12_Logic.js:2171);比赛进房入口可带 match_id。
  • 响应/推送:state、roomcode、seat、isowner、players[]、roomtype、makewar、asetcount、deskwar、deskinfo(重连快照)。详见 04 → 房间响应公共字段。
  • 依据:02-协议-agent路由.md;旧函数:Send_self_join_room、self_join_room。

09. quick_enter_share_room

  • 路由/通道:agent;方向:C→S;结果经其它 rpc 返回;状态:N;新 Rpc 常量:有。
  • 用途:快速进入分享/星星场房间。
  • 请求:agentid、playerid、gameid、type(房间类型)、roomtype(可选)。
  • 响应/推送:走 self_join_room 进房流程(无独立 Net.quick_enter_share_room 接收函数,结果通过 self_join_room/show_message 等回包)。
  • 注意:无 Net.quick_enter_share_room;关联 self_join_room/show_message,不能按同名请求响应配对。
  • 依据:02-协议-agent路由.md;旧函数:Send_quick_enter_share_room。

10. advanced_roomlist

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:拉取 VIP/高级房间列表。
  • 请求:agentid、playerid、gameid。
  • 响应/推送:房间列表对象,整包写入 GameData.snrRoomList 并渲染(07_Desk.js:1176)。
  • 依据:02-协议-agent路由.md;旧函数:Send_advanced_roomlist、advanced_roomlist。

11. advanced_createroom

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:创建 VIP/高级房间。
  • 请求:agentid、gameid、playerid、tea(茶水费)、infinite(0/1无限局)、roomtype、videoConfig(可选)、rebateLimit(可选)、rebateType(可选)。
  • 响应/推送:tea、rebateLimit 及房间配置(整包写入 GameData.snrRoomList,并回拉 advanced_roomlist,07_Desk.js:1180)。
  • 依据:02-协议-agent路由.md;旧函数:Send_advanced_createroom、advanced_createroom。

12. get_share_room

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:获取分享/星星场房间列表(仅非大厅环境发送)。
  • 请求:agentid、playerid、gameid。
  • 响应/推送:房间数组(Desk.get_share_room / Game_Modify.getShareRoom 处理)。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_share_room、get_share_room。

13. getInfoByShortCode

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:按短码批量查询房间信息(VIP 房列表)。
  • 请求:agentid、gameid、shortcodeList(短码列表)。
  • 响应/推送:roomInfo(短号房间信息) → GameUI.setVipRoomListData(07_Desk.js:1284)。
  • 依据:02-协议-agent路由.md;旧函数:Send_getInfoByShortCode、getInfoByShortCode。

14. switchRoomList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:开关房间在列表中的可见/可进入状态。
  • 请求:agentid、playerid、gameid、isClose(0开/1关)。
  • 响应/推送:state(0成功)、isClose;失败 error(07_Desk.js:1267)。
  • 依据:02-协议-agent路由.md;旧函数:Send_switchRoomList、switchRoomList。

大厅 · 战绩 / 排行 / 财富(5)

15. get_player_grade1

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:拉取战绩(类型1)。
  • 请求:agentid、playerid、gameid、type(可选)、direction(可选,翻页)、gradeidx(可选,分页索引)。
  • 响应/推送:战绩数据(gameCombat.get_player_grade1 渲染)。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_player_grade1、get_player_grade1。

16. get_player_grade2

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:拉取战绩(类型2)。
  • 请求:透传调用方 _data,构造点未集中定位;至少含 agentid/playerid/gameid。
  • 响应/推送:战绩数据(gameCombat.get_player_grade2 渲染)。
  • 注意:⚠️ 请求字段构造点未定位,待核对。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_player_grade2、get_player_grade2。

17. get_treasurelist

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:财富榜。
  • 请求:agentid、gameid。
  • 响应/推送:list(排行数组) → Desk.get_treasurelist。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_treasurelist、get_treasurelist。

18. getShortCodeRankList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:短号场排行榜。
  • 请求:agentid、playerid、shortcode。
  • 响应/推送:成功为排行数据(整包写入 GameData.vipRank.data);失败 error:true + message(07_Desk.js:1311)。
  • 依据:02-协议-agent路由.md;旧函数:Send_getShortCodeRankList、getShortCodeRankList。

19. getVipRankList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:VIP 排行榜。
  • 请求:agentid、limit(条数)。
  • 响应/推送:list(VIP排行数组) → GameData.rankList(07_Desk.js:1328)。
  • 依据:02-协议-agent路由.md;旧函数:Send_getVipRankList、getVipRankList。

大厅 · 任务系统(5)

20. get_player_task

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:获取任务列表。
  • 请求:agentid、playerid、gameid。
  • 响应/推送:tasks(任务数组) → Desk.get_player_task。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_player_task、get_player_task。

21. player_finish_task

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:上报任务完成(如分享成功触发,06_Player.js:414)。
  • 请求:agentid、playerid、taskid。
  • 响应/推送:state(int)——state==1 且当前 taskstate==0 时把 C_Player.taskstate 置 1(06_Player.js:476)。
  • 注意:原文档"响应含 taskstate"无源码依据,已删除——接收函数仅读 _msg.data.state。
  • 依据:02-协议-agent路由.md;旧函数:Send_player_finish_task、player_finish_task。

22. get_task_award

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:领取任务奖励。
  • 请求:agentid、playerid、taskid(任务领取点击与 Net 发送层均不补 gameid,见 02 文档源码复核说明)。
  • 响应/推送:taskid(对应任务 state 置 2=已领取)、taskstate(写入 C_Player.taskstate)(06_Player.js:482)。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_task_award、get_task_award。

23. refresh_task_state

  • 路由/通道:agent;方向:C→S 意图;当前旧代码缺常量,不能认定可发送;状态:N;新 Rpc 常量:无。
  • 用途:刷新任务可领取状态。
  • 请求:透传 _data(构造点未集中定位,至少含 agentid/playerid)。
  • 响应/推送:服务器推送 can_award(见下条)。
  • 注意:本次核实:09_Net.js:440 用 RpcList.refresh_task_state,但 02_Const.js 无此定义;全模板搜索未找到赋值。未被外部注入时该值为 undefined,JSON.stringify 会省略 rpc。02 章“硬编码字符串”的记载与当前源码不符,待后续专项核对;本轮不修代码。
  • 依据:02-协议-agent路由.md;旧函数:Send_can_award。

24. can_award

  • 路由/通道:agent;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:服务器通知有任务可领取。
  • 请求:无(纯推送)。
  • 响应/推送:任务可领取标记(载荷字段待后端确认)。
  • 注意:🐛 06_Player.js 未定义 Player.prototype.can_award(全文无此方法)。推送一旦到达,C_Player.can_award 为 undefined,调用即抛 TypeError。当前为 bug,不可当正常协议使用。
  • 依据:02-协议-agent路由.md;旧函数:Send_can_award、can_award。

大厅 · 支付 / 充值 / 资产(4)

25. get_paylist

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:拉取支付项列表。
  • 请求:agentid。
  • 响应/推送:paylist(支付项数组) → GameData.payList,并打开支付界面(09_Net.js:567)。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_paylist、get_paylist。

26. pay_succ

  • 路由/通道:HTTP(保留 agent 信封);方向:C→HTTP;未见同名 Net 接收函数;状态:X;新 Rpc 常量:有。
  • 用途:支付成功后通知服务器入账。
  • 请求:agentid、playerid、channelid、productid、payid、amount、money、paytype(05_Func.js:2240-2254 构造)。
  • 响应/推送:无显式 WS 回包;资产变化通过 update_bean/update_roomcard 推送(充房卡场景前端还会本地 UpdateRoomcard,05_Func.js:2263)。
  • 注意:原工程支付流程使用 HTTP;存在 Send_pay_succ 定义,但调用点被注释。不得仅凭常量/发送函数判为活跃 WS 请求。
  • 依据:02-协议-agent路由.md;旧函数:Send_pay_succ。

27. topup_card

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:充值卡兑换。
  • 请求:agentid、playerid、cardno(卡号)。
  • 响应/推送:Desk.topup_card 为空实现(07_Desk.js:1365),资产变化经 update_bean/update_roomcard 推送。
  • 依据:02-协议-agent路由.md;旧函数:Send_topup_card、topup_card。

28. giveCoin

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:仓库面板向他人转账豆豆/金币。
  • 请求:agentid、playerid(转出)、toPlayerid(转入目标ID)、gameid、count(数量)、password(仓库密码)(11_GameUI.js:2132-2139)。
  • 响应/推送:state(0成功)、star2(转出后仓库星星数 → setWareHouseStarCOunt,非豆豆);失败 showerror/error(07_Desk.js:1381)。
  • 注意:响应 star2 为仓库星星数,注意区别于豆豆余额。
  • 依据:02-协议-agent路由.md;旧函数:Send_giveCoin、giveCoin。

大厅 · 仓库 / 星星 / 魅力(4)

29. set_bankpwd

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:设置仓库密码。
  • 请求:agentid、playerid、unionid、password。
  • 响应/推送:state(0成功)、password;失败 showerror/error(07_Desk.js:1228)。
  • 依据:02-协议-agent路由.md;旧函数:Send_set_bankpwd、set_bankpwd。

30. change_star

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:仓库存/取(豆豆 ↔ 仓库星星)。
  • 请求:agentid、playerid、mode(0存入/1取出,源码 safeInputType-1)、password(仓库密码,字符串)、count(数量)(11_GameUI.js:2065-2069 调用点齐全携带此 5 字段)。
  • 响应/推送:state(0成功)、star1(更新后豆豆余额 → update_bean2)、star2(更新后仓库星星数 → setWareHouseStarCOunt)、msg(可选提示)、count(可选,回填安全输入);失败 showerror/error(07_Desk.js:1238)。
  • 注意:原审计疑虑"mode/password 未见"——经核对仓库存/取调用点(11_GameUI.js:2068-2069)确含 mode 与 password,文档正确,疑虑解除。审计提到的"agentid/playerid/toPlayerid/gameid/count"实为相邻的 giveCoin 转账包(11_GameUI.js:2132-2139),并非本 rpc。
  • 依据:02-协议-agent路由.md;旧函数:Send_change_star、change_star。

31. update_charm

  • 路由/通道:agent;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:座位魅力值更新。
  • 请求:Net.Send_update_charm(09_Net.js:727) 已定义但无任何调用点;实际只作服务器→客户端推送。
  • 响应/推送:seatlist:[ {seat(int), charm(number)} ](07_Desk.js:1260 遍历 setCharm)。
  • 依据:02-协议-agent路由.md;旧函数:Send_update_charm、update_charm。

32. setAllCharm

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:批量设置总魅力。
  • 请求:agentid、playerid、gameid、value(11_GameUI.js:1269-1275)。
  • 响应/推送:无显式业务字段,Desk.setAllCharm 仅本地存储并提示成功(07_Desk.js:1321)。
  • 依据:02-协议-agent路由.md;旧函数:Send_setAllCharm、setAllCharm。

大厅 · 邀请码 / 绑定(2)

33. binding_invitecode

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:绑定邀请码。
  • 请求:agentid、playerid、invitecode(11_GameUI.js:1367-1369)。
  • 响应/推送:state(0成功时写入 invitecode)、invitecode、error(提示文案)(06_Player.js:251)。
  • 依据:02-协议-agent路由.md;旧函数:Send_binding_invitecode、binding_invitecode。

34. get_player_invitecode

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:获取自己的邀请码(打开绑定界面)。
  • 请求:agentid、playerid、unionid、openid(11_GameUI.js:1378-1382)。
  • 响应/推送:invitecode(string) → C_Player.setInvitecod 并打开绑定界面(09_Net.js:607)。
  • 注意:修正原文档——请求字段为 agentid/playerid/unionid/openid,无 gameid,新增 unionid/openid(11_GameUI.js:1378)。
  • 依据:02-协议-agent路由.md;旧函数:Send_get_player_invitecode、get_player_invitecode。

大厅 · VIP 管理 / 黑白名单(4)

35. optBanList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:黑名单查看/添加/移除(多入口)。
  • 请求:随入口不同,公共字段 agentid、playerid、type:
  • 响应/推送:type(1/3/4/5/6)、banList(黑名单数组)、message(可选提示)(07_Desk.js:1289)。
  • 依据:02-协议-agent路由.md;旧函数:Send_optBanList、optBanList。

36. getPlayerWhiteList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:获取白名单。
  • 请求:agentid、playerid、gameid。
  • 响应/推送:whiteList(数组) → GameData.whiteList.data(07_Desk.js:1412)。
  • 依据:02-协议-agent路由.md;旧函数:Send_getPlayerWhiteList、getPlayerWhiteList。

37. optWhiteList

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:白名单添加/修改/删除。
  • 请求:agentid、playerid、gameid、shortcode、mode、userid(目标ID):
  • 响应/推送:whiteList(更新后数组)、mode(可选)、message(可选提示)(07_Desk.js:1398)。
  • 依据:02-协议-agent路由.md;旧函数:Send_optWhiteList、optWhiteList。

38. setVipForbidSelect

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:VIP 房禁止玩家选桌开关。
  • 请求:agentid、playerid、gameid、forbidSelect(1开/0关,11_GameUI.js:2631-2639)。
  • 响应/推送:state(0成功)、forbidSelect(1开/0关);失败 error(07_Desk.js:1348)。
  • 依据:02-协议-agent路由.md;旧函数:Send_setVipForbidSelect、setVipForbidSelect。

大厅 · 其它 agent 协议(8)

39. submit_opinion

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:提交反馈/意见。
  • 请求:agentid、playerid、gameid、content。
  • 响应/推送:state(0成功)(07_Desk.js:1100)。
  • 依据:02-协议-agent路由.md;旧函数:Send_submit_opinion、submit_opinion。

40. submit_location

  • 路由/通道:agent;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:提交定位信息(仅非大厅环境发送)。
  • 请求:agentid、playerid、info(定位对象)。
  • 响应/推送:经 Game.submit_location 处理(09_Net.js:583)。
  • 依据:02-协议-agent路由.md;旧函数:Send_submit_location、submit_location。

41. submit_phoneinfo

  • 路由/通道:agent;方向:C→S 请求(无响应处理);状态:N;新 Rpc 常量:有。
  • 用途:提交手机/通讯录信息(仅非大厅环境发送)。
  • 请求:agentid、playerid、info{ phoneInfo(手机信息), addrBook(通讯录) }。
  • 响应/推送:Net.submit_phoneinfo 接收函数为空实现(09_Net.js:722)。
  • 依据:02-协议-agent路由.md;旧函数:Send_submit_phoneinfo、submit_phoneinfo。

42. submit_error

  • 路由/通道:agent;方向:C→S;同名回包被旧接收器忽略;状态:N;新 Rpc 常量:无。
  • 用途:异常/日志上报(Net.submit_error 与 Net.submit_log 共用同一个实际 rpc)。
  • 请求:packet(出错数据包字符串)、msg(错误/堆栈信息)、playerid、agentid、gameid(09_Net.js:66-72)。
  • 响应/推送:服务器若回 rpc "submit_error",前端在分发处直接 return 忽略(12_Logic.js:235)。
  • 注意:submit_log 是本地函数别名,不是第二个线上 rpc;不能重复计数。
  • 依据:02-协议-agent路由.md;旧函数:submit_error、submit_log。

43. kick_server

  • 路由/通道:agent;方向:C→S 请求 + S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:管理端踢出玩家 / 被踢下线弹窗。
  • 请求:agentid 等(构造点未集中定位)。
  • 响应/推送:msg(踢出提示) → GameUI.OpenKick(07_Desk.js:1108)。
  • 注意:⚠️ 请求字段待补。
  • 依据:02-协议-agent路由.md;旧函数:Send_kick_server、kick_server。

44. broadcast

  • 路由/通道:agent;方向:C→S 请求 + S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:广播消息/滚动公告(主要为服务器推送)。
  • 请求:agentid 等(Send_broadcast 存在,09_Net.js:530)。
  • 响应/推送:msgtype(0消息框/1滚动公告,可选,缺省 0)、msgcontent(内容)(07_Desk.js:1112)。
  • 依据:02-协议-agent路由.md;旧函数:Send_broadcast、broadcast。

45. connect_agentserver

  • 路由/通道:agent;方向:双向(切服);状态:R;新 Rpc 常量:有。
  • 用途:切换到大厅服务器。
  • 请求:Send_connect_agentserver(09_Net.js:515) 透传 _data(切服时使用)。
  • 响应/推送:agentserver(新大厅服地址)、opt(切换原因,如 other_break_room/free_room)(09_Net.js:518)。
  • 依据:02-协议-agent路由.md;旧函数:Send_connect_agentserver、connect_agentserver。

46. playerBehavior

  • 路由/通道:HTTP GET(历史 agent 名称);方向:C→HTTP;状态:X;新 Rpc 常量:有。
  • 用途:玩家行为埋点。
  • 请求:原 WS 路径(agentid/gameid/playerid/tag)被注释(09_Net.js:799-806),实际改走独立 HTTP GET 上报 http://test3.1888day.com/api/gamedo/gamedo?agentid=&gameid=&playerid=&tag=(09_Net.js:807-815)。
  • 响应/推送:HTTP 回调 playerBehavior_Succ/_Fail(09_Net.js:818/822);WS 接收函数 Net.playerBehavior(09_Net.js:826) 当前无触发。
  • 注意:当前调用走独立 HTTP 埋点地址,WS 段被注释;不归入本地 WebSocket 验收。
  • 依据:02-协议-agent路由.md;旧函数:Send_playerBehavior、playerBehavior。

房间 · 房间生命周期(8)

47. self_break_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:房主在未开局前主动解散房间。
  • 请求:仅通用四字段。
  • 响应/推送:roomcode(可选,用于从本地"我的房间"列表移除)。处理:清空牌桌、回大厅。
  • 依据:03-协议-room路由.md;旧函数:Send_self_break_room、self_break_room。

48. other_break_room

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:他人(房主)解散房间,推送给房内其余玩家。
  • 请求:无(纯推送)。
  • 响应/推送:无业务字段;触发 Func.exitRoom()、清桌、回大厅、提示"房主已解散房间!"。
  • 注意:常伴随 connect_agentserver 切服包(data.opt == other_break_room,见下文)。
  • 依据:03-协议-room路由.md;旧函数:other_break_room。

49. self_exit_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:R;新 Rpc 常量:有。
  • 用途:自己在未开局前退出房间。
  • 请求:仅通用四字段(发送处见 08_Utl_Output.js:993)。
  • 响应/推送:isowner(可选,==1 且非无限局时把房间加回本地列表), seat(可选,传给 Game_Modify.myExitRoom), roomcode(可选)。
  • 依据:03-协议-room路由.md;旧函数:Send_self_exit_room、self_exit_room。

50. other_exit_room

  • 路由/通道:room;方向:S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:其他玩家(未开局)退出房间。
  • 请求:无(纯推送)。
  • 响应/推送:seat(离开者座位)。处理:清该座位、playercnt--;若 seat==0 且非无限局,提示房主已离开。
  • 依据:03-协议-room路由.md;旧函数:other_exit_room。

51. player_prepare

  • 路由/通道:room;方向:C→S 请求 + S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:玩家点击准备(needprepare==1 的房间)。
  • 请求:仅通用四字段。
  • 响应/推送:seat(准备者座位), deskwar(可选;为真表示满足开战条件 → HideStartScene + Game_Modify.StartWar)。推送给房内所有人。
  • 依据:03-协议-room路由.md;旧函数:Send_player_prepare、player_prepare。

52. change_room

  • 路由/通道:room;方向:C→S;响应 rpc=change_seat;状态:N;新 Rpc 常量:有。
  • 用途:玩家请求换座 / 换桌。
  • 请求:仅通用四字段(不带目标座位,由服务器决定换到哪个空位)。发送处 11_GameUI.js:1945、08_Utl_Output.js:1006。
  • 响应/推送:rpc 名改为 change_seat,data:seat1, seat2(两个互换的座位号)。处理:交换两座 Desk 信息,若自己在其中则 C_Player.SetSeat 更新。
  • 注意:上行 rpc=change_room,下行 rpc=change_seat,二者成对。
  • 依据:03-协议-room路由.md;旧函数:Send_change_room。

53. share_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:把房间分享到世界房列表。
  • 请求:通用四字段;可选 roomlist、roomtype、shareType(高级房分享时携带,见 11_GameUI.js:1734/11_GameUI.js:1891)。
  • 响应/推送:无业务字段;提示"已成功分享至平台!"。
  • 依据:03-协议-room路由.md;旧函数:Send_share_room、share_room。

54. change_seat

  • 路由/通道:room;方向:S→C(change_room 的响应);状态:N;新 Rpc 常量:有。
  • 用途:服务器指定两座互换。
  • 请求:无同名上行;上行是 change_room。
  • 响应/推送:seat1、seat2。
  • 注意:独立列名,不能把 change_room 与 change_seat 合成一条而漏计。
  • 依据:03-协议-room路由.md;旧函数:change_seat。

房间 · 进房推送(他人视角)(3)

55. other_join_room

  • 路由/通道:room;方向:S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:其他玩家加入当前房间。
  • 请求:无(纯推送;自己进房用 self_join_room,走 agent 路由,见 02 章)。
  • 响应/推送:seat(新玩家座位) + 该玩家完整对象(直接传给 Player.SetDeskInfo,见 04 · Player 座位对象):
  • 注意:⚠️ charm/sign 是否每次必含、其余字段是否完整以 Player.SetDeskInfo 实际读取为准,详见 04 章。
  • 依据:03-协议-room路由.md;旧函数:other_join_room。

56. other_offline

  • 路由/通道:room;方向:S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:其他玩家离线。
  • 请求:无(纯推送)。
  • 响应/推送:seat。处理:该座 onstate=1,刷新 UI。
  • 依据:03-协议-room路由.md;旧函数:other_offline。

57. other_online

  • 路由/通道:room;方向:S→C 推送;状态:R;新 Rpc 常量:有。
  • 用途:其他玩家重新上线。
  • 请求:无(纯推送)。
  • 响应/推送:seat, ip。处理:该座 onstate=0、更新 ip。
  • 依据:03-协议-room路由.md;旧函数:other_online。

房间 · 解散投票(开局后)(8)

58. self_apply_free_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:自己申请解散房间。
  • 请求:仅通用四字段。
  • 响应/推送:agreefree { state:[各座同意状态数组], countdown:倒计时 }。
  • 依据:03-协议-room路由.md;旧函数:Send_self_apply_free_room、self_apply_free_room。

59. other_apply_free_room

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:他人申请解散。
  • 请求:无(纯推送)。
  • 响应/推送:seat(申请者), agreefree { state[], countdown }。
  • 依据:03-协议-room路由.md;旧函数:other_apply_free_room。

60. self_agree_free_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:自己同意解散。
  • 请求:仅通用四字段。
  • 响应/推送:无业务字段;本地把自己加入同意列表、刷新投票 UI。
  • 依据:03-协议-room路由.md;旧函数:Send_self_agree_free_room、self_agree_free_room。

61. other_agree_free_room

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:他人同意解散。
  • 请求:无(纯推送)。
  • 响应/推送:seat(同意者)。
  • 依据:03-协议-room路由.md;旧函数:other_agree_free_room。

62. self_refuse_free_room

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:自己拒绝解散。
  • 请求:仅通用四字段。
  • 响应/推送:无业务字段;清空同意列表、投票结果置不通过、弹"已拒绝"结果。
  • 依据:03-协议-room路由.md;旧函数:Send_self_refuse_free_room、self_refuse_free_room。

63. other_refuse_free_room

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:他人拒绝解散(任一人拒绝即否决本轮)。
  • 请求:无(纯推送)。
  • 响应/推送:seat(拒绝者)。
  • 依据:03-协议-room路由.md;旧函数:other_refuse_free_room。

64. free_room

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:解散投票最终结果。
  • 请求:无(纯推送)。
  • 响应/推送:freeNow;deskfree、roomcard、tips、time、seats 按具体分支读取,字段语义见 03 章。
  • 注意:可伴随 connect_agentserver 切服包(data.opt == free_room,见下文)。
  • 依据:03-协议-room路由.md;旧函数:free_room。

65. beanroom_surrender

  • 路由/通道:room;方向:C→S 请求 + S→C 响应;状态:N;新 Rpc 常量:有。
  • 用途:豆豆房(金币房)投降。
  • 请求:通用四字段 + count(投降数量 = GameData.surrendCount,发送处 11_GameUI.js:1245)。
  • 响应/推送:state(0=成功 → Game_Modify.onSurrender(_msg)); 失败时 showerror(==1 则弹) / error(错误文本)。
  • 注意:⚠️ 未见成对的 other_xxx 推送,是否向房内其他玩家广播他人投降待后端确认。
  • 依据:03-协议-room路由.md;旧函数:Send_beanroom_surrender、beanroom_surrender。

房间 · 开局(2)

66. self_makewar

  • 路由/通道:room;方向:C→S 请求 → S→C 响应(self_makewar);状态:N;新 Rpc 常量:有。
  • 用途:房主主动开局。
  • 请求:仅通用四字段。
  • 响应/推送:rpc=self_makewar,无业务字段;触发 Desk.self_makewar → Game_Modify.StartWar(_msg)。
  • 依据:03-协议-room路由.md;旧函数:Send_self_makewar、self_makewar。

67. other_makewar

  • 路由/通道:room;方向:S→C 推送;状态:N;新 Rpc 常量:有。
  • 用途:开局广播(房主开局或满员自动开局)给房内其他玩家。
  • 请求:无(纯推送)。
  • 响应/推送:开局信息对象 → Desk.makewar → Game_Modify.StartWar(msg)。
  • 注意:实际发牌等对局数据在此之后通过子游戏内协议下发(见 05 章)。
  • 依据:03-协议-room路由.md;旧函数:other_makewar。

房间 · 房间内社交(6)

68. send_text

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 文字聊天;状态:N;新 Rpc 常量:有。
  • 用途:文字聊天 / 全服公告 / 预定义常用语。
  • 请求:通用四字段 + text(内容;点常用语时为 Game_Config.Info.TextContent[spid-206] 文本) + type(0=普通 / 1=全服公告;按是否勾选公告设 0/1) + info(可选;有 info 时 type 改为 2)。发送处 11_GameUI.js:1170(输入框)、11_GameUI.js:2717(常用语)。
  • 响应/推送:type(0=普通 / 1=全服公告 / 2=机器人 / 3=预定义文字), text(内容;type==3 时为 Game_Config.Info.TextContent 的 1 基索引,客户端按 (idx-1)%len 取文本), seat(发送者座位,type≠1 时使用), info(type==2 时附加)。
  • 注意:百人场(vipInfinite)只处理 type==1 公告分支。
  • 依据:03-协议-room路由.md;旧函数:Send_send_text、send_text。

69. send_voice

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 语音;状态:N;新 Rpc 常量:有。
  • 用途:发送语音消息。
  • 请求:通用四字段 + voiceurl(已上传音频地址) + time(时长) + info(可选) + type(可选,有 info 时为 2)。发送处 05_Func.js:1714、05_Func.js:2984。
  • 响应/推送:type(0=普通 / 2=机器人), seat(发送座位), voiceurl, time, info(type==2 时)。
  • 依据:03-协议-room路由.md;旧函数:Send_send_voice、send_voice。

70. send_gift

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 互动/送礼;状态:N;新 Rpc 常量:有。
  • 用途:向指定座位送互动礼物。
  • 请求:通用四字段 + giftid(=spid_up - 255,按钮精灵号算出,发送处 11_GameUI.js:2725) + receiveseat(=GameData.InteractPlayer) + info(可选) + type(有 info 时为 2)。
  • 响应/推送:type(0=普通 / 2=机器人), giftid(客户端做 (giftid-1)%4+1 归一为 1~4 动画), sendseat(发送座位), receiveseat(接收座位), info(type==2 时)。
  • 依据:03-协议-room路由.md;旧函数:Send_send_gift、send_gift。

71. send_phiz

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 表情;状态:N;新 Rpc 常量:有。
  • 用途:发送表情动画。
  • 请求:通用四字段 + text(=up_id,表情按钮序号 1~ConstVal.Emotion.count,发送处 11_GameUI.js:815) + info(可选) + type(有 info 时为 2)。
  • 响应/推送:type(0=普通 / 2=机器人), text(表情 ID,客户端按 (text-1)%ConstVal.Emotion.src_list.length+1 归一), seat(发送座位), info(type==2 时)。
  • 依据:03-协议-room路由.md;旧函数:Send_send_phiz、send_phiz。

72. call_phone

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 拨打电话;状态:N;新 Rpc 常量:有。
  • 用途:拨打/接听电话,置玩家 onstate=2(通话中)。
  • 请求:仅通用四字段(发送处 06_Player.js:380 / :388 / :396,对应接起/电话进来/去电三种触发)。
  • 响应/推送:rpc=call_phone,seat(拨打者座位 → 该玩家 onstate=2)。
  • 依据:03-协议-room路由.md;旧函数:Send_call_phone、call_phone。

73. hangup_phone

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 挂断电话;状态:N;新 Rpc 常量:有。
  • 用途:挂断电话,置玩家 onstate=0。
  • 请求:仅通用四字段(发送处 06_Player.js:372)。
  • 响应/推送:rpc=hangup_phone,seat(挂断者座位 → 该玩家 onstate=0)。
  • 依据:03-协议-room路由.md;旧函数:Send_hangup_phone、hangup_phone。

保留名称 · 房间社交(5)

74. receive_chat

  • 路由/通道:room(文档归类,线上未确认);方向:未确认(文档推测为下行);状态:X;新 Rpc 常量:有。
  • 用途:聊天推送的另一可能 rpc 名(与 send_text 成对)。
  • 请求:未发现同名发送链。
  • 响应/推送:未定义,不能套用其它 rpc 字段。
  • 注意:常量存在,旧 Net 无同名接收器。与实际已实现的 send_voice/send_text/call_phone/hangup_phone/send_gift 区分;不据此断言服务器绝不会发送。
  • 依据:03-协议-room路由.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

75. play_voice

  • 路由/通道:room(文档归类,线上未确认);方向:未确认(文档推测为下行);状态:X;新 Rpc 常量:有。
  • 用途:与 send_voice 成对,疑为语音播放推送。
  • 请求:未发现同名发送链。
  • 响应/推送:未定义,不能套用其它 rpc 字段。
  • 注意:常量存在,旧 Net 无同名接收器。与实际已实现的 send_voice/send_text/call_phone/hangup_phone/send_gift 区分;不据此断言服务器绝不会发送。
  • 依据:03-协议-room路由.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

76. other_send_gift

  • 路由/通道:room(文档归类,线上未确认);方向:未确认(文档推测为下行);状态:X;新 Rpc 常量:有。
  • 用途:与 send_gift 成对,疑为他人送礼推送。
  • 请求:未发现同名发送链。
  • 响应/推送:未定义,不能套用其它 rpc 字段。
  • 注意:常量存在,旧 Net 无同名接收器。与实际已实现的 send_voice/send_text/call_phone/hangup_phone/send_gift 区分;不据此断言服务器绝不会发送。
  • 依据:03-协议-room路由.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

77. other_callphone

  • 路由/通道:room(文档归类,线上未确认);方向:未确认(文档推测为下行);状态:X;新 Rpc 常量:有。
  • 用途:与 call_phone 成对,疑为他人拨打电话推送。
  • 请求:未发现同名发送链。
  • 响应/推送:未定义,不能套用其它 rpc 字段。
  • 注意:常量存在,旧 Net 无同名接收器。与实际已实现的 send_voice/send_text/call_phone/hangup_phone/send_gift 区分;不据此断言服务器绝不会发送。
  • 依据:03-协议-room路由.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

78. other_hangup

  • 路由/通道:room(文档归类,线上未确认);方向:未确认(文档推测为下行);状态:X;新 Rpc 常量:有。
  • 用途:与 hangup_phone 成对,疑为他人挂断电话推送。
  • 请求:未发现同名发送链。
  • 响应/推送:未定义,不能套用其它 rpc 字段。
  • 注意:常量存在,旧 Net 无同名接收器。与实际已实现的 send_voice/send_text/call_phone/hangup_phone/send_gift 区分;不据此断言服务器绝不会发送。
  • 依据:03-协议-room路由.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

大厅 · 资产更新与系统推送(4)

79. update_bean

  • 路由/通道:上行 agent;下行按 agent 归档(实际推送路由待逐项抓包);方向:C→S + S→C;状态:N;新 Rpc 常量:有。
  • 用途:豆豆变化(本人或房内座位)
  • 请求:原生 yPaytype / WVJB yPaytype 回调直接发送 agentid、playerid、change:num、type:9;这是资产写入路径,不属于只读查询。
  • 响应/推送:bean、change/seat/type(按场景可选)、text;不同分支见原处理器。
  • 注意:02 章“无对应主动请求”与当前 05_Func.js 不符。存在发送代码不代表支付来源可信性、服务端行为或新框架已经验收。
  • 直接上行来源:原生 yPaytype、WVJB yPaytype。
  • 依据:02-协议-agent路由.md;旧函数:update_bean。

80. update_roomcard

  • 路由/通道:上行 agent;下行按 agent 归档(实际推送路由待逐项抓包);方向:C→S + S→C;状态:N;新 Rpc 常量:有。
  • 用途:房卡变化
  • 请求:原生 yPaytype / WVJB yPaytype 回调直接发送 agentid、playerid、change:num、type:9;这是资产写入路径,不属于只读查询。
  • 响应/推送:roomcard、text(可选);change 分支条件见原处理器。
  • 注意:02 章“无对应主动请求”与当前 05_Func.js 不符。存在发送代码不代表支付来源可信性、服务端行为或新框架已经验收。
  • 直接上行来源:原生 yPaytype、WVJB yPaytype。
  • 依据:02-协议-agent路由.md;旧函数:update_roomcard。

81. kick_offline

  • 路由/通道:agent(协议归档;实际推送路由待逐项抓包);方向:S→C;状态:N;新 Rpc 常量:有。
  • 用途:被踢下线
  • 请求:无对应主动请求。
  • 响应/推送:fromOther、gameid(可选);旧流程同时上报 submit_error。
  • 注意:仅有旧处理器不能证明新 Runtime 接入或真实服务已覆盖。
  • 依据:02-协议-agent路由.md;旧函数:kick_offline。

82. show_message

  • 路由/通道:agent(协议归档;实际推送路由待逐项抓包);方向:S→C;状态:N;新 Rpc 常量:无。
  • 用途:通用提示
  • 请求:无对应主动请求。
  • 响应/推送:msg、time。
  • 注意:仅有旧处理器不能证明新 Runtime 接入或真实服务已覆盖。
  • 依据:02-协议-agent路由.md;旧函数:show_message。

房间 · 服务器切换(room 侧)(1)

83. connect_roomserver

  • 路由/通道:room;方向:C→S 请求 + S→C 推送 · 切到房间服;状态:R;新 Rpc 常量:有。
  • 用途:从大厅服切换到房间服务器。
  • 请求:由 Send_connect_roomserver 发起(走 room 路由)。
  • 响应/推送:data.roomserver(新房间服地址)。处理:置 GameData.ConnectType=true、GameData.ConnectRpc=connect_roomserver、GameData.Server=data.roomserver,关闭当前连接并用新地址重连。
  • 依据:03-协议-room路由.md;旧函数:Send_connect_roomserver、connect_roomserver。

子游戏 · 框架保留名称(2)

84. over_game

  • 路由/通道:由具体子游戏契约确定;方向:文档描述 S→C;实际由子游戏确认;状态:X;新 Rpc 常量:有。
  • 用途:结算广播保留名;具体载荷由子游戏定义。
  • 请求:模板未定义。
  • 响应/推送:模板未定义。
  • 注意:Game_Surface_3 的 Game_Modify 为模板,不能据名字推导具体子游戏协议。
  • 依据:05-游戏内协议与桥接.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

85. agentserver_game

  • 路由/通道:由具体子游戏契约确定;方向:未定义;状态:X;新 Rpc 常量:有。
  • 用途:对局数据经大厅服中转的保留名。
  • 请求:模板未定义。
  • 响应/推送:模板未定义。
  • 注意:Game_Surface_3 的 Game_Modify 为模板,不能据名字推导具体子游戏协议。
  • 依据:05-游戏内协议与桥接.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

外部桥接 · 非网络 RPC(1)

86. joinRoom

  • 路由/通道:H5/小程序本地桥接;方向:外部入口→前端确认流程;状态:X;新 Rpc 常量:有。
  • 用途:唤起进房确认;不是直接向服务器发送 joinRoom。
  • 请求:{rpc:"joinRoom",data:{roomcode}};H5 来自 URL gameData,小程序来自缓存 openminigamedata。
  • 响应/推送:确认后走 self_join_room;不产生 joinRoom 网络回包。
  • 注意:h5RpcList 唯一名称;旧小程序 checkType=8 与白名单删除撞号,不能沿用。WVJB handler 名不计为服务器 RPC。
  • 依据:05-游戏内协议与桥接.md;旧函数:无同名 Net 定义(保留/桥接按所引章节核对)。

覆盖核对方法

  • 逐一取 02_Const.js 的 RpcList 字符串赋值去重;核对 09_Net.js 中 RpcList 引用、Net 命名函数以及硬编码 rpc;扫描全模板的直接 _SendData 调用与 rpc 赋值(包含 05_Func.js 支付桥接),补入 h5RpcList。
  • 与 02/03 章标题、02 章末尾推送表以及 05 章保留/桥接名称取并集;按实际名称一条一项,跨章节引用不重复计数。
  • 结果:82 个旧常量名称全部命中;补充 4 个名称后 86 条,无遗漏或重复;11 个现代严格分发名称全部命中。
  • 新框架状态依据 platform/runtime.ts、protocol/platform-handlers.ts、protocol/first-slice-routes.ts;旧 protocol/routes.ts 大常量表仅用于“名称存在”对照。
  • 本轮没有发送网络请求、触发 Cocos 编辑器操作或运行资源生成器;这份静态索引不新增真实验收结论。