本WIKI由开普勒斯攻略组于2022年05月30日申请开通,目前WIKI百科内容正在完善中。
BWIKI反馈留言板  ·  收藏桌面方法  ·  点击加入Keplerth WIKI百科交流群  

全站通知:

模组教程

阅读

    

2022-06-07更新

    

最新编辑:猫羽柒

阅读:

  

更新日期:2022-06-07

  

最新编辑:猫羽柒

来自开普勒斯WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
AirRainAo
厚厚千层饼
模组制作使用到的Keplerth配置表说明文档、Config字段查询文件,请前往Keplerth WIKI百科交流群:60172581获取



模组制作教程

前言

  此文档包含了一些基本类型MOD的制作详细教程。有不足之处请见谅。作者:大大怪将军
  一个简单的MOD通过修改JSON文件即可实现,JSON文件是一种轻量级的数据交换格式,它通过文本的方式保存了游戏内的一些数据,例如某个食物、武器、或者生物叫什么,贴图是什么,有何种属性、物品ID是什么,都在JSON文件里面可以找到,通常以字段+数据的格式进行保存,通过修改、增加这些数据,我们就能制作出一个较为基础的MOD。
  在开普的JSON中,信息的保存形式一般为ID+多个字段,即如下图所示。

		"1": 
		{
			"name": "Affix1",
			"affixType": -1,
			"attackP": 0,
			"atkSpeed": -0.1,
			"defenceP": -0.1,
			"penetrate": 0,
			"saveBulletRate": 0,
			"curDurabilityP": 0,
			"maxDurabilityP": -0.3,
			"repairCoefficient": -0.15
		},

  其中“1”就是ID了,下面花括号括起来的就是字段+数据的格式。是不是很容易理解。把这些字段翻译成中文就能知道代表了什么了。
  如果还是不清楚,请参考官方在群里上传的配置表,不过我已经帮你们复制到这个MOD教程所在的文件夹了,打开就行,不过文档是很久之前的,但大部分能用。
  而大部分情况,JSON文件之间是会相互关联的,例如在ConfigFood.json和ConfigWeapon.json里面可以看到和Buff有关的相关字段,这就关联到了ConfigBuff.json里面。简单来说,你添加了一件物品,可能需要修改多个JSON文件,缺一不可。

MOD文件夹的创建和简介

  通常来说,一个最简单的MOD,其文件夹下会包含下列子文件夹。

About文件夹(必要)

  用于存放About.json文件和Preview.png文件,这是必须要的两个文件。About.json用于保存MOD作者信息、功能介绍等信息。它们会出现在MOD的详情页。

Assemblies文件夹(非必要)

  用于存放所有的.dll文件,客户端将读取这个文件夹里的.dll文件,并且执行所有带[StaticConstructorOnStartup]类的静态构造函数。简单的MOD不需要这个。以后会介绍。

Sounds文件夹

  用于存放.wav格式的音乐文件,暂时不支持其他音乐格式。

Textures文件夹

  用于存放.png格式的图片文件和TextureInfos.json文件,目前只支持.png的图片格式。TextureInfos.json用于存放图片的锚点信息。

Language文件夹

  用于存放ModLanguage.txt文件。当客户端载入该Mod时,会将其内容合并到Keplerth_Data\StreamingAssets\Language\Language.txt文件中。

Configs文件夹

  用于存放所有.json格式的配置文件。文件名和配置内容可以参考Keplerth_Data\StreamingAssets\Config文件夹中的所有文件。当客户端载入该Mod时,会将其相同名字的.json文件的内容合并到Keplerth_Data\StreamingAssets\Config中的.json文件中。若Mod的.json文件内的ID与客户端的.json文件内的ID相同,则将它覆盖,若不同则新增。
  一个基本的MOD,可以创建成下图所示。
Mod-3.jpg

  至于MOD文件夹的名字,自己设置即可。
  然后将其放在游戏目录的MODS文件夹下即可被游戏读取到。路径如下D:\Program Files\Steam\steamapps\common\KEPLERTH\Keplerth_Data\StreamingAssets\Mods。当然你也可以在steam界面通过浏览本地文件直接打开游戏文件夹。如图。
Mod-4.jpg

