Skip to content

ES UO Topic journal

Codex edited this page Oct 12, 2026 · 4 revisions

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

Journal

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.

Secciones

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

Todos los comandos del tema

Journal

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

Waiting

UO.WaitJournalLine · UO.WaitJournalLineSystem · UO.WaitingForJournalText

Sistema Journal

UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal

Journal Ignore

UO.AddJournalIgnore · UO.ClearJournalIgnore

Información de línea

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

Texto encontrado

UO.FoundedParamId · UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer

Ejemplos sobre el tema.

Cada tarjeta de comando tiene varios escenarios independientes: código directo, funciones y clases. A continuación se muestran escenarios breves seleccionados; restricciones y análisis completos están en las cartas.

UO.InJournal

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;

UO.WaitJournalLine

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;

Partes de la referencia

1 · 2

Referencia completa de comandos


UO.AddJournalIgnore

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

Firmas de C#

void UO.AddJournalIgnore(object? str);

Agrega un filtro de texto local para las entradas del registro de juegos de ClassicUO.

Parámetros

  • str: fragmento de texto no vacío para buscar en el texto de la entrada del diario.

Valor devuelto

void. El comando no devuelve el número de coincidencias.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.AddJournalIgnore");
UO.AddJournalIgnore("You see");

1. Ocultar nuevas publicaciones que contengan esta frase. - guión directo

Parámetros y flujo de ejecución:

  • Ocultar nuevas publicaciones que contengan esta frase.
UO.AddJournalIgnore("You see");

2. El filtro busca una subcadena que no distingue entre mayúsculas y minúsculas. - función de guión

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;
}

3. Varias llamadas agregan filtros de texto independientes. - clase de guión

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AddJournalIgnore(str) — UO.AddJournalIgnore(Any)

Parámetros: str (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "addjournalignore": bridge.AddJournalIgnore(Text(0)); return InjectionValue.Unit;

UO.AddToJournal

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

Firmas de C#

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.

Parámetros

Valor devuelto

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.

Comportamiento

  • 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 agrega 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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.AddToJournal");
UO.AddToJournal("Script started");

1. Breve reportaje - guión directo

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));

2. Advertencia de sobrecarga: función de secuencia de comandos

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;

3. Informar únicamente de cambios de peso: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AddToJournal(text) — UO.AddToJournal(Any)

Parámetros: text (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournal

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

Firmas de C#

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.

Parámetros

Valor devuelto

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.

Comportamiento

  • 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 agrega 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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.AddToSystemJournal");
UO.AddToSystemJournal("Script started");

1. Breve reportaje - guión directo

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));

2. Advertencia de sobrecarga: función de secuencia de comandos

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;

3. Informar únicamente de cambios de peso: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.AddToSystemJournal(text) — UO.AddToSystemJournal(Any)

Parámetros: text (Any)

Resultado: void / Unit.

Durante la llamada:

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

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournalEx

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

Firmas de C#

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.

Parámetros

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

Valor devuelto

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.

Comportamiento

  • 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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.AddToSystemJournalEx");
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");

1. UO.AddToSystemJournalEx - 1 - guión directo

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");

2. UO.AddToSystemJournalEx — 2 — función de secuencia de comandos

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;
}

3. UO.AddToSystemJournalEx - 3 - clase de escenario

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.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:

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;

UO.ChangeJournalLength

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

Firmas de C#

void UO.ChangeJournalLength(object? newLength);

Cambia el límite del historial de registro del cliente que se conserva.

Parámetros

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

Valor devuelto

void: sin valor de retorno.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.ChangeJournalLength");
UO.ChangeJournalLength(100);

1. Historial en registros 100 - guión directo

Parámetros y flujo de ejecución:

  • El nuevo límite limita la cantidad de registros guardados.
UO.ChangeJournalLength(100);

2. Historial mínimo: función de secuencia de comandos

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;
}

3. Entrada nula: clase de secuencia de comandos

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.ChangeJournalLength(newLength) — UO.ChangeJournalLength(Any)

Parámetros: newLength (Any)

Resultado: void / Unit.

Durante la llamada:

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;

UO.ClearJournal

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

Firmas de C#

void UO.ClearJournal();

Elimina líneas del registro local compartido.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.ClearJournal");
UO.ClearJournal();

1. Borrar área de registro seleccionada - script directo

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));

2. Borrar antes de esperar: función de secuencia de comandos

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;
}

