骑砍二 ATC MOD 使用教程与应用案例解析

骑砍二 ATC MOD 使用教程与应用案例解析

作者:blibli-财不外漏 / NEXUSMODS-PuepleKarmen

案例MOD依赖:ATC - Adonnay’s Troop Changer & AEW - Adonnay’s Exotic Weaponry & New Armor

文本编辑工具:VS Code(推荐使用,简单易上手)

文章目录

  • 骑砍二 ATC MOD 使用教程与应用案例解析
    • 一、xml文件
      • 1. XML声明
      • 2. 标准XML文档格式
        • 2.1 标签格式
        • 2.2 标签属性
        • 2.3 标签元素
        • 2.4 XML 命名规则
        • 2.5 XML注释
    • 二、ATC MOD模板解析
      • 1. 兵种模板
      • 2. 配置文件
        • 2.1 大地图中兵种概率
        • 2.2 玩家领地兵种概率
    • 三、应用案例解析
      • 1. T1 登州镇民勇
        • 1.1 NPCCharacter 属性
        • 1.2 Face NPC外貌
        • 1.3 Skill 技能点数
        • 1.4 upgrade_target 升级兵种
        • 1.5 Equipments 装备
      • 2. T5 登州镇哨骑
        • 2.1 NPCCharacter 属性
        • 2.2 Face NPC外貌
        • 2.3 Skill 技能点数
        • 2.4 upgrade_target 升级兵种
        • 2.5 Equipments 装备
    • 四、如何汉化MOD

使用ATC MOD进行兵种定制不仅能够高度化定制兵种,除了决定兵种的装备、性别外,还能决定兵种的年龄范围、外貌甚至统一发型。并且其相比其他兵种自定义mod更加底层,不容易出BUG引起游戏崩溃。

20230728235705_1

一、xml文件

以下内容改编于Mozilla-XML 简介 与 菜鸟教程:XML

XML(Extensible Markup Language)是一种类似于 HTML,但是没有使用预定义标记的语言。因此,可以根据自己的设计需求定义专属的标记。这是一种强大将数据存储在一个可以存储、搜索和共享的格式中的方法。最重要的是,因为 XML 的基本格式是标准化的,如果你在本地或互联网上跨系统或平台共享或传输 XML,由于标准化的 XML 语法,接收者仍然可以解析数据。

总结: XML 和基于 XML 的语言的整个结构是建立在标签(tag)之上的。 ----XML 核心思想

1. XML声明

XML——声明并非是一种标签,其用于传输文档的元数据。

XML 文档第一行以 XML 声明开始,用来表述文档的一些信息,如:

<?xml version="1.0" encoding="UTF-8"?>

version: 当前文档使用的版本。(骑砍二所有xml版本均为1.0)

encoding: 当前文档使用的编码,英文用UTF-8,中文用UTF-16(一般只需用于汉化文件)。

image-20230730224946540

2. 标准XML文档格式

XML 定义结构、存储信息、传送信息。

2.1 标签格式

<?xml version="1.0" encoding="UTF-8"?>
<site>
  <name>RUNOOB</name>
  <url>https://www.runoob.com</url>
  <logo>runoob-logo.png</logo>
  <desc>编程学习网站</desc>
</site>

、、、 分别为标签,标签内包含了要传递的信息。

标签必须成对出现,有开始标签就需要有结束标签,例如:

  • 开始标签:
  • 结束标签:

所有的 XML 元素都必须有一个关闭标签

2.2 标签属性

与 HTML 类似,XML 元素也可拥有属性(名称/值的对)。

XML 的属性值必须加引号。

<NPCCharacters>
	<NPCCharacter id="DZ_Inf0_T1"
		is_female="true"
		default_group="Infantry"
		is_hero="false"
		is_basic_troop="true"
		level="6"
		name="{=dz_inf1_t1}Dengzhou Volunteer"
		occupation="Soldier"
		culture="Culture.empire">
        ………………
    </NPCCharacter>
    ……………
</NPCCharacters>

2.3 标签元素

XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。

空元素:空元素只有开始标签,没有元素体和结束标签,但空元素一定要闭合。例如:<hello/>

一个元素可以包含:

  • 其他元素(其他标签)
  • 文本
  • 属性
  • 或混合以上所有…

