Skip to content

ES UO Topic client ui

Codex edited this page Oct 12, 2026 · 4 revisions

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

Cliente UI

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

Muestra mensajes, ventanas de servicio, muestra objetos y abre IDE. Estos pasos no reemplazan el envío de voz al servidor.

Secciones

Tema Comandos y explicaciones
Print UO.Print
ClientPrint UO.ClientPrint
Info Window UO.FillInfoWindow · UO.ClearInfoWindow · UO.FillNewWindow
Text Window UO.TextOpen · UO.TextPrint · UO.TextClear · UO.TextClose
Gomas simples UO.CloseSimpleGump
Close UI Window UO.CloseClientUIWindow
Circle Transparency UO.CircleTrans
Show Z UO.SetShowZ
Open IDE UO.OpenIDE

Todos los comandos del tema

Mensajes

UO.Print · UO.ClientPrint · UO.ClientPrintEx · UO.CharPrint · UO.ColorPrint · UO.ConsolePrint · UO.ServerPrint · UO.SetSilentMode · UO.ConColor · UO.FontColor

ventanas

UO.ClearInfoWindow · UO.FillInfoWindow · UO.FillNewWindow · UO.TextOpen · UO.TextClear · UO.TextClose · UO.TextPrint · UO.CloseSimpleGump · UO.CloseClientUIWindow · UO.ShowJournal · UO.OpenIDE · UO.HelpRequest · UO.ActivateHandle · UO.CloseHandle · UO.Snap

Visualización de objetos

UO.Hide · UO.ClientHide · UO.ClientMarkChar · UO.CircleTrans · UO.SetShowZ · UO.Morph

Figuras

UO.AddFigure · UO.UpdateFigure · UO.RemoveFigure · UO.ClearFigures

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.Print

Parámetros, resultado y todos los escenarios

var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

UO.FillInfoWindow

Parámetros, resultado y todos los escenarios

UO.FillInfoWindow("Status ready");

Referencia completa de comandos


UO.ActivateHandle

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

Firmas de C#

void UO.ActivateHandle();

Solicita a Windows/SDL que traiga la ventana del cliente actual al frente. No hay argumentos ni resultados. Este es un comando de ventana, no un elemento, habilidad o aplicación de destino; El enfoque real depende del sistema de ventanas.

Parámetros

No hay parámetros.

Valor devuelto

void. La llamada sólo solicita la activación de la ventana; no reconoce que el sistema de ventanas lo puso en primer plano.

Comportamiento

  • El cliente abre la ventana de vista del juego mediante SDL. El comando no envía un paquete de juego ni realiza una acción en el mundo. Una ventana minimizada o las limitaciones del sistema de ventanas pueden impedir el enfoque real.
  • RequireGameView requiere Client.Game. Si la ventana de gráficos de ClassicUO no está abierta, el puente arroja InvalidOperationException. SDL_RaiseWindow solicita que se abra una ventana existente; La decisión sobre el enfoque se deja en manos del sistema de ventanas.

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.ActivateHandle");
UO.ActivateHandle();

1. Solicite que la ventana del cliente pase a primer plano. - guión directo

Parámetros y flujo de ejecución:

  • Solicite que la ventana del cliente pase a primer plano.
UO.ActivateHandle();

2. No solicites el foco de la ventana antes de conectarte al juego. - función de guión

Parámetros y flujo de ejecución:

  • No solicites el foco de la ventana antes de conectarte al juego.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected()))
    {
        UO.ActivateHandle();
    }

    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. Envuelva la acción de la ventana en un procedimiento reutilizable. - clase de guión

Parámetros y flujo de ejecución:

  • Envuelva la acción de la ventana en un procedimiento reutilizable.
  • Ejecutar la solicitud a través de un procedimiento auxiliar.
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()
    {
        RunAction();
        return null;
    }

    void RunAction()
    {
        UO.ActivateHandle();
    }
}

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.ActivateHandle() — UO.ActivateHandle()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void ActivateHandle() => bridge.ActivateHandle();

UO.AddFigure

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

Firmas de C#

dynamic UO.AddFigure(object? figure);

Agrega una figura local al mapa mundial de ClassicUO y devuelve su ID. La cifra se almacena en el lado del cliente, no se notifica al servidor del juego.

Parámetros

Valor devuelto

int es el ID positivo de la cifra sumada. 0 se devuelve si los datos de la cifra son incorrectos o la tarjeta se niega a agregarlos. Transfiera el ID recibido a UO.UpdateFigure o UO.RemoveFigure.

Comportamiento

  • Crea una figura local para WorldMapGump. Se admiten líneas, elipses, rectángulos, flechas direccionales y texto. Las coordenadas fcWorld siguen la transformación y escala del mapa; fcScreen se miden en relación con la ventana del mapa. Se muestran las formas de la faceta seleccionada.

Formato de matriz: [kind, coord, x1, y1, x2, y2, brushColor, brushStyle, color, worldNum, text]. kind: 0 línea, 1 elipse, 2 rectángulo, 3 flecha direccional, 4 texto. coord: pantalla 0 world, 1. color utiliza el orden de bytes TColor (0x00BBGGRR) de Delphi. Para una flecha con coordenadas mundiales y x2=0,y2=0, el punto de partida es el carácter actual. Los brushColor y brushStyle históricos se adoptan por motivos de compatibilidad; El sombreado visual no garantiza una coincidencia completa con Delphi.

La figura permanece en la colección del cliente hasta que se elimina/purga o finaliza el proceso. Cambiar de faceta sólo oculta figuras que pertenecen a otra faceta.

  • Se acepta un mínimo de campos 9. Si falta worldNum, se utiliza la tarjeta actual; sin texto, se toma una cadena vacía. el tipo está limitado a 0..4, coord - 0..1; otros significados dan 0. El worldNum negativo permite la visualización en cualquier faceta. El contador ID se incrementa antes de marcar SetYokoMapFigure, por lo que una pieza rechazada puede dejar un espacio en ID. Colección WorldMapGump estática en progreso; Los scripts habituales de un administrador utilizan un estado de ejecución persistente común.
  • brushColor y brushStyle se guardan en la entrada, pero el renderizador actual no los usa. La línea y el rectángulo se dibujan como un contorno; la elipse consta de segmentos 32. La firma del texto se dibuja sólo para kind=4; otros tipos no lo generan. color especifica el contorno en el formato COLORREF 0x00BBGGRR.

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.

object? result = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Contorno rojo de un rectángulo en el mapa del juego - guión directo

Parámetros y flujo de ejecución:

  • kind=2 dibuja un contorno rojo. El campo de texto con el valor Área se guarda, pero para este tipo no se dibuja la etiqueta; el texto genera kind=4.
dynamic[] fig = new dynamic[checked((int)(11) + 1)];
fig[0] = 2;
fig[1] = 0;
fig[2] = UO.GetX("self")-3;
fig[3] = UO.GetY("self")-3;
fig[4] = UO.GetX("self")+3;
fig[5] = UO.GetY("self")+3;
fig[6] = 0;
fig[7] = 1;
fig[8] = 255;
fig[9] = UO.WorldNum();
fig[10] = "Area";
var figureId = UO.AddFigure(fig);

2. Una flecha desde un personaje hasta un punto en el mapa del juego: una función de script

Parámetros y flujo de ejecución:

  • Con coordenadas world y x2=0,y2=0 el origen de la flecha se toma de la posición del personaje cuando se dibuja. El texto con el valor Este para kind=3 no se genera.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] dirFig = new dynamic[checked((int)(11) + 1)];
    dirFig[0] = 3;
    dirFig[1] = 0;
    dirFig[2] = UO.GetX("self") + 10;
    dirFig[3] = UO.GetY("self");
    dirFig[4] = 0;
    dirFig[5] = 0;
    dirFig[6] = 0;
    dirFig[7] = 1;
    dirFig[8] = 65280;
    dirFig[9] = UO.WorldNum();
    dirFig[10] = "East";
    var arrowId = UO.AddFigure(dirFig);
    return null;
}

3. Crea una línea azul entre dos puntos de la faceta actual. - clase de guión