3. Verificar Restablecer entrada seleccionada - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.ClearJournal() — UO.ClearJournal()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearjournal": DeleteJournal(); return InjectionValue.Unit;

UO.ClearJournalIgnore

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

Firmas de C#

void UO.ClearJournalIgnore();

Elimina todos los filtros de texto JournalManager.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • La eliminación de filtros no elimina el historial ni cancela los filtros de nombre AddChatUserIgnore.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.ClearJournalIgnore");
UO.ClearJournalIgnore();

1. Estado claro: guión directo

Parámetros y flujo de ejecución:

  • Elimina todos los filtros de texto JournalManager.
UO.ClearJournalIgnore();

2. Borrar después de la configuración: función de script

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;
}

3. Volver a purgar: clase de secuencia de comandos

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.ClearJournalIgnore() — UO.ClearJournalIgnore()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearjournalignore": bridge.ClearJournalIgnore(); return InjectionValue.Unit;

UO.ClearSystemJournal

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

Firmas de C#

void UO.ClearSystemJournal();

Elimina líneas con el nombre del autor System.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.ClearSystemJournal");
UO.ClearSystemJournal();

1. Borrar área de registro seleccionada - script directo

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));

2. Borrar antes de esperar: función de secuencia de comandos

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;
}

3. Verificar Restablecer entrada seleccionada - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.ClearSystemJournal() — UO.ClearSystemJournal()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "clearsystemjournal": bridge.DeleteSystemJournal(); SelectJournalEntry(null); return InjectionValue.Unit;

UO.DeleteJournal

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

Firmas de C#

void UO.DeleteJournal();
void UO.DeleteJournal(object? text);

Elimina líneas del registro local compartido.

Parámetros

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

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.DeleteJournal");
UO.DeleteJournal();

1. Borrar área de registro seleccionada - script directo

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));

2. Borrar antes de esperar: función de secuencia de comandos

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;
}

3. Verificar Restablecer entrada seleccionada - Clase de script

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;
    }
}

4. Eliminar solo el texto coincidente: secuencia de comandos directa

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));

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.DeleteJournal() — UO.DeleteJournal()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

public void DeleteJournal()

        {

            bridge.DeleteJournal();

            SelectJournalEntry(null);

        }

UO.DeleteJournal(text) — UO.DeleteJournal(Any)

Parámetros: text (Any)

Resultado: void / Unit.

Durante la llamada:

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

public void DeleteJournal(InjectionValue text) => DeleteJournal((string)text);

UO.FoundedParamId

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

Firmas de C#

dynamic UO.FoundedParamId();

Devuelve el número de la alternativa del patrón de búsqueda coincidente.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Dos resultados: guión directo

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;

2. Tres selecciones sin mayúsculas y minúsculas - función script

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;

3. Guarde el resultado antes de leer otra línea: clase de guión

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.FoundedParamId() — UO.FoundedParamId()

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);

UO.GetFoundedText

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

Firmas de C#

string UO.GetFoundedText();

Devuelve el texto de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

string — texto de la entrada seleccionada; Línea vacía sin selección. Se acepta texto en blanco para una entrada existente.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedText() — UO.GetFoundedText()

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;

UO.GetFoundedTextColor

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

Firmas de C#

string UO.GetFoundedTextColor();

Devuelve el color de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedTextColor() — UO.GetFoundedTextColor()

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";

UO.GetFoundedTextID

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

Firmas de C#

int UO.GetFoundedTextID();

Devuelve el número de la alternativa del patrón de búsqueda coincidente.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Dos resultados: guión directo

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;

2. Tres selecciones sin mayúsculas y minúsculas - función script

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;

3. Guarde el resultado antes de leer otra línea: clase de guión

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedTextID() — UO.GetFoundedTextID()

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;

UO.GetFoundedTextIndex

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

Firmas de C#

int UO.GetFoundedTextIndex();

Devuelve el índice actual de la entrada seleccionada, si todavía está almacenado en el registro.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Índice del registro encontrado - guión directo

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;

2. Comprobar lectura directa: función de secuencia de comandos

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;

3. Actualizar índice después de esperar: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedTextIndex() — UO.GetFoundedTextIndex()

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;

UO.GetFoundedTextSerial

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

Firmas de C#

string UO.GetFoundedTextSerial();

Devuelve serial el autor de la entrada de diario seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedTextSerial() — UO.GetFoundedTextSerial()

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";

UO.GetFoundedTextTimer

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