XML 必须包含根元素,它是所有其他元素的父元素,比如以下实例中<Equipments>就是根元素:

		<Equipments>
			<EquipmentRoster>
				<equipment slot="Item0" id="Item.empire_sword_1_t2" />
				<equipment slot="Cape" id="Item.Grifons Archer Shoulders Black1"/>
				<equipment slot="Body" id ="Item.Grifons Knight Armor Black1"/>
				<equipment slot="Gloves" id="Item.Grifons Archer Gloves Black1"/>
				<equipment slot="Leg" id="Item.Grifons Archer Boots Black1"/>
			</EquipmentRoster>
			<EquipmentRoster>
				<equipment slot="Item0" id="Item.vlandia_sword_1_t2" />
				<equipment slot="Cape" id="Item.Grifons Archer Shoulders Black1"/>
				<equipment slot="Body" id ="Item.Grifons Knight Armor Black1"/>
				<equipment slot="Gloves" id="Item.Grifons Archer Gloves Black1"/>
				<equipment slot="Leg" id="Item.Grifons Archer Boots Black1"/>
			</EquipmentRoster>
		</Equipments>

2.4 XML 命名规则

XML 元素必须遵循以下命名规则:

  • 名称可以包含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字母 xml(或者 XML、Xml 等等)开始
  • 名称不能包含空格

可使用任何名称,没有保留的字词。

最佳命名习惯:

使名称具有描述性。使用下划线的名称也很不错:<first_name>、<last_name>。

名称应简短和简单,比如:<book_title>,而不是:<the_title_of_the_book>。

避免 “-” 字符。如果您按照这样的方式进行命名:“first-name”,一些软件会认为您想要从 first 里边减去 name。

避免 “.” 字符。如果您按照这样的方式进行命名:“first.name”,一些软件会认为 “name” 是对象 “first” 的属性。

避免 “:” 字符。冒号会被转换为命名空间来使用(稍后介绍)。

XML 文档经常有一个对应的数据库,其中的字段会对应 XML 文档中的元素。有一个实用的经验,即使用数据库的命名规则来命名 XML 文档中的元素。

在 XML 中,éòá 甚至中文等非英语字母是完全合法的,不过需要留意,您的软件供应商不支持这些字符时可能出现的问题。

2.5 XML注释

注释格式为以 <!--开头,以-->结束,可以理解为常用的注释手段/**/

<!-- xml define -->
<?xml version="1.0" encoding="UTF-8"?>

二、ATC MOD模板解析

1. 兵种模板

注意,在<NPCCharacter>标签前还有一个<NPCCharacters>作为根标签,这里主要展示的是单个兵种的基础信息。

NPCCharacterWhite2

当有些标签或属性没有内容时,可以不在代码中写出来,例如一般步兵升级不像骑兵一样需要额外的马匹,所以upgrade_requires这个属性可以不写。再例如低级步兵没有那么多装备,一般就一把近战武器,所以item1、2、3也可以不写。

装备解析图:

image-20230805231949459

2. 配置文件

ATC MOD的配置文件主要是用来调整兵种生成概率。

2.1 大地图中兵种概率

一个国家通常有两种基础兵种:普通步兵和贵族步兵。拿帝国来举例就是帝国新兵和帝国禁卫新兵两种,两者在生成概率上互相独立,你可以理解为两套体系。

<?xml version="1.0" encoding="utf-8" ?>
<ATCConfig>
	<!-- Faction configuration -->
	<!-- id taken from spkingdoms.xml -->
	<!-- special case: player_faction -->
	<MapFaction id="empire">
		<Culture id="default">
			<basicTroops>
				<volunteer id="DZ_Inf0_T1" percent="80" playeronly="true" replacewith="imperial_recruit" />
			</basicTroops>
			<eliteTroops>
				<volunteer id="DZ_Kng1_T2" percent="80" playeronly="true" replacewith="imperial_vigla_recruit" />
			</eliteTroops>
		</Culture>
	</MapFaction>
	<MapFaction id="empire_w">
		<Culture id="default">
			<basicTroops>
				<volunteer id="DZ_Inf0_T1" percent="80" playeronly="true" replacewith="imperial_recruit" />
			</basicTroops>
			<eliteTroops>
				<volunteer id="DZ_Kng1_T2" percent="80" playeronly="true" replacewith="imperial_vigla_recruit" />
			</eliteTroops>
		</Culture>
	</MapFaction>
	<MapFaction id="empire_s">
		<Culture id="default">
			<basicTroops>
				<volunteer id="DZ_Inf0_T1" percent="80" playeronly="true" replacewith="imperial_recruit" />
			</basicTroops>
			<eliteTroops>
				<volunteer id="DZ_Kng1_T2" percent="80" playeronly="true" replacewith="imperial_vigla_recruit" />
			</eliteTroops>
		</Culture>
	</MapFaction>
