查看“How settlements work”的源代码
←
How settlements work
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
该页面已被保护以防止编辑和其他操作。
您可以查看与复制此页面的源代码。
[https://docs.bannerlordmodding.com/_tutorials/new_settlements.html <big>访问源文档</big>]<br> [[骑马与砍杀2:霸主 MOD API|<big>返回目录</big>]]<br> <br> == 论坛相关教程帖 == # <big>https://bbs.mountblade.com.cn/thread-2064137-1-1.html</big> == 定居点工作机制 == <big>本游戏添加定居点的机制就是结合两个XML文件:一个定义定居点的类型(藏身点、村庄、城镇、城堡等),还有如产出、繁荣、村庄所属的城镇等其它相关参数,这个定义在基础游戏的 Modules/SandBox/ModuleData/settlements.xml 中。另一个文件是定义距离缓存的,在 Modules/SandBox/ModuleSata/Settlements_distance_cache.bin 中,可以通过代码生成。</big><br> <br> <big>但以上定义并没有定义定居点的实际外观,外观都定义在 Modules/SandBox/SceneObj/Main_map/scene.xscene 文件中。</big> == 未来SDK支持相关 == <big>从其它可用的 DLLs 中可以看出,未来定居点应该是可以通过编辑器直接编辑的。这个编辑器可以帮助放置定居点、定义定居点外观和自动生成距离缓存等相关文件。但是在目前,编辑器还未发布,只能借助于XML文件进行修改与定义。</big> == 距离缓存相关 == <big>目前尚不清楚距离缓存有何作用。在不使用它时,AI仍旧可正常访问定居点,招募军队、贩卖俘虏和购买物品,玩家也可以正常访问定居点。距离缓存可能与一些AI决策有关,这只是猜测。这个距离缓存可以通过 SettlementPositionScript 中的 SaveSettlementDistanceCache() 方法创建,但 SettlementPositionScript 目前未在游戏中使用,它可能用于前面所提到的地图编辑器。这个类可以在 SandBox.View.dll 中找到。</big> == 如何覆盖游戏默认定居点 == <big>当创建mod时你可以复写 SandBox 模组中的定义,但在文件中append(添加)内容是不可能的,所以如果要做更改就要一次性修改所有文件。</big><br> <br> <big>首先将 '''Modules/SandBox/ModuleData/settlements.xml''' 复制到 '''Modules/你的模组名/ModuleData/settlements.xml''' ,并且把 '''Modules/SandBox/SceneObj/Main_map''' (一个文件夹)复制到 '''Modules/你的模组名/SceneObj/Main_map'''。</big><br> <big>如果可能的话,请避免用记事本这类普通编辑器对文件进行编辑,而是使用像 Notepad++ 这类更强大的编辑器。</big><br> <br> <big>在 Modules/你的模组名/submodule.xml 添加以下这个 XmlNode:</big> <nowiki> <XmlNode> <XmlName id="Settlements" path="settlements"/> <IncludeGameTypes> <GameType value = "Campaign"/> <GameType value = "CampaignStoryMode"/> </IncludeGameTypes> </XmlNode> </nowiki> <big>Main_map 会被自动加载。</big><br> <br> <big>你现在可以在 settlements.xml 中根据你的所想自定义定居点,或者修改一些现有的定居点(如改变领主、繁荣度、产出等)。settlements.xml 中的每个实体都要有自己的id。</big><br> <big>在你的模组文件里的 Main_map/scene.xscene 中的每个 game_entity 都要在 settlements.xml 中有一个id,并且确保它们不会重复。</big><br> <br> <big>一个添加新实体的例子(添加到已有文件,不完全替换其中的内容),向 settlements.xml 中添加一个城镇两个村庄。</big>[https://pastebin.com/BuSbQ6x2 <big>查看示例</big>]<br> <big>请注意,village_M1_1 和 village_M1_2 两个村庄实体都要绑定到所属城镇:</big> <nowiki>trade_bound="Settlement.town_M1" bound="Settlement.town_M1"</nowiki> <br> <big>目前尚不清楚这两者有何不同,建议你将它们放在你希望它们属于的城镇,这些村庄还包括你希望它们生产什么的定义:</big> <nowiki>village_type="VillageType.fisherman"</nowiki><br> <big>村庄类型在 Modules/SandBox/ModuleData/spprojects.xml 中定义。</big> <big>这三个新的定居点 game_entity 需要在 Main_map/scene.xscene 文件中定义:</big>[https://pastebin.com/dXcKT7wf <big>查看示例</big>]
返回至
How settlements work
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
Help about MediaWiki
工具
链入页面
相关更改
特殊页面
页面信息