From b42463c9207d57b19e5fefa5892d1e270f90dc24 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Tue, 20 Oct 2026 23:54:02 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E5=8D=A1=E2=91=A1=20T7):=20config=5Fdb=5Fc?= =?UTF-8?q?ross=5Fvalidator=20=E5=BC=95=E7=94=A8=E9=97=AD=E5=90=88=205=20?= =?UTF-8?q?=E8=A1=8C=E8=A1=A5=E7=B1=BB=E5=9E=8B=E6=A0=87=E6=B3=A8=E8=BF=87?= =?UTF-8?q?=20S9=20=E7=B1=BB=E5=9E=8B=E9=97=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit trig_rows→Array[Variant]、dd/tr/c/do2→Dictionary[Variant,Variant](R1 无类型容器归零)。 config_db_test EXIT=0、counter_prefix_fatal EXIT=1(负向)、runtime 零转换错误。 --- game/core/config_db_cross_validator.gd | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/game/core/config_db_cross_validator.gd b/game/core/config_db_cross_validator.gd index f1bc4a79..c9521c37 100644 --- a/game/core/config_db_cross_validator.gd +++ b/game/core/config_db_cross_validator.gd @@ -113,7 +113,7 @@ func cross_validate(loaded: Dictionary, push_diag: Callable) -> void: # 声明集 = feats + treasure 各行 triggers 内 kind=counter_add 的 do.counter_id; # 读点 = when fact=counter 的 id、do.value_counter、kind=counter_spend 的 counter_id。 var feats_tab = loaded.get("feats") - var trig_rows: Array = [] + var trig_rows: Array[Variant] = [] if feats_tab != null: for r in feats_tab.rows: trig_rows.append(r) @@ -123,21 +123,21 @@ func cross_validate(loaded: Dictionary, push_diag: Callable) -> void: var counter_decls := {} for row in trig_rows: for tr_v in (row.get("triggers", []) as Array): - var dd: Dictionary = (tr_v as Dictionary).get("do", {}) as Dictionary + var dd: Dictionary[Variant, Variant] = (tr_v as Dictionary).get("do", {}) as Dictionary[Variant, Variant] # 声明集=任一 do.counter_id 行(counter_add 直写、forgive_seal_miss 经 _apply_counter_hit 写——皆写入行) if dd.has("counter_id"): counter_decls[String(dd.counter_id)] = true for row in trig_rows: var rid := String(row.get("feat_id", row.get("item_id", ""))) for tr_v in (row.get("triggers", []) as Array): - var tr: Dictionary = tr_v as Dictionary + var tr: Dictionary[Variant, Variant] = tr_v as Dictionary[Variant, Variant] for c_v in (tr.get("when", []) as Array): - var c: Dictionary = c_v as Dictionary + var c: Dictionary[Variant, Variant] = c_v as Dictionary[Variant, Variant] if String(c.get("fact", "")) == "counter" and c.has("id"): var rd := String(c.id) if not counter_decls.has(rd): push_diag.call("error", "counter_dangling_ref", "%s when counter 读点无同名写入行: %s(引用闭合)" % [rid, rd]) - var do2: Dictionary = tr.get("do", {}) as Dictionary + var do2: Dictionary[Variant, Variant] = tr.get("do", {}) as Dictionary[Variant, Variant] if do2.has("value_counter") and not counter_decls.has(String(do2.value_counter)): push_diag.call("error", "counter_dangling_ref", "%s value_counter 读点无同名写入行: %s" % [rid, String(do2.value_counter)]) if String(do2.get("kind", "")) == "counter_spend" and do2.has("counter_id") and not counter_decls.has(String(do2.counter_id)):