</ATCConfig>

贵族兵种是以T2为起点,本兵种的贵族步兵ID为DZ_Kng1_T2,意思是登州镇骑兵1类T2(名为登州镇武学子弟),和帝国禁卫新兵一样,没有马匹,其与帝国禁卫新兵除了盔甲、外貌、性别以外全部一致。

这段代码的意思是,在北帝国、西帝国、南帝国中:

  • 登州镇民勇有80%的概率替换帝国新兵,并且只对玩家有效。
  • 登州镇武学子弟有80%的概率替换帝国禁卫新兵,并且只对玩家有效。

这里只填基础兵种即可,系统会根据玩家当前等级刷出基于这些基础兵种对应梯度的兵种。

效果展示:

image-20230806023733647

image-20230806023816576

2.2 玩家领地兵种概率

<?xml version="1.0" encoding="utf-8" ?>
<ATCConfig>
	<!-- Clan configuration -->
	<!-- id taken from spclans.xml -->
	<!-- special case: player_clan -->
	<Clan id="player_clan">
		<Culture id="default">
			<basicTroops>
				<volunteer id="DZ_Inf0_T1" percent="70" />
			</basicTroops>
			<eliteTroops spawnChance="15" atPower="200" spawnChanceCap="25">
				<volunteer id="DZ_Kng1_T2" percent="30" />
			</eliteTroops>
		</Culture>
	</Clan>
	
	<!-- Faction configuration -->
	<!-- id taken from spkingdoms.xml -->
	<!-- special case: player_faction -->
	<MapFaction id="player_faction">
		<Culture id="default">
			<basicTroops>
				<volunteer id="DZ_Inf0_T1" percent="70" />
			</basicTroops>
			<eliteTroops spawnChance="5" atPower="200" spawnChanceCap="25">
				<volunteer id="DZ_Kng1_T2" percent="30" />
			</eliteTroops>
		</Culture>
	</MapFaction>
</ATCConfig>

这段代码则分别表示玩家的家族和派系领地内刷新该兵种的概率了。

三、应用案例解析

MOD:ATC-New Armor Troops

这里采用两个案例,分别是T1的基础兵种登州镇民勇还有T5兵种登州镇哨骑,因为这两者不仅在游戏中差距巨大,在xml文档中的差别也很大。

首先我们先看下整个文档的结构:

<?xml version="1.0" encoding="utf-8"?>
<NPCCharacters>
 	<!-- Basic Troops -->
    <NPCCharacter>.......</NPCCharacter>
    <!-- 省略 -->
    .........
	<!-- Sword and shield cavalry -->
    <NPCCharacter>.......</NPCCharacter>
</NPCCharacters>

可以看到以根标签NPCCharacters将所有标签包裹在其中,每一个NPCCharacter都代表了一个兵种。

1. T1 登州镇民勇

为啥叫这个名,是因为本人最近刚看完《晚明》这本小说,情绪很激动,也非常喜欢陈新和刘民有的心血——登州镇,所以就按照小说中登州镇和明朝的编制,起了一系列名字。

image-20230805233212813

因为是我瞎起的,很多地方并不专业,大家想改的话可以在汉化文件里修改。

1.1 NPCCharacter 属性

<NPCCharacter id="DZ_Inf0_T1"
	is_female="true"
	default_group="Infantry"
	is_hero="false"
	is_basic_troop="true"
	level="6"
	name="{=dz_inf1_t1}Dengzhou Volunteer"
	occupation="Soldier"
	culture="Culture.empire">
  • id: DZ_Inf0_T1
    • 根据推荐的命名规范,DZ代表登州,Inf则是步兵的缩写,0代表的是步兵类型,这里是基础步兵的意思,T1代表了兵种梯度为1。
  • is_female: true
    • 本人非常喜欢看美女,所以本兵种树里的部队里全是女兵
  • default_group: Infantry
    • Infantry:步兵,以近战为主没有马的都属于这一类
  • is_hero: false
    • 非英雄,并未尝试使用true后会发生什么,害怕崩溃,就没敢试,教给大家来解密了。
  • is_basic_troop: true
    • 基础兵种,就不解释了
  • level: 6
    • 兵种等级,这里是T1,所以我们设置为6级
  • name:{=dz_inf0_t1}Dengzhou Volunteer
    • 名称id:dz_inf0_t1,用于在翻译文件中调用,因为和NPC ID是互相独立的存在,所以即使ID相同也没有问题
    • 名称:Dengzhou Volunteer,即登州镇民勇,填英文的原因是因为非语言类型的文件通常都用的utf-8编码格式,不支持中文
  • occupation: soldier
    • NPC职业:士兵
  • culture: Culture.empire
    • 文化:帝国。这里可以用游戏中的所有文化,包括自己通过MOD添加的文化,就和可以使用MOD中的武器装备一样。

