Repository navigation
ES UO Topic journal
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Busca y espera mensajes, índices de líneas, hora, color y serial del autor. Separe las líneas de registro antiguas del mensaje que espera después de la acción.
| Tema | Comandos y explicaciones |
|---|---|
| Journal | UO.Journal |
| InJournal | UO.InJournal |
| InJournalBetweenTimes | UO.InJournalBetweenTimes |
| WaitJournalLine | UO.WaitJournalLine |
| System Journal | UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal · UO.WaitJournalLineSystem |
| Journal Ignore | UO.AddJournalIgnore · UO.ClearJournalIgnore |
| Journal Color | UO.JournalColor · UO.GetJournalColor |
| Journal Serial | UO.JournalSerial · UO.GetJournalSerial |
| Journal Timer | UO.JournalTimer |
| Found Text | UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer |
UO.Journal · UO.GetJournal · UO.InJournal · UO.InJournalBetweenTimes · UO.LowJournal · UO.HighJournal · UO.ClearJournal · UO.DeleteJournal · UO.ChangeJournalLength · UO.SetJournalLine · UO.AddToJournal · UO.LastJournalMessage · UO.LastMessage
UO.WaitJournalLine · UO.WaitJournalLineSystem · UO.WaitingForJournalText
UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal
UO.AddJournalIgnore · UO.ClearJournalIgnore
UO.JournalColor · UO.GetJournalColor · UO.JournalSerial · UO.GetJournalSerial · UO.JournalTimer · UO.LineCount · UO.LineID · UO.LineIndex · UO.LineMsgType · UO.LineName · UO.LineTextColor · UO.LineTextFont · UO.LineTime · UO.LineType
UO.FoundedParamId · UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer
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 found = UO.InJournal("You see");
if (Truth(found > 0))
{
var text = UO.GetFoundedText();
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros, resultado y todos los escenarios
var started = Now();
var found = UO.WaitJournalLine(started, "success|failed", 3000);
if (Truth(found))
{
UO.Print(UO.GetFoundedText());
}
else
{
UO.Print("Timeout");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddJournalIgnore(object? str);Agrega un filtro de texto local para las entradas del registro de juegos de ClassicUO.
-
str: fragmento de texto no vacío para buscar en el texto de la entrada del diario.
void. El comando no devuelve el número de coincidencias.
- El texto está cortado en los bordes; no se agrega ninguna línea vacía. Al verificar un registro, la búsqueda de una subcadena se realiza sin distinguir entre mayúsculas y minúsculas. La entrada coincidente se oculta localmente en el registro del cliente; el servidor no recibe el filtro.
UO.ClearJournalIgnore()borra todos los filtros de texto agregados. Las entradas que ya se muestran no se restauran cuando se borran.
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.AddJournalIgnore");
UO.AddJournalIgnore("You see");Parámetros y flujo de ejecución:
- Ocultar nuevas publicaciones que contengan esta frase.
UO.AddJournalIgnore("You see");Parámetros y flujo de ejecución:
- El filtro busca una subcadena que no distingue entre mayúsculas y minúsculas.
return RunScenario();
object? RunScenario()
{
var phrase = "vendor";
UO.AddJournalIgnore(phrase);
return null;
}Parámetros y flujo de ejecución:
- Varias llamadas agregan filtros de texto independientes.
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.AddJournalIgnore("You see");
UO.AddJournalIgnore("vendor");
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: str (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.AddJournalIgnore:bridge.AddJournalIgnore(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "addjournalignore": bridge.AddJournalIgnore(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.AddToJournal(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. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.AddToJournal");
UO.AddToJournal("Script started");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.AddToJournal("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.AddToJournal("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.AddToJournal("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.AddToSystemJournal(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. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.AddToSystemJournal");
UO.AddToSystemJournal("Script started");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.AddToSystemJournal("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.AddToSystemJournal("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.AddToSystemJournal("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.AddToSystemJournalEx(object? text, object? textColor, object? bgColor, object? fontSize, object? fontName);Muestra una línea local en la ventana del juego y registra una visualización aproximada del diseño especificado. Útil para mensajes de diagnóstico de script distinguibles.
-
textColor: color del texto en formato 0xRRGGBB, no UO hue. El canal alfa no se utiliza. Ejemplo 0xFF8800 - naranja; el motor selecciona el color más cercano de la paleta UO. -
bgColor- Número negativo - fondo predeterminado; no negativo - RGB 0xRRGGBB. El fondo solicitado se escribe en la salida de IDE, pero no se dibuja un rectángulo de color separado detrás de la línea en la ventana del juego. -
fontSize— Tamaño solicitado en puntos: el valor <= 0 se reemplaza por 10, luego se aplica el rango 4..72. El número de fuente del juego se calcula como un número entero como (tamaño + 1) / 3; No hay un tamaño de escritorio exacto en la ventana del juego. -
fontName: nombre de la fuente para escribir información de diseño en la salida IDE. Se eliminan los espacios en blanco alrededor de los bordes; valor vacío significa Consolas. Este comando no carga una fuente arbitraria de Windows en la ventana del juego.
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.
- Se requieren los cinco argumentos: Texto, TextColor, BGColor, FontSize, FontName. El texto es visible localmente; en IDE se guarda adicionalmente el diseño solicitado. El color de fondo y el nombre de la fuente son señales de diseño y no se garantiza que se reproduzcan exactamente. ConColor no cambia el RGB pasado explícitamente.
- El mensaje va al área inferior izquierda de la ventana del juego y al registro local. Hay una copia disponible en la salida IDE. En el registro general del manager, habilita el filtro de mensajes de script: la entrada está disponible sin la ventana del juego. El filtro de mensajes del sistema del servidor no selecciona dichos registros. El paquete de voz de la red no se envía. Para la inscripción sobre la cabeza hay UO.CharPrint.
- UO.Print · 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.AddToSystemJournalEx");
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");Parámetros y flujo de ejecución:
- Mensaje naranja, fondo predeterminado - 1, tamaño 12: esto hace que la fuente del juego sea 4. Consolas se almacena en la información IDE. El color puede variar del RGB exacto debido a la paleta del juego.
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");Parámetros y flujo de ejecución:
- Un valor BGColor positivo de 0x112233 almacena la solicitud en segundo plano en IDE. Para FontSize=0 se usa 10, el FontName vacío se convierte en Consolas. En la ventana del juego, el fondo no se pinta de acuerdo con este parámetro.
return RunScenario();
object? RunScenario()
{
UO.AddToSystemJournalEx("Formatting details", 0x33AAFF, 0x112233, 0, "");
return null;
}Parámetros y flujo de ejecución:
- ReportCount es un procedimiento completamente declarado. Solo informa cambios en cantidad, seleccionando verde RGB para aumentar y rojo para disminuir. Devuelve una nueva cantidad para la siguiente comparación; el resultado pertenece a ReportCount, no a AddToSystemJournalEx.
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 = 10;
previous = ReportCount(previous, 12);
return null;
}
dynamic ReportCount(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
var textColor = 0xCC3333;
if (Truth(current > previous))
{
textColor = 0x33AA66;
}
UO.AddToSystemJournalEx("Count: " + Convert.ToString(current), textColor, -1, 10, "Consolas");
}
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.
UO.AddToSystemJournalEx(text, textColor, bgColor, fontSize, fontName) — UO.AddToSystemJournalEx(Any,Any,Any,Any,Any)
Parámetros: text (Any), textColor (Any), bgColor (Any), fontSize (Any), fontName (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PrintFormattedJournal:bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1).
Código interno de implementación; no es un script independiente.
case "addtosystemjournalex":
bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ChangeJournalLength(object? newLength);Cambia el límite del historial de registro del cliente que se conserva.
-
newLength— Número de registros para convertir a int. Límites de tiempo de ejecución a continuación a 1; JournalManager límites desde arriba Constantes.MAX_JOURNAL_HISTORY_COUNT.
void: sin valor de retorno.
- Guarda el estado.JournalLength, luego llama a SetJournalLength. JournalManager reduce el historial existente eliminando las entradas más antiguas hasta un nuevo límite. Las entradas filtradas y la visualización de registros son mecanismos separados.
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.ChangeJournalLength");
UO.ChangeJournalLength(100);Parámetros y flujo de ejecución:
- El nuevo límite limita la cantidad de registros guardados.
UO.ChangeJournalLength(100);Parámetros y flujo de ejecución:
- Cuando se reduce el límite, se eliminan las entradas antiguas.
return RunScenario();
object? RunScenario()
{
UO.ChangeJournalLength(1);
return null;
}Parámetros y flujo de ejecución:
- El cero se normaliza a 1 en lugar de borrar el registro.
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.ChangeJournalLength(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: newLength (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, 100). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLength:bridge.SetJournalLength(state.JournalLength).
Código interno de implementación; no es un script independiente.
case "changejournallength": state.JournalLength = Math.Max(1, Arg(0, 100)); bridge.SetJournalLength(state.JournalLength); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearJournal();Elimina líneas del registro local compartido.
No hay parámetros.
void: sin valor de retorno. No devuelve el número de filas eliminadas. Se restablecen el contador de visitas y la selección de script actual.
- El búfer compartido está disponible para todos los scripts: las líneas eliminadas ya no están presentes. Las instantáneas previamente guardadas por otros scripts pueden permanecer, pero su índice pasará a ser -1.
- Sin un filtro de texto, se borra todo el búfer Classic UO, incluido System. El archivo de registro local y los mensajes del servidor no se eliminan.
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.ClearJournal");
UO.ClearJournal();Parámetros y flujo de ejecución:
- No hay argumentos. Se eliminan todas las líneas del búfer compartido.
- El último contador de búsqueda pasa a ser 0; Print puede agregar una nueva fila después de borrarla.
UO.ClearJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));Parámetros y flujo de ejecución:
- La eliminación se produce antes de que se guarde la marca de tiempo. 1000: espera limitada en milisegundos.
- Una marca de tiempo suele ser suficiente para excluir mensajes antiguos; La limpieza también afecta a otros scripts.
return RunScenario();
object? RunScenario()
{
UO.ClearJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}Parámetros y flujo de ejecución:
- Después de limpiar el script actual index=-1, incluso si solo se eliminó parte del búfer.
- La variable de texto almacena la copia leída anteriormente y GetFoundedText ya se ha borrado.
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 text = UO.Journal(0);
UO.ClearJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
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. -
InjectionScript.Runtime.InjectionApiUO.DeleteJournal:DeleteJournal().
Código interno de implementación; no es un script independiente.
case "clearjournal": DeleteJournal(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearJournalIgnore();Elimina todos los filtros de texto JournalManager.
No hay parámetros.
void: sin valor de retorno.
- La eliminación de filtros no elimina el historial ni cancela los filtros de nombre AddChatUserIgnore.
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.ClearJournalIgnore");
UO.ClearJournalIgnore();Parámetros y flujo de ejecución:
- Elimina todos los filtros de texto JournalManager.
UO.ClearJournalIgnore();Parámetros y flujo de ejecución:
- Permita que el texto "Ves" se muestre nuevamente.
return RunScenario();
object? RunScenario()
{
UO.AddJournalIgnore("You see");
UO.ClearJournalIgnore();
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.ClearJournalIgnore();
UO.ClearJournalIgnore();
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.ClearJournalIgnore:bridge.ClearJournalIgnore().
Código interno de implementación; no es un script independiente.
case "clearjournalignore": bridge.ClearJournalIgnore(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearSystemJournal();Elimina líneas con el nombre del autor System.
No hay parámetros.
void: sin valor de retorno. No devuelve el número de filas eliminadas. Se restablecen el contador de visitas y la selección de script actual.
- El búfer compartido está disponible para todos los scripts: las líneas eliminadas ya no están presentes. Las instantáneas previamente guardadas por otros scripts pueden permanecer, pero su índice pasará a ser -1.
- El sistema se reconoce por el nombre del autor, sin distinguir entre mayúsculas y minúsculas; This is the ClassicUO general journal filter.
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.ClearSystemJournal");
UO.ClearSystemJournal();Parámetros y flujo de ejecución:
- No hay argumentos. Sólo se eliminan las líneas del sistema.
- El último contador de búsqueda pasa a ser 0; Print puede agregar una nueva fila después de borrarla.
UO.ClearSystemJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));Parámetros y flujo de ejecución:
- La eliminación se produce antes de que se guarde la marca de tiempo. 1000: espera limitada en milisegundos.
- Una marca de tiempo suele ser suficiente para excluir mensajes antiguos; La limpieza también afecta a otros scripts.
return RunScenario();
object? RunScenario()
{
UO.ClearSystemJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}Parámetros y flujo de ejecución:
- Después de limpiar el script actual index=-1, incluso si solo se eliminó parte del búfer.
- La variable de texto almacena la copia leída anteriormente y GetFoundedText ya se ha borrado.
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 text = UO.Journal(0);
UO.ClearSystemJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
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.DeleteSystemJournal:bridge.DeleteSystemJournal(). -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(null).
Código interno de implementación; no es un script independiente.
case "clearsystemjournal": bridge.DeleteSystemJournal(); SelectJournalEntry(null); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.DeleteJournal();
void UO.DeleteJournal(object? text);Elimina líneas del registro local compartido.
-
text: la subcadena buscada o varias alternativas mediante |, por ejemplo, éxito|falló. Se eliminan los espacios en los bordes de cada alternativa y se omiten las alternativas vacías. Este es texto plano, no una expresión regular. Utilice una plantilla que no esté vacía. Opcional solo para DeleteJournal: al transmitir, las cadenas coincidentes se eliminan sin distinguir entre mayúsculas y minúsculas; sin un argumento, se elimina todo el búfer.
void: sin valor de retorno. No devuelve el número de filas eliminadas. Se restablecen el contador de visitas y la selección de script actual.
- El búfer compartido está disponible para todos los scripts: las líneas eliminadas ya no están presentes. Las instantáneas previamente guardadas por otros scripts pueden permanecer, pero su índice pasará a ser -1.
- Sin un filtro de texto, se borra todo el búfer Classic UO, incluido System. El archivo de registro local y los mensajes del servidor no se eliminan.
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.DeleteJournal");
UO.DeleteJournal();Parámetros y flujo de ejecución:
- No hay argumentos. Se eliminan todas las líneas del búfer compartido.
- El último contador de búsqueda pasa a ser 0; Print puede agregar una nueva fila después de borrarla.
UO.DeleteJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));Parámetros y flujo de ejecución:
- La eliminación se produce antes de que se guarde la marca de tiempo. 1000: espera limitada en milisegundos.
- Una marca de tiempo suele ser suficiente para excluir mensajes antiguos; La limpieza también afecta a otros scripts.
return RunScenario();
object? RunScenario()
{
UO.DeleteJournal();
var started = Now();
var found = UO.WaitJournalLine(started, "notice", 1000);
UO.Print(Convert.ToString(found));
return null;
}Parámetros y flujo de ejecución:
- Después de limpiar el script actual index=-1, incluso si solo se eliminó parte del búfer.
- La variable de texto almacena la copia leída anteriormente y GetFoundedText ya se ha borrado.
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 text = UO.Journal(0);
UO.DeleteJournal();
var index = UO.LineIndex();
UO.Print(Convert.ToString(index));
return null;
}
}Parámetros y flujo de ejecución:
- El texto contiene dos subcadenas. Las líneas de cualquiera de ellos se eliminan sin tener en cuenta mayúsculas y minúsculas; los mensajes restantes permanecen.
- found=0 si no hay nuevos mensajes coincidentes después de la eliminación. El patrón vacío en esta implementación coincide con todas las cadenas.
UO.DeleteJournal("notice|warning");
var found = UO.InJournal("notice|warning", -1);
UO.Print(Convert.ToString(found));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.DeleteJournal. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.DeleteJournal:bridge.DeleteJournal(). -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(null).
Código interno de implementación; no es un script independiente.
public void DeleteJournal()
{
bridge.DeleteJournal();
SelectJournalEntry(null);
}Parámetros: text (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.DeleteJournal. -
InjectionScript.Runtime.InjectionApiUO.DeleteJournal:DeleteJournal((string)text).
Código interno de implementación; no es un script independiente.
public void DeleteJournal(InjectionValue text) => DeleteJournal((string)text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.FoundedParamId();Devuelve el número de la alternativa del patrón de búsqueda coincidente.
No hay parámetros.
int es el índice desde 0 en la lista de alternativas no vacías hasta |: éxito|fallido da 0 para éxito y 1 para error. Si hay varias alternativas adecuadas, se toma la primera de la plantilla. Sin partido o tras un directo Journal también 0. Este no es el serial del autor, ni el número de línea, ni el type del mensaje.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Primero verifique el resultado de la búsqueda > 0. El valor de 0 no confirma por sí solo el éxito. Los espacios de borde y las alternativas vacías se eliminan antes de la numeración.
- https://forum.yoko.com.ua/viewtopic.php?p=27633; . En esta adaptación, ID significa alternativa, los campos de autor y tipo están disponibles por separado a través de LineID/LineMsgType.
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.FoundedParamId();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- el éxito es una alternativa a 0, el fracaso es una alternativa a 1. El éxito de la búsqueda se comprueba por separado.
- Esto es un análisis de texto, no una confirmación de la operación del juego por parte del servidor.
if (Truth(UO.InJournal("success|failed") > 0))
{
var outcome = UO.FoundedParamId();
if (Truth(outcome == 0))
{
UO.Print("Success text");
}
else
{
UO.Print("Failure text");
}
}
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 desactiva el registro. Los resultados 0, 1, 2 corresponden al orden de las alternativas.
- Si la cadena contiene varias opciones, se devuelve el primer patrón coincidente en orden.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
{
var kind = UO.FoundedParamId();
UO.Print("Alternative: " + Convert.ToString(kind));
}
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:
- Journal(0) cambia la elección y restablece las alternativas ID, por lo que el resultado se almacena de antemano.
- La nueva llamada del captador después de Journal ya no describe el patrón anterior.
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.InJournal("success|failed") > 0))
{
var outcome = UO.FoundedParamId();
var latest = UO.Journal(0);
UO.Print("Saved outcome: " + Convert.ToString(outcome));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "foundedparamid":
return new InjectionValue(foundedTextId >= 0 ? foundedTextId : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedText();Devuelve el texto de la entrada de registro seleccionada.
No hay parámetros.
string — texto de la entrada seleccionada; Línea vacía sin selección. Se acepta texto en blanco para una entrada existente.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
- Directorio primario: https://forum.yoko.com.ua/viewtopic.php?p=27633.
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.GetFoundedText();
UO.Print("GetFoundedText: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- string — texto de la entrada seleccionada; Línea vacía sin selección. Se acepta texto en blanco para una entrada existente.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedText();
UO.Print("Text: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedText();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedText();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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: string / String.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public string GetFoundedText() => selectedJournalEntry?.Text ?? string.Empty;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedTextColor();Devuelve el color de la entrada de registro seleccionada.
No hay parámetros.
string - UO hue en formato 0x0044 (4 dígitos hexadecimales). No hay elección - 0x0000; hue=0 también es aceptable para un mensaje. Este no es RGB.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
- Directorio primario: https://forum.yoko.com.ua/viewtopic.php?p=27633.
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.GetFoundedTextColor();
UO.Print("GetFoundedTextColor: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- string - UO hue en formato 0x0044 (4 dígitos hexadecimales). No hay elección - 0x0000; hue=0 también es aceptable para un mensaje. Este no es RGB.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextColor();
UO.Print("Hue: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextColor();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextColor();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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: string / String.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public string GetFoundedTextColor() => selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000";Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextID();Devuelve el número de la alternativa del patrón de búsqueda coincidente.
No hay parámetros.
int es el índice desde 0 en la lista de alternativas no vacías hasta |: éxito|fallido da 0 para éxito y 1 para error. Si hay varias alternativas adecuadas, se toma la primera de la plantilla. Sin partido o tras un directo Journal también 0. Este no es el serial del autor, ni el número de línea, ni el type del mensaje.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Primero verifique el resultado de la búsqueda > 0. El valor de 0 no confirma por sí solo el éxito. Los espacios de borde y las alternativas vacías se eliminan antes de la numeración.
- https://forum.yoko.com.ua/viewtopic.php?p=27633; . En esta adaptación, ID significa alternativa, los campos de autor y tipo están disponibles por separado a través de LineID/LineMsgType.
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.GetFoundedTextID();
UO.Print("GetFoundedTextID: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- el éxito es una alternativa a 0, el fracaso es una alternativa a 1. El éxito de la búsqueda se comprueba por separado.
- Esto es un análisis de texto, no una confirmación de la operación del juego por parte del servidor.
if (Truth(UO.InJournal("success|failed") > 0))
{
var outcome = UO.GetFoundedTextID();
if (Truth(outcome == 0))
{
UO.Print("Success text");
}
else
{
UO.Print("Failure text");
}
}
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 desactiva el registro. Los resultados 0, 1, 2 corresponden al orden de las alternativas.
- Si la cadena contiene varias opciones, se devuelve el primer patrón coincidente en orden.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
{
var kind = UO.GetFoundedTextID();
UO.Print("Alternative: " + Convert.ToString(kind));
}
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:
- Journal(0) cambia la elección y restablece las alternativas ID, por lo que el resultado se almacena de antemano.
- La nueva llamada del captador después de Journal ya no describe el patrón anterior.
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.InJournal("success|failed") > 0))
{
var outcome = UO.GetFoundedTextID();
var latest = UO.Journal(0);
UO.Print("Saved outcome: " + Convert.ToString(outcome));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int GetFoundedTextID() => foundedTextId >= 0 ? foundedTextId : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextIndex();Devuelve el índice actual de la entrada seleccionada, si todavía está almacenado en el registro.
No hay parámetros.
int es el índice actual de 0 (fila más nueva). -1 significa que no hay opción o que la entrada seleccionada ya ha sido eliminada/anulada. Este no es el resultado de InJournal: no es necesario restar 1 del índice.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- El índice se vuelve a calcular en función de la identidad del registro. Los nuevos mensajes lo aumentan. El antiguo índice almacenado no es constante ID; para texto, GetFoundedText es más seguro.
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.GetFoundedTextIndex();
UO.Print("GetFoundedTextIndex: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Getter sin argumentos lee la selección del script actual. 0 — nueva línea, -1 — ninguna línea en el búfer actual.
- El texto se toma de la entrada guardada para que los mensajes nuevos no lo reemplacen.
if (Truth(UO.InJournal("notice") > 0))
{
var index = UO.GetFoundedTextIndex();
var text = UO.GetFoundedText();
UO.Print(Convert.ToString(index) + ": " + text);
}
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:
- Journal(0) selecciona la última entrada; la verificación excluye un registro vacío.
- Se permite texto vacío para una entrada válida.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
if (Truth(UO.GetFoundedTextIndex() >= 0))
{
UO.Print(text);
}
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:
- Esperar 100 ms permite que lleguen nuevos mensajes. después encuentra la misma entrada nuevamente.
- después puede aumentar o convertirse en -1 cuando se elimina; GetFoundedText todavía contiene el texto guardado.
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.InJournal("needle") > 0))
{
var before = UO.GetFoundedTextIndex();
UO.Wait(100);
var after = UO.GetFoundedTextIndex();
UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int GetFoundedTextIndex() => selectedJournalEntry != null && bridge is IApiJournalReader reader
? reader.FindJournalEntryIndex(selectedJournalEntry.Identity) : foundedTextIndex;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetFoundedTextSerial();Devuelve serial el autor de la entrada de diario seleccionada.
No hay parámetros.
string - serial del autor en formato 0x00001234 (8 dígitos hexadecimales). No hay elección - 0x00000000. Este no es un type de materia ni un índice de revista.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
- Directorio primario: https://forum.yoko.com.ua/viewtopic.php?p=27633.
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.GetFoundedTextSerial();
UO.Print("GetFoundedTextSerial: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- string - serial del autor en formato 0x00001234 (8 dígitos hexadecimales). No hay elección - 0x00000000. Este no es un type de materia ni un índice de revista.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextSerial();
UO.Print("Speaker serial: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextSerial();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextSerial();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
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: string / String.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public string GetFoundedTextSerial() => selectedJournalEntry != null
? $"0x{unchecked((uint)selectedJournalEntry.Serial):X8}" : "0x00000000";Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetFoundedTextTimer();Devuelve la marca de tiempo de milisegundos de la entrada de registro seleccionada.
No hay parámetros.
int: momento de grabación en milisegundos desde el inicio del tiempo de ejecución, compatible con Now(). Las entradas antes del inicio dan 0. Sin elección también 0; una marca de calendario incorrecta da -1. No es tiempo pasado ni décimas de segundo UO.Timer().
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
- Directorio primario: https://forum.yoko.com.ua/viewtopic.php?p=27633.
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.GetFoundedTextTimer();
UO.Print("GetFoundedTextTimer: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int: momento de grabación en milisegundos desde el inicio del tiempo de ejecución, compatible con Now(). Las entradas antes del inicio dan 0. Sin elección también 0; una marca de calendario incorrecta da -1. No es tiempo pasado ni décimas de segundo UO.Timer().
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.GetFoundedTextTimer();
UO.Print("Timestamp ms: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.GetFoundedTextTimer();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.GetFoundedTextTimer();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GetFoundedTextTimer. -
InjectionScript.Runtime.InjectionApiUO.JournalEntryTime:JournalEntryTime(selectedJournalEntry.Timestamp).
Código interno de implementación; no es un script independiente.
public int GetFoundedTextTimer() => selectedJournalEntry != null ? JournalEntryTime(selectedJournalEntry.Timestamp) : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournal(object? index);Lee el texto de una línea en el índice actual y selecciona esa entrada para GetFoundedText/Línea*.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string — texto de la línea, o una línea vacía si el índice es incorrecto/la revista está vacía. Una fila existente también puede tener texto vacío: después de leer, LineIndex >= 0 confirma que la entrada ha sido seleccionada. No es el número de líneas.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- La lectura directa restablece las alternativas ID; GetFoundedTextID/FoundedParamId va seguido de 0. Journal por sí solo no vuelve a calcular LineCount.
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
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.GetJournal(0);
UO.Print("GetJournal: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es la línea más nueva. Primero se lee el texto y el autor, luego se muestra el resultado.
- Print puede agregar un mensaje; el texto/autor guardado se refiere a la entrada previamente seleccionada.
var text = UO.GetJournal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);Parámetros y flujo de ejecución:
- 1 es la entrada anterior, HighJournal es el índice máximo disponible.
- El registro puede cambiar entre llamadas. Para datos de una fila ya encontrada, use GetFoundedText.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var text = UO.GetJournal(1);
UO.Print(text);
}
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:
- LineIndex=-1 significa que la entrada seleccionada falta o está eliminada. Len(text)=0 por sí solo no significa esto.
- Guarde el resultado de la prueba hasta que se agregue el resultado del diagnóstico al registro.
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 text = UO.GetJournal(0);
var index = UO.LineIndex();
if (Truth(index < 0))
{
UO.Print("No record");
}
else
{
UO.Print("Text length: " + Convert.ToString(Len(text)));
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: index (Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GetJournalText. -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(ReadJournalSnapshot(index)). -
InjectionScript.Runtime.InjectionApiUO.ReadJournalSnapshot:ReadJournalSnapshot(index).
Código interno de implementación; no es un script independiente.
public string GetJournalText(int index)
{
SelectJournalEntry(ReadJournalSnapshot(index));
return selectedJournalEntry?.Text ?? string.Empty;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournalColor(object? index);Lee el campo hue de una cadena en el índice actual, sin cambiar la entrada seleccionada.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.
- Cada llamada lee la posición actual. Para texto coincidente y campos del mismo registro, primero Journal(índice), luego GetFoundedText/Línea*. Los valores nulos pueden ser datos reales.
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.GetJournalColor(0);
UO.Print("GetJournalColor: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la nueva línea. Se comprueba la presencia de un buffer.
- string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.GetJournalColor(0);
UO.Print(Convert.ToString(value));
}
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 es la línea anterior, no serial=1.
- La entrada GetFoundedText/Línea* seleccionada por la búsqueda no se modifica.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.GetJournalColor(1);
UO.Print(Convert.ToString(value));
}
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:
- value copia el campo en el momento de la llamada. Esperar no actualiza la variable.
- Para leer la línea actual 0 nuevamente, llame al comando nuevamente; Es posible que esta ya sea otra entrada.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.GetJournalColor(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
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: index (Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.JournalColor. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalColor:bridge.JournalColor(index).
Código interno de implementación; no es un script independiente.
public string JournalColor(int index) => bridge.JournalColor(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetJournalSerial(object? index);Lee el campo serial de una cadena en el índice actual, sin cambiar la entrada seleccionada.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.
- Cada llamada lee la posición actual. Para texto coincidente y campos del mismo registro, primero Journal(índice), luego GetFoundedText/Línea*. Los valores nulos pueden ser datos reales.
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.GetJournalSerial(0);
UO.Print("GetJournalSerial: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la nueva línea. Se comprueba la presencia de un buffer.
- string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.GetJournalSerial(0);
UO.Print(Convert.ToString(value));
}
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 es la línea anterior, no serial=1.
- La entrada GetFoundedText/Línea* seleccionada por la búsqueda no se modifica.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.GetJournalSerial(1);
UO.Print(Convert.ToString(value));
}
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:
- value copia el campo en el momento de la llamada. Esperar no actualiza la variable.
- Para leer la línea actual 0 nuevamente, llame al comando nuevamente; Es posible que esta ya sea otra entrada.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.GetJournalSerial(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
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: index (Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.JournalSerial. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalSerial:bridge.JournalSerial(index).
Código interno de implementación; no es un script independiente.
public string JournalSerial(int index) => bridge.JournalSerial(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.HighJournal();Devuelve el índice de registro máximo disponible.
No hay parámetros.
int: -1 cuando el cargador está vacío; de lo contrario, el número de registros almacenados menos 1 es el índice del registro más antiguo disponible. Journal/GetJournal usa índices cero desde el registro nuevo hasta el antiguo; un resultado positivo InJournal utiliza un conteo único diferente.
- Los nuevos mensajes y la limpieza cambian los límites. El orden aquí es Journal(0) del registro nuevo al antiguo.
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.HighJournal();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Un límite negativo significa un búfer vacío.
- Si el búfer no está vacío, Journal(0) lee una nueva entrada.
if (Truth(UO.HighJournal() >= 0))
{
var text = UO.Journal(0);
UO.Print(text);
}
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:
- HighJournal=-1 cuando el registro está vacío, entonces total=0. LowJournal describe el límite inferior, no el número de líneas.
- Este es el número total de filas almacenadas localmente; LineCount se refiere a la última búsqueda.
return RunScenario();
object? RunScenario()
{
var total = UO.HighJournal() + 1;
UO.Print("Rows: " + Convert.ToString(total));
return null;
}Parámetros y flujo de ejecución:
- El índice se pasa directamente a Journal, sin restar uno.
- El índice puede cambiar con los mensajes entrantes; El búfer no se congela entre llamadas.
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 index = UO.HighJournal();
if (Truth(index >= 0))
{
var text = UO.Journal(index);
UO.Print(text);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalEntryCount:bridge.JournalEntryCount().
Código interno de implementación; no es un script independiente.
case "highjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : bridge.JournalEntryCount() - 1);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.InJournal(object? pattern);
int UO.InJournal(object? pattern, object? maxLinesOrIgnoreCase);
int UO.InJournal(object? pattern, object? serial, object? color);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly, object? caseSensitive);Busca un mensaje en el registro local y guarda el registro encontrado con sus campos.
-
pattern: la subcadena buscada o varias alternativas mediante |, por ejemplo, éxito|falló. Se eliminan los espacios en los bordes de cada alternativa y se omiten las alternativas vacías. Este es texto plano, no una expresión regular. Utilice una plantilla que no esté vacía. -
maxLinesOrIgnoreCase: solo la forma de dos argumentos: -1: todo el registro disponible, sin distinguir entre mayúsculas y minúsculas; 0 - no marque ninguna línea; número positivo: no marque más de este número de últimas líneas, distingue entre mayúsculas y minúsculas. Otros valores negativos se limitan a 0. -
serial: el tercer argumento y los siguientes incluyen la forma extendida. El segundo argumento de este formulario es el numérico serial del autor del mensaje, no graphic/type. -1 desactiva el filtro; 0 selecciona serial=0. Una cadena hexadecimal que contiene un número también se convierte en un número; El nombre de alias del objeto no está permitido aquí. -
color— El tercer argumento de la forma extendida es numérico UO hue; -1 o 0xFFFF desactiva el filtro. 0 selecciona hue=0. Esto no es RGB. -
startTime— Etiqueta de inicio opcional Now(), int en milisegundos. Dado un endTime positivo, el valor startTime=0 significa el inicio de la ejecución. Si ambas notas faltan o no son positivas, no hay filtro de tiempo. -
endTime— Etiqueta final opcional Now(), int en milisegundos. Ausente o 0 - hora actual. El orden de los límites positivos no es significativo. La etiqueta futura se limita al tiempo actual. -
newestOnly: opcional bool, predeterminado false. true deja de buscar después del primer partido; LineCount luego 0 o 1. false cuenta todas las líneas coincidentes y aún elige la más nueva. -
caseSensitive- Opcional bool forma extendida, predeterminado false. true distingue entre mayúsculas y minúsculas. Por otro lado, un formulario de solo patrón siempre distingue entre mayúsculas y minúsculas.
int: 0 – no hay línea adecuada; un número positivo es la posición de la entrada coincidente más reciente, contando desde el final de todo el registro, comenzando con 1. Este no es el número de coincidencias ni el número alternativo del patrón. Para el índice cero use LineIndex/GetFoundedTextIndex, para el número de coincidencias use LineCount, para el número alternativo use GetFoundedTextID. Los mensajes nuevos posteriores pueden cambiar el índice, pero los campos guardados del registro seleccionado permanecen disponibles.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- La búsqueda no espera texto nuevo. El patrón vacío en el InJournal actual coincide con cualquier cadena, pero no le da a ID una alternativa; para comprobar si hay cadenas, utilice HighJournal/LowJournal.
- La forma de dos argumentos especifica el límite/caso, no serial. Para serial es obligatorio pasar también el color. Un único argumento SetJournalLine puede limitar el área de búsqueda.
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
Now() proporciona el host de la ejecución actual: este es un número entero de milisegundos del mismo reloj nativo que utiliza el registro. No lo reemplaces con Environment.TickCount, hora Unix o tu propio Cronómetro: el origen será diferente. En un programa .cs/.csproj normal, llame a context.Now() en el CSharpScriptGlobals pasado.
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.InJournal("You see");
UO.Print("InJournal: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- patrón=Lo que ves es una subcadena, las mayúsculas y minúsculas son importantes. encontrado=0 significa ausente.
- El texto se copia de la entrada encontrada; la llegada de un nuevo mensaje no lo reemplaza.
var found = UO.InJournal("You see");
if (Truth(found > 0))
{
var text = UO.GetFoundedText();
UO.Print(text);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;2. Las selecciones múltiples no distinguen entre mayúsculas y minúsculas: función de secuencia de comandos
Parámetros y flujo de ejecución:
- El segundo argumento -1 elimina el límite de líneas y desactiva la distinción entre mayúsculas y minúsculas.
- resultado=0 para éxito, 1 para fracaso; este es el número de la alternativa, no el ID del hablante.
return RunScenario();
object? RunScenario()
{
var found = UO.InJournal("success|failed", -1);
if (Truth(found > 0))
{
var outcome = UO.GetFoundedTextID();
UO.Print("Alternative: " + Convert.ToString(outcome));
}
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:
- 20: número máximo de líneas a verificar, las mayúsculas y minúsculas son importantes. coincidencias: el número de líneas coincidentes en el área marcada.
- encontrado contiene la posición más 1, no coincide. La escritura de texto de diagnóstico también se puede agregar al registro.
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 found = UO.InJournal("bank", 20);
var matches = UO.LineCount();
UO.Print("Matches: " + Convert.ToString(matches));
return null;
}
}Parámetros y flujo de ejecución:
- serial=0x00001234 - ejemplo del autor, color=0x0044 - hue. Reemplace con valores reales. iniciado/endTime - marcas de milisegundos.
- true detiene la búsqueda en la primera línea; false no distingue entre mayúsculas y minúsculas. Esperando 350 ms por separado, InJournal no espera solo.
var started = Now();
UO.Wait(350);
var found = UO.InJournal("hello", 0x00001234, 0x0044, started, Now(), true, false);
if (Truth(found > 0))
{
UO.Print(UO.GetFoundedText());
}
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:
- serial=-1 y color=-1 desactivan ambos filtros. Dos marcadores limitan el tiempo.
- newestOnly y caseSensitive se omiten: false y false. Sin coincidencia, se devuelve 0.
return RunScenario();
object? RunScenario()
{
var started = Now();
UO.Wait(100);
var found = UO.InJournal("notice", -1, -1, started, Now());
if (Truth(found == 0))
{
UO.Print("No matching message");
}
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: pattern (Any/String)
Resultado: int / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournal:InJournal(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "injournal": return new InjectionValue(InJournal(Text(0)));Parámetros: pattern (Any/String)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.InJournal. -
InjectionScript.Runtime.InjectionApiUO.InJournalCore:InJournalCore(pattern, -1, ignoreCase: false).
Código interno de implementación; no es un script independiente.
public int InJournal(string pattern)
=> InJournalCore(pattern, -1, ignoreCase: false);Parámetros: pattern (String), maxLinesOrIgnoreCase (Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.InJournal. -
InjectionScript.Runtime.InjectionApiUO.InJournalCore:InJournalCore(pattern, maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase), ignoreCase: maxLinesOrIgnoreCase == -1).
Código interno de implementación; no es un script independiente.
public int InJournal(string pattern, int maxLinesOrIgnoreCase)
=> InJournalCore(pattern,
maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase),
ignoreCase: maxLinesOrIgnoreCase == -1);Parámetros: pattern (Any), serial (Any), color (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(CompactInJournal(values))Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(CompactInJournal(values))Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(CompactInJournal(values))
UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly) — UO.InJournal(Any,Any,Any,Any,Any,Any)
Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(CompactInJournal(values))
UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly, caseSensitive) — UO.InJournal(Any,Any,Any,Any,Any,Any,Any)
Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any), caseSensitive (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Register [InJournal]. -
InjectionScript.Runtime.InjectionApiUO.CompactInJournal:CompactInJournal(values).
La llamada ejecuta el delegate del controlador guardado. El método de registro crea ese delegate al construir la API.
Código interno de implementación; no es un script independiente.
values => new InjectionValue(CompactInJournal(values))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.InJournalBetweenTimes(object? pattern, object? startTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime, object? limit);Busca una cadena entre dos marcas de tiempo de ejecución y almacena la entrada coincidente más reciente.
-
pattern: la subcadena buscada o varias alternativas mediante |, por ejemplo, éxito|falló. Se eliminan los espacios en los bordes de cada alternativa y se omiten las alternativas vacías. Este es texto plano, no una expresión regular. Utilice una plantilla que no esté vacía. -
startTime— Etiqueta obligatoria Now(): int milisegundos desde el inicio del tiempo de ejecución. 0 - inicio de ejecución. Esta no es la antigüedad del registro ni la fecha fraccionaria LineTime. -
endTime— Etiqueta final opcional Now(). Si se omite o no es positivo, se utiliza la hora actual. Los límites positivos se pueden transmitir en orden inverso; el límite futuro se limita al tiempo actual. -
limit- Cuarto argumento opcional: -1 - sin límite y sin distinción entre mayúsculas y minúsculas; número positivo: líneas máximas en el intervalo, distingue entre mayúsculas y minúsculas; 0 y valores negativos excepto -1: no verifique las cadenas.
int: 0 – no hay línea adecuada; un número positivo es la posición de la entrada coincidente más reciente, contando desde el final de todo el registro, comenzando con 1. Este no es el número de coincidencias ni el número alternativo del patrón. Para el índice cero use LineIndex/GetFoundedTextIndex, para el número de coincidencias use LineCount, para el número alternativo use GetFoundedTextID. Los mensajes nuevos posteriores pueden cambiar el índice, pero los campos guardados del registro seleccionado permanecen disponibles.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- En formularios con dos o tres argumentos, se distingue entre mayúsculas y minúsculas. Se incluyen las fronteras. Calcular el intervalo no detiene el guión.
- Aquí, pase etiquetas completas a Now(). LineTime devuelve otra unidad. Directorio principal: .
Now() proporciona el host de la ejecución actual: este es un número entero de milisegundos del mismo reloj nativo que utiliza el registro. No lo reemplaces con Environment.TickCount, hora Unix o tu propio Cronómetro: el origen será diferente. En un programa .cs/.csproj normal, llame a context.Now() en el CSharpScriptGlobals pasado.
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.InJournalBetweenTimes("You see", 0, Now());
UO.Print("InJournalBetweenTimes: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- iniciado se guarda hasta UseSkill. endTime omitido - hasta la hora actual; oculto es un ejemplo de texto del lado del servidor.
- Se tiene en cuenta el caso. El mensaje no prueba el estado actual; UO.Hidden() lee el estado del personaje.
var started = Now();
UO.UseSkill("Hiding");
UO.Wait(500);
if (Truth(UO.InJournalBetweenTimes("hidden", started) > 0))
{
UO.Print(UO.GetFoundedText());
}
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:
- startTime=0 — inicio de ejecución; finalizado: etiqueta final guardada en milisegundos.
- Los mensajes nuevos una vez finalizados no se incluyen. Los registros antiguos anteriores al tiempo de ejecución también están fuera del intervalo.
return RunScenario();
object? RunScenario()
{
var ended = Now();
var found = UO.InJournalBetweenTimes("notice", 0, ended);
UO.Print("Search result: " + Convert.ToString(found));
return null;
}3. Alternativas que no distinguen entre mayúsculas y minúsculas e intervalos: clase de secuencia de comandos
Parámetros y flujo de ejecución:
- El último -1 elimina el límite de líneas y desactiva mayúsculas y minúsculas. El tercer argumento es la etiqueta final, no el retraso.
- Resultado ID: 0 para éxito, 1 para error. Es necesario marcar encontrado > 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()
{
var started = Now();
UO.Wait(350);
var found = UO.InJournalBetweenTimes("success|failed", started, Now(), -1);
if (Truth(found > 0))
{
UO.Print(Convert.ToString(UO.GetFoundedTextID()));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}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: pattern (Any/String), startTime (Any/Integer)
Resultado: int / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
Código interno de implementación; no es un script independiente.
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));Parámetros: pattern (Any/String), startTime (Any/Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false). -
InjectionScript.Runtime.InjectionApiUO.CurrentJournalTime:CurrentJournalTime().
Código interno de implementación; no es un script independiente.
public int InJournalBetweenTimes(string pattern, int startTime)
=> InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false);Parámetros: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)
Resultado: int / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
Código interno de implementación; no es un script independiente.
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));
UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(String,Integer,Integer)
Parámetros: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false).
Código interno de implementación; no es un script independiente.
public int InJournalBetweenTimes(string pattern, int startTime, int endTime)
=> InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false);
UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(Any,Any,Any,Any)
Parámetros: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)
Resultado: int / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(1). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes:InJournalBetweenTimes(Text(0), Arg(1)).
Código interno de implementación; no es un script independiente.
case "injournalbetweentimes":
if (arguments.Length > 3)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));
if (arguments.Length > 2)
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));
return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));
UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(String,Integer,Integer,Integer)
Parámetros: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimes. -
InjectionScript.Runtime.InjectionApiUO.InJournalBetweenTimesCore:InJournalBetweenTimesCore(pattern, startTime, endTime, limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1).
Código interno de implementación; no es un script independiente.
public int InJournalBetweenTimes(string pattern, int startTime, int endTime, int limit)
=> InJournalBetweenTimesCore(pattern, startTime, endTime,
limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Journal(object? index);Lee el texto de una línea en el índice actual y selecciona esa entrada para GetFoundedText/Línea*.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string — texto de la línea, o una línea vacía si el índice es incorrecto/la revista está vacía. Una fila existente también puede tener texto vacío: después de leer, LineIndex >= 0 confirma que la entrada ha sido seleccionada. No es el número de líneas.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- La lectura directa restablece las alternativas ID; GetFoundedTextID/FoundedParamId va seguido de 0. Journal por sí solo no vuelve a calcular LineCount.
- https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .
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.Journal(0);
UO.Print("Journal: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es la línea más nueva. Primero se lee el texto y el autor, luego se muestra el resultado.
- Print puede agregar un mensaje; el texto/autor guardado se refiere a la entrada previamente seleccionada.
var text = UO.Journal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);Parámetros y flujo de ejecución:
- 1 es la entrada anterior, HighJournal es el índice máximo disponible.
- El registro puede cambiar entre llamadas. Para datos de una fila ya encontrada, use GetFoundedText.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var text = UO.Journal(1);
UO.Print(text);
}
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:
- LineIndex=-1 significa que la entrada seleccionada falta o está eliminada. Len(text)=0 por sí solo no significa esto.
- Guarde el resultado de la prueba hasta que se agregue el resultado del diagnóstico al registro.
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 text = UO.Journal(0);
var index = UO.LineIndex();
if (Truth(index < 0))
{
UO.Print("No record");
}
else
{
UO.Print("Text length: " + Convert.ToString(Len(text)));
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: index (Any/Integer)
Resultado: string / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetJournalText:GetJournalText(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "journal": return new InjectionValue(GetJournalText(Arg(0)));Parámetros: index (Any/Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GetJournalText. -
InjectionScript.Runtime.InjectionApiUO.SelectJournalEntry:SelectJournalEntry(ReadJournalSnapshot(index)). -
InjectionScript.Runtime.InjectionApiUO.ReadJournalSnapshot:ReadJournalSnapshot(index).
Código interno de implementación; no es un script independiente.
public string GetJournalText(int index)
{
SelectJournalEntry(ReadJournalSnapshot(index));
return selectedJournalEntry?.Text ?? string.Empty;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.JournalColor(object? index);Lee el campo hue de una cadena en el índice actual, sin cambiar la entrada seleccionada.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.
- Cada llamada lee la posición actual. Para texto coincidente y campos del mismo registro, primero Journal(índice), luego GetFoundedText/Línea*. Los valores nulos pueden ser datos reales.
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.JournalColor(0);
UO.Print("JournalColor: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la nueva línea. Se comprueba la presencia de un buffer.
- string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalColor(0);
UO.Print(Convert.ToString(value));
}
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 es la línea anterior, no serial=1.
- La entrada GetFoundedText/Línea* seleccionada por la búsqueda no se modifica.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalColor(1);
UO.Print(Convert.ToString(value));
}
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:
- value copia el campo en el momento de la llamada. Esperar no actualiza la variable.
- Para leer la línea actual 0 nuevamente, llame al comando nuevamente; Es posible que esta ya sea otra entrada.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.JournalColor(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
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: index (Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.JournalColor. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalColor:bridge.JournalColor(index).
Código interno de implementación; no es un script independiente.
public string JournalColor(int index) => bridge.JournalColor(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.JournalSerial(object? index);Lee el campo serial de una cadena en el índice actual, sin cambiar la entrada seleccionada.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.
- Cada llamada lee la posición actual. Para texto coincidente y campos del mismo registro, primero Journal(índice), luego GetFoundedText/Línea*. Los valores nulos pueden ser datos reales.
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.JournalSerial(0);
UO.Print("JournalSerial: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la nueva línea. Se comprueba la presencia de un buffer.
- string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalSerial(0);
UO.Print(Convert.ToString(value));
}
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 es la línea anterior, no serial=1.
- La entrada GetFoundedText/Línea* seleccionada por la búsqueda no se modifica.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalSerial(1);
UO.Print(Convert.ToString(value));
}
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:
- value copia el campo en el momento de la llamada. Esperar no actualiza la variable.
- Para leer la línea actual 0 nuevamente, llame al comando nuevamente; Es posible que esta ya sea otra entrada.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.JournalSerial(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
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: index (Integer)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.JournalSerial. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalSerial:bridge.JournalSerial(index).
Código interno de implementación; no es un script independiente.
public string JournalSerial(int index) => bridge.JournalSerial(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.JournalTimer(object? index);Lee el campo de marca de tiempo de una fila en el índice actual sin cambiar la entrada seleccionada.
-
index- Obligatorio int - índice actual: 0 significa la línea más nueva, 1 - la anterior. Los índices se modifican cuando llegan los mensajes. Esto no es un serial, ni una variante ID del patrón, ni un resultado positivo de InJournal.
int: etiqueta de registro en milisegundos desde el inicio del tiempo de ejecución, compatible con Now(). 0 para grabar antes del tiempo de ejecución; -1 para índice/hora no válido. Esta no es la edad del récord ni las décimas de segundo UO.Timer().
- Cada llamada lee la posición actual. Para texto coincidente y campos del mismo registro, primero Journal(índice), luego GetFoundedText/Línea*. Los valores nulos pueden ser datos reales.
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.JournalTimer(0);
UO.Print("JournalTimer: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- 0 es el índice de la nueva línea. Se comprueba la presencia de un buffer.
- int: etiqueta de registro en milisegundos desde el inicio del tiempo de ejecución, compatible con Now(). 0 para grabar antes del tiempo de ejecución; -1 para índice/hora no válido. Esta no es la edad del récord ni las décimas de segundo UO.Timer().
if (Truth(UO.HighJournal() >= 0))
{
var value = UO.JournalTimer(0);
UO.Print(Convert.ToString(value));
}
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 es la línea anterior, no serial=1.
- La entrada GetFoundedText/Línea* seleccionada por la búsqueda no se modifica.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.HighJournal() >= 1))
{
var value = UO.JournalTimer(1);
UO.Print(Convert.ToString(value));
}
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:
- value copia el campo en el momento de la llamada. Esperar no actualiza la variable.
- Para leer la línea actual 0 nuevamente, llame al comando nuevamente; Es posible que esta ya sea otra entrada.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var value = UO.JournalTimer(0);
UO.Wait(100);
UO.Print("Saved value: " + Convert.ToString(value));
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: index (Integer)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.JournalTimer. -
InjectionScript.Runtime.InjectionApiUO.JournalEntryTime:JournalEntryTime(index).
Código interno de implementación; no es un script independiente.
public int JournalTimer(int index) => JournalEntryTime(index);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastJournalMessage();Lee el texto de la entrada del registro local más reciente.
No hay parámetros.
string — texto de la nueva entrada; cadena vacía si no hay ningún registro o la entrada en sí contiene texto vacío.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Actualiza la selección y los campos de Línea* de la misma manera que Journal(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.
object? result = UO.LastJournalMessage();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos; El texto copia la última línea actual.
- La impresión después de la lectura puede convertirse en sí misma en el último mensaje.
var text = UO.LastJournalMessage();
UO.Print(text);Parámetros y flujo de ejecución:
- FindText devuelve la posición de 1 o 0. Sólo se marca la última línea.
- Para buscar en todo el registro, utilice InJournal.
return RunScenario();
object? RunScenario()
{
var text = UO.LastJournalMessage();
if (Truth(FindText(text, "bank") > 0))
{
UO.Print("Text contains bank");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}Parámetros y flujo de ejecución:
- La información coincidente se guarda hasta que se lee la última, por lo que no cambia con una nueva selección.
- El último mensaje puede ser diferente al encontrado; encontrado > 0 significa búsqueda exitosa.
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 found = UO.InJournal("needle");
var matched = UO.GetFoundedText();
var latest = UO.LastJournalMessage();
UO.Print("Found: " + matched);
UO.Print("Latest: " + latest);
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetJournalText:GetJournalText(0).
Código interno de implementación; no es un script independiente.
case "lastjournalmessage": return new InjectionValue(GetJournalText(0));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.LastMessage();Lee el texto de la entrada del registro local más reciente.
No hay parámetros.
string — texto de la nueva entrada; cadena vacía si no hay ningún registro o la entrada en sí contiene texto vacío.
- Este captador lee la nueva entrada pero conserva la selección anterior GetFoundedText/Line*. Para seleccionar la última entrada, utilice LastJournalMessage o Journal(0).
- Directorio primario: https://forum.yoko.com.ua/viewtopic.php?p=27633.
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.LastMessage();
UO.Print("LastMessage: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos; El texto copia la última línea actual.
- La impresión después de la lectura puede convertirse en sí misma en el último mensaje.
var text = UO.LastMessage();
UO.Print(text);Parámetros y flujo de ejecución:
- FindText devuelve la posición de 1 o 0. Sólo se marca la última línea.
- Para buscar en todo el registro, utilice InJournal.
return RunScenario();
object? RunScenario()
{
var text = UO.LastMessage();
if (Truth(FindText(text, "bank") > 0))
{
UO.Print("Text contains bank");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}Parámetros y flujo de ejecución:
- La información coincidente se guarda hasta que se lee la última, por lo que no cambia con una nueva selección.
- El último mensaje puede ser diferente al encontrado; encontrado > 0 significa búsqueda exitosa.
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 found = UO.InJournal("needle");
var matched = UO.GetFoundedText();
var latest = UO.LastMessage();
UO.Print("Found: " + matched);
UO.Print("Latest: " + latest);
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.LastMessage. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastMessage:bridge.LastMessage().
Código interno de implementación; no es un script independiente.
public string LastMessage() => bridge.LastMessage();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineCount();Lee el número de filas coincidentes de la última búsqueda.
No hay parámetros.
int es el número de registros coincidentes en la última área marcada. 0 si no hay coincidencias; para newestOnly=true no más de 1. Este no es el número de líneas en todo el registro, ni el número de apariciones de una subcadena en un mensaje, ni la posición del texto encontrado.
- La búsqueda tiene en cuenta el límite, el tiempo, serial, hue y un argumento SetJournalLine. Directo Journal/GetJournal no vuelve a calcular el contador. La limpieza lo restablece. El contador pertenece al puente del script actual.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El 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.LineCount();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Busca sin límite y regístrate. Se cuentan las líneas, no el número de minerales dentro de la línea.
- resultado — posición más 1; fósforos: una cantidad separada.
var result = UO.InJournal("ore", -1);
var matches = UO.LineCount();
UO.Print(Convert.ToString(matches));Parámetros y flujo de ejecución:
- 10 — número máximo de líneas a comprobar; Se tiene en cuenta el caso.
- El recuento puede oscilar entre 0 y 10, incluso si hay muchas más coincidencias antiguas.
return RunScenario();
object? RunScenario()
{
var result = UO.InJournal("ore", 10);
UO.Print(Convert.ToString(UO.LineCount()));
return null;
}Parámetros y flujo de ejecución:
- serial/color=-1, time=0/0: los filtros están deshabilitados. true detiene la búsqueda en la primera línea coincidente.
- checkedMatches es igual a 0 o 1 y no indica el número total de coincidencias en todo el registro.
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 result = UO.InJournal("ore", -1, -1, 0, 0, true, false);
var checkedMatches = UO.LineCount();
UO.Print(Convert.ToString(checkedMatches));
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalMatchCount:bridge.JournalMatchCount().
Código interno de implementación; no es un script independiente.
case "linecount": return new InjectionValue(bridge.JournalMatchCount());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineID();Devuelve el número serial del autor de la entrada de diario seleccionada.
No hay parámetros.
int - 32-bit serial del autor. No hay elección - 0. El bit más significativo puede resultar en un número negativo debido al signo int; GetFoundedTextSerial conserva la representación hexadecimal completa. Esto no es graphic/type.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineID();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int - 32-bit serial del autor. No hay elección - 0. El bit más significativo puede resultar en un número negativo debido al signo int; GetFoundedTextSerial conserva la representación hexadecimal completa. Esto no es graphic/type.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineID();
UO.Print("Speaker serial: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineID();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineID();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "lineid": return new InjectionValue(selectedJournalEntry?.Serial ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineIndex();Devuelve el índice actual de la entrada seleccionada, si todavía está almacenado en el registro.
No hay parámetros.
int es el índice actual de 0 (fila más nueva). -1 significa que no hay opción o que la entrada seleccionada ya ha sido eliminada/anulada. Este no es el resultado de InJournal: no es necesario restar 1 del índice.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- El índice se vuelve a calcular en función de la identidad del registro. Los nuevos mensajes lo aumentan. El antiguo índice almacenado no es constante ID; para texto, GetFoundedText es más seguro.
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.LineIndex();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Getter sin argumentos lee la selección del script actual. 0 — nueva línea, -1 — ninguna línea en el búfer actual.
- El texto se toma de la entrada guardada para que los mensajes nuevos no lo reemplacen.
if (Truth(UO.InJournal("notice") > 0))
{
var index = UO.LineIndex();
var text = UO.GetFoundedText();
UO.Print(Convert.ToString(index) + ": " + text);
}
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:
- Journal(0) selecciona la última entrada; la verificación excluye un registro vacío.
- Se permite texto vacío para una entrada válida.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
if (Truth(UO.LineIndex() >= 0))
{
UO.Print(text);
}
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:
- Esperar 100 ms permite que lleguen nuevos mensajes. después encuentra la misma entrada nuevamente.
- después puede aumentar o convertirse en -1 cuando se elimina; GetFoundedText todavía contiene el texto guardado.
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.InJournal("needle") > 0))
{
var before = UO.LineIndex();
UO.Wait(100);
var after = UO.LineIndex();
UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.GetFoundedTextIndex:GetFoundedTextIndex().
Código interno de implementación; no es un script independiente.
case "lineindex": return new InjectionValue(GetFoundedTextIndex());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineMsgType();Devuelve el tipo de mensaje de red de la entrada de registro seleccionada.
No hay parámetros.
int - código MessageType: 0 Regular, 1 Sistema, 2 Emote, 3 Limit3Spell, 6 Etiqueta, 7 Enfoque, 8 Susurro, 9 Gritar, 10 Hechizo, 13 Gremio, 14 Alianza, 15 Comando, 16 GmChat, 192 Codificado, 255 Partido. No hay elección 0. Estos son los códigos Clásicos UO; no los reemplace con números diferentes de ejemplos de terceros.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineMsgType();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int - código MessageType: 0 Regular, 1 Sistema, 2 Emote, 3 Limit3Spell, 6 Etiqueta, 7 Enfoque, 8 Susurro, 9 Gritar, 10 Hechizo, 13 Gremio, 14 Alianza, 15 Comando, 16 GmChat, 192 Codificado, 255 Partido. No hay elección 0. Estos son los códigos Clásicos UO; no los reemplace con números diferentes de ejemplos de terceros.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineMsgType();
UO.Print("Message type: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineMsgType();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineMsgType();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linemsgtype": return new InjectionValue(selectedJournalEntry?.MessageType ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineName();Devuelve el nombre del autor de la entrada del diario seleccionada.
No hay parámetros.
string — nombre del autor de la entrada seleccionada, por ejemplo, nombre del sistema o del personaje; cadena vacía sin selección/sin nombre. Un nombre no garantiza la singularidad de un personaje.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- string — nombre del autor de la entrada seleccionada, por ejemplo, nombre del sistema o del personaje; cadena vacía sin selección/sin nombre. Un nombre no garantiza la singularidad de un personaje.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineName();
UO.Print("Speaker: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineName();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineName();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linename": return new InjectionValue(selectedJournalEntry?.Name ?? string.Empty);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTextColor();Devuelve el color numérico de la entrada de registro seleccionada.
No hay parámetros.
int - UO hue de la entrada seleccionada (0…65535); no hay elección 0. El cero es aceptable como color. Este no es el RGB o ID del autor.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineTextColor();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int - UO hue de la entrada seleccionada (0…65535); no hay elección 0. El cero es aceptable como color. Este no es el RGB o ID del autor.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTextColor();
UO.Print("Hue: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTextColor();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineTextColor();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linetextcolor":
return new InjectionValue(selectedJournalEntry?.Color ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTextFont();Devuelve la fuente de la entrada de registro seleccionada.
No hay parámetros.
int — UO fuente ID del registro seleccionado (0…255 en el cliente); no hay elección 0. Esta es la fuente del juego ID, no el tamaño de fuente IDE.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineTextFont();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int — UO fuente ID del registro seleccionado (0…255 en el cliente); no hay elección 0. Esta es la fuente del juego ID, no el tamaño de fuente IDE.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTextFont();
UO.Print("Font ID: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTextFont();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineTextFont();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linetextfont": return new InjectionValue(selectedJournalEntry?.Font ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineTime();Devuelve la marca de tiempo del calendario de la entrada de registro seleccionada.
No hay parámetros.
double — OLE Automatización Date, número de días desde 30.12.1899, la parte fraccionaria especifica la hora del día. No hay elección 0. No son milisegundos de Now() ni una marca de tiempo completa de Unix. La diferencia de dos de esas marcas se multiplica por 86400000 durante milisegundos.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineTime();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- double — OLE Automatización Date, número de días desde 30.12.1899, la parte fraccionaria especifica la hora del día. No hay elección 0. No son milisegundos de Now() ni una marca de tiempo completa de Unix. La diferencia de dos de esas marcas se multiplica por 86400000 durante milisegundos.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineTime();
UO.Print("OLE date: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineTime();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineTime();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linetime": return new InjectionValue(selectedJournalEntry?.Timestamp ?? 0d);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LineType();Devuelve la categoría de texto de la entrada de registro seleccionada.
No hay parámetros.
int - categoría TextType del cliente: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. No hay elección 0. Esta es una categoría de visualización, no serial, no graphic y no MessageType.
- Busque y Journal/GetJournal/LastJournalMessage guarde el texto y los campos de una sola entrada en el script actual. Los mensajes nuevos no reemplazan estos campos. Si se elimina un registro de un diario limitado, los campos retenidos permanecen, pero LineIndex/GetFoundedTextIndex devuelven -1. La siguiente búsqueda o lectura selecciona otra entrada; una búsqueda fallida, un índice no válido y la limpieza mediante este script restablecen la selección.
- Getter no ejecuta una búsqueda ni selecciona la fila más nueva. Los valores nulos/vacíos pueden ser datos válidos; considere el resultado de la búsqueda.
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.LineType();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- aviso: un ejemplo del texto buscado. Getter se llama sin parámetros solo después de una búsqueda exitosa.
- int - categoría TextType del cliente: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. No hay elección 0. Esta es una categoría de visualización, no serial, no graphic y no MessageType.
if (Truth(UO.InJournal("notice") > 0))
{
var value = UO.LineType();
UO.Print("Text category: " + Convert.ToString(value));
}
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:
- Journal(0) selecciona una nueva entrada. El índice y el valor se leen hasta Print.
- La verificación del índice le permite distinguir entre la ausencia de un registro y un campo nulo o vacío válido.
return RunScenario();
object? RunScenario()
{
var text = UO.Journal(0);
var index = UO.LineIndex();
var value = UO.LineType();
if (Truth(index >= 0))
{
UO.Print(Convert.ToString(value));
}
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 primera búsqueda selecciona el éxito, la segunda reemplaza o restablece la selección. guardado ya contiene una copia del campo requerido.
- La var guardada no cambia con nuevas búsquedas, limpiezas o mensajes.
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.InJournal("success") > 0))
{
var saved = UO.LineType();
var nextMatch = UO.InJournal("failed");
UO.Print("Saved: " + Convert.ToString(saved));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "linetype": return new InjectionValue(selectedJournalEntry?.TextType ?? 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LowJournal();Devuelve el índice de registro mínimo disponible.
No hay parámetros.
int: -1 cuando el cargador está vacío; de lo contrario, 0 es el índice del registro disponible más reciente. Journal/GetJournal usa índices cero desde el registro nuevo hasta el antiguo; un resultado positivo InJournal utiliza un conteo único diferente.
- Los nuevos mensajes y la limpieza cambian los límites. El orden aquí es Journal(0) del registro nuevo al antiguo.
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.LowJournal();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Un límite negativo significa un búfer vacío.
- Si el búfer no está vacío, Journal(0) lee una nueva entrada.
if (Truth(UO.LowJournal() >= 0))
{
var text = UO.Journal(0);
UO.Print(text);
}
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 índice se pasa directamente a Journal, sin restar uno.
- El índice puede cambiar con los mensajes entrantes; El búfer no se congela entre llamadas.
return RunScenario();
object? RunScenario()
{
var index = UO.LowJournal();
if (Truth(index >= 0))
{
var text = UO.Journal(index);
UO.Print(text);
}
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:
- LowJournal y HighJournal forman los límites de los índices. No es el número de líneas; El contenido del registro puede cambiar entre llamadas.
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()
{
int first = UO.LowJournal();
int last = UO.HighJournal();
if (first > last)
return null;
for (int index = first; index <= last; index++)
UO.Print($"{index}: {UO.Journal(index)}");
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.JournalEntryCount:bridge.JournalEntryCount().
Código interno de implementación; no es un script independiente.
case "lowjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : 0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetJournalLine(object? index);
void UO.SetJournalLine(object? stringIndex, object? text);Cambia el texto de una línea; una forma separada de un argumento especifica el límite inferior de la búsqueda.
-
index: para formulario (índice, texto): índice actual de 0, donde 0 es una nueva línea. Para formulario (índice): número de líneas antiguas omitidas desde el principio del búfer interno, no índice Journal; 0 elimina la restricción. El límite negativo de un argumento se limita a 0. -
stringIndex: el nombre del índice en el registro de dos argumentos compatible: el índice actual Journal de 0. -
text: texto nuevo de una línea existente, incluida una línea en blanco. Requerido en forma de reemplazo de texto.
void: sin valor de retorno. Si el índice no es válido, la forma de dos argumentos no cambia nada. La forma de un argumento no cambia el texto.
- El reemplazo es local, no se envía nada al servidor. Los campos de autor/hora se conservan. Una instantánea de texto ya seleccionada permanece igual hasta que se repita Journal o la búsqueda.
- El límite de un argumento es una extensión obsoleta: el número de líneas antiguas en el búfer actual; cuando los registros se eliminan/eliminan, su significado cambia. Para establecer un límite confiable entre acciones, use InJournalBetweenTimes con Now().
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.SetJournalLine");
UO.SetJournalLine(0);Parámetros y flujo de ejecución:
- 0 — nueva línea; el segundo argumento es su nuevo texto completo.
- Esto cambia el búfer local. Entre lectura y escritura pueden llegar nuevos mensajes; el índice no es constante ID.
if (Truth(UO.HighJournal() >= 0))
{
var text = UO.Journal(0);
UO.SetJournalLine(0, "[read] " + text);
}
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:
- Una línea vacía reemplaza el texto, pero no elimina la entrada ni su autor.
- Se omite el índice no válido. existe puede ser true incluso con text="".
return RunScenario();
object? RunScenario()
{
UO.SetJournalLine(0, "");
var text = UO.Journal(0);
var exists = UO.LineIndex() >= 0;
UO.Print(Convert.ToString(exists));
return null;
}Parámetros y flujo de ejecución:
- Un argumento 0 significa no omitir líneas antiguas; esta es otra forma de mando.
- Busque sin restricciones y sin distinguir entre mayúsculas y minúsculas. Ningún texto es reemplazado por este formulario.
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.SetJournalLine(0);
var found = UO.InJournal("notice", -1);
UO.Print(Convert.ToString(found));
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: index (Integer)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetJournalLine. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(index).
Código interno de implementación; no es un script independiente.
public void SetJournalLine(int index) => bridge.SetJournalLine(index);Parámetros: stringIndex (Any/Integer), text (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(Arg(0), Text(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(1). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(Arg(0)).
Código interno de implementación; no es un script independiente.
case "setjournalline":
if (arguments.Length > 1) bridge.SetJournalLine(Arg(0), Text(1));
else bridge.SetJournalLine(Arg(0));
return InjectionValue.Unit;Parámetros: stringIndex (Any/Integer), text (Any/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetJournalLine. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetJournalLine:bridge.SetJournalLine(index, text).
Código interno de implementación; no es un script independiente.
public void SetJournalLine(int index, string text) => bridge.SetJournalLine(index, text);ClassicUO — Bad Newbie & C# Scripts IDE