Firmas de C#

int UO.GetFoundedTextTimer();

Devuelve la marca de tiempo de milisegundos de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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().

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetFoundedTextTimer() — UO.GetFoundedTextTimer()

Parámetros: Sin parámetros.

Resultado: int / Integer.

Durante la llamada:

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

public int GetFoundedTextTimer() => selectedJournalEntry != null ? JournalEntryTime(selectedJournalEntry.Timestamp) : 0;

UO.GetJournal

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

Firmas de C#

string UO.GetJournal(object? index);

Lee el texto de una línea en el índice actual y selecciona esa entrada para GetFoundedText/Línea*.

Parámetros

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

Valor devuelto

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.

Comportamiento

  • 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 ; .

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. La última línea y su autor es un guión directo.

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);

2. La línea anterior, si existe, es una función de script.

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;

3. Distinguir texto vacío de texto sin cadena - clase de script

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetJournal(index) — UO.GetJournal(Integer)

Parámetros: index (Integer)

Resultado: string / String.

Durante la llamada:

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

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.GetJournalColor

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

Firmas de C#

string UO.GetJournalColor(object? index);

Lee el campo hue de una cadena en el índice actual, sin cambiar la entrada seleccionada.

Parámetros

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

Valor devuelto

string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Nuevo campo de registro: script directo

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;

2. Campo de registro anterior: función de secuencia de comandos

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;

3. Guardar valor antes de la siguiente acción - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetJournalColor(index) — UO.GetJournalColor(Integer)

Parámetros: index (Integer)

Resultado: string / String.

Durante la llamada:

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

public string JournalColor(int index) => bridge.JournalColor(index);

UO.GetJournalSerial

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

Firmas de C#

string UO.GetJournalSerial(object? index);

Lee el campo serial de una cadena en el índice actual, sin cambiar la entrada seleccionada.

Parámetros

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

Valor devuelto

string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Nuevo campo de registro: script directo

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;

2. Campo de registro anterior: función de secuencia de comandos

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;

3. Guardar valor antes de la siguiente acción - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.GetJournalSerial(index) — UO.GetJournalSerial(Integer)

Parámetros: index (Integer)

Resultado: string / String.

Durante la llamada:

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

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.HighJournal

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

Firmas de C#

dynamic UO.HighJournal();

Devuelve el índice de registro máximo disponible.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

  • Los nuevos mensajes y la limpieza cambian los límites. El orden aquí es Journal(0) del registro nuevo al antiguo.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Buscar entradas - guión directo

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;

2. Número de líneas disponibles - función de script

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;
}

3. Leer línea en el borde - Clase de script

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.HighJournal() — UO.HighJournal()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "highjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : bridge.JournalEntryCount() - 1);

UO.InJournal

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

Firmas de C#

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.

Parámetros

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

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Verificar mensaje que distinga entre mayúsculas y minúsculas: script directo

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;

3. Verifique solo las últimas veinte líneas: clase de script

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;
    }
}

4. Todas las opciones avanzadas - script directo

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;

5. Filtrar solo por tiempo: función de script

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;

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.InJournal(pattern) — UO.InJournal(Any)

Parámetros: pattern (Any/String)

Resultado: int / Any.

Durante la llamada:

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

case "injournal": return new InjectionValue(InJournal(Text(0)));

UO.InJournal(pattern) — UO.InJournal(String)

Parámetros: pattern (Any/String)

Resultado: int / Integer.

Durante la llamada:

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

public int InJournal(string pattern)

            => InJournalCore(pattern, -1, ignoreCase: false);

UO.InJournal(pattern, maxLinesOrIgnoreCase) — UO.InJournal(String,Integer)

Parámetros: pattern (String), maxLinesOrIgnoreCase (Integer)

Resultado: int / Integer.

Durante la llamada:

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);

UO.InJournal(pattern, serial, color) — UO.InJournal(Any,Any,Any)

Parámetros: pattern (Any), serial (Any), color (Any)

Resultado: int / Integer.

Durante la llamada:

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) — UO.InJournal(Any,Any,Any,Any)

Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any)

Resultado: int / Integer.

Durante la llamada:

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) — UO.InJournal(Any,Any,Any,Any,Any)

Parámetros: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any)

Resultado: int / Integer.

Durante la llamada:

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:

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:

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

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

Firmas de C#

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.

Parámetros

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

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Comprobar mensajes después de la acción: guión directo

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;

