Ir al artículo
NeuraCoreWiki de usuario
← Volver al capítulo
Python integrado

Diez scripts, y cuáles se ejecutan

Un avatar puede guardar diez scripts. Cada uno tiene un nombre y un número, cada uno tiene su propia salida, y cada uno puede arrancar solo.

Elegir cuál estás mirando

La lista desplegable de arriba del Python Runner contiene todos los scripts de este avatar. Elegir uno muestra su código y su salida, y no cambia nada más: los demás scripts en ejecución siguen ejecutándose y recogiendo su propia salida mientras miras este.

Añadir script crea uno a partir de la plantilla. Eliminar quita el que está en pantalla y pregunta antes, porque su código se va con él.

Nombres y números

Cada script tiene un nombre que eliges tú y un número que le da NeuraCore. El nombre es para ti; el número es lo que usan los comandos y el historial.

Un número nunca se le da a un segundo script. Elimina el script 2 y el siguiente que añadas será el 4, no el 2: unos números que se corrieran tras una eliminación harían que el comando para ejecutar el script 4 arrancara otro script un buen día, sin que nada te lo dijera.

Prioridad de arranque

La prioridad decide el orden cuando varios scripts arrancan a la vez: el número más bajo primero. Cuando solo arranca uno, no hace nada.

Luego se ejecutan a la vez. La prioridad es el orden de arranque y no una cola: un script que se repite sin fin no retiene a los siguientes.

Arrancar solo

Marca «arrancarlo automáticamente en cuanto el avatar esté en línea» y ese script arranca por su cuenta cada vez que ese avatar se conecta, en orden de prioridad con los demás marcados. Empieza sin marcar en todos los scripts.

La otra mitad: todo script en ejecución se detiene cuando su avatar se desconecta. Un script cuyo avatar se ha ido solo puede ser rechazado, y dejarlo en marcha llenaría el historial de fallos que nadie pidió.

Ejecutarlo y detenerlo

Run arranca el script en pantalla y Stop lo termina. Un script ya en ejecución se deja como está en vez de arrancarse dos veces, así que volver a pulsar Run es inofensivo y no hace nada.

Stop alcanza igual a un script que espera y a uno que se repite: se interrumpe donde esté. Si prefieres que termine con orden, haz que pregunte.

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 responde verdadero en cuanto alguien ha pedido que este script se detenga.
  • Comprobarlo en cada vuelta del bucle deja que el script termine en un punto que has elegido.
  • Un script que nunca lo comprueba se detiene igualmente. Esto solo decide dónde.

Leer la biblioteca desde un script

Un script ve la misma lista que el desplegable.

for script in avatar.list_scripts():
    print(script["id"], script["name"], script["priority"], script["running"])
  • Cada entrada lleva el número del script, su nombre, su prioridad, si arranca solo y si está en ejecución ahora.

Un script que arranca otro

Un script puede arrancar y detener a los demás, por número o por nombre.

print(avatar.run_script("Greeter"))
print(avatar.kill_script(2))
  • run_script responde started, o already_running, que no es un error y significa lo que dice.
  • kill_script responde killed, o not_running.
  • Run Script está desactivado al principio en Action Permissions, porque arrancar un script no es una capacidad sino todas las que alcanzan sus líneas. Actívalo cuando quieras que un script, la IA o un mensaje instantáneo puedan arrancar uno.

Arrancar uno por mensaje instantáneo

El Master puede enviar run seguido del número o el nombre de un script, y kill igual. El avatar responde si lo arrancó, si ya estaba en ejecución, si lo detuvo, o si no estaba en ejecución.

Un residente autorizado puede hacer lo mismo, pero solo con un script cuya casilla «los residentes autorizados pueden ejecutarlo por MI» esté marcada. Empieza vacía en todos los scripts, y conviene dejarla así para todo aquello cuyas llaves no darías: un script no es una acción, es todo lo que hacen sus líneas.