Repository navigation
ES UO Topic client ui
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Muestra mensajes, ventanas de servicio, muestra objetos y abre IDE. Estos pasos no reemplazan el envío de voz al servidor.
| Tema | Comandos y explicaciones |
|---|---|
| UO.Print | |
| ClientPrint | UO.ClientPrint |
| Info Window | UO.FillInfoWindow · UO.ClearInfoWindow · UO.FillNewWindow |
| Text Window | UO.TextOpen · UO.TextPrint · UO.TextClear · UO.TextClose |
| Gomas simples | UO.CloseSimpleGump |
| Close UI Window | UO.CloseClientUIWindow |
| Circle Transparency | UO.CircleTrans |
| Show Z | UO.SetShowZ |
| Open IDE | UO.OpenIDE |
UO.Print · UO.ClientPrint · UO.ClientPrintEx · UO.CharPrint · UO.ColorPrint · UO.ConsolePrint · UO.ServerPrint · UO.SetSilentMode · UO.ConColor · UO.FontColor
UO.ClearInfoWindow · UO.FillInfoWindow · UO.FillNewWindow · UO.TextOpen · UO.TextClear · UO.TextClose · UO.TextPrint · UO.CloseSimpleGump · UO.CloseClientUIWindow · UO.ShowJournal · UO.OpenIDE · UO.HelpRequest · UO.ActivateHandle · UO.CloseHandle · UO.Snap
UO.Hide · UO.ClientHide · UO.ClientMarkChar · UO.CircleTrans · UO.SetShowZ · UO.Morph
UO.AddFigure · UO.UpdateFigure · UO.RemoveFigure · UO.ClearFigures
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
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);Parámetros, resultado y todos los escenarios
UO.FillInfoWindow("Status ready");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ActivateHandle();Solicita a Windows/SDL que traiga la ventana del cliente actual al frente. No hay argumentos ni resultados. Este es un comando de ventana, no un elemento, habilidad o aplicación de destino; El enfoque real depende del sistema de ventanas.
No hay parámetros.
void. La llamada sólo solicita la activación de la ventana; no reconoce que el sistema de ventanas lo puso en primer plano.
- El cliente abre la ventana de vista del juego mediante SDL. El comando no envía un paquete de juego ni realiza una acción en el mundo. Una ventana minimizada o las limitaciones del sistema de ventanas pueden impedir el enfoque real.
- RequireGameView requiere Client.Game. Si la ventana de gráficos de ClassicUO no está abierta, el puente arroja InvalidOperationException. SDL_RaiseWindow solicita que se abra una ventana existente; La decisión sobre el enfoque se deja en manos del sistema de ventanas.
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.ActivateHandle");
UO.ActivateHandle();Parámetros y flujo de ejecución:
- Solicite que la ventana del cliente pase a primer plano.
UO.ActivateHandle();Parámetros y flujo de ejecución:
- No solicites el foco de la ventana antes de conectarte al juego.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Connected()))
{
UO.ActivateHandle();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Envuelva la acción de la ventana en un procedimiento reutilizable.
- Ejecutar la solicitud a través de un procedimiento auxiliar.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
RunAction();
return null;
}
void RunAction()
{
UO.ActivateHandle();
}
}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.ActivateHandle. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ActivateHandle:bridge.ActivateHandle().
Código interno de implementación; no es un script independiente.
public void ActivateHandle() => bridge.ActivateHandle();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.AddFigure(object? figure);Agrega una figura local al mapa mundial de ClassicUO y devuelve su ID. La cifra se almacena en el lado del cliente, no se notifica al servidor del juego.
int es el ID positivo de la cifra sumada. 0 se devuelve si los datos de la cifra son incorrectos o la tarjeta se niega a agregarlos. Transfiera el ID recibido a UO.UpdateFigure o UO.RemoveFigure.
- Crea una figura local para
WorldMapGump. Se admiten líneas, elipses, rectángulos, flechas direccionales y texto. Las coordenadasfcWorldsiguen la transformación y escala del mapa;fcScreense miden en relación con la ventana del mapa. Se muestran las formas de la faceta seleccionada.
Formato de matriz: [kind, coord, x1, y1, x2, y2, brushColor, brushStyle, color, worldNum, text]. kind: 0 línea, 1 elipse, 2 rectángulo, 3 flecha direccional, 4 texto. coord: pantalla 0 world, 1. color utiliza el orden de bytes TColor (0x00BBGGRR) de Delphi. Para una flecha con coordenadas mundiales y x2=0,y2=0, el punto de partida es el carácter actual. Los brushColor y brushStyle históricos se adoptan por motivos de compatibilidad; El sombreado visual no garantiza una coincidencia completa con Delphi.
La figura permanece en la colección del cliente hasta que se elimina/purga o finaliza el proceso. Cambiar de faceta sólo oculta figuras que pertenecen a otra faceta.
- Se acepta un mínimo de campos 9. Si falta worldNum, se utiliza la tarjeta actual; sin texto, se toma una cadena vacía. el tipo está limitado a 0..4, coord - 0..1; otros significados dan 0. El worldNum negativo permite la visualización en cualquier faceta. El contador ID se incrementa antes de marcar SetYokoMapFigure, por lo que una pieza rechazada puede dejar un espacio en ID. Colección WorldMapGump estática en progreso; Los scripts habituales de un administrador utilizan un estado de ejecución persistente común.
- brushColor y brushStyle se guardan en la entrada, pero el renderizador actual no los usa. La línea y el rectángulo se dibujan como un contorno; la elipse consta de segmentos 32. La firma del texto se dibuja sólo para kind=4; otros tipos no lo generan. color especifica el contorno en el formato COLORREF 0x00BBGGRR.
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.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- kind=2 dibuja un contorno rojo. El campo de texto con el valor Área se guarda, pero para este tipo no se dibuja la etiqueta; el texto genera kind=4.
dynamic[] fig = new dynamic[checked((int)(11) + 1)];
fig[0] = 2;
fig[1] = 0;
fig[2] = UO.GetX("self")-3;
fig[3] = UO.GetY("self")-3;
fig[4] = UO.GetX("self")+3;
fig[5] = UO.GetY("self")+3;
fig[6] = 0;
fig[7] = 1;
fig[8] = 255;
fig[9] = UO.WorldNum();
fig[10] = "Area";
var figureId = UO.AddFigure(fig);Parámetros y flujo de ejecución:
- Con coordenadas world y x2=0,y2=0 el origen de la flecha se toma de la posición del personaje cuando se dibuja. El texto con el valor Este para kind=3 no se genera.
return RunScenario();
object? RunScenario()
{
dynamic[] dirFig = new dynamic[checked((int)(11) + 1)];
dirFig[0] = 3;
dirFig[1] = 0;
dirFig[2] = UO.GetX("self") + 10;
dirFig[3] = UO.GetY("self");
dirFig[4] = 0;
dirFig[5] = 0;
dirFig[6] = 0;
dirFig[7] = 1;
dirFig[8] = 65280;
dirFig[9] = UO.WorldNum();
dirFig[10] = "East";
var arrowId = UO.AddFigure(dirFig);
return null;
}Parámetros y flujo de ejecución:
- Crea una línea azul entre dos puntos de la faceta actual.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
dynamic[] lineFig = new dynamic[checked((int)(11) + 1)];
lineFig[0] = 0;
lineFig[1] = 0;
lineFig[2] = UO.GetX("self");
lineFig[3] = UO.GetY("self");
lineFig[4] = UO.GetX("self") + 8;
lineFig[5] = UO.GetY("self");
lineFig[6] = 0;
lineFig[7] = 1;
lineFig[8] = 16711680;
lineFig[9] = UO.WorldNum();
lineFig[10] = "";
var lineId = UO.AddFigure(lineFig);
return null;
}
}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: figure (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::TryMapFigureArg:TryMapFigureArg(0, out int[] figure, out string figureText). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetMapFigure:bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::SerializeMapFigure:SerializeMapFigure(figure, figureText).
Código interno de implementación; no es un script independiente.
case "addfigure":
{
if (!TryMapFigureArg(0, out int[] figure, out string figureText))
return InjectionValue.Zero;
int id = state.NextMapFigureId++;
if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)
return InjectionValue.Zero;
state.MapFigures[id] = SerializeMapFigure(figure, figureText);
return new InjectionValue(id);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CharPrint(object? color, object? msg);
void UO.CharPrint(object? id, object? color, object? msg);Crea una inscripción visible solo para usted sobre el objeto cargado: por ejemplo, una marca del objetivo seleccionado o una advertencia sobre su personaje. Este no es el discurso del personaje ni el mensaje en la parte inferior de la ventana del juego.
-
ides la serie del objeto, no graphic/type o una coordenada. UO.CharPrint en forma de tres argumentos también comprende self, lasttarget y los nombres de objetos almacenados. Para SenderID en UO.ClientPrintEx use un número, como UO.Hex2Int(UO.GetSerial("self")); Los alias de cadena no se resuelven como objetos allí. -
colores UO hue, no RGB. Se toman los bits 16 menos significativos del número; 0x0044 es un ejemplo. -1 se convierte en 0xFFFF en lugar de significar "cualquier color". El color ConColor no se utiliza aquí.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El objeto debe existir en el mundo cargado y no debe eliminarse; El texto vacío o el objetivo faltante no se dibujan. El comando no descarga el objeto del servidor. El servidor y otros jugadores no reciben este mensaje. Sin la ventana del juego, la inscripción no se puede ver en el mundo; no reemplaza el syslog del administrador.
- UO.CharPrint(color, msg) selecciona su personaje. UO.CharPrint(id, color, msg) selecciona el objeto especificado. Ambos formularios utilizan la fuente 3. UO.ClientPrintEx requiere los cuatro argumentos en el orden ID del remitente, Color, Fuente, Texto.
- El número de fuente es UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
- UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx
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.CharPrint");
UO.CharPrint(0x0044, "Ready");Parámetros y flujo de ejecución:
- La primera forma CharPrint coloca Listo encima de su carácter. ClientPrintEx lo recibe serial a través de UO.Hex2Int(UO.GetSerial("self")) y pasa explícitamente la fuente a 3. La inscripción no incluye ningún modo de juego.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
UO.CharPrint(0x0044, "Ready");Parámetros y flujo de ejecución:
- objetivo: serial del último objetivo. Cero significa que no hay nadie a quien etiquetar en este ejemplo. Objetivo seleccionado: solo firma local: el objetivo no es atacado y el objetivo del servidor activo no se completa.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return RunScenario();
object? RunScenario()
{
var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
if (Truth(target != 0))
{
UO.CharPrint(target, 0x0044, "Selected target");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- ShowWeightWarning se declara en su totalidad a continuación. Compara el peso con un límite positivo conocido y escribe sobre su personaje sólo cuando está sobrecargada; no tira nada. Convertir.ToString convierte el peso en texto.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ShowWeightWarning(UO.Weight(), UO.MaxWeight());
return null;
}
void ShowWeightWarning(dynamic weight, dynamic maximum)
{
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.CharPrint(UO.Hex2Int(UO.GetSerial("self")), 0x0044, "Too heavy: " + Convert.ToString(weight));
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: color (Integer/String), msg (String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(bridge.Self, color, msg). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
Código interno de implementación; no es un script independiente.
public void CharPrint(int color, string msg) => CharPrint(bridge.Self, color, msg);Parámetros: color (Integer/String), msg (String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(bridge.Self, NumberConversions.ToInt(color), msg). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
Código interno de implementación; no es un script independiente.
public void CharPrint(string color, string msg) => CharPrint(bridge.Self, NumberConversions.ToInt(color), msg);Parámetros: id (Any/Integer), color (Any/Integer), msg (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Código interno de implementación; no es un script independiente.
public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg)
=> CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg);Parámetros: id (Any/Integer), color (Any/Integer), msg (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CharPrint:bridge.CharPrint(id, color, msg).
Código interno de implementación; no es un script independiente.
public void CharPrint(int id, int color, string msg) => bridge.CharPrint(id, color, msg);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.CircleTrans();
void UO.CircleTrans(object? enabled);Lee o cambia la configuración del círculo de transparencia del perfil activo.
-
enabled- int: 0 lo deshabilita, cualquier valor distinto de cero lo habilita. Sin argumento, la configuración es de sólo lectura.
Sin argumento int 1/0; el formulario con un argumento devuelve null.
- Leer en ausencia de un perfil da 0. Una entrada sin perfil imprime un error; si hay un perfil, cambia UseCircleOfTransparency y guarda el perfil. Esta es una personalización visual del cliente.
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.CircleTrans();
UO.Print("CircleTrans: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- La lectura no cambia el perfil.
var enabled = UO.CircleTrans();
UO.Print(Convert.ToString(enabled));Parámetros y flujo de ejecución:
- La grabación mantiene activado el círculo de transparencia.
return RunScenario();
object? RunScenario()
{
UO.CircleTrans(1);
return null;
}Parámetros y flujo de ejecución:
- La bandera guardada se restaura después de un cambio temporal de configuración.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.CircleTrans();
UO.CircleTrans(0);
UO.CircleTrans(previous);
return null;
}
}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.CircleTrans. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CircleTrans:bridge.CircleTrans().
Código interno de implementación; no es un script independiente.
public int CircleTrans() => bridge.CircleTrans();Parámetros: enabled (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.CircleTrans. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CircleTrans:bridge.CircleTrans(enabled).
Código interno de implementación; no es un script independiente.
public void CircleTrans(int enabled) => bridge.CircleTrans(enabled);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearFigures();Elimina todas las formas de mapas personalizados y sus entradas de tiempo de ejecución.
No hay parámetros.
void: sin valor de retorno.
- Borra WorldMapGump.ClearYokoMapFigures y estado.MapFigures. El mapa base y UserStatics no se modifican.
- ClearYokoMapFigures borra la colección estática en progreso de WorldMapGump, luego el comando borra MapFigures de su estado de tiempo de ejecución. Este alcance de limpieza está determinado por la colección general de clientes, no solo por el nombre del script de llamada.
- Se conservan las etiquetas de mapas personalizadas habituales (userMarkers.usr).
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.ClearFigures");
UO.ClearFigures();Parámetros y flujo de ejecución:
- Elimina todas las formas de mapas personalizados y sus entradas de tiempo de ejecución.
UO.ClearFigures();Parámetros y flujo de ejecución:
- Cree una forma local para el mapa actual y luego elimine todas las formas personalizadas.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(9) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = figure[2] + 1;
figure[5] = figure[3] + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
var figureId = UO.AddFigure(figure);
UO.ClearFigures();
return null;
}Parámetros y flujo de ejecución:
- Borrar un conjunto vacío es aceptable y no crea una nueva configuración.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClearFigures();
UO.ClearFigures();
return null;
}
}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.ClearMapFigures:bridge.ClearMapFigures().
Código interno de implementación; no es un script independiente.
case "clearfigures":
bridge.ClearMapFigures();
state.MapFigures.Clear();
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearInfoWindow();Borra las líneas de la ventana de texto del cliente.
No hay parámetros.
void: sin valor de retorno.
- TextClear borra el búfer; si la ventana estaba abierta, la actualiza con contenido vacío. La ventana no necesariamente se cierra.
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.ClearInfoWindow");
UO.ClearInfoWindow();Parámetros y flujo de ejecución:
- Borra las líneas de la ventana de texto del cliente.
UO.ClearInfoWindow();Parámetros y flujo de ejecución:
- Borre una línea de ventana de texto agregada anteriormente.
return RunScenario();
object? RunScenario()
{
UO.FillInfoWindow("status");
UO.ClearInfoWindow();
return null;
}Parámetros y flujo de ejecución:
- Borrar un conjunto vacío es aceptable y no crea una nueva configuración.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClearInfoWindow();
UO.ClearInfoWindow();
return null;
}
}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.TextClear:bridge.TextClear().
Código interno de implementación; no es un script independiente.
case "clearinfowindow": bridge.TextClear(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientHide(object? objID);Oculta serial un artículo cargado u otro personaje solo en la pantalla ClassicUO, incluidos contenedores, muñecos de papel y artículos equipados.
-
objID— Serie del objeto cargado específico: int o cadena hexadecimal/decimal. Esto no es graphic/type. Para un nombre guardado, use GetSerial(nombre). El parámetro es obligatorio; la vista no aparece.
int 1 después de transmitir el comando del puente. El resultado histórico no confirma la presencia del objeto: incluso para un puente serial o self desconocido genera un error y el tiempo de ejecución devuelve 1. No utilice este valor como prueba para ocultarse correctamente. Los metadatos de compatibilidad muestran object?.
- Se requiere exactamente un argumento. Para seleccionar con el mouse, use UO.Hide().
- Hide(serial) actúa inmediatamente sobre un objeto cargado conocido. Pase serial de una pila/elemento específico en lugar de graphic/type. La pila seleccionada se oculta por completo, independientemente de la Cantidad.
- El artículo permanece en el contenedor: la cantidad, el propietario, el contenido y el estado del servidor no cambian. FindType/GetContent todavía puede encontrarlo. Ocultar no es un filtro de búsqueda, transferencia, eliminación, habilidad de ocultación o invisibilidad del lado del servidor.
- El contenedor normal, la ventana de comercio y la cuadrícula de botín no dibujan el elemento oculto y no aceptan clics/arrastres sobre él. La bandera persiste cuando la ventana se reconstruye y se vuelve a abrir mientras el mismo objeto cargado está en uso.
- El objeto equipado desaparece del muñeco de papel, de la ranura pequeña y de la imagen del personaje. Permanece equipado: la capa, armadura y estado en el servidor no cambian. La bata oculta ya no se superpone a la ropa interior. La imagen del personaje en el administrador se actualiza usando la misma bandera; la lista del equipo real permanece disponible.
- Hide no oculta su propio carácter, terreno y estática. El inexistente serial da un mensaje. Ocultar la bolsa en sí no cierra la ventana de contenido que ya está abierta, ni oculta automáticamente cada elemento incluido.
- No hay ningún comando Mostrar por separado en el API actual. Ocultar pertenece a la instancia del objeto cargado: eliminarlo del mundo del cliente y cargarlo nuevamente (por ejemplo, al volver a conectarse) restablece la bandera. Simplemente cerrar/abrir un cofre no es una forma garantizada de devolver un artículo.
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.ClientHide(0x40001234);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- ObjID es un elemento específico, no su type. Desaparece del display permaneciendo en su contenedor.
var item = 0x40001234;
if (Truth(UO.Exists(item)))
{
UO.ClientHide(item);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- FindType busca graphic 0x0EED de cualquier color en backpack. El serial devuelto se transmite a ClientHide; toda la pila está completamente oculta.
return RunScenario();
object? RunScenario()
{
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.ClientHide(item);
UO.Print("Amount is still: " + Convert.ToString(UO.GetQuantity(item)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- GetSerial resuelve el nombre de la decoración previamente guardada. Primero se debe cargar el artículo, como abrir su contenedor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var item = UO.GetSerial("decoration");
if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
{
UO.ClientHide(item);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientHide:bridge.ClientHide(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "clienthide": bridge.ClientHide(Arg(0)); return InjectionValue.True;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientMarkChar(object? actionIndex, object? id);Actualiza las etiquetas del cliente LastTarget y/o LastAttack.
-
actionIndex- int: 1 - LastTarget; 2 - LastAttack; 3 - ambos. Otros valores imprimen un error. -
id— Serie del objeto o nombre admitido de self/backpack/lasttarget/objeto guardado; Las cadenas numéricas y las cadenas 0x se resuelven en tiempo de ejecución.
void: sin valor de retorno.
- ClientMarkChar modifica los objetivos guardados sin enviar un ataque ni responder al objetivo del servidor. Los comandos posteriores pueden usar la nueva etiqueta.
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.ClientMarkChar");
UO.ClientMarkChar(1, "self");Parámetros y flujo de ejecución:
- El objetivo guardado se convierte en tu propio personaje.
UO.ClientMarkChar(1,"self");Parámetros y flujo de ejecución:
- El último destino se utiliza para ambas etiquetas de cliente.
return RunScenario();
object? RunScenario()
{
var target = UO.LastTarget();
if (Truth(UO.Exists(target)))
{
UO.ClientMarkChar(3, target);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Cero no forma parte del conjunto de acciones y genera un mensaje de error.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ClientMarkChar(0, "self");
return null;
}
}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: actionIndex (Any), id (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ClientMarkChar. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientMarkChar:bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(actionIndex). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Código interno de implementación; no es un script independiente.
public void ClientMarkChar(InjectionValue actionIndex, InjectionValue id)
=> bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientPrint(object? text);Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
-
UO.Printagrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración. - Se utiliza el color de los mensajes del sistema de este tiempo de ejecución de script: inicialmente 0x0440, cambiado UO.ConColor. Esta es una entrada local; el nombre del comando no significa enviarlo al servidor.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.
UO.ClientPrint("Hello from C#");Parámetros y flujo de ejecución:
- procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ClientPrint("Processed item entries: " + Convert.ToString(processed));Parámetros y flujo de ejecución:
- Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ClientPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ClientPrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: text (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "addtojournal":
case "addtosystemjournal":
case "clientprint":
SystemMessage(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientPrintEx(object? senderID, object? color, object? font, object? text);Crea una inscripción visible solo para usted sobre el objeto cargado: por ejemplo, una marca del objetivo seleccionado o una advertencia sobre su personaje. Este no es el discurso del personaje ni el mensaje en la parte inferior de la ventana del juego.
-
senderIDes la serie del objeto, no graphic/type o una coordenada. UO.CharPrint en forma de tres argumentos también comprende self, lasttarget y los nombres de objetos almacenados. Para SenderID en UO.ClientPrintEx use un número, como UO.Hex2Int(UO.GetSerial("self")); Los alias de cadena no se resuelven como objetos allí. -
colores UO hue, no RGB. Se toman los bits 16 menos significativos del número; 0x0044 es un ejemplo. -1 se convierte en 0xFFFF en lugar de significar "cualquier color". El color ConColor no se utiliza aquí. -
font: número de fuente UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El objeto debe existir en el mundo cargado y no debe eliminarse; El texto vacío o el objetivo faltante no se dibujan. El comando no descarga el objeto del servidor. El servidor y otros jugadores no reciben este mensaje. Sin la ventana del juego, la inscripción no se puede ver en el mundo; no reemplaza el syslog del administrador.
- UO.CharPrint(color, msg) selecciona su personaje. UO.CharPrint(id, color, msg) selecciona el objeto especificado. Ambos formularios utilizan la fuente 3. UO.ClientPrintEx requiere los cuatro argumentos en el orden ID del remitente, Color, Fuente, Texto.
- El número de fuente es UO, no el tamaño en puntos ni el nombre de fuente de Windows. El número está limitado al rango 0..255; La disponibilidad de una fuente específica depende de los archivos del juego. En el ejemplo, 3 es el número de fuente normal.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
- UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx
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.ClientPrintEx");
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");Parámetros y flujo de ejecución:
- La primera forma CharPrint coloca Listo encima de su carácter. ClientPrintEx lo recibe serial a través de UO.Hex2Int(UO.GetSerial("self")) y pasa explícitamente la fuente a 3. La inscripción no incluye ningún modo de juego.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");Parámetros y flujo de ejecución:
- objetivo: serial del último objetivo. Cero significa que no hay nadie a quien etiquetar en este ejemplo. Objetivo seleccionado: solo firma local: el objetivo no es atacado y el objetivo del servidor activo no se completa.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return RunScenario();
object? RunScenario()
{
var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
if (Truth(target != 0))
{
UO.ClientPrintEx(target, 0x0044, 3, "Selected target");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- ShowWeightWarning se declara en su totalidad a continuación. Compara el peso con un límite positivo conocido y escribe sobre su personaje sólo cuando está sobrecargada; no tira nada. Convertir.ToString convierte el peso en texto.
- GetSerial devuelve una cadena hexadecimal. Hex2Int lo convierte en un int antes de compararlo con el número 0; la cadena "0x00000000" no se puede marcar como el número 0.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ShowWeightWarning(UO.Weight(), UO.MaxWeight());
return null;
}
void ShowWeightWarning(dynamic weight, dynamic maximum)
{
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Too heavy: " + Convert.ToString(weight));
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: senderID (Any), color (Any), font (Any), text (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CharPrintEx:bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(3).
Código interno de implementación; no es un script independiente.
case "clientprintex":
bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseClientUIWindow(object? uiWindowType, object? id);Cierra la ventana del cliente local del tipo especificado para un objeto específico. Por ejemplo, puedes quitar el muñeco de papel del personaje, su estado o la ventana de la mochila. El comando no cierra el cliente del juego y no responde a los botones de activación del servidor.
-
uiWindowType— Código de ventana numérico obligatorio: 0 — muñeco de papel (equipo), 1 — estado del personaje, 2 — perfil, 3 — contenedor. Esta es una lista separada de cuatro códigos, no el cuerpo graphic/type ni el ID server gump. Otros números no encuentran la ventana. -
id— Serie del objeto al que pertenece la ventana: carácter self/serial para los tipos 0..2, contenedor backpack/serial para el tipo 3. Acepta un número, una cadena hexadecimal o un alias de objeto resoluble. Este no es el número de ventana en la lista InfoGumps. Un alias de objeto desconocido se convierte en 0.
void - sin valor. La llamada se escribe en una línea aparte, sin var resultado = y sin if UO.CloseClientUIWindow(...). Si no hay ninguna ventana abierta adecuada, no pasa nada; el comando no devuelve true/false.
- Ambos parámetros son obligatorios. Se comparan tanto la clase de ventana como LocalSerial. Llamar con (3, self) no significa mochila: la mochila requiere backpack.
- La omisión afecta a ventanas de este tipo abiertas, aún no destruidas/serial; todas las ventanas coincidentes se cierran en el hilo del juego. Las ventanas restantes permanecen abiertas.
- La interfaz se cierra, los elementos no se eliminan del contenedor y el personaje no desaparece del mundo. Es seguro repetirlo: si la ventana ya está cerrada, no hay coincidencia.
- Para diálogos del lado del servidor, estudie UO.CloseSimpleGump y UO.NumGumpButton; los códigos 0..3 de este comando no se aplican allí.
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.CloseClientUIWindow");
UO.CloseClientUIWindow(0, "self");Parámetros y flujo de ejecución:
- Sólo se cierra la ventana del equipo de tu personaje; su estado, perfil y mochila siguen siendo ventanas separadas.
UO.CloseClientUIWindow(0, "self");Parámetros y flujo de ejecución:
- Si la mochila no fue abierta, la acción no cambiará nada. Este comando no mueve elementos y no devuelve ningún resultado.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Connected()) && Truth(UO.Exists("backpack")))
{
UO.CloseClientUIWindow(3, "backpack");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- 1 - estado, 2 - perfil. La identificación es serial del mobile seleccionado. ASC(texto,0) aquí analiza la cadena serial en un número con un 0 de repuesto. El procedimiento de usuario no promete nada sobre la presencia de una ventana; Ambas llamadas tienen Unidad.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var selected = Asc(UO.GetSerial("lasttarget"), 0);
CloseMobilePanels(selected);
return null;
}
void CloseMobilePanels(dynamic id)
{
if (Truth(id == 0) || !(Truth(UO.Exists(id))))
{
return;
}
UO.CloseClientUIWindow(1, id);
UO.CloseClientUIWindow(2, id);
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: uiWindowType (Any), id (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseClientWindow:bridge.CloseClientWindow(Arg(0), Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "closeclientuiwindow": bridge.CloseClientWindow(Arg(0), Arg(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseHandle();Solicita que la aplicación cliente actual salga a través de Client.Game.Exit.
No hay parámetros.
void: sin valor de retorno.
- CloseUO se envía al mismo puente.CloseHandle. La salida se ejecuta en el hilo del juego; si falta Client.Game, no hay ninguna acción. El comando no es apagar un gump separado.
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.CloseHandle");
UO.CloseHandle();Parámetros y flujo de ejecución:
- La llamada solicita la finalización de la aplicación del cliente.
UO.CloseHandle();Parámetros y flujo de ejecución:
- El ejemplo muestra una condición controlada; el valor 0 mantiene abierto al cliente.
return RunScenario();
object? RunScenario()
{
var finishClient = 0;
if (Truth(finishClient))
{
UO.CloseHandle();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Un asistente completamente declarado permite la habilitación de salida explícita.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
FinishClient(0);
return null;
}
void FinishClient(dynamic enabled)
{
if (Truth(enabled))
{
UO.CloseHandle();
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.CloseHandle. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseHandle:bridge.CloseHandle().
Código interno de implementación; no es un script independiente.
public void CloseHandle() => bridge.CloseHandle();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseSimpleGump(object? gumpIndex);Cierra localmente un servidor gump que puede cerrarse mediante un índice estricto.
-
gumpIndex— Obligatorio int — índice del servidor activo gump, de 0 a GetGumpsCount()-1. Este no es GumpID/serial. Los números negativos y los índices fuera de la lista no son válidos. Abrir, cerrar y reordenar ventanas puede cambiar el índice; marque GetGumpID/GetGumpSerial antes de actuar.
void - no devuelve nada. El resultado no debe interpretarse como una confirmación del servidor o bool.
- Funciona con gumps de servidor activos. La mochila, el mapa, la configuración y otras ventanas locales no están incluidas en esta lista. Una llamada lee datos en el hilo del juego; diferentes llamadas pueden ver diferentes estados de la lista.
- Índice no válido y NoClose no cambian nada. El comando no envía la respuesta del botón al servidor. Para esta respuesta, utilice SendGumpSelect.
- El cierre modifica la lista y los índices. Para un cierre masivo, recorra la lista desde el último índice hasta el primero.
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.CloseSimpleGump");
UO.CloseSimpleGump(0);Parámetros y flujo de ejecución:
- 0 es un índice, no ID. Si la ventana prohíbe cerrarse, permanece abierta.
UO.CloseSimpleGump(0);Parámetros y flujo de ejecución:
- El recorrido inverso reduce el impacto de los cambios de índice posteriores al cierre. Al abrir nuevas ventanas en paralelo, consulte la lista nuevamente.
return RunScenario();
object? RunScenario()
{
var i = UO.GetGumpsCount() - 1;
while (Truth(i >= 0))
{
UO.CloseSimpleGump(i);
i = i - 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- info[1] - GumpID guardado. La acción no devuelve nada, por lo que el resultado no se asigna a la variable.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.CloseSimpleGump(0);
UO.Print(Hex(info[1]));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: gumpIndex (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(Arg(0)).
Código interno de implementación; no es un script independiente.
case "closesimplegump":
if (bridge is IApiGumpAccess gumpAccess) gumpAccess.CloseGumpAtIndex(Arg(0));
else bridge.CloseSimpleGump(Arg(0));
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ColorPrint(object? color, object? msg);Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.
-
color- UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits bajos 16. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado. Sin color se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
-
UO.Printagrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración. - Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.
UO.ColorPrint(0x0044, "Hello from C#");Parámetros y flujo de ejecución:
- procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ColorPrint(0x0044, "Processed item entries: " + Convert.ToString(processed));Parámetros y flujo de ejecución:
- Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ColorPrint(0x0044, "Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ColorPrint(0x0044, "Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: color (Any), msg (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ColorPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(NumberConversions.ToInt(color), msg.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Código interno de implementación; no es un script independiente.
public void ColorPrint(InjectionValue color, InjectionValue msg) => bridge.Print(NumberConversions.ToInt(color), msg.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ConColor(object? color);Establece UO hue para mensajes del sistema posteriores de este tiempo de ejecución de script.
-
color- UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits 16 bajos. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- Afecta a los siguientes UO.ClientPrint, UO.AddToJournal y UO.AddToSystemJournal. No cambia el color de las líneas anteriores, no cambia el perfil SpeechHue y no cambia el color de UO.Print sin un argumento de color. El antiguo captador de color no está aquí: almacene el hue regular seleccionado en su variable.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
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.ConColor");
UO.ConColor(0x0044);Parámetros y flujo de ejecución:
- 0x0044 se convierte en el color de la siguiente línea del sistema. ConColor por sí solo no imprime nada.
UO.ConColor(0x0044);
UO.AddToSystemJournal("Notice");Parámetros y flujo de ejecución:
- El Print normal conserva su color 0x03B2 y el AddToJournal usa el 0x0044 especificado. Ambos mensajes son locales.
return RunScenario();
object? RunScenario()
{
UO.ConColor(0x0044);
UO.Print("Normal Print color");
UO.AddToJournal("System color");
return null;
}Parámetros y flujo de ejecución:
- usualHue=0x0440 es claramente el color normal seleccionado, no el valor anterior leído. El intento utiliza el temporal 0x0035;
finallydevuelve usualHue, luego la siguiente línea se imprime nuevamente en color normal.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var usualHue = 0x0440;
UO.ConColor(usualHue);
try
{
UO.ConColor(0x0035);
UO.AddToSystemJournal("Temporary warning");
}
finally
{
UO.ConColor(usualHue);
}
UO.AddToSystemJournal("Normal messages again");
return null;
}
}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: color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ConColor. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Código interno de implementación; no es un script independiente.
public void ConColor(InjectionValue color)
{
systemMessageColor = NumberConversions.ToInt(color);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ConsolePrint(object? msg);Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
-
UO.Printagrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración. - Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
- A pesar de que el nombre dice Consola, esta es la misma salida del juego local, no una terminal de Windows separada.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.
UO.ConsolePrint("Hello from C#");Parámetros y flujo de ejecución:
- procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ConsolePrint("Processed item entries: " + Convert.ToString(processed));Parámetros y flujo de ejecución:
- Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ConsolePrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ConsolePrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: msg (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ConsolePrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(msg.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Código interno de implementación; no es un script independiente.
public void ConsolePrint(InjectionValue msg) => bridge.Print(msg.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FillInfoWindow(object? s);Agrega una línea a una ventana de texto y la muestra.
-
s— Texto de línea; el valor se convierte a string.
void: sin valor de retorno.
- Las filas acumuladas previamente se conservan hasta el límite MaxTextWindowLines.
- TextPrint agrega una línea y muestra el propio YokoTextWindowGump; TextOpen asegura el estado abierto. Cuando el búfer se desborda, las líneas más antiguas se eliminan. Esta es una ventana de texto separada, no un servidor gump ni UO.GetInfo.
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.FillInfoWindow");
UO.FillInfoWindow("Status ready");Parámetros y flujo de ejecución:
- El texto se envía a la ventana de texto del cliente.
UO.FillInfoWindow("Status ready");Parámetros y flujo de ejecución:
- La cadena se forma a partir de la corriente local HP.
return RunScenario();
object? RunScenario()
{
var status = "HP: " + Convert.ToString(UO.GetHP());
UO.FillInfoWindow(status);
return null;
}Parámetros y flujo de ejecución:
- El segundo comando agrega el segundo después del primero.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.FillInfoWindow("first");
UO.FillInfoWindow("second");
return null;
}
}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: s (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Código interno de implementación; no es un script independiente.
case "fillinfowindow":
bridge.TextPrint(Text(0));
bridge.TextOpen();
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FillNewWindow(object? s);Borra la ventana de texto, agrega una línea y la muestra.
-
s— Texto de línea; el valor se convierte a string.
void: sin valor de retorno.
- Antes de ejecutar TextPrint, TextClear; Las filas acumuladas previamente se eliminan.
- TextPrint agrega una línea y muestra el propio YokoTextWindowGump; TextOpen asegura el estado abierto. Cuando el búfer se desborda, las líneas más antiguas se eliminan. Esta es una ventana de texto separada, no un servidor gump ni UO.GetInfo.
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.FillNewWindow");
UO.FillNewWindow("Status ready");Parámetros y flujo de ejecución:
- El texto se envía a la ventana de texto del cliente.
UO.FillNewWindow("Status ready");Parámetros y flujo de ejecución:
- La cadena se forma a partir de la corriente local HP.
return RunScenario();
object? RunScenario()
{
var status = "HP: " + Convert.ToString(UO.GetHP());
UO.FillNewWindow(status);
return null;
}Parámetros y flujo de ejecución:
- El segundo comando reemplaza el contenido: lo que queda es el segundo.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.FillNewWindow("first");
UO.FillNewWindow("second");
return null;
}
}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: s (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClear:bridge.TextClear(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Código interno de implementación; no es un script independiente.
case "fillnewwindow": bridge.TextClear(); bridge.TextPrint(Text(0)); bridge.TextOpen(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FontColor(object? color);Establece hue en el UO.UOAMessage local posterior de este script. No cambia el color del habla del personaje, ni el tema normal UO.Print, InfoFindList o IDE.
-
color— Índice numérico obligatorio hue 0..65535, por ejemplo 0x0044. Este no es RGB. int se almacena en el interior y cuando la salida se reduce a ushort; -1 NO significa restablecer y se convierte en 65535. El valor inicial del nuevo tiempo de ejecución es 0x03B2. No hay forma sin argumento.
void: sin resultado, color antiguo o señal de éxito. Para revertir su configuración más tarde, almacene el hue seleccionado en una variable de secuencia de comandos.
- Solo cambia de estado.FontColor, no imprime mensaje ni envía paquete de red.
- Válido hasta el próximo FontColor en el mismo tiempo de ejecución. Otro guión independiente tiene su propio estado. UO.Print(text,color) establece el color directamente y no lee FontColor.
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.FontColor");
UO.FontColor(0x0021);Parámetros y flujo de ejecución:
- 0x0021 — índice hue; El tono final depende de la ficha de tonos del cliente. El mensaje es visible localmente; no lo dice el personaje.
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
UO.UOAMessage("No gold in the loaded backpack");
}
else
{
UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Aviso completo acepta texto y hue. El último hue instalado permanece para el próximo UOAMessage de este tiempo de ejecución. No hay FontColor() incorporado para leer aquí.
return RunScenario();
object? RunScenario()
{
Notice("Supplies checked", 0x0044);
Notice("Restock needed", 0x0021);
return null;
}
void Notice(dynamic text, dynamic hue)
{
UO.FontColor(hue);
UO.UOAMessage(text);
}Parámetros y flujo de ejecución:
- 0x03B2: valor inicial FontColor del nuevo tiempo de ejecución. Finalmente devuelve exactamente la base seleccionada en el manejo normal de finalización/error; no restaura el valor anterior desconocido.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var baseHue = 0x03B2;
try
{
UO.FontColor(0x0021);
UO.UOAMessage("Check the route before moving");
}
finally
{
UO.FontColor(baseHue);
}
UO.UOAMessage("Ready");
UO.Print("Regular Print keeps its own color");
return null;
}
}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: color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, state.FontColor).
Código interno de implementación; no es un script independiente.
case "fontcolor": state.FontColor = Arg(0, state.FontColor); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.HelpRequest();Solicita el menú de ayuda del servidor.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteClientApiCompatibility llama a HelpRequest, que envía GameActions.RequestHelp a través de Invoke. El contenido del menú lo determina el servidor.
- En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.
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.HelpRequest");
UO.HelpRequest();Parámetros y flujo de ejecución:
- Solicita el menú de ayuda del servidor.
UO.HelpRequest();Parámetros y flujo de ejecución:
- ExecuteClientApiCompatibility llama a HelpRequest, que envía GameActions.RequestHelp a través de Invoke. El contenido del menú lo determina el servidor.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.IsOnline()))
{
UO.HelpRequest();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
if (Truth(UO.IsOnline()))
{
UO.HelpRequest();
UO.Print("Help requested");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.HelpRequest:bridge.HelpRequest().
Código interno de implementación; no es un script independiente.
case "helprequest": bridge.HelpRequest(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Hide();
void UO.Hide(object? serial);Elimina un elemento cargado u otro personaje de la pantalla ClassicUO. Ayuda a eliminar objetos que interfieren; trabaja con artículos dentro de contenedores y artículos comerciales, equipados en la muñeca de papel y en sus pequeñas ranuras para equipos.
-
serial— Numérico serial o su cadena hexadecimal/decimal. Esto no es type. Para un objeto con nombre, primero obtenga la cadena numérica mediante GetSerial(nombre). Sin discusión, aparece un objetivo local.
void: sin valor de retorno. El resultado no se puede asignar como serial, graphic/type, cantidad o true/false. La información se envía a la interfaz/registro en lugar de devolverse al script.
- Hide() abre una mira local e inmediatamente devuelve el control al script. Haga clic en un elemento de la muñeca de papel, un elemento en un contenedor abierto o un objeto en el mundo. Escape cancela la selección.
- Hide(serial) actúa inmediatamente sobre un objeto cargado conocido. Pase serial de una pila/elemento específico en lugar de graphic/type. La pila seleccionada se oculta por completo, independientemente de la Cantidad.
- El artículo permanece en el contenedor: la cantidad, el propietario, el contenido y el estado del servidor no cambian. FindType/GetContent todavía puede encontrarlo. Ocultar no es un filtro de búsqueda, transferencia, eliminación, habilidad de ocultación o invisibilidad del lado del servidor.
- El contenedor normal, la ventana de comercio y la cuadrícula de botín no dibujan el elemento oculto y no aceptan clics/arrastres sobre él. La bandera persiste cuando la ventana se reconstruye y se vuelve a abrir mientras el mismo objeto cargado está en uso.
- El objeto equipado desaparece del muñeco de papel, de la ranura pequeña y de la imagen del personaje. Permanece equipado: la capa, armadura y estado en el servidor no cambian. La bata oculta ya no se superpone a la ropa interior. La imagen del personaje en el administrador se actualiza usando la misma bandera; la lista del equipo real permanece disponible.
- Hide no oculta su propio carácter, terreno y estática. El inexistente serial da un mensaje. Ocultar la bolsa en sí no cierra la ventana de contenido que ya está abierta, ni oculta automáticamente cada elemento incluido.
- No hay ningún comando Mostrar por separado en el API actual. Ocultar pertenece a la instancia del objeto cargado: eliminarlo del mundo del cliente y cargarlo nuevamente (por ejemplo, al volver a conectarse) restablece la bandera. Simplemente cerrar/abrir un cofre no es una forma garantizada de devolver un artículo.
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.Hide");
UO.Hide();Parámetros y flujo de ejecución:
- No hay parámetros. Después de hacer clic, solo desaparece el elemento seleccionado; El contenido del cofre en el servidor no cambia.
UO.Hide();
UO.Print("Select an item to hide locally");Parámetros y flujo de ejecución:
- Hide recibe ID del resultado de la búsqueda, no 0x0EED. Si no hay resultado, la llamada no se ejecuta. La unidad de Hide no se puede comparar con true/false.
return RunScenario();
object? RunScenario()
{
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item == ""))
{
UO.Print("No loaded matching item");
return null;
}
UO.Hide(item);
UO.Print("Stack amount: " + Convert.ToString(UO.GetQuantity(item)));
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- El objeto nombrado se resuelve primero mediante GetSerial. Marcar Exists significa presencia en la memoria, ocultación fallida o disponibilidad para la transferencia.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var item = UO.GetSerial("decoration");
if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
{
UO.Hide(item);
}
else
{
UO.Print("Select a loaded object other than self");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Parámetros y flujo de ejecución:
- 22 es el número de capa, no serial o type. Primero ObjAtLayer recibe serial, luego Hide oculta la imagen de esa cosa en particular. No se realizan retiros ni traslados del artículo; Reabrir Paperdoll no lo muestra.
var robe = UO.ObjAtLayer(22);
if (Truth(robe == 0))
{
UO.Print("No robe equipped");
return null;
}
UO.Hide(robe);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;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.Hide. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestInteractiveHideTarget:bridge.RequestInteractiveHideTarget().
Código interno de implementación; no es un script independiente.
public void Hide()
{
// Action command: the bridge owns UI/error reporting. A missing/non-interactive
// target surface must not turn a void compatibility command into a script failure.
bridge.RequestInteractiveHideTarget();
}Parámetros: serial (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Hide. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientHide:bridge.ClientHide(NumberConversions.ToInt(serial)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serial).
Código interno de implementación; no es un script independiente.
public void Hide(InjectionValue serial)
{
bridge.ClientHide(NumberConversions.ToInt(serial));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Morph(object? @type);Cambia localmente el graphic del personaje actual.
-
type- int body graphic o la cadena type resuelta por ResolveType. 0 restaura graphic guardado con el primer Morph; un número distinto de cero se reduce a ushort.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Puente.Morph sin Player no cambia nada. La primera vez que se llama, guarda _originalGraphic y luego lo asigna a Player.Graphic. Actualizaciones en tiempo de ejecución ticksAnim=Timer incluso si falta el reproductor.
- Esta es una apariencia local, no una transformación del servidor o un cambio en la raza/habilidades disponibles. Esta función de puente no verifica los valores fuera de ushort y se reducen a bits 16.
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.Morph");
UO.Morph("0x0190");Parámetros y flujo de ejecución:
- Cambia localmente el graphic del personaje actual.
UO.Morph("0x0190");Parámetros y flujo de ejecución:
- Puente.Morph sin Player no cambia nada. La primera vez que se llama, guarda _originalGraphic y luego lo asigna a Player.Graphic. Actualizaciones en tiempo de ejecución ticksAnim=Timer incluso si falta el reproductor.
return RunScenario();
object? RunScenario()
{
UO.Morph(0);
return null;
}Parámetros y flujo de ejecución:
- Esta es una apariencia local, no una transformación del servidor o un cambio en la raza/habilidades disponibles. Esta función de puente no verifica los valores fuera de ushort y se reducen a bits 16.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Morph("0x0190");
UO.Wait(500);
UO.Morph(0);
return null;
}
}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 (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Morph. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Morph:bridge.Morph(type). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Código interno de implementación; no es un script independiente.
public void Morph(int type)
{
bridge.Morph(type);
ticksAnim = Timer();
}Parámetros: type (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Morph. -
InjectionScript.Runtime.InjectionApiUO.Morph:Morph(ResolveType(type)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Código interno de implementación; no es un script independiente.
public void Morph(string type) => Morph(ResolveType(type));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.OpenIDE();
void UO.OpenIDE(object? filePath);-
filePath— Ruta opcional. En blanco/espacio en blanco: abre el editor sin seleccionar un archivo; relativo se resuelve desde _manager.AutoloadPath, se conserva absoluto.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Bridge.OpenIDE prepara la ruta solicitada, luego Invoke llama a YokoScriptEditorGump.Open(_world,requested). El script del archivo no se ejecuta con el comando OpenIDE.
- El editor es una ventana gráfica, no una aplicación externa Launch. Leer/mostrar el archivo depende de la existencia de la ruta y la lógica del editor.
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.OpenIDE");
UO.OpenIDE();Parámetros y flujo de ejecución:
- Abre el editor gráfico C# IDE.
UO.OpenIDE();Parámetros y flujo de ejecución:
- Bridge.OpenIDE prepara la ruta solicitada, luego Invoke llama a YokoScriptEditorGump.Open(_world,requested). El script del archivo no se ejecuta con el comando OpenIDE.
return RunScenario();
object? RunScenario()
{
UO.OpenIDE("Example.csx");
return null;
}Parámetros y flujo de ejecución:
- El editor es una ventana gráfica, no una aplicación externa Launch. Leer/mostrar el archivo depende de la existencia de la ruta y la lógica del editor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var path = "C:\\UO Scripts\\Example.csx";
UO.OpenIDE(path);
return null;
}
}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.OpenIDE. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenIDE:bridge.OpenIDE(string.Empty).
Código interno de implementación; no es un script independiente.
public void OpenIDE() => bridge.OpenIDE(string.Empty);Parámetros: filePath (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.OpenIDE. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenIDE:bridge.OpenIDE(filePath.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:filePath.ToString().
Código interno de implementación; no es un script independiente.
public void OpenIDE(InjectionValue filePath) => bridge.OpenIDE(filePath.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Print(object? msg);
void UO.Print(object? msg, object? color);Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.
-
color- UO hue, no RGB. Número o cadena hexadecimal; el puente utiliza los bits bajos 16. No confundir con graphic/type. 0x0044 en el ejemplo es el hue seleccionado. Sin color se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
-
UO.Printagrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración. - Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
UO.Print("C# script started");
UO.Print($"Position: {UO.GetX()}, {UO.GetY()}");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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.
UO.Print("Hello from C#");Parámetros y flujo de ejecución:
- procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);Parámetros y flujo de ejecución:
- Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.Print("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum), 0x0044);
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.Print("Weight changed: " + Convert.ToString(current), 0x0044);
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: msg (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Print. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(msg.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Código interno de implementación; no es un script independiente.
public void Print(InjectionValue msg)
{
bridge.Print(msg.ToString());
}Parámetros: msg (Any), color (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Print. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(NumberConversions.ToInt(color), msg.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Código interno de implementación; no es un script independiente.
public void Print(InjectionValue msg, InjectionValue color)
{
bridge.Print(NumberConversions.ToInt(color), msg.ToString());
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.RemoveFigure(object? figureID);Elimina una figura del mapa local por su ID.
-
figureID- int ID, devolvió AddFigure. Este no es un artículo serial ni un chicle ID.
int — el resultado del puente.RemoveMapFigure: 1/0 por la presencia de una figura eliminada. La entrada del tiempo de ejecución se elimina independientemente del resultado del puente.
- Primero llama a bridge.RemoveMapFigure, luego state.MapFigures.Remove(id), luego devuelve el resultado del puente. Desconocido ID no crea una forma ni desencadena una acción del servidor.
- La figura local del mapa no es un objeto del mundo. Otras formas y geometría del servidor no cambian.
- WorldMapGump almacena imágenes en el diccionario estático del proceso. Los scripts/chat/macros regulares de un mundo/perfil usan un GetPersistentState común y un contador ID; Los procesos de Individual Manager no comparten dibujos. World.Clear/YokoScripts.Clear y el estado de carga del perfil no borran ni restauran este diccionario (el cargador solo restaura UserStatics). Por tanto, los dibujos pueden sobrevivir a un cambio de mundo/perfil en el mismo proceso, teniendo en cuenta worldNum; el nuevo estado puede volver a enfatizar un dibujo ID ya existente. ClearFigures borra explícitamente los dibujos y los registros del estado actual. Éxito: escritura/eliminación de datos, no prueba de visualización.
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.
var id = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print("Removed flag: " + Convert.ToString(UO.RemoveFigure(id)));Parámetros y flujo de ejecución:
- Elimina una figura del mapa local por su ID.
UO.Print(UO.RemoveFigure(1));Parámetros y flujo de ejecución:
- Primero llama a bridge.RemoveMapFigure, luego state.MapFigures.Remove(id), luego devuelve el resultado del puente. Desconocido ID no crea una forma ni desencadena una acción del servidor.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(10) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = UO.GetX() + 1;
figure[5] = UO.GetY() + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
figure[10] = "Example";
var id = UO.AddFigure(figure);
if (Truth(id > 0))
{
UO.Print(UO.RemoveFigure(id));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- La figura local del mapa no es un objeto del mundo. Otras formas y geometría del servidor no cambian.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = 1;
var first = UO.RemoveFigure(id);
var second = UO.RemoveFigure(id);
UO.Print(Convert.ToString(first) + " " + Convert.ToString(second));
return null;
}
}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: figureID (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RemoveMapFigure:bridge.RemoveMapFigure(id).
Código interno de implementación; no es un script independiente.
case "removefigure":
{
int id = Arg(0);
int removed = bridge.RemoveMapFigure(id);
state.MapFigures.Remove(id);
return new InjectionValue(removed);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ServerPrint(object? message);Muestra un mensaje local sobre el progreso del script o la condición de detención. Lo ves tú, no otros jugadores.
Una llamada a un método con un tipo de retorno void se escribe como una declaración independiente C#; el resultado no se puede asignar ni comprobar. Completar la declaración no constituye una confirmación por parte del servidor del juego.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
-
UO.Printagrega una nueva entrada al registro de mensajes del juego: primero lea o guarde la cadena/resultado de búsqueda deseado, luego registre el mensaje de diagnóstico. En un bucle rápido, registre mensajes cuando se produzcan cambios en lugar de cada iteración. - Sin color, se utiliza hue 0x03B2. UO.Print(text, color) acepta texto primero; UO.ColorPrint(color, text) – color primero.
- A pesar del nombre del Servidor o de la similitud con un mensaje de red, el comando sólo imprime texto local. Para hablar con el mundo, use UO.Say.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
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 sin valor de retorno (void). El texto del mensaje aparece directamente en la llamada.
UO.ServerPrint("Hello from C#");Parámetros y flujo de ejecución:
- procesado=12: número de demostración de elementos ya procesados. Convert.ToString lo convierte en una cadena. Este ejemplo sólo informa un número; no transfiere los objetos en sí.
var processed = 12;
UO.ServerPrint("Processed item entries: " + Convert.ToString(processed));Parámetros y flujo de ejecución:
- Se leen el peso y el máximo del personaje. Un máximo cero/desconocido no se considera una sobrecarga. Si el peso >= máximo, se imprime una línea y termina Principal; Los artículos no se desechan.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ServerPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Main recuerda el peso, espera 1000 milisegundos y llama al ReportWeight completamente declarado. El asistente imprime solo si el peso ha cambiado y devuelve el nuevo peso para la siguiente verificación. No crea por sí solo un bucle infinito.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ServerPrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: message (String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ServerPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ServerPrint:bridge.ServerPrint(message).
Código interno de implementación; no es un script independiente.
public void ServerPrint(string message) => bridge.ServerPrint(message);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetShowZ(object? stateValue);Cambia el indicador local showZ tiempo de ejecución.
-
stateValue- 0 se apaga; cualquier número entero distinto de cero incluye.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Asigna showZ el valor de 0 o 1 después de NumberConversions.ToInt. Esta función en sí no cambia las coordenadas y no envía el paquete.
- Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.
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.SetShowZ");
UO.SetShowZ(1);Parámetros y flujo de ejecución:
- Cambia el indicador local showZ tiempo de ejecución.
UO.SetShowZ(1);Parámetros y flujo de ejecución:
- Asigna showZ el valor de 0 o 1 después de NumberConversions.ToInt. Esta función en sí no cambia las coordenadas y no envía el paquete.
return RunScenario();
object? RunScenario()
{
UO.SetShowZ(0);
return null;
}Parámetros y flujo de ejecución:
- Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyValue(1);
return null;
}
void ApplyValue(dynamic value)
{
UO.SetShowZ(value);
}
}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: stateValue (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetShowZ. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(stateValue).
Código interno de implementación; no es un script independiente.
public void SetShowZ(InjectionValue stateValue) => showZ = NumberConversions.ToInt(stateValue) != 0 ? 1 : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetSilentMode(object? value);Cambia el indicador local SilentMode tiempo de ejecución.
-
value- 0 se apaga; cualquier número entero distinto de cero incluye.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
- En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
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.SetSilentMode");
UO.SetSilentMode(1);Parámetros y flujo de ejecución:
- Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
UO.SetSilentMode(1);Parámetros y flujo de ejecución:
- Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(0);
return null;
}Parámetros y flujo de ejecución:
- Almacena SilentMode como 0/1. GumpLinesResult lee la bandera: con 0 los resultados no vacíos GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription se imprimen adicionalmente en una ventana de texto y se abren; con 1 se suprime esta visualización adicional. La matriz devuelta no cambia. Otros sonidos de Print y mensajes del servidor no se suprimen.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
ApplyValue(1);
return null;
}
void ApplyValue(dynamic value)
{
UO.SetSilentMode(value);
}
}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: value (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "setsilentmode": state.SilentMode = Arg(0) != 0 ? 1 : 0; return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ShowJournal();Abre una ventana de registro de cliente local.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ShowJournal llama a GameActions.OpenJournal(_world). Los registros no se borran y el texto no se envía al servidor.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.ShowJournal");
UO.ShowJournal();Parámetros y flujo de ejecución:
- Abre una ventana de registro de cliente local.
UO.ShowJournal();Parámetros y flujo de ejecución:
- ShowJournal llama a GameActions.OpenJournal(_world). Los registros no se borran y el texto no se envía al servidor.
return RunScenario();
object? RunScenario()
{
UO.Print("Journal example");
UO.ShowJournal();
return null;
}Parámetros y flujo de ejecución:
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.ShowJournal();
UO.Print(UO.LineCount());
return null;
}
}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. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ShowJournal:bridge.ShowJournal().
Código interno de implementación; no es un script independiente.
case "showjournal": bridge.ShowJournal(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Snap();
int UO.Snap(object? name);
int UO.Snap(object? name, object? quality);
int UO.Snap(object? file, object? quality, object? includeUI);Guarda una instantánea de la ventana gráfica del cliente.
-
name: nombre de archivo opcional. .jpg/.jpeg selecciona JPEG, otro/ninguno selecciona PNG. Se eliminan los directorios del nombre; Sólo se utiliza el nombre base. -
file: nombre de archivo opcional. .jpg/.jpeg selecciona JPEG, otro/ninguno selecciona PNG. Se eliminan los directorios del nombre; Sólo se utiliza el nombre base. -
quality: int opcional, por defecto es 100, limitado a 1...100. Afecta a JPEG; PNG no utiliza calidad con pérdida. -
includeUI: opcional bool, predeterminado true. false dibuja el mundo/la iluminación sin UI.
Indicador numérico int: 1 - archivo de imagen guardado, 0 - error de captura/escritura. Sin una ventana gráfica, RequireGameView arroja un error antes de TakeScreenshot.
- TakeScreenshot escribe en ExecutablePath/Datos/Cliente/Capturas de pantalla, borra los caracteres de nombre no válidos, selecciona automáticamente el nombre por fecha si está vacío, agrega _2/_3 si hay un archivo existente. No se utiliza una ruta absoluta arbitraria.
- Con UI lee el backbuffer; sin UI crea RenderTarget2D y representa el mundo. JPEG fija temporalmente FNA_GRAPHICS_JPEG_SAVE_QUALITY con restauración; PNG SaveAsPng. Los errores dentro de TakeScreenshot se registran y se indican como 0.
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.Snap();
UO.Print("Snap: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Guarda una instantánea de la ventana gráfica del cliente.
UO.Print(UO.Snap());Parámetros y flujo de ejecución:
- TakeScreenshot escribe en ExecutablePath/Datos/Cliente/Capturas de pantalla, borra los caracteres de nombre no válidos, selecciona automáticamente el nombre por fecha si está vacío, agrega _2/_3 si hay un archivo existente. No se utiliza una ruta absoluta arbitraria.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Snap("manual-example.jpg", 85));
return null;
}Parámetros y flujo de ejecución:
- Con UI lee el backbuffer; sin UI crea RenderTarget2D y representa el mundo. JPEG fija temporalmente FNA_GRAPHICS_JPEG_SAVE_QUALITY con restauración; PNG SaveAsPng. Los errores dentro de TakeScreenshot se registran y se indican como 0.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.Print(UO.Snap("manual-world.png", 100, false));
return null;
}
}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.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(null, 100, true).
Código interno de implementación; no es un script independiente.
public int Snap() => bridge.Snap(null, 100, true);Parámetros: name (String)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(name, 100, true).
Código interno de implementación; no es un script independiente.
public int Snap(string name) => bridge.Snap(name, 100, true);Parámetros: name (String), quality (Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true).
Código interno de implementación; no es un script independiente.
public int Snap(string name, int quality) => bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true);Parámetros: file (Any), quality (Any), includeUI (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [Snap]. -
InjectionScript.Runtime.InjectionApiUO.Snap:Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])). -
InjectionScript.Runtime.InjectionValue.ToString:values[0].ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(values[1]). -
InjectionScript.Runtime.InjectionApiUO.ToBoolean:ToBoolean(values[2]).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextClear();Borra el búfer de la ventana de texto local.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Borra _textWindow; si la ventana estaba abierta, la vuelve a mostrar con una lista vacía. Una ventana cerrada permanece cerrada. El registro del cliente no se borra.
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
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.TextClear");
UO.TextClear();Parámetros y flujo de ejecución:
- Borra el búfer de la ventana de texto local.
UO.TextClear();Parámetros y flujo de ejecución:
- Borra _textWindow; si la ventana estaba abierta, la vuelve a mostrar con una lista vacía. Una ventana cerrada permanece cerrada. El registro del cliente no se borra.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Old line");
UO.TextClear();
return null;
}Parámetros y flujo de ejecución:
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.TextClose();
UO.TextClear();
UO.TextOpen();
return null;
}
}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.TextClear. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClear:bridge.TextClear().
Código interno de implementación; no es un script independiente.
public void TextClear() => bridge.TextClear();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextClose();Cierra la ventana de texto local, guardando el búfer.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Establece _textWindowOpen=false y elimina el YokoTextWindowGump existente. La lista _textWindow no se borra; TextOpen volverá a mostrar sus líneas.
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
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.TextClose");
UO.TextClose();Parámetros y flujo de ejecución:
- Cierra la ventana de texto local, guardando el búfer.
UO.TextClose();Parámetros y flujo de ejecución:
- Establece _textWindowOpen=false y elimina el YokoTextWindowGump existente. La lista _textWindow no se borra; TextOpen volverá a mostrar sus líneas.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Retained line");
UO.TextClose();
return null;
}Parámetros y flujo de ejecución:
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.TextPrint("Retained line");
UO.TextClose();
UO.Wait(250);
UO.TextOpen();
return null;
}
}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.TextClose. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClose:bridge.TextClose().
Código interno de implementación; no es un script independiente.
public void TextClose() => bridge.TextClose();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextOpen();Abre una ventana de texto local.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Almacena _textWindowOpen=true y llama a YokoTextWindowGump.Show con la _textWindow actual. El búfer no se borra; La reapertura muestra las filas acumuladas.
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
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.TextOpen");
UO.TextOpen();Parámetros y flujo de ejecución:
- Abre una ventana de texto local.
UO.TextOpen();Parámetros y flujo de ejecución:
- Almacena _textWindowOpen=true y llama a YokoTextWindowGump.Show con la _textWindow actual. El búfer no se borra; La reapertura muestra las filas acumuladas.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Example");
UO.TextOpen();
return null;
}Parámetros y flujo de ejecución:
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.TextOpen();
UO.Wait(500);
UO.TextClose();
return null;
}
}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.TextOpen. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Código interno de implementación; no es un script independiente.
public void TextOpen() => bridge.TextOpen();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextPrint(object? text);Agrega una línea a una ventana de texto local y la abre.
-
text— Texto a través de ToString; guardado como transmitido.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- En el límite, MaxTextWindowLines=2000 elimina líneas antiguas, luego agrega texto o una línea vacía, establece _textWindowOpen=true y muestra la ventana. Esto no es UO.Print en el registro ni es un discurso dirigido al servidor.
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
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.TextPrint");
UO.TextPrint("Example");Parámetros y flujo de ejecución:
- Agrega una línea a una ventana de texto local y la abre.
UO.TextPrint("Example");Parámetros y flujo de ejecución:
- En el límite, MaxTextWindowLines=2000 elimina líneas antiguas, luego agrega texto o una línea vacía, establece _textWindowOpen=true y muestra la ventana. Esto no es UO.Print en el registro ni es un discurso dirigido al servidor.
return RunScenario();
object? RunScenario()
{
var message = "Line 1";
UO.TextPrint(message);
UO.TextPrint("Line 2");
return null;
}Parámetros y flujo de ejecución:
- La acción es interfaz/búfer local; No hay ningún mensaje de red ni confirmación del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
UO.TextClear();
UO.TextPrint("Fresh report");
UO.TextClose();
return null;
}
}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: text (String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.TextPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(text).
Código interno de implementación; no es un script independiente.
public void TextPrint(string text) => bridge.TextPrint(text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.UpdateFigure(object? figureID, object? figure);Reemplaza la descripción de una figura de mapa local existente.
-
figureID- int ID en estado. MapFigures recibido por AddFigure. Desconocido ID da 0. -
figure— Matriz o cadena con |: [tipo,coord,x1,y1,x2,y2,brushColor,brushStyle,color,worldNum,texto]. Primeros campos numéricos 9 mínimos; worldNum es el mapa actual de forma predeterminada, el texto está vacío de forma predeterminada. -
figure[0] (kind)- el tipo debe ser 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure devuelve 0 cuando se violan estos límites. -
figure[1] (coord)- el tipo debe ser 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure devuelve 0 cuando se violan estos límites.
Indicador numérico int: 1: el análisis se realizó correctamente y se puenteó. SetMapFigure devolvió un resultado distinto de cero, después de lo cual se actualizó el registro; 0 - no ID, error en el campo de texto numérico/estructura o error en el puente.
- TryMapFigureArg acepta Array o |string. Los primeros campos 9 se convierten; El texto numérico se verifica con TryStr2Int. Vista no compatible/notación corta: 0, otros errores de conversión de vista pueden romper el script.
- Si el puente falla, la entrada de tiempo de ejecución existente no se reemplaza. Si tiene éxito, guarda SerializeMapFigure con 10 campos numéricos y texto. La figura es sólo local, no un elemento del servidor.
- tipo: 0 línea, 1 elipse (32 segmento de contorno), 2 contorno de rectángulo, 3 flecha, 4 texto. coord=0 — coordenadas mundiales con conversión al mapa, coord=1 — píxeles relativos al área de dibujo del mapa. x1/y1 y x2/y2 - extremos/límites; para la flecha mundial x2=y2=0 establece el comienzo del Jugador y la meta de x1/y1. color: 0x00BBGGRR (byte bajo rojo), color de contorno. brushColor/brushStyle se guardan, pero el render no los lee: no hay relleno. worldNum<0 se muestra en cualquier mapa; de lo contrario, solo en el especificado. El texto se dibuja en el primer punto (+3 píxeles para formas que no son de texto) en la fuente del mapa, no en el color del contorno.
- WorldMapGump almacena imágenes en el diccionario estático del proceso. Los scripts/chat/macros regulares de un mundo/perfil usan un GetPersistentState común y un contador ID; Los procesos de Individual Manager no comparten dibujos. World.Clear/YokoScripts.Clear y el estado de carga del perfil no borran ni restauran este diccionario (el cargador solo restaura UserStatics). Por tanto, los dibujos pueden sobrevivir a un cambio de mundo/perfil en el mismo proceso, teniendo en cuenta worldNum; el nuevo estado puede volver a enfatizar un dibujo ID ya existente. ClearFigures borra explícitamente los dibujos y los registros del estado actual. Éxito: escritura/eliminación de datos, no prueba de visualización.
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.
object?[] figure = { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 };
var id = UO.AddFigure(figure);
figure[8] = 65280;
UO.Print("Updated flag: " + Convert.ToString(UO.UpdateFigure(id, figure)));Parámetros y flujo de ejecución:
- Reemplaza la descripción de una figura de mapa local existente.
dynamic[] figure = new dynamic[checked((int)(8) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = 100;
figure[3] = 100;
figure[4] = 101;
figure[5] = 101;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
UO.Print(UO.UpdateFigure(1, figure));Parámetros y flujo de ejecución:
- TryMapFigureArg acepta Array o |string. Los primeros campos 9 se convierten; El texto numérico se verifica con TryStr2Int. Vista no compatible/notación corta: 0, otros errores de conversión de vista pueden romper el script.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(10) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = UO.GetX() + 1;
figure[5] = UO.GetY() + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
figure[10] = "Example";
var id = UO.AddFigure(figure);
if (Truth(id > 0))
{
UO.Print(UO.UpdateFigure(id, figure));
UO.RemoveFigure(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Si el puente falla, la entrada de tiempo de ejecución existente no se reemplaza. Si tiene éxito, guarda SerializeMapFigure con 10 campos numéricos y texto. La figura es sólo local, no un elemento del servidor.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var figure = "0|0|100|100|101|101|0|0|0";
UO.Print(UO.UpdateFigure(1, figure));
return null;
}
}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: figureID (Any), figure (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::TryMapFigureArg:TryMapFigureArg(1, out int[] figure, out string figureText). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetMapFigure:bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::SerializeMapFigure:SerializeMapFigure(figure, figureText).
Código interno de implementación; no es un script independiente.
case "updatefigure":
{
int id = Arg(0);
if (!state.MapFigures.ContainsKey(id) || !TryMapFigureArg(1, out int[] figure, out string figureText))
return InjectionValue.False;
if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)
return InjectionValue.False;
state.MapFigures[id] = SerializeMapFigure(figure, figureText);
return InjectionValue.True;
}ClassicUO — Bad Newbie & C# Scripts IDE