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

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

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

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

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

使用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里填写翻译结果即可。

总体来说非常简单。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值