网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月07日
漏签
0
天
starbound吧
关注:
85,436
贴子:
923,566
看贴
图片
吧主推荐
玩乐
首页
上一页
1
2
3
下一页
尾页
36
回复贴,共
3
页
,跳到
页
确定
<返回starbound吧
>0< 加载中...
回复:Starbound Lua入门教程
取消只看楼主
收藏
回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
之前我们分析了dash这个科技的lua脚本,得出一个结论,当玩家进入一个世界时(dash实体初始化),init函数会被调用一次,玩家离开世界时(dash实体被销毁),而update函数其实是无时无刻在被脚本引擎调用。其实也很好理解,就算再简单的游戏,无论是怪还是玩家,只要是动态的,我们都必须不停的刷新他的动画状态,一旦他的位置或者图像发生变化,我们需要重新设置,不然他就是静止的了,这就是update函数。
IP属地:上海
20楼
2020-05-11 22:44
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
对于新手来说,完全编写一个新的科技mod困难度是非常大的,我们可以借用原版的科技添加自己的逻辑代码来实现我们一开始定的目标。如何借用呢,我们已经分析了dash.lua中函数的调用规则了,所以我们可以把自己写的代码挂接到dash.lua上。具体方法:在mods文件夹建立以下结构。
IP属地:上海
21楼
2020-05-11 22:44
回复
收起回复
2026-01-07 00:16:37
广告
不感兴趣
开通SVIP免广告
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是标准的patch结构,相信你已经很熟悉了,我们对dash.tech 这个json文件进行patch,给dash.tech的scripts属性值增加一个demo.lua。
IP属地:上海
22楼
2020-05-11 22:45
回复(1)
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在demo.lua中写入以下代码
IP属地:上海
23楼
2020-05-11 22:46
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这就是一个最简单的lua类型Mod了,在打开游戏后,你会发现效果和我们刚开始前直接改动源文件一样。简单的看一下这段代码,当我们在 dash.tech 中的scripts属性中加入了demo.lua后,科技实体在加载dash.lua时也会加载demo.lua。demo.lua做的事很简单,把原来dash.lua中的init,update、uninit函数都先保存到变量ini、upd、uni中,自己定义了init()、update()、uninit()这些由脚本引擎自动调用的函数,相当于覆盖了原来dash.lua的这些函数。
IP属地:上海
24楼
2020-05-11 22:46
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
那之后脚本引擎就会调用demo.lua中的init、update、uninit函数了。但是我们需要同时调用一下原来dash.lua的这些函数,不然dash这个科技原来自己的功能就没有了,所以会有这样一个架构,这也是一个通用的挂接型模板。那么下面的事就很简单了,你可以在你自己写的demo.lua中随意发挥了。
IP属地:上海
25楼
2020-05-11 22:46
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第四篇:Lua mod编写(下)
IP属地:上海
26楼
2020-05-11 23:17
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
为了实现瞬移到光标位置,我们要来查文档了,看看有没有设置玩家位置的函数。定位到actormovementcontroller这个文档,可以看到有一个函数“mcontroller.setPosition”,这个就可以设置当前实体的位置了,可能是玩家也以是monster、npc。看你把这个函数用在哪里了。这里我们用在科技实体上当然是设置的玩家的位置了。有人可能会问你怎么找的这些函数,官方提供了很多函数,这需要你经常去翻这些文档,每条函数的下面都写了他的作用。这个函数接收一个位置参数,但是这个参数类型是Vec2F,这是什么类型?并不是lua的基础类型。
IP属地:上海
27楼
2020-05-11 23:18
回复
收起回复
2026-01-07 00:10:37
广告
不感兴趣
开通SVIP免广告
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你可以用FileLocator去搜索解包文件中的lua文件,肯定有Lua文件用到这个函数,然后看看他的参数怎么定义的。这里我就直接说吧,Vec2F其实就是个两元素的数组。比如mcontroller.setPosition({200,300}),这句话就可以把你设置到你当前世界的(200,300)坐标。下面就是把这句话加到我们的demo.lua中,先加到init中,看看有没有效果。
IP属地:上海
28楼
2020-05-11 23:18
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这里教大家一个快速调试的办法,在游戏中用/reload就能让游戏重新加载修改后的文件。可以看到我一用/reload结束,人物就被设置到200,300这个位置了(使用指令/debug可以看到调试信息),调试的时候最好,把这个坐标改一改,这个坐标可能是个虚空。
IP属地:上海
29楼
2020-05-11 23:20
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
当然这个函数放在init中只是为了测试而已,我们的目标是按下键盘的G后把自己瞬移到光标位置。在update中加入以下代码。
IP属地:上海
30楼
2020-05-11 23:21
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
args.moves['special2'] 其实就是获取当前的键盘G键按下信息,关于args的结构如下:
IP属地:上海
31楼
2020-05-11 23:22
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
科技lua的args参数可获取的值非常丰富,这也是为什么选择把自己要实现的功能挂接到科技lua上,根据moves表,我们可以判断是否按下了一些键。
IP属地:上海
32楼
2020-05-11 23:22
回复
收起回复
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
可以判断的键有这些up、down、left,right,special1、special2、special3。其中special1、special2、special3分别对应键盘上的F、G、H(默认情况,你可以在设置里改),up、down、left、right比较好理解不多说了。
IP属地:上海
33楼
2020-05-11 23:23
回复
收起回复
2026-01-07 00:04:37
广告
不感兴趣
开通SVIP免广告
你怎么了说话啊
电子骑士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
primaryFire、altFire分别对应鼠标左键和右键。此外还能获取到当前人物是否是跑动的比如run。这些都是科技lua独有的,假如你用的其他实体的lua比如activeitem就不一样了。
IP属地:上海
34楼
2020-05-11 23:23
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
掐断!中方禁止对日出口两用物项
2383860
2
工资全交债自理,新婚男被掏空
1744002
3
少女跳楼身亡,遗言竟是原神台词
1392272
4
不中嘞,河南彩礼纠纷全国第一
1165833
5
梅事变疣事,日本梅毒扩散加剧
890032
6
最惨小三!当十年情妇倒赔700万
779725
7
武大靖退役,冰上王者谢幕
555816
8
砖家评越南新娘:低彩礼但藏刀
409423
9
双标!徐静雨贬凡人狂吹火影
348986
10
2026新晋烂梗诞生:原神NB
255486
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示