1.2 Face NPC外貌

本MOD使用ATC而不是用小小战团的很大一部分原因就是因为小小战团虽然方便快捷易上手,但是他在游戏中并不支持对单个兵种的捏脸定制。而作为想要拥有一支高度定制的部队,使用这个支持捏脸数据的兵种树MOD-ATC就是不二选择。

<face>
	<BodyProperties version="4" age="22.00" weight="0.1498" build="0.2038"  key="00081C0D9800400E067CD543068745C639E87D557899C30068744B4076650E2700732003074201110000000000000FFE0000000000000000000000004CE83003"  />			
	<BodyPropertiesMax version="4" age="40.00" weight="0.16" build="0.0062"  key="002BA008D4144002478D68471386829636E78BB3766EE724B8966AB074A90B1B00802703086255100000000000000FFE00000000000000000000000041000083"  /> 
</face>

face标签分为捏脸基础值和最大值,游戏中的系统将捏脸数据编成了一系列的16进制编码,该兵种每个士兵的外貌都会在这个由基础值和最大值形成的范围中随机抽取。

可以理解为士兵都是这基础值和最大值的孩子

所有捏脸数据都可以通过在捏脸界面使用Ctrl+C进行导出,Ctrl+V进行导入。

  • 基础值导出数据如下:
<BodyProperties version="4" age="22.00" weight="0.1498" build="0.2038"  key="00081C0D9800400E067CD543068745C639E87D557899C30068744B4076650E2700732003074201110000000000000FFE0000000000000000000000004CE83003"  />

image-20230805232013848

  • 最大值导出数据如下:
<BodyProperties version="4" age="40.00" weight="0.16" build="0.0062"  key="002BA008D4144002478D68471386829636E78BB3766EE724B8966AB074A90B1B00802703086255100000000000000FFE00000000000000000000000041000083"  />

image-20230805232051631

Max由自己设置,直接导出数据并不会带有MAX字样

捏脸数据参考:bilibili-双重解放:【骑砍2捏脸】骑砍2里竟然还能捏出这么美的脸?!(内附捏脸代码及相关mod)

游戏内效果:

image-20230805234913511

image-20230805235013279

image-20230805235053920

image-20230805235754113

1.3 Skill 技能点数

<skills>
	<skill id="Athletics"
		value="20" />
	<skill id="Riding"
		value="0" />
	<skill id="OneHanded"
		value="20" />
	<skill id="TwoHanded"
		value="10" />
	<skill id="Polearm"
		value="20" />
	<skill id="Bow"
		value="5" />
	<skill id="Crossbow"
		value="5" />
	<skill id="Throwing"
		value="10" />
</skills>

出于平衡性考虑,该技能点数直接套的帝国新兵的模板,即:

  • 跑动:20
  • 骑术:0
  • 单手:20
  • 双手:10
  • 长杆:20
  • 弓:5
  • 弩:5
  • 投掷:10

总计:90

本兵种树的技能点数很多都照搬于游戏本体:

  • 普通剑盾步兵用的是帝国步兵线的技能点,但鉴于帝国军团步兵止步于T5,所以T6的剑盾步兵多出来的技能点是我自己按需分配的。
  • 弓骑兵照搬的可汗亲卫线
  • 弓兵照搬的巴坦尼亚弓兵线
  • 枪骑兵照搬的帝国具装骑兵线
  • 弩兵照搬的瓦兰迪亚神射手线

剩下的兵种则是我自己分配的,例如宣导司亲卫刀盾步兵和侍从室亲卫刀盾骑兵,但点数都没超过等级上限。

image-20230806001920036image-20230806001936041

1.4 upgrade_target 升级兵种

<upgrade_targets>
	<upgrade_target id="NPCCharacter.DZ_Inf1_T2" />
	<upgrade_target id="NPCCharacter.DZ_Rng1_T2" />
</upgrade_targets>

升级路线有两个,一是步兵线,二是远程步兵线

1.5 Equipments 装备

