Repository navigation
ES UO Topic mouse keyboard
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Tema | Comandos y explicaciones |
|---|---|
| Click | UO.Click |
| LClick | UO.LClick |
| RClick | UO.RClick |
| DoubleClick | UO.LDblClick · UO.RDblClick |
| KeyPress | UO.KeyPress |
| Press | UO.Press |
UO.Click · UO.LClick · UO.RClick · UO.LDblClick · UO.RDblClick · UO.KeyPress · UO.Press
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.
Parámetros, resultado y todos los escenarios
UO.LClick(100, 100);Parámetros, resultado y todos los escenarios
UO.KeyPress(0x70);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Click(object? name);Envía un solo clic en un objeto a través de GameActions.SingleClick.
-
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.
void: sin valor de retorno.
- 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.
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.
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");Parámetros y flujo de ejecución:
- Se envía un solo clic a self.
UO.Click("self");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;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;
}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.
Parámetros: name (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Click. -
InjectionScript.Runtime.InjectionApiUO.ObjectChecked:ObjectChecked(name, id => Click(id)). -
InjectionScript.Runtime.InjectionApiUO.Click:Click(id).
Código interno de implementación; no es un script independiente.
public void Click(InjectionValue name) => ObjectChecked(name, id => Click(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza una o más pulsaciones de teclas virtuales.
UO.KeyPress(0x70);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;
}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;
}
}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.
Parámetros: key (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, 1).
Código interno de implementación; no es un script independiente.
public void KeyPress(int key) => KeyPress(key, 1);Parámetros: key (Integer), count (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, 105).
Código interno de implementación; no es un script independiente.
public void KeyPress(int key, int count) => KeyPress(key, count, 105);Parámetros: key (Integer), count (Integer), delay (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.KeyPress. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.KeyPress:bridge.KeyPress(key). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Wait:bridge.Wait(delay).
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--;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.LClick(object? x, object? y);Sintetiza con un solo clic del ratón: botón izquierdo.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza con un solo clic del ratón: botón izquierdo.
UO.LClick(100, 100);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;
}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);
}
}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.
Parámetros: x (Integer), y (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LClick:bridge.LClick(x, y).
Código interno de implementación; no es un script independiente.
public void LClick(int x, int y) => bridge.LClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.LDblClick(object? x, object? y);Sintetiza un doble clic del ratón: botón izquierdo.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza un doble clic del ratón: botón izquierdo.
UO.LDblClick(100, 100);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;
}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);
}
}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.
Parámetros: x (Integer), y (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LDblClick:bridge.LDblClick(x, y).
Código interno de implementación; no es un script independiente.
public void LDblClick(int x, int y) => bridge.LDblClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza una o más pulsaciones de teclas virtuales.
UO.Press(0x70);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;
}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;
}
}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.
Parámetros: key (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key).
Código interno de implementación; no es un script independiente.
public void Press(int key) => KeyPress(key);Parámetros: key (Integer), count (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count).
Código interno de implementación; no es un script independiente.
public void Press(int key, int count) => KeyPress(key, count);Parámetros: key (Integer), count (Integer), delay (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Press. -
InjectionScript.Runtime.InjectionApiUO.KeyPress:KeyPress(key, count, delay).
Código interno de implementación; no es un script independiente.
public void Press(int key, int count, int delay) => KeyPress(key, count, delay);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.RClick(object? x, object? y);Sintetiza con un solo clic del ratón: botón derecho.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza con un solo clic del ratón: botón derecho.
UO.RClick(100, 100);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;
}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);
}
}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.
Parámetros: x (Integer), y (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.RClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RClick:bridge.RClick(x, y).
Código interno de implementación; no es un script independiente.
public void RClick(int x, int y) => bridge.RClick(x, y);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.RDblClick(object? x, object? y);Sintetiza un doble clic del ratón: botón derecho.
-
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.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.
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);Parámetros y flujo de ejecución:
- Sintetiza un doble clic del ratón: botón derecho.
UO.RDblClick(100, 100);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;
}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);
}
}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.
Parámetros: x (Integer), y (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.RDblClick. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RDblClick:bridge.RDblClick(x, y).
Código interno de implementación; no es un script independiente.
public void RDblClick(int x, int y) => bridge.RDblClick(x, y);ClassicUO — Bad Newbie & C# Scripts IDE