OpenSim · ZoneNations

Documentazione OSSL

OSSL (OpenSimulator Scripting Language) estende LSL con funzioni os* e comportamenti specifici della grid. ZoneNations gira su OpenSimulator: alcune funzioni richiedono abilitazione a livello di regione. Questa pagina è la reference ufficiale sul sito.

Cos'è OSSL

LSL + estensioni grid

OSSL mantiene compatibilità LSL e aggiunge API per teleport tra regioni, NPC, SQL (dove abilitato), debug simulatore, profili avatar estesi. Non tutte le regioni pubbliche abilitano tutte le OSSL: verifica con il proprietario o usa fallback LSL.
Quando usare OSSL
Teleport tra regioni, NPC, integrazione HTTP con backend ZoneNations, strumenti di debug per builder, effetti non coperti da ll* standard.
Quando restare su LSL puro
Oggetti vendibili NoModify, giochi portabili, script che devono funzionare ovunque sulla grid senza configurazione regione.
Errore "Function not found"
La funzione os* non è abilitata su quella regione. Contatta supporto o usa variante LSL. Non includere OSSL obbligatorio in prodotti senza avviso.

ZoneNations server-authoritative

OSSL esegue sul simulatore come LSL. Client web, Firestorm e WebXR vedono lo stesso risultato. Non implementare logica critica solo lato viewer.

Funzioni os*

Catalogo OSSL ZoneNations

Elenco delle estensioni più usate su grid OpenSim. Disponibilità può variare per regione sandbox vs land privata.
osTeleportAgent(key agent, string region, vector pos, rotation rot)
Teleporta un avatar in un'altra regione della grid. region = nome esatto. Usare per hub, giochi, showroom. Richiede OSSL teleport abilitato.
osTeleportOwner(string region, vector pos, rotation rot)
Teleport del proprietario dello script. Utile per oggetti di servizio su land del creator.
osGetAgents(integer range)
Lista key avatar nel raggio dalla posizione dello script. Alternativa a sensor per conteggi o liste.
osNoticeDebug(string message)
Log lato simulatore visibile agli admin regione. Solo debug — rimuovere in produzione pubblica.
osNpcCreate / osNpcRemove / osNpcMoveToTarget
API NPC persistenti. Parametri nome, appearance, posizione. Uso avanzato: academy, fiere, popolamento scena.
osSetRegionWaterHeight(float height)
Modifica altezza acqua regione (permessi estate). Effetti eventi e installazioni artistiche.
osSetDynamicPathfindingCharacter / osNpc* pathfinding
Pathfinding NPC dove abilitato dal motore regione. Verificare build OpenSim regione.
llHttpRequest / llHTTPRequest (Mono)
HTTP outbound verso API REST ZoneNations, marketplace, backend custom. Risposta in http_response. Usare VERIFY_CERT in produzione.
osGetAvatarList() / osGetAvatarProfile
Profilo e presenza avatar estesa rispetto a llGetAgentInfo. Privacy: non esporre dati in oggetti pubblici NoModify.
osMessageObject(key uuid, string message)
Invia stringa a script in oggetto specifico via UUID. Protocollo inter-object su stessa regione.

Esempi OSSL

Codice pronto da testare

OSSL
Teleport tra regioni
// osTeleportAgent — teleport controllato (OSSL, regione abilitata)
default
{
    touch_start(integer n)
    {
        key av = llDetectedKey(0);
        osTeleportAgent(av, "NomeRegione", <128,128,30>, <0,0,0,1>);
    }
}
OSSL
NPC (avanzato)
// osNpcCreate — NPC persistente (OSSL avanzato)
// Richiede permessi regione e OSSL abilitato.
default
{
    state_entry()
    {
        osNpcCreate("MyNpc", "NP", <10,10,25>, ZERO_ROTATION);
    }
}
Prima di usare NPC in produzione, verifica quota regione e impatto prestazioni. Preferisci NPC statici o pochi agenti pathfinding in eventi.

LSL vs OSSL

Differenze pratiche

LSL puro: massima compatibilità su tutte le regioni e oggetti vendibili. OSSL: legato alla configurazione OpenSim della regione. Documenta nel README del prodotto quali funzioni os* servono.
Posso mixare LSL e OSSL nello stesso script?
Sì. Il compilatore accetta entrambi. Usa #ifdef-style manuale: commenta blocchi OSSL e fornisci fallback LSL per regioni restrittive.
Come chiedo abilitazione OSSL sulla mia land?
Apri ticket supporto ZoneNations indicando regione, funzioni os* necessarie e caso d'uso (evento, academy, showroom).
ZoneVerse / WebXR legge gli script OSSL?
Il client legge lo stato risultante dal simulatore. La logica OSSL resta server-side: comportamento coerente per tutti i client collegati.

Documentazione completa sul sito

LSL per le basi, OSSL per spingere la grid ZoneNations. Nessun link esterno necessario: reference, guida pratica ed esempi restano su ZoneNations.