<Equipments>
	<EquipmentRoster>
		<equipment slot="Item0" id="Item.empire_sword_1_t2" />
		<equipment slot="Cape" id="Item.Grifons Archer Shoulders Black1"/>
		<equipment slot="Body" id ="Item.Grifons Knight Armor Black1"/>
		<equipment slot="Gloves" id="Item.Grifons Archer Gloves Black1"/>
		<equipment slot="Leg" id="Item.Grifons Archer Boots Black1"/>
	</EquipmentRoster>
	<EquipmentRoster>
		<equipment slot="Item0" id="Item.vlandia_sword_1_t2" />
		<equipment slot="Cape" id="Item.Grifons Archer Shoulders Black1"/>
		<equipment slot="Body" id ="Item.Grifons Knight Armor Black1"/>
		<equipment slot="Gloves" id="Item.Grifons Archer Gloves Black1"/>
		<equipment slot="Leg" id="Item.Grifons Archer Boots Black1"/>
	</EquipmentRoster>
</Equipments>
  • <Equipments>代表装备根标签,所有装备套装都应该在这个标签内部

  • <EquipmentRoster>标签代表一套装备,一般一个<Equipments>不会超过4套(官方兵种树)

  • <equipment/>空标签则表示具体哪个装备栏装备了哪一样物品。

  • 这里我给了New Armor中的Grifons(狮鹫)T1套装,数值上作为T1兵种装备还算平衡,除了躯干部分都用的射手套装,算是把T1里面看着最轻便的装备都给了民勇。

  • 武器上用的是最低级的帝国剑和瓦兰迪亚剑。

这些游戏本体内的武器ID请配合SandBoxCore\ModuleData\Languages\CNs\std_spitems_xml-zho-CN.xmlSandBoxCore\ModuleData\items\weapons.xml文件中寻找。

MOD内的装备ID一般在MOD名\ModuleData\xxx_item.xml中可以找到。

这么给装备的总体考虑还是平衡,如果属性和装备都相差巨大的话,玩一段时间就很乏味了,我并不愿意破坏原版的乐趣。当然,如果你想要这套兵种树更加强大,可以把这些数值根据你自己的喜好来更改。

2. T5 登州镇哨骑

哨骑作为战场上的侦察兵,需要有一定机动性的同时还得有远程攻击能力,所以我给他的定位是弓骑兵。我还给她配备了一把双手长剑,拿来反步兵效果也不错。

image-20230806002322147

2.1 NPCCharacter 属性

<NPCCharacter id="DZ_Hra1_T5"
	is_female="true"
	default_group="HorseArcher"
	is_hero="false"
	level="26"
	name="{=dz_hra1_t5}Dengzhou Sentry Knight"
    upgrade_requires="ItemCategory.war_horse"
	occupation="Soldier"
	culture="Culture.empire">
  • id: DZ_Hra1_T5
    • 根据推荐的命名规范,DZ代表登州,Hra则是弓骑兵的缩写,1代表的是步兵类型,这里是1类的意思,T5代表了兵种梯度为5。
  • is_female: true
  • default_group: 弓骑兵
  • is_hero: false
  • is_basic_troop: 没有使用
    • 非基础兵种,不需要这个属性,因其默认为false,所以无需使用。
  • level: 26
    • 兵种等级,这里是T5,所以我们设置为26级
  • name: {=dz_hra1_t5}Dengzhou Sentry Knight
  • upgrade_requires: ItemCategory.war_horse
    • 升级需求:战争用马匹,一般只要不是驮马等低级马匹都可以。
  • occupation: soldier
  • culture: Culture.empire
    • 文化:帝国。这里可以用游戏中的所有文化,包括自己通过MOD添加的文化,就和可以使用MOD中的武器装备一样。

2.2 Face NPC外貌

<face>
	<BodyProperties version="4" age="22.00" weight="0.1498" build="0.2038"  key="00081C0D98004015067CD543068745C639E87D557899C30068744B4076650E2700732003074201110000000000000FFE0000000000000000000000004CE83003"  />					
	<BodyPropertiesMax version="4" age="40.00" weight="0.16" build="0.0062"  key="002BA008D4144015478D68471386829636E78BB3766EE724B8966AB074A90B1B00802703086255100000000000000FFE00000000000000000000000041000083"  />
</face>

因为该兵种的头部装备属于头冠而非头盔,为了不让穿模损坏观赏性,我给她们统一了发型(不包括发色),脸部则和其他兵种一致:

image-20230806003010207

捏脸中的数据在这一串16进制编码中都是有特定位置的,你仔细对比这两个兵种的捏脸数据就会发现发型数据的位置。

2.3 Skill 技能点数

<skill id="Athletics"
	value="80" />
<skill id="Riding"
	value="130" />
<skill id="OneHanded"
	value="100" />
