从Lua中的外部源运行脚本指令

时间:2013-02-04 12:23:13

标签: lua minecraft computercraft

好的,我想知道是否有一种方法可以使用Lua从外部源运行脚本。无论是.txt格式的另一个文件,还是来自pastebin,你有什么,并运行代码并等待所述代码完成,然后继续使用该函数的其余部分。我完全不确定它是如何工作的,但这基本上就是我想要的想法,而不是真正的代码。

function runStuff()
print("checking for stuff")
run.script(derp.txt)
wait for script
   if run.script == finished
   continue program
      elseif nil
   print("looks like this script sucks.")
   end
end
runStuff()

例如“derp.txt”包含的内容是:

function lookFile()
   if herp.txt exists then
      rename herp.txt to herp.lua
   else
      nil
   end
end
lookFile()

我还是Lua的新手,所以我在这里编码就像一个白痴,但是你希望得到我的照片。我正在开发一个项目,它就像一个基于pastebin的存储库的安装程序包或者其他任何提供lua脚本的原始格式输出的地方,我将使用这个想法来调用脚本来运行外部。因此,当我提供该程序的“首次运行”版本时,它将调用一个lua脚本,该脚本将调用另一个lua脚本并安装该脚本,然后关闭。

这是为了我的世界,请注意。 ComputerCraft让我对Lua感兴趣,但无论如何,希望你能得到我想要弄清楚的东西。希望这是可行的,如果没有,我只需要想出其他的东西。

1 个答案:

答案 0 :(得分:1)

要加载和执行Lua代码片段,您可以使用以下内容:

local http = require("socket.http")
local response, err = http.request("url to some Lua code")
if not response then error(err) end
local f, err = (loadstring or load)(response)
if not f then error(err) end
print("done with "..response)
-- make sure you read on (in)security implications of running remote code
-- f() -- call the function based on the remote code

您可能需要使用sandboxing