Repository navigation
FR UO Topic record playback
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Sujet | Commandes et explications |
|---|---|
| SetRec | UO.SetRec |
| UseRec | UO.UseRec |
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.
Paramètres, résultat et tous les scénarios
UO.SetRec();
UO.Light(15);Paramètres, résultat et tous les scénarios
UO.SetRec();
UO.Light(15);
UO.UseRec();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetRec();Prépare l'enregistrement de la prochaine commande héritée UO.
Il n'y a pas de paramètres.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- 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.
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.
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();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);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;
}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;
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
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;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UseRec();Répète la commande héritée enregistrée UO.
Il n'y a pas de paramètres.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- 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.
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.
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();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();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;
}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;
}
}C# distingue les majuscules. Utilisez le nom UO exact. Comparez les indicateurs numériques à 0 ; utilisez bool seulement si la signature renvoie bool.
Paramètres: Aucun paramètre.
Résultat: void / Unit.
Pendant un appel:
-
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).
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;ClassicUO — Bad Newbie & C# Scripts IDE