<skill id="TwoHanded"
	value="90" />
<skill id="Polearm"
	value="40" />
<skill id="Bow"
	value="160" />
<skill id="Crossbow"
	value="20" />
<skill id="Throwing"
	value="60" />

出于平衡性考虑,该技能点数直接套的帝国新兵的模板,即:

  • 跑动:80
  • 骑术:130
  • 单手:100
  • 双手:90
  • 长杆:40
  • 弓:160
  • 弩:20
  • 投掷:60

总计:690

这技能来自于可汗亲卫线的T5兵种,即库赛特怯薛

2.4 upgrade_target 升级兵种

<upgrade_targets>    
	<upgrade_target id="NPCCharacter.DZ_Hra1_T6" />
</upgrade_targets>

可升级为登州镇历战哨骑,历战哨骑有四套装备,包含三种颜色的战斗旗袍与四把不同外观的双手剑。弓箭和各种属性与可汗亲卫一致。

2.5 Equipments 装备

<Equipments>
	<EquipmentRoster>
		<equipment slot="Item0" id="Item.steppe_war_bow" />
		<equipment slot="Item1" id="Item.aew_sword_lb01" />
		<equipment slot="Item2" id="Item.bodkin_arrows_a" />
		<equipment slot="Item3" id="Item.Grifons Knight Shields black" />
		<equipment slot="Head" id="Item.lilikh_tiara_black"/>
		<equipment slot="Body" id ="Item.lilikh_armor_black"/>
		<equipment slot="Gloves" id="Item.lilikh_gauntlets_black"/>
		<equipment slot="Leg" id="Item.lilikh_boots_black"/>
		<equipment slot="Horse" id="Item.t2_empire_horse" />
		<equipment slot="HorseHarness" id="Item.celtic_frost" />
	</EquipmentRoster>
	<EquipmentRoster>
		<equipment slot="Item0" id="Item.steppe_war_bow" />
		<equipment slot="Item1" id="Item.aew_sword_lb02" />
		<equipment slot="Item2" id="Item.bodkin_arrows_a" />
		<equipment slot="Item3" id="Item.Grifons Knight Shields black" />
		<equipment slot="Head" id="Item.lilikh_tiara_black"/>
		<equipment slot="Body" id ="Item.lilikh_armor_black"/>
		<equipment slot="Gloves" id="Item.lilikh_gauntlets_black"/>
		<equipment slot="Leg" id="Item.lilikh_boots_black"/>
		<equipment slot="Horse" id="Item.t2_empire_horse" />
		<equipment slot="HorseHarness" id="Item.celtic_frost" />
	</EquipmentRoster>
</Equipments>

弓箭、马匹与库赛特怯薛一致,近战武器为Adonnay’s Exotic Weaponry中的Cheal Nad’ra Longblade双手长剑,非常漂亮,给高级女兵用很搭。马具为了好看抛弃了实用性,这里我选择了凯尔特之凌。

两种Longblade:

image-20230806004152163

防具则是New Armor中的黑色战斗旗袍套装,MOD作者将其命名为Lilikh套装(莉莉丝)。

四、如何汉化MOD

在需要汉化的MOD文件目录中的ModuleData创建Languages文件夹,然后创建CNs子文件,如图所示:

image-20230806024326639

CN的意思就是Chinese,即中文简称,该目录下的language_data为语言配置文件,非常重要,作用为指定翻译文件所在位置以及翻译语言。

language_data:

<?xml version="1.0" encoding="utf-16"?>
<LanguageData id="简体中文" name="简体中文" subtitle_extension="zh-HANS" supported_iso="zh-HANS,zh,zho,chi,zh-tw,zh-sg,zh-hk" under_development="false">
  <LanguageFile xml_path="CNs/std_NewArmorTroops_xml-zho-CN.xml" />
</LanguageData>

xml_path中填写翻译文件的相对路径即可。该文件直接复制官方汉化文件的language_data.xml即可,或者直接用我这里的模板。

std_NewArmorTroops_xml-zho-CN:

