Skip to content

ES UO Topic record playback

Codex edited this page Oct 12, 2026 · 4 revisions

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

Grabar / Reproducir

Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas

Registre y repita las acciones admitidas. La composición de las restricciones de grabación y reproducción está determinada por la implementación de los comandos.

Secciones

Tema Comandos y explicaciones
SetRec UO.SetRec
UseRec UO.UseRec

Todos los comandos del tema

Grabación

UO.SetRec · UO.UseRec

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

Parámetros, resultado y todos los escenarios

UO.SetRec();
UO.Light(15);

UO.UseRec

Parámetros, resultado y todos los escenarios

UO.SetRec();
UO.Light(15);
UO.UseRec();

Referencia completa de comandos


UO.SetRec

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

Firmas de C#

void UO.SetRec();

Prepara la grabación del siguiente comando heredado UO.

Parámetros

No hay parámetros.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • ExecuteLegacyManualAlias borra el estado. RecordedAction y establece recordNextLegacyAction=true. La siguiente llamada al mismo despachador heredado, excepto SetRec/UseRec, serializa el nombre y los argumentos antes de ejecutar el comando y luego borra la bandera.
  • Esto no registra todas las acciones del mouse, ningún captador UO ni eventos del servidor. Repite solo un comando de un despachador heredado compatible. El antiguo guardado se borra inmediatamente.
  • En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
  • La entrada conserva los tipos de argumento int, double, string, recursive Array y void. Otros objetos se escriben como texto ToString; el objeto/identificador activo no se restaura cuando se repite.
  • RecordedAction es el estado general del perfil, y recordNextLegacyAction/replayingLegacyAction son los campos privados de este InjectionApiUO. Sólo esta instancia registra su próxima llamada heredada. Otro script puede borrar o rehacer una escritura compartida, pero no consume el indicador de espera de escritura de esa instancia.
  • Solo se registra SetRec(), estrictamente sin argumentos. Borra RecordedAction inmediatamente, por lo que permanezca() devuelve 0 antes de que esa instancia escriba una acción heredada posterior; Habilitar la espera de escritura no crea en sí una acción guardada. permanecer() solo lee y no consume el indicador de espera.

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.SetRec");
UO.SetRec();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Prepara la grabación del siguiente comando heredado UO.
UO.SetRec();
UO.Light(15);

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias borra el estado. RecordedAction y establece recordNextLegacyAction=true. La siguiente llamada al mismo despachador heredado, excepto SetRec/UseRec, serializa el nombre y los argumentos antes de ejecutar el comando y luego borra la bandera.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.UseRec();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Esto no registra todas las acciones del mouse, ningún captador UO ni eventos del servidor. Repite solo un comando de un despachador heredado compatible. El antiguo guardado se borra inmediatamente.
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.SetRec();
        UO.TextPrint("This is not a legacy recording route");
        UO.Light(15);
        UO.UseRec();
        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.SetRec() — UO.SetRec()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "setrec":

                    state.RecordedAction = string.Empty;

                    recordNextLegacyAction = true;

                    break;

UO.UseRec

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

Firmas de C#

void UO.UseRec();

Repite el comando heredado guardado UO.

Parámetros

No hay parámetros.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • TryDeserializeRecordedLegacyAction verifica el prefijo YOKOREC1 y los argumentos escritos. Entrada no válida/no válida: mensaje local, ninguna acción. Una entrada válida llama a ExecuteLegacyManualAlias con el nombre y los argumentos guardados.
  • El indicador replayingLegacyAction protege la repetición para que no se escriba y se borra finally, incluso en caso de error. La entrada no se elimina después de repetirla: se puede volver a llamar a UseRec. Los nombres/serial se resuelven según los tipos guardados y el mundo actual.
  • En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
  • La entrada conserva los tipos de argumento int, double, string, recursive Array y void. Otros objetos se escriben como texto ToString; el objeto/identificador activo no se restaura cuando se repite.
  • RecordedAction es el estado general del perfil, y recordNextLegacyAction/replayingLegacyAction son los campos privados de este InjectionApiUO. Sólo esta instancia registra su próxima llamada heredada. Otro script puede borrar o rehacer una escritura compartida, pero no consume el indicador de espera de escritura de esa instancia.

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.UseRec");
UO.UseRec();

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Repite el comando heredado guardado UO.
UO.SetRec();
UO.Light(15);
UO.UseRec();

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • TryDeserializeRecordedLegacyAction verifica el prefijo YOKOREC1 y los argumentos escritos. Entrada no válida/no válida: mensaje local, ninguna acción. Una entrada válida llama a ExecuteLegacyManualAlias con el nombre y los argumentos guardados.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.Wait(250);
    UO.UseRec();
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • El indicador replayingLegacyAction protege la repetición para que no se escriba y se borra finally, incluso en caso de error. La entrada no se elimina después de repetirla: se puede volver a llamar a UseRec. Los nombres/serial se resuelven según los tipos guardados y el mundo actual.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.SetRec();
        UO.Light(15);
        UO.UseRec();
        UO.Wait(250);
        UO.UseRec();
        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.UseRec() — UO.UseRec()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "userec":

                    if (!TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments))

                    {

                        if (bridge != null) SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record.");

                        break;

                    }

                    replayingLegacyAction = true;

                    try

                    {

                        ExecuteLegacyManualAlias(recordedName, recordedArguments);

                    }

                    finally

                    {

                        replayingLegacyAction = false;

                    }

                    break;

Clone this wiki locally