Vai all’articolo
NeuraCoreWiki utente
← Torna al capitolo
Python integrato

Dieci script, e quali sono in esecuzione

Un avatar può tenere dieci script. Ciascuno ha un nome e un numero, ciascuno ha il proprio output, e ciascuno può partire da solo.

Scegliere quale stai guardando

L’elenco in cima al Python Runner contiene tutti gli script di questo avatar. Sceglierne uno mostra il suo codice e il suo output, e non cambia nient’altro: ogni altro script in esecuzione continua a girare e a raccogliere il proprio output mentre guardi questo.

Aggiungi script ne crea uno dal modello. Elimina toglie quello a schermo e chiede prima, perché il suo codice se ne va con lui.

Nomi e numeri

Ogni script ha un nome che scegli tu e un numero che gli dà NeuraCore. Il nome è per te; il numero è quello che usano i comandi e la cronologia.

Un numero non viene mai dato a un secondo script. Elimina lo script 2 e il prossimo che aggiungi è il 4, non il 2: numeri che scalassero dopo un’eliminazione farebbero sì che il comando per eseguire lo script 4 un giorno ne avvii un altro, senza che nulla te lo dica.

Priorità di avvio

La priorità decide l’ordine quando più script partono nello stesso momento: il numero più basso per primo. Quando ne parte uno solo non fa nulla.

Poi girano uno accanto all’altro. La priorità è l’ordine di avvio e non una coda: uno script che cicla all’infinito non trattiene quelli dopo di lui.

Partire da solo

Spunta «avviarlo automaticamente appena l’avatar è in linea» e quello script parte da sé a ogni connessione di quell’avatar, in ordine di priorità con gli altri spuntati. All’inizio è vuota su ogni script.

L’altra metà: ogni script in esecuzione si ferma quando il suo avatar va offline. Uno script il cui avatar se n’è andato può solo essere rifiutato, e lasciarlo girare riempirebbe la cronologia di fallimenti che nessuno ha chiesto.

Avviarlo e fermarlo

Run avvia lo script a schermo e Stop lo termina. Uno script già in esecuzione viene lasciato stare invece di essere avviato una seconda volta, quindi premere Run di nuovo è innocuo e non fa nulla.

Stop raggiunge sia uno script che aspetta sia uno che cicla: viene interrotto dov’è. Se preferisci che finisca con ordine, faglielo chiedere.

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 risponde vero appena qualcuno ha chiesto a questo script di fermarsi.
  • Controllarlo a ogni giro del ciclo lascia che lo script finisca in un punto che hai scelto tu.
  • Uno script che non controlla mai viene fermato lo stesso. Questo decide solo dove.

Leggere la libreria da uno script

Uno script vede lo stesso elenco che vedi nel menu a tendina.

for script in avatar.list_scripts():
    print(script["id"], script["name"], script["priority"], script["running"])
  • Ogni voce porta il numero dello script, il nome, la priorità, se parte da solo e se è in esecuzione adesso.

Uno script che ne avvia un altro

Uno script può avviare e fermare gli altri, per numero o per nome.

print(avatar.run_script("Greeter"))
print(avatar.kill_script(2))
  • run_script risponde started, oppure already_running, che non è un errore e vuol dire quello che dice.
  • kill_script risponde killed, oppure not_running.
  • Run Script all’inizio è disattivata in Action Permissions, perché avviare uno script non è una capacità ma tutte quelle che le sue righe raggiungono. Attivala quando vuoi che uno script, l’IA o un messaggio possano avviarne uno.

Avviarne uno per messaggio

Il Master può mandare run seguito dal numero o dal nome di uno script, e kill allo stesso modo. L’avatar risponde se l’ha avviato, se era già in esecuzione, se l’ha fermato, o se non era in esecuzione.

Un residente autorizzato può fare lo stesso, ma solo per uno script la cui casella «i residenti autorizzati possono avviarlo via IM» è spuntata. All’inizio è vuota su ogni script, e conviene lasciarla così per tutto ciò di cui non daresti le chiavi: uno script non è un’azione, è tutto quello che fanno le sue righe.