2. Intervalo fijo desde el inicio: función de script

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();
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.InJournalBetweenTimes(pattern, startTime) — UO.InJournalBetweenTimes(Any,Any)

Parámetros: pattern (Any/String), startTime (Any/Integer)

Resultado: int / Any.

Durante la llamada:

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) — UO.InJournalBetweenTimes(String,Integer)

Parámetros: pattern (Any/String), startTime (Any/Integer)

Resultado: int / Integer.

Durante la llamada:

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);

UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(Any,Any,Any)

Parámetros: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)

Resultado: int / Any.

Durante la llamada:

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:

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:

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:

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);

UO.Journal

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

Firmas de C#

string UO.Journal(object? index);

Lee el texto de una línea en el índice actual y selecciona esa entrada para GetFoundedText/Línea*.

Parámetros

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

Valor devuelto

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.

Comportamiento

  • 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 ; .

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. La última línea y su autor es un guión directo.

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);

2. La línea anterior, si existe, es una función de script.

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;

3. Distinguir texto vacío de texto sin cadena - clase de script

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.Journal(index) — UO.Journal(Any)

Parámetros: index (Any/Integer)

Resultado: string / Any.

Durante la llamada:

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

case "journal": return new InjectionValue(GetJournalText(Arg(0)));

UO.Journal(index) — UO.Journal(Integer)

Parámetros: index (Any/Integer)

Resultado: string / String.

Durante la llamada:

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

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.JournalColor

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

Firmas de C#

string UO.JournalColor(object? index);

Lee el campo hue de una cadena en el índice actual, sin cambiar la entrada seleccionada.

Parámetros

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

Valor devuelto

string - UO hue como 0x0044; si el índice 0x0000 es incorrecto. Este no es RGB.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Nuevo campo de registro: script directo

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;

2. Campo de registro anterior: función de secuencia de comandos

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;

3. Guardar valor antes de la siguiente acción - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.JournalColor(index) — UO.JournalColor(Integer)

Parámetros: index (Integer)

Resultado: string / String.

Durante la llamada:

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

public string JournalColor(int index) => bridge.JournalColor(index);

UO.JournalSerial

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

Firmas de C#

string UO.JournalSerial(object? index);

Lee el campo serial de una cadena en el índice actual, sin cambiar la entrada seleccionada.

Parámetros

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

Valor devuelto

string - serial del autor como 0x00001234; si el índice 0x00000000 es incorrecto.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Nuevo campo de registro: script directo

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;

2. Campo de registro anterior: función de secuencia de comandos

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;

3. Guardar valor antes de la siguiente acción - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.JournalSerial(index) — UO.JournalSerial(Integer)

Parámetros: index (Integer)

Resultado: string / String.

Durante la llamada:

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

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.JournalTimer

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

Firmas de C#

int UO.JournalTimer(object? index);

Lee el campo de marca de tiempo de una fila en el índice actual sin cambiar la entrada seleccionada.

Parámetros

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

Valor devuelto

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().

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Nuevo campo de registro: script directo

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;

2. Campo de registro anterior: función de secuencia de comandos

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;

3. Guardar valor antes de la siguiente acción - Clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.JournalTimer(index) — UO.JournalTimer(Integer)

Parámetros: index (Integer)

Resultado: int / Integer.

Durante la llamada:

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

public int JournalTimer(int index) => JournalEntryTime(index);

UO.LastJournalMessage

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

Firmas de C#

dynamic UO.LastJournalMessage();

Lee el texto de la entrada del registro local más reciente.

Parámetros

No hay parámetros.

Valor devuelto

string — texto de la nueva entrada; cadena vacía si no hay ningún registro o la entrada en sí contiene texto vacío.

Comportamiento

  • 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).

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer y guardar texto - guión directo

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);

2. Comprobar subcadena - función de script

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;
}

3. Comparar con resultado de búsqueda - clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LastJournalMessage() — UO.LastJournalMessage()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "lastjournalmessage": return new InjectionValue(GetJournalText(0));

UO.LastMessage

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

Firmas de C#

string UO.LastMessage();

Lee el texto de la entrada del registro local más reciente.

Parámetros

No hay parámetros.

Valor devuelto

string — texto de la nueva entrada; cadena vacía si no hay ningún registro o la entrada en sí contiene texto vacío.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer y guardar texto - guión directo

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);

2. Comprobar subcadena - función de script

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;
}

