命令百科

effect · divide_variable

Definition

  • Supported scope:any
  • Supported target:none

Description

Divides a variable by a value, another variable, or a [math expression](script_math_expression.md).

### Examples

divide_variable = { num_dogs = 2 } divide_variable = { num_dogs = { value = num_cats add = 1 } }

实战 · 配合 · 坑

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

实战用法

divide_variable 常用于需要对变量做归一化或平均值计算的 mod 场景,例如将某国积累的"总资源收益"除以回合数以得到"每回合平均值",或将一个人口变量按比例缩放以适配 UI 显示范围。以下是一个计算平均工厂产出的示例:

# 将累计产出总量除以统计周期数,得到平均产出
divide_variable = {
    var = total_factory_output
    value = num_of_weeks
}

配合关系

  • [set_variable](/wiki/effect/set_variable):在执行除法之前,通常需要先用 set_variable 给目标变量赋初始值,确保被除数有意义的起点。
  • [add_to_variable](/wiki/effect/add_to_variable):常在循环或事件中持续累加变量,最后再用 divide_variable 求平均,两者构成"累加→平均"工作流。
  • [clamp_variable](/wiki/effect/clamp_variable):除法结果可能出现极端值(如除数很大时趋近于零),用 clamp_variable 在除法后将结果限定在合理区间内。
  • [check_variable](/wiki/trigger/check_variable):除法执行前应先用 check_variable 触发器确认除数不为零,避免脚本产生非预期行为。

常见坑

  1. 除数为零未做保护:HOI4 脚本不会自动报除零错误,但结果会变成 0 或产生异常值。务必在 divide_variable 前使用 [check_variable](/wiki/trigger/check_variable)(配合 if 块)判断除数变量的值是否大于零,再执行除法。
  2. 混淆 var 字段与 value 字段的类型value 可以填写固定数字,也可以填写另一个变量名,但若填写的变量名在当前 scope 下不存在,游戏会静默将其视为 0,导致结果异常,新手容易误以为是逻辑错误而长时间排查。