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

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

Sound y entorno visual

Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas

Sonidos, iluminación, efectos de temporada y clima del cliente.

Secciones

Tema Comandos y explicaciones
Sound UO.Sound
PlayWav UO.PlayWav
Light UO.Light
Season UO.SetSeason
Weather Filter UO.FilterWeather

Todos los comandos del tema

Ambiente

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

Ejemplos sobre el tema.

Cada tarjeta de comando tiene varios escenarios independientes: código directo, funciones y clases. A continuación se muestran escenarios breves seleccionados; restricciones y análisis completos están en las cartas.

UO.PlayWav

Parámetros, resultado y todos los escenarios

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

UO.Light

Parámetros, resultado y todos los escenarios

UO.Light();

Referencia completa de comandos


UO.Alarm

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

Firmas de C#

void UO.Alarm();

Imprime la palabra Alarm en el syslog local ClassicUO. Úselo como nota sobre la ocurrencia de una condición en el script.

Parámetros

No hay parámetros.

Valor devuelto

void - sin valor. Ejecutar en una línea separada. Esto no es bool ni una confirmación de que el usuario vio el mensaje.

Comportamiento

  • Sólo se registra el formulario UO.Alarm() sin parámetros. Para su propio texto, utilice UO.Print(text).
  • El comando no reproduce ningún sonido, no muestra ningún icono ni activa una ventana. El mensaje sigue siendo local: no se envía al chat del juego.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

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

1. Marque el diario - guión directo

Parámetros y flujo de ejecución:

  • No hay parámetros; La palabra Alarm aparece en el registro del sistema.
UO.Alarm();

2. Advertir cuando la salud es baja: función de script

Parámetros y flujo de ejecución:

  • Alarm no tiene una opción de texto. Life devuelve el número HP; Print agrega una descripción clara 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. Marcar resultado de búsqueda: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • 0x0EED - tipo dorado, -1 - cualquier color, backpack - mochila. Alarm se llama solo cuando se encuentra serial; No pongas esa llamada en un bucle sin demora.
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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Alarm() — UO.Alarm()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "alarm":

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

UO.FilterWeather

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

Firmas de C#

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

Activa o desactiva el filtro meteorológico del cliente.

Parámetros

  • enabled — Valor opcional: sin argumento, el filtro está activado; 0 se apaga, int distinto de cero se enciende.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Escribe el indicador normalizado en el estado de tiempo de ejecución y lo pasa al administrador. El filtro afecta el procesamiento del cliente; los eventos del servidor y otras configuraciones de registro permanecen separados.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

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

1. Habilitar sin argumento - script directo

Parámetros y flujo de ejecución:

  • Un número cero de argumentos significa incluir, no leer.
UO.FilterWeather();

2. Apagar - función de script

Parámetros y flujo de ejecución:

  • Un 0 explícito desactiva el filtro del cliente.
return  RunScenario();
 object? RunScenario()
{
    UO.FilterWeather(0);
    return null;
}

3. Activar y luego desactivar: clase de script

Parámetros y flujo de ejecución:

  • El filtro se enciende y claramente vuelve al estado apagado.
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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.FilterWeather() — UO.FilterWeather()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

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

