Starbound

Starbound

128 ratings
starbound基础mod教程
By What happened to you
starbound中文mod教程,不定期更新需要的可以看看。
4
2
   
Award
Favorite
Favorited
Unfavorite
MOD前言以及基础知识
由于sb这款游戏是英文的,所以大部分mod资料都在国外的一些论坛上。国内研究这个的也少,大部学习资料早就过时了。个人在学习时也感到在国内学习mod的不容易,所以出这份中文教程给想学习的人做个参考。由于个人水平也没有那么高,可能有疏漏甚至说错的地方还请大家指正。 学习的要求,sb至少通关过几次吧。反正做mod要对游戏比较熟。一种数据格式json。sb里面绝大部分内容都可以通过修改json的方式来对游戏修改,所以这里对json做一个简单介绍。 概念性的东西就不说了,json其实是一种表达数据的格式,可以看下面 { "itemName": "flashlight", "price": 100 } 这就是一个简单的json串,他表达的意思是这个东西的名字是flashlight(手电筒), price(价格)是100。学习mod的话不可避免要接触很多不认识的单词了,推荐大家遇到不认识的单词去谷歌翻译[translate.google.cn]查一查。 回到上面,其实json就这么简单,他只是一个种表达数据的格式。这种数据格式是这样的:一个正确的json对象要由一对{}包含,而这个大括号里的内容是由键值对构成,所谓键值对,键就是属性的名字,而值就是属性的数值。比如上述的json对象有两个属性(键),分别是itemName、price。对应这两个属性的值则分别是flashlight(手电筒),100。json的键需要用双引号引上否则会出错,比如itemName和price都必须用双引号引。值可以用双引号引,也可以不用。这要看值的类型,一般只有数字不用用双引号,这一点现在不用太深究,看的多了就知道哪里该用引号哪里不用引号了。 对于上面的json对象怎么再加一个键值对呢,这个json我知道是表示了一个手电筒价格是100,我想加一个稀有度怎么加呢?比如稀有度普通,对于json对象来说,每一个键值对是由“,”分开的。所以要加稀有度只需要在"price": 100后面加上逗号添加上想要加的键值对就行。比如如下 { "itemName": "flashlight", "price": 100, "rarity": "Uncommon" } 我加了一个稀有度为不同寻常的键值对。注意每一个键值对由“,”分开,最后一个键值对后面不需要加“,”。怎么知道自己写的json是不是正确的呢?这里有一个网站[www.bejson.com]可以把你写的json复制进去点校验就能检查了。如图 错误的json
starbound解包
所谓解包就是对游戏文件解压缩,sb的游戏文件都被压缩了,想要修改游戏文件必须要先解压缩才行也就是解包。 解包之前,先推荐一个软件notepad++[notepad-plus-plus.org],以后修改一些游戏文件都用它了,官网大家可能进不去,进不去自己百度一个下载好了。这是一个比较强大的文本编辑器。 下面是解包,首先找到starbound游戏文件夹,一般是安装在你的steam文件夹下的,比如我的steam安装在d盘那么starbound则在这里如图: starbound目录说明如下 在starbound文件夹下新建一个名为解压文本文档,将txt后缀改成bat如图 有些朋友可能看不到文件的后缀,这个需要自己百度显示文件的后缀了。用notepad++打开这个bat文件将下面的内容复制进去 "win32/asset_unpacker.exe" "assets/packed.pak" "assets/as" 一定要复制进去 不然可能出现问题。这段代码意思就是用win32文件夹下的asset_unpacker.exe程序去解压assets文件夹下的packed.pak(这个文件就是游戏打包的文件了)到assets文件夹下as文件夹。 保存好文件然后双击这个bat文件,就会弹出一个黑框 这时候解压已经开始了,不要动这个黑框。一般电脑需要等十几分钟吧,直到黑框自动消失,解压才算完成。如果你双击后发现黑框一闪而过,那可能你上面步骤出问题了,再仔细看看。来到assets文件夹已经有as目录了并且as目录下游戏资源都已经解压出来了。 把assets文件夹下的packed.pak删掉。然后再启动游戏,游戏是可以正常启动的。至此解包结束(注packed.pak已经不需要了,因为我们已经解压了同样的一份到as目录了所以删掉避免重复)
基础的patch方法(上)
在前一节解包完毕后,我们到被解压的游戏文件夹下查看,刚开始你会感觉好多文件夹,没有头绪。不着急慢慢来,如果你的英语不是很好的话,用谷歌翻译去翻译一下as目录下一级文件夹的英文名,大致了解下每个文件夹的含义。目前你需要记住的是 items文件夹这个文件夹包含了游戏里很多物品的游戏文件,刚开始做mod可以先从这里入手。打开这个文件夹,这个文件夹下又包含了很多子文件夹。如图,根据翻译可以大致猜到这些子文件夹放了些什么。如图: 我这里列举了几个文件夹,剩下的可以自己看看什么意思大致就能猜到里面装的什么了。其实做mod对英语要求不高,这些单词如果不会多去查一查就记住了。这一次就拿throwables这个文件夹下一个物品进行修改方法的讲解吧。进入throwables这个文件夹可以看到包含了游戏里很多投掷物品。就拿最后一个waterballoon(水球)来举例吧。 可以看的出一个投掷物品关联了三个文件,有两个是图片,还有一个是他的配置文件。 用notepad++打开waterballoon.thrownitem这个文件。发现了吗,这种数据其实就是我在前言里说的json数据呢。明白这种数据的格式,这个文件也不难读了,最多不认识的单词查一下。这里我就不再像前言里那么详细带大家读了,我把一些需要的键值对含义都标注在下面了: 我们先尝试直接改动这个文件,改成这样。 可以看到我把shortdescription(简介)和description(描述)这两个键的值分别改成了自己写的东西。关于键值对这个概念在初期我会强调比较多,也是让以前没接触过json这种数据格式的人能理解的更深刻一点。改完这两个值保存文件,这个不用教了吧和记事本一样。我们打开游戏去看看,变化了什么。可以看出来游戏里的水球描述和简介都变成我改的一样了。通过这样尝试的方式去弄清文件里的各个键的含义是mod初期必须要做的。这里打了汉化补丁的人可能看不到效果,原因是汉化补丁对这些描述性的属性都做修改了,建议用一个不要装任何mod的starbound来测试你做的一些修改。有些人可能会问,这些键的值都能随便修改吗?其实大部分是有规则的,现在你可能看到我修改shortdescription和description这两个键是随便写了一些值给他们,其实属于特例。这两个键是表述一些文本的,所以可以随便写一些文本给他。很多键比如上方的rarity,修改都是有规则的,如果乱修改,系统就辨认不出来这个值是什么了。比如我把rarity这个键的值Common修改成12345,再进入游戏你会发现会闪退一次(如果之前水球没用还在包里),再次进入的时候发现水球已经变成了完美方块,而且你再也得不到水球。对于rarity这个键来说他表示的是稀有度,你把他的值改成12345,系统也辨认不出稀有度是什么。如果你把值改成Uncommon怎么样呢, 进入游戏你会发现所有水球稀有度都变成了Uncommon 那么怎么知道一个键的值有哪些呢,比如这个rarity可选的值有Common、Uncommon以及没有用过的Legendary等等。其实这些值都是需要多去看sb的这些游戏文件积累的,可能在别的地方你看到有个物品有个键是rarity他的值刚好和你以前看的值不一样,那就是可用的了。你可以把这个值复制过来放到你想改的物品里。这里只是带大家入门,sb做mod最终还是看自己的了,很多键你不知道他的值有哪些,需要自己去翻翻游戏文件了,sb里大部门游戏文件都是json表示的,直接用notepad++就能打开看。看的游戏文件越多,修改才知道从哪里去复制过来。到目前为止,你已经学会怎么直接修改了。这里感兴趣的可以修改一下inventoryIcon这个键的值,这个键的值默认是waterballoonicon.png其实就是一张图片的名字,也就是刚刚在看这个水球有哪些文件时提到的那两个图片,可以尝试把这个图片名称改成自己配的一张图片看看。提示一下,选择自己的图片时,要保证这个图片和这个json数据文件在一个文件夹,还有注意一下尺寸要弄好。下一节开始正式讲最基础的mod方法patch
基础的patch方法(下)
上一次,我给大家讲了怎么修改starbound中的文件。当然如果你并没有做成一个别人可用mod的想法,只是自己玩一玩,那么直接修改本地文件也可以。其实修改本地文件并不推荐大家用,一是本地文件修改多了,可能到最后你自己也不知道自己修改了哪些内容,出了bug也不知道去哪里查。二是要想给别人用的话,当然是做成mod文件方式来给他,不是教他怎么改。这里开始教大家做第一个MOD 还是以水球为例子,现在我想做一个改了图片和描述的水球,waterballoon.thrownitem这个json中描述水球图片的有两个键,inventoryIcon和image,用于描述水球的有shortdescription和description,这两个键上次已经说了。那么开始做吧,首先定位到starbound mods文件夹,这个文件夹是专门放mod的,做好的mod都要放在这里才能生效,在这个文件夹下新建一个用于放你的mod的文件夹,这里我新建了一个FirstMod文件夹,在这个文件夹下新建一个文本文档并且改名为_metadata,注意这个文件是没有后缀的。 用notepad打开这个文件,现在是空的。把一下内容复制进去 { "version" : "1.0", "author" : "Bail", "description" : "MyFirstMod", "name" : "Test", "friendlyName" : "Test" } 如图 这里解释一下,_metadata文件是每个mod需要有的一个文件,里面内容格式都差不多,都是和上面的一样。这个文件可以用来描述你的mod的版本、作者、名称、描述之类的。这些都可以改成自己的。做好这个文件后,因为要做一个修改版的水球,我们可以看下原来的水球目录在哪个位置,我的是在D:\Starbound\assets\as\items\throwables文件夹下,每个人starbound安装位置不一样,可以自己调。按照这样的目录结构我们在FirstMod文件夹建立相同的文件夹如下, 这样我们的mod架构就差不多了,重新打开游戏,进入游戏看看。 在游戏主页右下方有个小齿轮,点看他可以看到当前游戏加载的mod,可以看到我们的mod已经被加载进来了。 进入throwables文件夹建立一个waterballoon.thrownitem.patch文件这个文件名字一定不能错如图 用notepad++打开这个文件,在里面输入 [ { "op": "replace", "path": "/shortdescription", "value": "mywaterballoon" }, { "op": "replace", "path": "/description", "value": "waterballoontotest" } ] 制作patch mod大概就是这样写了,pacth类的mod其实就是把修改的内容分离成一个文件,比如我要对水球文件也就是waterballoon.thrownitem修改,首先是建立一个和这个文件有同样目录结构的文件夹,在这个文件夹下新建一个文件,这个文件名字是要修改的文件名加上.patch,比如这里我要对waterballoon.thrownitem修改就建了一个waterballoon.thrownitem.patch文件,而这个waterballoon.thrownitem.patch文件里就是写要修改的内容的。在这里,你可以看到我写了两个的json对象,这两个json对象怎么放到一起呢,在最外层我用“[]”包含起来了,这个大家不必深究就是这样写的,patch文件因为要容纳多个json对象所以在最外层加一个“[]”,大家按照这种格式做就行。这里我要修改waterballoon.thrownitem这个文件里shortdescription这个键的值,那么我在patch文件里写上 { "op": "replace", "path": "/shortdescription", "value": "mywaterballoon" } 这样一个json,第一行"op": "replace"表示我要执行的操作是替换,那么替换哪里呢,第二行就说了替换路径(path)是/shortdescription,表示要替换waterballoon.thrownitem这个文件的shortdescription的值,要替换成什么值呢,第三行就是要替换的值(value),替换成mywaterballoon,这是要修改一个键的模板,下面的description修改方式也一样了。再多加一个这样格式的json就行。 然后我们加上图片的修改,图片我也不另外做了,我复制了一个手榴弹图片,改了个名字mywaterballoon.png到这个文件夹 在patch文件里加上下面的json模板, { "op": "replace", "path": "/inventoryIcon", "value": "mywaterballoon.png" }, { "op": "replace", "path": "/image", "value": "mywaterballoon.png" } 如图 保存好,重新开游戏。进入游戏,教大家一个快速的方法得到一个水球,在聊天窗口先敲一个/admin回车, 再敲上/spawnitem waterballoon回车。 这个属于指令了,这里不详细讲了,想了解更多指令的用法,大家可以自己百度百度。后期有时间,我可能单独开一讲指令的用法。这时候会在鼠标出生成一个手榴弹一样的水球,就是我们修改后的水球了。 这个看起来像是手榴弹但是扔出去还是水球。这样我们第一个mod就完成了。感兴趣的试试吧 mod的打包和发布: mod其实也是游戏资源,打包就是解包的反过程,和解包教程中类似,可以在sb文件夹下建好一个解压.bat。在里面输入 "win32/asset_packer.exe" "mods/FirstMod" "FirstMod.pak" 含义就是用win32文件夹下的asset_packer.exe程序压缩mods文件夹下的FirstMod(做好的mod文件夹)生成FirstMod.pak。同样解包教程不仅仅适用在第一次游戏资源的解压缩,也能解压别人写的mod,一般打包好的mod都是pak格式。mod 发布就不说了,创意工坊有工具可以传自己的mod。 后记: 做第一个mod时,大家可能会遇到各种问题。如果你做完mod打开游戏就自动退了,或者是进入游戏了,但是用指令产生水球时卡死了。都是mod做的有问题,问题大致可以分两类,一个是json格式错误(新手最多问题是json中键没加“”或者少括号多逗号之类的),在前言里我详细说过json的格式了,以及json的校验网址。大家写好mod,可以把里面的json先复制到那个网址校验一下。第二类错误就是键值对写的不对,上一节我说过sb里面的一个键的值都是有规范的,不能乱写,同样键也是固定的,一般不需要修改。在前期,做mod我们都是去改一个键的值,这个键本身是不能乱动的,只有你做mod技术已经很高了,你才会思考去对键修改。如果键值对有问题,比如你写了一个系统不认识的键或者值,那么进入游戏同样会有问题,这个需要自己小心检查了,多去对比一下。这次做的这个小modhttps://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=1493369363我也传到工坊了,需要的可以下过来看看。(工坊订阅的mod一般在steam 文件夹下的D:\steam\steamapps\workshop\content\211820这样一个目录下mod根据id分了文件夹)
MOD进阶ID和指令
通过前面的patch方法的mod制作,大体的mod框架已经给大家讲完了,后期我要讲的一些内容,基本都是给大家分析游戏文件中json中各种参数的含义和使用。其实这个自己慢慢探索,不懂的去谷歌翻译然后尝试修改也能逐步的提高。总之到目前为止,你已经可以独立的去探索starbound各个游戏文件了,当然自己去探索过程是比较辛苦的,成果同样也比再跟着我的教程跑要更适合你。 后期首先是给大家分析一下各种武器的文件代码,因为武器也是游戏比较重要的元素吧,所以先从他开始。这次要说的是一些补充知识。 1:关于ID的介绍,在上次我给大家说了一个代码,就是/spawnitem waterballoon,敲击完这个代码回车后,在光标出会生成一个水球。waterballoon其实就是水球文件中那个itemName的值,详情大家可以打开水球的游戏文件就能看到,那么我把这段代码后面的waterballoon改成其他itemName的值可不可以呢?还是定位到Starbound\assets\as\items\throwables文件夹下,打开beachball.thrownitem这个文件。 我们把/spawnitem waterballoon改成/spawnitem beachball,然后进入游戏,进入管理员模式(/admin同上次说的),再敲上这个代码回车,会发现生成沙滩球了。这个代码其实就是根据游戏里的物品itemName来快速生成自己想要的东西的。而这个itemName就是一种 ID,作为物品的ID这个键的值在游戏里只能是唯一的,不能同时又两个游戏文件的itemName的值是一样的,这样会引起冲突。其实这个键就相当于一个身份证,一个物品要想在游戏里正常存在就必须要有这个而且不能重复。对于游戏里的其他东西比如抛射物、怪物之类的也是有唯一的ID的,往往这个ID是这个游戏文件第一个键值对。 2:一些常用的指令,这个在wiki[starbounder.org]上比较清楚,打开这个网址,可以看到有很多指令包括我说的/spawnitem。当然全部是英文的,大家可以慢慢翻译看。也可以打开这个网址http://www.52miji.com/cheats/1475942515.shtml,这里指令要少一点但胜在是中文的而且比较清楚,有些指令可能你不知道是做什么用的,这个不着急,可以在游戏里逐一尝试一些可以理解的指令,关于指令不再详细解析了,自己去试试就知道了。指令有很多高级用法,可以产生一些用于服务器的mod,感兴趣的自己研究,因为指令mod内容太庞杂了,串讲不容易,模板也有很多,不是一次两次可以说完,所以这里不详细说了。我们这里主要给大家讲一般性mod,如果你把一般性mod做好,以后想学指令类的mod将会手到擒来。
Projectile解析上
在前面内容中,我们尝试将水球的图片改成了手榴弹的图片。但是当抛出手时,其实还是一个水球,那么如果我想要让他抛出时变成真正的手榴弹应该怎么做呢?这涉及到projectile(抛射物)知识了。projectile在starbound中非常重要,很多地方你都能见到他,比如枪支类武器、技能等。在水球例子中,水球也存在projectile,如图 水球的配置中有projectileType,projectileConfig这两个属性。其中projectileType表示水球抛射出去后的抛射物种类,projectileConfig表示抛射物的属性。这里的projectileType是waterballoon,这个waterballoon其实是抛射物的ID,上一次给大家讲了starbound中所以物品都有他自己唯一的标识也就是ID,抛射物也不例外。定位你的文件夹到解包文件中的/projectiles文件夹。(注意/projectiles和/items文件夹是同级的都处于解包后的第一个目录下,后面的路径都将类似表示) 这里是starbound所有projectile存放的地方,在/projectiles/throwable/waterballoon/ 目录下可以找到waterballoon.projectile配置文件。打开配置文件,projectile配置文件中的属性其实相当多,有一些只在一个配置文件中是看不出的,下面我列出的是初期需要知道的属性,另外有很多属性则需要后期自己去探索了。 actionOnReap这个属性是比较复杂但是必须要搞懂的属性,他表示此projectile销毁时的动作。从水球这个物品来说,首先在手上的时候他是前面说的/item/throwables/waterballoon.thrownitem,一旦抛出去就变成/projectiles/throwable/waterballoon/waterballoon.projectile了,而这个projectile总是要消失的吧,比如撞到地面或者怪之类的,actionOnReap可大致理解为这个水球在消失时要作的”动作“,从配置文件中可见他做了两个动作,一个是liquid另外一个是sound,所谓sound就是播放音效,要播放的音效选项就在options属性中,比如这个”/sfx/projectiles/waterballoon1.ogg“音效,你可以到对应文件夹找到这个音效用音乐播放器打开听一下,应该就是水球击中了某个东西消失时的声音。另外一个是liquid,之前进阶知识里有推荐了几个网址,包含了各种指令的使用,如果你仔细读了,就会发现有个指令和这个很相似/spawnliquid liquidName # 在光标处生成指定液体。这里"action" : "liquid"和这条指令作用相似,只不过不是在光标处生成液体而是在水球“销毁”的地方产生液体,液体是water(水),数量3。其中的"liquid" : "water",water表示的是水的ID,相关液体的配置文件你可以在 /liquids 文件夹中找到,这里不继续延伸了。总结:当水球“销毁”时会产生3滴水,并且播放相应的音效。这里你可以尝试把"liquid" : "water", "quantity" : 3 改成"liquid" : "fuel", "quantity" : 3试试,直接可以改这个配置文件保存后启动游戏用指令产生一个水球试试。(记得尝试后恢复原来的文件保持原文件的整洁) 。 注: 1. 如果你需要写patch文件,可以根据上面的教程建立在mods文件夹下建立同等文件夹,新建一个waterballoon.projectile.patch文件,将一下内容复制进去即可: [ { "op": "replace", "path": "/actionOnReap/0/liquid", "value": "fuel" } ] 2.关于json,actionOnReap的值是一个用[] 框起来的,其实如果学过编程会明白这里表示数组,没有学过也没关系,你可以暂时把他理解为可以包含多个json或者字符串的一种值。和patch文件写法格式一样的。后期看的多了自然知道该怎么写。
Projectile解析下
之前给大家讲了projectile一个非常重要的属性:actionOnReap,代表projectile销毁时的动作,可以同时执行多个动作,比如"action" : "liquid"、"action" : "sound"产生液体并播放音效。其实还有很多动作可以加入,通过翻阅游戏里的各种projectile文件你可以发现很多动作,比如"action" : "projectile"表示产生一个projectile。你可以在这个projectile消失的地方再产生一个projectile;"action" : "particle":产生粒子;"action" : "item"产生一个物品;"action" : "spawnmonster":产生一个怪。这些动作的具体用法可以自己去参考各种projectile文件。注:大家可以下载一个文本搜索工具,这个百度有很多了,比如FileLocator,遇到不懂得地方用这个工具搜索一下对应文件夹的游戏文件,搜关键词看看原文件怎么写的。比如我在我的/projectiles文件夹下搜了action关键词就会跳出所有包含action的文件,这个功能太有用了。 actionOnReap定义了projectile销毁时要执行的动作,除此之外还有actionOnHit、periodicActions等等都是projectile在某个情况下要执行的动作,这里就不展开了,projectile内容太多了,初期掌握actionOnReap用法就行了。其余的都需要你后期慢慢探索了。 projectile中有一个statusEffects表示击中实体后给实体施加的状态即buff,这个在游戏中例子很多比如有些枪打中怪后会让怪中毒等等,这些都可以在statusEffects中定义,statusEffects的值同样是被[]包围表示可以写多个值,这些buff可以在游戏的/status/effects/中找到,对于buff也是一样都存在唯一的ID,也不再展开说了。最后一个damageTeam,可能有人认为这表示了projectile可以伤害哪些东西,这个属性大家可以自己研究一下,提示一下在/projectiles文件夹中搜索一下damageType这个关键字比较不同的damageType的projectile的特性。 projectile暂时先说到这,我只是把我觉得有些难度的属性说一下,其实可能百分之七十以上的属性还得自己去慢慢调试理解。并且也不是一步能完成的。还是回到原先的水球这个Item,注意不是projectile了。 水球中还有一个属性projectileConfig,从字面意思就可以知道是projectile的属性配置了,这里他把waterballoon这个抛射物的属性配置增加了speed、power、periodicActions这三个属性。说到这里你可能会奇怪为什么不干脆一点直接这三个属性加到waterballoon.projectile这个抛射物文件中而是在waterballoon.thrownitem这个物品中加了配置,而且既然这么加了说明这是有效果的,所以我们可以实验性的自己加一点进去试试比如我把这个文件改成这样。 我只是增加了这么一个属性,是完全从刚才的waterballoon.projectile配置文件中复制过来的,只是改了action动作。进入游戏产生一个水球/spawnitem waterballoon。是有效果的,水球击中地板时产生了能源。 到这里你应该知道projectileConfig是做什么用的了,他可以用来改动了对于水球这个物品中的这个projectile属性,但是仅仅只是对水球来说有效,真正的waterballoon.projectile这个文件的属性并没有变化。换句话来说如果有其他物品也用了waterballoon.projectile,他们的属性依然是原来的。这样做的目的是更方便的拓展mod,比如你有一把枪你只是想换一下这把枪子弹的伤害,你只需要在这把枪的projectileConfig中添加上要改的属性就行了,直接改子弹的projectile文件是不行的,这会导致其他用了这个子弹的的枪伤害也变了,或者也可以新加一种projectile专用于你的这把枪,但是仅仅是换个伤害而已,新加一种projectile就太麻烦了。回到刚开始的问题,一个水球怎么让他抛出去是一个炸弹呢?其实只需要找到炸弹的projectile,然后把他的ID填到水球的projectileType就行了炸弹的projectile ID是zbomb可以自己尝试一下。
MOD教程尾声---指令式MOD
本来这块我是想用做一把枪支mod做结尾的,但是考虑到武器相对于新手来说还是比较复杂的,其实我来讲一遍也不过把里面的一些属性解释解释,这些你自己去翻武器文件慢慢尝试出来的结果要比我说的效果好的多,大部分比较难的地方我在前面的教程应该都涉及到了。如果你感觉自己能力足够了可以去创意工坊下载一个简单的武器mod,看看他怎么做的。当初我做的一个岩浆发射器可以算一个简单的MOD尝试吧,有兴趣可以下载下来解包看看。 最后我要谈的是指令式MOD,这种MOD其实是专门为联机而做的,做起来比一般MOD要困难。为什么要说这个呢?其实在国内感觉做这个的应该占了大数(也叫做黑科技),一般玩联机或者服务器的玩家都会这个东西。starbound联机有一个麻烦的地方就是双方必须要装同样的MOD才能联机成功,否则会出各种问题,这就给联机带来很多不方便的地方。指令式MOD的好处是别人不用装你做的MOD也能看到你做的东西,而且你做的物品也完全兼容各种服务器。 下面进入主题,之前我给大家介绍过一些可以查到指令的网站,其中有一个指令/spawnitem应该你已经很熟悉了,可以用它产生一个物品。其实这个指令完整的写法是这样的:/spawnitem itemName [count] [parameters]。前面的itemName已经很熟悉了就是物品的ID,后面其实还可以加count表示数量,parameters表示参数。count比较好理解这里讲一下parameters,这里的parameters其实就可以填写你要改的这个物品的属性。比如在最开始我们通过patch方法改了水球的description属性,如果换到这种指令式的MOD怎么写呢,其实很简单直接/spawnitem waterballoon 1 '{"description" : "12345"}' 这么写就行了。把这条指令复制到游戏中试试,你会发现和之前patch效果是一样的,物品的描述已经被改了。但是要比patch简单的多!不用新加patch文件编写等等。这就是指令式MOD,你可以把你想要修改的某一物品属性填写到{}中 这个{}需要用' '包含。怎么修改抛射物呢?还是一样需要修改什么属性就把对应属性和值填写进来,/spawnitem waterballoon 1 '{"description" : "12345","projectileType" : "zbomb"}',这是改了描述和抛射物的指令。同理/spawnitem waterballoon 10 '{"projectileConfig" : {"actionOnReap" : [{ "action" : "liquid", "liquid" : "fuel", "quantity" : 30 }]}}' 这是改了水球抛射物配置的的指令。要注意的是指令复制到游戏聊天框里必须是一行不然复制不进去,所以在做好指令后需要自己把把缩到一行上。 指令式MOD原则就是需要改什么就把对应的属性和值复制进来做相应改动,记住这个就行了。从他的原则来看其实指令式MOD产生的物品就是一个改了属性的物品副本,他没有增加游戏的额外的资源,所以在联机时不会出现传统MOD兼容问题,适用用于各种服务器。还有一点就是如果需要改一个物品的图片怎么用指令实现,你可以利用颜色码来达成效果。关于颜色码是什么原理我就不说了,这个有些复杂有兴趣你可以自己研究研究。推荐一些网址: 制作指令型帽子的网站:https://silverfeelin.github.io/Starbound-Hatter/ 制作指令型衣服的网站:https://github.com/Silverfeelin/Starbound-OutfitGenerator 制作指令型一般武器的软件地址:https://github.com/Silverfeelin/Starbound-DrawablesGenerator 查看自己存档中物品JSON的软件:https://ilovebacons.com/showcase/starcheat-starbound-1-3-4-compatible.34/ 这些都是学习指令式MOD非常有用的网站。 最后我个人也要当初学习指令式MOD整理的一些模板,需要的可以下载链接: https://p a n.baidu.com/s/1RGOyNBBTgnrTwGy8DI6hOA 提取码: qsjs(链接有空格自己删一下)
新的起点,Starbound Lua编程
详见,我的Starbound Lua入门教程。
Starbound lua入门教程
14 Comments
Running_smile 11 Aug, 2022 @ 7:36pm 
比wiki上的好懂多了,谢谢大佬无偿公益:SBpenguin:
Nuclear Patriot 28 Dec, 2020 @ 4:33pm 
牛批啊,不过我还是不太会😂,慢慢研究吧
Cheese 30 Sep, 2020 @ 7:51am 
@What happened to you 谢谢..现在我遇到了新的问题 如何更改远程武器的手臂位置..我翻了.activeitem文件..找到的几乎是手臂旋转..
"stances" : {
"idle" : {
"frontArmFrame": "idle.3",
"backArmFrame": "rotation",
"armRotation" : -30,
"weaponRotation" : 30,
"weaponOffset" : [0.05, -0.65],
"twoHanded" : true,

"allowRotate" : true,
"allowFlip" : true
},
【引用的minigun mod中一部分代码 版权此mod作者所有】
我想用它这个自己改一个武器..手臂位置问题却犯了难..
What happened to you  [author] 2 Sep, 2020 @ 7:00am 
@Cheese 自定义buff吗 在/status/effects/下面都是原版的buff文件 不过会涉及到lua的一些知识 建议对mod比较熟练后再去研究
Cheese 31 Aug, 2020 @ 12:20pm 
谢谢你,有没有一些状态mod的教程,我研究了半天原版东西只找到了状态id,不能自己创建状态
再次感谢:steamhappy:
Mavis NO.1 11 Jun, 2020 @ 4:26am 
支持 但是字有点小:winter2019sadsnowman:
野水仙 2 Apr, 2020 @ 1:25am 
谢谢作者大大~:CatHi: 爱你哦~~~~~~
Dzonea 12 Mar, 2020 @ 12:25am 
大佬强,写的浅显易懂,恁地就是白居易再世?(笑)
赛化皮卡丘 21 Feb, 2020 @ 1:48am 
中文很需要这类文章。
作者加油!