钢铁雄心 IV 中文离线资料库

Entity模组制作

原页面:Entity modding

本页中文翻译进度 97%,未译部分暂保留英文原文。

实体是《钢铁雄心 4》用来把模型与脚本对象链接起来的定义,用于ambient_objects.txt等地方。

.gfx与.asset文件都在/Hearts of Iron IV/gfx/entities/中找到。

动画.asset文件在/Hearts of Iron IV/gfx/models/中找到。

添加网格

要添加一个网格,你需要在模组中添加一个包含网格定义的.gfx文件。以下是一个通用示例:

objectTypes = {
    pdxmesh = {
        name = "name_of_mesh"
        file = "gfx/models/name_of_mesh.mesh"
        animation = { id = "idle" type = "name_of_animation" }				
        scale = 1.0
    }
}	
  • name是网格的名称,随后会在.asset文件中被引用。
  • file是其所关联模型文件的相对路径。
  • animation是为该网格关联的每个动画添加的作用域。
  • scale是模型大小的标量。

Animation

动画作用域包含以下属性:

  • id是 pdxmesh 内动画的名称。
  • type是在 .asset 文件中定义的实际动画的名称。

添加实体

一旦网格定义完成,你还需要添加一个实体定义,才能在脚本中使用它。这需要在你模组内添加的.asset文件中完成。

以下是所有可能属性的完整示例:

entity = {
    name = "name_of_entity"
    pdxmesh = "mesh_to_use"
    scale = 1.0
    cull_radius = 100

    default_state = "idle"
    get_state_from_parent = yes

    locator = {
        name = "example"
        position = { 0.0 0.0 0.0 }
    }

    state = { 
        name = "idle" 
        state_time = 0.0
        
        animation = "idle"
        animation_blend_time = 0.0
        animation_speed = 1.0
        looping = yes
        
        next_state = "idle"
        
        chance = 2
        propagate_state = {
            node = "idle"
        }
        
        event = {
            time = 1.0
            trigger_once = yes
            
            node = "example_node"
            light=  "example_light"
            
            particle = "example_particle"
            keep_particle = yes
            
            sound = {
                soundeffect = "example_soundeffect"
            }
        }
    }
    
    attach = {
        name = "name"
        <node> = "example_entity"
    }
}
  • name是实体的名称,用于ambient_objects.txt等地方引用。
  • pdxmesh是与该实体关联的网格。
  • 州是为该网格关联的每个动画添加的作用域,用于把动画链接到一个动画状态。
  • locator是一个作用域,用于向实体添加节点。
  • scale是实体大小的标量。
  • cull_radius是实体被剔除渲染的距离。
  • default_state是该实体的默认动画状态。
  • get_state_from_parent继承父实体的状态(即由作为士兵一部分的武器实体使用)。
  • attach是一个作用域,用于把另一个实体附着到当前实体的骨架节点上。

请注意,可用状态取决于实体用在何处(即单位实体会获得战斗状态,而建筑实体会获得建筑状态等等)。所有实体都共用idle状态。

州

状态作用域包含以下属性:

  • name是模型可以进入的状态的名称。所有模型都有一个idle状态。
  • state_time是当前状态的持续时间。
  • looping决定该状态是否循环。
  • event是一个作用域,用于施加粒子或音效。
  • animation是要播放的动画状态(来自 pdxmesh)。
  • animation_blend_time是当前动画与指定动画之间的混合时间。
  • animation_speed是动画的播放速度。
  • next_state为当前状态设置下一个状态。
  • chance决定当该状态条目与多个其他状态条目同名时(即训练、是否做俯卧撑、开合跳等等),此状态条目出现的几率。
  • propagate_state把当前状态传播到指定节点。

事件

事件作用域包含以下属性:

  • time是事件的持续时间,以秒为单位。
  • particle是要显示的粒子。
  • keep_particle决定粒子是否在事件持续时间结束后继续存在。
  • trigger_once决定该事件是否只发生一次。
  • sound是一个作用域,用于施加音效。
  • node指定一个定位节点或模型节点,以把事件位置原点设置到该处。
  • light指定要显示的灯光。

Attach

  • name是所附着实体的名称。
  • <node>是实体骨架中节点的名称,其值是要附着的实体。

音效

声音作用域包含以下属性:

  • soundeffect是要播放的音效。

Locator

定位作用域包含以下属性:

  • name是定位节点的名称。
  • position是定位节点的位置,其值为 x、y、z 坐标。

添加动画

模型的动画添加在.asset文件中,该文件位于/Hearts of Iron IV/gfx/models/或其子文件夹里。

以下是一个通用示例:

animation = {
    name = "animation_name"
    file = "animation_name.anim"
}
  • name是动画的名称,随后会在pdxmesh中被引用。
  • file是动画文件的相对路径。


模组制作
文档 效果 • 触发器 • 定义文件 • 修正项 • 修正项列表 • 作用域 • 本地化文件 • 事件钩子 • 数据结构(标记、事件目标、国家标签别名、变量、数组)
脚本 成就 • AI • AI 焦点 • 自治领 • 力量均势 • 书签/剧本 (游戏规则) • 建筑 • 角色与特质 • 外观标签 • 国家 • 师 • 决议 • 学说 • 装备 • 事件 • 阵营 • 理念 • 意识形态 • 军事工业组织 • 国策 • 资源 • 脚本化 GUI • 科技与学说 • 单位
地图 地图 • 州 • 补给区域 • 战略区域
图形 界面 • 图形资源 • 实体 • 后期特效 • 粒子 • 字体
外观 肖像 • 名称列表 • 音乐 • 音效
其他 控制台指令 • 疑难排查 • 模组结构 • 模组 • 地图编辑器