如何通过"场景编辑器"让单位驻扎进建筑或船只?

Viewed 1

我在用场景编辑器制作剧情地图,想在地图开始时让单位预先驻扎在建筑或船只中,但编辑器里没有直接的操作界面,请问如何实现这个效果?

1 Answers

目前有四种绕过此限制的方法,图形化界面解决方案取决于工单 #3008 的进展。

  1. 场景编辑器(即Atlas)中启动模拟,手动驻扎单位,然后在模拟仍运行时保存地图。

  2. 编辑 .xml 文件,插入 GarrisonGarrisonedEntity,参见
    skirmishes/sicilia_nomad_2p.xml
    作为示例。操作不当容易导致错误。

  3. 打开 .xml 文件,在某些 Script 标签中粘贴以下代码,将 HOLDER_IDENT1_ID, ENT2_ID, ENTN_ID, ... 替换为实体对应的 uid 编号(可在 .xml 文件中找到,如 <Entity uid="3435">)。通过 Atlas 打开地图后,单位应已在建筑内部。保存地图后,再次打开 .xml 文件并删除 Script 标签和其中的代码。

    <?xml version="1.0" encoding="UTF-8"?>
    <Scenario version="7">
    <Script>
      let cmpGarrisonHolder = Engine.QueryInterface(HOLDER_ID, IID_GarrisonHolder)
      if (cmpGarrisonHolder)
        cmpGarrisonHolder.initGarrison = [ENT1_ID, ENT2_ID, ENTN_ID, ...];
    </Script>
    
  4. 在地图中添加一个触发器脚本,在地图启动时自动将实体驻扎到特定建筑中。

  • 相关 Wiki 页面:Triggers