Skip to content

ES UO Topic mouse keyboard

Codex edited this page Oct 12, 2026 · 4 revisions

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

Ratón y teclado

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

Entrada de ratón y teclado. Las coordenadas de la pantalla, las celdas del mundo y las coordenadas dentro de un gump tienen significados diferentes.

Secciones

Tema Comandos y explicaciones
Click UO.Click
LClick UO.LClick
RClick UO.RClick
DoubleClick UO.LDblClick · UO.RDblClick
KeyPress UO.KeyPress
Press UO.Press

Todos los comandos del tema

Aporte

UO.Click · UO.LClick · UO.RClick · UO.LDblClick · UO.RDblClick · UO.KeyPress · UO.Press

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

Parámetros, resultado y todos los escenarios

UO.LClick(100, 100);

UO.KeyPress

Parámetros, resultado y todos los escenarios

UO.KeyPress(0x70);

Referencia completa de comandos


UO.Click

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

Firmas de C#

void UO.Click(object? name);

Envía un solo clic en un objeto a través de GameActions.SingleClick.

Parámetros

  • name — 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

  • Click resuelve el enlace a través de ObjectChecked. ClickOnObject primero usa Arg para serial y llama a Click(int). Esta es una solicitud de firma/información del artículo, no DoubleClick o uso del artículo. La respuesta del servidor llega de forma asincrónica.

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

1. Haga clic en el personaje - guión directo

Parámetros y flujo de ejecución:

  • Se envía un solo clic a self.
UO.Click("self");

