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

洱海月 v0-07-0300 封包解析:ID 190 GCMissionRemove(任务删除通知)

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

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

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

×

GCMissionRemove 是当前旧版项目仍在使用的任务删除包。无论是主动放弃任务,还是服务端按任务 ID 删除任务,最终都会给客户端发送这条固定 4 字节下行包。

包信息

项目 内容
封包 ID 190
包名 GCMissionRemove
方向 Server -> Client
包长 4
当前 Lua 协议定义 已实现 bos()
作用 通知客户端把指定任务从任务列表中删除

包体结构

偏移 长度 字段 类型 含义
0x00 0x04 mission_id int32 需要删除的任务 ID

当前实际行为

  • 当前 Game.exe 中,GetPacketID() 返回 190,GetPacketSize() 返回 4。
  • 当前 Lua 协议定义只实现了 bos(),并固定写出一个 int32 id。
  • 现役发送点位于 human.lua:
    • mission_abandon(index):按任务索引放弃任务后发送
    • del_mission(mission_id):按任务 ID 删除任务后发送
  • 发送时写入的值都是任务对象里的 mission.id,不是任务脚本索引。

服务端落点

  • 协议定义:
    • /home/ubuntu/Game2/services/game/packet.lua
  • 现役发送点:
    • /home/ubuntu/Game2/services/scene/obj/human.lua

关键代码

packet.GCMissionRemove = {
    bos = function(self)
        local stream = bostream.new()
        stream:writeint(self.id)
        return stream:get()
    end
}
function human:mission_abandon(index)
    for i, mission in ipairs(self.mission_data.char_missions) do
        if mission.index == index then
            table.remove(self.mission_data.char_missions, i)
            local msg = packet_def.GCMissionRemove.new()
            msg.id = mission.id
            self:get_scene():send2client(self, msg)
            return
        end
    end
end

结论

GCMissionRemove(190) 是当前版本现役的任务删除通知包,结构只有一个 int32 mission_id。它的作用非常单纯,就是告诉客户端把对应任务从任务列表里移除。

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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