遇到一些Computercraft/Lua代码的问题。
2014-4-7 13:17:43
收藏:0
阅读:158
评论:6
嗨,我想让我的 Computercraft 中的 Lua 代码允许用户通过右键单击顶部的监视器来打开/关闭红石信号,但我无法让它正常工作。
monitor = peripheral.wrap("top")
monitor.clear()
monitor.setTextColor(colors.red)
monitor.setCursorPos(1,1)
monitor.setTextScale(1)
monitor.write("Hello")
function rubber()
monitor.setCursorPos(1,2)
monitor.clearLine()
if rs.getOutput("right",true) then
monitor.write("Rubber farm is on")
elseif rs.getOutput("right",false) then
monitor.write("Rubber farm is off")
end
local event = {os.pullEvent()}
if event == "monitor_touch" then
if rs.getOutput("right") == true then
rs.setOutput("right",false)
else
rs.setOutput("right",true)
end
else
write("test")
end
rubber()
end
现在它只显示“Hello”,我不知道该如何修复,有人知道吗?而且我是 Lua 的初学者,我可能会犯一些很简单的错误。谢谢。
点赞
用户3492749
你需要调用这个函数。
rubber()
2014-04-09 09:58:27
用户3820393
你需要关闭你的函数
function rubber()
monitor.setCursorPos(1,1)
monitor.clearLine()
end
end是你需要加入的这个小词。
2014-07-09 12:24:29
用户3189167
问题是你想要让那个函数无限循环,但你没有在函数外调用你的函数……你也应该研究一下使用 while 循环
while true do
//stuff here
end
在你的最后一个 end 标签之后的最后一行添加
rubber()
即可。
2014-07-14 07:31:12
用户4378313
这是一个简单的修复方法,只需要在完成函数 rubber 后添加 rubber(),因为在创建函数 rubber 时,您尚未调用它启动。
2014-12-19 15:47:44
用户8076197
"monitor_touch" 事件是你应该使用的。另外,请确保你使用的显示器是高级显示器(带有黄色边框)。
如果需要帮助理解该事件,请查看此页面:http://computercraft.info/wiki/Monitor_touch_(event)。
2017-05-28 16:36:24
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
本地变量 `event` 用于存储一个元组,它来自于 `os.pullEvent()` 方法。在你的代码中,你将这个元组组合成了一个表。这没有问题,但是你接着将这个表与一个字符串进行了比较。表不能等于字符串,它们是两个不同的类型。你需要将表还原为其包含的元组,然后取出第一个元素来进行比较,或者直接将第一个元素赋值给 `event`:local event = os.pullEvent() if event == "monitor_touch" then
local event = { os.pullEvent() } if event[1] == "monitor_touch" then
```