<?xml version="1.0" encoding="utf-16"?>
<base xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" type="string">
    <tags>
        <tag language="简体中文"/>
    </tags>
        <strings>
            <string id="dz_inf1_t1" text="登州镇民勇"/>
            <string id="dz_inf1_t2" text="登州镇卫所兵"/>
            <string id="dz_inf1_t3" text="登州镇预备兵"/>
            <string id="dz_inf1_t4" text="登州镇战兵"/>
            <string id="dz_inf1_t5" text="登州镇近卫营战兵"/>
            <string id="dz_inf1_t6" text="登州镇近卫营老兵"/>

            <string id="dz_inf2_t4" text="登州镇长矛手"/>
            <string id="dz_inf2_t5" text="登州镇近卫营长矛手"/>
            <string id="dz_inf2_t6" text="登州镇近卫营历战长矛手"/>
            
            <string id="dz_inf3_t5" text="登州镇宣导司亲卫"/>
            <string id="dz_inf3_t6" text="登州镇宣导司历战亲卫"/>

            <string id="dz_rng1_t2" text="登州镇屯堡射手"/>
            <string id="dz_rng1_t3" text="登州镇预备射手"/>
            <string id="dz_rng1_t4" text="登州镇射手"/>
            <string id="dz_rng1_t5" text="登州镇近卫营射手"/>
            <string id="dz_rng1_t6" text="登州镇近卫营历战射手"/>
            <string id="dz_rng2_t5" text="登州镇特遣队"/>
            <string id="dz_rng2_t6" text="登州镇历战特遣队"/>

            <string id="dz_hra1_t5" text="登州镇哨骑"/>
            <string id="dz_hra1_t6" text="登州镇历战哨骑"/>

            <string id="dz_kng1_t2" text="登州镇武学子弟"/>
            <string id="dz_kng1_t3" text="登州镇预备骑兵"/>
            <string id="dz_kng1_t4" text="登州镇骑兵"/>
            <string id="dz_kng1_t5" text="登州镇近卫营骑兵"/>
            <string id="dz_kng1_t6" text="登州镇近卫营历战骑兵"/>
            <string id="dz_kng2_t6" text="登州镇侍从室亲卫"/>
        </strings>
    </base>

需要注意的是编码格式为UTF-16,否则可能会引发游戏崩溃。tag里面填写翻译语言,可直接填中文。

id中填写名称id,text里填写翻译结果即可。

总体来说非常简单。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/60991.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Typescript - 索引签名

目录 1&#xff0c;什么是索引签名1&#xff0c;js 中使用对象的属性2&#xff0c;ts 中的索引签名3&#xff0c;扩展索引签名定义的类型 2&#xff0c;与 Record 对比3&#xff0c;遇到的问题1&#xff0c;索引 key 的类型问题&#xff0c;keyof2&#xff0c;索引 key 的类型问…

Zebec APP:构建全面、广泛的流支付应用体系

目前&#xff0c;流支付协议 Zebec Protocol 基本明确了生态的整体轮廓&#xff0c;它包括由其社区推动的模块化 Layer3 构架的公链 Nautilus Chain、流支付应用 Zebec APP 以及 流支付薪酬工具 Zebec payroll 。其中&#xff0c;Zebec APP 是原有 Zebec Protocol 的主要部分&a…

无向图-已知根节点求高度

深搜板子题&#xff0c;无向图&#xff0c;加边加两个&#xff0c;dfs输入两个参数变量&#xff0c;一个是当前深搜节点&#xff0c;另一个是父节点&#xff08;避免重复搜索父节点&#xff09;&#xff0c;恢复现场 ///首先完成数组模拟邻接表#include<iostream> #incl…

re学习(27)攻防世界toddler_regs(字符串函数总结+交叉引用)

找不到main&#xff08;&#xff09;函数&#xff0c;查找字符串&#xff0c;发现特殊字符串 定位字符串出现的位置&#xff0c;反汇编出代码&#xff0c;进行分析“ flag{Xp0int_1s_n1c3_but_Xp0intJNU_is_we1rd} 总结 一.CP&#xff1a;shiftF12 展示所有的字符串; ctrlx查…

python高阶技巧

目录 设计模式 单例模式 具体用法 工厂模式 优点 闭包 案例 修改闭包外部变量 闭包优缺点 装饰器 装饰器原理 装饰器写法 递归 递归的调用过程 递归的优缺点 用递归计算阶乘 设计模式 含义&#xff1a;设计模式是一种编程套路&#xff0c;通过这种编程套路可…

Linux-centos花生壳实现内网穿透

Linux-centos花生壳实现内网穿透 官网教程 1.安装花生壳 下载网址 点击复制就可以复制下载命令了 wget "https://dl.oray.com/hsk/linux/phddns_5.2.0_amd64.rpm" -O phddns_5.2.0_amd64.rpm# 下载完成之后会多一个rpm文件 [rootlocalhost HuaSheng]# ls phddns_…

