Repository navigation
ES UO Topic targeting
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Respuesta manual con cursor de destino y respuesta preestablecida WaitTarget. Establecer una meta esperada y realizar una acción son operaciones separadas.
| Tema | Comandos y explicaciones |
|---|---|
| Target | UO.Target |
| TargetID | UO.TargetID |
| TargetToObject | UO.TargetToObject |
| TargetToTile | UO.TargetToTile |
| TargetToXYZ | UO.TargetToXYZ |
| TargetByResource | UO.TargetByResource |
| WaitTarget | UO.WaitTarget |
| WaitTargetObject | UO.WaitTargetObject |
| WaitTargetType | UO.WaitTargetType |
| WaitTargetTile | UO.WaitTargetTile |
| WaitTargetXYZ | UO.WaitTargetXYZ |
| WaitTargetSelf | UO.WaitTargetSelf |
| LastTarget | UO.LastTarget |
| CancelTarget | UO.CancelTarget |
| Client Target Response | UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.WaitForClientTargetResponse · UO.ClientTargetResponse |
UO.Target · UO.TargetID · UO.Targeting · UO.TargetPresent · UO.TargetToObject · UO.TargetToTile · UO.TargetToXYZ · UO.TargetByResource · UO.LastTarget · UO.LastTargetX · UO.LastTargetY · UO.LastTile · UO.TicksTarget
UO.WaitTarget · UO.WaitTargetObject · UO.WaitTargetType · UO.WaitTargetObjectType · UO.WaitTargetTile · UO.WaitTargetXYZ · UO.WaitTargetSelf · UO.WaitTargetGround · UO.WaitTargetLast · UO.WaitForTarget · UO.IsWaitTargetActive · UO.CancelTarget · UO.CancelWaitTarget
UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.ClientTargetResponse · UO.ClientTargetResponsePresent · UO.WaitForClientTargetResponse
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.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");Parámetros, resultado y todos los escenarios
if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelTarget();Cancela el cursor activo y borra las respuestas en forma de cruz preparadas.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Las respuestas ya enviadas al servidor no se recuperan.
- Se cancela el destino de devolución de llamada local; Para un destino de servidor activo, se envía una cancelación de destino.
- La cola es común al cliente: su limpieza se aplica a las respuestas preparadas de todos los procedimientos.
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.CancelTarget");
UO.CancelTarget();Parámetros y flujo de ejecución:
- No hay argumentos.
- Se elimina la respuesta pendiente a self.
UO.WaitTargetSelf();
UO.CancelTarget();Parámetros y flujo de ejecución:
- 1445/1690/0 es un ejemplo de un nuevo punto en el mundo.
- Las respuestas antiguas se eliminan antes de establecer una nueva meta.
return RunScenario();
object? RunScenario()
{
UO.CancelTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}Parámetros y flujo de ejecución:
- UO.Wait=1000 ms es una limitación de este ejemplo.
- Se comprueba la cola restante, no el éxito de la habilidad. Si no hay un punto de mira del servidor, el siguiente comando externo no recibirá la respuesta anterior.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CancelTarget. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetWaitTargetQueue:bridge.GetWaitTargetQueue(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelTarget:bridge.CancelTarget(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("Targeting cancelled").
Código interno de implementación; no es un script independiente.
public void CancelTarget()
{
var waitTargetQueue = bridge.GetWaitTargetQueue();
if (waitTargetQueue.Length > 0 || bridge.IsTargeting() != 0)
{
bridge.CancelTarget();
SystemMessage("Targeting cancelled");
}
else
SystemMessage("Error: no target to cancel");
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelWaitTarget();Borra las respuestas en forma de cruz preparadas.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Las respuestas ya enviadas al servidor no se recuperan.
- El cursor abierto permanece activo; se puede procesar manualmente más tarde.
- La cola es común al cliente: su limpieza se aplica a las respuestas preparadas de todos los procedimientos.
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.CancelWaitTarget");
UO.CancelWaitTarget();Parámetros y flujo de ejecución:
- No hay argumentos.
- Se elimina la respuesta pendiente a self.
UO.WaitTargetSelf();
UO.CancelWaitTarget();Parámetros y flujo de ejecución:
- 1445/1690/0 es un ejemplo de un nuevo punto en el mundo.
- Las respuestas antiguas se eliminan antes de establecer una nueva meta.
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}Parámetros y flujo de ejecución:
- UO.Wait=1000 ms es una limitación de este ejemplo.
- Se comprueba la cola restante, no el éxito de la habilidad. Si no hay un punto de mira del servidor, el siguiente comando externo no recibirá la respuesta anterior.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelWaitTarget:bridge.CancelWaitTarget().
Código interno de implementación; no es un script independiente.
case "cancelwaittarget": bridge.CancelWaitTarget(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestObjectTarget();Abre una mira local para seleccionar manualmente un elemento o personaje.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Se restablece el resultado anterior de este tiempo de ejecución. El comando regresa inmediatamente, sin esperar un clic.
- El resultado se lee ClientTargetResponse después de WaitForClientTargetResponse o ClientTargetResponsePresent.
- Al detener un procedimiento en ejecución se elimina el alcance que le pertenece en el marco más cercano. Si otra solicitud ya ha reemplazado el cursor, cancelarla no se ve afectada.
- Una cruz de interfaz de cliente no se puede utilizar simultáneamente para dos selecciones manuales independientes. No inicie una nueva solicitud hasta que la anterior haya sido procesada.
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.ClientRequestObjectTarget");
UO.ClientRequestObjectTarget();Parámetros y flujo de ejecución:
- 5000: haga clic en tiempo de espera de espera en milisegundos. La nueva consulta restablece el resultado anterior.
- Una matriz de cinco campos indica el objeto seleccionado. el resultado[0] es serial, no type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- CancelTarget cancela la selección local; la devolución de llamada devuelve un resultado vacío.
- ClientTargetResponsePresent da 1, pero la longitud de la matriz es 0. No acceda al resultado[0] sin verificar la longitud.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- La respuesta contiene cinco campos; serial está en el resultado[0]. El tiempo de espera y la cancelación no producen un serial utilizable.
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.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var result = UO.ClientTargetResponse();
if (((object? [])result).Length != 5 || Convert.ToInt32(result[0]) == 0)
return false;
UO.AddObject("selected_object", result[0]);
UO.Print($"Saved object: {UO.GetName(result[0])}");
return true;
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(false).
Código interno de implementación; no es un script independiente.
case "clientrequestobjecttarget": bridge.RequestClientTarget(false); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestTileTarget();Abre una mira local para seleccionar manualmente un punto/mosaico u objeto.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Se restablece el resultado anterior de este tiempo de ejecución. El comando regresa inmediatamente, sin esperar un clic.
- El resultado se lee ClientTargetResponse después de WaitForClientTargetResponse o ClientTargetResponsePresent.
- Al detener un procedimiento en ejecución se elimina el alcance que le pertenece en el marco más cercano. Si otra solicitud ya ha reemplazado el cursor, cancelarla no se ve afectada.
- Una cruz de interfaz de cliente no se puede utilizar simultáneamente para dos selecciones manuales independientes. No inicie una nueva solicitud hasta que la anterior haya sido procesada.
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.ClientRequestTileTarget");
UO.ClientRequestTileTarget();Parámetros y flujo de ejecución:
- resultado[1] - graphic, resultado[2]/[3]/[4] - X/Y/Z. El mosaico mundial serial tiene un resultado[0] igual a 0.
- El tipo, las coordenadas y serial son campos separados. No hay ningún índice de capa estática en esta matriz.
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- Para la celda, X/Y/Z están en los campos 2/3/4. Cadenas de tiendas globales; graphic y serial no reemplazan las coordenadas aquí.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var selection = (object? [])UO.ClientTargetResponse();
if (selection.Length != 5)
return false;
UO.SetGlobal("route.x", Convert.ToString(selection[2]));
UO.SetGlobal("route.y", Convert.ToString(selection[3]));
UO.SetGlobal("route.z", Convert.ToString(selection[4]));
return true;
return null;
}Parámetros y flujo de ejecución:
- CancelTarget anula el cursor local. La presencia de una devolución de llamada después de la cancelación no significa la presencia de una selección exitosa.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.ClientRequestTileTarget();
await WaitAsync(1000);
UO.CancelTarget();
if (UO.ClientTargetResponsePresent() != 0)
{
var result = (object? [])UO.ClientTargetResponse();
UO.Print($"Response after cancel: {result.Length} fields");
}
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(true).
Código interno de implementación; no es un script independiente.
case "clientrequesttiletarget": bridge.RequestClientTarget(true); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponse();Copia el resultado del último ClientRequest* local a una matriz.
No hay parámetros.
Conjunto de cinco int: [0]=serial objeto (0 cerca del suelo/estático), [1]=graphic/type, [2]=X, [3]=Y, [4]=Z. Se devuelve una matriz vacía antes de la selección, después de restablecerla mediante una nueva solicitud o tras una cancelación o selección inapropiada. Falta hue, mapa, índice de capa estática y atributo terrestre/estático. Este no es un objeto con campos con nombre.
- La lectura no consume el resultado: se puede volver a leer. El nuevo ClientRequest* lo reemplaza.
- Siempre marque ArrayLength(resultado)=5 antes de acceder a los índices.
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 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.ClientTargetResponse();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 5000: haga clic en tiempo de espera de espera en milisegundos. La nueva consulta restablece el resultado anterior.
- Una matriz de cinco campos indica el objeto seleccionado. el resultado[0] es serial, no type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- resultado[1] - graphic, resultado[2]/[3]/[4] - X/Y/Z. El mosaico mundial serial tiene un resultado[0] igual a 0.
- El tipo, las coordenadas y serial son campos separados. No hay ningún índice de capa estática en esta matriz.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- CancelTarget cancela la selección local; la devolución de llamada devuelve un resultado vacío.
- ClientTargetResponsePresent da 1, pero la longitud de la matriz es 0. No acceda al resultado[0] sin verificar la longitud.
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.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponse:bridge.ClientTargetResponse().
Código interno de implementación; no es un script independiente.
case "clienttargetresponse":
return new InjectionValue(bridge.ClientTargetResponse().Select(value => new InjectionValue(value)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponsePresent();Comprueba si se recibió una respuesta a la última solicitud de selección local.
No hay parámetros.
int 1: la devolución de llamada ya respondió, incluida la cancelación; 0: la nueva selección aún no se ha completado. El valor 1 no garantiza la existencia del objeto: cuando se cancela, ClientTargetResponse devuelve un Array vacío.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- No indica la presencia de una vista del servidor y no describe la cola WaitTarget.
- Leer el resultado no borra este indicador; se restablece con el siguiente ClientRequest*.
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 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.ClientTargetResponsePresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- CancelTarget cancela la selección local; la devolución de llamada devuelve un resultado vacío.
- ClientTargetResponsePresent da 1, pero la longitud de la matriz es 0. No acceda al resultado[0] sin verificar la longitud.
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- Se comprueba tanto la preparación de la respuesta como su contenido. El signo 1 no es un objeto serial.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
if (UO.ClientTargetResponsePresent() == 0)
return false;
var response = (object? [])UO.ClientTargetResponse();
return response.Length == 5 && Convert.ToInt32(response[0]) != 0;
return null;
}Parámetros y flujo de ejecución:
- El sondeo está limitado a cinco segundos. Si no hay respuesta, el cursor se cancela; Los campos X/Y/Z se leen solo a partir de la respuesta completa.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.ClientRequestTileTarget();
for (int attempt = 0; attempt < 50; attempt++)
{
if (UO.ClientTargetResponsePresent() != 0)
{
var response = (object? [])UO.ClientTargetResponse();
if (response.Length == 5)
UO.Print($"Selected tile: {response[2]},{response[3]},{response[4]}");
return null;
}
await WaitAsync(100);
}
UO.CancelTarget();
UO.Print("Selection timed out");
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: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponsePresent:bridge.ClientTargetResponsePresent().
Código interno de implementación; no es un script independiente.
case "clienttargetresponsepresent": return new InjectionValue(bridge.ClientTargetResponsePresent());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.IsWaitTargetActive();Comprueba si las respuestas preparadas permanecen en la cola de destino.
No hay parámetros.
int 1: hay un objetivo diferido no cancelado de un objeto, mosaico o cancelación de la siguiente vista; 0: la cola está vacía. Es no tener un cursor abierto; para el cursor utilice TargetPresent/Targeting.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Se lee toda la cola del cliente. Si se ejecutan varios procedimientos simultáneamente, se tienen en cuenta las respuestas de cada uno de ellos.
- Cero sólo significa que no hay respuesta pendiente. No confirma el uso exitoso de una habilidad o hechizo en el servidor.
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 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.IsWaitTargetActive();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Después de WaitTargetSelf y antes de que se espere el destino del servidor 1.
- CancelWaitTarget borra la cola; la siguiente prueba da 0.
UO.WaitTargetSelf();
UO.Print(Convert.ToString(UO.IsWaitTargetActive()));
UO.CancelWaitTarget();Parámetros y flujo de ejecución:
- El cheque no tiene parámetros. UO.Wait=50 ms, expectativas máximas de 20.
- Si la respuesta permanece, se cancela. Agregue una verificación del resultado de la acción del servidor por separado.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var attempts = 0;
while (Truth(UO.IsWaitTargetActive()) && Truth(attempts < 20))
{
await Delay(50);
attempts = attempts + 1;
}
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
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:
- La primera línea muestra las respuestas diferidas, la segunda, el estado de la vista.
- Son posibles una cola sin cursor y un cursor sin cola; Estos valores no son intercambiables.
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("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
UO.Print("Cursor: " + Convert.ToString(UO.TargetPresent()));
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: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.Waiting:Waiting().
Código interno de implementación; no es un script independiente.
case "iswaittargetactive": return new InjectionValue(Waiting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTarget();Lee serial del último objeto de destino guardado.
No hay parámetros.
int - serial/ID, no type y no bool. 0 significa la ausencia de un objetivo-objeto; terrestre y estático también tienen serial 0, aunque se pueden almacenar coordenadas. Se conservan todos los bits 32. Para verificar si hay un ID distinto de cero, use != 0, no > 0, o == true.
- Sin parámetros. No enciende la mira, no selecciona un nuevo objetivo, no ataca ni envía paquetes. LastTarget es diferente de LastAttack y LastStatus. La elección normal self no reemplaza el último objetivo; un ClientMarkChar explícito puede cambiarlo.
- En SetEntity se conserva la Entidad.X/Y conocida; para un artículo en un contenedor, estas podrían ser las coordenadas del contenido. SetLand/SetStatic guarda el mundo X/Y del punto seleccionado. El movimiento/eliminación posterior del objeto no cambia las coordenadas guardadas. Para la posición actual utilice GetX/GetY(serial).
- Clear y World.Clear grabación clara, incluso cuando se guardan los guiones. La incógnita serial en un escenario explícito no hereda las anteriores X/Y: se convierten en 0. Esto no garantiza que el destino exista en el servidor.
- Leer serial y X/Y mediante comandos separados no es atómico. Para el objeto de destino, LastTile almacena la red X/Y=65535; esta no es una posición de objeto guardada. Para tierra/estática LastTile(1)/(2) lea seleccionado X/Y. lasttarget sin paréntesis es un valor activo incorporado a menos que lo anule una variable.
- Llamadas World.Clear ClearWorldState: restablece la devolución de llamada activa, el objetivo guardado y el paquete de reproducción. Un reinicio normal guarda el historial. El TargetLast interno envía el paquete almacenado solo al destino del servidor activo; sin historial o para una devolución de llamada local, no envía nada y guarda el objetivo. Una devolución de llamada de un cliente activo recibe null una vez como cancelación: ClientTargetResponsePresent se convierte en 1 si la respuesta está vacía. Una selección completa no se notifica nuevamente.
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 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.LastTarget();
UO.Print("LastTarget: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- el valor es el único resultado del comando; HEX muestra ID, Convertir.ToString es la coordenada. La llamada no selecciona nada.
var value = UO.LastTarget();
UO.Print("Saved value: " + Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- id - guardado serial. Exists comprueba la presencia de un objeto antes de GetX/GetY. Las coordenadas guardadas y las actuales pueden diferir. Con serial=0 el ejemplo imprime el punto seleccionado, pero 0 en sí no prueba que el punto fue seleccionado.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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;Parámetros y flujo de ejecución:
- mínimo/máximo especifica el rango aceptable del resultado del asistente, no los parámetros API. El asistente está completamente definido; -1 es su propia señal de estar fuera de rango. Para ID, el cheque almacena cualquier serial distinto de cero, incluido el bit más significativo, en lugar del rango.
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 value = ReadTargetValue();
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue()
{
var value = UO.LastTarget();
if (Truth(value == 0))
{
return -1;
}
return value;
}
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: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Código interno de implementación; no es un script independiente.
case "lasttarget": return new InjectionValue(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetX();Lee la coordenada X guardada cuando se seleccionó el último objetivo.
No hay parámetros.
int es la coordenada guardada de X, no un píxel de la pantalla. Antes/después de Borrar o para un objeto desconocido - 0; la coordenada real 0 también es aceptable. No es bool. Para tierra/estático también funciona con LastTarget()=0.
- Sin parámetros. No enciende la mira, no selecciona un nuevo objetivo, no ataca ni envía paquetes. LastTarget es diferente de LastAttack y LastStatus. La elección normal self no reemplaza el último objetivo; un ClientMarkChar explícito puede cambiarlo.
- En SetEntity se conserva la Entidad.X/Y conocida; para un artículo en un contenedor, estas podrían ser las coordenadas del contenido. SetLand/SetStatic guarda el mundo X/Y del punto seleccionado. El movimiento/eliminación posterior del objeto no cambia las coordenadas guardadas. Para la posición actual utilice GetX/GetY(serial).
- Clear y World.Clear grabación clara, incluso cuando se guardan los guiones. La incógnita serial en un escenario explícito no hereda las anteriores X/Y: se convierten en 0. Esto no garantiza que el destino exista en el servidor.
- Leer serial y X/Y mediante comandos separados no es atómico. Para el objeto de destino, LastTile almacena la red X/Y=65535; esta no es una posición de objeto guardada. Para tierra/estática LastTile(1)/(2) lea seleccionado X/Y. lasttarget sin paréntesis es un valor activo incorporado a menos que lo anule una variable.
- Llamadas World.Clear ClearWorldState: restablece la devolución de llamada activa, el objetivo guardado y el paquete de reproducción. Un reinicio normal guarda el historial. El TargetLast interno envía el paquete almacenado solo al destino del servidor activo; sin historial o para una devolución de llamada local, no envía nada y guarda el objetivo. Una devolución de llamada de un cliente activo recibe null una vez como cancelación: ClientTargetResponsePresent se convierte en 1 si la respuesta está vacía. Una selección completa no se notifica nuevamente.
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 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.LastTargetX();
UO.Print("LastTargetX: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- el valor es el único resultado del comando; HEX muestra ID, Convertir.ToString es la coordenada. La llamada no selecciona nada.
var value = UO.LastTargetX();
UO.Print("Saved value: " + Convert.ToString(value));Parámetros y flujo de ejecución:
- id - guardado serial. Exists comprueba la presencia de un objeto antes de GetX/GetY. Las coordenadas guardadas y las actuales pueden diferir. Con serial=0 el ejemplo imprime el punto seleccionado, pero 0 en sí no prueba que el punto fue seleccionado.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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;Parámetros y flujo de ejecución:
- mínimo/máximo especifica el rango aceptable del resultado del asistente, no los parámetros API. El asistente está completamente definido; -1 es su propia señal de estar fuera de rango. Para ID, el cheque almacena cualquier serial distinto de cero, incluido el bit más significativo, en lugar del rango.
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 value = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetX();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
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: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LastTargetX. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Código interno de implementación; no es un script independiente.
public int LastTargetX() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetX : bridge.GetX(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetY();Lee la coordenada Y guardada cuando se seleccionó el último objetivo.
No hay parámetros.
int es la coordenada guardada de Y, no un píxel de la pantalla. Antes/después de Borrar o para un objeto desconocido - 0; la coordenada real 0 también es aceptable. No es bool. Para tierra/estático también funciona con LastTarget()=0.
- Sin parámetros. No enciende la mira, no selecciona un nuevo objetivo, no ataca ni envía paquetes. LastTarget es diferente de LastAttack y LastStatus. La elección normal self no reemplaza el último objetivo; un ClientMarkChar explícito puede cambiarlo.
- En SetEntity se conserva la Entidad.X/Y conocida; para un artículo en un contenedor, estas podrían ser las coordenadas del contenido. SetLand/SetStatic guarda el mundo X/Y del punto seleccionado. El movimiento/eliminación posterior del objeto no cambia las coordenadas guardadas. Para la posición actual utilice GetX/GetY(serial).
- Clear y World.Clear grabación clara, incluso cuando se guardan los guiones. La incógnita serial en un escenario explícito no hereda las anteriores X/Y: se convierten en 0. Esto no garantiza que el destino exista en el servidor.
- Leer serial y X/Y mediante comandos separados no es atómico. Para el objeto de destino, LastTile almacena la red X/Y=65535; esta no es una posición de objeto guardada. Para tierra/estática LastTile(1)/(2) lea seleccionado X/Y. lasttarget sin paréntesis es un valor activo incorporado a menos que lo anule una variable.
- Llamadas World.Clear ClearWorldState: restablece la devolución de llamada activa, el objetivo guardado y el paquete de reproducción. Un reinicio normal guarda el historial. El TargetLast interno envía el paquete almacenado solo al destino del servidor activo; sin historial o para una devolución de llamada local, no envía nada y guarda el objetivo. Una devolución de llamada de un cliente activo recibe null una vez como cancelación: ClientTargetResponsePresent se convierte en 1 si la respuesta está vacía. Una selección completa no se notifica nuevamente.
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 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.LastTargetY();
UO.Print("LastTargetY: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- el valor es el único resultado del comando; HEX muestra ID, Convertir.ToString es la coordenada. La llamada no selecciona nada.
var value = UO.LastTargetY();
UO.Print("Saved value: " + Convert.ToString(value));Parámetros y flujo de ejecución:
- id - guardado serial. Exists comprueba la presencia de un objeto antes de GetX/GetY. Las coordenadas guardadas y las actuales pueden diferir. Con serial=0 el ejemplo imprime el punto seleccionado, pero 0 en sí no prueba que el punto fue seleccionado.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(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;Parámetros y flujo de ejecución:
- mínimo/máximo especifica el rango aceptable del resultado del asistente, no los parámetros API. El asistente está completamente definido; -1 es su propia señal de estar fuera de rango. Para ID, el cheque almacena cualquier serial distinto de cero, incluido el bit más significativo, en lugar del rango.
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 value = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetY();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
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: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LastTargetY. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Código interno de implementación; no es un script independiente.
public int LastTargetY() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetY : bridge.GetY(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.LastTile();
int UO.LastTile(object? index);Lee el último destino de mosaico guardado.
-
index- Opcional int 0..3: 0=graphic, 1=X, 2=Y, 3=Z. Fuera de rango - 0. Sin índice, se devuelve la fila de todo el registro.
Sin argumentos string "graphic X Y Z" con campos decimales; con índice - int de un campo. La entrada faltante/corta se rellena con ceros.
- NormalizeLastTile completa los campos que faltan hasta cuatro. La línea no contiene map/hue/serial. El valor 0 puede significar una graphic/coordenada real o ningún campo.
- El comando solo lee el destino del mosaico guardado; no crea un objetivo y no selecciona una nueva celda. WaitTargetTile("lasttile") utiliza una verificación de presencia de registros separada.
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 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.LastTile();
UO.Print("LastTile: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Lee el último destino de mosaico guardado.
UO.Print(UO.LastTile());Parámetros y flujo de ejecución:
- NormalizeLastTile completa los campos que faltan hasta cuatro. La línea no contiene map/hue/serial. El valor 0 puede significar una graphic/coordenada real o ningún campo.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.LastTile(1));
UO.Print(UO.LastTile(2));
UO.Print(UO.LastTile(3));
return null;
}Parámetros y flujo de ejecución:
- El comando solo lee el destino del mosaico guardado; no crea un objetivo y no selecciona una nueva celda. WaitTargetTile("lasttile") utiliza una verificación de presencia de registros separada.
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 graphic = UO.LastTile(0);
var x = UO.LastTile(1);
var y = UO.LastTile(2);
var z = UO.LastTile(3);
UO.Print(Convert.ToString(graphic) + " " + Convert.ToString(x) + " " + Convert.ToString(y) + " " + Convert.ToString(z));
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: Sin parámetros.
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge.LastTile()). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile().
Código interno de implementación; no es un script independiente.
public string LastTile()
{
int[] tileInfo = NormalizeLastTile(bridge.LastTile());
return $"{tileInfo[0]} {tileInfo[1]} {tileInfo[2]} {tileInfo[3]}";
}Parámetros: index (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(index). -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge?.LastTile()).
Código interno de implementación; no es un script independiente.
public int LastTile(InjectionValue index)
{
var i = NumberConversions.ToInt(index);
if (i < 0 || i > 3)
return 0;
return NormalizeLastTile(bridge?.LastTile())[i];
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Target();
void UO.Target(object? @object);
void UO.Target(object? targetKey, object? target);
void UO.Target(object? targetKey, object? target, object? targetType, object? @type, object? x, object? y, object? z);Cancela/establece el objetivo esperado o envía un paquete de destino explícito.
-
object: un argumento: serial/alias se coloca a través de WaitTargetObject. Sin argumentos - CancelTarget. -
targetKey: en las formas 2/7 de los argumentos int de la consulta de destino ID, generalmente UO.TargetID(). Se pasa directamente al paquete y no es una pulsación de tecla. -
target— Formulario 2: serial/alias o "lasttile". Forma 7: objeto serial; "ground" deja serial=0. -
targetType- 7 solo formulario: destino de tipo de protocolo, generalmente objeto 0, mosaico 1. Reducible a byte. -
type- 7 solo forma: graphic y coordenadas mundiales para mosaico/objeto desconocido; graphic/X/Y se reducen a ushort, Z a sbyte. Para un puente de entidad conocido, reemplácelos con los campos de entidad reales. -
x- 7 solo forma: graphic y coordenadas mundiales para mosaico/objeto desconocido; graphic/X/Y se reducen a ushort, Z a sbyte. Para un puente de entidad conocido, reemplácelos con los campos de entidad reales. -
y- 7 solo forma: graphic y coordenadas mundiales para mosaico/objeto desconocido; graphic/X/Y se reducen a ushort, Z a sbyte. Para un puente de entidad conocido, reemplácelos con los campos de entidad reales. -
z- 7 solo forma: graphic y coordenadas mundiales para mosaico/objeto desconocido; graphic/X/Y se reducen a ushort, Z a sbyte. Para un puente de entidad conocido, reemplácelos con los campos de entidad reales.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Los formularios sin ningún argumento van junto con ExecuteLegacyManualAlias y controlan la cola. Los formularios 2/7 llaman a Target directamente y envían Send_TargetObject, no la cola del siguiente objetivo.
- En la forma 2, "lasttile" toma el graphic/X/Y/Z del mosaico de destino almacenado; su ausencia muestra un mensaje. Un alias de objeto desconocido también muestra un mensaje. El formulario 7 con targetType=0 intenta resolver serial; otros tipos dejan serial=0.
- Bridge.Target no comprueba el cursor activo/coincidencia targetKey; pase el ID actual. No utilice la llave antigua de la solicitud anterior. La llamada no espera a ser aceptada por el servidor.
- Las formas explícitas de los argumentos 2/7 envían el paquete directamente: el serial negativo se convierte en 0, targetKey se convierte en uint; esta rama no borra el cursor/cola local ni actualiza TicksTarget. TargetToObject/TargetToTile utilizan una ruta diferente para la vista activa del cliente.
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.Target");
UO.Target();Parámetros y flujo de ejecución:
- Cancela/establece el objetivo esperado o envía un paquete de destino explícito.
UO.Target("self");
UO.Print(UO.Waiting());
UO.Target();Parámetros y flujo de ejecución:
- Los formularios sin ningún argumento van junto con ExecuteLegacyManualAlias y controlan la cola. Los formularios 2/7 llaman a Target directamente y envían Send_TargetObject, no la cola del siguiente objetivo.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.Target(UO.TargetID(), "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;Parámetros y flujo de ejecución:
- Bridge.Target no comprueba el cursor activo/coincidencia targetKey; pase el ID actual. No utilice la llave antigua de la solicitud anterior. La llamada no espera a ser aceptada por el 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()
{
if (Truth(UO.TargetPresent()))
{
UO.Target(UO.TargetID(), "ground", 1, 0, UO.GetX(), UO.GetY(), UO.GetZ());
}
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
Código interno de implementación; no es un script independiente.
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;Parámetros: object (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
Código interno de implementación; no es un script independiente.
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;Parámetros: targetKey (Any), target (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetKey). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.Target: lasttile is unavailable"). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out int serial).
Código interno de implementación; no es un script independiente.
public void Target(InjectionValue targetKey, InjectionValue target)
{
int key = NumberConversions.ToInt(targetKey);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
if (selector.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
{
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length >= 4)
bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]);
else
SystemMessage("UO.Target: lasttile is unavailable");
return;
}
if (TryGetObject(target, out int serial))
bridge.Target(key, serial, 0, 0, 0, 0, 0);
else
SystemMessage($"UO.Target: invalid target '{selector}'");
}Parámetros: targetKey (Any), target (Any), targetType (Any), type (Any), x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetType). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out serial). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target ( NumberConversions.ToInt(targetKey), serial, targetTypeValue, ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z) ). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Código interno de implementación; no es un script independiente.
public void Target
(
InjectionValue targetKey,
InjectionValue target,
InjectionValue targetType,
InjectionValue type,
InjectionValue x,
InjectionValue y,
InjectionValue z
)
{
int targetTypeValue = NumberConversions.ToInt(targetType);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
int serial = 0;
if (targetTypeValue == 0 && !selector.Equals("ground", StringComparison.OrdinalIgnoreCase))
TryGetObject(target, out serial);
bridge.Target
(
NumberConversions.ToInt(targetKey),
serial,
targetTypeValue,
ResolveType(type),
NumberConversions.ToInt(x),
NumberConversions.ToInt(y),
NumberConversions.ToInt(z)
);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetByResource(object? objID, object? resource);Busca un elemento en graphic, prepara un objetivo determinado y utiliza el elemento encontrado.
-
objID— Objeto serial/ID: int, cadena numérica/hexadecimal o alias establecido, por ejemplo "lasttarget". Esto no es graphic/type. Verifique el objeto cargado antes de actuar. -
resource— Gráfico/type elemento a buscar, ResolveType permitido; este no es el número de campo de recurso de Pascal API.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- En esta implementación, FindType(ResolveType(Recurso), -1, 0, -1, true) busca un elemento. Si se encuentra! = 0, primero puente.WaitTargetObject(ObjID), luego puente.UseObject(encontrado).
- No se encontró nada; no hay nada instalado ni utilizado. El comando no envía un paquete de destino de recursos separado; alcance=0 selecciona elementos con RootContainer=Player.Serial, incluido el contenido/equipo del inventario; recursive=true se pasa al puente, pero esta rama de alcance0 usa RootContainer.
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.TargetByResource");
UO.TargetByResource("self", "0x0E21");Parámetros y flujo de ejecución:
- Busca un elemento en graphic, prepara un objetivo determinado y utiliza el elemento encontrado.
UO.TargetByResource("self", "0x0E21");Parámetros y flujo de ejecución:
- En esta implementación, FindType(ResolveType(Recurso), -1, 0, -1, true) busca un elemento. Si se encuentra! = 0, primero puente.WaitTargetObject(ObjID), luego puente.UseObject(encontrado).
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.TargetByResource("lasttarget", "0x0E21");
}
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:
- No se encontró nada; no hay nada instalado ni utilizado. El comando no envía un paquete de destino de recursos separado; alcance=0 selecciona elementos con RootContainer=Player.Serial, incluido el contenido/equipo del inventario; recursive=true se pasa al puente, pero esta rama de alcance0 usa RootContainer.
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.TargetByResource("self", "0x0E21");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: objID (Any), resource (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(found).
Código interno de implementación; no es un script independiente.
case "targetbyresource":
{
int found = bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true);
if (found != 0) { bridge.WaitTargetObject(Arg(0)); bridge.UseObject(found); }
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetID();Lee el ID del cursor de destino actual.
No hay parámetros.
int - 32 bit ID del cursor, no serial del último objeto. Si no hay cursor, se devuelve 0. Si se establece el bit más significativo, int es negativo; Int2Hex guarda sus bits. Real cursorID=0 y el alcance local también pueden dar 0: marque TargetPresent para ver si hay actividad. En este cliente, no se utiliza la sustitución especial no nula para el nulo ID.
- LastTarget/GetSerial("lasttarget") se refiere al objeto seleccionado, TargetID se refiere a la solicitud de destino. Estos valores no se pueden reemplazar entre sí.
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 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.TargetID();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos.
- Int2Hex le permite ver todos los bits de ID, incluido el bit más significativo.
if (Truth(UO.TargetPresent()))
{
UO.Print(UO.Int2Hex(UO.TargetID()));
}
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:
- cursor - ID de la vista, object - serial del objeto.
- En TargetToObject, se pasa object, no el cursor.
return RunScenario();
object? RunScenario()
{
var cursor = UO.TargetID();
var targetSerial = UO.GetSerial("lasttarget");
UO.Print("Cursor: " + UO.Int2Hex(cursor));
UO.Print("Object: " + targetSerial);
return null;
}Parámetros y flujo de ejecución:
- 1000: tiempo de espera en milisegundos.
- El signo de ocurrencia es el resultado WaitForTarget; Para ello no se comprueba el signo del cursor.
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.WaitForTarget(1000)))
{
var cursor = UO.TargetID();
UO.Print("Request: " + UO.Int2Hex(cursor));
}
else
{
UO.Print("No cursor arrived");
}
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: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTargetCursorId:bridge.GetTargetCursorId().
Código interno de implementación; no es un script independiente.
case "targetid": return new InjectionValue(bridge.GetTargetCursorId());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetPresent();Comprueba si hay un cursor de selección de destino activo en el cliente.
No hay parámetros.
int 1 - TargetManager.IsTargeting establecido; 0: sin cursor activo. También se tiene en cuenta el destino de devolución de llamada local. Esto no es serial ni el estado de la cola WaitTarget.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Lee el estado una vez; no espera a que aparezca el cursor.
- Para esperar una mira del servidor después de una acción del juego, use WaitForTarget. Para el resultado del local ClientRequest* - WaitForClientTargetResponse.
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 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.TargetPresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos.
- Se muestra 1 o 0.
UO.Print(Convert.ToString(UO.TargetPresent()));Parámetros y flujo de ejecución:
- La condición es verificada por el cursor activo.
- CancelTarget en este cliente también borra las respuestas preparadas.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.CancelTarget();
}
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:
- UseSkill solicita la habilidad, WaitForTarget espera hasta que 3000 ms.
- TargetToObject responde sólo al objetivo del servidor activo; Si hay un tiempo de espera, la rama no se ejecuta.
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.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("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;
}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: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.IsTargeting:IsTargeting().
Código interno de implementación; no es un script independiente.
case "targetpresent": return new InjectionValue(IsTargeting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToObject(object? objID);Responde inmediatamente a un objeto serial de destino del servidor ya activo.
-
objID— Serie/ID de un elemento o carácter, número o cadena hexadecimal/decimal, self/backpack/lasttarget/lastobject o nombre guardado AddObject. Esto no es type. Antes de actuar sobre un objeto con nombre, marque Exists; un alias no resuelto da serial 0.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Sin un cursor de servidor activo, no hace nada y no crea una respuesta diferida. Para la preparación preliminar, utilice WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Este comando no procesa el ClientRequest* local y otras vistas de devolución de llamada.
- El servidor determina si el objetivo es válido. Para un serial sin memoria, ID se envía con cero campos de gráficos/coordenadas.
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.TargetToObject");
UO.TargetToObject("self");Parámetros y flujo de ejecución:
- Los parámetros definen el personaje en sí.
- No se agrega nada a la cola de alcance futuro.
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("self");
}
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:
- 3000 — espera máxima en milisegundos; La acción que solicitó la vista debe realizarse previamente.
- El comando se llama solo después de que aparece la vista; La acción del juego puede entonces terminar en una falla del servidor.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
else
{
UO.Print("Target timeout");
}
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:
- CancelTarget cierra la vista anterior y borra la cola.
- A falta de un nuevo alcance, el desafío no genera anticipación. La salida de la cola permanece 0 a menos que otro script la haya cambiado.
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.CancelTarget();
UO.TargetToObject("self");
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: objID (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToObject:bridge.TargetToObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "targettoobject": bridge.TargetToObject(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToTile(object? tile, object? x, object? y, object? z);Responde inmediatamente a un objetivo de servidor ya activo con coordenadas de mosaico.
-
tile- Gráfico/mosaico type, 0...65535, no serial. Cero indica un objetivo de coordenadas sin gráficos especificados. -
x— Coordenada mundial X en el mapa actual, 0...65535. Este no es un píxel de pantalla ni una coordenada de gump. -
y— Coordenada mundial Y en el mapa actual, 0...65535. -
z- Altura del punto de juego, para un objetivo de red use -128..127. Esto no es un piso ni una capa de equipo.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Sin un cursor de servidor activo, no hace nada y no crea una respuesta diferida. Para la preparación preliminar, utilice WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Este comando no procesa el ClientRequest* local y otras vistas de devolución de llamada.
- Un objetivo con graphic=0 requiere una mira; La mira del objeto no acepta el suelo.
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.TargetToTile");
UO.TargetToTile(0x0CCA, 1445, 1690, 0);Parámetros y flujo de ejecución:
- Los parámetros dan un ejemplo de un punto real: reemplace las coordenadas y graphic con los valores deseados.
- No se agrega nada a la cola de alcance futuro.
if (Truth(UO.TargetPresent()))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
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:
- 3000 — espera máxima en milisegundos; La acción que solicitó la vista debe realizarse previamente.
- El comando se llama solo después de que aparece la vista; La acción del juego puede entonces terminar en una falla del servidor.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
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:
- CancelTarget cierra la vista anterior y borra la cola.
- A falta de un nuevo alcance, el desafío no genera anticipación. La salida de la cola permanece 0 a menos que otro script la haya cambiado.
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.CancelTarget();
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: tile (Any), x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "targettotile":
bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToXYZ(object? x, object? y, object? z);Responde inmediatamente a un objetivo de servidor ya activo con coordenadas de mosaico.
-
x— Coordenada mundial X en el mapa actual, 0...65535. Este no es un píxel de pantalla ni una coordenada de gump. -
y— Coordenada mundial Y en el mapa actual, 0...65535. -
z- Altura del punto de juego, para un objetivo de red use -128..127. Esto no es un piso ni una capa de equipo.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- Sin un cursor de servidor activo, no hace nada y no crea una respuesta diferida. Para la preparación preliminar, utilice WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Este comando no procesa el ClientRequest* local y otras vistas de devolución de llamada.
- Un objetivo con graphic=0 requiere una mira; La mira del objeto no acepta el suelo.
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.TargetToXYZ");
UO.TargetToXYZ(1445, 1690, 0);Parámetros y flujo de ejecución:
- Los parámetros dan un ejemplo de un punto real: reemplace las coordenadas y graphic con los valores deseados.
- No se agrega nada a la cola de alcance futuro.
if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
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:
- 3000 — espera máxima en milisegundos; La acción que solicitó la vista debe realizarse previamente.
- El comando se llama solo después de que aparece la vista; La acción del juego puede entonces terminar en una falla del servidor.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToXYZ(1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
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:
- CancelTarget cierra la vista anterior y borra la cola.
- A falta de un nuevo alcance, el desafío no genera anticipación. La salida de la cola permanece 0 a menos que otro script la haya cambiado.
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.CancelTarget();
UO.TargetToXYZ(1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "targettoxyz":
bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Targeting();Comprueba si hay un cursor de selección de destino activo en el cliente.
No hay parámetros.
int 1 - TargetManager.IsTargeting establecido; 0: sin cursor activo. También se tiene en cuenta el destino de devolución de llamada local. Esto no es serial ni el estado de la cola WaitTarget.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Lee el estado una vez; no espera a que aparezca el cursor.
- Para esperar una mira del servidor después de una acción del juego, use WaitForTarget. Para el resultado del local ClientRequest* - WaitForClientTargetResponse.
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 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.Targeting();
UO.Print("Targeting: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos.
- Se muestra 1 o 0.
UO.Print(Convert.ToString(UO.Targeting()));Parámetros y flujo de ejecución:
- La condición es verificada por el cursor activo.
- CancelTarget en este cliente también borra las respuestas preparadas.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Targeting()))
{
UO.CancelTarget();
}
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:
- UseSkill solicita la habilidad, WaitForTarget espera hasta que 3000 ms.
- TargetToObject responde sólo al objetivo del servidor activo; Si hay un tiempo de espera, la rama no se ejecuta.
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.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.Targeting()))
{
UO.TargetToObject("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;
}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: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.IsTargeting. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting().
Código interno de implementación; no es un script independiente.
public int IsTargeting() => bridge.IsTargeting();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksTarget();Lee la última marca de tiempo de aprovisionamiento del objetivo a través de WaitTargetObject/WaitTargetTile y sus shells de llamada.
No hay parámetros.
int: el valor de UO.Timer en el momento de la preparación, en décimas de segundo desde el inicio del tiempo de ejecución. Antes del primer entrenamiento de este tipo: 0. Esta es una marca, no una duración de espera, ni un milisegundo, ni un objetivo ID.
- Inmediato TargetToObject/TargetToTile/TargetToXYZ no prepara la cola y no actualiza esta marca.
- Algunos comandos de búsqueda envían la respuesta directamente a través del puente; TicksTarget no es la hora universal de ningún cambio de objetivo.
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 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.TicksTarget();
UO.Print("TicksTarget: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos; WaitTargetSelf actualiza la elevación.
- El sello se mide en décimas de segundo.
UO.WaitTargetSelf();
var stamp = UO.TicksTarget();
UO.Print(Convert.ToString(stamp));
UO.CancelWaitTarget();Parámetros y flujo de ejecución:
- UO.Wait=250 milisegundos.
- Debido a la discreción de la marca, el tiempo transcurrido suele ser 2 o 3 en lugar de 250.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.WaitTargetObject("self");
await Delay(250);
var elapsed = UO.Timer() - UO.TicksTarget();
UO.Print("Tenths: " + Convert.ToString(elapsed));
UO.CancelWaitTarget();
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));Parámetros y flujo de ejecución:
- selfId - int serial de tu personaje.
- La forma numérica actualiza la marca como la forma de cadena; TicksTarget no tiene parámetros.
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 selfId = UO.Hex2Int(UO.GetSerial("self"));
UO.WaitTargetObject(selfId);
UO.Print(Convert.ToString(UO.TicksTarget()));
UO.CancelWaitTarget();
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: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int TicksTarget() => ticksTarget;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForClientTargetResponse(object? maxWaitTimeMS);Espera a que se complete la selección local ClientRequestObjectTarget/ClientRequestTileTarget.
-
maxWaitTimeMS— Tiempo máximo en milisegundos. 0 y los valores negativos dan un cheque, sin esperar indefinidamente.
int 1: ya se recibió la respuesta, incluida la cancelación; 0: el tiempo de espera ha expirado. Para 1, aún verifique la longitud de ClientTargetResponse. Con 0 el cursor en sí no se cierra automáticamente.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- La espera ocurre en el hilo del script a intervalos de hasta 25 ms y se interrumpe al detener el script.
- Sin el ClientRequest* anterior no se inicia la nueva selección.
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 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.WaitForClientTargetResponse(5000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- 5000: haga clic en tiempo de espera de espera en milisegundos. La nueva consulta restablece el resultado anterior.
- Una matriz de cinco campos indica el objeto seleccionado. el resultado[0] es serial, no type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- resultado[1] - graphic, resultado[2]/[3]/[4] - X/Y/Z. El mosaico mundial serial tiene un resultado[0] igual a 0.
- El tipo, las coordenadas y serial son campos separados. No hay ningún índice de capa estática en esta matriz.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
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:
- El tiempo de espera se especifica en milisegundos. Una espera exitosa significa una respuesta cuyo contenido debe verificarse por separado.
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.ClientRequestTileTarget();
int ready = UO.WaitForClientTargetResponse(3000);
if (ready == 0)
{
UO.CancelTarget();
UO.Print("Selection timed out");
return false;
}
var response = (object? [])UO.ClientTargetResponse();
if (response.Length != 5)
return false;
UO.Print($"Tile coordinates: {response[2]}, {response[3]}, {response[4]}");
return true;
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: maxWaitTimeMS (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitForClientTargetResponse:bridge.WaitForClientTargetResponse(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "waitforclienttargetresponse": return new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForTarget(object? maxWaitTimeMS);Espera a que aparezca el cursor de destino activo dentro del tiempo de espera.
-
maxWaitTimeMS: espera máxima en milisegundos. Los valores cero y negativos dan una verificación inmediata; No es una espera interminable.
int 1 — el cursor estuvo activo durante la verificación; 0 - tiempo de espera sin cursor. El objetivo de devolución de llamada local también cumple esta prueba. Esto no es una confirmación del uso del WaitTarget preparado: es posible que la respuesta automática ya haya agotado el cursor antes de verificar.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- La verificación se realiza con pausas de hasta 25 ms en el hilo del script y puede interrumpirse deteniéndolo.
- El método en sí no crea una mira ni selecciona un objetivo.
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 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.WaitForTarget(3000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- MaxWaitTimeMS=3000, luego se selecciona self.
- WaitTargetSelf no está preestablecido: este ejemplo responde explícitamente.
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
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:
- MaxWaitTimeMS=0.
- listo - 1 o 0; No hay una pausa larga.
return RunScenario();
object? RunScenario()
{
var ready = UO.WaitForTarget(0);
UO.Print(Convert.ToString(ready));
return null;
}Parámetros y flujo de ejecución:
- 500 - medio segundo.
- La ausencia de una vista puede significar que la acción ha fallado o se está procesando automáticamente: consulta el registro del juego.
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.WaitForTarget(500) == 0))
{
UO.CancelWaitTarget();
UO.Print("Cursor did not arrive");
}
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: maxWaitTimeMS (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitUntilTargeting:bridge.WaitUntilTargeting(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "waitfortarget": return new InjectionValue(bridge.WaitUntilTargeting(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTarget(object? target);
void UO.WaitTarget(object? target, object? @type);
void UO.WaitTarget(object? target, object? @type, object? color);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest, object? maxZ);Coloca el serial en la cola de la siguiente solicitud de destino o selecciona un destino mediante filtros.
-
target: se establece directamente un serial/alias positivo permitido, se ignoran otros parámetros. 0 o -1 habilita la búsqueda; otro centinela numérico cancela el siguiente objetivo. -
type- Opcional graphic/type o tipo máscara; -1 sin limitación. Los tipos con nombre se resuelven mediante ResolveType/ParseTypeMask. -
color- Opcional hue: -1 o 0xFFFF sin limitación. -
distance— Distancia máxima opcional en celdas; el valor predeterminado es GetFindDistance. El análisis ResolveCompactDistance permite valores especiales según la configuración de búsqueda. -
notoriety- Notoriedad de número/máscara opcional. Una máscara no vacía restringe a los candidatos móviles; sin él, se consideran móviles y artículos world. -
nearest- Opcional bool, predeterminado true: ordena por distancia, luego serial. -
maxZ— Abs máximos opcionales (Z-selfZ), predeterminado GetFindVertical.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Al realizar la búsqueda, se excluyen self, serial=0, la lista de ignorados normal y los filtros type seleccionados con nombre; se eliminan los duplicados. El positivo directo serial no pasa estos filtros.
- La búsqueda sólo lee objetos cargados. No hay coincidencias/centinela no válido: mensaje y CancelNextTarget. Una selección exitosa llama a WaitTargetObject y actualiza TicksTarget. WaitTarget en sí no utiliza el elemento, no abre el objetivo y no espera a que el servidor lo procese.
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.WaitTarget");
UO.WaitTarget("self");Parámetros y flujo de ejecución:
- Coloca el serial en la cola de la siguiente solicitud de destino o selecciona un destino mediante filtros.
UO.WaitTarget("self");Parámetros y flujo de ejecución:
- Al realizar la búsqueda, se excluyen self, serial=0, la lista de ignorados normal y los filtros type seleccionados con nombre; se eliminan los duplicados. El positivo directo serial no pasa estos filtros.
return RunScenario();
object? RunScenario()
{
UO.WaitTarget(0, -1, -1, 10, 3, true, 20);
return null;
}Parámetros y flujo de ejecución:
- La búsqueda sólo lee objetos cargados. No hay coincidencias/centinela no válido: mensaje y CancelNextTarget. Una selección exitosa llama a WaitTargetObject y actualiza TicksTarget. WaitTarget en sí no utiliza el elemento, no abre el objetivo y no espera a que el servidor lo procese.
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.WaitTarget("lasttarget");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: target (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Parámetros: target (Any), type (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Parámetros: target (Any), type (Any), color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Parámetros: target (Any), type (Any), color (Any), distance (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Parámetros: target (Any), type (Any), color (Any), distance (Any), notoriety (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest) — UO.WaitTarget(Any,Any,Any,Any,Any,Any)
Parámetros: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest, maxZ) — UO.WaitTarget(Any,Any,Any,Any,Any,Any,Any)
Parámetros: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
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 =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetGround(object? @type);
void UO.WaitTargetGround(object? @type, object? color);Busca un elemento en graphic/hue y lo coloca en la cola del siguiente objetivo.
-
type- Gráfico/type int, cadena hexadecimal o conjunto denominado type. Este no es un elemento serial. -
color- Opcional int hue; predeterminado -1 - cualquier color.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Alcance: ground/selector de contenedor 1 sin búsqueda recursiva. Puente.FindType devuelve el serial encontrado; cuando se llama a serial>0 bridge.WaitTargetObject. Estos métodos no actualizan directamente el tiempo de ejecución TicksTarget.
- Sin elemento: mensaje y CancelNextTarget. La búsqueda puede cambiar el FindItem/FoundItems general; El comando no utiliza el elemento encontrado y no espera el cursor.
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.WaitTargetGround");
UO.WaitTargetGround("0x0E21");Parámetros y flujo de ejecución:
- Busca un elemento en graphic/hue y lo coloca en la cola del siguiente objetivo.
UO.WaitTargetGround("0x0E21");Parámetros y flujo de ejecución:
- Alcance: ground/selector de contenedor 1 sin búsqueda recursiva. Puente.FindType devuelve el serial encontrado; cuando se llama a serial>0 bridge.WaitTargetObject. Estos métodos no actualizan directamente el tiempo de ejecución TicksTarget.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetGround("0x0E21", -1);
return null;
}Parámetros y flujo de ejecución:
- Sin elemento: mensaje y CancelNextTarget. La búsqueda puede cambiar el FindItem/FoundItems general; El comando no utiliza el elemento encontrado y no espera el cursor.
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.WaitTargetGround("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: type (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround:WaitTargetGround(type, new InjectionValue(-1)).
Código interno de implementación; no es un script independiente.
public void WaitTargetGround(InjectionValue type) => WaitTargetGround(type, new InjectionValue(-1));Parámetros: type (Any), color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("No ground item found. Next target request will be canceled"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(item).
Código interno de implementación; no es un script independiente.
public void WaitTargetGround(InjectionValue type, InjectionValue color)
{
int item = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (item <= 0)
{
SystemMessage("No ground item found. Next target request will be canceled");
bridge.CancelNextTarget();
}
else
bridge.WaitTargetObject(item);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetLast();Prepara una respuesta para el siguiente destino del servidor mediante el alias lasttarget.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- El equipo sólo prepara una respuesta: no utiliza el objeto, habilidad o hechizo en sí. El siguiente destino del servidor recibe el destino preparado al procesar la trama del cliente.
- Las llamadas consecutivas forman una cola de clientes común. Los objetos y los objetivos de coordenadas se procesan uno a la vez; Las ventanas de selección local ClientRequest*/Info/container no lo consumen.
- CancelWaitTarget borra la cola. TerminateAll lo limpia por completo; detener un procedimiento que aún se está ejecutando también invalida sus propias respuestas pendientes. Completar un procedimiento corto normalmente no cancela el objetivo preparado.
- Enviar una respuesta no garantiza la acción en el servidor: verifica el alcance, la accesibilidad del objeto, la visibilidad y las reglas de acción. Para controlar, use el resultado del juego e inicie sesión.
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.WaitTargetLast");
UO.WaitTargetLast();Parámetros y flujo de ejecución:
- No hay argumentos; Se utiliza lasttarget.
- El comando no abre la mira ni realiza la acción en sí.
UO.WaitTargetLast();Parámetros y flujo de ejecución:
- lasttarget debe resolverse en el personaje cargado para esta habilidad.
- La verificación Exists elimina el objeto desconocido; la elección del tipo de objeto y la validez de la habilidad siguen siendo condiciones del guión.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.CancelWaitTarget();
UO.WaitTargetLast();
UO.UseSkill("Anatomy");
}
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:
- IsWaitTargetActive comprueba la cola de respuestas.
- CancelWaitTarget se desprepara sin cerrar la mira personalizada ya abierta.
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.WaitTargetLast();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetLast. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("lasttarget").
Código interno de implementación; no es un script independiente.
public void WaitTargetLast() => WaitTargetObject("lasttarget");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObject(object? objID);
void UO.WaitTargetObject(object? id1, object? id2);Prepara una o dos respuestas serial consecutivas a las vistas del servidor.
-
objID / id1 / id2— Serie/ID de un elemento o carácter, número o cadena hexadecimal/decimal, self/backpack/lasttarget/lastobject o nombre guardado AddObject. Esto no es type. Antes de actuar sobre un objeto con nombre, marque Exists; un alias no resuelto da serial 0. Un solo argumento especifica un objetivo. Las formas numérica y de cadena se actualizan TicksTarget de la misma manera. -
objID— Serie/ID de un elemento o carácter, número o cadena hexadecimal/decimal, self/backpack/lasttarget/lastobject o nombre guardado AddObject. Esto no es type. Antes de actuar sobre un objeto con nombre, marque Exists; un alias no resuelto da serial 0. Un solo argumento especifica un objetivo. Las formas numérica y de cadena se actualizan TicksTarget de la misma manera. -
id1— Serie/ID de un elemento o carácter, número o cadena hexadecimal/decimal, self/backpack/lasttarget/lastobject o nombre guardado AddObject. Esto no es type. Antes de actuar sobre un objeto con nombre, marque Exists; un alias no resuelto da serial 0. El primer objetivo del formulario es con dos líneas. -
id2— Serie/ID de un elemento o carácter, número o cadena hexadecimal/decimal, self/backpack/lasttarget/lastobject o nombre guardado AddObject. Esto no es type. Antes de actuar sobre un objeto con nombre, marque Exists; un alias no resuelto da serial 0. El segundo propósito del formulario es de dos líneas; se aplica al siguiente alcance individual.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- El equipo sólo prepara una respuesta: no utiliza el objeto, habilidad o hechizo en sí. El siguiente destino del servidor recibe el destino preparado al procesar la trama del cliente.
- Las llamadas consecutivas forman una cola de clientes común. Los objetos y los objetivos de coordenadas se procesan uno a la vez; Las ventanas de selección local ClientRequest*/Info/container no lo consumen.
- CancelWaitTarget borra la cola. TerminateAll lo limpia por completo; detener un procedimiento que aún se está ejecutando también invalida sus propias respuestas pendientes. Completar un procedimiento corto normalmente no cancela el objetivo preparado.
- Enviar una respuesta no garantiza la acción en el servidor: verifica el alcance, la accesibilidad del objeto, la visibilidad y las reglas de acción. Para controlar, use el resultado del juego e inicie sesión.
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.WaitTargetObject");
UO.WaitTargetObject("self");Parámetros y flujo de ejecución:
- id="self" - serial de tu personaje. CancelWaitTarget elimina respuestas preparadas previamente.
- UseSkill solicita una habilidad; la vista de su servidor recibe un objetivo preparado.
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");Parámetros y flujo de ejecución:
- objectId - ejemplo serial: reemplaza por el tuyo. Esto no es graphic/type.
- Aquí el objetivo acaba de ser preparado. El siguiente paso del script debería llamar a una acción que realmente espera el objetivo.
return RunScenario();
object? RunScenario()
{
var objectId = 0x40001234;
if (Truth(UO.Exists(objectId)))
{
UO.WaitTargetObject(objectId);
UO.Print("Object target prepared");
}
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:
- El origen y el destino son nombres predefinidos AddObject. GetSerial devuelve filas que coinciden con el formulario id1/id2.
- La primera vista del servidor usa la primera, la segunda, la segunda. Sólo apto para acción con dos miras secuenciales; Elimina un segundo objetivo innecesario antes de realizar otra acció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 first = UO.GetSerial("source");
var second = UO.GetSerial("destination");
if (Truth(UO.Exists(first)) && Truth(UO.Exists(second)))
{
UO.CancelWaitTarget();
UO.WaitTargetObject(first, second);
}
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: objID (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "waittargetobject": WaitTargetObject(Arg(0)); return InjectionValue.Unit;Parámetros: objID (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Código interno de implementación; no es un script independiente.
public void WaitTargetObject(string id) => WaitTargetObject(GetObject(id));Parámetros: id1 (String), id2 (String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id1), GetObject(id2)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id1).
Código interno de implementación; no es un script independiente.
public void WaitTargetObject(string id1, string id2) => WaitTargetObject(GetObject(id1), GetObject(id2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObjectType(object? id, object? @type);
void UO.WaitTargetObjectType(object? id, object? @type, object? color);Prepara dos objetivos secuenciales: un objeto determinado y un objeto encontrado en el suelo.
-
id— Objeto serial/ID: int, cadena numérica/hexadecimal o alias establecido, por ejemplo "lasttarget". Esto no es graphic/type. Verifique el objeto cargado antes de actuar. -
type- Gráfico/type del segundo elemento, int/hex/llamado type. -
color- Opcional hue de la segunda asignatura; -1 cualquiera por defecto.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Permite desde el primer serial hasta el GetObject; el segundo busca FindType(type,color,1,-1,false). Si ambos son positivos, llama al puente.WaitTargetObject(primero,segundo). Se mantiene el orden de los objetivos.
- Si falta al menos un objetivo o no es positivo: mensaje y CancelNextTarget, ambos objetivos no están establecidos. La sucursal no actualiza TicksTarget y no utiliza el artículo.
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.WaitTargetObjectType");
UO.WaitTargetObjectType("self", "0x0E21");Parámetros y flujo de ejecución:
- Prepara dos objetivos secuenciales: un objeto determinado y un objeto encontrado en el suelo.
UO.WaitTargetObjectType("self", "0x0E21");Parámetros y flujo de ejecución:
- Permite desde el primer serial hasta el GetObject; el segundo busca FindType(type,color,1,-1,false). Si ambos son positivos, llama al puente.WaitTargetObject(primero,segundo). Se mantiene el orden de los objetivos.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetObjectType("lasttarget", "0x0E21", -1);
return null;
}Parámetros y flujo de ejecución:
- Si falta al menos un objetivo o no es positivo: mensaje y CancelNextTarget, ambos objetivos no están establecidos. La sucursal no actualiza TicksTarget y no utiliza el artículo.
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.WaitTargetObjectType("self", "0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: id (Any), type (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType:WaitTargetObjectType(id, type, new InjectionValue(-1)).
Código interno de implementación; no es un script independiente.
public void WaitTargetObjectType(InjectionValue id, InjectionValue type)
=> WaitTargetObjectType(id, type, new InjectionValue(-1));Parámetros: id (Any), type (Any), color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetObjectType: object or ground item not found"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(first, second).
Código interno de implementación; no es un script independiente.
public void WaitTargetObjectType(InjectionValue id, InjectionValue type, InjectionValue color)
{
int first = GetObject(id);
int second = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (first <= 0 || second <= 0)
{
SystemMessage("UO.WaitTargetObjectType: object or ground item not found");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetObject(first, second);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetSelf();Prepara una respuesta para el siguiente destino del servidor mediante el alias self.
No hay parámetros.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- El equipo sólo prepara una respuesta: no utiliza el objeto, habilidad o hechizo en sí. El siguiente destino del servidor recibe el destino preparado al procesar la trama del cliente.
- Las llamadas consecutivas forman una cola de clientes común. Los objetos y los objetivos de coordenadas se procesan uno a la vez; Las ventanas de selección local ClientRequest*/Info/container no lo consumen.
- CancelWaitTarget borra la cola. TerminateAll lo limpia por completo; detener un procedimiento que aún se está ejecutando también invalida sus propias respuestas pendientes. Completar un procedimiento corto normalmente no cancela el objetivo preparado.
- Enviar una respuesta no garantiza la acción en el servidor: verifica el alcance, la accesibilidad del objeto, la visibilidad y las reglas de acción. Para controlar, use el resultado del juego e inicie sesión.
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.WaitTargetSelf");
UO.WaitTargetSelf();Parámetros y flujo de ejecución:
- No hay argumentos; Se utiliza self.
- El comando no abre la mira ni realiza la acción en sí.
UO.WaitTargetSelf();Parámetros y flujo de ejecución:
- self debe resolverse en el personaje cargado para esta habilidad.
- La verificación Exists elimina el objeto desconocido; la elección del tipo de objeto y la validez de la habilidad siguen siendo condiciones del guión.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("self")))
{
UO.CancelWaitTarget();
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
}
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:
- IsWaitTargetActive comprueba la cola de respuestas.
- CancelWaitTarget se desprepara sin cerrar la mira personalizada ya abierta.
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.WaitTargetSelf();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetSelf. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("self").
Código interno de implementación; no es un script independiente.
public void WaitTargetSelf() => WaitTargetObject("self");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetTile(object? selector);
void UO.WaitTargetTile(object? x, object? y, object? z);
void UO.WaitTargetTile(object? @type, object? x, object? y, object? z);Prepara un objetivo de coordenadas con gráficos en mosaico opcionales.
-
selector- Solo en forma de un argumento: la cadena "lasttile" que repite el punto almacenado. -
type- Gráfico/mosaico type, 0...65535, no serial. Cero indica un objetivo de coordenadas sin gráficos especificados. Presente en forma de cuatro argumentos; en la forma x/y/z es igual a 0. -
x— Coordenada mundial X en el mapa actual, 0...65535. Este no es un píxel de pantalla ni una coordenada de gump. -
y— Coordenada mundial Y en el mapa actual, 0...65535. -
z- Altura del punto de juego, para un objetivo de red use -128..127. Esto no es un piso ni una capa de equipo.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- El equipo sólo prepara una respuesta: no utiliza el objeto, habilidad o hechizo en sí. El siguiente destino del servidor recibe el destino preparado al procesar la trama del cliente.
- Las llamadas consecutivas forman una cola de clientes común. Los objetos y los objetivos de coordenadas se procesan uno a la vez; Las ventanas de selección local ClientRequest*/Info/container no lo consumen.
- CancelWaitTarget borra la cola. TerminateAll lo limpia por completo; detener un procedimiento que aún se está ejecutando también invalida sus propias respuestas pendientes. Completar un procedimiento corto normalmente no cancela el objetivo preparado.
- Enviar una respuesta no garantiza la acción en el servidor: verifica el alcance, la accesibilidad del objeto, la visibilidad y las reglas de acción. Para controlar, use el resultado del juego e inicie sesión.
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.WaitTargetTile");
UO.WaitTargetTile("lasttile");Parámetros y flujo de ejecución:
- x=1445, y=1690, z=0; el type que falta es igual a 0.
- Éste es el objetivo del mundo. El comando no mueve al personaje ni coloca el elemento en el gump.
UO.CancelWaitTarget();
UO.WaitTargetTile(1445, 1690, 0);Parámetros y flujo de ejecución:
- type=0x0CCA — ejemplo de gráficos; use el type real del mosaico seleccionado. x/y/z es su posición mundial.
- Los gráficos y las coordenadas deben describir el objeto del mapa deseado; el servidor comprueba la validez del objetivo.
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetTile(0x0CCA, 1445, 1690, 0);
return null;
}Parámetros y flujo de ejecución:
- El selector solo permite la última cadena, no distingue entre mayúsculas y minúsculas. Otra cadena o número en formato de un argumento provoca un error.
- Se utilizan los últimos campos del mosaico en TargetManager. Antes de la primera elección, pueden ser cero: primero selecciona el punto deseado en el juego. Tres o cuatro argumentos le permiten configurarlo explícitamente.
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.WaitTargetTile("lasttile");
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: selector (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled."). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Código interno de implementación; no es un script independiente.
public void WaitTargetTile(InjectionValue selector)
{
string name = selector.Kind == InjectionValueKind.String
? (selector.String ?? string.Empty).Trim()
: string.Empty;
if (!name.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
throw new NativeSubrutineException("UO.WaitTargetTile(one argument) accepts only 'lasttile'.");
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length < 4)
{
SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled.");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]);
ticksTarget = Timer();
}Parámetros: x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), x, y, z).
Código interno de implementación; no es un script independiente.
public void WaitTargetTile(InjectionValue x, InjectionValue y, InjectionValue z)
=> WaitTargetTile(new InjectionValue(0), x, y, z);Parámetros: type (Any), x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(x). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Código interno de implementación; no es un script independiente.
public void WaitTargetTile(InjectionValue type, InjectionValue x, InjectionValue y, InjectionValue z)
{
bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z));
ticksTarget = Timer();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetType(object? @type);
void UO.WaitTargetType(object? @type, object? color);Busca un elemento en graphic/hue y lo coloca en la cola del siguiente objetivo.
-
type- Gráfico/type int, cadena hexadecimal o conjunto denominado type. Este no es un elemento serial. -
color- Opcional int hue; predeterminado -1 - cualquier color.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Alcance: Mochila con búsqueda recursiva. Bridge.FindType devuelve el serial encontrado; con serial>0 puente.WaitTargetObject se llama. Estos métodos no actualizan directamente el tiempo de ejecución TicksTarget.
- Sin elemento: mensaje y CancelNextTarget. La búsqueda puede cambiar el FindItem/FoundItems general; El comando no utiliza el elemento encontrado y no espera el cursor.
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.WaitTargetType");
UO.WaitTargetType("0x0E21");Parámetros y flujo de ejecución:
- Busca un elemento en graphic/hue y lo coloca en la cola del siguiente objetivo.
UO.WaitTargetType("0x0E21");Parámetros y flujo de ejecución:
- Alcance: Mochila con búsqueda recursiva. Bridge.FindType devuelve el serial encontrado; con serial>0 puente.WaitTargetObject se llama. Estos métodos no actualizan directamente el tiempo de ejecución TicksTarget.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetType("0x0E21", -1);
return null;
}Parámetros y flujo de ejecución:
- Sin elemento: mensaje y CancelNextTarget. La búsqueda puede cambiar el FindItem/FoundItems general; El comando no utiliza el elemento encontrado y no espera el cursor.
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.WaitTargetType("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: type (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), -1). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Código interno de implementación; no es un script independiente.
public void WaitTargetType(InjectionValue type) => WaitTargetType(ResolveType(type), -1);Parámetros: type (Any), color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), NumberConversions.ToInt(color)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Código interno de implementación; no es un script independiente.
public void WaitTargetType(InjectionValue type, InjectionValue color)
=> WaitTargetType(ResolveType(type), NumberConversions.ToInt(color));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetXYZ(object? x, object? y, object? z);Prepara un objetivo de coordenadas con graphic=0 para la siguiente vista del servidor.
-
x— Coordenada mundial X en el mapa actual, 0...65535. Este no es un píxel de pantalla ni una coordenada de gump. -
y— Coordenada mundial Y en el mapa actual, 0...65535. -
z- Altura del punto de juego, para un objetivo de red use -128..127. Esto no es un piso ni una capa de equipo.
void: sin valor de retorno. Llame en una línea separada; no lo utilice como true/false, serial o type. ¿Metadatos object? para formularios compatibles no cambia el resultado real void.
- El equipo sólo prepara una respuesta: no utiliza el objeto, habilidad o hechizo en sí. El siguiente destino del servidor recibe el destino preparado al procesar la trama del cliente.
- Las llamadas consecutivas forman una cola de clientes común. Los objetos y los objetivos de coordenadas se procesan uno a la vez; Las ventanas de selección local ClientRequest*/Info/container no lo consumen.
- CancelWaitTarget borra la cola. TerminateAll lo limpia por completo; detener un procedimiento que aún se está ejecutando también invalida sus propias respuestas pendientes. Completar un procedimiento corto normalmente no cancela el objetivo preparado.
- Enviar una respuesta no garantiza la acción en el servidor: verifica el alcance, la accesibilidad del objeto, la visibilidad y las reglas de acción. Para controlar, use el resultado del juego e inicie sesión.
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.WaitTargetXYZ");
UO.WaitTargetXYZ(1445, 1690, 0);Parámetros y flujo de ejecución:
- X=1445, Y=1690, Z=0. El gráfico es igual a 0.
- La respuesta se enviará cuando aparezca la vista de coordenadas del servidor.
UO.WaitTargetXYZ(1445, 1690, 0);Parámetros y flujo de ejecución:
- X/Y/Z se leen desde tu propio personaje.
- Este es un objetivo de coordenadas, no un objetivo object en el serial del personaje. Para este último necesitas WaitTargetSelf.
return RunScenario();
object? RunScenario()
{
var x = UO.GetX();
var y = UO.GetY();
var z = UO.GetZ();
UO.WaitTargetXYZ(x, y, z);
return null;
}Parámetros y flujo de ejecución:
- Reemplace las coordenadas con el punto de extracción. UseType busca una pala type=0x0F39 de cualquier color en la mochila.
- Si no dispone de una herramienta adecuada, retire la preparación mediante CancelWaitTarget antes de pasar a otra acció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.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
UO.UseType(0x0F39, -1);
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: x (Any), y (Any), z (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]).
Código interno de implementación; no es un script independiente.
case "waittargetxyz": WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]); return InjectionValue.Unit;ClassicUO — Bad Newbie & C# Scripts IDE