问题标签 [opencomputers]

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.

0 投票
1 回答
1748 浏览

lua - Lua 脚本不接受参数

我试图让全息投影仪工作,但遇到了这些错误:

我的脚本是:

我用了:

返回的打印命令:

但它不工作。我检查了拼写。全息图也被正确初始化。

0 投票
1 回答
92 浏览

lua - Lua 表键在函数返回中的变化

似乎当我从函数返回表时,我丢失了它们的键。不确定这是否是 Lua 应该如何运作的。

例如


0 投票
2 回答
968 浏览

lua - Lua:在等待输入时运行代码

我目前正在开发一个 lua 程序。我想在 Minecraft 中使用一个名为“OpenComputers”的 mod,它允许在模拟系统上使用 lua 脚本。我正在处理的程序相对简单:你有一个控制台,你输入一个命令来控制一台机器。它看起来像这样:

但问题是:我需要在后台运行一个例程来检查机器给出的数据。

我怎样才能使这项工作?

  • 等待时我无法跳转到协程io.read()
  • 有人使用命令后检查是不够的(有时我几天不使用它但我仍然需要密切关注它)

我对 lua 比较陌生,所以请尝试提供一个简单的解决方案,并且 - 如果可能的话 - 一个不依赖第三方工具的解决方案。

谢谢 :)

0 投票
0 回答
62 浏览

lua - 使用 load()() 执行的代码无法访问其调用者的函数

所以我正在编写和测试我的新操作系统内核,刚刚完成了它加载 /bin/init.lua 的部分,我测试了它,它加载了 init.lua,然后它退出了执行过程。我在 init.lua 中有一个函数,它打印出测试消息,但它需要从内核访问两个特定的函数,但它似乎无法访问它。知道如何使 load()() 执行的代码能够访问其调用者的函数吗?

以防万一您需要查看源代码:https ://github.com/WattanaGaming/OCLinux/blob/master/boot/kernel/OCLinux.lua#L86

0 投票
2 回答
1764 浏览

algorithm - 模拟 3D 空间中的简单三边测量算法

背景:我正在为 OpenComputers 添加的移动计算机实现导航系统,这是一个 Minecraft 模组。对于那些不熟悉这个模组的人来说,它基本上添加了各种 Lua 可编程、可升级的计算机,包括移动计算机——即机器人、无人机和平板电脑。尝试对机器人和无人机进行编程以执行自主任务时经常出现的众多挑战之一是确保它们始终知道自己的坐标。

最简单的解决方案是使用导航升级,它正是这样做的 - 为计算机提供其相对于制作它的地图中心的精确坐标。然而,它有两个主要缺点 - 它占用了 II 级升级槽,这可不是小事,而且仅限于地图区域。后者或多或少是可以接受的,但仍然使这种导航方法在某些用例中不可用。

另一种解决方案是让计算机记住一次它们的坐标,然后跟踪它们的运动,但这也有一些潜在的警告——你必须通过自定义子程序控制所有运动或使用黑客来拦截组件调用,你可以'移动计算机时不必每次都手动输入坐标,无人机存在一些精度误差,这对平板电脑根本不起作用。

第三种方法——我正在研究的方法——类似于现实生活中的 GPS。它基于这样一个事实,即计算机可以使用无线网卡进行升级,以便能够在 400 块的相当大的距离内相互发送消息,并且随着消息本身它们接收到精确的距离(浮点数,以块为单位) ) 在发送者和接收者之间。如果我们将一些固定计算机指定为不断广播其位置的“卫星”,我们可以使移动计算机能够使用来自 4 颗以上卫星的信息进行三边测量。

这种方法具有可扩展性(您可以不断向网络中添加更多卫星以扩大其覆盖范围),不会占用仅用于导航目的的额外升级槽(因为许多移动计算机已经升级了无线网卡)并且精确,这与其他两种方法相比,它具有明显的优势。但是,它需要一些令人惊讶的复杂计算,这就是我卡住的地方。

问题:我需要找到一个三边测量算法(最好附带一个代码示例),它可以让任何移动计算机在知道指定“卫星”的坐标和距离的情况下计算其位置(在 ~0.25 块的误差范围内)他们。我们假设所有的计算机和卫星都配备了第 II 层无线网卡(即它们可以在 400 个块的总范围内相互发送消息,并以 float32 数字允许的精度知道发送者与其自身之间的距离)。该解决方案将使用纯 Lua 编码,无需访问任何第三方服务,因此像 Mathematica 这样的数据包是不行的。目前我正在押注某种合适的方法,尽管我没有

在最基本的层面上,我们可以假设有 4 颗卫星不断且正确地广播它们的位置,彼此相距适中的距离,并且不位于单个 2D 平面上。理想情况下,算法应该能够适应一些可选条件 - 请参阅下面的部分。

