编辑“事件模组制作

警告:您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您登录创建一个账户,您的编辑将归属于您的用户名,且将享受其他好处。

该编辑可以被撤销。 请检查下面的对比以核实您想要撤销的内容,然后发布下面的更改以完成撤销。

最后版本 您的文本
第5行: 第5行:


==位置==
==位置==
 事件 的代码需要放在 位于[[模组结构#Mod文件夹|Mod文件夹]]中的<code>events</code>目录中的.txt文件 。每个文件可以容纳任意多个事件。 如有需要,<code>events</code>目录 可以 再建立 子文件夹 来存放事件文件
 事件 属于 位于[[模组结构#Mod文件夹|Mod文件夹]]中的<code>Events</code>目录中的.txt文件。每个文件可以容纳任意多个事件。<code>events</code>目录 可以 有包含自己事件文件的 子文件夹 (如果愿意的话)


== 结构 ==
== 结构 ==


 整体结构与[[ck2:事件模组制作|CK2的事件]]相似,语法进行了一些调整,并添加了大量的额外功能,其中许多是可选的。以下是最基本的事件(其中每个元素会在后面的小节中 进行解释 ):
 整体结构与[[ck2:事件模组制作|CK2的事件]]相似,语法进行了一些调整,并添加了大量的额外功能,其中许多是可选的。以下是最基本的事件(其中每个元素会在后面的小节中 提到 ):
<syntaxhighlight lang="coffeescript">
<syntaxhighlight lang="coffeescript">
namespace = example
namespace = example
第21行: 第21行:
</syntaxhighlight>
</syntaxhighlight>


 好了!将这段代码添加到你的模组中,在游戏内控制台输入"event example.1"来触发它,你就会得到一个可用的事件!这就是一个最基本的事件 结构, 所有 其他的内容都是可选的,但是 编撰一个生动的 事件时 它们 是必 不可少 的。以下是一个更为详细的 事件 示例(仅包含基础内容):
 好了!将这段代码添加到你的模组中,在游戏内控制台输入"event example.1"来触发它,你就会得到一个可用的事件!这就是一个最基本的事件结构,其他的内容都是可选的,但是 它们在完善 事件时是必 的。以下是一个更为详细的 活动 示例(仅包含基础内容):


<syntaxhighlight lang="coffeescript">
<syntaxhighlight lang="coffeescript">
第28行: 第28行:
type = character_event
type = character_event
title = "A Modding Example Worthy of Kings" # 专业提示:在编写时,你可以使用字符串,稍后再用本地化替换它。
title = "A Modding Example Worthy of Kings" # 专业提示:在编写时,你可以使用字符串,稍后再用本地化替换它。
desc = birth.1003.b # 对于Sublime用户而言,有一个非常出色的功能,即“在文件中查找”,非常适用于 在本地化文件中探索
desc = birth.1003.b # 对于Sublime用户而言,有一个非常出色的功能,即“在文件中查找”,非常适用于 查找代码


theme = mental_break
theme = mental_break
第40行: 第40行:


=== ID 和命名空间 ===
=== ID 和命名空间 ===
 命名空间(Namespaces)可以是任何由字母和数字组成的字符串(不包含'.'字符), 会被 用作前缀,形式为 <code><namespace>.<id></code>  。ID 是对于一个事件的唯一标识。
 命名空间(Namespaces)可以是任何由字母和数字组成的字符串(不包含'.'字符), 并且 用作前缀,形式为 <code><namespace>.<id></code>  。<br>
 
ID 是对于一个事件的唯一标识。<br>
 如果一个事件文件使用一个命名空间,那么它必须在文件开头声明 <code>namespace = <namespace></code> 。对每个使用该命名空间的文件都需要进行声明。
 如果一个事件文件使用一个命名空间,那么它必须在文件开头声明 <code>namespace = <namespace></code> 。对每个使用该命名空间的文件都需要进行声明。


===  标志 ===
===  旗帜 ===
  标志(Flags)是决定你的事件种类和外观的顶级变量。它们有一组有限的取值。
  旗帜(Flags)是决定你的事件种类和外观的顶级变量。它们有一组有限的取值。


{| class="wikitable"
{| class="wikitable"
第52行: 第52行:
|-
|-
| type 
| type 
|| 事件的类型决定了根(root)的 作用域(scope)。
|| 事件的类型决定了根(root)的 范围(scope)。
||
||
* character_event
* character_event
* letter_event
* letter_event
* duel_event
* none (当一个事件完全不使用作用域时)
* none (当一个事件完全不使用 作用域时)
* empty (一个无角色事件 必须的 触发 。注意:这意味着输入 type = empty )
* empty ( 使 一个无角色事件 能被 触发。注意:这意味着输入 type = empty )
|-
|-
| hidden 
| hidden 
第66行: 第65行:


== 人物肖像 ==
== 人物肖像 ==
 在《十字军之王3》中,人物肖像是3D的,而且 态的 肖像由肖像位置和动画决定。
 在《十字军之王3》中,人物肖像是3D的,而且 还有 ! 肖像由 不同的 肖像位置 列表 和动画 列表 决定。


=== 人物肖像定位 ===
=== 人物肖像定位 ===
第82行: 第81行:
| lower_left_portrait || 在事件框的左下方显示肖像。
| lower_left_portrait || 在事件框的左下方显示肖像。
|-
|-
| lower_center_portrait || 在事件框的下方 中间 显示肖像。
| lower_center_portrait || 在事件框的 下方显示肖像。
|-
|-
| lower_right_portrait || 在事件框的右下方显示肖像。
| lower_right_portrait || 在事件框的右下方显示肖像。
|}
|}


 这是一个同时使用所有人物肖像位置的示例,效果截 图如上 图:
 这是一个同时使用所有人物肖像位置的示例, 效果截图:
<pre>
<pre>
example_event.1001 = {
example_event.1001 = {
left_portrait = {
left_portrait = {
character = ROOT # 此处指定的人物会出现在事件框的指定位置,表现出指定的动画
character = ROOT # Whoever this is scoped to will show up in this event window position, exhibiting the chosen animation.
animation = fear # 注意,拥有某些角色的基因特质(比如巨人、侏儒)会改变人物模型,从而有不同的动作模组;如果你要求一个没有这个动作的模型的人物做将这些特有的动作,可能导致游戏崩溃
animation = fear # Take note that characters with SOME genetic traits (for example, gigantism, dwarfism) that change their character models have different animations, and if you assign one of THOSE animations to a character that does not have that model, crashes may occur.
}
}
right_portrait = {
right_portrait = {
第127行: 第126行:
| triggered_outfit|| 设置事件中使用的服装 ||<pre>triggered_outfit = {
| triggered_outfit|| 设置事件中使用的服装 ||<pre>triggered_outfit = {
trigger = {}
trigger = {}
outfit_tags = no_clothes (可以使用多个tag,格式:outfit_tags = { tag1 tag2 }
outfit_tags = no_clothes (also accepts multiple tags, in the format outfit_tags = { tag1 tag2 }
remove_default_outfit = yes/no
remove_default_outfit = yes/no
}</pre>
}</pre>
|-
|-
| hide_info|| 避免显示人物的任何信息 (提示文字 盾徽 、clicks 等) 只显示人物肖像 ||<code>hide_info = yes/no</code>
| hide_info|| 避免显示人物的任何信息 (提示文字盾徽, clicks 等)显示人物肖像 ||<code>hide_info = yes/no</code>
|}
|}


第137行: 第136行:
{|class="wikitable"
{|class="wikitable"
|-
|-
!colspan="6"| 与事件兼容的动画ID
!colspan="6"|Animation
|-
| admiration
| aggressive_axe
| aggressive_dagger
| aggressive_hammer
| aggressive_mace
| aggressive_spear
|-
|-
| idle
| aggressive_sword
| chancellor
| anger
| steward
| assassin
| marshal
| beg
| spymaster
| boredom
| celebrate_axe
|-
| celebrate_dagger
| celebrate_hammer
| celebrate_mace
| celebrate_sword
| celebrate_spear
| chaplain
| chaplain
|-
|-
| anger
| chancellor
| rage
| chess_certain_win
| chess_cocky
| disapproval
| disapproval
| disbelief
| disbelief
| disgust
| disgust
| fear
|-
|-
| sadness
| dismissal
| shame
| drink
| shock
| drink_goblet
| worry
| eavesdrop
| boredom
| ecstasy
| grief
| eyeroll
|-
|-
| paranoia
| fear
| dismissal
| flirtation
| flirtation
| flirtation_left
| flirtation_left
| love
| frontend_center_idle
| schadenfreude
| frontend_left_idle
| frontend_right_idle
|-
|-
| stress
| grief
| happiness
| happiness
| ecstasy
| idle
| admiration
| lantern
| lunatic
| laugh
| scheme
|-
| beg
| pain
| poison
| aggressive_axe
| aggressive_mace
| aggressive_sword
|-
| aggressive_dagger
| aggressive_spear
| aggressive_hammer
| celebrate_axe
| celebrate_mace
| celebrate_sword
|-
| celebrate_dagger
| celebrate_spear
| celebrate_hammer
| loss_1
| loss_1
| chess_certain_win
| chess_cocky
|-
|-
| laugh
| love
| lantern
| lunatic
| eyeroll
| marshal
| eavesdrop
| assassin
| toast
|-
| toast_goblet
| drink
| drink_goblet
| newborn
| newborn
| sick
| pain
| severelywounded
| paranoia
|-
|-
| prisonhouse
| prisondungeon
| war_attacker
| war_defender
| war_over_tie
| war_over_win
|-
| war_over_loss
| pregnant
| personality_honorable
| personality_honorable
| personality_dishonorable
| personality_bold
| personality_bold
| personality_callous
| personality_compassionate
| personality_content
| personality_coward
| personality_coward
|-
|-
| personality_cynical
| personality_dishonorable
| personality_forgiving
| personality_greedy
| personality_greedy
| personality_content
| personality_irrational
| personality_vengeful
| personality_forgiving
| personality_rational
| personality_rational
| personality_irrational
|-
|-
| personality_compassionate
| personality_vengeful
| personality_callous
| personality_zealous
| personality_zealous
| personality_cynical
| poison
| frontend_center_idle
| pregnant
| frontend_left_idle
| prisondungeon
| prisonhouse
|-
| rage
| sadness
| schadenfreude
| scheme
| severelywounded
| sick
|-
| shame
| shock
| spymaster
| steward
| stress
| test_case_1
|-
|-
| frontend_right_idle
| throne_room_applaud_1
| throne_room_bow_1
| throne_room_bow_2
| throne_room_bow_3
| throne_room_chancellor
| throne_room_chancellor
| throne_room_kneel_1
| throne_room_cheer_1
| throne_room_kneel_2
| throne_room_curtsey_1
| throne_room_messenger_1
|-
|-
| throne_room_messenger_2
| throne_room_cheer_2
| throne_room_messenger_3
| throne_room_conversation_1
| throne_room_conversation_1
| throne_room_conversation_2
| throne_room_conversation_2
| throne_room_conversation_3
| throne_room_conversation_3
| throne_room_conversation_4
| throne_room_conversation_4
| throne_room_curtsey_1
|-
|-
| throne_room_cheer_1
| throne_room_kneel_1
| throne_room_cheer_2
| throne_room_kneel_2
| throne_room_applaud_1
| throne_room_messenger_1
| throne_room_bow_1
| throne_room_messenger_2
| throne_room_bow_2
| throne_room_messenger_3
| throne_room_bow_3
| throne_room_one_handed_passive_1
|-
|-
| throne_room_one_handed_passive_1
| throne_room_one_handed_passive_2
| throne_room_one_handed_passive_2
| throne_room_ruler
| throne_room_two_handed_passive_1
| throne_room_two_handed_passive_1
| throne_room_writer
| throne_room_writer
| test_case_1
| toast
| throne_room_ruler
| toast_goblet
|-
| war_attacker
| war_defender
| war_over_loss
| war_over_tie
| war_over_win
| worry
|}
|}


第535行: 第534行:


== 触发器 ==
== 触发器 ==
 这是 一个 使 事件 具有使用价值 的要求。
 这是一个事件 达成所需要 额外 要求。


<pre>
<pre>
trigger = { #  只有 些条件都满足, 这个事件 以触发 (对于事件本身而言,这是一个巨大的IF语句)。
trigger = { # 这 是为了使 这个事件 成为 能所需的一系列要求 (对于事件本身而言,这是一个巨大的IF语句)。
culture = {
culture = {
has_innovation = innovation_guilds # 检查你的文化是否已解锁 会。
has_innovation = innovation_guilds # 检查你的文化是否已解锁 会。
}
}
}
}
</pre>
</pre>


 还可以使用 <code>trigger_if</code> 将某些要求锁定在自己的触发器后面。只有在 <code>limit</code> 为真时,才会 检查 <code>trigger_if</code> 中的要求。如果 想在 <code>trigger_if</code> 为假 时检查另一组要求 ,可以选择添加 <code>trigger_else</code> 。
 还可以使用 <code>trigger_if</code> 将某些要求锁定在自己的触发器后面。<br>
只有在 <code>limit</code> 为真时,才会 执行 <code>trigger_if</code> 中的要求。如果 <code>trigger_if</code> 为假,可以选择添加 <code>trigger_else</code>  来执行备选要求


<pre>
<pre>
trigger = {
trigger = {
any_held_county = { # 检查是否持有一个建造了铁匠铺的地产
any_held_county = { # We check that we have a blacksmith
any_county_province = {
any_county_province = {
has_building_or_higher = blacksmiths_01
has_building_or_higher = blacksmiths_01
第567行: 第567行:


=== 触发失败 ===
=== 触发失败 ===
on_trigger_fail 在trigger检验失败的 运行
{{需要完善}}
on_trigger_fail 在触发器无法触发 时运行


== 描述 ==
== 描述 ==
第574行: 第575行:


== 立即执行 ==
== 立即执行 ==
 这是一个效果脚本块:当事件被触发时,它将立即运行,甚至在标题、描述和肖像被 运算确定和 渲染之前。这个脚本块 常见的 途是: 设置变量和保存作用域,以便在文本或肖像中使用; 施展 玩家 无法 控制 发生的功能性效果。
'''Immediate''' 这是一个效果脚本块:当事件被触发时,它将立即运行,甚至在标题、描述和肖像被 评估或 渲染之前。这个脚本块 设置变量和保存作用域,以便在 您的 文本或肖像中使用; 或者用于希望在 玩家 没有任何 控制 的情况下 发生的功能性效果。<br>


会提示 "has happened"。
"has happened" 提示


<pre>
<pre>
immediate = { # 无论选择哪个选项,当事件出现在屏幕上时,它都会起作用。
immediate = { # 无论选择哪个选项,当事件出现在屏幕上时,它都会起作用。
add_gold = 50 # 给玩家增加50金钱
add_gold = 50 # adds 50 gold to the player
}
}
</pre>
</pre>


== 选项 ==
== 选项 ==
 用户可以 点击事件所提供 选项。每个事件可以有任意数量的选项,包括没有选项(一个常见的例子是隐藏事件)。每个选项在事件 的顶级 块中定义,如下所示:
  在事件中, 用户可以 按下 选项。每个事件可以有任意数量的选项,包括没有选项(一个常见的例子是隐藏事件)。每个选项在 事件块中定义,如下所示:
<pre>
<pre>
example.1 = {
example.1 = {
第592行: 第593行:


option = {
option = {
# 选项内容
# option info
}
}


第600行: 第601行:
</pre>
</pre>


 以下是一个更复杂的 例子
 以下是一个更复杂的 选项 [[修正列表|修正]]


<pre>
<pre>
第606行: 第607行:
name = stewardship_domain_special.1424.a
name = stewardship_domain_special.1424.a
trigger_event = { # 让另一个事件发生
trigger_event = { # 让另一个事件发生
id = yearly.1012 # 事件ID是访问级别最高的内容(因此,只要 事件 存在, 其ID就 是有效 、可访问 的)。
id = yearly.1012 # 事件ID是访问级别最高的内容(因此 ,事件stewardship_domain.6017是有效的 ,只要 存在, 任何其他事件也 是有效的(valid) )。
days = { 7 14 } # 获取两个值之间的随机数(无法确定是否包括两个边界值),任何接受 "= {X Y}" 格式的内容 如果只需要一个确定值则 可以 写成 "= X"。
days = { 7 14 } # 获取两个值之间的随机数(无法确定是否包括两个边界值),任何接受 "= {X Y}" 格式的内容 可以 简化为 "= X"。
}
}


hidden_effect = { # 隐藏选项提示中的内容
hidden_effect = { # 隐藏选项 工具 提示中的内容
scope:county = { # 获取存储在作用域 "county" 中的 位置信息
scope:county = { # 获取存储在作用域 "county" 中的 内容
add_county_modifier = { # 添加修正(奖励或惩罚)
add_county_modifier = { # 添加修正(奖励或惩罚)
modifier = governance_land_cleared_for_settlement_modifier 
modifier = governance_land_cleared_for_settlement_modifier 
                  # 确保使用的修正 类型正确,列表为https://ck3.parawikis.com/wiki/%E4%BF%AE%E6%AD%A3%E5%88%97%E8%A1%A8 (在本例中为 伯爵领 )。
                  # 确保使用 正确 的修正(在本例中为 国家 )。
days = 3650 # 效果的持续时间,也可以用 days = {X Y}
days = 3650 # 效果的持续时间,也可以用 days = {X Y}
}
}
第622行: 第623行:
ai_chance = {
ai_chance = {
base = 50 # 选择这个选项相比其他选项的机会有多大?(不必是0到100,可以是任何数值)
base = 50 # 选择这个选项相比其他选项的机会有多大?(不必是0到100,可以是任何数值)
modifier = {  # 你可以根据各种因素来改变这个值, 此处示范根据AI 角色的特质 进行修改
modifier = {  # 你可以根据各种因素来改变这个值, 而在这种情况下,它是AI 角色的特质。
add = 15
add = 15
has_trait = sadistic # 特 可以在 ..\game\common\traits\00_traits.txt 中找到
has_trait = sadistic # 特 可以在 ..\game\common\traits\00_traits.txt 中找到
}
}
modifier = {
modifier = {
add = -40 #  做减法则是 加负数(5 + -10 = -5)。
add = -40 #  要移除只需 上一个 负数(5 + -10 = -5)。
has_trait = compassionate
has_trait = compassionate
}
}
第636行: 第637行:
{| class="wikitable"
{| class="wikitable"
! Key
! Key
! 必
! 必
! 描述
! 描述
! 例子
! 例子
第655行: 第656行:
| trigger
| trigger
| 否
| 否
| 定义了一个必须满足的[[触发器]],以使选项有效并对用户可用。请注意,这与[[#触发器|事件 触发器]]不同。
| 定义了一个必须满足的[[触发器]],以使选项有效并对用户可用。请注意,这与[[#触发器| 主要 事件触发器]]不同。
|
|
<pre>
<pre>
第666行: 第667行:
| show_as_unavailable
| show_as_unavailable
| 否
| 否
| 如果选项无效,但 触发器有效,则选项将显示但被禁用。此行为还受EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE定义的影响。
| 如果选项无效,但触发器有效,则选项将显示但被禁用。此行为还受EVENT_OPTIONS_SHOWN_HIDE_UNAVAILABLE定义的影响。
|
|
<pre>
<pre>
第677行: 第678行:
| trait
| trait
| 否
| 否
| 如果玩家具有指定的特质,则在 选项的左侧显示它。将鼠标悬停在上面时,会显示该选项可用的原因是由于 拥有 该特质。这仅仅是为了增加趣味性,实际上并不影响选项的功能性。
| 如果玩家具有指定的特质,则在选项的左侧显示它。将鼠标悬停在上面时,会显示该选项可用的原因是由于该特质。这仅仅是为了增加趣味性,实际上并不影响选项的功能性。
|
|
trait = honest
trait = honest
第685行: 第686行:
| skill
| skill
| 否
| 否
| 在选项的左侧显示 指定的 技能。将鼠标悬停在其上会显示选项可用,因为你的 技能水平较高。这只是为了增加趣味性,实际上并不影响选项的功能。
| 在选项的左侧显示 所选 技能。将鼠标悬停在其上会显示选项可用,因为你的技能水平较高。这只是为了增加趣味性,实际上并不影响选项的功能。
|
|
skill = prowess
skill = prowess
第693行: 第694行:
| add_internal_flag
| add_internal_flag
| 否
| 否
| 可以取值为 特殊(special) 危险(dangerous) 。值"special"将选项以黄色突出显示,"dangerous"则以红色突出显示。这只是 为了增加趣味性 ,实际上并不影响选项的功能。
| 可以取值为" 特殊(special)" " 危险(dangerous)" 值" 特殊"将选项以黄色突出显示," 危险"则以红色突出显示。这只是 提供一种风格 ,实际上并不影响选项的功能。
|
|
add_internal_flag = special
add_internal_flag = special
第701行: 第702行:
| highlight_portrait
| highlight_portrait
| 否
| 否
| 当将光标悬停在此选项上时, 高亮 显示该角色的肖像。 默认会对选项的效果所 影响 角色 肖像高亮显示 ,此键值通常用于高亮其他 肖像
| 当将光标悬停在此选项上时, 突出 显示该角色的 事件 肖像。 这是在悬停在具有 影响角色肖像 效果的事件选项上时自动 高亮显示的 附加功能
| highlight_portrait = scope:custom
| highlight_portrait = scope:custom


第707行: 第708行:
| fallback
| fallback
| 否
| 否
设为 是(yes)的时候:如果其他选项 都不能 满足其触发器,即使此选项的触发 也未满足,它也将显示出来。你可以将此选项与 <code>trigger = { always = no }</code> 结合使用,以创建一个只作为最后手段显示的选项。
等于 是(yes)的时候:如果 没有 其他选项满足其触发器,即使此选项的触发 条件 也未满足,它也将显示出来。你可以将此选项与 <code>trigger = { always = no }</code> 结合使用,以创建一个只作为最后手段显示的选项。
| fallback = yes
| fallback = yes


第713行: 第714行:
| exclusive
| exclusive
| 否
| 否
| 如果选项标记为exclusive = yes并且 满足了 触发条件,它将是唯一显示的选项。如果多个选项 标记为exclusive = yes并且每个选项都 满足了各自的 触发条件,那么 它们 都会被显示。
| 如果选项标记为exclusive = yes并且 符合其 触发条件,它将是唯一显示的选项。如果多个选项标记为exclusive = yes并且每个选项都 符合其 触发条件,那么 每个选项 都会被显示。
| exclusive = yes
| exclusive = yes


第719行: 第720行:
| flavor
| flavor
| 否
| 否
| 在选项的提示中显示的风味文本。风味可以是本地化键(loc key)或具有first_valid的动态描述。
| 在选项的 工具 提示中显示的风味文本。风味可以是本地化键(loc key)或具有first_valid 的动态描述。
| flavor = my_events.1001.a.flavor
| flavor = my_events.1001.a.flavor
|}
|}
请注意您对十字军之王3百科的所有贡献都被认为是在知识共享署名-非商业性使用-相同方式共享下发布,请查看在十字军之王3百科:版权的细节。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源。 未经许可,请勿提交受版权保护的作品!

为防止机器编辑,请完成下方验证

取消 编辑帮助(在新窗口中打开)