Aller à l’article
NeuraCoreWiki utilisateur
← Retour au chapitre
Python intégré

Dix scripts, et lesquels tournent

Un avatar peut garder dix scripts. Chacun a un nom et un numéro, chacun a sa propre sortie, et chacun peut démarrer tout seul.

Choisir celui que vous regardez

La liste déroulante en haut du Python Runner contient tous les scripts de cet avatar. En choisir un affiche son code et sa sortie, et ne change rien d’autre : tous les autres scripts en cours continuent de tourner et de collecter leur propre sortie pendant que vous regardez celui-ci.

Ajouter un script en crée un à partir du modèle. Supprimer retire celui affiché, après confirmation, car son code part avec lui.

Noms et numéros

Chaque script a un nom que vous choisissez et un numéro que NeuraCore lui donne. Le nom est pour vous, le numéro sert aux commandes et aux journaux.

Un numéro n’est jamais donné à un second script. Supprimez le script 2 et le prochain ajout sera le 4, pas le 2 : des numéros qui se décaleraient après une suppression feraient que la commande lançant le script 4 démarrerait un jour un autre script, sans que rien ne vous le dise.

Priorité de démarrage

La priorité décide de l’ordre quand plusieurs scripts démarrent au même moment : le plus petit numéro d’abord. Quand un seul script démarre, elle ne fait rien.

Ils tournent ensuite côte à côte. La priorité est l’ordre de lancement et non une file d’attente : un script qui boucle indéfiniment ne bloque pas les suivants.

Démarrer tout seul

Cochez « le démarrer automatiquement dès que l’avatar est en ligne » et ce script part de lui-même à chaque connexion de cet avatar, dans l’ordre de priorité avec les autres cochés. La case est vide au départ sur tous les scripts.

L’autre moitié de la règle : tout script en cours s’arrête quand son avatar se déconnecte. Un script dont l’avatar est parti ne peut plus qu’être refusé, et le laisser tourner remplirait l’historique d’échecs que personne n’a demandés.

Le lancer et l’arrêter

Run lance le script affiché et Stop y met fin. Un script déjà en cours est laissé tel quel plutôt que lancé deux fois : recliquer Run ne fait rien et ne risque rien.

Stop atteint aussi bien un script qui attend qu’un script qui boucle : il est interrompu là où il en est. Si vous préférez qu’il finisse proprement, faites-lui poser la question.

import time

while not avatar.stop_requested():
    for person in avatar.get_nearby_avatars():
        print(person["name"])
    time.sleep(30)

print("Asked to stop, so stopping.")
  • stop_requested répond vrai dès que quelqu’un a demandé l’arrêt de ce script.
  • Le vérifier à chaque tour de boucle laisse le script se terminer à un endroit que vous avez choisi.
  • Un script qui ne vérifie jamais est arrêté quand même. Cela décide seulement où.

Lire la bibliothèque depuis un script

Un script voit la même liste que la liste déroulante.

for script in avatar.list_scripts():
    print(script["id"], script["name"], script["priority"], script["running"])
  • Chaque entrée porte le numéro du script, son nom, sa priorité, s’il démarre tout seul et s’il tourne en ce moment.

Un script qui en lance un autre

Un script peut lancer et arrêter les autres, par numéro ou par nom.

print(avatar.run_script("Greeter"))
print(avatar.kill_script(2))
  • run_script répond started, ou already_running, qui n’est pas une erreur et veut dire ce qu’il dit.
  • kill_script répond killed, ou not_running.
  • Run Script est désactivé au départ dans Action Permissions, car lancer un script n’est pas une capacité mais toutes celles que ses lignes atteignent. Activez-le quand vous voulez qu’un script, l’IA ou un IM puisse en lancer un.

En lancer un par message

Le Master peut envoyer run suivi du numéro ou du nom d’un script, et kill de la même façon. L’avatar répond s’il l’a lancé, s’il tournait déjà, s’il l’a arrêté, ou s’il ne tournait pas.

Un résident autorisé peut faire de même, mais seulement pour un script dont la case « les résidents autorisés peuvent le lancer par IM » est cochée. Elle est vide au départ sur tous les scripts, et il vaut mieux la laisser ainsi pour tout ce dont vous ne confieriez pas les clés : un script n’est pas une action, c’est tout ce que ses lignes font.