1

わかりました。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 スクリプトの raw 形式の出力を提供する他の場所に基づくリポジトリのインストーラー パッケージのように機能するプロジェクトに取り組んでおり、そのアイデアを使用して、スクリプトを実行するように要求します。外部的に。そのため、プログラムの「初回実行」バージョンを提供すると、別の lua スクリプトを呼び出してそのスクリプトをインストールする lua スクリプトが呼び出され、終了します。

これはマインクラフト用です。念のため。ComputerCraft のおかげで Lua に興味を持ちましたが、とにかく、私が理解しようとしていることの要点を理解していただければ幸いです。うまくいけば、それが実行可能であり、そうでない場合は、何か他のことを理解する必要があります.

4

1 に答える 1

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

おそらくサンドボックスを使用する必要があります。

于 2013-02-04T18:07:33.503 に答える