修改游戏内内置道具的属性

  这种MOD制作是最简单的,因为只涉及到对字段的理解,我们来举个例子。我想增加铁剑的伤害怎么办?我们知道铁剑是武器,自然最先想到的就是Weapon.json(后面的json名字都会省略前面的Config字样),我们打开它,并找到铁剑的ID,Ctrl+F打开搜索1004即可定位,如下图。
Mod-5.jpg
  信息很多,但我们暂时不管其他的,attack即代表了它的攻击力,修改此项,就OK了。而attackRange就是攻击范围,attackSpeed就是攻击速度了,是不是很简单呢。先在自己的MOD文件夹下的Configs文件夹里面创建一个ConfigWeapon.json文件,然后把上面拿一块代码复制到里面,如下图。不要忘记最外层的花括号。
Mod-6.jpg
  然后把攻击修改乘10000000,一刀劈死理查德。
  当然了,其实还能修改很多东西的,比如武器贴图、食物的属性、BUFF等等,大家去参考配置文档就能知道不同字段的意思了,注意关联文档即可。不过,有些字段即使知道了什么意思,也不一定知道它具体对应了物品的什么,这就需要和游戏内物品属性的对照才能慢慢清楚了,这里就不详细说明了。
  这个时候就会有人问。JSON里面全是英文,我怎么找到不同物品的ID?这里提供两个方法,第一是找到官方的language.txt文件,里面包含了所有物品的ID,武器什么的都有,搜索即可。language.txt文件的绝对路径一般为D:\Program Files\Steam\steamapps\common\KEPLERTH\Keplerth_Data\StreamingAssets\Language。第二就是装上控制台的MOD,打开物品图鉴搜索就能快速或者大部分物品ID。那么下面就来介绍稍微复杂一点的MOD。

  

请注意,为了方便起见,以下所有对,json文件的称呼我都会省略前面的Config字段,比如ConfigWeapon.json文件我会简称为Weapon.json文件,大家创建这类文件夹时不要弄错了。


怎么查询到不同字段代表的含义

  很多时候我们添加自己的物品时,需要修改对应的属性,这就必须得了解其对应字段的含义,这里,我们可以直接在BUG君编写的表格中查询到,如下图所示。
Mod-7.jpg
  将鼠标移动到你想要知道的字段含义就能显示出来了。这个配置表的文件名是Config.xlsm。

如何增加一个我自己的物品

  介绍之前,我们要先知道,游戏在导入MOD时,相同JSON文件的内容是追加或者覆盖关系,这与ID有关,如图所示,ID就是1004。
Mod-8.jpg
  如果官方对应的的JSON文件里面没有1004的物品,这个就会被追加到JSON文件后面,如果有,MOD的这个就会就覆盖原本的。

如何增加我自己的武器

  我们按步骤一步一步来即可。
  首先,确定好自己武器的ID,不能和内置武器ID一样,也最好不要用到官方以后更新可能会用到的ID,自己看情况设置即可。
  假设,你想增加一个自己的枪械类武器,就可以先找到一把游戏内的枪械武器,例如地底人狙击步枪(ID=1223),在官方的Config文件夹里面找到Item.json文件,再从里面把地底人狙击步枪的字段复制到自己的Configs文件夹对应的JSON文件里面,如下图。