2. Haga clic en el último objetivo: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • Antes de enviar, se comprueba la existencia local del objetivo.
return  RunScenario();
 object? RunScenario()
{
    var target = UO.LastTarget();
    if (Truth(UO.Exists(target)))
    {
        UO.Click(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. Harán clic en la mochila - clase de guión

Parámetros y flujo de ejecución:

  • Un solo clic en una mochila no la abre como si se hiciera doble clic en ella.
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 bag = UO.Backpack();
        if (Truth(bag != 0))
        {
            UO.Click(bag);
        }

        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.Click(name) — UO.Click(Any)

Parámetros: name (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));

UO.KeyPress

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

Firmas de C#

void UO.KeyPress(object? key);
void UO.KeyPress(object? key, object? count);
void UO.KeyPress(object? key, object? count, object? delay);

Sintetiza una o más pulsaciones de teclas virtuales.

Parámetros

  • key - int clave virtual de Windows, convertida a byte. No es una cadena de caracteres ni es un objetivo ID.
  • count: número opcional de repeticiones, predeterminado 1. 0/negativo: sin presionar ni esperar.
  • delay - Pausa opcional de milisegundos después de cada pulsación, incluida la última; el valor predeterminado es 105. Transmitido por puente.Wait sin mayor restricción por esta función.

Valor devuelto

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

Comportamiento

  • Press reenvía todos los formularios a KeyPress. KeyPress ejecuta un conteo de bucle>0: puente.KeyPress(clave), puente.Wait(retraso), conteo--. Bridge envía al usuario32 keybd_event abajo/arriba.
  • Requiere Graphics ClassicUO abierto con foco de entrada; de lo contrario, RequireGameInput arroja un error. El clic procesa la interfaz/macro actual, el resultado del comando del servidor no se devuelve.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza una o más pulsaciones de teclas virtuales.
UO.KeyPress(0x70);

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

Parámetros y flujo de ejecución:

  • Press reenvía todos los formularios a KeyPress. KeyPress ejecuta un conteo de bucle>0: puente.KeyPress(clave), puente.Wait(retraso), conteo--. Bridge envía al usuario32 keybd_event abajo/arriba.
return  RunScenario();
 object? RunScenario()
{
    UO.KeyPress(0x70, 2, 250);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere Graphics ClassicUO abierto con foco de entrada; de lo contrario, RequireGameInput arroja un error. El clic procesa la interfaz/macro actual, el resultado del comando del servidor no se devuelve.
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.KeyPress(0x70, 0);
        UO.Print("Zero count sends no key");
        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.KeyPress(key) — UO.KeyPress(Integer)

Parámetros: key (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void KeyPress(int key) => KeyPress(key, 1);

UO.KeyPress(key, count) — UO.KeyPress(Integer,Integer)

Parámetros: key (Integer), count (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void KeyPress(int key, int count) => KeyPress(key, count, 105);

UO.KeyPress(key, count, delay) — UO.KeyPress(Integer,Integer,Integer)

Parámetros: key (Integer), count (Integer), delay (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void KeyPress(int key, int count, int delay)

        {

            while (count > 0)

            {

                bridge.KeyPress(key);

                bridge.Wait(delay);

                count--;

            }

        }

UO.LClick

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

Firmas de C#

void UO.LClick(object? x, object? y);

Sintetiza con un solo clic del ratón: botón izquierdo.

Parámetros

  • x: int X en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.
  • y: int Y en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.

Valor devuelto

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

Comportamiento

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba una vez. No hay pausa entre dobles clics.
  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz actual.

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.LClick");
UO.LClick(100, 100);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza con un solo clic del ratón: botón izquierdo.
UO.LClick(100, 100);

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

Parámetros y flujo de ejecución:

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba una vez. No hay pausa entre dobles clics.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LClick(x, y);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz 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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LClick(x, y);
    }
}

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.LClick(x, y) — UO.LClick(Integer,Integer)

Parámetros: x (Integer), y (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void LClick(int x, int y) => bridge.LClick(x, y);

UO.LDblClick

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

Firmas de C#

void UO.LDblClick(object? x, object? y);

Sintetiza un doble clic del ratón: botón izquierdo.

Parámetros

  • x: int X en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.
  • y: int Y en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.

Valor devuelto

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

Comportamiento

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba dos veces. No hay pausa entre dobles clics.
  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz actual.

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.LDblClick");
UO.LDblClick(100, 100);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza un doble clic del ratón: botón izquierdo.
UO.LDblClick(100, 100);

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

Parámetros y flujo de ejecución:

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba dos veces. No hay pausa entre dobles clics.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.LDblClick(x, y);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz 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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.LDblClick(x, y);
    }
}

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.LDblClick(x, y) — UO.LDblClick(Integer,Integer)

Parámetros: x (Integer), y (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void LDblClick(int x, int y) => bridge.LDblClick(x, y);

UO.Press

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

Firmas de C#

void UO.Press(object? key);
void UO.Press(object? key, object? count);
void UO.Press(object? key, object? count, object? delay);

Sintetiza una o más pulsaciones de teclas virtuales.

Parámetros

  • key - int clave virtual de Windows, convertida a byte. No es una cadena de caracteres ni es un objetivo ID.
  • count: número opcional de repeticiones, predeterminado 1. 0/negativo: sin presionar ni esperar.
  • delay - Pausa opcional de milisegundos después de cada pulsación, incluida la última; el valor predeterminado es 105. Transmitido por puente.Wait sin mayor restricción por esta función.

Valor devuelto

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

Comportamiento

  • Press reenvía todos los formularios a KeyPress. KeyPress ejecuta un conteo de bucle>0: puente.KeyPress(clave), puente.Wait(retraso), conteo--. Bridge envía al usuario32 keybd_event abajo/arriba.
  • Requiere Graphics ClassicUO abierto con foco de entrada; de lo contrario, RequireGameInput arroja un error. El clic procesa la interfaz/macro actual, el resultado del comando del servidor no se devuelve.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza una o más pulsaciones de teclas virtuales.
UO.Press(0x70);

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

Parámetros y flujo de ejecución:

  • Press reenvía todos los formularios a KeyPress. KeyPress ejecuta un conteo de bucle>0: puente.KeyPress(clave), puente.Wait(retraso), conteo--. Bridge envía al usuario32 keybd_event abajo/arriba.
return  RunScenario();
 object? RunScenario()
{
    UO.Press(0x70, 2, 250);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere Graphics ClassicUO abierto con foco de entrada; de lo contrario, RequireGameInput arroja un error. El clic procesa la interfaz/macro actual, el resultado del comando del servidor no se devuelve.
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.Press(0x70, 0);
        UO.Print("Zero count sends no key");
        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.Press(key) — UO.Press(Integer)

Parámetros: key (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void Press(int key) => KeyPress(key);

UO.Press(key, count) — UO.Press(Integer,Integer)

Parámetros: key (Integer), count (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void Press(int key, int count) => KeyPress(key, count);

UO.Press(key, count, delay) — UO.Press(Integer,Integer,Integer)

Parámetros: key (Integer), count (Integer), delay (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void Press(int key, int count, int delay) => KeyPress(key, count, delay);

UO.RClick

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

Firmas de C#

void UO.RClick(object? x, object? y);

Sintetiza con un solo clic del ratón: botón derecho.

Parámetros

  • x: int X en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.
  • y: int Y en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.

Valor devuelto

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

Comportamiento

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba una vez. No hay pausa entre dobles clics.
  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz actual.

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.RClick");
UO.RClick(100, 100);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza con un solo clic del ratón: botón derecho.
UO.RClick(100, 100);

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

Parámetros y flujo de ejecución:

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba una vez. No hay pausa entre dobles clics.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RClick(x, y);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz 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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RClick(x, y);
    }
}

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.RClick(x, y) — UO.RClick(Integer,Integer)

Parámetros: x (Integer), y (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void RClick(int x, int y) => bridge.RClick(x, y);

UO.RDblClick

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

Firmas de C#

void UO.RDblClick(object? x, object? y);

Sintetiza un doble clic del ratón: botón derecho.

Parámetros

  • x: int X en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.
  • y: int Y en los píxeles de la ventana de ClassicUO, no en las coordenadas mundiales.

Valor devuelto

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

Comportamiento

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba dos veces. No hay pausa entre dobles clics.
  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz actual.

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.RDblClick");
UO.RDblClick(100, 100);

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Sintetiza un doble clic del ratón: botón derecho.
UO.RDblClick(100, 100);

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

Parámetros y flujo de ejecución:

  • Bridge llama a WarpMouse(x,y), actualiza Mouse.Position y SDL_WarpMouseInWindow, luego MouseButton abajo/arriba dos veces. No hay pausa entre dobles clics.
return  RunScenario();
 object? RunScenario()
{
    var x = 120;
    var y = 140;
    UO.RDblClick(x, y);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Requiere una ventana de gráficos ClassicUO abierta con foco de entrada; de lo contrario, RequireGameInput arroja InvalidOperationException. user32 mouse_event está disponible en Windows. El botón/objeto debajo del punto depende de la interfaz 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()
    {
        ClickAt(100, 100);
        return null;
    }

    void ClickAt(dynamic x, dynamic y)
    {
        UO.RDblClick(x, y);
    }
}

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.RDblClick(x, y) — UO.RDblClick(Integer,Integer)

Parámetros: x (Integer), y (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void RDblClick(int x, int y) => bridge.RDblClick(x, y);

Clone this wiki locally