0

computercraft を使用して Tekkit でコンピューター システム/ネットワークを作成しようとしています。

Computecraft は、Minecraft/Tekkit およびその他の変更パッケージ内で実行される Lua ベースの変更です。

基本的に、私は現在これを実行するためにワイヤレスルーターを使用しています:

rednet.open('top') -- Open Connection to the wireless router
print ("test")
input = read()
rednet.receive()  -- Listen for messages send/broadcasted 

if message then
 print (message)
end

すべてのシステムに次のような変更を加えようとしています:

rednet.open ('top')
 -- Do all normal stuff

rednet.receive()
if message == "Lock202" then 
 os.pullEvent = os.pullEventRaw
 term.clear()
 term.setCursorPos(1,1)
 print ("Alert In Progress, Terminal Locked")
end

すべての通常のことを行うことで、ユーザーがコンピューターの機能をナビゲートして使用できるようにしたいと考えています。しかし、呼び出すrednet.receive()とフリーズして着信メッセージを待ちます。

これをバックグラウンドで実行し、メッセージが受信されたときにのみ動作するようにします。

ドキュメント、ヘルプサイトを見てみました。利用可能なLua Codersの範囲のため、この質問をSOに持ち込むと考えました。

4

3 に答える 3

0

コマンド rednet.receive() は、そのパラメーターに引数を持つことができ、それは「タイムアウト」です。

これは秒単位で測定されます。また、4.50、1.23 などの float (10 進数) です。等

これは、その期間受信することを意味します。

あなたが望むことを達成するための良い方法は、別のコンピューターに常にメッセージを受信させ、次に、モジュラー受信を行いたいコンピューターにレッドストーン信号を与えることです。

function Check()
  If rs.getInput("back") then
     local id, message = rednet.receive(5)
     print("Receiving Message")
  end
end

他のコンピューターはこれを行っています:

computerid = 50

id, message = rednet.receive()
  rs.setOutput("back",true)
  sleep(1)
  rednet.send(computerid, message)
  rs.setOutput("back",false)

computerid は、実行したい元のコンピューターの ID と同じになります。また、コードの実行中に Check() 関数を定期的に使用する必要があります。メッセージが受信されていない限り、コンピューターには影響しません。引数。

これが役に立ったことを願っています

--エウィルドーエ

于 2013-05-10T08:13:32.120 に答える