Mod-9.jpg
  然后将红框内的1223全部改成自己设置的物品ID,例如ItemName1223就改成ItemName+自己的ID数值,下面那些包含了物品ID的数据字段对应了language.txt文件中对物品信息的描述,在“如何添加自己的物品的描述中”会说明。
  此时修改完毕后,就可以对照配置信息表把属性改成自己想要的了。当然了,不会这么简单,修改好了Item文件,还得修改Weapon文件,这就是之前说到的JSON相互关联,缺一不可了。和之前一样,我们从官方的Weapon.json文件复制相关内容到自己的里面。如下图。

		"1223": 
		{
			"type": 3,
			"attackRange": 7,
			"attack": 70,
			"attackSpeed": 0.4,
			"knockBack": 100,
			"destroyLevel": 1,
			"exHp": 0,
			"exHunger": 80,
			"exItem": [0],
			"exploedDamage": 0,
			"exploedType": 0,
			"equipBuffId": 0,
			"specialEffectId": [0],
			"affix": [0,1,2,3,5],
			"flyObj": 1651,
			"flyObjHitBox": [0],
			"flyObjSpeed": 1.5,
			"flyObjDistance": 0,
			"penetrate": 0,
			"penetrateWall": 0,
			"criticalRate": 1,
			"criticalDamage": 0,
			"bulletDamageScale": 3,
			"flyObjParticle": "0",
			"flyObjParticleTexture": "0",
			"texture": "Weapon/grounder-gun-01",
			"lightColor": "0",
			"lightMaterial": 0,
			"lightRange": 0,
			"animation": "Gun_SniperRifle",
			"prefab": "Bow",
			"attackTrailM": "0",
			"attackSound": "Sounds/ActionWeaponGunUnderground",
			"attackSoundContinuous": 0,
			"specialSound": "0",
			"dropItem": [1223],
			"dropChance": [0],
			"dropNumber": [1],
			"particleHitTarget": "Particle/Perferb/HitParticle/Default"
		},

  一样的,对应配置表进行修改即可。很简单,但有些东西的修改,可能会再次涉及到JSON文件关联(这种关联关系在配置表可以找到),甚至关联到MOD文件的其他文件夹。下面就对一些重要的属性修改进行介绍。

如何修改为自己的武器贴图

  一般来说,物品有两种贴图,一种是放在背包里面的贴图(下面简称背包贴图),一种是拿在手上的贴图(简称显示贴图),这两者可以一样,也可以不一样。
  先打开你的Item.json文件,在你刚刚添加的字段里面找到下图字段。

"dropTexture":"Icon/grounder-gun-01-icon",

  没修改这个之前,是地底人狙击步枪的背包贴图,我们可以改为自己的,至于怎么改,请跳转到对应标题下面。
然后在自己的Weapon.json文件下,找到下图字段。

"texture":"weapon/grounder-gun-01",

  这个原本是地底人的显示贴图,我们仍然可以改为自己的。修改之后,我们就能在游戏内看到自己的武器了,是不是很简单呢。

如何设置的武器的相关BUFF

  我们可以在Weapon.json文件下的很多武器字段中找到这个字段这个即关联到了文件。我们打开SpecialEffect.json,随便找到一个,如下图。

		"1": 
		{
			"name": "SpecialEffect1",
			"attackAttachBuffSelf": [0,0],
			"onHitAttachBuffSelf": [0,0],
			"attackAttachBuffTarget": [105,1000],
			"onHitAttachBuffTarget": [0,0],
			"description": "SpecialEffectDes1"
		},

  如果我们想要自己的武器使用这个BUFF,就可以改成"SpecialEffect1":[1],第二个到第五个字段分别代表了击中怪物时,自己受到的BUFF。被怪物击中时,自己受到的BUFF。击中怪物时,怪物受到的BUFF,被怪物击中时,怪物受到的BUFF。所以依靠这些字段的介绍,我们就可以很容易知道"onHitAttachBuffSelf": [0,0],"attackAttachBuffTarget": [105,1000],一般用于武器。剩下两个就是用于防具了。而后面的数值一般是两两为一对,比如[105,1000]就代表了生效BUFF为105BUFF,生效概率是千分之1000,即百分百。当然,可以不止一种BUFF,详细信息在官方的配置文档中有介绍。这里依旧牵扯到了文件关联,这个里面所写的BUFF的详细属性,就要在Buff.json文件里面去修改了。而BUFF之类的,我们当然可以添加自己的,这个以后再去说明。

