AddonStructure/zh-Hans
如果您想为韦诺创建自定义内容,您需要在 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]
目录结构
接下来创建的取决于类型。例如战役和地图包会有 scenarios 和 maps 目录,音乐包只需要 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
注意:您可以命名包含代码的目录(例如 scenarios 和 macros)为任意名称,但是三个二进制内容目录(images、music、sounds)必须是这个名字,并且相对于 [binary_path] 指定的路径。游戏尝试解析图像、音乐、声音路径时,会在 [binary_path] 下查找。
如果您设置了 textdomain,则要建立 translations 目录,即便是空的也要建立。否则会在 stderr 中生成警告。路径必须和 [textdomain] 标签指定的一致。
- userdata/data/add-ons/A_Simple_Addon/translations
注意!译文质量不佳。