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.