如何增加我自己的防具

  有武器自然会有防具,就那种穿在身上的装备。这也是一种物品,自然少不了item.json文件夹中的配置了。
  这里我们拿梅科异融装甲来做示范,其物品ID为2027,先从官方的item.json文件取出,如下图。

		"2027": 
		{
			"name": "ItemName2027",
			"type": 5,
			"itemType": 16,
			"craftHightLight": 0,
			"maxCount": 1,
			"price": 273,
			"attTree": 1,
			"attWall": 1,
			"attBuild": 1,
			"durability": 700,
			"burnTime": 0,
			"dropTexture": "Icon/MecoBiology-1-icon",
			"placenmentId": 0,
			"bbqResult": [0],
			"smeltResult": [0],
			"smeltConsume": 1,
			"description": "ItemDes2027",
			"getInfo": "ItemGetInfo2027",
			"functionDes": "ItemFunctionDes2027",
			"usesInfo": [0],
			"mouseLeft": "0",
			"mouseRight": "MouseRightClickInfo4",
			"keyboard": "0",
			"keyboardInfo": "0"
		},

  其中type代表粗分类型,5就代表了装备类。而itemtype就代表细分类型。16代表的是衣服,17代表了手套,18是鞋子,其他的具体类型请参考配置表(和MOD教程打包在一个压缩包里面)。maxCount代表了最大堆叠数量,durability代表了耐久度。其他关键字同样参考配置表。这里就不一一介绍了。至于如何添加这个防具的描述,见“如何添加自己的物品的描述”章节。
  OK,把这一段代码复制到自己的item.json文件之后,就需要配置这个防具的具体信息了,比如防御多少,有什么特殊BUFF,这就需要关联到Armour.json文件了,现在自己的MOD文件夹里面的Configs文件夹中创建一个同名文件。然后打开官方的Armour.json文件,找到梅科异融装甲的字段。入下图所示。

		"2027": 
		{
			"equipSetType": 9,
			"equipSetLevel": 4,
			"equipSetMaterial": [9053,5],
			"defence": 116,
			"equipBuffId": 0,
			"equipBuffId2": 5286,
			"specialEffectId": [0],
			"affix": [0,1,2,4],
			"armourTexturePath": "Armour/",
			"armourTextureName": 34,
			"hatTexturePath": "Hat/",
			"hatTextureName": 0,
			"hiddenAll": 1,
			"dropItem": [2027],
			"dropChance": [0],
			"dropNumber": [1]
		},

  这里入equipSetType等字段在配置表中都有详细介绍,自己翻表查询即可。下面只介绍一些基本的字段信息。
  这里的defence就是对应防具的防御力了,而specialEffectId就代表了这个防具的一些BUFF,比如被打中会给使用者或者攻击者施加什么BUFF,这个在添加武器的章节就讲解了。大家在制造防具的时候是不是有看到过不同的前缀,比如损坏的、结实的,而affix字段就代表了这个,里面包含了什么,那么这个装备就可能出现什么前缀,如果你把affix字段改成只有0,那么你自己的这个装备就没有前缀,如果改成只有4,那么你的这个装备每次制造就都是结实的。
  那么设置好这些基本信息后,就到了添加防御描述的时候了,这与添加武器的描述的方法如出一辙。注意"name": "ItemName2027",这些的ID要对应即可。这里就不多说了。当然了,还要记得设置防具的贴图等等。

如何增加我自己的食物、药品

  食物和药品也是物品,item.json文件的配置是必不可少的。而吃了之后相关的效果,则需要关联到Food.json文件夹,比如吃了可以恢复多少饥饿度,多少生命值,使用冷却时间是多少。而相关的BUFF,则又要到Buff.json文件里面配置,这都是环环相扣的。
  下面以苹果为例。

		"1": 
		{
			"name": "ItemName1",
			"type": 1,
			"itemType": 2,
			"craftHightLight": 0,
			"maxCount": 999,
			"price": 4,
			"attTree": 1,
			"attWall": 1,
			"attBuild": 1,
			"durability": 0,
			"burnTime": 0,
			"dropTexture": "Icon/tree-fruits-icon",
			"placenmentId": 0,
			"bbqResult": [0],
			"smeltResult": [0],
			"smeltConsume": 1,
			"description": "ItemDes1",
			"getInfo": "ItemGetInfo1",
			"functionDes": "ItemFunctionDes1",
			"usesInfo": [6,7],
			"mouseLeft": "0",
			"mouseRight": "MouseRightClickInfo1",
			"keyboard": "0",
			"keyboardInfo": "0"
		},

  type就是物品的粗略分类,itemtype就是详细分类了,参考配置表即可。下图就是苹果对应的Food.josn文件的字段。

		"1": 
		{
			"effectHp": 400,
			"effectHunger": 2520,
			"effectHpPercent": 0,
			"buff": [0],
			"buffRandomOne": [0],
			"randomTimes": 0,
			"feedAnimalHunger": 3,
			"petEatHp": 400,
			"petEatHunger": 1260,
			"exEffect": 0,
			"useCD": 0,
			"eatBuffDescription": "EatBuffDescription1"
		},

  这里的400代表恢复4滴血,2520代表恢复的饥饿度,用2520/36000=0.07就知道这是恢复了7%的饥饿度。满饥饿是36000。useCD就代表了冷却时间,改成60就是指代60s冷却。buff字段为0就代表苹果吃了没有特殊效果,当然你也可以自己添加效果。而其余的字段的意思请参照配置表修改。

