Repository navigation
ES UO Topic record playback
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Tema | Comandos y explicaciones |
|---|---|
| SetRec | UO.SetRec |
| UseRec | UO.UseRec |
Cada tarjeta de comando tiene varios escenarios independientes: código directo, funciones y clases. A continuación se muestran escenarios breves seleccionados; restricciones y análisis completos están en las cartas.
Parámetros, resultado y todos los escenarios
UO.SetRec();
UO.Light(15);Parámetros, resultado y todos los escenarios
UO.SetRec();
UO.Light(15);
UO.UseRec();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetRec();Prepara la grabación del siguiente comando heredado UO.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.SetRec");
UO.SetRec();Parámetros y flujo de ejecución:
- Prepara la grabación del siguiente comando heredado UO.
UO.SetRec();
UO.Light(15);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;
}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;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "setrec":
state.RecordedAction = string.Empty;
recordNextLegacyAction = true;
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseRec();Repite el comando heredado guardado UO.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.UseRec");
UO.UseRec();Parámetros y flujo de ejecución:
- Repite el comando heredado guardado UO.
UO.SetRec();
UO.Light(15);
UO.UseRec();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;
}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;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.TryDeserializeRecordedLegacyAction:TryDeserializeRecordedLegacyAction(state.RecordedAction, out string recordedName, out InjectionValue[] recordedArguments). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UseRec: no recorded UO action is available. Call UO.SetRec() before the action to record."). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias:ExecuteLegacyManualAlias(recordedName, recordedArguments).
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;ClassicUO — Bad Newbie & C# Scripts IDE