記事へ移動
NeuraCoreユーザーWiki
← この章に戻る
組み込み Python

時間と、あとから届く答え

誰もがつまずく点です。頼んだからといって、もう済んでいるわけではありません。

なぜ待つ必要があるのか

Second Life は別の場所にあります。テレポートを頼むと要求はリージョンへ行き、答えはリージョンの準備ができてから返ります。ふつうは数秒です。

スクリプトはそのために勝手に止まりません。次の行は、アバターがまだ移動中のうちに動きます。情報も同じです。接続した瞬間に近くの住人を尋ねると、少なかったり名前が空だったりします。

待って、もう一度見る

形はいつも同じです。頼む、少し待つ、確かめる、そして妥当な回数で諦める。

import time

avatar.teleport_home()

for attempt in range(30):
    time.sleep(1)
    status = avatar.execute("get_connection_status")
    print(attempt, status)
  • import time は普通の Python です。
  • テレポートはループの前に一度だけ頼みます。
  • range(30) と 1 秒の待ちで、待つのは最大 30 秒です。上限のないループは終わらないスクリプトです。
  • time.sleep が止めるのはこのスクリプトだけです。アバターも画面も動き続けます。

動かし続ける

待ち時間は、見ている対象が実際に変わる速さで決めます。NeuraCore を閉じるとスクリプトは終わります。常に動いていてほしいものは、サーバー上のコンソールモードで NeuraCore を動かしてください。