奖励积分

  • 使算法足够小以适应无人机的 2KB 内存(假设 UTF8 编码)。但是,它应该占用更少的空间,以便主程序也可以容纳。越小越好。
  • 制定一种算法,使卫星彼此非常接近并具有非整数坐标(以允许用一个不断移动的机器人或无人机替换多个固定卫星,或使移动计算机在从一颗卫星)。
  • 假设已经可以确定位置,则制作允许存在少于 4 颗卫星的算法 - 例如,如果所讨论的移动计算机是机器人,并且除了一个可能的位置之外的所有可能位置都低于或高于块的允许高度范围(y<0 或 y>255)。如果有三颗卫星位于例如 y=255 的高度,则这种设置是可能的。
  • 制作一种算法,该算法可以抵抗某些卫星广播稍微错误的位置(设置中的一个小错误)。鉴于存在足够正确的测量值,该算法应该推断出正确的位置或完全抛出错误。理想情况下,它还可以记录“关闭”卫星的位置。
  • 制定一种算法,该算法可以抵抗同时存在的两组或多组卫星在不同的坐标系中正确广播它们的位置(设置中的一个主要错误)。每个网络都有一个(假设是唯一的)标识符,允许区分由不同玩家(或者,好吧,只有一个)独立设置的不同网络。但是,如果他们不费心正确设置标识符,不同的信号可能会混淆,从而使移动数据终端感到困惑。因此,抗性算法应该能够检测到这种情况,或者直接抛出错误或区分不同的网络(然后可以对其进行微调以适应特定应用程序的目的 - 即拒绝加载,选择最近的网络,选择最大的网络、提示用户或控制服务器等。

我尝试了什么:除了尝试自己解决问题外,我还尝试在互联网上查找合适的解决方案。但是,我能找到的解决方案都不适合这项任务。

  • 我通过谷歌搜索“三边测量算法”发现的大部分内容都是处理现实生活中的 GPS 系统——也就是说,只使用 2 个坐标,强烈考虑错误并且通常没有提供足够的精度。
  • 相反,有些是纯数学的,建议建立一系列方程来找到球体的交点。可悲的是,据我微弱的数学背景让我理解,这种方法没有考虑浮点数的精度误差——圆不完全相交,点不在同一位置,所以方程没有解。
  • 有些似乎解释了解决方案,但涉及很多我无法理解的复杂数学,并且没有包含精确的算法或至少一个代码示例。
  • 至少有一个使用了像 Mathematica 这样的外部数据包,在这种情况下,这些数据包同样不可用。

如果我留下了一些不清楚的重点,请发表评论,以便我改进问题。提前致谢!

0 投票
4 回答
1294 浏览

json - 从 JSON 生成的表中的 Lua 访问索引

所以,我一定会使用 Lua 从 Openweathermap API 获取天气数据。我设法发送了一个 http 请求来返回和存储所有数据,但现在我被一个我不知道如何使用的 Lua 表困住了。我对 Lua 很陌生,我没有找到任何关于 Lua 中如此深的嵌套表的指南或类似内容。

特别是我只对 main 中称为 temp 的字段感兴趣。以下是来自 API 的示例响应:示例请求响应

依赖项是 Lua 的 socket.http 和这个json 到 Lua 表格式化程序。这是我的基本代码结构

“get”现在存储一个我不知道如何使用的表

0 投票
2 回答
7396 浏览

lua - 如何修复“尝试索引零值”

我的代码有一个错误:它一直告诉我“尝试索引一个零值(全局'边')”

我正在尝试通过 Minecraft(OpenComputers)学习 Lua,但发现自己陷入了一个零值问题。可能有些东西实际上不是来自 Lua(mod 本身),但问题涉及“纯 Lua 部分”

我去了 mod 的 Wiki,它说 redstone.setOutput(sides.left,15) 应该改变输出的实际值,但它也返回输出的 OLD 值(这就是我想我的地方我做错了)

0 投票
1 回答
754 浏览

lua - 我的代码在 Minecraft 中的计算机控制的种子分析器上给出了“尝试调用零值”

因此,我花了几个小时寻找有关“计算机控制种子分析仪”项目的文档,但目前没有有用的信息。我的目标是建立一个种子分析仪,它将检查分析仪旁边的植物并对其进行分析。

我的代码:

根据我的逻辑,我认为结果应该分析种子,但它尝试调用 nil 值(全局hasPlant)。根据我的研究,当时没有定义边,因此我添加了本地线。我还会缺少什么?

计算机控制的种子分析仪

0 投票
1 回答
194 浏览

visual-studio - LuaRock Visual Studio 命令提示错误

我尝试luarocks install luafilesystemVisual Studio Command Prompt. 但它显示“错误:未能找到 Lua 库。您可能需要配置 LUA_LIBDIR”。

为什么我会收到这个错误?(这次我得到了 Piglet :))

0 投票
1 回答
214 浏览

lua - 有没有办法从 Lua 中的变量运行代码

所以,我有一个非常有趣的位置,我将一整套代码加载到一个变量中,我非常想运行这段代码,因为它为后面的代码定义了关键变量和函数。有没有办法让我这样做?我没有尝试过任何事情,因为坦率地说,我不知道在这种情况下我必须做什么。

主程序:(代码在变量加载之后。)

变量加载代码