Parámetros y flujo de ejecución:

  • Crea una línea azul entre dos puntos de la faceta actual.
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()
    {
        dynamic[] lineFig = new dynamic[checked((int)(11) + 1)];
        lineFig[0] = 0;
        lineFig[1] = 0;
        lineFig[2] = UO.GetX("self");
        lineFig[3] = UO.GetY("self");
        lineFig[4] = UO.GetX("self") + 8;
        lineFig[5] = UO.GetY("self");
        lineFig[6] = 0;
        lineFig[7] = 1;
        lineFig[8] = 16711680;
        lineFig[9] = UO.WorldNum();
        lineFig[10] = "";
        var lineId = UO.AddFigure(lineFig);
        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.AddFigure(figure) — UO.AddFigure(Any)

Parámetros: figure (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "addfigure":

                {

                    if (!TryMapFigureArg(0, out int[] figure, out string figureText))

                        return InjectionValue.Zero;

                    int id = state.NextMapFigureId++;

                    if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)

                        return InjectionValue.Zero;

                    state.MapFigures[id] = SerializeMapFigure(figure, figureText);

                    return new InjectionValue(id);

                }

UO.CharPrint

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

Firmas de C#

void UO.CharPrint(object? color, object? msg);
void UO.CharPrint(object? id, object? color, object? msg);

Crea una inscripción visible solo para usted sobre el objeto cargado: por ejemplo, una marca del objetivo seleccionado o una advertencia sobre su personaje. Este no es el discurso del personaje ni el mensaje en la parte inferior de la ventana del juego.

Parámetros

  • id es la serie del objeto, no graphic/type o una coordenada. UO.CharPrint en forma de tres argumentos también comprende self, lasttarget y los nombres de objetos almacenados. Para SenderID en UO.ClientPrintEx use un número, como UO.Hex2Int(UO.GetSerial("self")); Los alias de cadena no se resuelven como objetos allí.
  • color es UO hue, no RGB. Se toman los bits 16 menos significativos del número; 0x0044 es un ejemplo. -1 se convierte en 0xFFFF en lugar de significar "cualquier color". El color ConColor no se utiliza aquí.

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El objeto debe existir en el mundo cargado y no debe eliminarse; El texto vacío o el objetivo faltante no se dibujan. El comando no descarga el objeto del servidor. El servidor y otros jugadores no reciben este mensaje. Sin la ventana del juego, la inscripción no se puede ver en el mundo; no reemplaza el syslog del administrador.
  • UO.CharPrint(color, msg) selecciona su personaje. UO.CharPrint(id, color, msg) selecciona el objeto especificado. Ambos formularios utilizan la fuente 3. UO.ClientPrintEx requiere los cuatro argumentos en el orden ID del remitente, Color, Fuente, Texto.
  • El número de fuente es UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

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.CharPrint");
UO.CharPrint(0x0044, "Ready");

1. UO.CharPrint - 1 - guión directo

Parámetros y flujo de ejecución:

  • La primera forma CharPrint coloca Listo encima de su carácter. ClientPrintEx lo recibe serial a través de UO.Hex2Int(UO.GetSerial("self")) y pasa explícitamente la fuente a 3. La inscripción no incluye ningún modo de juego.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
UO.CharPrint(0x0044, "Ready");

2. UO.CharPrint — 2 — función de secuencia de comandos

Parámetros y flujo de ejecución:

  • objetivo: serial del último objetivo. Cero significa que no hay nadie a quien etiquetar en este ejemplo. Objetivo seleccionado: solo firma local: el objetivo no es atacado y el objetivo del servidor activo no se completa.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.CharPrint(target, 0x0044, "Selected target");
    }

    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. UO.CharPrint - 3 - clase de escenario

Parámetros y flujo de ejecución:

  • ShowWeightWarning se declara en su totalidad a continuación. Compara el peso con un límite positivo conocido y escribe sobre su personaje sólo cuando está sobrecargada; no tira nada. Convertir.ToString convierte el peso en texto.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
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()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.CharPrint(UO.Hex2Int(UO.GetSerial("self")), 0x0044, "Too heavy: " + Convert.ToString(weight));
        }
    }

    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.CharPrint(color, msg) — UO.CharPrint(Integer,String)

Parámetros: color (Integer/String), msg (String)

Resultado: void / Unit.

Durante la llamada:

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

public void CharPrint(int color, string msg) => CharPrint(bridge.Self, color, msg);

UO.CharPrint(color, msg) — UO.CharPrint(String,String)

Parámetros: color (Integer/String), msg (String)

Resultado: void / Unit.

Durante la llamada:

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

public void CharPrint(string color, string msg) => CharPrint(bridge.Self, NumberConversions.ToInt(color), msg);

UO.CharPrint(id, color, msg) — UO.CharPrint(Any,Any,Any)

Parámetros: id (Any/Integer), color (Any/Integer), msg (Any/String)

Resultado: void / Unit.

Durante la llamada:

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

public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg) 

            => CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg);

UO.CharPrint(id, color, msg) — UO.CharPrint(Integer,Integer,String)

Parámetros: id (Any/Integer), color (Any/Integer), msg (Any/String)

Resultado: void / Unit.

Durante la llamada:

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

public void CharPrint(int id, int color, string msg) => bridge.CharPrint(id, color, msg);

UO.CircleTrans

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

Firmas de C#

int UO.CircleTrans();
void UO.CircleTrans(object? enabled);

Lee o cambia la configuración del círculo de transparencia del perfil activo.

Parámetros

  • enabled - int: 0 lo deshabilita, cualquier valor distinto de cero lo habilita. Sin argumento, la configuración es de sólo lectura.

Valor devuelto

Sin argumento int 1/0; el formulario con un argumento devuelve null.

Comportamiento

  • Leer en ausencia de un perfil da 0. Una entrada sin perfil imprime un error; si hay un perfil, cambia UseCircleOfTransparency y guarda el perfil. Esta es una personalización visual del cliente.

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.CircleTrans();
UO.Print("CircleTrans: " + Convert.ToString(result));

1. Configuración de lectura: guión directo

Parámetros y flujo de ejecución:

  • La lectura no cambia el perfil.
var enabled = UO.CircleTrans();
UO.Print(Convert.ToString(enabled));

2. Habilitar transparencia: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • La grabación mantiene activado el círculo de transparencia.
return  RunScenario();
 object? RunScenario()
{
    UO.CircleTrans(1);
    return null;
}

3. Restaurar valor anterior: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • La bandera guardada se restaura después de un cambio temporal de configuració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 previous = UO.CircleTrans();
        UO.CircleTrans(0);
        UO.CircleTrans(previous);
        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.CircleTrans() — UO.CircleTrans()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

public int CircleTrans() => bridge.CircleTrans();

UO.CircleTrans(enabled) — UO.CircleTrans(Integer)

Parámetros: enabled (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void CircleTrans(int enabled) => bridge.CircleTrans(enabled);

UO.ClearFigures

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

Firmas de C#

void UO.ClearFigures();

Elimina todas las formas de mapas personalizados y sus entradas de tiempo de ejecución.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Borra WorldMapGump.ClearYokoMapFigures y estado.MapFigures. El mapa base y UserStatics no se modifican.
  • ClearYokoMapFigures borra la colección estática en progreso de WorldMapGump, luego el comando borra MapFigures de su estado de tiempo de ejecución. Este alcance de limpieza está determinado por la colección general de clientes, no solo por el nombre del script de llamada.
  • Se conservan las etiquetas de mapas personalizadas habituales (userMarkers.usr).

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.ClearFigures");
UO.ClearFigures();

1. Estado claro: guión directo

Parámetros y flujo de ejecución:

  • Elimina todas las formas de mapas personalizados y sus entradas de tiempo de ejecución.
UO.ClearFigures();

2. Borrar después de la configuración: función de script

Parámetros y flujo de ejecución:

  • Cree una forma local para el mapa actual y luego elimine todas las formas personalizadas.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(9) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = figure[2] + 1;
    figure[5] = figure[3] + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    var figureId = UO.AddFigure(figure);
    UO.ClearFigures();
    return null;
}

