本WIKI由开普勒斯攻略组于2022年05月30日申请开通,目前WIKI百科内容正在完善中。
BWIKI反馈留言板 · 收藏桌面方法 · 点击加入Keplerth WIKI百科交流群
本WIKI由开普勒斯攻略组于2022年05月30日申请开通,目前WIKI百科内容正在完善中。
BWIKI反馈留言板 · 收藏桌面方法 · 点击加入Keplerth WIKI百科交流群
模组教程
阅读
2022-06-07更新
最新编辑:猫羽柒
阅读:
更新日期:2022-06-07
最新编辑:猫羽柒
模组制作教程
前言
此文档包含了一些基本类型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文件夹的名字,自己设置即可。
然后将其放在游戏目录的MODS文件夹下即可被游戏读取到。路径如下D:\Program Files\Steam\steamapps\common\KEPLERTH\Keplerth_Data\StreamingAssets\Mods。当然你也可以在steam界面通过浏览本地文件直接打开游戏文件夹。如图。
修改游戏内内置道具的属性
这种MOD制作是最简单的,因为只涉及到对字段的理解,我们来举个例子。我想增加铁剑的伤害怎么办?我们知道铁剑是武器,自然最先想到的就是Weapon.json(后面的json名字都会省略前面的Config字样),我们打开它,并找到铁剑的ID,Ctrl+F打开搜索1004即可定位,如下图。
信息很多,但我们暂时不管其他的,attack即代表了它的攻击力,修改此项,就OK了。而attackRange就是攻击范围,attackSpeed就是攻击速度了,是不是很简单呢。先在自己的MOD文件夹下的Configs文件夹里面创建一个ConfigWeapon.json文件,然后把上面拿一块代码复制到里面,如下图。不要忘记最外层的花括号。
然后把攻击修改乘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君编写的表格中查询到,如下图所示。
将鼠标移动到你想要知道的字段含义就能显示出来了。这个配置表的文件名是Config.xlsm。
如何增加一个我自己的物品
介绍之前,我们要先知道,游戏在导入MOD时,相同JSON文件的内容是追加或者覆盖关系,这与ID有关,如图所示,ID就是1004。
如果官方对应的的JSON文件里面没有1004的物品,这个就会被追加到JSON文件后面,如果有,MOD的这个就会就覆盖原本的。
如何增加我自己的武器
我们按步骤一步一步来即可。
首先,确定好自己武器的ID,不能和内置武器ID一样,也最好不要用到官方以后更新可能会用到的ID,自己看情况设置即可。
假设,你想增加一个自己的枪械类武器,就可以先找到一把游戏内的枪械武器,例如地底人狙击步枪(ID=1223),在官方的Config文件夹里面找到Item.json文件,再从里面把地底人狙击步枪的字段复制到自己的Configs文件夹对应的JSON文件里面,如下图。
然后将红框内的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文件夹中的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
关联表→HumanBodyTextureInfo、MonsterBodyTextureInfo、AnimalBodyTextureInfo
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-1、100-2、100-3、100-4,四份贴图,分别对应面向下、面向左、面向上、面向右的贴图
最后,把自己的发型ID添加到下面这字段里面就行了。在选择种族时就能选择自己的发型了。
"hairType":[0,1,3,5,6,7,9,10,14,15,17,18,19,20,21,22,23]
而这些身体模型、头发模型的图片当然需要自己绘制咯。至此,添加种族的教程结束。
添加普通生物(怪物等)
添加BOSS