命令百科

effect · print_variables

Definition

  • Supported scope:STATE, COUNTRY, CHARACTER
  • Supported target:none

Description

prints all variables in scope and temp variables to a file
Example: print_variables = {
file = log_file
text = header_text
append = yes
print_global = yes
var_list = { a b c } #optional
}

实战 · 配合 · 坑

实战内容由 AI 生成,并已对照 vanilla 命令词表校验 —— 请当作起点而非权威依据。上方的定义节才是游戏自带文档原文。

实战用法

print_variables 主要用于 mod 调试阶段,当你需要追踪某个国家/州/角色上的变量值是否被正确设置时,可以将其临时插入执行块,把当前 scope 内所有变量和临时变量输出到日志文件,方便排查逻辑错误。开发完成后通常会将其注释掉或删除,避免影响性能。

# 调试:验证某次事件触发后变量是否正确赋值
country_event = {
    id = debug.1
    hidden = yes
    immediate = {
        print_variables = {
            file = "debug_log"
            text = "=== Event debug.1 fired ==="
            append = yes
            print_global = yes
        }
    }
}

配合关系

  • [has_active_rule](/wiki/trigger/has_active_rule):在确认某规则激活后紧跟 print_variables,可验证规则触发时变量状态是否符合预期。
  • [clr_country_flag](/wiki/effect/clr_country_flag):清除标记前先打印变量快照,便于对比清除前后状态,定位标记逻辑错误。
  • [country_event](/wiki/effect/country_event):通过触发专用调试事件来集中调用 print_variables,使日志输出更有组织,便于批量检查多个 scope。
  • [any_owned_state](/wiki/trigger/any_owned_state):遍历州时配合在子 scope 中调用 print_variables,可逐一输出每个州上的变量值,适合排查州级变量同步问题。

常见坑

  1. 忘记在发布版本中移除print_variables 每次执行都会进行文件 I/O,若遗留在高频触发的 effect 块中(如每日脉冲),会严重拖慢游戏性能,必须在调试结束后删除或用 if 条件块包裹控制。
  2. 误以为 var_list 可以省略所有字段file 字段是必填项,省略会导致脚本报错或输出到意外位置;而 var_list 才是真正可选的——不写则输出 scope 内全部变量,写了则只输出指定变量,两者行为差异容易混淆。