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

洱海月 v0-07-0300 封包解析:ID 894 GCSetDynamicRegion(设置动态阻挡区域)

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

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

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

×

包信息

  • PacketID:894
  • 方向:服务端 -> 客户端
  • 长度:22
  • 功能:创建或释放指定动态阻挡区域
  • 关联封包:无专用请求包

包体结构

偏移 长度 字段 类型 含义
0 2 region_id int16 动态区域客户端 ID
2 4 data_index int32 动态区域保存槽位索引
6 4 world_x float 动态区域中心点 X
10 4 world_y float 动态区域中心点 Y
14 4 direction float 动态区域朝向
18 4 enable int32 1 为创建,其他值为释放

当前实际行为

客户端收到后,如果 enable == 1,就按 region_id + data_index + world_x + world_y + direction 创建动态阻挡区域;否则直接按 data_index 释放该区域。也就是说,释放分支真正依赖的是 data_index,不是 region_id。

Lua 副本脚本已经在用这套逻辑控制副本里的动态阻挡开关,例如首领刷新时启用阻挡,击杀或阶段切换时关闭阻挡。

服务端落点

  • /home/ubuntu/Game2/services/game/packet.lua 中定义了 GCSetDynamicRegion 的完整写包结构。
  • /home/ubuntu/Game2/services/scripts/event/fuben/efuben_shuiyueshanzhuang.lua 通过 EnableDynamicRegion(...) / DisableDynamicRegion(...) 驱动这类动态区域开关。

关键代码

self:EnableDynamicRegion(region.id, region.data_index, region.x, region.y, region.dir)
self:DisableDynamicRegion(region.id, region.data_index)

结论

GCSetDynamicRegion 是单条动态阻挡区域的增删控制包。创建时用完整坐标和方向,释放时核心索引是 data_index。

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

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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