3. Volver a purgar: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Borrar un conjunto vacío es aceptable y no crea una nueva configuració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()
    {
        UO.ClearFigures();
        UO.ClearFigures();
        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.ClearFigures() — UO.ClearFigures()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearfigures":

                    bridge.ClearMapFigures();

                    state.MapFigures.Clear();

                    return InjectionValue.Unit;

UO.ClearInfoWindow

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

Firmas de C#

void UO.ClearInfoWindow();

Borra las líneas de la ventana de texto del cliente.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • TextClear borra el búfer; si la ventana estaba abierta, la actualiza con contenido vacío. La ventana no necesariamente se cierra.

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.ClearInfoWindow");
UO.ClearInfoWindow();

1. Estado claro: guión directo

Parámetros y flujo de ejecución:

  • Borra las líneas de la ventana de texto del cliente.
UO.ClearInfoWindow();

2. Borrar después de la configuración: función de script

Parámetros y flujo de ejecución:

  • Borre una línea de ventana de texto agregada anteriormente.
return  RunScenario();
 object? RunScenario()
{
    UO.FillInfoWindow("status");
    UO.ClearInfoWindow();
    return null;
}

3. Volver a purgar: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Borrar un conjunto vacío es aceptable y no crea una nueva configuració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()
    {
        UO.ClearInfoWindow();
        UO.ClearInfoWindow();
        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.ClearInfoWindow() — UO.ClearInfoWindow()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearinfowindow": bridge.TextClear(); return InjectionValue.Unit;

UO.ClientHide

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

Firmas de C#

dynamic UO.ClientHide(object? objID);

Oculta serial un artículo cargado u otro personaje solo en la pantalla ClassicUO, incluidos contenedores, muñecos de papel y artículos equipados.

Parámetros

  • objID — Serie del objeto cargado específico: int o cadena hexadecimal/decimal. Esto no es graphic/type. Para un nombre guardado, use GetSerial(nombre). El parámetro es obligatorio; la vista no aparece.

Valor devuelto

int 1 después de transmitir el comando del puente. El resultado histórico no confirma la presencia del objeto: incluso para un puente serial o self desconocido genera un error y el tiempo de ejecución devuelve 1. No utilice este valor como prueba para ocultarse correctamente. Los metadatos de compatibilidad muestran object?.

Comportamiento

  • Se requiere exactamente un argumento. Para seleccionar con el mouse, use UO.Hide().
  • Hide(serial) actúa inmediatamente sobre un objeto cargado conocido. Pase serial de una pila/elemento específico en lugar de graphic/type. La pila seleccionada se oculta por completo, independientemente de la Cantidad.
  • El artículo permanece en el contenedor: la cantidad, el propietario, el contenido y el estado del servidor no cambian. FindType/GetContent todavía puede encontrarlo. Ocultar no es un filtro de búsqueda, transferencia, eliminación, habilidad de ocultación o invisibilidad del lado del servidor.
  • El contenedor normal, la ventana de comercio y la cuadrícula de botín no dibujan el elemento oculto y no aceptan clics/arrastres sobre él. La bandera persiste cuando la ventana se reconstruye y se vuelve a abrir mientras el mismo objeto cargado está en uso.
  • El objeto equipado desaparece del muñeco de papel, de la ranura pequeña y de la imagen del personaje. Permanece equipado: la capa, armadura y estado en el servidor no cambian. La bata oculta ya no se superpone a la ropa interior. La imagen del personaje en el administrador se actualiza usando la misma bandera; la lista del equipo real permanece disponible.
  • Hide no oculta su propio carácter, terreno y estática. El inexistente serial da un mensaje. Ocultar la bolsa en sí no cierra la ventana de contenido que ya está abierta, ni oculta automáticamente cada elemento incluido.
  • No hay ningún comando Mostrar por separado en el API actual. Ocultar pertenece a la instancia del objeto cargado: eliminarlo del mundo del cliente y cargarlo nuevamente (por ejemplo, al volver a conectarse) restablece la bandera. Simplemente cerrar/abrir un cofre no es una forma garantizada de devolver un artículo.

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.

object? result = UO.ClientHide(0x40001234);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Ocultar elemento por ID conocido - script directo

Parámetros y flujo de ejecución:

  • ObjID es un elemento específico, no su type. Desaparece del display permaneciendo en su contenedor.
var item = 0x40001234;
if (Truth(UO.Exists(item)))
{
    UO.ClientHide(item);
}

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

2. Ocultar pila encontrada: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • FindType busca graphic 0x0EED de cualquier color en backpack. El serial devuelto se transmite a ClientHide; toda la pila está completamente oculta.
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item != ""))
    {
        UO.ClientHide(item);
        UO.Print("Amount is still: " + Convert.ToString(UO.GetQuantity(item)));
    }

    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. Usar objeto con nombre: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • GetSerial resuelve el nombre de la decoración previamente guardada. Primero se debe cargar el artículo, como abrir su contenedor.
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.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.ClientHide(item);
        }

        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.ClientHide(objID) — UO.ClientHide(Any)

Parámetros: objID (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "clienthide": bridge.ClientHide(Arg(0)); return InjectionValue.True;

UO.ClientMarkChar

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

Firmas de C#

void UO.ClientMarkChar(object? actionIndex, object? id);

Actualiza las etiquetas del cliente LastTarget y/o LastAttack.

Parámetros

  • actionIndex - int: 1 - LastTarget; 2 - LastAttack; 3 - ambos. Otros valores imprimen un error.
  • id — Serie del objeto o nombre admitido de self/backpack/lasttarget/objeto guardado; Las cadenas numéricas y las cadenas 0x se resuelven en tiempo de ejecución.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • ClientMarkChar modifica los objetivos guardados sin enviar un ataque ni responder al objetivo del servidor. Los comandos posteriores pueden usar la nueva etiqueta.

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.ClientMarkChar");
UO.ClientMarkChar(1, "self");

1. Actualización LastTarget - script directo

Parámetros y flujo de ejecución:

  • El objetivo guardado se convierte en tu propio personaje.
UO.ClientMarkChar(1,"self");

2. Actualizar ambas etiquetas - función de script

Parámetros y flujo de ejecución:

  • El último destino se utiliza para ambas etiquetas de cliente.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.ClientMarkChar(3, target);
    }

    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. Acción incorrecta: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Cero no forma parte del conjunto de acciones y genera un mensaje de error.
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.ClientMarkChar(0, "self");
        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.ClientMarkChar(actionIndex, id) — UO.ClientMarkChar(Any,Any)

Parámetros: actionIndex (Any), id (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void ClientMarkChar(InjectionValue actionIndex, InjectionValue id)

            => bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id));

UO.ClientPrint

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

Firmas de C#

void UO.ClientPrint(object? text);

Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.

Parámetros

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
  • UO.Print agrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración.
  • Se utiliza el color de los mensajes del sistema de este tiempo de ejecución de script: inicialmente 0x0440, cambiado UO.ConColor. Esta es una entrada local; el nombre del comando no significa enviarlo al servidor.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.

UO.ClientPrint("Hello from C#");

1. Breve reportaje - guión directo

Parámetros y flujo de ejecución:

  • procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ClientPrint("Processed item entries: " + Convert.ToString(processed));

2. Advertencia de sobrecarga: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ClientPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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. Informar únicamente de cambios de peso: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ClientPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ClientPrint(text) — UO.ClientPrint(Any)

Parámetros: text (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.ClientPrintEx

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

Firmas de C#

void UO.ClientPrintEx(object? senderID, object? color, object? font, object? text);

Crea una inscripción visible solo para usted sobre el objeto cargado: por ejemplo, una marca del objetivo seleccionado o una advertencia sobre su personaje. Este no es el discurso del personaje ni el mensaje en la parte inferior de la ventana del juego.

Parámetros

  • senderID es la serie del objeto, no graphic/type o una coordenada. UO.CharPrint en forma de tres argumentos también comprende self, lasttarget y los nombres de objetos almacenados. Para SenderID en UO.ClientPrintEx use un número, como UO.Hex2Int(UO.GetSerial("self")); Los alias de cadena no se resuelven como objetos allí.
  • color es UO hue, no RGB. Se toman los bits 16 menos significativos del número; 0x0044 es un ejemplo. -1 se convierte en 0xFFFF en lugar de significar "cualquier color". El color ConColor no se utiliza aquí.
  • font: número de fuente UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El objeto debe existir en el mundo cargado y no debe eliminarse; El texto vacío o el objetivo faltante no se dibujan. El comando no descarga el objeto del servidor. El servidor y otros jugadores no reciben este mensaje. Sin la ventana del juego, la inscripción no se puede ver en el mundo; no reemplaza el syslog del administrador.
  • UO.CharPrint(color, msg) selecciona su personaje. UO.CharPrint(id, color, msg) selecciona el objeto especificado. Ambos formularios utilizan la fuente 3. UO.ClientPrintEx requiere los cuatro argumentos en el orden ID del remitente, Color, Fuente, Texto.
  • El número de fuente es UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

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.ClientPrintEx");
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

1. UO.ClientPrintEx - 1 - guión directo

Parámetros y flujo de ejecución:

  • La primera forma CharPrint coloca Listo encima de su carácter. ClientPrintEx lo recibe serial a través de UO.Hex2Int(UO.GetSerial("self")) y pasa explícitamente la fuente a 3. La inscripción no incluye ningún modo de juego.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");

2. UO.ClientPrintEx — 2 — función de secuencia de comandos

Parámetros y flujo de ejecución:

  • objetivo: serial del último objetivo. Cero significa que no hay nadie a quien etiquetar en este ejemplo. Objetivo seleccionado: solo firma local: el objetivo no es atacado y el objetivo del servidor activo no se completa.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
    if (Truth(target != 0))
    {
        UO.ClientPrintEx(target, 0x0044, 3, "Selected target");
    }

    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. UO.ClientPrintEx - 3 - clase de escenario

Parámetros y flujo de ejecución:

  • ShowWeightWarning se declara en su totalidad a continuación. Compara el peso con un límite positivo conocido y escribe sobre su personaje sólo cuando está sobrecargada; no tira nada. Convertir.ToString convierte el peso en texto.
  • GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
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()
    {
        ShowWeightWarning(UO.Weight(), UO.MaxWeight());
        return null;
    }

    void ShowWeightWarning(dynamic weight, dynamic maximum)
    {
        if (Truth(maximum > 0) && Truth(weight >= maximum))
        {
            UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Too heavy: " + Convert.ToString(weight));
        }
    }

    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.ClientPrintEx(senderID, color, font, text) — UO.ClientPrintEx(Any,Any,Any,Any)

Parámetros: senderID (Any), color (Any), font (Any), text (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "clientprintex":

                    bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)); return InjectionValue.Unit;

UO.CloseClientUIWindow

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

Firmas de C#

void UO.CloseClientUIWindow(object? uiWindowType, object? id);

Cierra la ventana del cliente local del tipo especificado para un objeto específico. Por ejemplo, puedes quitar el muñeco de papel del personaje, su estado o la ventana de la mochila. El comando no cierra el cliente del juego y no responde a los botones de activación del servidor.

Parámetros

  • uiWindowType — Código de ventana numérico obligatorio: 0 — muñeco de papel (equipo), 1 — estado del personaje, 2 — perfil, 3 — contenedor. Esta es una lista separada de cuatro códigos, no el cuerpo graphic/type ni el ID server gump. Otros números no encuentran la ventana.
  • id — Serie del objeto al que pertenece la ventana: carácter self/serial para los tipos 0..2, contenedor backpack/serial para el tipo 3. Acepta un número, una cadena hexadecimal o un alias de objeto resoluble. Este no es el número de ventana en la lista InfoGumps. Un alias de objeto desconocido se convierte en 0.