如何添加一种自己的BUFF

  在之前自己添加的物品里面,基本都和关联了Buff文件。那么我们自然也可以添加一些自己的BUFF用于物品中。首先创建一个自己的Buff.json文件。你自己添加的新BUFF将保存在这个里面。
  首先来看看官方Buff.json文件中字段的意思。如下图:

		"1": 
		{
			"name": "BuffName1",
			"effectType": 1,
			"type": 1,
			"level": 1,
			"maxOverlayTimes": 1,
			"canClean": 1,
			"visable": 1,
			"effectId0": 2,
			"target0": "Hp",
			"effectValue0": 100,
			"effectId1": 0,
			"target1": "0",
			"effectValue1": 0,
			"effectId2": 0,
			"target2": "0",
			"effectValue2": 0,
			"durationTime": 10.1,
			"detachOnHit": 0,
			"resetBuffId": 0,
			"backGround": "GameUI/UI-Buff-02",
			"timeProgress": "GameUI/UI-Buff-06",
			"icon": "BuffIcon/1",
			"buffParticle": "0",
			"buffParticleTexture": "0",
			"overlayDesParameter": [0,0,0],
			"description": "BuffDescription1"
		},

  effectType:指此BUFF的属性类型。0代表无类型,1代表BUFF,2代表DEBUFF,3代表流血、4代表中毒......
  type:这个相同的BUFF将不能共存。
  level:当前面的type相同不能共存时,等级高的会覆盖等级低的。
  maxOverlaytimes:指这个BUFF最大能叠加几层。
  canClean:死亡后此BUFF是否会清除。1代表清除,2代表清除,3代表简单模式不清除,其他清除。
  visable:这个BUFF是否会显示。1代表显示,2代表不显示。
  effectId0:BUFF生效的方式。这个很多懒得写,要知道具体有哪些生效方式,请参考配置表。
  detachOnHit:受到攻击是否移除此BUFF。0代表不移除,1代表移除。
  下面这两个字段的具体含义请查询配置表。

			"backGround": "GameUI/UI-Buff-02",
			"timeProgress": "GameUI/UI-Buff-06",

  然后就是这个BUFF生效之后具体给人物一个什么样的效果了。

			"target0": "Hp",
			"effectValue0": 100,
			"effectId1": 0,
			"target1": "0",
			"effectValue1": 0,
			"effectId2": 0,
			"target2": "0",
			"effectValue2": 0,
			"durationTime": 10.1,

  target代表什么效果,effectValue代表具体的数值。一个buff最多可同时存在三种效果。durationTime就代表持续时间。上面这张图就代表持续10秒,每秒恢复1滴血。
  Target还有很多的效果,比如MoveSpeedMultiplierVaule:影响移速百分比,数值中填0.15就代表移速增加15%。AttackSpeedMultiplierVaule:影响攻速百分比。HungerDecMultiplierVaule:影响饥饿消耗百分比以及等等效果。具体还要哪些效果自己查询即可。
  怎么查询呢,在每个BUFF字段的最后一行有这么一个字段,如下图。

   " description" : "BuffDescription3"

  这个就是BUFF的描述了,把BuffDescription3在language.txt中查询即可知道具体是什么BUFF了。将自己的BUFF信息弄到自己的Buff.json文件中就行了。至此,添加BUFF的教程结束。

