IT UO Topic sound visual environment - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Sound e ambiente visivo

Home · C# · IDE · UO API · A–Z · Esempi · Lingue

Suoni, illuminazione, stagione ed effetti meteorologici del cliente.

Sezioni

Argomento Comandi e spiegazioni
Sound UO.Sound
PlayWav UO.PlayWav
Light UO.Light
Season UO.SetSeason
Weather Filter UO.FilterWeather

Tutti i comandi del tema

Ambiente

UO.Sound · UO.PlayWav · UO.Alarm · UO.Light · UO.SetSeason · UO.FilterWeather · UO.TicksAnim

Esempi sull'argomento

Ogni carta comando ha diversi scenari indipendenti: codice diretto, funzioni e classi. Di seguito sono selezionati brevi scenari; restrizioni e un'analisi completa sono nelle carte.

UO.PlayWav

Parametri, risultato e tutti gli scenari

UO.Print(UO.PlayWav("alert.wav"));

UO.Light

Parametri, risultato e tutti gli scenari

UO.Light();

Riferimento completo dei comandi


UO.Alarm

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.Alarm();

Stampa la parola Alarm nel syslog locale ClassicUO. Utilizzare come nota sul verificarsi di una condizione nello script.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Eseguire su una riga separata. Questo non è bool né la conferma che l'utente ha visto il messaggio.

Comportamento

  • Viene registrato solo il modulo UO.Alarm() senza parametri. Per il tuo testo, usa UO.Print(text).
  • Il comando non riproduce un suono, non lampeggia un'icona o attiva una finestra. Il messaggio rimane locale: non viene inviato alla chat del gioco.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.

UO.Print("Calling UO.Alarm");
UO.Alarm();

1. Segna il diario - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Non ci sono parametri; La parola Alarm appare nel registro di sistema.
UO.Alarm();

2. Avvisa quando la salute è bassa: funzione script

