ceshi 1
This commit is contained in:
1 parent
9eb9edbb8a
commit
b768ff1555
10 files changed
+618
-15
No files matched your search
@@ -705,6 +705,10 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
|
||||
【提示/体验】倒油/取油/放料/出锅均有提示(含消耗数量与计时时长); 数量不足/油锅下无点燃炉灶
|
||||
有提示并拦截; 右键冷却0.4秒; 手持方块物品右键油锅类功能方块取消默认放置(全局) [已实现]
|
||||
【盛出消闪 2026-09-23】手持盘子右键熟炸物(盘子 take_out, 6条), 改走客户端拦截+显式触发
|
||||
(同汤锅): 客户端 ClientItemUseOnEvent ret=True 消闪 + NotifyToServer('TakeoutRequest')
|
||||
-> YouguoService.handleTakeoutRequest(校验落点仍是成品防重复). 由 InterceptData.TAKEOUT_CANCEL
|
||||
自动派生 [已实现]
|
||||
【留后】各盘装成品 右键吃(总食用功能后续实现)、天妇罗炸虾递减吃(整份->半份 plate_49a)、
|
||||
盘子用后变脏
|
||||
|
||||
@@ -787,6 +791,14 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
【提示/体验】所有转换有提示(含消耗数量与下一步指引: "可继续加料 或 等计时结束变成X,
|
||||
手持木碗出锅"); 数量不足/下方无点燃炉灶有提示并拦截; 右键冷却0.4秒; 手持方块物品右键
|
||||
汤锅类功能方块取消默认放置(全局) [已实现]
|
||||
【盛出消闪 2026-09-23】手持木碗/盘子右键成品汤方块(碗/盘 take_out), 改走客户端拦截+
|
||||
显式触发: 客户端 ClientItemUseOnEvent 对该组合 ret=True(取消放置前摇, 消除"闪一下"),
|
||||
再 NotifyToServer('TakeoutRequest') 显式通知服务端执行盛出(FeatureDispatcher.OnTakeoutRequest
|
||||
-> TangguoService.handleTakeoutRequest, 校验落点仍是成品防重复). 空手取出/菜刀切豆腐不走此路,
|
||||
照旧 ServerBlockUseEvent. 由 InterceptData.TAKEOUT_CANCEL 自动派生 [已实现]
|
||||
- 后续修复: 客户端新增 1.5 秒放置冷却(_afterCd): 盛出/出锅后, 同一坐标短时间内再被引擎
|
||||
当作"放置"直接 ret 吞掉, 消除"变锅后多放置一次碗/盘"的闪烁 (2026-09-23 修) [已实现]
|
||||
- 服务端 OnTakeoutRequest 不再设 _cancelItemUse(避免标记残留吞后续 itemUseOn), 由客户端 CD 兜 [已实现]
|
||||
【留后】各碗装成品/汤面 右键吃(总食用功能后续实现)
|
||||
|
||||
|
||||
@@ -881,10 +893,18 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
- 反向: 手持 米饭(形态1/2/3任一) 右键 上述成品菜方块, 消耗1个米饭, 菜品原地变对应盖饭 [已实现]
|
||||
- 蛋炒饭加米饭: 手持米饭(任一形态)右键 炒锅_86(蛋炒饭_加胡萝卜_熟) -> 炒锅_87(蛋炒饭_加米饭_熟) [已实现]
|
||||
- 手持成品菜/米饭 右键 本分类功能方块 无对应转换时直接取消默认放置(不"先放再消失") [已实现]
|
||||
- 修复: 盖饭被客户端白名单吞掉而"点无反应"(成品菜/米饭组合在 ITEM_USE_ON_CANCEL,
|
||||
客户端 ret=True 吞掉服务端 ServerItemUseOnEvent) -> 改走客户端拦放置预览(消闪)
|
||||
+ 显式 NotifyToServer('GaifanRequest') -> FeatureDispatcher.OnGaifanRequest
|
||||
-> ChaoguoService.handleItemUseOn(构造 itemUseOn args), 同盛出机制 (2026-09-23 修) [已实现]
|
||||
|
||||
【提示/体验】所有转换有提示(含消耗数量与下一步指引); 数量不足/翻炒无下方点燃炉灶/
|
||||
出锅门控未达成(煎蛋未熟/酱香饼未翻炒) 有提示并拦截; 翻炒冷却0.3秒, 其余右键冷却0.4秒;
|
||||
手持方块物品右键炒锅类功能方块取消默认放置(全局) [已实现]
|
||||
【盛出消闪 2026-09-23】手持盘子右键炒锅熟成品(盘子 take_out, 38条), 改走客户端拦截+
|
||||
显式触发(同汤锅): 客户端 ClientItemUseOnEvent ret=True 消闪 + NotifyToServer('TakeoutRequest')
|
||||
-> ChaoguoService.handleTakeoutRequest(校验落点仍是成品防重复). 空手出锅(煎饼/馍等 item=None)
|
||||
不走此路, 照旧 ServerBlockUseEvent. 由 InterceptData.TAKEOUT_CANCEL 自动派生 [已实现]
|
||||
【留后】各盘装成品/盖饭 右键吃(总食用功能后续实现)、半份/部分份变体出锅(见 全部功能没做什么.txt)
|
||||
|
||||
|
||||
@@ -982,3 +1002,29 @@ FurnitureData+FurnitureService 实现, 注册到 FeatureDispatcher)
|
||||
成品菜/米饭右键炒锅中间态方块→取消放置"的服务端兜底, 因要使客户端白名单宁少勿多
|
||||
(避免误拦正常放置), 该边缘防误触仍只服务端处理(功能正确, 仅轻微闪烁), 暂不搬客户端 [已复查]
|
||||
|
||||
########################################
|
||||
【统一 itemUseOn 转换 消闪修复】(2026-09-23)
|
||||
########################################
|
||||
背景: [总食用转化关系.txt] 中"盖饭/盛出"等走 handleItemUseOn / handleBlockUse 的转换
|
||||
被客户端纯 ret=True 吞掉服务端 ServerItemUseOnEvent / ServerBlockUseEvent, 导致"点无反应"
|
||||
(盖饭此前已用 GAI_FAN_CANCEL + GaifanRequest 修复)。
|
||||
本轮审计其余所有"走 handleItemUseOn 的 itemUseOn 转换", 发现同款风险, 统一修复:
|
||||
- 覆盖: 原版相邻放置 / 盘子装盘 / 面食手持转换(烤炉/木碗/蒸笼) / 汤锅手持转换(熟面条碗)
|
||||
/ 裹粉(面粉块) / 厨具锅铲蘸油(油罐/炒锅) / 种水稻 / 寿司堆叠 / 手持直接吃(右键表面)
|
||||
- 方案:
|
||||
①新增 FeatureDispatcher.OnItemUseOnRequest(服务端), 按 itemName 路由 itemUseOnAll
|
||||
各服务 handleItemUseOn(与 OnGaifanRequest 同机制, 逐个 fallback)
|
||||
②客户端 ClientFeatureDispatcher.OnItemUseOn 将这些纯 ret 分支统一改为
|
||||
ret=True(消闪) + NotifyToServer('ItemUseOnRequest') 显式触发
|
||||
③去重: 各服务 handleItemUseOn 自带 checkCooldown(同坐标/同物品), 重复触发被冷却拦截
|
||||
- 细节:
|
||||
①"相邻放置/装盘"(ITEM_USE_ON_CANCEL_BY_ITEM) 分支【不设 _afterCd】, 因被点表面坐标
|
||||
不变, 设了会误吞同一表面 1.5s 内连续放置(如连摆多个切配块); 去重靠服务端冷却
|
||||
②"盖饭/蛋炒饭"(GAI_FAN_CANCEL)、"盛出/出锅"(TAKEOUT_CANCEL) 仍用各自专用事件, 不变
|
||||
- 文件:
|
||||
①FeatureDispatcher.py: 新增 ITEM_USE_ON_REQUEST 常量 / ListenEvent / UnListenEvent /
|
||||
OnItemUseOnRequest
|
||||
②ClientFeatureDispatcher.py: 导入 SUSHI_CANCEL, 新增 ITEM_USE_ON_REQUEST 常量,
|
||||
OnItemUseOn 的 BY_ITEM / ITEM_USE_ON_CANCEL / SUSHI / COATING 分支全部改为 ret+显式事件
|
||||
③白名单清单: 新增"十三、其余 itemUseOn 转换 统一显式事件修复" [已实现]
|
||||
|
||||
@@ -295,3 +295,17 @@ todo 需要 对油罐 进行一个 打碎 后 在右键依然是多少的使用
|
||||
- 烤鸡/烤乳猪"生命提升 10点"按 生命提升III(30秒) 实现(10点≈2.5级取III, 每级+4点血)
|
||||
- 原版食物成品盘(plate_16/17/18/20/21/4)按 txt 无增益效果
|
||||
- 饭团/水煮蛋 已补 use_animation:eat+food 组件(长按右键可触发食用事件)
|
||||
|
||||
|
||||
########################################
|
||||
【统一 itemUseOn 转换】(2026-09-23)
|
||||
########################################
|
||||
四、其余 itemUseOn 转换的"点无反应"根治
|
||||
- 与其他 itemUseOn 转换(面食/汤锅/装盘/相邻放置/厨具蘸油/寿司/裹粉/种水稻/手持吃)
|
||||
经审计确认与盖饭同款风险(客户端纯 ret 吞 ServerItemUseOnEvent), 已统一用
|
||||
OnItemUseOnRequest 显式事件修复(见做了什么.txt)。本次为完整修复, 无遗留。
|
||||
- 暂未单测验证每一项的实际效果(用户需逐个进游戏验证): 因网易双端事件吞食行为
|
||||
对"原版非方块物品 vs 方块物品"可能有差异, 若某项仍点无反应, 说明该组合的吞食
|
||||
路径不同, 需再单独排查(不按此统一方案重复改)。
|
||||
五、盖饭/盛出/出锅 专用事件(GAI_FAN_CANCEL / TAKEOUT_CANCEL) 维持专用, 不再并入统一事件
|
||||
- 原因: 已跑通, 保持不回退; 统一事件只覆盖其余 itemUseOn 组合 [2026-09-23]
|
||||
+61
-1
@@ -137,4 +137,64 @@
|
||||
取消key: 手持item (ClientItemTryUseEvent cancel)
|
||||
- rtdd:rice_balls(饭团) -> 直接吃
|
||||
- rtdd:boiled_egg(水煮蛋) -> 直接吃
|
||||
- rtdd:beancurd(豆腐) -> 直接吃
|
||||
- rtdd:beancurd(豆腐) -> 直接吃
|
||||
|
||||
|
||||
========================================
|
||||
十一、盛出/出锅消闪 (InterceptData.TAKEOUT_CANCEL, 2026-09-23)
|
||||
========================================
|
||||
右键场景: 手持 木碗/盘子 右键 成品方块(汤锅成品/炒锅熟盘装/油锅熟炸物) -> 盛出/出锅。
|
||||
问题: 手持可放置方块物品右键, 客户端先渲染一帧"放置前摇/幽灵方块",
|
||||
服务端取消指令往返后才撤掉 -> "闪一下"(服务端顺序正确, 碗/盘从未真落, 见日志 FD-Placed-AFTER=air)。
|
||||
方案: 客户端对该组合 ClientItemUseOnEvent ret=True(取消放置预览, 消闪)
|
||||
+ NotifyToServer('TakeoutRequest') 显式通知服务端执行盛出(纠正"客户端拦截吞服务端盛出")。
|
||||
取消key: (手持item, 被点block), 由 汤锅/炒锅/油锅 SWITCH_RULES 里 action=="take_out"
|
||||
且 item 是容器(木碗bowlasoup / 盘子plate_0) 的规则自动派生。
|
||||
- 汤锅: 木碗(bowlasoup)/盘子(plate_0) + 各成品汤方块(30条, 含 美味饺子全份盘装plate_30a)
|
||||
- 炒锅: 盘子(plate_0) + 各炒锅熟成品(38条, 含蛋炒饭 riceegg_3)
|
||||
- 油锅: 盘子(plate_0) + 6条熟炸物方块
|
||||
特殊:
|
||||
- 空手取出(item=None, 捏饭团/取水煮蛋/煎饼/馍出锅)、菜刀(item=CLEAVER)不走此路, 照旧 ServerBlockUseEvent。
|
||||
- 服务端在 FeatureDispatcher.OnTakeoutRequest -> 各 Service.handleTakeoutRequest,
|
||||
校验落点仍是成品方块才执行(防客户端事件与服务端事件双份)。
|
||||
|
||||
|
||||
========================================
|
||||
十二、盖饭/蛋炒饭 消闪 (InterceptData.GAI_FAN_CANCEL, 2026-09-23)
|
||||
========================================
|
||||
右键场景: 手持 成品菜 右键 米饭(盖饭正向) / 手持 米饭 右键 成品菜(盖饭反向) /
|
||||
手持 米饭 右键 炒锅蛋炒饭(蛋炒饭改造)。
|
||||
问题: 这些组合走 ServerItemUseOnEvent, 但也被 ITEM_USE_ON_CANCEL 纯 ret=True 吞掉,
|
||||
导致服务端 ServerItemUseOnEvent 不触发 -> 盖饭"点无反应"(与盛出被吞同机制)。
|
||||
方案: 客户端对该组合 ret=True(消闪) + NotifyToServer('GaifanRequest') 显式触发
|
||||
-> FeatureDispatcher.OnGaifanRequest -> ChaoguoService.handleItemUseOn。
|
||||
取消key: (手持item, 被点block), 由 ChaoguoData.ITEM_USE_ON_RULES 的 surface 字段自动派生
|
||||
(盖饭正向/反向 + 蛋炒饭改造, 共若干组)。
|
||||
|
||||
【通用】客户端 1.5 秒放置冷却(_afterCd): 盛出/盖饭/出锅后, 同一坐标短时间内引擎
|
||||
再触发的"放置"直接 ret 吞掉, 消除"转换后多放置一次"的闪烁 (2026-09-23)。
|
||||
|
||||
|
||||
========================================
|
||||
十三、其余 itemUseOn 转换 统一显式事件修复 (InterceptData / FeatureDispatcher, 2026-09-23)
|
||||
========================================
|
||||
问题: 与盖饭同款 —— 客户端对"走 handleItemUseOn 的 itemUseOn 转换"纯 ret=True 时,
|
||||
会吞掉服务端 ServerItemUseOnEvent, 导致一端(面食/汤锅/装盘/相邻放置/厨具蘸油/寿司/
|
||||
裹粉/种水稻)转换"点无反应"。
|
||||
方案: 客户端对所有这些组合改为 ret=True(消闪) + NotifyToServer('ItemUseOnRequest')
|
||||
显式触发; 服务端新增 FeatureDispatcher.OnItemUseOnRequest, 复用按 itemName 路由到
|
||||
itemUseOnAll 各服务 handleItemUseOn(与 OnGaifanRequest 同机制), 逐个 fallback。
|
||||
去重: 各服务 handleItemUseOn 自带 checkCooldown(同坐标/同物品), 即使与真实
|
||||
ServerItemUseOnEvent 重复触发也会被冷却拦截, 不双重消耗。
|
||||
- 一、原版相邻放置(手持原版生食右键任意表面 -> 相邻格放切配块/生肉) [已统一]
|
||||
- 二、盘子装盘(手持原版食物右键 plate_0 -> 盘子变换) [已统一]
|
||||
- 三、面食.甜食 手持转换(右键 烤炉/木碗/蒸笼) [已统一]
|
||||
- 四、汤锅 手持转换(右键 熟面条碗 -> 汤面) [已统一]
|
||||
- 六、乡野食材 裹粉(手持生食材右键 面粉块) [已统一]
|
||||
- 七、厨具 锅铲/带油锅铲(右键 油罐/炒锅) [已统一]
|
||||
- 八、乡野自然 水稻种植(手持稻谷右键地面) [已统一]
|
||||
- 九、寿司 手持方块物品右键自家寿司方块(取消默认放置) [已统一]
|
||||
- 十、总食用 手持直接吃(饭团/水煮蛋/豆腐, 右键表面吃) [已统一]
|
||||
【注意】"相邻放置/装盘"分支(ITEM_USE_ON_CANCEL_BY_ITEM)因被点【表面坐标】不变,
|
||||
不设 _afterCd(避免误吞同一表面 1.5s 内连续放置), 去重交给服务端 handleItemUseOn 冷却。
|
||||
"盖饭/蛋炒饭"(GAI_FAN_CANCEL)、"盛出/出锅"(TAKEOUT_CANCEL) 仍用各自专用事件, 不变。
|
||||
Reference in new issue
Block a user