如何添加贴图文件并应用

  打开你自己MOD文件的文件夹,新建一个Texturelnfos.json文件,这个文件用来保存图片的锚点。什么是锚点?锚点就是游戏显示图片时的显示中心点。
  我们先添加一张自己的武器图片,注意,图片格式只支持.png图片。我们假设图片的名字为myweapon.png。此时,把路径以MOD文件夹名字/Textures/.../图片名字的形式复制下来。假如你的MOD名字叫做MYmod,那么你的这个路径就是MYmod/Textures/myweapon,很简单对吧。然后再粘贴到Texturelnfos.json文件里面,再设置好锚点,如下图所示。

   "MYmod/Textures / myweapon" : [0.5,0.5],

  一个图片,它的左下角锚点坐标是[0,0],右上角是[1,1]。[0.5,0.5]就代表这个图片的显示中心点刚好在图片的中间。
  设置好图片锚点了,我们要怎么应用呢?将这个路径复制下来,粘贴到对应的字段就好了,如下图所示。

   "dropTexture" : "MYmod/ Textures/myweapon" ,
   "texture" : "MYmod/ Textures/ myweapon",

  这样的方法同样适用与添加防具、食物等等的贴图。最后要注意的是,路径的分割符是一个右斜杠,别打成左斜杠了。

如何添加自己的物品的描述

  一样的,以地底人狙击步枪为例,在Item.json文件中,有一种这样的字段"name": "ItemName1223",我们把ItemName1223复制下来,在language.txt里面去搜索,就能看到如下信息。

	ItemName1223	|	地底人狙击步枪	|	Grounder Sniper Rifle	|	地底人狙擎步檐

  这个就是信息描述了。你把这些放在自己的ModLanguage.txt里面并且加以修改,就可以了。当然还有一些其他的描述,如下图。

  'description" : "ItemDes1223",
  "getInfo" : "ItemGetInfo1223",
  "functionDes" : "ItemFunctionDes1223",

  这些字段复制下来,都能在language.txt里面找到,复制到自己的Mod里面并修改信息。
  至此,增加了自己的武器之后,Item.json文件和Weapon.json文件以及ModLanguage.txt大概就是如下图所示了。

		"8888": 
		{
			"name": "ItemName8888",
			"type": 5,
			"itemType": 103,
			"craftHightLight": 0,
			"maxCount": 999,
			"price": 0,
			"attTree": 1,
			"attWall": 1,
			"attBuild": 1,
			"durability": 0,
			"burnTime": 0,
			"dropTexture":"MYmod/Textures/Myweapon",
			"placenmentId": 0,
			"bbqResult": [0],
			"smeltResult": [0],
			"smeltConsume": 1,
			"description": "ItemDes8888",
			"getInfo": "ItemGetInfo8888",
			"functionDes": "ItemFunctionDes8888",
			"usesInfo": [0],
			"mouseLeft": "0",
			"mouseRight": "0",
			"keyboard": "0",
			"keyboardInfo": "0"
		},
		"8888": 
		{
			"type": 3,
			"attackRange": 7,
			"attack": 70,
			"attackSpeed": 0.4,
			"knockBack": 100,
			"destroyLevel": 1,
			"exHp": 0,
			"exHunger": 40,
			"exItem": [0],
			"exploedDamage": 0,
			"exploedType": 0,
			"equipBuffId": 0,
			"specialEffectId": [0],
			"affix": [0,1,2,3],
			"flyObj": 1651,
			"flyObjHitBox": [0],
			"flyObjSpeed": 1.5,
			"flyObjDistance": 0,
			"penetrate": 0,
			"penetrateWall": 0,
			"criticalRate": 1,
			"criticalDamage": 0,
			"bulletDamageScale": 3,
			"flyObjParticle": "0",
			"flyObjParticleTexture": "0",
			"texture": "MYmod/Textures/Myweapon",
			"lightColor": "0",
			"lightMaterial": 0,
			"lightRange": 0,
			"animation": "Gun_sniperRifle",
			"prefab": "Bow",
			"attackTrailM": "0",
			"attackSound": "Sounds/ActionWeaponDashGunUnderground",
			"attackSoundContinuous": 0,
			"specialSound": "0",
			"dropItem": [1223],
			"dropChance": [0],
			"dropNumber": [1],
			"particleHitTarget": "Particle/Perferb/HitParticle/Default"
		},

Mod-13.jpg

