Arrays

本页面所适用的版本可能已经过时,最后更新于1.9
Hstar讨论 | 贡献2020年8月15日 (六) 16:39的版本 (merge from offical wiki)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)


Arrays in general are containers that store elements (data). In Hearts of Iron IV it is possible to store numerical data and scope data within arrays.

Arrays are used via effects and can be checked with triggers. There are special effects that allow you to iterate through an array to then apply other effects to or with the data within.

Effects

add_to_array

add_to_array = {
    array = <name>
    value = <value>
    index = <index>
}

An array is created once an element has been added to it.

The name of the array is what you use to refer to the array in other effects and triggers.

The value is the data you are adding to the array. It can be a number (i.e. 1 or var:my_num) or a scope (i.e. GER or var:my_scope). This is optional, if not included the current scope is added as the value.

The index refers the where the value should be inserted into the array. By default data is added to the end of the array, otherwise the data is shifted to accommodate the new value.

A short form can be used: add_to_array = { <name> = <value> }

remove_from_array

remove_from_array = {
    array = <name>
    value = <value>
    index = <index>
}

The name of the array is the array you want to remove the data from.

The value is the value you want to remove from the array (if present).

The index is the index of the value you want to remove from the array (if present).

If neither the value or index attributes are defined, the last element will be deleted.

A short form can be used: remove_from_array = { <name> = <value> }

clear_array

clear_array = <name>

Clears all data from the specified array.

resize_array

resize_array = {
    array = <name>
    value = <value>
    size = <int>
}

Resizes the specified array.

The value attribute sets any empty elements to the specified value if expanding the array. Defaults to 0 if not specified.

The size attribute specifies the new size of the array, removing elements if shrinking the array, or adding new elements with the specified value if expanding it.

A short form can be used: resize_array = { <name> = <size> }

while_loop_effect

while_loop_effect = {
    break = <string>
    limit = { <triggers> }
    
    <effects>
}

Runs the effect as long as a trigger is true.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

for_each_loop

for_each_loop = {
    array = <name>
    value = <string>
    index = <string>
    break = <string>
    
    <effects>
}

Runs a loop for each element of the specified array.

The value attribute specifies a temp variable that stores the current value whilst iterating over the loop. By default this is v.

The index attribute specifies a temp variable that stores the current index whilst iterating over the loop. By default this is i.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

for_each_scope_loop

for_each_scope_loop = {
    array = <name>
    break = <string>
    
    <effects>
}

Runs a loop for each element of the specified array and changes the current scope to the current element in each iteration.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

random_scope_in_array

random_scope_in_array = {
    array = <name>
    break = <string>
    limit = { <triggers> }
    
    <effects>
}

Runs a loop for each element of the specified array and changes the current scope to a random scope (out of the scopes within the array) that meet the triggers specified.

The break attribute specifies a temp variable that can be set to non-0 to break the loop, ending iteration. By default this is break.

Effects can be used within the loop to perform operations with the data within an array.

add_to_temp_array

Same as add_to_array but for temporary arrays that expire once execution of the script is finished.

remove_from_temp_array

Same as remove_from_array but for temporary arrays that expire once execution of the script is finished.

clear_temp_array

Same as clear_array but for temporary arrays that expire once execution of the script is finished.

resize_temp_array

Same as resize_array but for temporary arrays that expire once execution of the script is finished.

Triggers

is_in_array

is_in_array = {
    array = <name>
    value = <value>
}

Checks if the specified value is in the specified array.

any_of

any_of = {
    array = <name>
    value = <string>
    index = <string>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element. If any return true, the whole check returns true, otherwise returns false.

all_of

all_of = {
    array = <name>
    value = <string>
    index = <string>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element. If any return false, the whole check returns false, otherwise returns true.

any_of_scopes

any_of_scopes = {
    array = <name>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element scope. If any return true, the whole check returns true, otherwise returns false.

all_of_scopes

all_of_scopes = {
    array = <name>
    
    <triggers>
}

Runs a loop on the specified array and checks the triggers against the current element scope. If any return false, the whole check returns false, otherwise returns true.

Examples