3. Comparar con resultado de búsqueda - clase de script

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LastMessage() — UO.LastMessage()

Parámetros: Sin parámetros.

Resultado: string / String.

Durante la llamada:

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

public string LastMessage() => bridge.LastMessage();

UO.LineCount

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

Firmas de C#

dynamic UO.LineCount();

Lee el número de filas coincidentes de la última búsqueda.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Todos los partidos son guión directo.

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));

2. Las coincidencias entre las últimas diez líneas son función del guión.

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;
}

3. Búsqueda de finalización anticipada: clase de secuencia de comandos

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineCount() — UO.LineCount()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "linecount": return new InjectionValue(bridge.JournalMatchCount());

UO.LineID

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

Firmas de C#

dynamic UO.LineID();

Devuelve el número serial del autor de la entrada de diario seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineID() — UO.LineID()

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);

UO.LineIndex

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

Firmas de C#

dynamic UO.LineIndex();

Devuelve el índice actual de la entrada seleccionada, si todavía está almacenado en el registro.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Índice del registro encontrado - guión directo

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;

2. Comprobar lectura directa: función de secuencia de comandos

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;

3. Actualizar índice después de esperar: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineIndex() — UO.LineIndex()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "lineindex": return new InjectionValue(GetFoundedTextIndex());

UO.LineMsgType

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

Firmas de C#

dynamic UO.LineMsgType();

Devuelve el tipo de mensaje de red de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineMsgType() — UO.LineMsgType()

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);

UO.LineName

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

Firmas de C#

dynamic UO.LineName();

Devuelve el nombre del autor de la entrada del diario seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineName() — UO.LineName()

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);

UO.LineTextColor

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

Firmas de C#

dynamic UO.LineTextColor();

Devuelve el color numérico de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineTextColor() — UO.LineTextColor()

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);

UO.LineTextFont

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

Firmas de C#

dynamic UO.LineTextFont();

Devuelve la fuente de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineTextFont() — UO.LineTextFont()

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);

UO.LineTime

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

Firmas de C#

dynamic UO.LineTime();

Devuelve la marca de tiempo del calendario de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineTime() — UO.LineTime()

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);

UO.LineType

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

Firmas de C#

dynamic UO.LineType();

Devuelve la categoría de texto de la entrada de registro seleccionada.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

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

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Leer campo después de la búsqueda - script directo

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;

2. Leer campo de una línea específica - función de script

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;

3. Guardar campo antes de la siguiente búsqueda: clase de secuencia de comandos

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;
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LineType() — UO.LineType()

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);

UO.LowJournal

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

Firmas de C#

dynamic UO.LowJournal();

Devuelve el índice de registro mínimo disponible.

Parámetros

No hay parámetros.

Valor devuelto

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.

Comportamiento

  • Los nuevos mensajes y la limpieza cambian los límites. El orden aquí es Journal(0) del registro nuevo al antiguo.

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El 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));

1. Buscar entradas - guión directo

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;

2. Leer línea en el límite: función de script

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;

3. Leer rango de registro actual: clase de secuencia de comandos

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.LowJournal() — UO.LowJournal()

Parámetros: Sin parámetros.

Resultado: dynamic / Any.

Durante la llamada:

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

case "lowjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : 0);

UO.SetJournalLine

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

Firmas de C#

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.

Parámetros

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

Valor devuelto

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.

Comportamiento

  • 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().

Scripts independientes de C#

Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.

Ejemplo sencillo

Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.

El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.

UO.Print("Calling UO.SetJournalLine");
UO.SetJournalLine(0);

1. Marcar la última línea - guión directo

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;

2. Reemplazar texto con una cadena vacía - función de script

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;
}

3. Eliminar restricción de búsqueda: clase de secuencia de comandos

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;
    }
}

Implementación del comando

C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.

UO.SetJournalLine(index) — UO.SetJournalLine(Integer)

Parámetros: index (Integer)

Resultado: void / Unit.

Durante la llamada:

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

public void SetJournalLine(int index) => bridge.SetJournalLine(index);

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Any,Any)

Parámetros: stringIndex (Any/Integer), text (Any/String)

Resultado: void / Unit.

Durante la llamada:

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;

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Integer,String)

Parámetros: stringIndex (Any/Integer), text (Any/String)

Resultado: void / Unit.

Durante la llamada:

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

public void SetJournalLine(int index, string text) => bridge.SetJournalLine(index, text);

Clone this wiki locally