如何让自己的物品可以制作

  在添加好自己的东西之后,就有一个问题,我要怎么获得这些东西。总不能靠控制台获取吧。这就需要将自己的物品添加到工作台里面了。首先,在自己的MOD文件夹中的Configs文件夹创建两个json文件:ConfigCraftCell.json、ConfigCraftTable.json。
  然后打开官方的这两个文件,我们先来看CraftCell.json文件中的一个字段。

		"19": 
		{
			"materialMain": [6,3220],
			"mainNum": [1,5],
			"craftItem": 19,
			"craftNum": 3
		},

  首先,这一个字段就代表了一种制作方法,其ID为19。那么这一块代码就能理解为:这个制作方法的ID为19,它需要消耗的物品ID分别是6和3220,消耗的数量分别是1和5。制作出来的东西的ID是19,每一次制作的数量是3个。需要注意的是,这个制作方法的编号和craftItem的值是可以不一样的,换句话说,不同的制作方法制作的东西可能是一样的,但是消耗的材料、消耗的数量、制作出来的数量都是可以不一样的。请务必理解这段话的意思。
  然后就到了CraftTable.json这个文件了,来看官方的某一段代码,如下图。

		"4055": 
		{
			"name": "CraftTable4055",
			"craftCellList": [3015,9015,1204,1214,1654,1616,1626,1620,1627],
			"craftBaseList": [0],
			"modAddList": [0]
		},

  4055就代表了是哪个工作台,CraftCellList字段里面写的数字就是之前的制作方法的ID了,注意:不是制作物品的ID。而我们自己添加的制作方法则需要添加到modAddList这个字段里面即可。然后在自己的json文件里面编写好这些代码,然后保存即可。这样你就可以在4055这个工作台里面制作自己的东西了。

JSON文件怎么写注释

  事实上,JSON文件的规范中是没有注释的。不想C等编程语言用//等代表注释信息。虽然我们也这样去添加注释也是完全没有问题的。不过下面介绍一种方法,符合语言规范,但是就是略微麻烦。如下图。

	"?name":"这是一个BUFF"
	"name" : "BuffNamel",

  很简单,对吧。

如何添加一种生物

  添加生物是一种较前面的操作复杂一些,因为会涉及到更多的json文件。而且新的生物可能需要自己画图,所以耗时较多,而添加这些贴图也和加物品的方式有些不太一样。那么接下来就分情况来一步步进行教程。包括如何添加种族,添加普通生物:比如动物、人类、怪物等等。以及如何添加BOSS。