Parametri e flusso di esecuzione:

  • Alarm non ha un'opzione di testo. Life restituisce il numero HP; Print aggiunge una chiara descrizione del motivo.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Life() < 30))
    {
        UO.Alarm();
        UO.Print("Health is below 30");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Contrassegna risultato della ricerca - Classe di script

Parametri e flusso di esecuzione:

  • 0x0EED - tipo oro, -1 - qualsiasi colore, backpack - zaino. Alarm viene chiamato solo quando viene trovato serial; Non mettere in loop una chiamata del genere senza indugio.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var item = UO.FindType(0x0EED, -1, "backpack");
        if (Truth(item != ""))
        {
            UO.Alarm();
            UO.Print("Gold stack found: " + Convert.ToString(item));
        }
        else
        {
            UO.Print("No gold stack in the loaded backpack");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.Alarm() — UO.Alarm()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "alarm":

                    SystemMessage(arguments.Length > 0 ? Text(0) : "Alarm"); return InjectionValue.Unit;

UO.FilterWeather

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.FilterWeather();
void UO.FilterWeather(object? enabled);

Abilita o disabilita il filtro meteo del client.

Parametri

  • enabled — Valore opzionale: senza argomento, il filtro è attivato; 0 si spegne, l'int diverso da zero si accende.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Scrive il flag normalizzato nello stato di runtime e lo passa al gestore. Il filtro influisce sull'elaborazione del client; gli eventi del server e altre impostazioni del registro rimangono separati.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.

UO.Print("Calling UO.FilterWeather");
UO.FilterWeather();

1. Abilita senza argomento - script diretto

Parametri e flusso di esecuzione:

  • Un numero zero di argomenti significa includere, non leggere.
UO.FilterWeather();

2. Disattiva - funzione script

Parametri e flusso di esecuzione:

  • Un 0 esplicito disattiva il filtro client.
return  RunScenario();
 object? RunScenario()
{
    UO.FilterWeather(0);
    return null;
}

3. Attiva e disattiva - Classe di script

Parametri e flusso di esecuzione:

  • Il filtro si accende e ritorna chiaramente allo stato spento.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.FilterWeather(1);
        UO.FilterWeather(0);
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.FilterWeather() — UO.FilterWeather()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "filterweather": state.WeatherFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetWeatherFilter(state.WeatherFilter); break;

UO.FilterWeather(enabled) — UO.FilterWeather(Any)

Parametri: enabled (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "filterweather": state.WeatherFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetWeatherFilter(state.WeatherFilter); break;

UO.Light

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.Light();
void UO.Light(object? value);

Imposta localmente l'illuminazione generale del client.

Parametri

  • value — Intero opzionale: 0..30, limitato a questo intervallo. La forma senza argomenti utilizza 0; Questa è una scrittura, non una lettura.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ExecuteLegacyManualAlias passa Arg(0), dove l'argomento mancante è 0. SetLight assegna a Light.Overall e Light.RealOverall un valore in byte limitato.
  • Non modifica l'illuminazione degli altri giocatori e non lo richiede al server. Il seguente pacchetto di server di illuminazione può sostituire il valore.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.

UO.Print("Calling UO.Light");
UO.Light();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Imposta localmente l'illuminazione generale del client.
UO.Light();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteLegacyManualAlias passa Arg(0), dove l'argomento mancante è 0. SetLight assegna a Light.Overall e Light.RealOverall un valore in byte limitato.
return  RunScenario();
 object? RunScenario()
{
    UO.Light(15);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Non modifica l'illuminazione degli altri giocatori e non lo richiede al server. Il seguente pacchetto di server di illuminazione può sostituire il valore.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.Light(99);
        UO.Print("Light clamped to 30");
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.Light() — UO.Light()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "light": bridge.SetLight(Arg(0)); break;

UO.Light(value) — UO.Light(Any)

Parametri: value (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "light": bridge.SetLight(Arg(0)); break;

UO.PlayWav

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

int UO.PlayWav(object? file);

Riproduce un file audio locale.

Parametri

  • file: percorso del file audio. Il percorso assoluto viene preservato, il percorso relativo viene risolto da CUOEnviroment.ExecutablePath. L'estensione stessa non viene controllata: il file legge SoundEffect.FromStream.

Valore restituito

Flag numerico int: 1 - sound.Play() accettato, 0 - nessun file, riproduzione fallita o rilevato errore. Questa non è la fine della riproduzione.

Comportamento

  • Bridge apre il file per la lettura, decodifica SoundEffect.FromStream, memorizza i suoni ricevuti in un elenco limitato di _sounds ed elimina/elimina quelli vecchi quando viene raggiunto il limite.
  • Se un file/errore non esiste, viene visualizzato un messaggio, il risultato è 0. Il comando non attende la fine del suono e non trasferisce il file sul server.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.

var result = UO.PlayWav("alert.wav");
UO.Print("PlayWav: " + Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Riproduce un file audio locale.
UO.Print(UO.PlayWav("alert.wav"));

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Bridge apre il file per la lettura, decodifica SoundEffect.FromStream, memorizza i suoni ricevuti in un elenco limitato di _sounds ed elimina/elimina quelli vecchi quando viene raggiunto il limite.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.PlayWav("C:\\UO Sounds\\alert.wav"));
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Se un file/errore non esiste, viene visualizzato un messaggio, il risultato è 0. Il comando non attende la fine del suono e non trasferisce il file sul server.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var accepted = UO.PlayWav("alert.wav");
        if (Truth(accepted == 0))
        {
            UO.Print("Audio file could not be played");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.PlayWav(file) — UO.PlayWav(Any)

Parametri: file (Any/String)

Risultato: int / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "playwav": return new InjectionValue(bridge.PlayWav(Text(0)));

UO.PlayWav(file) — UO.PlayWav(String)

Parametri: file (Any/String)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int PlayWav(string file) => bridge.PlayWav(file);

UO.SetSeason

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SetSeason(object? season);

Cambia localmente la stagione visualizzata.

Parametri

  • season — int: 0..4; i valori inferiori a 0/sopra 4 sono limitati al confine più vicino. Il numero corrisponde all'enumerazione Season del cliente.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Bridge.SetSeason chiama _world.ChangeSeason((Season)clamp(season,0,4), -1). Questa è una visualizzazione del mondo del cliente e non una richiesta di cambiare la stagione del server.
  • I dati del server potrebbero successivamente cambiare nuovamente la stagione. Il comando non modifica la mappa, il meteo del server o la data del calendario.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.

UO.Print("Calling UO.SetSeason");
UO.SetSeason(0);

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Cambia localmente la stagione visualizzata.
UO.SetSeason(0);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Bridge.SetSeason chiama _world.ChangeSeason((Season)clamp(season,0,4), -1). Questa è una visualizzazione del mondo del cliente e non una richiesta di cambiare la stagione del server.
return  RunScenario();
 object? RunScenario()
{
    UO.SetSeason(4);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • I dati del server potrebbero successivamente cambiare nuovamente la stagione. Il comando non modifica la mappa, il meteo del server o la data del calendario.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.SetSeason(99);
        UO.Print("Season clamped to 4");
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SetSeason(season) — UO.SetSeason(Any)

Parametri: season (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "setseason": bridge.SetSeason(Arg(0)); break;

UO.Sound

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.Sound(object? soundId);

Riproduce l'audio su ID dalle risorse client.

Parametri

  • soundId - int ID risorsa suono UO; non il percorso verso WAV e non la durata.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ExecuteLegacyManualAlias chiama bridge.PlaySound, dove RequireGameView("PlaySound").Audio.PlaySound(suono) viene eseguito nel thread del gioco.
  • Richiede una finestra grafica aperta con audio. Un errore mancante GUI potrebbe terminare la chiamata; Questo comando void non restituisce un risultato di riproduzione. Per un file locale, utilizzare PlayWav.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.

UO.Print("Calling UO.Sound");
UO.Sound(0x0040);

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Riproduce l'audio su ID dalle risorse client.
UO.Sound(0x0040);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteLegacyManualAlias chiama bridge.PlaySound, dove RequireGameView("PlaySound").Audio.PlaySound(suono) viene eseguito nel thread del gioco.
return  RunScenario();
 object? RunScenario()
{
    var soundId = 0x0040;
    UO.Sound(soundId);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Richiede una finestra grafica aperta con audio. Un errore mancante GUI potrebbe terminare la chiamata; Questo comando Unit non restituisce un risultato di riproduzione. Per un file locale, utilizzare PlayWav.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.Sound(0x0040);
        UO.Wait(250);
        UO.Print("Sound request made");
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.Sound(soundId) — UO.Sound(Any)

Parametri: soundId (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "sound": bridge.PlaySound(Arg(0)); break;

UO.TicksAnim

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

int UO.TicksAnim();

Legge il contrassegno salvato TicksAnim.

Parametri

Non ci sono parametri.

Valore restituito

int: indica UO.Timer in decimi di secondo dall'inizio del runtime. 0 - la boa non è stata ancora posizionata oppure l'evento è avvenuto nel primo decimo di secondo; non sono i millisecondi o l'ora del calendario.

Comportamento

  • Restituisce il campo ticksAnim. Viene aggiornato da Morph o da un risultato diverso da zero Move; non si tratta di un'osservazione automatica di tutte le attività manuali/server. Il comando in sé non modifica il segno.
  • UO.Timer() - il voto calcola l'età in decimi di secondo. I voti non vengono confrontati tra tempi di esecuzione diversi.

Script C# autonomi

Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.

Esempio semplice

Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.

Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.

var result = UO.TicksAnim();
UO.Print("TicksAnim: " + Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Legge il contrassegno salvato TicksAnim.
var stamp = UO.TicksAnim();
UO.Print(stamp);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Restituisce il campo ticksAnim. Viene aggiornato da Morph o da un risultato diverso da zero Move; non si tratta di un'osservazione automatica di tutte le attività manuali/server. Il comando in sé non modifica il segno.
return  RunScenario();
 object? RunScenario()
{
    var stamp = UO.TicksAnim();
    var ageTenths = UO.Timer() - stamp;
    UO.Print(ageTenths);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • UO.Timer() - il voto calcola l'età in decimi di secondo. I voti non vengono confrontati tra tempi di esecuzione diversi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.TicksAnim();
        UO.Wait(250);
        var after = UO.TicksAnim();
        UO.Print(before = after);
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.TicksAnim() — UO.TicksAnim()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int TicksAnim() => ticksAnim;
⚠️ **GitHub.com Fallback** ⚠️