Lua代码在我的高级计算机上正常运行,但无法在监视器上运行

时间:2015-05-21 11:09:54

标签: lua minecraft-forge computercraft

我运行了一台成功的Minecraft Tekkit modded服务器,上面装有计算机工具。

我对lua相当新,只知道基础知识,我正在尝试制作一个带有页面的菜单来显示禁止的项目列表和规则列表。我制作了一个带有箭头的程序,这些箭头针对高级计算机和监视器进行了优化。

代码在我的高级计算机上正常运行但在显示器上无法运行,当它显示并且有人点击箭头时它也不起作用。

我刚刚开始使用堆栈,所以我不知道该怎么做,如果您需要任何信息请询问:)

代码:http://pastebin.com/gVtPeBCE

顺便说一下,我已尝试使用Mon.writeMon = peripheral.wrap("top")

对于那些没有tekkit的人来说,这是一个计算机模拟器https://goo.gl/J0dPq0

2 个答案:

答案 0 :(得分:0)

我很抱歉地通知您,我还没有读完您的所有代码。但根据你的描述判断,我会说它可能是三个问题中的一个,不包括错误的语法作为一种可能性。

注意:您的问题是专门询问程序在监视器上运行的能力,而您链接到的模拟器仅提供桌面计算机工艺计算机。

周边

虽然您已说过:

  

顺便说一下,我已尝试使用Mon.writeMon = peripheral.wrap("top")

我想澄清一下,作为简化代码转换的一种方法,您可以将外围函数表设置为等于 term 变量。例如:term = peripheral.wrap(string_side)

注意:使用此方法时,不应该使用以下命令执行程序:

> monitor side program

您应该将其作为普通程序运行,无需特殊处理。

即。 > program

鼠标事件检测不正确

简单地说,在使用显示器时,您不应该参加mouse_click事件。您必须提取monitor_touch事件。

while true do
  type, side, x, y = os.pullEvent()
  if type == "monitor_touch" then
    print("Monitor '"..side.."' has been pressed at "..x..", "..y.."!")
  end
end

监视器大小

这只是意味着您尝试在显示器上执行的程序占用了大量空间,因此在显示器尺寸上显示时无法使用。

建议:更新显示器大小的代码或构建适合程序的显示器。

请记住,所有这些想法都可能无法回答您的问题,因为您提供的代码过于庞大而且我还没有时间去试验它。因此,这些只是一般性的建议。

答案 1 :(得分:0)

如果我不得不猜测,这是因为终端的术语很短并且会自动与计算机一起使用,所以如果你将术语设置为文件顶部的监视器,它应该可以正常工作。

term = peripheral.wrap("SIDE OF MONITOR")

将它放在代码的顶部,它应该可以工作。但是我认为这是在看了你的代码之后(也不是那么长的代码样本......)