添加种族

  在开始游戏的时候,我们可以选择例如人类、精灵、半兽人之类的种族,我们自然也可以添加自己的。
  首先我们要明确,种族也是生物,所以先创建一个ConfigCteature.json文件,在官方的此json文件中先复制一段与“种族”有关的生物的代码放到自己的Creature.json中,在此基础上加以修改即可。这个文件保存了不同生物的基础属性,比如血量、饥饿度、移速、阵营关系等等。下面以我自己添加的一种种族为例,展示一小部分代码。

		"18011": 
		{
			"?name": "吸血鬼",
			"name": "Creature18011",
			"model": [1211,1212],
			"race": "CreatureRace18011",
			"type": 0,
			"isBoss": 0,
			"missionListIds": [0],
			"canCage": 0,
			"petType": 0,
			"captureRate": 0,
			"rangeType": 1,
			"force": 1,
			"friendlyForce": [2,3,999],
			"isHumanModel": 1,
			"exBodyModel": 0,
			"exModelHide": 0,
			"hpSliderType": 1,
			"hpSliderShowType": 1,
			"hpSliderOffset": [0,75],
			"needDamageShow": 1,
			"functionType": 0,
			"hp": 8000,
			"hunger": 20000,
			"petHunger": 8000,
			"energy": 80,
			"characterisic": 18011,

  在修改成自己的基本属性之后,我们需要配置一些其他的东西,如下面的这个字段。"characterisic": 18011,就代表了这个生物在ConfigCharacterisic.json文件中的编号是多少。我们先创建一个ConfigCharacterisic.json文件,如下图所示。这个文件保存了生物的列表,代表了有哪些生物,以及对其的描述(这个需要在languag.txt中进行编写,这里不再做教程)在哪。

	"18011": 
	{
		"?name": "吸血鬼",
		"name": "Characterisic18011",
		"creatureId": 18011,
		"buffId": 100031,
		"description": "CharacterisicDes18011",
		"descriptionInGame": "CharacterisicDesInGame18011"
	}

  我们知道,每个种族都有自己的特殊属性,比如人类的进食速度和采集速度就很快,精灵移速很快,这些东西就是在buff.json进行配置的。而上图的buffId就代表了这个生物是哪个BUFF。这里推荐用自己的buff,如何创建在之前就已经说过了。主要buff的类型即可。可以参考种族buff的代码样式进行修改即可。
  在配置好属性,我们就要考虑到,我自己的这个种族有性别吗、有哪些发型、身体的模型是咋样的?而这些就和cteature.json文件中的model字段有关了,先创建一个ConfigModel.json文件,如下图,这里依旧用我添加的吸血鬼为例子。

	"1211": 
	{
		"type": 1,
		"?name": "吸血鬼",
		"name": "Mode11211",
		"sex": 0,
		"bodyId": [511],
		"hairType": [0,1,3,5,6,7,9,10,14,15,17,18,19,20,21,22,23],
		"mark": [0]
	},
	"1212": 
	{
		"type": 1,
		"?name": "吸血鬼",
		"name": "Mode11212",
		"sex": 1,
		"bodyId": [511],
		"hairType": [0,2,4,5,6,8,11,12,13,14,16,21,22],
		"mark": [0]
	}

  这里有1211和1212两个字段,是不是和我在ctreature.json文件中的model字段对应了呢。type代表了生物类型,不同类型其获取身体模型路径的文件也不一样。如下图。

type
数据类型int
关联表HumanBodyTextureInfoMonsterBodyTextureInfoAnimalBodyTextureInfo
1在HumanBodyTextureInfo表中获取身体贴图路径
2在MonsterBodyTextureInfo表中获取身体贴图路径
3在AnimalBodyTextureInfo表中获取身体贴图路径

  sex代表了性别,bodyId代表了身体模型路径的ID。HairType就代表了这个有多少种发型。因为我的这个吸血鬼的type是1,那么就是在HumanBodyTextureInfo.json中获取身体模型的路径。在下面这个文件里面。如图所示。

	"511": 
	{
		"?bodyTexturePath": "吸血鬼身体模型路径",
		"bodyTexturePath": "ThreeCountries/Textures/NewRace/18011",
		"?fistTexturePath": "吸血鬼拳头模型路径",
		"fistTexturePath": "ThreeCountries/Textures/NewRace/18011-first"
	}

  问题来了,生物在运动的时候明明有四种情况(面向下、面向上、面向左、面向右),这里为什么只写了一种路径。这其实和图片的命名方式有关,我们只需要把面向下、面向上、面向左、面向右这四种情况的身体图片分别命名为(以吸血鬼为例)18011-1.png、18011-3.png、18011-2.png、18011-4.png即可。而在身体路径的编写中写18011就行了。(命名打错了,明白意思就行)
  而这个生物的拳头模型路径,就随便怎么命名了,对应起来即可。
  而添加自己的发型,就和添加身体差不多,也有四个方向,命名的方式也是和身体一样的。需要用到的json文件分别是Hair.json,参考官方的即可,其字段意思如下图。

Id
数据类型int
序列索引
hairTextureName
数据类型int[]
在同一个发型Hair id具体发色对应的最终头发id填写多个则随机取一个
关联表HairTextureInfo
确定头发最终的id后通过HairTextureInfo id获取到最终的图片路径

  而关联的HairTextureInfo.json就代表了头发的路径获取,其字段意思如下。

Id
数据类型int
序列索引
hairTexturePath
最终的头发id对应的贴图文件路径
注意资源需要根据四个面向提交4份例如添加一个头发路径为Hair/1”,需要在Hair文件夹下放入100-1100-2100-3100-4四份贴图分别对应面向下面向左面向上面向右的贴图

  最后,把自己的发型ID添加到下面这字段里面就行了。在选择种族时就能选择自己的发型了。

"hairType":[0,1,3,5,6,7,9,10,14,15,17,18,19,20,21,22,23]

  而这些身体模型、头发模型的图片当然需要自己绘制咯。至此,添加种族的教程结束。

添加普通生物(怪物等)


添加BOSS