Java8 list多属性去重

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 在 Java 开发中&#xff0c;我们经常会面临对 List 中的对象属性去重的需求。然而&#xff0c;当需要根据多个属性来进行去重时&#xff0c;情况会稍微复杂一些。本篇…

nodejs+vue鲜花商城销售系统 uniapp网上花店 多商家 微信小程序67m8n

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括鲜花销售微信小程序的网络应用&#xff0c;在外国各式各样的小程序已经是很普遍的方式&#xff0c;不过国内可能还处于起步阶段。鲜花销售微信小程序具有鲜花销售信息管理功能…

利用awk筛选给定时间范围内的日志

文章目录 筛选给定时间范围内的日志时间时间戳什么是时间戳&#xff1f; 系统时间 筛选日志时间示例简单示例mktime()函数是什么 进阶示例 筛选给定时间范围内的日志 时间 时间的表示方法&#xff1a; 时间戳系统时间&#xff08;年月日时间&#xff09; 时间戳 什么是时间…

Linux中安装Node

安装 先从 官方网站 下载安装包&#xff0c;有时 node 版本太新会导致失败&#xff0c;详见下方的常见问题第2点 cd /home // 创建目录&#xff0c;将下载好的 node 安装包上传到此目录 mkdir Download mkdir /usr/local/lib/node解压 // 解压&#xff0c;前面是文件当前路径…

Spring集成Junit

目录 1、简介 2、Junit存在的问题 3、回顾Junit注解 4、集成步骤 4.1、导入坐标 4.2、Runwith 4.3、ContextConfiguration 4.4、Autowired 4.5、Test 4.6、代码 5、补充说明 5.1、Runwith 5.2、BlockJUnit4ClassRunner 5.3、没有配置Runwith ⭐作者介绍&#xff1…

uniapp android底部弹框

uniapp android底部弹框&#xff0c;带有动画效果 <view class"popup_box"><view class"bottom_more" click"handleClickCancel"><image src"/static/images/rescue/icon_more.png"></image></view><…

C++笔记之从数组指针到函数数组指针(使用using name和std::function)

C笔记之从数组指针到函数数组指针(使用using name和std::function) 参考笔记&#xff1a; C之指针探究(三)&#xff1a;指针数组和数组指针 C之指针探究(十三)&#xff1a;函数指针数组 C之指针探究(二)&#xff1a;一级指针和一维数组 C之指针探究(十一)&#xff1a;函数名的…

C语言数组笔试题(详解)

目录 插入知识&#xff1a; 一.指向函数指针数组的指针 二.回调函数 什么是回调函数&#xff1f; 三.数组笔试题 个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#xff1a;GOTXX &#x1f4…

Jenkins工具系列 —— 插件 实现用户权限分配与管理

文章目录 安装插件 Role-based Authorization Strategy添加用户注册配置权限查看当前使用者&#xff0c;获取user id配置管理员权限配置普通用户权限&#xff08;非管理员权限&#xff09; 小知识 安装插件 Role-based Authorization Strategy 点击 左侧的 Manage Jenkins —&…

【PostgreSQL】系列之 一 用户创建和授权(三)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

Michael.W基于Foundry精读Openzeppelin第20期——EnumerableMap.sol

0. 版本 [openzeppelin]&#xff1a;v4.8.3&#xff0c;[forge-std]&#xff1a;v1.5.6 0.1 EnumerableMap.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/utils/structs/EnumerableMap.sol EnumerableMap库提供了Bytes32ToB…

使用Python将图像转换为PDF:一次性解决您的批量转换需求

导语&#xff1a; 在数字化时代&#xff0c;我们经常需要处理大量的图像文件。将这些图像转换为PDF格式可以方便地存档、分享和打印。本文将介绍如何使用Python编程语言将图像批量转换为PDF&#xff0c;并提供了一个简单易用的图形界面来跟踪转换进度。 准备工作 在开始之前…

【雕爷学编程】MicroPython动手做(33)——物联网之天气预报

天气&#xff08;自然现象&#xff09; 是指某一个地区距离地表较近的大气层在短时间内的具体状态。而天气现象则是指发生在大气中的各种自然现象&#xff0c;即某瞬时内大气中各种气象要素&#xff08;如气温、气压、湿度、风、云、雾、雨、闪、雪、霜、雷、雹、霾等&#xff…

kibana-7.17.3版本安装及汉化

1、官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/kibana 选择安装系统类型和历史版本kibana安装版本要和es版本对应 2、上传安装包然后解压 tar -zxf kibana-7.17.3-linux-x86_64.tar.gz 3、更改目录属主 chown elk. kibana-7.17.3-linux-x86_64 -R …