问题标签 [computercraft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lua - lua 尝试索引?零?- 计算机工艺
我正在玩臭氧 2 项目,我对自动化反应器感到很痛苦,但这是我唯一无法解决的问题,谁能告诉我为什么这部分有错误,而其余部分都没有问题,它在列表的底部
和他们所有人
和漏洞代码,如果你需要看的话,对不起,我对这一切都是新手
lua - computercraft/lua 程序循环无法维持信号输出
我正在尝试编写一个从 os.time() 函数获取时间并使用它来更改红石输出的程序。重新启动时,程序设置为自动运行,但由于我重新启动导致程序重新启动,它会中断然后再次启动代码。我已经在几个地方和表单中尝试过循环来更新时间变量而无需重新启动,但无济于事。任何帮助,将不胜感激。(如果可行的话,我仍然愿意接受带有循环的解决方案)
代码:
lua - 基本 LUA 问题
我正在使用 ComputerCraft,这是一个 Minecraft mod,它添加了计算机、监视器、调制解调器等,可以使用 Lua 脚本对其进行编程。
http://www.computercraft.info/wiki/Main_Page
在运行我的脚本时,我收到此错误:“bios:171: bad argument: string expected, got nil”。
我不明白,因为它说第 171 行,即使我的代码不超过 30 行。有人可以解释一下吗?
帮助将不胜感激。
lua - Lua 错误:'' 预期的
有一个我无法摆脱的错误。当我运行脚本时,每次都会出现以下错误:
虽然我已经在网上查到了很多东西一定有尽头,但是我没有发现错误。你能告诉我有什么问题吗?
lua - 在while循环期间的ComputerCraft Catch函数
我在 ComputerCraft 中创建了一个“虚假”操作系统,它允许我从头开始构建我的系统用户可以做和不能做的事情。
然而,我似乎无法做的一件事是让这个操作系统在解析不存在的“程序”时给出有效的回归。
例如,我创建了程序“帮助、管理、数据库”我想要的是每当我输入这 3 个程序以外的内容时,就会出现诸如“程序不存在”之类的错误。
这个 LUA 操作系统的构建是为了让命令行界面看起来尽可能干净,而不是效率。这个操作系统是在 3 天的时间里构建的,所以失去我的位置很常见,因此有些事情并不完全平行。
这是我的脚本操作系统,它在启动 ComputerCraft 计算机时立即运行
lua - if 语句中的计算机技术变量
我有一个小问题我是 Lua 和 ComputerCraft 的新手。所以我认为我的问题是我太愚蠢了,无法编写 if 语句中的变量更改我将发布我的代码希望你能帮助我解决这个问题 thx
Pastebin 的链接:链接到代码
所以问题出在这部分代码中
Pulverizer 变量不想从 true 更改为 false,因此此代码现在无法激活
而且我不知道为什么这里还有一个来自游戏内镜头的视频链接,所以你可以在视频中看到它变成红色但不再变成绿色
lua - ComputerCraft 跟踪 Lua “io” 库异常
我目前正在尝试使用函数和 API 函数调试基于 Minecraft 的海龟养殖脚本。
当我执行时,我得到一个“io”异常(这是可以理解的,因为我试图为每个循环写入日志),但它没有告诉我它在哪个脚本或行号。除了在整个程序执行过程中打印之外,还有其他解决方案吗?
我得到的例外:
io:107: index expected, got nil
主要的养龟脚本:
'positioners' api(基于运动/检测的任务):
('farmers' api 只是检查当前的种子,然后通过 farmer.plant() 种植作物)
lua - 检查计算机技术 Lua 代码以操作门
我正在用一些自定义模块制作一个保险库,我正在使用计算机控制门,但我只能打开门而不能关闭。这段代码对吗?
oop - Lua (CC) GUI 类在被告知在单独的窗口中绘制所有组件时在同一窗口中绘制它们
序幕
ComputerCraft 是 Minecraft (Forge) 的一个模组,它在游戏中添加了一个基于 lua 的原始计算机。使用这台计算机,人们可以编写程序以各种方式与 Minecraft 世界进行交互。ComputerCraft 问题是否适用于 StackOverflow 之前已在其他问题中进行过辩论,但我相信它是适用的,因为 mod 在很大程度上是关于编程的,虽然进行了一些 ComputerCraft 专有 API 调用,但没有概念在这个问题中,它不适用于其他与ComputerCraft 无关的lua 程序(当然,除非问题是由ComputerCraft 本身的错误引起的)。使用的 API 的文档可以在http://www.computercraft.info/wiki/Category:APIs找到。
注意:如果您没有 ComputerCraft 经验,请不要惊慌;我相信这个问题可能与ComputerCraft完全无关,而是由我未能掌握的lua中的一些复杂的OOP引起的。我已经对我认为有必要解释我正在进行的专有调用的最重要方面的代码进行了注释。如果有任何不清楚的地方,请发表评论,我会澄清。
如果您希望能够在没有 Minecraft 的情况下运行代码示例,可以使用名为 CCEmuRedux 的出色 ComputerCraft 模拟器。我已经在实际的 ComputerCraft 和 CCEmuRedux 上测试了我的代码,结果相同,尽管 CCEmuRedux 似乎不支持监视器。需要一台“高级”计算机才能看到颜色。
问题
在 ComputerCraft 1.75(和 CCEmuRedux @ ComputerCraft 1.79)中,给定以下类gui和一个尝试使用gui类在两个不同窗口中的每个窗口中绘制基本按钮的测试程序,两个按钮都在第二个窗口中绘制。从图形上看, guiTest.lua的结果是https://i.imgur.com/llFDlYI.png,而我希望在窗口 1 中绘制第一个(橙色)按钮。虽然我对它的行为有一些理论这样,我没有必要的 lua 经验来弄清楚如何解决它。这是一个 MWE。
代码示例
gui.lua
guiTest.lua
尝试的解决方案
对于它的价值,我一直在关注 Lua OOP 配方 @ https://www.tutorialspoint.com/lua/lua_object_orientation.htm。这是我的第二个基于 lua 的程序,所以我希望它是一个“简单”的问题。不过,我对 OOP 在其他几种语言(尤其是 Java)中的工作方式有一个基本的了解,因此我的程序员的“Spidey-Sense”告诉我,任何一个变量,例如t,都不是“足够本地化的” "(两个窗口都使用相同的变量),或者在创建新的 gui 对象时覆盖其中一个gui对象中的某些引用。
因此,我尝试将表gui设为本地,以确保它不会被覆盖:
...但它attempt to index ?
在“gui.lua”(setmetatable(o, self)
)的第 6 行吐出一个错误,所以我尝试了(意识到我将无法从gui.lua外部访问该函数,因为它是本地的):
...这导致guiTest.lua:1: bios.lua:14 [string "gui.lua"]:17:'(' expected
. 第 17 行是gui:drawButton()
上面代码标签中的定义。在我公认的有限的 ComputerCraft 经验中,这种格式错误的错误消息通常意味着 lua 解释器或 CraftOS 异常混乱™,但我认为它的要点是“你不能将对象方法设为本地”,因为我可以让其他以类似于我在这里尝试过的方式在本地运行。
一般来说,使用窗口 API 或使用窗口 API都不是问题window.create()
,因为在使用单独的监视器而不是仅在同一监视器上使用单独的窗口时会发生同样的事情。本质上:
也许有一种方法可以将函数存储为局部变量,如下所示
...或者更有可能的是,这个问题是我完全错过的。
结论
长话短说,定义两个gui对象,一个用于两个虚拟控制台窗口中的每一个,并尝试使用它们各自的gui对象在每个虚拟控制台窗口上绘制一个按钮,导致两个按钮被绘制在同一个虚拟控制台窗口。为什么?
function - 如何创建一个将其所有参数传递给另一个函数的函数
我正在尝试在我正在玩弄的程序中设置一些功能,以监视我的 Extreme Reactors Turbine(正式为大反应堆)。我正在尝试做的大多数功能......非常简单,但让我不必将某些代码块排成一百次。
基本上我想要做的是停止使用mon.setCursorPos(x, y)
wherex
和y
are the exact axis (eg mon.setCursorPos(1,9)
) 并用更简单的东西代替它,比如cursor(1,9)
. 问题是我不确定如何设置该功能...
()
以上将无法正常工作,由于setCursorPos
api 调用中缺少字符串值,会发生错误。我对 LUA 还很陌生,老实说,我不是一个出色的编码员,但我试图学会不要那么混乱,并在我不需要的地方画出一些东西。感谢任何帮助/提示,祝大家编码愉快!