装备校验链/快捷栏/公会/好友情侣/交易仓库五项差距修复(增量 129)
- 装备校验:can_equip 按 CanEquipNow→FindEquipCell→EquipItem 精确重排, 新增 find_equip_cell() 1:1 复刻(RING/UNIQUE 占用翻转、COSTUME/BELT/DS), 帝国 antiflag 降级为 tooltip 提示,LIMIT_PCBANG/REAL_TIME* 语义与倒计时文案 - 快捷栏:死亡全槽禁用+激活守卫、变身(affect 220)技能置灰、 物品槽失配置灰(服务器回收/换武器后刷新) - 公会:GUILD_AUTH_* 权限位门控踢人/公告/技能升级,/gskillup、 被宣战应答弹窗(/war·/nowar)、资金存取行(40250 服务端已禁用仍保留 1:1) - 好友/情侣:messenger 三固定组(好友/公会/情侣),lover_login/logout/ near/far/divorce 命令事件→在线/在身边状态与离婚隐藏 - 交易/仓库:ExchangeState.last_notice(ALREADY/LESS_GOLD)结束浮层提示; 仓库改密 /safebox_change_password 三段输入;关窗补 /safebox_close·/mall_close; 仓库金钱经核实 40250 无 wire 协议,UI 定界只读 - app_flow:重连时 guild_marks_ready 重复连接加 is_connected 守卫 - 相机 look_at 零向量守卫(首帧/传送落点) - 测试:equip/love/guild 断言更新,79 项中 78 绿(game_camera_test 为 HEAD 既有失败);真服冒烟 LIVE_SMOKE PASS(192.168.21.203 全链路) - docs/CLIENT-GAP.md 同步增量 129 Co-Authored-By: Claude Code <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018kUFvQGYusuY3dkfGitmAe
This commit is contained in:
@@ -223,6 +223,10 @@ func format(vnum: int, count: int, proto_data: Dictionary, instance_data: Dictio
|
||||
for limit in proto_data.get("limits", []):
|
||||
var limit_type := int(limit.get("type", 0))
|
||||
var limit_value := int(limit.get("value", 0))
|
||||
if limit_type == 6:
|
||||
# LIMIT_PCBANG 只是“网吧专用”标记,不是装备门禁(服务器 item.cpp:1899)。
|
||||
lines.append("PC房专用道具")
|
||||
continue
|
||||
if limit_type != 0 and limit_value > 0:
|
||||
lines.append("%s:%d" % [LIMIT_NAMES.get(limit_type, "限制 %d" % limit_type), limit_value])
|
||||
for apply in proto_data.get("applies", []):
|
||||
@@ -291,19 +295,32 @@ func _append_realtime_limit(lines: Array[String], proto_data: Dictionary, socket
|
||||
return
|
||||
var value := int(sockets[0])
|
||||
var remaining := 0
|
||||
if limit_type == 7 or limit_type == 8:
|
||||
if limit_type == 8:
|
||||
# REAL_TIME_START_FIRST_USE:socket1 = 使用计数。未启用(0)时 socket0 是
|
||||
# 时长秒数而非到期时间戳;启用后服务器把 socket0 换成到期 unix ts
|
||||
#(char_item.cpp:6100 尾部 cLimitRealTimeFirstUseIndex 分支)。
|
||||
var used := int(sockets[1]) if sockets.size() > 1 else 0
|
||||
if used == 0:
|
||||
lines.append("首次使用后计时:%s" % _duration_text(value))
|
||||
return
|
||||
remaining = maxi(0, value - int(Time.get_unix_time_from_system()))
|
||||
elif limit_type == 7:
|
||||
# REAL_TIME:socket0 = 到期 unix ts(item_length.h:328-347)。
|
||||
remaining = maxi(0, value - int(Time.get_unix_time_from_system()))
|
||||
else:
|
||||
remaining = maxi(0, value)
|
||||
if remaining <= 0:
|
||||
lines.append("剩余时间:已超时")
|
||||
return
|
||||
var minutes := remaining / 60
|
||||
var seconds := remaining % 60
|
||||
var text := "%d秒" % seconds
|
||||
lines.append("剩余时间:%s" % _duration_text(remaining))
|
||||
|
||||
func _duration_text(seconds: int) -> String:
|
||||
var minutes := seconds / 60
|
||||
var rest := seconds % 60
|
||||
var text := "%d秒" % rest
|
||||
if minutes > 0:
|
||||
text = "%d分%s" % [minutes, text] if seconds > 0 else "%d分" % minutes
|
||||
lines.append("剩余时间:%s" % text)
|
||||
text = "%d分%s" % [minutes, text] if rest > 0 else "%d分" % minutes
|
||||
return text
|
||||
|
||||
func _append_special_item_data(lines: Array[String], item_type: int, vnum: int,
|
||||
values: Array, proto_data: Dictionary, instance_data: Dictionary) -> void:
|
||||
|
||||
Reference in New Issue
Block a user