实战用法
create_purchase_contract 常用于建立国家间的军备贸易关系,例如在焦点或事件中模拟历史上的军备出口协议(如英国向殖民地输送装备、小国向大国采购武器等)。它允许同时指定工厂援助和多种装备批次,非常适合构建复杂的借贷援助或军售 mod 系统。
# 英国通过事件向南非联邦提供军备支援
country_event = {
id = arms_trade.1
immediate = {
create_purchase_contract = {
seller = ENG
buyer = SAF
civilian_factories = 1
equipment = {
type = infantry_equipment
amount = 500
}
equipment = {
type = support_equipment
amount = 100
}
}
}
}
配合关系
[every_purchase_contract](/wiki/effect/every_purchase_contract):创建合同后可遍历现有合同进行批量修改或取消,常用于在新合同建立前清理旧合同,避免合同堆积。
[any_country](/wiki/trigger/any_country):在 trigger 块中用来检查目标国家是否满足特定条件(如是否为特定阵营成员),决定是否触发 create_purchase_contract。
[if](/wiki/effect/if):用条件分支包裹合同创建逻辑,根据不同游戏状态(如玩家选择的国策选项)动态决定 seller/buyer 组合或装备种类。
[custom_effect_tooltip](/wiki/effect/custom_effect_tooltip):由于合同细节在事件界面不会自动显示,搭配该命令可为玩家提供清晰的可读性提示,说明合同内容。
常见坑
- seller/buyer 必须是已存在的国家标签:若指定的国家在游戏中尚未被激活(如历史上尚未独立的国家),合同将静默失败而不报错,新手常因此误以为脚本本身有问题,需用
[country_exists](/wiki/trigger/country_exists) 提前检查。
- 重复执行会叠加合同而非覆盖:每次触发都会新建一份独立合同,若在循环或反复触发的事件中调用,会产生大量重复合同拖慢游戏,应在创建前用
[every_purchase_contract](/wiki/effect/every_purchase_contract) 先清理同类旧合同。