参考資料:
執筆時のバージョン:
- ComputerCraft 1.56 for Minecraft 1.6.2
OS API
Computer/Turtleのオペレーティングシステムに関するAPI。
version
assets\computercraft\lua\bios.lua で定義
- os.version()
- コンピュータやタートルのOSのバージョンを取得する
- 戻り値:文字列型
computerID
dan200.computer.core.apis.OSAPI で定義
- os.computerID()
- コンピュータやタートルのIDを取得する
- 戻り値:数値型
getComputerID
dan200.computer.core.apis.OSAPI で定義
- os.getComputerID()
- コンピュータやタートルのIDを取得する
- 戻り値:数値型
os.computerID関数と同じ。
computerLabel
dan200.computer.core.apis.OSAPI で定義
- os.computerLabel()
- コンピュータやタートルのラベルを取得する
- 戻り値:文字列型
getComputerLabel
dan200.computer.core.apis.OSAPI で定義
- os.getComputerLabel()
- コンピュータやタートルのラベルを取得する
- 戻り値:文字列型
os.computerLabe関数と同じ。
setComputerLabel
dan200.computer.core.apis.OSAPI で定義
- os.setComputerLabel( label )
- コンピュータやタートルのラベルをlabel(文字列)に設定する
- 戻り値:nil
pullEvent
assets\computercraft\lua\bios.lua で定義
- os.pullEvent( [ filter ] )
- イベントが発生するまで待ち、発生したイベントを返す。filter(文字列)にイベント名を指定すると、そのイベントが発生したときのみ返る
- 戻り値:文字列型, ... 。一番目は発生イベント名(文字列)、その後は発生イベントごとに決まっている個数(最大5個)、型のパラメータ
内部的にはos.pullEventRaw関数を呼び出している。os.pullEventRaw関数の説明も参照。
強制中断(Ctrl+T長押し)によってterminateイベントは発生せず、プログラムは即終了する。
terminateイベントを取得し、独自の中断処理を行う場合はos.pullEventRaw関数を使う。
pullEventRaw
assets\computercraft\lua\bios.lua で定義
- os.pullEventRaw( [ filter ] )
- イベントが発生するまで待ち、発生したイベントを返す。filter(文字列)にイベント名を指定すると、そのイベントが発生したときのみ返る
- 戻り値:文字列型, ... 。一番目は発生イベント名(文字列)、その後は発生イベントごとに特定の個数(最大5個)、型のパラメータ
「Ctrl+T長押し」で発生するterminateイベントも取得できる。その後の処理はプログラム側に任せられる。
発生するイベントは
イベント一覧を参照。
+
|
filterを設定した場合、filterのイベント発生以前に発生した他のイベントは破棄される。 |
filterを設定した場合、filterのイベント発生以前に発生した他のイベントは破棄される。例えば、イベント駆動形式のスクリプトでは、イベントループ中にsleep()を入れるとイベントを取り逃す可能性がある。これは、sleep関数がos.startTimer関数とos.pullEvent("timer")関数で実装されているためで、sleep関数実行中に発生した他のイベントは破棄されてしまうからである。イベントには文字入力時のcherイベントとkeyイベントや、Rednet通信受信時のmodem_messageイベントとrednet_messageイベントのように一つの状況で複数のイベントが発生するものもあり、そのような場合に一回目のpullEvent関数の後にsleep関数や他のイベントをfilterにしたos.pullEvent関数を呼び出すと、捕捉できなかった方のイベントが破棄されてしまう。
|
queueEvent
dan200.computer.core.apis.OSAPI で定義
- os.queueEvent( event , ... )
- 任意のイベントを発生させる。event(文字列)で発生させるイベント名を指定する。2番目以降の引数でイベントのパラメータ(0~5個)を指定する
- 戻り値:nil
clock
dan200.computer.core.apis.OSAPI で定義
- os.clock()
- コンピュータやタートルの稼働時間を取得する
- 戻り値:数値型。稼働時間を表す実数(秒)
startTimer
dan200.computer.core.apis.OSAPI で定義
- os.startTimer( timeout )
- 実数timeout(数値)秒後にtimerイベントを発生させる
- 戻り値:数値型。タイマーID
戻り値のタイマーIDとtimerイベント時に返るタイマーIDを比較することによって、どのタイマーによるtimerイベントなのかが判別可能。
一度timerイベントを発生させたタイマーは解除される。
sleep
assets\computercraft\lua\bios.lua で定義
- os.sleep( timeout )
sleep( timeout )
- コンピュータやタートルの処理をtimeout(数値)秒間停止する
- 戻り値:nil
プログラムを途中で一定時間停止させるのに使う。
一般に省略形である sleep( timeout ) の方が使われる。
内部的にはstartTimer関数とpullEvent関数で実装されている。そのためtimeoutに0を指定しても最低1tick(0.05秒)間は停止する。
イベントシステムを使って実装されているため、スリープ中に発生した他のイベントは破棄される。
day
dan200.computer.core.apis.OSAPI で定義
【1.48-】
- os.day()
- 現在のワールドのゲーム内での経過日数を取得する
- 戻り値:数値型。ゲーム内での経過日数を表す整数(日)
time
dan200.computer.core.apis.OSAPI で定義
- os.time()
- Minecraftのゲーム内時間を取得する
- 戻り値:数値型。ゲーム内時間を表す実数(時)
例:
local hour, min = math.modf( os.time() )
min = math.floor( min * 60 )
print("The time is " .. hour .. ":" .. min)
ゲーム内時刻を取得し、「時:分」の形式で表示する。
なお、「時:分」形式への変換に
Textutils APIを使うと以下のようになる。
local time = os.time()
time = textutils.formatTime( time, true )
print("The time is " .. time)
setAlarm
dan200.computer.core.apis.OSAPI で定義
- os.setAlarm( time )
- Minecraftのゲーム時間でtime(数値)時にalarmイベントを発生させる
- 戻り値:数値型。アラームID
戻り値のアラームIDとalarmイベント時に返るアラームIDを比較することによって、どのアラームによるalarmイベントなのかが判別可能。
一度alarmイベントを発生させたアラームは解除される。
shutdown
assets\computercraft\lua\bios.lua で定義
- os.shutdown()
- コンピュータやタートルをシャットダウンする
- 戻り値:nil
reboot
assets\computercraft\lua\bios.lua で定義
- os.reboot()
- コンピュータやタートルを再起動する
- 戻り値:nil
run
assets\computercraft\lua\bios.lua で定義
- os.run( env , path , ... )
- パスpath(文字列)のプログラム(絶対パス)を実行する。env(テーブル)でプログラムのグローバル変数の初期値を指定できる。3番目以降の引数でプログラムに渡されるパラメータを指定できる
- 戻り値:ブーリアン型。成功したらture、失敗したらfalse
loadAPI
assets\computercraft\lua\bios.lua で定義
- os.loadAPI( name )
- プログラムname(文字列)をAPIに追加する。プログラムファイル名がAPI名になる
- 戻り値:ブーリアン型。APIの追加に成功したらtrue、失敗したらfalse。
プログラムファイル内の関数に対して、プログラムファイル名.foo() のようにアクセスできるようになる。
【1.4】指定プログラムが存在せず読み込みに失敗した場合でもAPI名が登録されてしまう不具合が修正された。
unloadAPI
assets\computercraft\lua\bios.lua で定義
- os.unloadAPI( name )
- name(文字列)をAPIから外す
- 戻り値:nil
イベント一覧
pullEventおよびpullEventRawで捕捉できるイベント。
戻り値 |
解説 |
1 |
2 |
3 |
4 |
5 |
6 |
"alarm" |
アラームID(数値) |
nil |
nil |
nil |
nil |
アラームの指定時刻になった |
"char" |
文字(文字列) |
nil |
nil |
nil |
nil |
文字が入力された |
"disk" |
方向(文字列) 【1.51-】名前(文字列) |
nil |
nil |
nil |
nil |
ドライブにアイテムがセットされた |
"disk_eject" |
方向(文字列) 【1.51-】名前(文字列) |
nil |
nil |
nil |
nil |
ドライブからアイテムが取り出された |
"http_failure" |
URL(文字列) |
nil |
nil |
nil |
nil |
HTTPリクエスト失敗 |
"http_success" |
URL(文字列) |
ファイルハンドル(テーブル) |
nil |
nil |
nil |
HTTPリクエスト成功 |
"key" |
キーコード(数値) |
nil |
nil |
nil |
nil |
キーが押された |
"modem_message" |
方向(文字列) 【1.51-】名前(文字列) |
受信チャンネル(数値) |
送信者チャンネル(数値) |
メッセージ(文字列) |
距離(数値) |
【1.5-】通信を受信した。 (受信時には常に発生) |
"monitor_resize" |
名前(文字列) |
nil |
nil |
nil |
nil |
【1.51-】モニタのサイズが変更された |
"monitor_touch" |
方向(文字列) 【1.51-】名前(文字列) |
タッチ位置X(数値) |
タッチ位置Y(数値) |
nil |
nil |
【1.48-】Advanced Monitor 画面がタッチされた |
"mouse_click" |
ボタン(数値) |
マウス位置X(数値) |
マウス位置Y(数値) |
nil |
nil |
【1.45-】Advanced Computer/Turtle GUI画面がクリックされた |
"mouse_drag" |
ボタン(数値) |
マウス位置X(数値) |
マウス位置Y(数値) |
nil |
nil |
【1.45-】Advanced Computer/Turtle GUI画面上でドラッグされた |
"mouse_scroll" |
スクロール方向(数値) |
マウス位置X(数値) |
マウス位置Y(数値) |
nil |
nil |
【1.45-】Advanced Computer/Turtle GUI画面上でホイールが動かされた。スクロール方向は奥・上が負、手前・下が正 |
"peripheral" |
方向(文字列) 【1.51-】名前(文字列) |
nil |
nil |
nil |
nil |
周辺機器が設置された |
"peripheral_detach" |
方向(文字列) 【1.51-】名前(文字列) |
nil |
nil |
nil |
nil |
周辺機器が外された |
"rednet_message" |
送信者ID(数値) 【1.5-】送信者チャンネル(数値) |
メッセージ(文字列) |
距離(数値) |
nil |
nil |
通信を受信した。 (受信チャンネル=受信者IDまたはbroadcastのときのみ発生) |
"redstone" |
nil |
nil |
nil |
nil |
nil |
レッドストーン入力が変化した |
"timer" |
タイマーID(数値) |
nil |
nil |
nil |
nil |
タイマーの指定時間が経過した |
"turtle_inventory" |
nil |
nil |
nil |
nil |
nil |
【1.55-】Turtle インベントリが変化した |
"turtle_response" |
コマンドID(数値) |
コマンドの成否(ブーリアン) |
【1.56-】エラー内容(文字列) |
nil |
nil |
Turtle カスタムコマンドが実行された |
上記に加えてpullEventRawで捕捉できるイベント。
戻り値 |
解説 |
1 |
2 |
3 |
4 |
5 |
6 |
"terminate" |
nil |
nil |
nil |
nil |
nil |
Ctrl+Tが長押しされた |
最終更新:2014年01月01日 17:34