時間と、あとから届く答え
誰もがつまずく点です。頼んだからといって、もう済んでいるわけではありません。
なぜ待つ必要があるのか
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 を動かしてください。