作用域:修订间差异

本页面所适用的版本可能已经过时,最后更新于1.9
无编辑摘要
第1行: 第1行:
{{version|1.9}}{{Expand}}
{{version|1.9}}{{Expand}}
'''Scopes''' select entities in order to check for [[conditions]] or apply [[commands]].
''' 作用域''' 选择实体以检查[[ 条件]] 或实施[[ 指令]]


Scopes always have a bracketed block on the right side:
作用域后面一般都会跟着大括号:
<pre>
<pre>
<scope_name> = {
<scope_name> = {
#Stuff to execute in the scope.
# 这个作用域中要实施的东西。
}
}
</pre>
</pre>


But not all bracketed blocks are scopes: some are function blocks (<code>option</code>, <code>trigger</code>, <code>mean_time_to_happen</code>,...), [[operator]]s (<code>AND</code>), flow control statements (<code>if</code>, <code>limit</code>), or clause for complex [[conditions]] or [[commands]].
但是不是所有后面有大括号的东西都是作用域:有一些是功能模块(<code>option</code>, <code>trigger</code>, <code>mean_time_to_happen</code>,...) [[operator]] (<code>AND</code>), 流控制语句 (<code>if</code>, <code>limit</code>) ,或者是复杂[[ 条件]] 或者[[ 指令]] 的分句。


===Scope-change types===
=== 作用域转换类型===
There are different types of scope change operators.
有不同的作用域转换运算符。


*Condition: Conditional scopes do return a Boolean value like other conditions
* 条件(Condition):条件作用域和其他条件一样返回布尔值。
*Command: Command scopes do execute commands on the new scope
* 指令(Command):指令作用域和其他指令一样对新作用域施加效果。
*Both: These operators can be used as both of the above.
* 兼容(Both):这种作用域可以有以上两种用途。


Most of the general scope change operators have four different forms.
大多数通用作用域转换运算符都有四种不同的形式。


{| class="wikitable"
{| class="wikitable"
|-
|-
!Name!!Description
! 名称!! 描述
|-
|-
|all_<name>||Conditional, all must meet the subconditions
|all_<name>|| 条件,所有都必须达到子条件。
|-
|-
|any_<name>||Conditional, at least one must meet the subconditions
|any_<name>|| 条件,至少有一个达到子条件。
|-
|-
|every_<name>||Command, executed on every subscope
|every_<name>|| 指令,施加在所有子作用域上。
|-
|-
|random_<name>||Command, executed on one random subscope
|random_<name>|| 指令,施加在某一子作用域上。
|}
|}


===List of Scopes===
=== 作用域列表===


'''Please be aware of the following:'''
''' 请注意以下内容:'''


:If a scope has trigger set to '''✓''', then you may test it against a condition.
:If a scope has trigger set to '''✓''', then you may test it against a condition.

2020年9月7日 (一) 01:11的版本

作用域选择实体以检查条件或实施指令

作用域后面一般都会跟着大括号:

<scope_name> = {
	#这个作用域中要实施的东西。
}

但是不是所有后面有大括号的东西都是作用域:有一些是功能模块(option, trigger, mean_time_to_happen,...),operator (AND), 流控制语句 (if, limit),或者是复杂条件或者指令的分句。

作用域转换类型

有不同的作用域转换运算符。

  • 条件(Condition):条件作用域和其他条件一样返回布尔值。
  • 指令(Command):指令作用域和其他指令一样对新作用域施加效果。
  • 兼容(Both):这种作用域可以有以上两种用途。

大多数通用作用域转换运算符都有四种不同的形式。

名称 描述
all_<name> 条件,所有都必须达到子条件。
any_<name> 条件,至少有一个达到子条件。
every_<name> 指令,施加在所有子作用域上。
random_<name> 指令,施加在某一子作用域上。

作用域列表

请注意以下内容:

