Skip to content

FR UO Topic record playback

Codex edited this page Oct 12, 2026 · 4 revisions

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

Enregistrement / Lecture

Accueil · C# · IDE · UO API · A–Z · Exemples · Langues

Enregistrez et répétez les actions prises en charge. La composition des restrictions d'enregistrement et de lecture est déterminée par la mise en œuvre des commandes.

Sections

Sujet Commandes et explications
SetRec UO.SetRec
UseRec UO.UseRec

Toutes les commandes du thème

Enregistrement

UO.SetRec · UO.UseRec

Exemples sur le sujet

Chaque carte de commande possède plusieurs scénarios indépendants : code direct, fonctions et classes. Vous trouverez ci-dessous une sélection de courts scénarios ; des restrictions et une analyse complète sont à prévoir.

UO.SetRec

Paramètres, résultat et tous les scénarios

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

UO.UseRec

Paramètres, résultat et tous les scénarios

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

Référence complète des commandes


UO.SetRec

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

Signatures C#

void UO.SetRec();

Prépare l'enregistrement de la prochaine commande héritée UO.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • ExecuteLegacyManualAlias efface l'état. RecordedAction et définit recordNextLegacyAction=true. L'appel suivant au même répartiteur hérité, à l'exception de SetRec/UseRec, sérialise le nom et les arguments avant d'exécuter la commande, puis efface l'indicateur.
  • Cela n'enregistre pas toutes les actions de la souris, les getters UO ou les événements du serveur. Répète une seule commande à partir d’un répartiteur hérité pris en charge. L'ancienne sauvegarde est immédiatement effacée.
  • Dans un hôte client standard, ces données d'état sont extraites du gestionnaire GetPersistentState et sont communes aux scripts/chat/macros du même monde/profil, et n'appartiennent pas à un seul script. Un autre processus ou un InjectionRuntimeState apparemment séparé a un état différent. Charger/effacer un profil peut le remplacer ; Les serial enregistrés sont toujours comparés au monde chargé.
  • L'entrée conserve les types d'arguments int, double, string, récursive Array et void. Les autres objets sont écrits sous forme de texte ToString ; l'objet/poignée actif n'est pas restauré lors de la répétition.
  • RecordedAction est l'état général du profil, et recordNextLegacyAction/replayingLegacyAction sont les champs privés de ce InjectionApiUO. Seule cette instance enregistre son prochain appel hérité. Un autre script peut effacer ou refaire une écriture partagée, mais n'utilise pas l'indicateur d'attente d'écriture de cette instance.
  • Seul SetRec() est enregistré, strictement sans arguments. Il efface RecordedAction immédiatement, donc stay() renvoie 0 avant qu'une action héritée ultérieure ne soit écrite par cette instance ; L'activation de l'attente d'écriture ne crée pas elle-même une action enregistrée. stay() lit uniquement et ne consomme pas l'indicateur d'attente.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

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

1. Appel direct - script direct

Paramètres et déroulement de l’exécution :

  • Prépare l'enregistrement de la prochaine commande héritée UO.
UO.SetRec();
UO.Light(15);

2. Option explicite - fonction de script

Paramètres et déroulement de l’exécution :

  • ExecuteLegacyManualAlias efface l'état. RecordedAction et définit recordNextLegacyAction=true. L'appel suivant au même répartiteur hérité, à l'exception de SetRec/UseRec, sérialise le nom et les arguments avant d'exécuter la commande, puis efface l'indicateur.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.UseRec();
    return null;
}

3. Fonction d'assistance complète - Classe de script

Paramètres et déroulement de l’exécution :

  • Cela n'enregistre pas toutes les actions de la souris, les getters UO ou les événements du serveur. Répète une seule commande à partir d’un répartiteur hérité pris en charge. L'ancienne sauvegarde est immédiatement effacée.
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;
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.SetRec() — UO.SetRec()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

case "setrec":

                    state.RecordedAction = string.Empty;

                    recordNextLegacyAction = true;

                    break;

UO.UseRec

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

Signatures C#

void UO.UseRec();

Répète la commande héritée enregistrée UO.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.

Comportement

  • TryDeserializeRecordedLegacyAction vérifie le préfixe YOKOREC1 et les arguments saisis. Entrée non/invalide - message local, aucune action. Une entrée valide appelle ExecuteLegacyManualAlias avec le nom et les arguments enregistrés.
  • L'indicateur replayingLegacyAction protège la relecture de l'écriture elle-même et est effacé finally, même en cas d'erreur. L'entrée n'est pas supprimée après répétition : UseRec peut être rappelé. Les noms/serial sont résolus en fonction des types enregistrés et du monde actuel.
  • Dans un hôte client standard, ces données d'état sont extraites du gestionnaire GetPersistentState et sont communes aux scripts/chat/macros du même monde/profil, et n'appartiennent pas à un seul script. Un autre processus ou un InjectionRuntimeState apparemment séparé a un état différent. Charger/effacer un profil peut le remplacer ; Les serial enregistrés sont toujours comparés au monde chargé.
  • L'entrée conserve les types d'arguments int, double, string, récursive Array et void. Les autres objets sont écrits sous forme de texte ToString ; l'objet/poignée actif n'est pas restauré lors de la répétition.
  • RecordedAction est l'état général du profil, et recordNextLegacyAction/replayingLegacyAction sont les champs privés de ce InjectionApiUO. Seule cette instance enregistre son prochain appel hérité. Un autre script peut effacer ou refaire une écriture partagée, mais n'utilise pas l'indicateur d'attente d'écriture de cette instance.

Scripts C# autonomes

Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.

Exemple simple

Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.

La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.

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

1. Appel direct - script direct

Paramètres et déroulement de l’exécution :

  • Répète la commande héritée enregistrée UO.
UO.SetRec();
UO.Light(15);
UO.UseRec();

2. Option explicite - fonction de script

Paramètres et déroulement de l’exécution :

  • TryDeserializeRecordedLegacyAction vérifie le préfixe YOKOREC1 et les arguments saisis. Entrée non/invalide - message local, aucune action. Une entrée valide appelle ExecuteLegacyManualAlias avec le nom et les arguments enregistrés.
return  RunScenario();
 object? RunScenario()
{
    UO.SetRec();
    UO.Sound(0x0040);
    UO.Wait(250);
    UO.UseRec();
    return null;
}

3. Fonction d'assistance complète - Classe de script

Paramètres et déroulement de l’exécution :

  • L'indicateur replayingLegacyAction protège la relecture de l'écriture elle-même et est effacé finally, même en cas d'erreur. L'entrée n'est pas supprimée après répétition : UseRec peut être rappelé. Les noms/serial sont résolus en fonction des types enregistrés et du monde actuel.
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;
    }
}

Implémentation de la commande

C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.

UO.UseRec() — UO.UseRec()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

Code interne de l’implémentation ; ce n’est pas un script autonome.

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