Parámetros: enabled (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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 · 繁體中文 · 日本語 · 한국어

Firmas de C#

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

Establece localmente la iluminación general del cliente.

Parámetros

  • value — Entero opcional: 0..30, limitado a este rango. La forma sin argumentos utiliza 0; Esto es una escritura, no una lectura.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • ExecuteLegacyManualAlias pasa Arg(0), donde el argumento que falta es 0. SetLight asigna Light.Overall y Light.RealOverall un valor de byte limitado.
  • No cambia la iluminación de otros jugadores y no la solicita al servidor. El siguiente paquete de servidor de iluminación puede reemplazar el valor.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Establece localmente la iluminación general del cliente.
UO.Light();

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias pasa Arg(0), donde el argumento que falta es 0. SetLight asigna Light.Overall y Light.RealOverall un valor de byte limitado.
return  RunScenario();
 object? RunScenario()
{
    UO.Light(15);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • No cambia la iluminación de otros jugadores y no la solicita al servidor. El siguiente paquete de servidor de iluminación puede reemplazar el valor.
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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Light() — UO.Light()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

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

Parámetros: value (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

UO.PlayWav

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

Firmas de C#

int UO.PlayWav(object? file);

Reproduce un archivo de audio local.

Parámetros

  • file: ruta al archivo de audio. La ruta absoluta se conserva, la ruta relativa se resuelve desde CUOEnviroment.ExecutablePath. La extensión en sí no está marcada: el archivo dice SoundEffect.FromStream.

Valor devuelto

Indicador numérico int: 1 - sonido.Play() aceptado, 0 - no hay archivo, la reproducción falló o se detectó un error. Este no es el final de la reproducción.

Comportamiento

  • Bridge abre el archivo para leerlo, decodifica SoundEffect.FromStream, almacena los sonidos recibidos en una lista limitada de _sonidos y elimina/elimina los antiguos cuando se alcanza el límite.
  • Si un archivo/error no existe, se muestra un mensaje y el resultado es 0. El comando no espera a que finalice el sonido y no transfiere el archivo al servidor.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Reproduce un archivo de audio local.
UO.Print(UO.PlayWav("alert.wav"));

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • Bridge abre el archivo para leerlo, decodifica SoundEffect.FromStream, almacena los sonidos recibidos en una lista limitada de _sonidos y elimina/elimina los antiguos cuando se alcanza el límite.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.PlayWav("C:\\UO Sounds\\alert.wav"));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Si un archivo/error no existe, se muestra un mensaje y el resultado es 0. El comando no espera a que finalice el sonido y no transfiere el archivo al servidor.
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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

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

Parámetros: file (Any/String)

Resultado: int / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

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

Parámetros: file (Any/String)

Resultado: int / Integer.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

UO.SetSeason

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

Firmas de C#

void UO.SetSeason(object? season);

Cambia localmente la temporada mostrada.

Parámetros

  • season — int: 0..4; los valores por debajo de 0/por encima de 4 se limitan al límite más cercano. El número corresponde a la enumeración Season del cliente.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • Puente.SetSeason llama a _world.ChangeSeason((Temporada)abrazadera(temporada,0,4), -1). Esta es una muestra del mundo del cliente y no una solicitud para cambiar la temporada del servidor.
  • Los datos del servidor pueden volver a cambiar la temporada más adelante. El comando no cambia el mapa, el clima del servidor ni la fecha del calendario.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Cambia localmente la temporada mostrada.
UO.SetSeason(0);

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • Puente.SetSeason llama a _world.ChangeSeason((Temporada)abrazadera(temporada,0,4), -1). Esta es una muestra del mundo del cliente y no una solicitud para cambiar la temporada del servidor.
return  RunScenario();
 object? RunScenario()
{
    UO.SetSeason(4);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Los datos del servidor pueden volver a cambiar la temporada más adelante. El comando no cambia el mapa, el clima del servidor ni la fecha 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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

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

Parámetros: season (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

UO.Sound

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

Firmas de C#

void UO.Sound(object? soundId);

Reproduce sonido en ID desde los recursos del cliente.

Parámetros

  • soundId - int ID sonido de recurso UO; ni el camino a WAV ni la duración.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • ExecuteLegacyManualAlias llama a bridge.PlaySound, donde RequireGameView("PlaySound").Audio.PlaySound(sound) se ejecuta en el hilo del juego.
  • Requiere una ventana gráfica abierta con audio. Un error faltante GUI puede finalizar la llamada; Este comando void no devuelve el resultado de la reproducción. Para un archivo local, use PlayWav.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Reproduce sonido en ID desde los recursos del cliente.
UO.Sound(0x0040);

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias llama a bridge.PlaySound, donde RequireGameView("PlaySound").Audio.PlaySound(sound) se ejecuta en el hilo del juego.
return  RunScenario();
 object? RunScenario()
{
    var soundId = 0x0040;
    UO.Sound(soundId);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere una ventana gráfica abierta con audio. Un error faltante GUI puede finalizar la llamada; Este comando de unidad no devuelve un resultado de reproducción. Para un archivo local, use 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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

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

Parámetros: soundId (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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

UO.TicksAnim

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

Firmas de C#

int UO.TicksAnim();

Lee la marca guardada TicksAnim.

Parámetros

No hay parámetros.

Valor devuelto

int: marca UO.Timer en décimas de segundo desde el inicio del tiempo de ejecución. 0 - la marca aún no se ha fijado o el evento ocurrió en la primera décima de segundo; No son milisegundos ni tiempo calendario.

Comportamiento

  • Devuelve el campo ticksAnim. Se actualiza mediante Morph o mediante un resultado distinto de cero Move; no es una observación automática de todas las actividades manuales/del servidor. El comando en sí no cambia la marca.
  • UO.Timer() - la marca calcula la edad en décimas de segundo. Las marcas no se comparan entre diferentes tiempos de ejecución.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Lee la marca guardada TicksAnim.
var stamp = UO.TicksAnim();
UO.Print(stamp);

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • Devuelve el campo ticksAnim. Se actualiza mediante Morph o mediante un resultado distinto de cero Move; no es una observación automática de todas las actividades manuales/del servidor. El comando en sí no cambia la marca.
return  RunScenario();
 object? RunScenario()
{
    var stamp = UO.TicksAnim();
    var ageTenths = UO.Timer() - stamp;
    UO.Print(ageTenths);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • UO.Timer() - la marca calcula la edad en décimas de segundo. Las marcas no se comparan entre diferentes tiempos de ejecución.
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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.TicksAnim() — UO.TicksAnim()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

Código interno de implementación; no es un script independiente.

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