找回密码
 registerss
搜索
查看: 22|回复: 0

洱海月 v0-07-0300 封包解析:ID 562 CGWFriendADAskSimpleVoteInfo(征友投票简要列表查询)

[复制链接]
  • 打卡等级:本地老炮
  • 打卡总天数:603
  • 打卡月天数:1
  • 打卡总奖励:600
  • 最近打卡:2026-10-03 06:32:28
Waylee 发表于 2026-4-14 16:08 | 显示全部楼层 |阅读模式 | Google Chrome | Windows 10

马上注册,查看网站隐藏内容!!

您需要 登录 才可以下载或查看,没有账号?registerss

×

CGWFriendADAskSimpleVoteInfo 是旧版客户端征友系统里“投票频道”使用的专用查询包。当前 Game.exe 可以明确确认:它是固定 8 字节请求,包体只有 page_index 与 char_guid 两个字段;客户端界面仍通过 RequestFindFriendList(g_curChannel, g_curPageIndex) 触发列表刷新,而在 channel_type == 6 的分支下,当前客户端会改走这条专用包。

当前 Temp_Release_v0-07-0300 Lua 服务端主链中未发现这条协议的 packet.lua -> msgagent.lua -> scenecore.lua 接入点。

包信息

项目 内容
封包 ID 562
包名 CGWFriendADAskSimpleVoteInfo
方向 CG 客户端 -> 游戏服
包长 固定 8 字节
对应回包 WGCFriendADGiveSimpleVoteInfo
回包 ID 169
当前 Lua 协议定义 未发现
当前 Lua 请求入口 未发现
主要作用 请求征友投票频道的简要列表页数据

当前 Game.exe 的虚函数结论为:

GetPacketID()   = 562;
GetPacketSize() = 8;
Read()          = read(a1 + 24, 4), read(a1 + 28, 4);
Write()         = write(a1 + 24, 4), write(a1 + 28, 4);
Execute()       = 2;

包体结构

偏移 长度 字段 类型 含义
0x00 0x04 page_index int32 投票频道请求页码
0x04 0x04 char_guid uint32 当前角色 GUID,由客户端自动填入

按当前 Game.exe 的 Read() / Write() 顺序,这条包的收发结构可概括为:

Read(stream) {
    read_i32(page_index);
    read_u32(char_guid);
}

当前实际行为

  • 客户端界面脚本 PlayerZhengyouPT.lua 刷新征友列表时,统一调用:
RequestFindFriendList(g_curChannel, g_curPageIndex)
  • 同一份界面脚本里已经能直接看出 g_curChannel == 6 是投票列表分支,此时列表展示改为读取:
FindFriendDataPool:GetSimpleVoteInfoByPos(i)
  • 当前 Game.exe 中,RequestFindFriendList(channel_type, page_index) 的原生实现会按 channel_type 分支:

    • 0/1/2/3/4 走普通征友列表请求
    • 6 走投票频道专用请求,只继续传递 page_index
  • 投票频道专用分支随后会构造 CGWFriendADAskSimpleVoteInfo(562),把脚本传入的 page_index 写入第一个字段,再自动补写当前角色 GUID 到第二个字段后发包。

  • 当前 Lua 服务端中未发现:

    • packet.CGWFriendADAskSimpleVoteInfo
    • request:CGWFriendADAskSimpleVoteInfo()
    • 对应 scenecore 处理入口

因此,这条包在当前项目现状下应视为旧征友系统“投票频道列表请求”的客户端保留协议,现役 Lua 主链未接入。

服务端落点

当前 Lua 主链未发现这条包的正式落点:

  • /home/ubuntu/Game2/services/game/packet.lua
  • /home/ubuntu/Game2/services/msgagent.lua
  • /home/ubuntu/Game2/services/scene/scenecore.lua

关键代码

当前客户端界面层的列表刷新入口

RequestFindFriendList(g_curChannel, g_curPageIndex)

当前客户端界面层对投票频道的分支判断

if (g_curChannel ~= 6) then
    iGuid, strName, iGender, iRenqi, iType, iLevel = PlayerZhengyouPT_GetPlayerSimpleInfo(i)
else
    iGuid, strName, iGender, iRenqi, iType, iLevel = PlayerZhengyouPT_GetPlayerSimpleVoteInfoByPos(i)
end

当前 Game.exe 的请求分支与发包内容

Lua_RequestFindFriendInfo(channel_type, page_index) {
    if (channel_type == 6) {
        RequestFindFriendVoteList(page_index);
    } else {
        RequestFindFriendList(channel_type, page_index);
    }
}
RequestFindFriendVoteList(page_index) {
    msg.page_index = page_index;
    msg.char_guid  = GetCurrentPlayerGuid();
    SendPacket(CGWFriendADAskSimpleVoteInfo);
}

结论

CGWFriendADAskSimpleVoteInfo(562) 是征友系统投票频道使用的专用列表查询包,固定 8 字节,结构可以明确确认为 page_index + char_guid。它不是普通征友频道的通用查询包,而是 RequestFindFriendList 在 channel_type == 6 时切出的专用分支。

当前 Temp_Release_v0-07-0300 Lua 服务端没有这条包的协议定义和处理链,因此现阶段更适合把它归类为客户端保留的旧征友系统请求包;其现存意义主要在于保留投票频道列表查询能力与 WGCFriendADGiveSimpleVoteInfo(169) 的对应收包结构。

您需要登录后才可以回帖 登录 | registerss

本版积分规则

QQ|手机版|雪舞知识库 ( 浙ICP备15015590号-1 | 萌ICP备20232229号|浙公网安备33048102000118号 )|天天打卡

GMT+8, 2026-10-4 11:26 , Processed in 0.081001 second(s), 26 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表