If a scope has trigger set to , then you may test it against a condition.
If a scope has effect set to , then you may run a command on it.
Scope Description Example Trigger Effect From Scope To Scope Game Version
all_unit_leader Check if all unit leaders owned by the current country scope meet the trigger. all_unit_leader = { ... } X Country Unit Leader 1.5
any_unit_leader Check if any unit leader meets the trigger. any_unit_leader = { ... } X Country Unit Leader 1.5
all_army_leader Check if all army unit leaders owned by the current country scope meet the trigger all_unit_leader = { ... } X Country Unit Leader 1.5
any_army_leader Check if any army unit leader owned by the current country scope meets the trigger all_unit_leader = { ... } X Country Unit Leader 1.5
all_navy_leader Check if all navy unit leaders owned by the current country scope meet the trigger all_navy_leader = { ... } X Country Unit Leader 1.5
any_navy_leader Check if any navy unit leader owned by the current country scope meets the trigger. all_navy_leader = { ... } X Country Unit Leader 1.5
random_unit_leader Targets a random unit leader owned by the current country scope random_unit_leader = { ... } X Country Unit Leader 1.5
every_unit_leader Targets every unit leader owned by the current country scope every_unit_leader = { ... } X Country Unit Leader 1.5
random_army_leader Targets a random army unit leader owned by the current country scope random_army_leader = { ... } X Country Unit Leader 1.5
every_army_leader Targets every army unit leader owned by the current country scope every_army_leader = { ... } X Country Unit Leader 1.5
random_navy_leader Targets a random naval unit leader owned by the current country scope random_navy_leader = { ... } X Country Unit Leader 1.5
every_navy_leader Targets every naval unit leader owned by the current country scope every_navy_leader = { ... } X Country Unit Leader 1.5
global_every_army_leader Targets every army leader for every country in the world (Better to use every_army_leader if you know the country) global_every_army_leader = { ... } X Country Unit Leader 1.5
OVERLORD Targets the overlord of the current scope, if current scope is a subject RAJ = { OVERLORD = { ... } } Country Country 1.3
TAG Targets a specific country by tag FRA = { ... } Anywhere Country 1.0
any_country Targets any country in the world (including the current scope, see any_other_country) any_country = { ... } X Anywhere Country 1.0
any_country_with_original_tag Targets any country with current scope's original tag any_country_with_original_tag = { ... } X Anywhere Country 1.9
any_neighbor_country Targets any neighboring country of the current scope any_neighbor_country = { ... } X Country Country 1.0
any_home_area_neighbor_country Targets any country that shares a border with the current scope's home area (cored states) any_home_area_neighbor_country = { ... } X Anywhere Country 1.0
any_guaranteed_country Targets any country with current scoped country guarantees any_guaranteed_country = { ... } X Country Country 1.9
any_allied_country Targets any allied country of the current scope any_allied_country = { ... } X Country Country 1.0
any_other_country Targets any other country in the world (not including the current scope) any_other_country = { ... } X Country Country 1.0
any_enemy_country Targets any enemy country of the current scope any_enemy_country = { ... } X Country Country 1.0
any_occupied_country Targets any occupied country by the current scope any_occupied_country = { ... } X Country Country 1.9
all_neighbor_country Targets all neighboring countries of the current scope all_neighbor_country = { ... } X Country Country/ies 1.0
all_country Targets all countries in the world all_country = { ... } X Anywhere Country/ies 1.0
all_country_with_original_tag Targets all country with current scope's original tag all_country_with_original_tag = { ... } X Anywhere Country/ies 1.9
all_allied_country Targets all allied countries of the current scope all_allied_country = { ... } X Country Country/ies 1.9
all_guaranteed_country Targets every country with current scoped country guarantees all_guaranteed_country = { ... } X Country Country/ies 1.9
all_enemy_country Targets all enemy countries of the current scope all_enemy_country = { ... } X Country Country/ies 1.0
all_occupied_country Targets all occupied countries all_occupied_country = { ... } X Country Country/ies 1.9
state_id Targets a specific state by id number 145 = { ... } Anywhere State 1.0
any_state Targets any state in the world any_state = { ... } X Anywhere State 1.0
any_controlled_state Targets any of the states controlled by the scope country any_controlled_state = { ... } X Country State 1.9
any_owned_state Targets any owned state of the current scope any_owned_state = { ... } X Country State 1.0
any_neighbor_state Targets any neighboring state of the current scope any_neighbor_state = { ... } X State State 1.0
all_state Targets all states in the world all_state = { ... } X Anywhere State/s 1.0
all_owned_state Targets all owned states of the current scope all_owned_state = { ... } X Country State/s 1.0
all_neighbor_state Targets all neighboring states of the current scope all_neighbor_state = { ... } X State State/s 1.0
all_owned_state Targets all owned states of the current scope all_owned_state = { ... } X Country State/s 1.0
all_controlled_state Targets all of the states controlled by the scope country all_controlled_state = { ... } X Country State/s 1.9
every_country Targets every country in the world (including the current scope, see every_other_country) every_country = { ... } X Anywhere Country/ies 1.0
every_country_with_original_tag Targets every country with original tag every_country_with_original_tag = { original_tag_to_check = TAG limit = { ... } ... } X Anywhere Country/ies 1.9
every_other_country Targets every other country in the world (not including the current scope) every_other_country = { ... } X Country Country/ies 1.0
every_neighbor_country Targets every neighboring country of the current scope every_neighbor_country = { ... } X Country Country/ies 1.0
every_enemy_country Targets every enemy country of the current scope every_enemy_country = { ... } X Country Country/ies 1.0
every_occupied_country Targets every occupied country of the current scope every_occupied_country = { ... } X Country Country/ies 1.9
random_country Targets a random country in the world (including the current scope) random_country = { ... } X Anywhere Country 1.0
random_country_with_original_tag Targets a random country with original tag random_country_with_original_tag = { original_tag_to_check = TAG limit = {...} ... } X Anywhere Country 1.9
random_neighbor_country Targets a random neighboring country of the current scope random_neighbor_country = { ... } X Country Country/ies 1.0
random_enemy_country Targets a random enemy country of the current scope random_enemy_country = { ... } X Country Country 1.0
random_occupied_country Targets a random occupied country of the current scope random_occupied_country = { ... } X Country Country 1.9
random_state Targets a random state in the world random_state = { ... } X Anywhere State 1.0
random_owned_state Targets a random owned state of the current scope random_owned_state = { ... } X Country State 1.0
random_controlled_state Targets a random controlled state of the current scope random_controlled_state = { prioritize = { <stateID> <stateID> } to pick those states first if they fulfill the limit ... } X Country State 1.9
random_owned_controlled_state Targets a random owned and controlled state for the current scope random_owned_controlled_state = { ... } X Country State 1.3
random_neighbor_state Targets a random neighboring state of the current scope random_neighbor_state = { ... } X State State 1.0
every_state Targets every state in the world every_state = { ... } X State State/s 1.0
every_controlled_state Targets every controlled state of the current scope every_controlled_state = { ... } X Country State/s 1.9
every_owned_state Targets every owned state of the current scope every_owned_state = { ... } X Country State/s 1.0
every_neighbor_state Targets every neighboring state of the current scope every_neighbor_state = { ... } X State State/s 1.0
capital_scope Targets the capital state of the current scope capital_scope = { ... } Country State 1.0
owner scope Targets the owner of a state owner = { ... } X State Country 1.0
controller scope Targets the controller of a state controller = { ... } X State Country 1.0
all_operative_leader Targets all operatives of the current scope all_operative_leader = { ... } X Country/Operation Operatives 1.9
any_operative_leader Targets any operative of the current scope any_operative_leader = { ... } X Country/Operation Operative 1.9
every_operative Targets every operatives of the current scope every_operative = { ... } X Country/Operation Operative 1.9
random_operative Targets a random operative of the current scope random_operative = { ... } X Country/Operation Operative 1.9