Valor devuelto

void - sin valor. La llamada se escribe en una línea aparte, sin var resultado = y sin if UO.CloseClientUIWindow(...). Si no hay ninguna ventana abierta adecuada, no pasa nada; el comando no devuelve true/false.

Comportamiento

  • Ambos parámetros son obligatorios. Se comparan tanto la clase de ventana como LocalSerial. Llamar con (3, self) no significa mochila: la mochila requiere backpack.
  • La omisión afecta a ventanas de este tipo abiertas, aún no destruidas/serial; todas las ventanas coincidentes se cierran en el hilo del juego. Las ventanas restantes permanecen abiertas.
  • La interfaz se cierra, los elementos no se eliminan del contenedor y el personaje no desaparece del mundo. Es seguro repetirlo: si la ventana ya está cerrada, no hay coincidencia.
  • Para diálogos del lado del servidor, estudie UO.CloseSimpleGump y UO.NumGumpButton; los códigos 0..3 de este comando no se aplican allí.

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.CloseClientUIWindow");
UO.CloseClientUIWindow(0, "self");

1. Quita tu muñeca de papel - guión directo

Parámetros y flujo de ejecución:

  • Sólo se cierra la ventana del equipo de tu personaje; su estado, perfil y mochila siguen siendo ventanas separadas.
UO.CloseClientUIWindow(0, "self");

2. Cierre la ventana de la mochila después de trabajar con cosas: función de script

