2つの拠点同士にある複数のコンピューターで通信したいけど、エンダーパールが足りない!
そんな時に活躍するかもしれない微妙なAPIを作ってみました。
10Download達成しました!ありがとう!
※os.pullEventRawを書き換えます。同じ事をするプログラムと一緒に実行しないでください。
あと、更新時に上位互換となるものはLN.で始まる関数のみです。
それ以外の関数は予告なく変更されます。
要項
このAPIでは、コンピューター間の通信にLANとWANの概念を与え、OSI参照レベルの第一~第三層相当の機能を与えます。
既存のRednet回線とは普通の状況では干渉しません。(65530台目のコンピューターが存在すると干渉する可能性があります)
また、第三層までなので通信の品質などは保証されません。つまり途中で送ったデータが何かしらの理由で消滅しても検知できません。
既存のRednet回線とは普通の状況では干渉しません。(65530台目のコンピューターが存在すると干渉する可能性があります)
また、第三層までなので通信の品質などは保証されません。つまり途中で送ったデータが何かしらの理由で消滅しても検知できません。
追加される関数
■LN.init(side)
sideで指定した方向のモデムを有効化します。使わなくても必要になると適当にモデムを有効化するので使わなくてもいいです。
ただし、その場合LANネットワークへの接続処理が行われる前に転送しようとするので一回目は失敗します。
戻り値:成功すれば有効化したモデムの向き、失敗時nilかfalse
■LN.receive(timeout)
timeoutで指定した秒数の間、自分宛のデータが届くまで待ちます。省略時は3秒。
戻り値:送信元のcomputerID、受信したデータ、受信に使ったモデムの向き
ただし、指定時間内に何も受信しなければnilを返します
■LN.send(id, data, side)
idで指定したコンピューターsideで指定した向きのモデムを使ってdataの文字列を送ります。
sideは省略可能、省略時は適当についてるモデムを使います。
戻り値:成功時true
ほかにもわんさかあるけど基本はこれで
sideで指定した方向のモデムを有効化します。使わなくても必要になると適当にモデムを有効化するので使わなくてもいいです。
ただし、その場合LANネットワークへの接続処理が行われる前に転送しようとするので一回目は失敗します。
戻り値:成功すれば有効化したモデムの向き、失敗時nilかfalse
■LN.receive(timeout)
timeoutで指定した秒数の間、自分宛のデータが届くまで待ちます。省略時は3秒。
戻り値:送信元のcomputerID、受信したデータ、受信に使ったモデムの向き
ただし、指定時間内に何も受信しなければnilを返します
■LN.send(id, data, side)
idで指定したコンピューターsideで指定した向きのモデムを使ってdataの文字列を送ります。
sideは省略可能、省略時は適当についてるモデムを使います。
戻り値:成功時true
ほかにもわんさかあるけど基本はこれで
インストール方法
※CC 1.53くらい(未テスト未確認ノンサポート動作報告募集中)
①ZIPファイルをダウンロード、展開する
②「OSI/assets/computercraft/lua/rom/apis」の中にある4つのファイルを「ComputerCraft1.53.zip/lua/rom/apis/」に入れておく
③「OSI/assets/computercraft/lua/rom/programs」の中にある2つのファイルを「ComputerCraft1.53.zip/lua/rom/programs/」に入れておく
※CC 1.55以降
①Minecraftを起動する
②ゲーム内オプションから「resourcepacks」フォルダを開きそこにZIPを入れる
③Minecraftを再起動する
クライアントのセットアップ方法
ルーターのLAN側につながるようにモデムが接続されていれば、どのような状態でも構いません。勝手にopenしてくれます。
ワイヤレスモデムならどっかの面に付いてれば認識します。
ワイヤレスモデムならどっかの面に付いてれば認識します。
ルーターのセットアップ方法
上の図の通り、コンピューターの左右にモデムをつけた後、コンピューターを起動後、「router」と入力します。ただしWAN側に何もないとエラーが発生します。
停止する時はCTRL+T長押し後rebootかshutdownしてください。rebootなしで作業をしようとすると必ず何か問題が発生するはずです。
それぞれ、有線無線でなければならない訳ではありませんがLANは有線、WANは無線を使うことをおすすめします。
また、LAN側が存在しない場合はWAN側をLAN接続にも使用します。無線モデムであればいわゆるアクセスポイントのように扱えます。
タートルは何も考えなくても勝手にルーター化できます。
ルーターが複数ある場合、それぞれのネットワークを共有します。なのでルーターを中継地点のように使うとかなり更に遠くと通信できます。
※chunk読み込み範囲外に出て凍結されたりすると中継、アクセスポイント、LAN制御などのすべての機能が停止します。
今後の妄想
・OSI参照モデルをデタラメに模して作っているので、四層目以降も作りたいなぁ・・・
・赤石遠隔操作みたいなサンプルプログラムをつけたほうがいいよなぁ・・・
・やっぱりニコ動とかで宣伝しないと・・・
・赤石遠隔操作みたいなサンプルプログラムをつけたほうがいいよなぁ・・・
・やっぱりニコ動とかで宣伝しないと・・・
※「modpackに混ぜたい」「自作プログラムで利用するので一緒にしたい」など何かしら再配布したい場合は利用者にこのページのアドレスをわかりやすく提示してください。
※動画やブログなどで紹介する分にはご自由にどうぞ。むしろどんどんやってください。
※サポートは気まぐれに行います。