NOTE: Some of these scopes may have no countries/states that match the criteria

Scope limits

It is possible to use the limit block to narrow down scopes using specific conditions. Simply insert the limit block inside a scope (ex. every neighbor country), put in the desired conditions (ex. has more than 5 military factories) and after closing the limit block, put in the commands (ex. give military access) to affect the specified scopes. A short example is available here:

every_neighbor_country = { # Targets every neighbor country
	limit = {
		num_of_military_factories > 5 # Limit the scope to neighbor countries with more than 5 military factories
	}
	give_military_access = ROOT # Give military access to neighbor countries with more than 5 military factories
}

作用域之间的移动

有许多能够跨作用域执行效果或检查触发器的链接。所有的链接都可以用于效果或触发器,尽管不是所有指令和条件(即效果和触发器)都接受它们,或者是作用域本身。

链接 描述 样例
ROOT 定位这个效果或触发器所在的根(脚本进入的第一个作用域)国家,无视其它任何作用域。
ENG = {
	FRA = {
		GER = {
			declare_war_on = {
				target = ROOT
				type = annex_everything
			}
		}
	}
} #德国对英国宣战。(假设在前面再没有作用域了)
THIS 定位当前作用域。
random_state = {
    add_resource = {
        type = oil
        amount = 50
        state = THIS
    }
}#资源会加到随机的地区(random_state)。
PREV 定位上一个作用域。
FRA = {
	random_country = {
		GER = {
			declare_war_on = {
				target = PREV
				type = annex_everything
			}
		}
	}
} #德国对随机国家宣战(random_country)。

FROM 决议中,定位到目标决议的目标。

事件中,定位到向你发送这个事件的tag(如适用),例如德国向意大利发送了一个事件。

declare_war_on = {
    target = FROM
    type = annex_everything
}
FROM = {
    load_oob = defend_ourselves
}

FROM和PREV可以向前多次定位作用域,方法是在.后面继续加FROM或PREV。例如,FROM.FROMPREV.PREV.PREV。 In this example of chaining these links, two arms factories are built in two random states of a random country, and PREV.PREV is used to ensure the second state is not the same as the first state.

random_country = { #1st scope [1]
    random_owned_state = { # 2nd scope [1,2]
        add_extra_state_shared_building_slots = 2
        add_building_construction = {
            type = arms_factory
            level = 2
            instant_build = yes
        }
        PREV = { #from random_owned_state(#2nd) to random_country(#1st). [1,2,1]
            random_owned_state = { #new second scope [1,2_old,1,2_new]
                limit = { NOT = { state = PREV.PREV } } # The first PREV scopes back to the country, the second scopes back to the first random state <Value:1,2_old,̶1̶,̶̶̶2̶̶̶_̶̶̶n̶̶̶e̶̶̶w>
                add_extra_state_shared_building_slots = 2 #Note: We used PREV.PREV to get a value, but didn't actually enter that scope. [1,2_old,1,2_new]
                add_building_construction = {
                    type = arms_factory
                    level = 2
                    instant_build = yes
                }
            }
        }
    }
}

References