Parámetros y flujo de ejecución:

  • Si la mochila no fue abierta, la acción no cambiará nada. Este comando no mueve elementos y no devuelve ningún resultado.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Connected()) && Truth(UO.Exists("backpack")))
    {
        UO.CloseClientUIWindow(3, "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;

3. Eliminar el estado y el perfil del personaje seleccionado - clase de escenario

Parámetros y flujo de ejecución:

  • 1 - estado, 2 - perfil. La identificación es serial del mobile seleccionado. ASC(texto,0) aquí analiza la cadena serial en un número con un 0 de repuesto. El procedimiento de usuario no promete nada sobre la presencia de una ventana; Ambas llamadas tienen Unidad.
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 selected = Asc(UO.GetSerial("lasttarget"), 0);
        CloseMobilePanels(selected);
        return null;
    }

    void CloseMobilePanels(dynamic id)
    {
        if (Truth(id == 0) || !(Truth(UO.Exists(id))))
        {
            return;
        }

        UO.CloseClientUIWindow(1, id);
        UO.CloseClientUIWindow(2, id);
    }

    int Asc(object? value, int fallback = 0)
    {
        string text = Convert.ToString(value) ?? "";
        if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
            return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
        return int.TryParse(text, out int number) ? number : fallback;
    }

    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.CloseClientUIWindow(uiWindowType, id) — UO.CloseClientUIWindow(Any,Any)

Parámetros: uiWindowType (Any), id (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "closeclientuiwindow": bridge.CloseClientWindow(Arg(0), Arg(1)); return InjectionValue.Unit;

UO.CloseHandle

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

Firmas de C#

void UO.CloseHandle();

Solicita que la aplicación cliente actual salga a través de Client.Game.Exit.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • CloseUO se envía al mismo puente.CloseHandle. La salida se ejecuta en el hilo del juego; si falta Client.Game, no hay ninguna acción. El comando no es apagar un gump separado.

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.CloseHandle");
UO.CloseHandle();

1. Terminar cliente - Script directo

Parámetros y flujo de ejecución:

  • La llamada solicita la finalización de la aplicación del cliente.
UO.CloseHandle();

2. Condición de terminación explícita: función de script

Parámetros y flujo de ejecución:

  • El ejemplo muestra una condición controlada; el valor 0 mantiene abierto al cliente.
return  RunScenario();
 object? RunScenario()
{
    var finishClient = 0;
    if (Truth(finishClient))
    {
        UO.CloseHandle();
    }

    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. Procedimiento de finalización: clase de script

Parámetros y flujo de ejecución:

  • Un asistente completamente declarado permite la habilitación de salida explícita.
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()
    {
        FinishClient(0);
        return null;
    }

    void FinishClient(dynamic enabled)
    {
        if (Truth(enabled))
        {
            UO.CloseHandle();
        }
    }

    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.CloseHandle() — UO.CloseHandle()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void CloseHandle() => bridge.CloseHandle();

UO.CloseSimpleGump

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

Firmas de C#

void UO.CloseSimpleGump(object? gumpIndex);

Cierra localmente un servidor gump que puede cerrarse mediante un índice estricto.

Parámetros

  • gumpIndex — Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.

Valor devuelto

void - no devuelve nada. El resultado no debe interpretarse como una confirmación del servidor o bool.

Comportamiento

  • Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
  • Índice no válido y NoClose no cambian nada. El comando no envía la respuesta del botón al servidor. Para esta respuesta, utilice SendGumpSelect.
  • El cierre modifica la lista y los índices. Para un cierre masivo, recorra la lista desde el último índice hasta el primero.

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.CloseSimpleGump");
UO.CloseSimpleGump(0);

1. Cerrar la primera ventana - guión directo

Parámetros y flujo de ejecución:

  • 0 es un índice, no ID. Si la ventana prohíbe cerrarse, permanece abierta.
UO.CloseSimpleGump(0);

2. Cerrar todas las ventanas habilitadas - función de script

Parámetros y flujo de ejecución:

  • El recorrido inverso reduce el impacto de los cambios de índice posteriores al cierre. Al abrir nuevas ventanas en paralelo, consulte la lista nuevamente.
return  RunScenario();
 object? RunScenario()
{
    var i = UO.GetGumpsCount() - 1;
    while (Truth(i >= 0))
    {
        UO.CloseSimpleGump(i);
        i = i - 1;
    }

    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. Guardar información antes de cerrar - clase de script

Parámetros y flujo de ejecución:

  • info[1] - GumpID guardado. La acción no devuelve nada, por lo que el resultado no se asigna a la variable.
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 info = UO.GetGumpInfo(0);
        if (Truth(ArrayLength(info) == 5))
        {
            UO.CloseSimpleGump(0);
            UO.Print(Hex(info[1]));
        }

        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
    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.CloseSimpleGump(gumpIndex) — UO.CloseSimpleGump(Any)

Parámetros: gumpIndex (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "closesimplegump":

                    if (bridge is IApiGumpAccess gumpAccess) gumpAccess.CloseGumpAtIndex(Arg(0));

                    else bridge.CloseSimpleGump(Arg(0));

                    return InjectionValue.Unit;

UO.ColorPrint

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

Firmas de C#

void UO.ColorPrint(object? color, object? msg);

Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.

Parámetros

  • color - UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits bajos 16. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado. Sin color se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
  • UO.Print agrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración.
  • Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.

UO.ColorPrint(0x0044, "Hello from C#");

1. Breve reportaje - guión directo

Parámetros y flujo de ejecución:

  • procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ColorPrint(0x0044, "Processed item entries: " + Convert.ToString(processed));

2. Advertencia de sobrecarga: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ColorPrint(0x0044, "Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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. Informar únicamente de cambios de peso: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ColorPrint(0x0044, "Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ColorPrint(color, msg) — UO.ColorPrint(Any,Any)

Parámetros: color (Any), msg (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void ColorPrint(InjectionValue color, InjectionValue msg) => bridge.Print(NumberConversions.ToInt(color), msg.ToString());

UO.ConColor

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

Firmas de C#

void UO.ConColor(object? color);

Establece UO hue para mensajes del sistema posteriores de este tiempo de ejecución de script.

Parámetros

  • color - UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits 16 bajos. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado.

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • Afecta a los siguientes UO.ClientPrint, UO.AddToJournal y UO.AddToSystemJournal. No cambia el color de las líneas anteriores, no cambia el perfil SpeechHue y no cambia el color de UO.Print sin un argumento de color. El antiguo captador de color no está aquí: almacene el hue regular seleccionado en su variable.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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.ConColor");
UO.ConColor(0x0044);

1. UO.ConColor - 1 - guión directo

Parámetros y flujo de ejecución:

  • 0x0044 se convierte en el color de la siguiente línea del sistema. ConColor por sí solo no imprime nada.
UO.ConColor(0x0044);
UO.AddToSystemJournal("Notice");

2. UO.ConColor — 2 — función de secuencia de comandos

Parámetros y flujo de ejecución:

  • El Print normal conserva su color 0x03B2 y el AddToJournal usa el 0x0044 especificado. Ambos mensajes son locales.
return  RunScenario();
 object? RunScenario()
{
    UO.ConColor(0x0044);
    UO.Print("Normal Print color");
    UO.AddToJournal("System color");
    return null;
}

3. UO.ConColor - 3 - clase de escenario

Parámetros y flujo de ejecución:

  • usualHue=0x0440 es claramente el color normal seleccionado, no el valor anterior leído. El intento utiliza el temporal 0x0035; finally devuelve usualHue, luego la siguiente línea se imprime nuevamente en color normal.
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 usualHue = 0x0440;
        UO.ConColor(usualHue);
        try
        {
            UO.ConColor(0x0035);
            UO.AddToSystemJournal("Temporary warning");
        }
        finally
        {
            UO.ConColor(usualHue);
        }

        UO.AddToSystemJournal("Normal messages again");
        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.ConColor(color) — UO.ConColor(Any)

Parámetros: color (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void ConColor(InjectionValue color)

        {

            systemMessageColor = NumberConversions.ToInt(color);

        }

UO.ConsolePrint

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

Firmas de C#

void UO.ConsolePrint(object? msg);

Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.

Parámetros

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
  • UO.Print agrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración.
  • Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
  • A pesar de que el nombre dice Consola, esta es la misma salida del juego local, no una terminal de Windows separada.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.

UO.ConsolePrint("Hello from C#");

1. Breve reportaje - guión directo

Parámetros y flujo de ejecución:

  • procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ConsolePrint("Processed item entries: " + Convert.ToString(processed));

2. Advertencia de sobrecarga: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ConsolePrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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. Informar únicamente de cambios de peso: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ConsolePrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ConsolePrint(msg) — UO.ConsolePrint(Any)

Parámetros: msg (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void ConsolePrint(InjectionValue msg) => bridge.Print(msg.ToString());

UO.FillInfoWindow

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

Firmas de C#

void UO.FillInfoWindow(object? s);

Agrega una línea a una ventana de texto y la muestra.

Parámetros

  • s — Texto de línea; el valor se convierte a string.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Las filas acumuladas previamente se conservan hasta el límite MaxTextWindowLines.
  • TextPrint agrega una línea y muestra el propio YokoTextWindowGump; TextOpen asegura el estado abierto. Cuando el búfer se desborda, las líneas más antiguas se eliminan. Esta es una ventana de texto separada, no un servidor gump ni UO.GetInfo.

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.FillInfoWindow");
UO.FillInfoWindow("Status ready");

1. Mostrar línea - guión directo

Parámetros y flujo de ejecución:

  • El texto se envía a la ventana de texto del cliente.
UO.FillInfoWindow("Status ready");

2. Texto de variable - función de script

Parámetros y flujo de ejecución:

  • La cadena se forma a partir de la corriente local HP.
return  RunScenario();
 object? RunScenario()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillInfoWindow(status);
    return null;
}

3. Dos líneas consecutivas - clase de script

Parámetros y flujo de ejecución:

  • El segundo comando agrega el segundo después del primero.
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.FillInfoWindow("first");
        UO.FillInfoWindow("second");
        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.FillInfoWindow(s) — UO.FillInfoWindow(Any)

Parámetros: s (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "fillinfowindow":

                    bridge.TextPrint(Text(0));

                    bridge.TextOpen();

                    return InjectionValue.Unit;

UO.FillNewWindow

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

Firmas de C#

void UO.FillNewWindow(object? s);

Borra la ventana de texto, agrega una línea y la muestra.

Parámetros

  • s — Texto de línea; el valor se convierte a string.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • Antes de ejecutar TextPrint, TextClear; Las filas acumuladas previamente se eliminan.
  • TextPrint agrega una línea y muestra el propio YokoTextWindowGump; TextOpen asegura el estado abierto. Cuando el búfer se desborda, las líneas más antiguas se eliminan. Esta es una ventana de texto separada, no un servidor gump ni UO.GetInfo.

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.FillNewWindow");
UO.FillNewWindow("Status ready");

1. Mostrar línea - guión directo

Parámetros y flujo de ejecución:

  • El texto se envía a la ventana de texto del cliente.
UO.FillNewWindow("Status ready");

2. Texto de variable - función de script

Parámetros y flujo de ejecución:

  • La cadena se forma a partir de la corriente local HP.
return  RunScenario();
 object? RunScenario()
{
    var status = "HP: " + Convert.ToString(UO.GetHP());
    UO.FillNewWindow(status);
    return null;
}

3. Dos líneas consecutivas - clase de script

Parámetros y flujo de ejecución:

  • El segundo comando reemplaza el contenido: lo que queda es el segundo.
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.FillNewWindow("first");
        UO.FillNewWindow("second");
        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.FillNewWindow(s) — UO.FillNewWindow(Any)

Parámetros: s (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "fillnewwindow": bridge.TextClear(); bridge.TextPrint(Text(0)); bridge.TextOpen(); return InjectionValue.Unit;

UO.FontColor

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

Firmas de C#

void UO.FontColor(object? color);

Establece hue en el UO.UOAMessage local posterior de este script. No cambia el color del habla del personaje, ni el tema normal UO.Print, InfoFindList o IDE.

Parámetros

  • color — Índice numérico obligatorio hue 0..65535, por ejemplo 0x0044. Este no es RGB. int se almacena en el interior y cuando la salida se reduce a ushort; -1 NO significa restablecer y se convierte en 65535. El valor inicial del nuevo tiempo de ejecución es 0x03B2. No hay forma sin argumento.

Valor devuelto

void: sin resultado, color antiguo o señal de éxito. Para revertir su configuración más tarde, almacene el hue seleccionado en una variable de secuencia de comandos.

Comportamiento

  • Solo cambia de estado.FontColor, no imprime mensaje ni envía paquete de red.
  • Válido hasta el próximo FontColor en el mismo tiempo de ejecución. Otro guión independiente tiene su propio estado. UO.Print(text,color) establece el color directamente y no lee FontColor.

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.FontColor");
UO.FontColor(0x0021);

1. Alerta de inventario destacado: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • 0x0021 — índice hue; El tono final depende de la ficha de tonos del cliente. El mensaje es visible localmente; no lo dice el personaje.
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
    UO.UOAMessage("No gold in the loaded backpack");
}
else
{
    UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}

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

2. Procedimiento general de notificación de color: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Aviso completo acepta texto y hue. El último hue instalado permanece para el próximo UOAMessage de este tiempo de ejecución. No hay FontColor() incorporado para leer aquí.
return  RunScenario();
 object? RunScenario()
{
    Notice("Supplies checked", 0x0044);
    Notice("Restock needed", 0x0021);
    return null;
}

void Notice(dynamic text, dynamic hue)
{
    UO.FontColor(hue);
    UO.UOAMessage(text);
}

3. Volver al color base conocido: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • 0x03B2: valor inicial FontColor del nuevo tiempo de ejecución. Finalmente devuelve exactamente la base seleccionada en el manejo normal de finalización/error; no restaura el valor anterior desconocido.
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 baseHue = 0x03B2;
        try
        {
            UO.FontColor(0x0021);
            UO.UOAMessage("Check the route before moving");
        }
        finally
        {
            UO.FontColor(baseHue);
        }

        UO.UOAMessage("Ready");
        UO.Print("Regular Print keeps its own color");
        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.FontColor(color) — UO.FontColor(Any)

Parámetros: color (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "fontcolor": state.FontColor = Arg(0, state.FontColor); break;

UO.HelpRequest

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

Firmas de C#

void UO.HelpRequest();

Solicita el menú de ayuda del servidor.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • ExecuteClientApiCompatibility llama a HelpRequest, que envía GameActions.RequestHelp a través de Invoke. El contenido del menú lo determina el servidor.
  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.

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.HelpRequest");
UO.HelpRequest();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Solicita el menú de ayuda del servidor.
UO.HelpRequest();

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

Parámetros y flujo de ejecución:

  • ExecuteClientApiCompatibility llama a HelpRequest, que envía GameActions.RequestHelp a través de Invoke. El contenido del menú lo determina el servidor.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.HelpRequest();
    }

    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. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.
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()
    {
        if (Truth(UO.IsOnline()))
        {
            UO.HelpRequest();
            UO.Print("Help requested");
        }

        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.HelpRequest() — UO.HelpRequest()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "helprequest": bridge.HelpRequest(); return InjectionValue.Unit;

UO.Hide

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

Firmas de C#

void UO.Hide();
void UO.Hide(object? serial);

Elimina un elemento cargado u otro personaje de la pantalla ClassicUO. Ayuda a eliminar objetos que interfieren; trabaja con artículos dentro de contenedores y artículos comerciales, equipados en la muñeca de papel y en sus pequeñas ranuras para equipos.

Parámetros

  • serial — Numérico serial o su cadena hexadecimal/decimal. Esto no es type. Para un objeto con nombre, primero obtenga la cadena numérica mediante GetSerial(nombre). Sin discusión, aparece un objetivo local.

Valor devuelto

void: sin valor de retorno. El resultado no se puede asignar como serial, graphic/type, cantidad o true/false. La información se envía a la interfaz/registro en lugar de devolverse al script.

Comportamiento

  • Hide() abre una mira local e inmediatamente devuelve el control al script. Haga clic en un elemento de la muñeca de papel, un elemento en un contenedor abierto o un objeto en el mundo. Escape cancela la selección.
  • Hide(serial) actúa inmediatamente sobre un objeto cargado conocido. Pase serial de una pila/elemento específico en lugar de graphic/type. La pila seleccionada se oculta por completo, independientemente de la Cantidad.
  • El artículo permanece en el contenedor: la cantidad, el propietario, el contenido y el estado del servidor no cambian. FindType/GetContent todavía puede encontrarlo. Ocultar no es un filtro de búsqueda, transferencia, eliminación, habilidad de ocultación o invisibilidad del lado del servidor.
  • El contenedor normal, la ventana de comercio y la cuadrícula de botín no dibujan el elemento oculto y no aceptan clics/arrastres sobre él. La bandera persiste cuando la ventana se reconstruye y se vuelve a abrir mientras el mismo objeto cargado está en uso.
  • El objeto equipado desaparece del muñeco de papel, de la ranura pequeña y de la imagen del personaje. Permanece equipado: la capa, armadura y estado en el servidor no cambian. La bata oculta ya no se superpone a la ropa interior. La imagen del personaje en el administrador se actualiza usando la misma bandera; la lista del equipo real permanece disponible.
  • Hide no oculta su propio carácter, terreno y estática. El inexistente serial da un mensaje. Ocultar la bolsa en sí no cierra la ventana de contenido que ya está abierta, ni oculta automáticamente cada elemento incluido.
  • No hay ningún comando Mostrar por separado en el API actual. Ocultar pertenece a la instancia del objeto cargado: eliminarlo del mundo del cliente y cargarlo nuevamente (por ejemplo, al volver a conectarse) restablece la bandera. Simplemente cerrar/abrir un cofre no es una forma garantizada de devolver un artículo.

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.Hide");
UO.Hide();

1. Ocultar un objeto en un cofre abierto - guión directo

Parámetros y flujo de ejecución:

  • No hay parámetros. Después de hacer clic, solo desaparece el elemento seleccionado; El contenido del cofre en el servidor no cambia.
UO.Hide();
UO.Print("Select an item to hide locally");

2. Ocultar pila encontrada en la mochila - función de script

Parámetros y flujo de ejecución:

  • Hide recibe ID del resultado de la búsqueda, no 0x0EED. Si no hay resultado, la llamada no se ejecuta. La unidad de Hide no se puede comparar con true/false.
return  RunScenario();
 object? RunScenario()
{
    var item = UO.FindType(0x0EED, -1, "backpack");
    if (Truth(item == ""))
    {
        UO.Print("No loaded matching item");
        return null;
    }

    UO.Hide(item);
    UO.Print("Stack amount: " + Convert.ToString(UO.GetQuantity(item)));
    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. Ocultar un elemento específico de un objeto guardado - clase de script

Parámetros y flujo de ejecución:

  • El objeto nombrado se resuelve primero mediante GetSerial. Marcar Exists significa presencia en la memoria, ocultación fallida o disponibilidad para la transferencia.
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.GetSerial("decoration");
        if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
        {
            UO.Hide(item);
        }
        else
        {
            UO.Print("Select a loaded object other than self");
        }

        return null;
    }

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

4. Retire la bata de la imagen, dejándola puesta - guión directo

Parámetros y flujo de ejecución:

  • 22 es el número de capa, no serial o type. Primero ObjAtLayer recibe serial, luego Hide oculta la imagen de esa cosa en particular. No se realizan retiros ni traslados del artículo; Reabrir Paperdoll no lo muestra.
var robe = UO.ObjAtLayer(22);
if (Truth(robe == 0))
{
    UO.Print("No robe equipped");
    return null;
}
UO.Hide(robe);

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.Hide() — UO.Hide()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void Hide()

        {

            // Action command: the bridge owns UI/error reporting. A missing/non-interactive

            // target surface must not turn a void compatibility command into a script failure.

            bridge.RequestInteractiveHideTarget();

        }

UO.Hide(serial) — UO.Hide(Any)

Parámetros: serial (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void Hide(InjectionValue serial)

        {

            bridge.ClientHide(NumberConversions.ToInt(serial));

        }

UO.Morph

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

Firmas de C#

void UO.Morph(object? @type);

Cambia localmente el graphic del personaje actual.

Parámetros

  • type - int body graphic o la cadena type resuelta por ResolveType. 0 restaura graphic guardado con el primer Morph; un número distinto de cero se reduce a ushort.

Valor devuelto

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

Comportamiento

  • Puente.Morph sin Player no cambia nada. La primera vez que se llama, guarda _originalGraphic y luego lo asigna a Player.Graphic. Actualizaciones en tiempo de ejecución ticksAnim=Timer incluso si falta el reproductor.
  • Esta es una apariencia local, no una transformación del servidor o un cambio en la raza/habilidades disponibles. Esta función de puente no verifica los valores fuera de ushort y se reducen a bits 16.

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.Morph");
UO.Morph("0x0190");

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Cambia localmente el graphic del personaje actual.
UO.Morph("0x0190");

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

Parámetros y flujo de ejecución:

  • Puente.Morph sin Player no cambia nada. La primera vez que se llama, guarda _originalGraphic y luego lo asigna a Player.Graphic. Actualizaciones en tiempo de ejecución ticksAnim=Timer incluso si falta el reproductor.
return  RunScenario();
 object? RunScenario()
{
    UO.Morph(0);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Esta es una apariencia local, no una transformación del servidor o un cambio en la raza/habilidades disponibles. Esta función de puente no verifica los valores fuera de ushort y se reducen a bits 16.
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.Morph("0x0190");
        UO.Wait(500);
        UO.Morph(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.Morph(type) — UO.Morph(Integer)

Parámetros: type (Integer/String)

Resultado: void / Unit.

Durante la llamada:

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

public void Morph(int type)

        {

            bridge.Morph(type);

            ticksAnim = Timer();

        }

UO.Morph(type) — UO.Morph(String)

Parámetros: type (Integer/String)

Resultado: void / Unit.

Durante la llamada:

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

public void Morph(string type) => Morph(ResolveType(type));

UO.OpenIDE

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

Firmas de C#

void UO.OpenIDE();
void UO.OpenIDE(object? filePath);

Parámetros

  • filePath — Ruta opcional. En blanco/espacio en blanco: abre el editor sin seleccionar un archivo; relativo se resuelve desde _manager.AutoloadPath, se conserva absoluto.

Valor devuelto

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

Comportamiento

  • Bridge.OpenIDE prepara la ruta solicitada, luego Invoke llama a YokoScriptEditorGump.Open(_world,requested). El script del archivo no se ejecuta con el comando OpenIDE.
  • El editor es una ventana gráfica, no una aplicación externa Launch. Leer/mostrar el archivo depende de la existencia de la ruta y la lógica del editor.

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.OpenIDE");
UO.OpenIDE();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Abre el editor gráfico C# IDE.
UO.OpenIDE();

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

Parámetros y flujo de ejecución:

  • Bridge.OpenIDE prepara la ruta solicitada, luego Invoke llama a YokoScriptEditorGump.Open(_world,requested). El script del archivo no se ejecuta con el comando OpenIDE.
return  RunScenario();
 object? RunScenario()
{
    UO.OpenIDE("Example.csx");
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • El editor es una ventana gráfica, no una aplicación externa Launch. Leer/mostrar el archivo depende de la existencia de la ruta y la lógica del editor.
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 path = "C:\\UO Scripts\\Example.csx";
        UO.OpenIDE(path);
        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.OpenIDE() — UO.OpenIDE()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void OpenIDE() => bridge.OpenIDE(string.Empty);

UO.OpenIDE(filePath) — UO.OpenIDE(Any)

Parámetros: filePath (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void OpenIDE(InjectionValue filePath) => bridge.OpenIDE(filePath.ToString());

UO.Print

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

Firmas de C#

void UO.Print(object? msg);
void UO.Print(object? msg, object? color);

Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.

Parámetros

  • color - UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits bajos 16. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado. Sin color se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
  • UO.Print agrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración.
  • Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

Ejemplo .csx

UO.Print("C# script started");
UO.Print($"Position: {UO.GetX()}, {UO.GetY()}");

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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.

UO.Print("Hello from C#");

1. Breve reportaje - guión directo

Parámetros y flujo de ejecución:

  • procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);

2. Advertencia de sobrecarga: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.Print("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum), 0x0044);
        return null;
    }

    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. Informar únicamente de cambios de peso: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.Print("Weight changed: " + Convert.ToString(current), 0x0044);
        }

        return current;
    }

    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.Print(msg) — UO.Print(Any)

Parámetros: msg (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void Print(InjectionValue msg)

        {

            bridge.Print(msg.ToString());

        }

UO.Print(msg, color) — UO.Print(Any,Any)

Parámetros: msg (Any), color (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void Print(InjectionValue msg, InjectionValue color)

        {

            bridge.Print(NumberConversions.ToInt(color), msg.ToString());

        }

UO.RemoveFigure

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

Firmas de C#

dynamic UO.RemoveFigure(object? figureID);

Elimina una figura del mapa local por su ID.

Parámetros

  • figureID - int ID, devolvió AddFigure. Este no es un artículo serial ni un chicle ID.

Valor devuelto

int — el resultado del puente.RemoveMapFigure: 1/0 por la presencia de una figura eliminada. La entrada del tiempo de ejecución se elimina independientemente del resultado del puente.

Comportamiento

  • Primero llama a bridge.RemoveMapFigure, luego state.MapFigures.Remove(id), luego devuelve el resultado del puente. Desconocido ID no crea una forma ni desencadena una acción del servidor.
  • La figura local del mapa no es un objeto del mundo. Otras formas y geometría del servidor no cambian.
  • WorldMapGump almacena imágenes en el diccionario estático del proceso. Los scripts/chat/macros regulares de un mundo/perfil usan un GetPersistentState común y un contador ID; Los procesos de Individual Manager no comparten dibujos. World.Clear/YokoScripts.Clear y el estado de carga del perfil no borran ni restauran este diccionario (el cargador solo restaura UserStatics). Por tanto, los dibujos pueden sobrevivir a un cambio de mundo/perfil en el mismo proceso, teniendo en cuenta worldNum; el nuevo estado puede volver a enfatizar un dibujo ID ya existente. ClearFigures borra explícitamente los dibujos y los registros del estado actual. Éxito: escritura/eliminación de datos, no prueba de visualizació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.

var id = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print("Removed flag: " + Convert.ToString(UO.RemoveFigure(id)));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Elimina una figura del mapa local por su ID.
UO.Print(UO.RemoveFigure(1));

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

Parámetros y flujo de ejecución:

  • Primero llama a bridge.RemoveMapFigure, luego state.MapFigures.Remove(id), luego devuelve el resultado del puente. Desconocido ID no crea una forma ni desencadena una acción del servidor.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.RemoveFigure(id));
    }

    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. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • La figura local del mapa no es un objeto del mundo. Otras formas y geometría del servidor no cambian.
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 id = 1;
        var first = UO.RemoveFigure(id);
        var second = UO.RemoveFigure(id);
        UO.Print(Convert.ToString(first) + " " + Convert.ToString(second));
        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.RemoveFigure(figureID) — UO.RemoveFigure(Any)

Parámetros: figureID (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "removefigure":

                {

                    int id = Arg(0);

                    int removed = bridge.RemoveMapFigure(id);

                    state.MapFigures.Remove(id);

                    return new InjectionValue(removed);

                }

UO.ServerPrint

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

Firmas de C#

void UO.ServerPrint(object? message);

Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.

Parámetros

Valor devuelto

Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.

Comportamiento

  • El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
  • UO.Print agrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración.
  • Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
  • A pesar del nombre del Servidor o de la similitud con un mensaje de red, el comando sólo imprime texto local. Para hablar con el mundo, use UO.Say.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.

UO.ServerPrint("Hello from C#");

1. Breve reportaje - guión directo

Parámetros y flujo de ejecución:

  • procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ServerPrint("Processed item entries: " + Convert.ToString(processed));

2. Advertencia de sobrecarga: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.ServerPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    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. Informar únicamente de cambios de peso: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
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 previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.ServerPrint("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

    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.ServerPrint(message) — UO.ServerPrint(String)

Parámetros: message (String)

Resultado: void / Unit.

Durante la llamada:

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

public void ServerPrint(string message) => bridge.ServerPrint(message);

UO.SetShowZ

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

Firmas de C#

void UO.SetShowZ(object? stateValue);

Cambia el indicador local showZ tiempo de ejecución.

Parámetros

  • stateValue - 0 se apaga; cualquier número entero distinto de cero incluye.

Valor devuelto

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

Comportamiento

  • Asigna showZ el valor de 0 o 1 después de NumberConversions.ToInt. Esta función en sí no cambia las coordenadas y no envía el paquete.
  • Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.

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.SetShowZ");
UO.SetShowZ(1);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Cambia el indicador local showZ tiempo de ejecución.
UO.SetShowZ(1);

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

Parámetros y flujo de ejecución:

  • Asigna showZ el valor de 0 o 1 después de NumberConversions.ToInt. Esta función en sí no cambia las coordenadas y no envía el paquete.
return  RunScenario();
 object? RunScenario()
{
    UO.SetShowZ(0);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.
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()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetShowZ(value);
    }
}

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.SetShowZ(stateValue) — UO.SetShowZ(Any)

Parámetros: stateValue (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void SetShowZ(InjectionValue stateValue) => showZ = NumberConversions.ToInt(stateValue) != 0 ? 1 : 0;

UO.SetSilentMode

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

Firmas de C#

void UO.SetSilentMode(object? value);

Cambia el indicador local SilentMode tiempo de ejecución.

Parámetros

  • value - 0 se apaga; cualquier número entero distinto de cero incluye.

Valor devuelto

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

Comportamiento

  • Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
  • En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.

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.SetSilentMode");
UO.SetSilentMode(1);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
UO.SetSilentMode(1);

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

Parámetros y flujo de ejecución:

  • Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
return  RunScenario();
 object? RunScenario()
{
    UO.SetSilentMode(0);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
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()
    {
        ApplyValue(1);
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetSilentMode(value);
    }
}

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.SetSilentMode(value) — UO.SetSilentMode(Any)

Parámetros: value (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "setsilentmode": state.SilentMode = Arg(0) != 0 ? 1 : 0; return InjectionValue.Unit;

UO.ShowJournal

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

Firmas de C#

void UO.ShowJournal();

Abre una ventana de registro de cliente local.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • ShowJournal llama a GameActions.OpenJournal(_world). Los registros no se borran y el texto no se envía al servidor.
  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del 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 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.ShowJournal");
UO.ShowJournal();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Abre una ventana de registro de cliente local.
UO.ShowJournal();

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

Parámetros y flujo de ejecución:

  • ShowJournal llama a GameActions.OpenJournal(_world). Los registros no se borran y el texto no se envía al servidor.
return  RunScenario();
 object? RunScenario()
{
    UO.Print("Journal example");
    UO.ShowJournal();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del 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()
    {
        UO.ShowJournal();
        UO.Print(UO.LineCount());
        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.ShowJournal() — UO.ShowJournal()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "showjournal": bridge.ShowJournal(); break;

UO.Snap

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

Firmas de C#

int UO.Snap();
int UO.Snap(object? name);
int UO.Snap(object? name, object? quality);
int UO.Snap(object? file, object? quality, object? includeUI);

Guarda una instantánea de la ventana gráfica del cliente.

Parámetros

  • name: nombre de archivo opcional. .jpg/.jpeg selecciona JPEG, otro/ninguno selecciona PNG. Se eliminan los directorios del nombre; Sólo se utiliza el nombre base.
  • file: nombre de archivo opcional. .jpg/.jpeg selecciona JPEG, otro/ninguno selecciona PNG. Se eliminan los directorios del nombre; Sólo se utiliza el nombre base.
  • quality: int opcional, por defecto es 100, limitado a 1...100. Afecta a JPEG; PNG no utiliza calidad con pérdida.
  • includeUI: opcional bool, predeterminado true. false dibuja el mundo/la iluminación sin UI.

Valor devuelto

Indicador numérico int: 1 - archivo de imagen guardado, 0 - error de captura/escritura. Sin una ventana gráfica, RequireGameView arroja un error antes de TakeScreenshot.

Comportamiento

  • TakeScreenshot escribe en ExecutablePath/Datos/Cliente/Capturas de pantalla, borra los caracteres de nombre no válidos, selecciona automáticamente el nombre por fecha si está vacío, agrega _2/_3 si hay un archivo existente. No se utiliza una ruta absoluta arbitraria.
  • Con UI lee el backbuffer; sin UI crea RenderTarget2D y representa el mundo. JPEG fija temporalmente FNA_GRAPHICS_JPEG_SAVE_QUALITY con restauración; PNG SaveAsPng. Los errores dentro de TakeScreenshot se registran y se indican como 0.

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.Snap();
UO.Print("Snap: " + Convert.ToString(result));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Guarda una instantánea de la ventana gráfica del cliente.
UO.Print(UO.Snap());

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

Parámetros y flujo de ejecución:

  • TakeScreenshot escribe en ExecutablePath/Datos/Cliente/Capturas de pantalla, borra los caracteres de nombre no válidos, selecciona automáticamente el nombre por fecha si está vacío, agrega _2/_3 si hay un archivo existente. No se utiliza una ruta absoluta arbitraria.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Snap("manual-example.jpg", 85));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Con UI lee el backbuffer; sin UI crea RenderTarget2D y representa el mundo. JPEG fija temporalmente FNA_GRAPHICS_JPEG_SAVE_QUALITY con restauración; PNG SaveAsPng. Los errores dentro de TakeScreenshot se registran y se indican como 0.
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.Print(UO.Snap("manual-world.png", 100, false));
        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.Snap() — UO.Snap()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

public int Snap() => bridge.Snap(null, 100, true);

UO.Snap(name) — UO.Snap(String)

Parámetros: name (String)

Resultado: int / Integer.

Durante la llamada:

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

public int Snap(string name) => bridge.Snap(name, 100, true);

UO.Snap(name, quality) — UO.Snap(String,Integer)

Parámetros: name (String), quality (Integer)

Resultado: int / Integer.

Durante la llamada:

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

public int Snap(string name, int quality) => bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true);

UO.Snap(file, quality, includeUI) — UO.Snap(Any,Any,Any)

Parámetros: file (Any), quality (Any), includeUI (Any)

Resultado: int / Integer.

Durante la llamada:

La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.

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

values => new InjectionValue(Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])))

UO.TextClear

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

Firmas de C#

void UO.TextClear();

Borra el búfer de la ventana de texto local.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • Borra _textWindow; si la ventana estaba abierta, la vuelve a mostrar con una lista vacía. Una ventana cerrada permanece cerrada. El registro del cliente no se borra.
  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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 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.TextClear");
UO.TextClear();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Borra el búfer de la ventana de texto local.
UO.TextClear();

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

Parámetros y flujo de ejecución:

  • Borra _textWindow; si la ventana estaba abierta, la vuelve a mostrar con una lista vacía. Una ventana cerrada permanece cerrada. El registro del cliente no se borra.
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Old line");
    UO.TextClear();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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()
    {
        UO.TextClose();
        UO.TextClear();
        UO.TextOpen();
        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.TextClear() — UO.TextClear()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void TextClear() => bridge.TextClear();

UO.TextClose

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

Firmas de C#

void UO.TextClose();

Cierra la ventana de texto local, guardando el búfer.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • Establece _textWindowOpen=false y elimina el YokoTextWindowGump existente. La lista _textWindow no se borra; TextOpen volverá a mostrar sus líneas.
  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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 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.TextClose");
UO.TextClose();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Cierra la ventana de texto local, guardando el búfer.
UO.TextClose();

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

Parámetros y flujo de ejecución:

  • Establece _textWindowOpen=false y elimina el YokoTextWindowGump existente. La lista _textWindow no se borra; TextOpen volverá a mostrar sus líneas.
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Retained line");
    UO.TextClose();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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()
    {
        UO.TextPrint("Retained line");
        UO.TextClose();
        UO.Wait(250);
        UO.TextOpen();
        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.TextClose() — UO.TextClose()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void TextClose() => bridge.TextClose();

UO.TextOpen

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

Firmas de C#

void UO.TextOpen();

Abre una ventana de texto local.

Parámetros

No hay parámetros.

Valor devuelto

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

Comportamiento

  • Almacena _textWindowOpen=true y llama a YokoTextWindowGump.Show con la _textWindow actual. El búfer no se borra; La reapertura muestra las filas acumuladas.
  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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 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.TextOpen");
UO.TextOpen();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Abre una ventana de texto local.
UO.TextOpen();

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

Parámetros y flujo de ejecución:

  • Almacena _textWindowOpen=true y llama a YokoTextWindowGump.Show con la _textWindow actual. El búfer no se borra; La reapertura muestra las filas acumuladas.
return  RunScenario();
 object? RunScenario()
{
    UO.TextPrint("Example");
    UO.TextOpen();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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()
    {
        UO.TextOpen();
        UO.Wait(500);
        UO.TextClose();
        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.TextOpen() — UO.TextOpen()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void TextOpen() => bridge.TextOpen();

UO.TextPrint

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

Firmas de C#

void UO.TextPrint(object? text);

Agrega una línea a una ventana de texto local y la abre.

Parámetros

  • text — Texto a través de ToString; guardado como transmitido.

Valor devuelto

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

Comportamiento

  • En el límite, MaxTextWindowLines=2000 elimina líneas antiguas, luego agrega texto o una línea vacía, establece _textWindowOpen=true y muestra la ventana. Esto no es UO.Print en el registro ni es un discurso dirigido al servidor.
  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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 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.TextPrint");
UO.TextPrint("Example");

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Agrega una línea a una ventana de texto local y la abre.
UO.TextPrint("Example");

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

Parámetros y flujo de ejecución:

  • En el límite, MaxTextWindowLines=2000 elimina líneas antiguas, luego agrega texto o una línea vacía, establece _textWindowOpen=true y muestra la ventana. Esto no es UO.Print en el registro ni es un discurso dirigido al servidor.
return  RunScenario();
 object? RunScenario()
{
    var message = "Line 1";
    UO.TextPrint(message);
    UO.TextPrint("Line 2");
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del 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()
    {
        UO.TextClear();
        UO.TextPrint("Fresh report");
        UO.TextClose();
        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.TextPrint(text) — UO.TextPrint(String)

Parámetros: text (String)

Resultado: void / Unit.

Durante la llamada:

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

public void TextPrint(string text) => bridge.TextPrint(text);

UO.UpdateFigure

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

Firmas de C#

dynamic UO.UpdateFigure(object? figureID, object? figure);

Reemplaza la descripción de una figura de mapa local existente.

Parámetros

  • figureID - int ID en estado. MapFigures recibido por AddFigure. Desconocido ID da 0.
  • figure — Matriz o cadena con |: [tipo,coord,x1,y1,x2,y2,brushColor,brushStyle,color,worldNum,texto]. Primeros campos numéricos 9 mínimos; worldNum es el mapa actual de forma predeterminada, el texto está vacío de forma predeterminada.
  • figure[0] (kind) - el tipo debe ser 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure devuelve 0 cuando se violan estos límites.
  • figure[1] (coord) - el tipo debe ser 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure devuelve 0 cuando se violan estos límites.

Valor devuelto

Indicador numérico int: 1: el análisis se realizó correctamente y se puenteó. SetMapFigure devolvió un resultado distinto de cero, después de lo cual se actualizó el registro; 0 - no ID, error en el campo de texto numérico/estructura o error en el puente.

Comportamiento

  • TryMapFigureArg acepta Array o |string. Los primeros campos 9 se convierten; El texto numérico se verifica con TryStr2Int. Vista no compatible/notación corta: 0, otros errores de conversión de vista pueden romper el script.
  • Si el puente falla, la entrada de tiempo de ejecución existente no se reemplaza. Si tiene éxito, guarda SerializeMapFigure con 10 campos numéricos y texto. La figura es sólo local, no un elemento del servidor.
  • tipo: 0 línea, 1 elipse (32 segmento de contorno), 2 contorno de rectángulo, 3 flecha, 4 texto. coord=0 — coordenadas mundiales con conversión al mapa, coord=1 — píxeles relativos al área de dibujo del mapa. x1/y1 y x2/y2 - extremos/límites; para la flecha mundial x2=y2=0 establece el comienzo del Jugador y la meta de x1/y1. color: 0x00BBGGRR (byte bajo rojo), color de contorno. brushColor/brushStyle se guardan, pero el render no los lee: no hay relleno. worldNum<0 se muestra en cualquier mapa; de lo contrario, solo en el especificado. El texto se dibuja en el primer punto (+3 píxeles para formas que no son de texto) en la fuente del mapa, no en el color del contorno.
  • WorldMapGump almacena imágenes en el diccionario estático del proceso. Los scripts/chat/macros regulares de un mundo/perfil usan un GetPersistentState común y un contador ID; Los procesos de Individual Manager no comparten dibujos. World.Clear/YokoScripts.Clear y el estado de carga del perfil no borran ni restauran este diccionario (el cargador solo restaura UserStatics). Por tanto, los dibujos pueden sobrevivir a un cambio de mundo/perfil en el mismo proceso, teniendo en cuenta worldNum; el nuevo estado puede volver a enfatizar un dibujo ID ya existente. ClearFigures borra explícitamente los dibujos y los registros del estado actual. Éxito: escritura/eliminación de datos, no prueba de visualizació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.

object?[] figure = { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 };
var id = UO.AddFigure(figure);
figure[8] = 65280;
UO.Print("Updated flag: " + Convert.ToString(UO.UpdateFigure(id, figure)));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Reemplaza la descripción de una figura de mapa local existente.
dynamic[] figure = new dynamic[checked((int)(8) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = 100;
figure[3] = 100;
figure[4] = 101;
figure[5] = 101;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
UO.Print(UO.UpdateFigure(1, figure));

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

Parámetros y flujo de ejecución:

  • TryMapFigureArg acepta Array o |string. Los primeros campos 9 se convierten; El texto numérico se verifica con TryStr2Int. Vista no compatible/notación corta: 0, otros errores de conversión de vista pueden romper el script.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] figure = new dynamic[checked((int)(10) + 1)];
    figure[0] = 0;
    figure[1] = 0;
    figure[2] = UO.GetX();
    figure[3] = UO.GetY();
    figure[4] = UO.GetX() + 1;
    figure[5] = UO.GetY() + 1;
    figure[6] = 0;
    figure[7] = 0;
    figure[8] = 0;
    figure[9] = UO.WorldNum();
    figure[10] = "Example";
    var id = UO.AddFigure(figure);
    if (Truth(id > 0))
    {
        UO.Print(UO.UpdateFigure(id, figure));
        UO.RemoveFigure(id);
    }

    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. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Si el puente falla, la entrada de tiempo de ejecución existente no se reemplaza. Si tiene éxito, guarda SerializeMapFigure con 10 campos numéricos y texto. La figura es sólo local, no un elemento del 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 figure = "0|0|100|100|101|101|0|0|0";
        UO.Print(UO.UpdateFigure(1, figure));
        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.UpdateFigure(figureID, figure) — UO.UpdateFigure(Any,Any)

Parámetros: figureID (Any), figure (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "updatefigure":

                {

                    int id = Arg(0);

                    if (!state.MapFigures.ContainsKey(id) || !TryMapFigureArg(1, out int[] figure, out string figureText))

                        return InjectionValue.False;

                    if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)

                        return InjectionValue.False;

                    state.MapFigures[id] = SerializeMapFigure(figure, figureText);

                    return InjectionValue.True;

                }

Clone this wiki locally