AddonStructure/zh-Hans

From The Battle for Wesnoth Wiki
< AddonStructure
Revision as of 16:48, 14 March 2017 by Vanfans (talk | contribs) (目录结构)


Other languages:

English 简体中文

如果您想为韦诺创建自定义内容,您需要在 userdata/data/add-ons/ 中设置一个文件夹。如果您没有找到您的 userdata 目录,请阅读EditingWesnoth章节。本页面将讲解插件的结构。

这个页面假设您已经了解在哪里找到 userdata 目录。

主文件

作为示例,我们建立一个名为 A Simple Addon 的插件。

  • 建立一个路径为 userdata/data/add-ons/A_Simple_Addon 的空目录。

重要提示:所有目录和文件名都要使用下划线而不是空格。否则会无法正常工作。

  • 在 A_Simple_Addon 文件夹中,建立一个名为 _main.cfg 的文件。

_main.cfg 文件决定游戏如何加载您的内容。这里展示了一个非常简单的示例。

#textdomain wesnoth-A_Simple_Addon
[textdomain]
    name="wesnoth-A_Simple_Addon"
    path="data/add-ons/A_Simple_Addon/translations"
[/textdomain]

#ifdef MULTIPLAYER
[binary_path]
    path=data/add-ons/A_Simple_Addon
[/binary_path]

{~add-ons/A_Simple_Addon/scenarios}
#endif

[textdomain] WML 标签指定了组件中字符串的翻译。textdomain 应该是组件的目录名,需要添加前缀“wesnoth-”来确保不会和其他文本冲突,并和 WesCamp 兼容。

注意:只有在您的组件需要翻译时,才需要 textdomain。如果是音乐包或者其他情况,并不需要 textdomain。

所有的 [campaign] 和 [textdomain] 标签必须 包含在 #ifdef 预处理条件中,包括替换条件(详见 PreprocessorRef)。这是为了确保您的内容在正确的时间加载,并且不和其他插件冲突。在上面的示例中,您的场景会在多人模式下被加载。在战役中,您可以设置特定标记,让只在战役中被加载。

Note:只有代码必须放在这个文件里。您不需要将二进制内容(例如声音、图片、音乐)放在这里。您可以通过指定相对于 [binary_path] 的路径来引用内容。此外,units 目录不能通过简单的引用路径;它必须使用 [+units][/units]+非常重要!)标签包裹,就象这样:

[+units]
    {~add-ons/A_Simple_Addon/units}
[/units]

目录结构

接下来创建的取决于类型。例如战役和地图包会有 scenariosmaps 目录,音乐包只需要 music。我们假设您在创建一个战役或者单人场景组件。

请建立如下目录:

  • userdata/data/add-ons/A_Simple_Addon/scenarios
  • userdata/data/add-ons/A_Simple_Addon/maps

场景中使用的所有地图文件都在 maps 当中(详见BuildingMaps)。所有场景的的配置文件(.cfg)文件都在 scenarios 当中(详见BuildingScenarios)。

如果您有一些自定义的内容,比如图片或者单位,请建立如下内容:

  • userdata/data/add-ons/A_Simple_Addon/macros
  • userdata/data/add-ons/A_Simple_Addon/units
  • userdata/data/add-ons/A_Simple_Addon/images
  • userdata/data/add-ons/A_Simple_Addon/music
  • userdata/data/add-ons/A_Simple_Addon/sounds

注意:您可以命名包含代码的目录(例如 scenariosmacros)为任意名称,但是三个二进制内容目录(imagesmusicsounds必须是这个名字,并且相对于 [binary_path] 指定的路径。游戏尝试解析图像、音乐、声音路径时,会在 [binary_path] 下查找。

如果您设置了 textdomain,则要建立 translations 目录,即便是空的也要建立。否则会在 stderr 中生成警告。路径必须和 [textdomain] 标签指定的一致。

  • userdata/data/add-ons/A_Simple_Addon/translations

注意!译文质量不佳。

参见