Repository navigation
FR UO Topic targeting
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Accueil · C# · IDE · UO API · A–Z · Exemples · Langues
Réponse manuelle avec curseur cible et réponse prédéfinie WaitTarget. Fixer un objectif attendu et effectuer une action sont des opérations distinctes.
| Sujet | Commandes et explications |
|---|---|
| Target | UO.Target |
| TargetID | UO.TargetID |
| TargetToObject | UO.TargetToObject |
| TargetToTile | UO.TargetToTile |
| TargetToXYZ | UO.TargetToXYZ |
| TargetByResource | UO.TargetByResource |
| WaitTarget | UO.WaitTarget |
| WaitTargetObject | UO.WaitTargetObject |
| WaitTargetType | UO.WaitTargetType |
| WaitTargetTile | UO.WaitTargetTile |
| WaitTargetXYZ | UO.WaitTargetXYZ |
| WaitTargetSelf | UO.WaitTargetSelf |
| LastTarget | UO.LastTarget |
| CancelTarget | UO.CancelTarget |
| Client Target Response | UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.WaitForClientTargetResponse · UO.ClientTargetResponse |
UO.Target · UO.TargetID · UO.Targeting · UO.TargetPresent · UO.TargetToObject · UO.TargetToTile · UO.TargetToXYZ · UO.TargetByResource · UO.LastTarget · UO.LastTargetX · UO.LastTargetY · UO.LastTile · UO.TicksTarget
UO.WaitTarget · UO.WaitTargetObject · UO.WaitTargetType · UO.WaitTargetObjectType · UO.WaitTargetTile · UO.WaitTargetXYZ · UO.WaitTargetSelf · UO.WaitTargetGround · UO.WaitTargetLast · UO.WaitForTarget · UO.IsWaitTargetActive · UO.CancelTarget · UO.CancelWaitTarget
UO.ClientRequestObjectTarget · UO.ClientRequestTileTarget · UO.ClientTargetResponse · UO.ClientTargetResponsePresent · UO.WaitForClientTargetResponse
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.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");Paramètres, résultat et tous les scénarios
if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelTarget();Annule le curseur actif et efface les réponses préparées en forme de croix.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Les réponses déjà envoyées au serveur ne sont pas rappelées.
- La cible de rappel locale est annulée ; Pour une cible de serveur active, une annulation de cible est envoyée.
- La file d'attente est commune au client : son effacement s'applique aux réponses préparées de toutes les procédures.
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.CancelTarget");
UO.CancelTarget();Paramètres et déroulement de l’exécution :
- Il n'y a pas d'arguments.
- La réponse en attente à self est supprimée.
UO.WaitTargetSelf();
UO.CancelTarget();Paramètres et déroulement de l’exécution :
- 1445/1690/0 est un exemple d'un nouveau point dans le monde.
- Les anciennes réponses sont supprimées avant de fixer un nouvel objectif.
return RunScenario();
object? RunScenario()
{
UO.CancelTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}Paramètres et déroulement de l’exécution :
- UO.Wait=1000 ms est une limitation de cet exemple.
- La file d'attente restante est vérifiée, pas la réussite de la compétence. S'il n'y a pas de réticule du serveur, la prochaine commande étrangère ne recevra pas l'ancienne réponse.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.CancelTarget. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetWaitTargetQueue:bridge.GetWaitTargetQueue(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelTarget:bridge.CancelTarget(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("Targeting cancelled").
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void CancelTarget()
{
var waitTargetQueue = bridge.GetWaitTargetQueue();
if (waitTargetQueue.Length > 0 || bridge.IsTargeting() != 0)
{
bridge.CancelTarget();
SystemMessage("Targeting cancelled");
}
else
SystemMessage("Error: no target to cancel");
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CancelWaitTarget();Efface les réponses préparées en forme de croix.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Les réponses déjà envoyées au serveur ne sont pas rappelées.
- Le curseur ouvert reste actif ; il peut être traité manuellement ultérieurement.
- La file d'attente est commune au client : son effacement s'applique aux réponses préparées de toutes les procédures.
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.CancelWaitTarget");
UO.CancelWaitTarget();Paramètres et déroulement de l’exécution :
- Il n'y a pas d'arguments.
- La réponse en attente à self est supprimée.
UO.WaitTargetSelf();
UO.CancelWaitTarget();Paramètres et déroulement de l’exécution :
- 1445/1690/0 est un exemple d'un nouveau point dans le monde.
- Les anciennes réponses sont supprimées avant de fixer un nouvel objectif.
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
return null;
}Paramètres et déroulement de l’exécution :
- UO.Wait=1000 ms est une limitation de cet exemple.
- La file d'attente restante est vérifiée, pas la réussite de la compétence. S'il n'y a pas de réticule du serveur, la prochaine commande étrangère ne recevra pas l'ancienne réponse.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
await Delay(1000);
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelWaitTarget:bridge.CancelWaitTarget().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "cancelwaittarget": bridge.CancelWaitTarget(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestObjectTarget();Ouvre un réticule local pour sélectionner manuellement un élément ou un personnage.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Le résultat précédent de ce runtime est réinitialisé. La commande revient immédiatement, sans attendre un clic.
- Le résultat se lit ClientTargetResponse après WaitForClientTargetResponse ou ClientTargetResponsePresent.
- L'arrêt d'une procédure en cours supprime la portée qui lui appartient dans la trame la plus proche. Si une autre requête a déjà remplacé le curseur, son annulation n'est pas affectée.
- Un réticule de l’interface client ne peut pas être utilisé simultanément pour deux sélections manuelles indépendantes. Ne démarrez pas une nouvelle demande tant que la précédente n'a pas été traitée.
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.ClientRequestObjectTarget");
UO.ClientRequestObjectTarget();Paramètres et déroulement de l’exécution :
- 5000 — cliquez sur le délai d'attente en millisecondes. La nouvelle requête réinitialise le résultat précédent.
- Un tableau de cinq champs indique l'objet sélectionné. result[0] est serial, pas type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- CancelTarget annule la sélection locale ; le rappel renvoie un résultat vide.
- ClientTargetResponsePresent donne 1, mais la longueur du tableau est 0. N'accédez pas au résultat[0] sans vérifier la longueur.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- La réponse contient cinq champs ; serial est dans le résultat[0]. Le délai d'attente et l'annulation ne produisent pas de serial utilisable.
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.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var result = UO.ClientTargetResponse();
if (((object? [])result).Length != 5 || Convert.ToInt32(result[0]) == 0)
return false;
UO.AddObject("selected_object", result[0]);
UO.Print($"Saved object: {UO.GetName(result[0])}");
return true;
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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(false).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "clientrequestobjecttarget": bridge.RequestClientTarget(false); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientRequestTileTarget();Ouvre un réticule local pour sélectionner manuellement un point/une tuile ou un objet.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Le résultat précédent de ce runtime est réinitialisé. La commande revient immédiatement, sans attendre un clic.
- Le résultat se lit ClientTargetResponse après WaitForClientTargetResponse ou ClientTargetResponsePresent.
- L'arrêt d'une procédure en cours supprime la portée qui lui appartient dans la trame la plus proche. Si une autre requête a déjà remplacé le curseur, son annulation n'est pas affectée.
- Un réticule de l’interface client ne peut pas être utilisé simultanément pour deux sélections manuelles indépendantes. Ne démarrez pas une nouvelle demande tant que la précédente n'a pas été traitée.
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.ClientRequestTileTarget");
UO.ClientRequestTileTarget();Paramètres et déroulement de l’exécution :
- résultat[1] - graphic, résultat[2]/[3]/[4] - X/Y/Z. La tuile monde serial a un résultat[0] égal à 0.
- Le type, les coordonnées et serial sont des champs distincts. Il n'y a pas d'index de couche statique dans ce tableau.
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Pour la cellule, X/Y/Z sont dans les champs 2/3/4. Chaînes de magasins mondiaux ; graphic et serial ne remplacent pas ici les coordonnées.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
var selection = (object? [])UO.ClientTargetResponse();
if (selection.Length != 5)
return false;
UO.SetGlobal("route.x", Convert.ToString(selection[2]));
UO.SetGlobal("route.y", Convert.ToString(selection[3]));
UO.SetGlobal("route.z", Convert.ToString(selection[4]));
return true;
return null;
}Paramètres et déroulement de l’exécution :
- CancelTarget remplace le curseur local. La présence d'un rappel après annulation ne signifie pas la présence d'une sélection réussie.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.ClientRequestTileTarget();
await WaitAsync(1000);
UO.CancelTarget();
if (UO.ClientTargetResponsePresent() != 0)
{
var result = (object? [])UO.ClientTargetResponse();
UO.Print($"Response after cancel: {result.Length} fields");
}
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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestClientTarget:bridge.RequestClientTarget(true).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "clientrequesttiletarget": bridge.RequestClientTarget(true); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponse();Copie le résultat du dernier ClientRequest* local dans un tableau.
Il n'y a pas de paramètres.
Tableau de cinq int : [0]=serial objet (0 près du sol/statique), [1]=graphic/type, [2]=X, [3]=Y, [4]=Z. Un tableau vide est renvoyé avant la sélection, après avoir été réinitialisé par une nouvelle requête, ou lors d'une annulation ou d'une sélection inappropriée. Manquant hue, carte, index de couche statique et attribut terrestre/statique. Ce n'est pas un objet avec des champs nommés.
- La lecture ne consomme pas le résultat : il peut être relu. Le nouveau ClientRequest* le remplace.
- Vérifiez toujours ArrayLength(result)=5 avant d'accéder aux index.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.ClientTargetResponse();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- 5000 — cliquez sur le délai d'attente en millisecondes. La nouvelle requête réinitialise le résultat précédent.
- Un tableau de cinq champs indique l'objet sélectionné. result[0] est serial, pas type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- résultat[1] - graphic, résultat[2]/[3]/[4] - X/Y/Z. La tuile monde serial a un résultat[0] égal à 0.
- Le type, les coordonnées et serial sont des champs distincts. Il n'y a pas d'index de couche statique dans ce tableau.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- CancelTarget annule la sélection locale ; le rappel renvoie un résultat vide.
- ClientTargetResponsePresent donne 1, mais la longueur du tableau est 0. N'accédez pas au résultat[0] sans vérifier la longueur.
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.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponse:bridge.ClientTargetResponse().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "clienttargetresponse":
return new InjectionValue(bridge.ClientTargetResponse().Select(value => new InjectionValue(value)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientTargetResponsePresent();Vérifie si une réponse a été reçue à la dernière demande de sélection locale.
Il n'y a pas de paramètres.
int 1 — le rappel a déjà répondu, y compris l'annulation ; 0 - la nouvelle sélection n'est pas encore terminée. La valeur 1 ne garantit pas l'existence de l'objet : lorsqu'elle est annulée, ClientTargetResponse renvoie un Array vide.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- N'indique pas la présence d'un viseur de serveur et ne décrit pas la file d'attente WaitTarget.
- La lecture du résultat ne réinitialise pas ce flag ; il est réinitialisé au prochain ClientRequest*.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.ClientTargetResponsePresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- CancelTarget annule la sélection locale ; le rappel renvoie un résultat vide.
- ClientTargetResponsePresent donne 1, mais la longueur du tableau est 0. N'accédez pas au résultat[0] sans vérifier la longueur.
UO.ClientRequestObjectTarget();
UO.CancelTarget();
if (Truth(UO.ClientTargetResponsePresent()))
{
var result = UO.ClientTargetResponse();
UO.Print("Fields: " + Convert.ToString(ArrayLength(result)));
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- L'état de préparation de la réponse et son contenu sont vérifiés. L'attribut 1 n'est pas l'objet serial.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestObjectTarget();
if (UO.WaitForClientTargetResponse(5000) == 0)
return false;
if (UO.ClientTargetResponsePresent() == 0)
return false;
var response = (object? [])UO.ClientTargetResponse();
return response.Length == 5 && Convert.ToInt32(response[0]) != 0;
return null;
}Paramètres et déroulement de l’exécution :
- L'interrogation est limitée à cinq secondes. S'il n'y a pas de réponse, le curseur est annulé ; Les champs X/Y/Z sont lus uniquement à partir de la réponse complète.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
}
async public Task<object?> RunScenarioAsync()
{
UO.ClientRequestTileTarget();
for (int attempt = 0; attempt < 50; attempt++)
{
if (UO.ClientTargetResponsePresent() != 0)
{
var response = (object? [])UO.ClientTargetResponse();
if (response.Length == 5)
UO.Print($"Selected tile: {response[2]},{response[3]},{response[4]}");
return null;
}
await WaitAsync(100);
}
UO.CancelTarget();
UO.Print("Selection timed out");
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: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientTargetResponsePresent:bridge.ClientTargetResponsePresent().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "clienttargetresponsepresent": return new InjectionValue(bridge.ClientTargetResponsePresent());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.IsWaitTargetActive();Vérifie si les réponses préparées restent dans la file d'attente cible.
Il n'y a pas de paramètres.
int 1 - il y a une cible différée non annulée d'un objet, d'une tuile ou une annulation de la prochaine vue ; 0 - la file d'attente est vide. Il ne s'agit pas d'avoir un curseur ouvert ; pour le curseur, utilisez TargetPresent/Targeting.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- La file d'attente entière du client est lue. Si plusieurs procédures s'exécutent simultanément, les réponses de chacune d'elles sont prises en compte.
- Zéro signifie simplement qu’aucune réponse n’est en attente. Il ne confirme pas l'utilisation réussie d'une compétence ou d'un sort sur le serveur.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.IsWaitTargetActive();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Après WaitTargetSelf et avant la cible du serveur 1 est attendue.
- CancelWaitTarget efface la file d'attente ; le test suivant donne 0.
UO.WaitTargetSelf();
UO.Print(Convert.ToString(UO.IsWaitTargetActive()));
UO.CancelWaitTarget();Paramètres et déroulement de l’exécution :
- Le contrôle n'a aucun paramètre. UO.Wait=50 ms, attentes maximales de 20.
- Si la réponse demeure, elle est annulée. Ajoutez une vérification du résultat de l'action du serveur séparément.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var attempts = 0;
while (Truth(UO.IsWaitTargetActive()) && Truth(attempts < 20))
{
await Delay(50);
attempts = attempts + 1;
}
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- La première ligne montre les réponses différées, la seconde l'état de la vue.
- Une file d'attente sans curseur et un curseur sans file d'attente sont possibles ; ces valeurs ne sont pas interchangeables.
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.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
UO.Print("Cursor: " + Convert.ToString(UO.TargetPresent()));
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: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.Waiting:Waiting().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "iswaittargetactive": return new InjectionValue(Waiting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTarget();Lit serial du dernier objet cible enregistré.
Il n'y a pas de paramètres.
int - serial/ID, pas type et non bool. 0 signifie l'absence d'un but-objet ; le sol et le statique ont également serial 0, bien que les coordonnées puissent être stockées. Tous les bits 32 sont conservés. Pour rechercher un ID non nul, utilisez != 0, pas > 0, ou == true.
- Aucun paramètre. N'allume pas le viseur, ne sélectionne pas de nouvelle cible, n'attaque pas et n'envoie pas de paquets. LastTarget est différent de LastAttack et LastStatus. Le choix normal self ne remplace pas la dernière cible ; un ClientMarkChar explicite peut le changer.
- À SetEntity l'Entity.X/Y connue est préservée ; pour un élément dans un conteneur, il peut s'agir des coordonnées du contenu. SetLand/SetStatic sauvegarde le monde X/Y du point sélectionné. Le mouvement/suppression ultérieur de l'objet ne modifie pas les coordonnées enregistrées. Pour la position actuelle, utilisez GetX/GetY(serial).
- Clear and World.Clear enregistrement clair, y compris lorsque les scripts sont enregistrés. Les serial inconnus dans un cadre explicite n'héritent pas des X/Y précédents : ils deviennent 0. Cela ne garantit pas que la cible existe sur le serveur.
- La lecture de serial et X/Y par des commandes distinctes n'est pas atomique. Pour l'objet cible LastTile stocke le réseau X/Y=65535 ; il ne s'agit pas d'une position d'objet enregistrée. Pour la terre/statique LastTile(1)/(2), lisez X/Y sélectionné. lasttarget sans parenthèses est une valeur active intégrée à moins qu'elle ne soit remplacée par une variable.
- World.Clear appelle ClearWorldState : réinitialise le rappel actif, la cible enregistrée et le paquet de relecture. Une réinitialisation normale enregistre l'historique. Le TargetLast interne envoie le paquet stocké uniquement à la cible du serveur actif ; sans historique ou pour un rappel local, il n'envoie rien et enregistre la cible. Un rappel client actif reçoit null une fois en guise d'annulation : ClientTargetResponsePresent devient 1 lorsque la réponse est vide. Une sélection terminée n'est plus notifiée.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.LastTarget();
UO.Print("LastTarget: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- la valeur est le seul résultat de la commande ; HEX affiche ID, Convert.ToString est la coordonnée. L'appel ne sélectionne rien.
var value = UO.LastTarget();
UO.Print("Saved value: " + Hex(value));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Paramètres et déroulement de l’exécution :
- id - enregistré serial. Exists vérifie la présence d'un objet avant GetX/GetY. Les coordonnées enregistrées et celles actuelles peuvent différer. Avec serial=0 l'exemple imprime le point sélectionné, mais 0 lui-même ne prouve pas que le point a été sélectionné.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- minimum/maximum spécifie la plage acceptable du résultat de l'assistant, pas les paramètres API. L'assistant est complètement défini ; -1 est son propre signe de sortie de portée. Pour ID, la vérification stocke tout serial non nul, y compris le bit le plus significatif, au lieu de la plage.
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 = ReadTargetValue();
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue()
{
var value = UO.LastTarget();
if (Truth(value == 0))
{
return -1;
}
return value;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: int / Integer.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "lasttarget": return new InjectionValue(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetX();Lit la coordonnée X enregistrée lorsque la dernière cible a été sélectionnée.
Il n'y a pas de paramètres.
int est la coordonnée enregistrée de X, pas un pixel de l'écran. Avant/après Effacer ou pour un objet inconnu - 0 ; la coordonnée réelle 0 est également acceptable. Ce n'est pas bool. Pour le sol/statique, cela fonctionne également avec LastTarget()=0.
- Aucun paramètre. N'allume pas le viseur, ne sélectionne pas de nouvelle cible, n'attaque pas et n'envoie pas de paquets. LastTarget est différent de LastAttack et LastStatus. Le choix normal self ne remplace pas la dernière cible ; un ClientMarkChar explicite peut le changer.
- À SetEntity l'Entity.X/Y connue est préservée ; pour un élément dans un conteneur, il peut s'agir des coordonnées du contenu. SetLand/SetStatic sauvegarde le monde X/Y du point sélectionné. Le mouvement/suppression ultérieur de l'objet ne modifie pas les coordonnées enregistrées. Pour la position actuelle, utilisez GetX/GetY(serial).
- Clear and World.Clear enregistrement clair, y compris lorsque les scripts sont enregistrés. Les serial inconnus dans un cadre explicite n'héritent pas des X/Y précédents : ils deviennent 0. Cela ne garantit pas que la cible existe sur le serveur.
- La lecture de serial et X/Y par des commandes distinctes n'est pas atomique. Pour l'objet cible LastTile stocke le réseau X/Y=65535 ; il ne s'agit pas d'une position d'objet enregistrée. Pour la terre/statique LastTile(1)/(2), lisez X/Y sélectionné. lasttarget sans parenthèses est une valeur active intégrée à moins qu'elle ne soit remplacée par une variable.
- World.Clear appelle ClearWorldState : réinitialise le rappel actif, la cible enregistrée et le paquet de relecture. Une réinitialisation normale enregistre l'historique. Le TargetLast interne envoie le paquet stocké uniquement à la cible du serveur actif ; sans historique ou pour un rappel local, il n'envoie rien et enregistre la cible. Un rappel client actif reçoit null une fois en guise d'annulation : ClientTargetResponsePresent devient 1 lorsque la réponse est vide. Une sélection terminée n'est plus notifiée.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.LastTargetX();
UO.Print("LastTargetX: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- la valeur est le seul résultat de la commande ; HEX affiche ID, Convert.ToString est la coordonnée. L'appel ne sélectionne rien.
var value = UO.LastTargetX();
UO.Print("Saved value: " + Convert.ToString(value));Paramètres et déroulement de l’exécution :
- id - enregistré serial. Exists vérifie la présence d'un objet avant GetX/GetY. Les coordonnées enregistrées et celles actuelles peuvent différer. Avec serial=0 l'exemple imprime le point sélectionné, mais 0 lui-même ne prouve pas que le point a été sélectionné.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- minimum/maximum spécifie la plage acceptable du résultat de l'assistant, pas les paramètres API. L'assistant est complètement défini ; -1 est son propre signe de sortie de portée. Pour ID, la vérification stocke tout serial non nul, y compris le bit le plus significatif, au lieu de la plage.
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 = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetX();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: int / Integer.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LastTargetX. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetX:bridge.GetX(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Code interne de l’implémentation ; ce n’est pas un script autonome.
public int LastTargetX() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetX : bridge.GetX(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.LastTargetY();Lit la coordonnée Y enregistrée lorsque la dernière cible a été sélectionnée.
Il n'y a pas de paramètres.
int est la coordonnée enregistrée de Y, pas un pixel de l'écran. Avant/après Effacer ou pour un objet inconnu - 0 ; la coordonnée réelle 0 est également acceptable. Ce n'est pas bool. Pour le sol/statique, cela fonctionne également avec LastTarget()=0.
- Aucun paramètre. N'allume pas le viseur, ne sélectionne pas de nouvelle cible, n'attaque pas et n'envoie pas de paquets. LastTarget est différent de LastAttack et LastStatus. Le choix normal self ne remplace pas la dernière cible ; un ClientMarkChar explicite peut le changer.
- À SetEntity l'Entity.X/Y connue est préservée ; pour un élément dans un conteneur, il peut s'agir des coordonnées du contenu. SetLand/SetStatic sauvegarde le monde X/Y du point sélectionné. Le mouvement/suppression ultérieur de l'objet ne modifie pas les coordonnées enregistrées. Pour la position actuelle, utilisez GetX/GetY(serial).
- Clear and World.Clear enregistrement clair, y compris lorsque les scripts sont enregistrés. Les serial inconnus dans un cadre explicite n'héritent pas des X/Y précédents : ils deviennent 0. Cela ne garantit pas que la cible existe sur le serveur.
- La lecture de serial et X/Y par des commandes distinctes n'est pas atomique. Pour l'objet cible LastTile stocke le réseau X/Y=65535 ; il ne s'agit pas d'une position d'objet enregistrée. Pour la terre/statique LastTile(1)/(2), lisez X/Y sélectionné. lasttarget sans parenthèses est une valeur active intégrée à moins qu'elle ne soit remplacée par une variable.
- World.Clear appelle ClearWorldState : réinitialise le rappel actif, la cible enregistrée et le paquet de relecture. Une réinitialisation normale enregistre l'historique. Le TargetLast interne envoie le paquet stocké uniquement à la cible du serveur actif ; sans historique ou pour un rappel local, il n'envoie rien et enregistre la cible. Un rappel client actif reçoit null une fois en guise d'annulation : ClientTargetResponsePresent devient 1 lorsque la réponse est vide. Une sélection terminée n'est plus notifiée.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.LastTargetY();
UO.Print("LastTargetY: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- la valeur est le seul résultat de la commande ; HEX affiche ID, Convert.ToString est la coordonnée. L'appel ne sélectionne rien.
var value = UO.LastTargetY();
UO.Print("Saved value: " + Convert.ToString(value));Paramètres et déroulement de l’exécution :
- id - enregistré serial. Exists vérifie la présence d'un objet avant GetX/GetY. Les coordonnées enregistrées et celles actuelles peuvent différer. Avec serial=0 l'exemple imprime le point sélectionné, mais 0 lui-même ne prouve pas que le point a été sélectionné.
return RunScenario();
object? RunScenario()
{
var id = UO.LastTarget();
var x = UO.LastTargetX();
var y = UO.LastTargetY();
UO.Print("Saved XY: " + Convert.ToString(x) + "," + Convert.ToString(y));
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print("Live XY: " + Convert.ToString(UO.GetX(id)) + "," + Convert.ToString(UO.GetY(id)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- minimum/maximum spécifie la plage acceptable du résultat de l'assistant, pas les paramètres API. L'assistant est complètement défini ; -1 est son propre signe de sortie de portée. Pour ID, la vérification stocke tout serial non nul, y compris le bit le plus significatif, au lieu de la plage.
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 = ReadTargetValue(0, 65535);
UO.Print("Checked value: " + Convert.ToString(value));
return null;
}
dynamic ReadTargetValue(dynamic minimum, dynamic maximum)
{
var value = UO.LastTargetY();
if (Truth(value < minimum) || Truth(value > maximum))
{
return -1;
}
return value;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: int / Integer.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LastTargetY. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetY:bridge.GetY(bridge.LastTarget). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTarget:bridge.LastTarget.
Code interne de l’implémentation ; ce n’est pas un script autonome.
public int LastTargetY() => bridge is ITargetSnapshotBridge snapshot ? snapshot.LastTargetY : bridge.GetY(bridge.LastTarget);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.LastTile();
int UO.LastTile(object? index);Lit la dernière cible de tuile enregistrée.
-
index- Facultatif int 0..3 : 0=graphic, 1=X, 2=Y, 3=Z. Hors de portée - 0. Sans index, la ligne de l'enregistrement entier est renvoyée.
Sans arguments string "graphic X Y Z" avec champs décimaux ; avec index - int d'un champ. L'entrée manquante/courte est complétée par des zéros.
- NormalizeLastTile complète les champs manquants à quatre. La ligne ne contient pas map/hue/serial. La valeur 0 peut signifier un vrai graphic/coordonnée ou aucun champ.
- La commande lit uniquement la cible de tuile enregistrée ; ne crée pas de cible et ne sélectionne pas de nouvelle cellule. WaitTargetTile("lasttile") utilise une vérification de présence d'enregistrement distincte.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.LastTile();
UO.Print("LastTile: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Lit la dernière cible de tuile enregistrée.
UO.Print(UO.LastTile());Paramètres et déroulement de l’exécution :
- NormalizeLastTile complète les champs manquants à quatre. La ligne ne contient pas map/hue/serial. La valeur 0 peut signifier un vrai graphic/coordonnée ou aucun champ.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.LastTile(1));
UO.Print(UO.LastTile(2));
UO.Print(UO.LastTile(3));
return null;
}Paramètres et déroulement de l’exécution :
- La commande lit uniquement la cible de tuile enregistrée ; ne crée pas de cible et ne sélectionne pas de nouvelle cellule. WaitTargetTile("lasttile") utilise une vérification de présence d'enregistrement distincte.
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 graphic = UO.LastTile(0);
var x = UO.LastTile(1);
var y = UO.LastTile(2);
var z = UO.LastTile(3);
UO.Print(Convert.ToString(graphic) + " " + Convert.ToString(x) + " " + Convert.ToString(y) + " " + Convert.ToString(z));
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: string / String.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge.LastTile()). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile().
Code interne de l’implémentation ; ce n’est pas un script autonome.
public string LastTile()
{
int[] tileInfo = NormalizeLastTile(bridge.LastTile());
return $"{tileInfo[0]} {tileInfo[1]} {tileInfo[2]} {tileInfo[3]}";
}Paramètres: index (Any)
Résultat: int / Integer.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.LastTile. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(index). -
InjectionScript.Runtime.InjectionApiUO.NormalizeLastTile:NormalizeLastTile(bridge?.LastTile()).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public int LastTile(InjectionValue index)
{
var i = NumberConversions.ToInt(index);
if (i < 0 || i > 3)
return 0;
return NormalizeLastTile(bridge?.LastTile())[i];
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Target();
void UO.Target(object? @object);
void UO.Target(object? targetKey, object? target);
void UO.Target(object? targetKey, object? target, object? targetType, object? @type, object? x, object? y, object? z);Annule/définit la cible attendue ou envoie un paquet cible explicite.
-
object— Un argument : serial/alias est placé via WaitTargetObject. Sans arguments - CancelTarget. -
targetKey— Dans les formes 2/7 des arguments int de la requête cible ID, généralement UO.TargetID(). Il est transmis directement dans le package et ne nécessite aucune pression sur une touche. -
target— Formulaire 2 : serial/alias ou "lasttile". Forme 7 : objet serial ; "ground" laisse serial=0. -
targetType- Formulaire 7 uniquement : cible de type de protocole, généralement objet 0, tuile 1. Réductible à byte. -
type- 7 forme uniquement : graphic et coordonnées mondiales pour la tuile/objet inconnu ; graphic/X/Y sont réduits à ushort, Z à sbyte. Pour un pont d'entité connu, les remplace par les champs d'entité réels. -
x- 7 forme uniquement : graphic et coordonnées mondiales pour la tuile/objet inconnu ; graphic/X/Y sont réduits à ushort, Z à sbyte. Pour un pont d'entité connu, les remplace par les champs d'entité réels. -
y- 7 forme uniquement : graphic et coordonnées mondiales pour la tuile/objet inconnu ; graphic/X/Y sont réduits à ushort, Z à sbyte. Pour un pont d'entité connu, les remplace par les champs d'entité réels. -
z- 7 forme uniquement : graphic et coordonnées mondiales pour la tuile/objet inconnu ; graphic/X/Y sont réduits à ushort, Z à sbyte. Pour un pont d'entité connu, les remplace par les champs d'entité réels.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Les formulaires sans argument suivent ExecuteLegacyManualAlias et contrôlent la file d'attente. Les formulaires 2/7 appellent Target directement et envoient Send_TargetObject, pas la file d'attente de la cible suivante.
- Sous la forme 2, « lasttile » prend le graphic/X/Y/Z de la tuile cible stockée ; son absence affiche un message. Un alias d'objet inconnu affiche également un message. La forme 7 avec targetType=0 tente de résoudre serial ; les autres types laissent serial=0.
- Bridge.Target ne vérifie pas le curseur/correspondance actif targetKey ; passer le courant ID. N'utilisez pas l'ancienne clé de la demande précédente. L'appel n'attend pas d'être accepté par le serveur.
- Les formes explicites des arguments 2/7 envoient le paquet directement : le serial négatif devient 0, targetKey est réduit à uint ; cette branche n'efface pas le curseur/la file d'attente locale ni ne met à jour TicksTarget. TargetToObject/TargetToTile utilisent un chemin différent pour la visée active du client.
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.Target");
UO.Target();Paramètres et déroulement de l’exécution :
- Annule/définit la cible attendue ou envoie un paquet cible explicite.
UO.Target("self");
UO.Print(UO.Waiting());
UO.Target();Paramètres et déroulement de l’exécution :
- Les formulaires sans argument suivent ExecuteLegacyManualAlias et contrôlent la file d'attente. Les formulaires 2/7 appellent Target directement et envoient Send_TargetObject, pas la file d'attente de la cible suivante.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.Target(UO.TargetID(), "self");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Bridge.Target ne vérifie pas le curseur/correspondance actif targetKey ; passer le courant ID. N'utilisez pas l'ancienne clé de la demande précédente. L'appel n'attend pas d'être accepté par le serveur.
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.TargetPresent()))
{
UO.Target(UO.TargetID(), "ground", 1, 0, UO.GetX(), UO.GetY(), UO.GetZ());
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;Paramètres: object (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(arguments[0].ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString(). -
InjectionScript.Runtime.InjectionApiUO.CancelTarget:CancelTarget().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "target":
if (arguments.Length > 0) WaitTargetObject(arguments[0].ToString());
else CancelTarget();
break;Paramètres: targetKey (Any), target (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetKey). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.Target: lasttile is unavailable"). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out int serial).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Target(InjectionValue targetKey, InjectionValue target)
{
int key = NumberConversions.ToInt(targetKey);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
if (selector.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
{
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length >= 4)
bridge.Target(key, 0, 1, tile[0], tile[1], tile[2], tile[3]);
else
SystemMessage("UO.Target: lasttile is unavailable");
return;
}
if (TryGetObject(target, out int serial))
bridge.Target(key, serial, 0, 0, 0, 0, 0);
else
SystemMessage($"UO.Target: invalid target '{selector}'");
}Paramètres: targetKey (Any), target (Any), targetType (Any), type (Any), x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Target. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(targetType). -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(target, out serial). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Target:bridge.Target ( NumberConversions.ToInt(targetKey), serial, targetTypeValue, ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z) ). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void Target
(
InjectionValue targetKey,
InjectionValue target,
InjectionValue targetType,
InjectionValue type,
InjectionValue x,
InjectionValue y,
InjectionValue z
)
{
int targetTypeValue = NumberConversions.ToInt(targetType);
string selector = target.Kind == InjectionValueKind.String ? target.String : string.Empty;
int serial = 0;
if (targetTypeValue == 0 && !selector.Equals("ground", StringComparison.OrdinalIgnoreCase))
TryGetObject(target, out serial);
bridge.Target
(
NumberConversions.ToInt(targetKey),
serial,
targetTypeValue,
ResolveType(type),
NumberConversions.ToInt(x),
NumberConversions.ToInt(y),
NumberConversions.ToInt(z)
);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetByResource(object? objID, object? resource);Recherche un élément à graphic, prépare une cible donnée et utilise l'élément trouvé.
-
objID— Objet série/ID : int, chaîne numérique/hexadécimale ou alias établi, par exemple "lasttarget". Ce n'est pas graphic/type. Vérifiez l’objet chargé avant d’agir. -
resource— Graphique/type d'élément à rechercher, ResolveType autorisé ; ce n'est pas le numéro du champ ressource de Pascal API.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Dans cette implémentation, FindType(ResolveType(Resource), -1, 0, -1, true) recherche un élément. Si trouvé != 0, d'abord bridge.WaitTargetObject(ObjID), puis bridge.UseObject(found).
- Rien n'a été trouvé - rien n'est installé ou utilisé. La commande n’envoie pas de paquet de ressource-cible distinct ; scope=0 sélectionne les éléments avec RootContainer=Player.Serial, y compris le contenu/l'équipement de l'inventaire ; recursive=true est passé à bridge, mais cette branche scope0 elle-même utilise RootContainer.
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.TargetByResource");
UO.TargetByResource("self", "0x0E21");Paramètres et déroulement de l’exécution :
- Recherche un élément à graphic, prépare une cible donnée et utilise l'élément trouvé.
UO.TargetByResource("self", "0x0E21");Paramètres et déroulement de l’exécution :
- Dans cette implémentation, FindType(ResolveType(Resource), -1, 0, -1, true) recherche un élément. Si trouvé != 0, d'abord bridge.WaitTargetObject(ObjID), puis bridge.UseObject(found).
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.TargetByResource("lasttarget", "0x0E21");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Rien n'a été trouvé - rien n'est installé ou utilisé. La commande n’envoie pas de paquet de ressource-cible distinct ; scope=0 sélectionne les éléments avec RootContainer=Player.Serial, y compris le contenu/l'équipement de l'inventaire ; recursive=true est passé à bridge, mais cette branche scope0 elle-même utilise RootContainer.
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.TargetByResource("self", "0x0E21");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: objID (Any), resource (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(arguments[1]). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseObject:bridge.UseObject(found).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targetbyresource":
{
int found = bridge.FindType(ResolveType(arguments[1]), -1, 0, -1, true);
if (found != 0) { bridge.WaitTargetObject(Arg(0)); bridge.UseObject(found); }
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetID();Lit l'ID du curseur cible actuel.
Il n'y a pas de paramètres.
int - 32 bit ID du curseur, pas serial du dernier objet. S'il n'y a pas de curseur, 0 est renvoyé. Si le bit de poids fort est activé, int est négatif ; Int2Hex sauvegarde ses bits. Le réel cursorID=0 et la portée locale peuvent également donner 0 : vérifiez TargetPresent pour l'activité. Dans ce client, la substitution spéciale non nulle du nul ID n'est pas utilisée.
- LastTarget/GetSerial("lasttarget") fait référence à l'objet sélectionné, TargetID fait référence à la requête cible. Ces valeurs ne peuvent pas être remplacées les unes par les autres.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.TargetID();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Il n'y a pas d'arguments.
- Int2Hex vous permet de voir tous les bits de ID, y compris le bit le plus significatif.
if (Truth(UO.TargetPresent()))
{
UO.Print(UO.Int2Hex(UO.TargetID()));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- curseur — ID de la vue, object — serial de l'objet.
- Dans TargetToObject, object est passé, pas le curseur.
return RunScenario();
object? RunScenario()
{
var cursor = UO.TargetID();
var targetSerial = UO.GetSerial("lasttarget");
UO.Print("Cursor: " + UO.Int2Hex(cursor));
UO.Print("Object: " + targetSerial);
return null;
}Paramètres et déroulement de l’exécution :
- 1000 — délai d'attente en millisecondes.
- Le signe d'occurrence est le résultat WaitForTarget ; Le signe du curseur n'est pas vérifié pour cela.
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.WaitForTarget(1000)))
{
var cursor = UO.TargetID();
UO.Print("Request: " + UO.Int2Hex(cursor));
}
else
{
UO.Print("No cursor arrived");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTargetCursorId:bridge.GetTargetCursorId().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targetid": return new InjectionValue(bridge.GetTargetCursorId());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.TargetPresent();Vérifie un curseur de sélection de cible actif dans le client.
Il n'y a pas de paramètres.
int 1 - TargetManager.IsTargeting installé ; 0 - aucun curseur actif. La cible de rappel locale est également prise en compte. Ce n'est pas serial ou l'état de file d'attente WaitTarget.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- Lit l'état une fois ; n'attend pas que le curseur apparaisse.
- Pour attendre un réticule du serveur après une action de jeu, utilisez WaitForTarget. Pour le résultat du local ClientRequest* - WaitForClientTargetResponse.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.TargetPresent();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Il n'y a pas d'arguments.
- 1 ou 0 s'affiche.
UO.Print(Convert.ToString(UO.TargetPresent()));Paramètres et déroulement de l’exécution :
- La condition est vérifiée par le curseur actif.
- CancelTarget dans ce client efface également les réponses préparées.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.TargetPresent()))
{
UO.CancelTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- UseSkill demande la compétence, WaitForTarget attend jusqu'à 3000 ms.
- TargetToObject répond uniquement à la cible du serveur actif ; S'il y a un délai d'attente, la branche n'est pas exécuté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.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("self");
}
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.IsTargeting:IsTargeting().
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targetpresent": return new InjectionValue(IsTargeting());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToObject(object? objID);Répond immédiatement à un objet serial cible de serveur déjà actif.
-
objID— Série/ID d'un élément ou d'un caractère, d'un nombre ou d'une chaîne hexadécimale/décimale, self/backpack/lasttarget/lastobject ou d'un nom enregistré AddObject. Ce n'est pas type. Avant d'agir sur un objet nommé, vérifiez Exists ; un alias non résolu donne serial 0.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Sans curseur de serveur actif, il ne fait rien et ne crée pas de réponse différée. Pour une préparation préliminaire, utilisez WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Les ClientRequest* locaux et autres vues de rappel ne sont pas traités par cette commande.
- Le serveur détermine si la cible est valide. Pour un serial saturé de mémoire, ID est envoyé avec zéro champ graphique/coordonnée.
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.TargetToObject");
UO.TargetToObject("self");Paramètres et déroulement de l’exécution :
- Les paramètres définissent le personnage lui-même.
- Rien n’est ajouté à la future file d’attente des portées.
if (Truth(UO.TargetPresent()))
{
UO.TargetToObject("self");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- 3000 — attente maximale en millisecondes ; L'action qui a demandé la vue doit être effectuée préalablement.
- La commande n'est appelée qu'après l'apparition du viseur ; l'action du jeu peut alors se terminer par une panne du serveur.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- CancelTarget ferme l'ancien viseur et efface la file d'attente.
- En l’absence d’un nouveau périmètre, le défi ne crée pas d’anticipation. La sortie de la file d'attente reste 0 à moins qu'un autre script ne la modifie.
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.CancelTarget();
UO.TargetToObject("self");
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: objID (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToObject:bridge.TargetToObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targettoobject": bridge.TargetToObject(Arg(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToTile(object? tile, object? x, object? y, object? z);Répond immédiatement à une cible de serveur déjà active avec les coordonnées des tuiles.
-
tile- Tuile Graphique/type, 0..65535, pas serial. Zéro indique une cible de coordonnées sans graphiques spécifiés. -
x— Coordonnée du monde X sur la carte actuelle, 0..65535. Il ne s'agit pas d'un pixel d'écran ou d'une coordonnée Gump. -
y— Coordonnée Y du monde sur la carte actuelle, 0..65535. -
z- Hauteur du point de jeu, pour une cible réseau, utilisez -128..127. Il ne s'agit pas d'un sol ou d'une couche d'équipement.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Sans curseur de serveur actif, il ne fait rien et ne crée pas de réponse différée. Pour une préparation préliminaire, utilisez WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Les ClientRequest* locaux et autres vues de rappel ne sont pas traités par cette commande.
- Une cible avec graphic=0 nécessite un réticule ; Le viseur d'objet n'accepte pas le sol.
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.TargetToTile");
UO.TargetToTile(0x0CCA, 1445, 1690, 0);Paramètres et déroulement de l’exécution :
- Les paramètres donnent un exemple de point réel : remplacez les coordonnées et graphic par les valeurs souhaitées.
- Rien n’est ajouté à la future file d’attente des portées.
if (Truth(UO.TargetPresent()))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- 3000 — attente maximale en millisecondes ; L'action qui a demandé la vue doit être effectuée préalablement.
- La commande n'est appelée qu'après l'apparition du viseur ; l'action du jeu peut alors se terminer par une panne du serveur.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- CancelTarget ferme l'ancien viseur et efface la file d'attente.
- En l’absence d’un nouveau périmètre, le défi ne crée pas d’anticipation. La sortie de la file d'attente reste 0 à moins qu'un autre script ne la modifie.
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.CancelTarget();
UO.TargetToTile(0x0CCA, 1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: tile (Any), x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targettotile":
bridge.TargetToTile(Arg(0), Arg(1), Arg(2), Arg(3)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TargetToXYZ(object? x, object? y, object? z);Répond immédiatement à une cible de serveur déjà active avec les coordonnées des tuiles.
-
x— Coordonnée du monde X sur la carte actuelle, 0..65535. Il ne s'agit pas d'un pixel d'écran ou d'une coordonnée Gump. -
y— Coordonnée Y du monde sur la carte actuelle, 0..65535. -
z- Hauteur du point de jeu, pour une cible réseau, utilisez -128..127. Il ne s'agit pas d'un sol ou d'une couche d'équipement.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- Sans curseur de serveur actif, il ne fait rien et ne crée pas de réponse différée. Pour une préparation préliminaire, utilisez WaitTargetObject/WaitTargetTile/WaitTargetXYZ.
- Les ClientRequest* locaux et autres vues de rappel ne sont pas traités par cette commande.
- Une cible avec graphic=0 nécessite un réticule ; Le viseur d'objet n'accepte pas le sol.
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.TargetToXYZ");
UO.TargetToXYZ(1445, 1690, 0);Paramètres et déroulement de l’exécution :
- Les paramètres donnent un exemple de point réel : remplacez les coordonnées et graphic par les valeurs souhaitées.
- Rien n’est ajouté à la future file d’attente des portées.
if (Truth(UO.TargetPresent()))
{
UO.TargetToXYZ(1445, 1690, 0);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- 3000 — attente maximale en millisecondes ; L'action qui a demandé la vue doit être effectuée préalablement.
- La commande n'est appelée qu'après l'apparition du viseur ; l'action du jeu peut alors se terminer par une panne du serveur.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToXYZ(1445, 1690, 0);
}
else
{
UO.Print("Target timeout");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- CancelTarget ferme l'ancien viseur et efface la file d'attente.
- En l’absence d’un nouveau périmètre, le défi ne crée pas d’anticipation. La sortie de la file d'attente reste 0 à moins qu'un autre script ne la modifie.
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.CancelTarget();
UO.TargetToXYZ(1445, 1690, 0);
UO.Print("Queued: " + Convert.ToString(UO.IsWaitTargetActive()));
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: x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TargetToTile:bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "targettoxyz":
bridge.TargetToTile(0, Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Targeting();Vérifie un curseur de sélection de cible actif dans le client.
Il n'y a pas de paramètres.
int 1 - TargetManager.IsTargeting installé ; 0 - aucun curseur actif. La cible de rappel locale est également prise en compte. Ce n'est pas serial ou l'état de file d'attente WaitTarget.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- Lit l'état une fois ; n'attend pas que le curseur apparaisse.
- Pour attendre un réticule du serveur après une action de jeu, utilisez WaitForTarget. Pour le résultat du local ClientRequest* - WaitForClientTargetResponse.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.Targeting();
UO.Print("Targeting: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Il n'y a pas d'arguments.
- 1 ou 0 s'affiche.
UO.Print(Convert.ToString(UO.Targeting()));Paramètres et déroulement de l’exécution :
- La condition est vérifiée par le curseur actif.
- CancelTarget dans ce client efface également les réponses préparées.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Targeting()))
{
UO.CancelTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- UseSkill demande la compétence, WaitForTarget attend jusqu'à 3000 ms.
- TargetToObject répond uniquement à la cible du serveur actif ; S'il y a un délai d'attente, la branche n'est pas exécuté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.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
if (Truth(UO.Targeting()))
{
UO.TargetToObject("self");
}
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: int / Integer.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.IsTargeting. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsTargeting:bridge.IsTargeting().
Code interne de l’implémentation ; ce n’est pas un script autonome.
public int IsTargeting() => bridge.IsTargeting();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksTarget();Lit le dernier horodatage de provisionnement de la cible via WaitTargetObject/WaitTargetTile et leurs shells appelants.
Il n'y a pas de paramètres.
int — la valeur de UO.Timer au moment de la préparation, en dixièmes de seconde à partir du début de l'exécution. Avant la première formation de ce type - 0. Il s'agit d'une marque, pas d'une durée d'attente, pas d'une milliseconde, ni d'un objectif ID.
- Immédiat TargetToObject/TargetToTile/TargetToXYZ ne prépare pas la file d'attente et ne met pas à jour cette marque.
- Certaines commandes de recherche transmettent la réponse directement via le pont ; TicksTarget n'est pas le temps universel de tout changement de cible.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.TicksTarget();
UO.Print("TicksTarget: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Il n’y a pas d’arguments ; WaitTargetSelf met à jour l'élévation.
- le timbre se mesure en dixièmes de seconde.
UO.WaitTargetSelf();
var stamp = UO.TicksTarget();
UO.Print(Convert.ToString(stamp));
UO.CancelWaitTarget();Paramètres et déroulement de l’exécution :
- UO.Wait=250 millisecondes.
- En raison de la nature discrète de la marque, le temps écoulé est généralement 2 ou 3 plutôt que 250.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.WaitTargetObject("self");
await Delay(250);
var elapsed = UO.Timer() - UO.TicksTarget();
UO.Print("Tenths: " + Convert.ToString(elapsed));
UO.CancelWaitTarget();
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));Paramètres et déroulement de l’exécution :
- selfId - int serial de votre personnage.
- La forme numérique met à jour la marque comme la forme chaîne ; TicksTarget n'a aucun paramètre.
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 selfId = UO.Hex2Int(UO.GetSerial("self"));
UO.WaitTargetObject(selfId);
UO.Print(Convert.ToString(UO.TicksTarget()));
UO.CancelWaitTarget();
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: int / Integer.
Pendant un appel:
Code interne de l’implémentation ; ce n’est pas un script autonome.
public int TicksTarget() => ticksTarget;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForClientTargetResponse(object? maxWaitTimeMS);Attend la fin de la sélection locale ClientRequestObjectTarget/ClientRequestTileTarget.
-
maxWaitTimeMS— Durée maximale en millisecondes. 0 et les valeurs négatives donnent un chèque, sans attendre indéfiniment.
int 1 - la réponse a déjà été reçue, y compris l'annulation ; 0 - le délai d'attente a expiré. Pour 1, vérifiez toujours la longueur de ClientTargetResponse. Avec 0, le curseur lui-même ne se ferme pas automatiquement.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- L'attente se produit dans le thread de script à des intervalles allant jusqu'à 25 ms et est interrompue par l'arrêt du script.
- Sans le précédent ClientRequest*, la nouvelle sélection ne démarre pas.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.WaitForClientTargetResponse(5000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- 5000 — cliquez sur le délai d'attente en millisecondes. La nouvelle requête réinitialise le résultat précédent.
- Un tableau de cinq champs indique l'objet sélectionné. result[0] est serial, pas type.
UO.ClientRequestObjectTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Serial: " + UO.Int2Hex(result[0]));
}
else
{
UO.Print("Selection cancelled");
}
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- résultat[1] - graphic, résultat[2]/[3]/[4] - X/Y/Z. La tuile monde serial a un résultat[0] égal à 0.
- Le type, les coordonnées et serial sont des champs distincts. Il n'y a pas d'index de couche statique dans ce tableau.
return RunScenario();
object? RunScenario()
{
UO.ClientRequestTileTarget();
if (Truth(UO.WaitForClientTargetResponse(5000)))
{
var result = UO.ClientTargetResponse();
if (Truth(ArrayLength(result) == 5))
{
UO.Print("Type: " + UO.Int2Hex(result[1]));
UO.Print(Convert.ToString(result[2]) + "," + Convert.ToString(result[3]) + "," + Convert.ToString(result[4]));
}
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Le délai d'attente est spécifié en millisecondes. Une attente réussie signifie une réponse dont le contenu doit être vérifié séparément.
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.ClientRequestTileTarget();
int ready = UO.WaitForClientTargetResponse(3000);
if (ready == 0)
{
UO.CancelTarget();
UO.Print("Selection timed out");
return false;
}
var response = (object? [])UO.ClientTargetResponse();
if (response.Length != 5)
return false;
UO.Print($"Tile coordinates: {response[2]}, {response[3]}, {response[4]}");
return true;
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: maxWaitTimeMS (Any)
Résultat: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitForClientTargetResponse:bridge.WaitForClientTargetResponse(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "waitforclienttargetresponse": return new InjectionValue(bridge.WaitForClientTargetResponse(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.WaitForTarget(object? maxWaitTimeMS);Attend que le curseur cible actif apparaisse dans le délai imparti.
-
maxWaitTimeMS— Attente maximale en millisecondes. Les valeurs nulles et négatives donnent un contrôle immédiat ; Ce n'est pas une attente interminable.
int 1 — le curseur était actif lors de la vérification ; 0 - timeout sans curseur. La cible de rappel locale satisfait également à ce test. Ceci ne constitue pas une confirmation de l'utilisation du WaitTarget préparé : la réponse automatique a peut-être déjà utilisé le curseur avant la vérification.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- La vérification est effectuée avec des pauses allant jusqu'à 25 ms dans le fil de script et peut être interrompue en l'arrêtant.
- La méthode elle-même ne crée pas de réticule ni ne sélectionne de cible.
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.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.WaitForTarget(3000);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- MaxWaitTimeMS=3000, alors self est sélectionné.
- WaitTargetSelf n'est pas prédéfini : cet exemple répond explicitement.
UO.UseSkill("Anatomy");
if (Truth(UO.WaitForTarget(3000)))
{
UO.TargetToObject("self");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- MaxWaitTimeMS=0.
- prêt - 1 ou 0 ; Il n'y a pas de longue pause.
return RunScenario();
object? RunScenario()
{
var ready = UO.WaitForTarget(0);
UO.Print(Convert.ToString(ready));
return null;
}Paramètres et déroulement de l’exécution :
- 500 - une demi-seconde.
- L'absence de vue peut signifier que l'action a échoué ou est en cours de traitement automatique : consultez le journal de jeu.
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.WaitForTarget(500) == 0))
{
UO.CancelWaitTarget();
UO.Print("Cursor did not arrive");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: maxWaitTimeMS (Any)
Résultat: dynamic / Any.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitUntilTargeting:bridge.WaitUntilTargeting(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "waitfortarget": return new InjectionValue(bridge.WaitUntilTargeting(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTarget(object? target);
void UO.WaitTarget(object? target, object? @type);
void UO.WaitTarget(object? target, object? @type, object? color);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest);
void UO.WaitTarget(object? target, object? @type, object? color, object? distance, object? notoriety, object? nearest, object? maxZ);Place serial dans la file d'attente de la prochaine demande de cible, ou sélectionne une cible à l'aide de filtres.
-
target— Positif autorisé serial/alias est défini directement, les autres paramètres sont ignorés. 0 ou -1 active la recherche ; une autre sentinelle numérique annule la cible suivante. -
type- Facultatif graphic/type ou masque de type ; -1 sans limitation. Les types nommés sont résolus par ResolveType/ParseTypeMask. -
color- Optionnel hue : -1 ou 0xFFFF sans limitation. -
distance— Distance maximale facultative dans les cellules ; la valeur par défaut est GetFindDistance. L'analyse ResolveCompactDistance autorise des valeurs spéciales en fonction du paramètre de recherche. -
notoriety- Notoriété numéro/masque optionnelle. Un masque non vide restreint les candidats mobiles ; sans cela, les mobiles et les articles world sont pris en compte. -
nearest- Optionnel bool, par défaut true : trie par distance, puis serial. -
maxZ— Abs maximum facultatif (Z-selfZ), par défaut GetFindVertical.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Lors de la recherche, exclut self, serial=0, la liste d'ignorés standard et les filtres sélectionnés nommés type ; les doublons sont supprimés. Le positif direct serial ne passe pas ces filtres.
- La recherche lit uniquement les objets chargés. Aucune correspondance/sentinelle invalide - message et CancelNextTarget. Une sélection réussie appelle WaitTargetObject et met à jour TicksTarget. WaitTarget lui-même n'utilise pas l'élément, n'ouvre pas la cible et n'attend pas que le serveur le traite.
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.WaitTarget");
UO.WaitTarget("self");Paramètres et déroulement de l’exécution :
- Place serial dans la file d'attente de la prochaine demande de cible, ou sélectionne une cible à l'aide de filtres.
UO.WaitTarget("self");Paramètres et déroulement de l’exécution :
- Lors de la recherche, exclut self, serial=0, la liste d'ignorés standard et les filtres sélectionnés nommés type ; les doublons sont supprimés. Le positif direct serial ne passe pas ces filtres.
return RunScenario();
object? RunScenario()
{
UO.WaitTarget(0, -1, -1, 10, 3, true, 20);
return null;
}Paramètres et déroulement de l’exécution :
- La recherche lit uniquement les objets chargés. Aucune correspondance/sentinelle invalide - message et CancelNextTarget. Une sélection réussie appelle WaitTargetObject et met à jour TicksTarget. WaitTarget lui-même n'utilise pas l'élément, n'ouvre pas la cible et n'attend pas que le serveur le traite.
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.WaitTarget("lasttarget");
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: target (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Paramètres: target (Any), type (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Paramètres: target (Any), type (Any), color (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Paramètres: target (Any), type (Any), color (Any), distance (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Paramètres: target (Any), type (Any), color (Any), distance (Any), notoriety (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest) — UO.WaitTarget(Any,Any,Any,Any,Any,Any)
Paramètres: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}
UO.WaitTarget(target, type, color, distance, notoriety, nearest, maxZ) — UO.WaitTarget(Any,Any,Any,Any,Any,Any,Any)
Paramètres: target (Any), type (Any), color (Any), distance (Any), notoriety (Any), nearest (Any), maxZ (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.Register [WaitTarget]. -
InjectionScript.Runtime.InjectionApiUO.CompactWaitTarget:CompactWaitTarget(values).
L’appel exécute le delegate du gestionnaire enregistré. La méthode d’enregistrement crée ce delegate lors de la construction de l’API.
Code interne de l’implémentation ; ce n’est pas un script autonome.
values =>
{
CompactWaitTarget(values);
return InjectionValue.Unit;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetGround(object? @type);
void UO.WaitTargetGround(object? @type, object? color);Recherche un élément à graphic/hue et le place dans la file d'attente de la cible suivante.
-
type- Graphique/type int, chaîne hexadécimale ou ensemble nommé type. Ce n'est pas un article serial. -
color- Facultatif int hue ; par défaut -1 - n'importe quelle couleur.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Portée : ground/sélecteur de conteneur 1 sans recherche récursive. Bridge.FindType renvoie le serial trouvé ; lorsque serial>0 bridge.WaitTargetObject est appelé. Ces méthodes ne mettent pas directement à jour le runtime TicksTarget.
- Aucun élément - message et CancelNextTarget. La recherche peut modifier le général FindItem/FoundItems ; La commande n'utilise pas l'élément trouvé et n'attend pas le curseur.
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.WaitTargetGround");
UO.WaitTargetGround("0x0E21");Paramètres et déroulement de l’exécution :
- Recherche un élément à graphic/hue et le place dans la file d'attente de la cible suivante.
UO.WaitTargetGround("0x0E21");Paramètres et déroulement de l’exécution :
- Portée : ground/sélecteur de conteneur 1 sans recherche récursive. Bridge.FindType renvoie le serial trouvé ; lorsque serial>0 bridge.WaitTargetObject est appelé. Ces méthodes ne mettent pas directement à jour le runtime TicksTarget.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetGround("0x0E21", -1);
return null;
}Paramètres et déroulement de l’exécution :
- Aucun élément - message et CancelNextTarget. La recherche peut modifier le général FindItem/FoundItems ; La commande n'utilise pas l'élément trouvé et n'attend pas le curseur.
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.WaitTargetGround("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: type (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround:WaitTargetGround(type, new InjectionValue(-1)).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetGround(InjectionValue type) => WaitTargetGround(type, new InjectionValue(-1));Paramètres: type (Any), color (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetGround. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("No ground item found. Next target request will be canceled"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(item).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetGround(InjectionValue type, InjectionValue color)
{
int item = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (item <= 0)
{
SystemMessage("No ground item found. Next target request will be canceled");
bridge.CancelNextTarget();
}
else
bridge.WaitTargetObject(item);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetLast();Prépare une réponse à la prochaine cible du serveur via l'alias lasttarget.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- L'équipe prépare uniquement une réponse : elle n'utilise pas l'objet, la compétence ou le sort lui-même. La cible serveur suivante reçoit la cible préparée lors du traitement de la trame client.
- Les appels consécutifs forment une file d'attente client commune. Les objets et les coordonnées cibles sont traités un par un ; les fenêtres de sélection locale ClientRequest*/Info/container ne le consomment pas.
- CancelWaitTarget efface la file d'attente. TerminateAll le nettoie entièrement ; l'arrêt d'une procédure en cours d'exécution invalide également ses propres réponses en attente. L'exécution d'une courte procédure n'annule normalement pas la cible préparée.
- L'envoi d'une réponse ne garantit pas une action sur le serveur : il vérifie la portée, l'accessibilité de l'objet, la visibilité et les règles d'action. Pour contrôler, utilisez le résultat du jeu et le journal.
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.WaitTargetLast");
UO.WaitTargetLast();Paramètres et déroulement de l’exécution :
- Il n’y a pas d’arguments ; lasttarget est utilisé.
- La commande n'ouvre pas le viseur et n'effectue pas l'action elle-même.
UO.WaitTargetLast();Paramètres et déroulement de l’exécution :
- lasttarget doit se résoudre sur le personnage chargé pour cette compétence.
- La vérification Exists élimine l'objet inconnu ; le choix du type d'objet et la validité des compétences restent des conditions du script.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.CancelWaitTarget();
UO.WaitTargetLast();
UO.UseSkill("Anatomy");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- IsWaitTargetActive vérifie la file d'attente de réponses.
- CancelWaitTarget annule la préparation sans fermer le réticule personnalisé déjà ouvert.
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.WaitTargetLast();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.WaitTargetLast. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("lasttarget").
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetLast() => WaitTargetObject("lasttarget");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObject(object? objID);
void UO.WaitTargetObject(object? id1, object? id2);Prépare une ou deux réponses serial consécutives aux vues du serveur.
-
objID / id1 / id2— Série/ID d'un élément ou d'un caractère, d'un nombre ou d'une chaîne hexadécimale/décimale, self/backpack/lasttarget/lastobject ou d'un nom enregistré AddObject. Ce n'est pas type. Avant d'agir sur un objet nommé, cochez Exists ; un alias non résolu donne serial 0. Un seul argument spécifie un objectif. Les formes numériques et chaîne mettent à jour TicksTarget de la même manière. -
objID— Série/ID d'un élément ou d'un caractère, d'un nombre ou d'une chaîne hexadécimale/décimale, self/backpack/lasttarget/lastobject ou d'un nom enregistré AddObject. Ce n'est pas type. Avant d'agir sur un objet nommé, cochez Exists ; un alias non résolu donne serial 0. Un seul argument spécifie un objectif. Les formes numériques et chaîne mettent à jour TicksTarget de la même manière. -
id1— Série/ID d'un élément ou d'un caractère, d'un nombre ou d'une chaîne hexadécimale/décimale, self/backpack/lasttarget/lastobject ou d'un nom enregistré AddObject. Ce n'est pas type. Avant d'agir sur un objet nommé, vérifiez Exists ; un alias non résolu donne serial 0. Le premier objectif du formulaire est constitué de deux lignes. -
id2— Série/ID d'un élément ou d'un caractère, d'un nombre ou d'une chaîne hexadécimale/décimale, self/backpack/lasttarget/lastobject ou d'un nom enregistré AddObject. Ce n'est pas type. Avant d'agir sur un objet nommé, vérifiez Exists ; un alias non résolu donne serial 0. Le deuxième objectif du formulaire est composé de deux lignes ; s’applique au périmètre individuel suivant.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- L'équipe prépare uniquement une réponse : elle n'utilise pas l'objet, la compétence ou le sort lui-même. La cible serveur suivante reçoit la cible préparée lors du traitement de la trame client.
- Les appels consécutifs forment une file d'attente client commune. Les objets et les coordonnées cibles sont traités un par un ; les fenêtres de sélection locale ClientRequest*/Info/container ne le consomment pas.
- CancelWaitTarget efface la file d'attente. TerminateAll le nettoie entièrement ; l'arrêt d'une procédure en cours d'exécution invalide également ses propres réponses en attente. L'exécution d'une courte procédure n'annule normalement pas la cible préparée.
- L'envoi d'une réponse ne garantit pas une action sur le serveur : il vérifie la portée, l'accessibilité de l'objet, la visibilité et les règles d'action. Pour contrôler, utilisez le résultat du jeu et le journal.
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.WaitTargetObject");
UO.WaitTargetObject("self");Paramètres et déroulement de l’exécution :
- id="self" - serial de votre personnage. CancelWaitTarget supprime les réponses précédemment préparées.
- UseSkill demande une compétence ; son viseur de serveur reçoit une cible préparée.
UO.CancelWaitTarget();
UO.WaitTargetObject("self");
UO.UseSkill("Anatomy");Paramètres et déroulement de l’exécution :
- objectId - exemple serial : remplacez par le vôtre. Ce n'est pas graphic/type.
- Ici, la cible vient d'être préparée. L'étape suivante du script doit appeler une action qui attend réellement la cible.
return RunScenario();
object? RunScenario()
{
var objectId = 0x40001234;
if (Truth(UO.Exists(objectId)))
{
UO.WaitTargetObject(objectId);
UO.Print("Object target prepared");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- la source et la destination sont des noms prédéfinis AddObject. GetSerial renvoie les lignes correspondant au formulaire id1/id2.
- Le premier serveur utilise le premier, le second - le second. Convient uniquement pour l'action avec deux viseurs séquentiels ; Éliminez une deuxième cible inutile avant d’entreprendre une autre action.
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 first = UO.GetSerial("source");
var second = UO.GetSerial("destination");
if (Truth(UO.Exists(first)) && Truth(UO.Exists(second)))
{
UO.CancelWaitTarget();
UO.WaitTargetObject(first, second);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: objID (Any/String)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "waittargetobject": WaitTargetObject(Arg(0)); return InjectionValue.Unit;Paramètres: objID (Any/String)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetObject(string id) => WaitTargetObject(GetObject(id));Paramètres: id1 (String), id2 (String)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject(GetObject(id1), GetObject(id2)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id1).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetObject(string id1, string id2) => WaitTargetObject(GetObject(id1), GetObject(id2));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetObjectType(object? id, object? @type);
void UO.WaitTargetObjectType(object? id, object? @type, object? color);Prépare deux cibles séquentielles : un objet donné et un objet trouvé au sol.
-
id— Objet série/ID : int, chaîne numérique/hexadécimale ou alias établi, par exemple "lasttarget". Ce n'est pas graphic/type. Vérifiez l’objet chargé avant d’agir. -
type— Graphique/type du deuxième élément, int/hex/type nommé. -
color- Optionnel hue du deuxième sujet ; -1 n'importe lequel par défaut.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Autorise d'abord serial à GetObject ; le second recherche FindType(type,color,1,-1,false). Si les deux sont positifs, appelle bridge.WaitTargetObject(premier,second). L'ordre des cibles est maintenu.
- Si au moins un objectif est manquant/non positif - message et CancelNextTarget, les deux objectifs ne sont pas définis. La branche ne met pas à jour TicksTarget et n'utilise pas l'élément.
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.WaitTargetObjectType");
UO.WaitTargetObjectType("self", "0x0E21");Paramètres et déroulement de l’exécution :
- Prépare deux cibles séquentielles : un objet donné et un objet trouvé au sol.
UO.WaitTargetObjectType("self", "0x0E21");Paramètres et déroulement de l’exécution :
- Autorise d'abord serial à GetObject ; le second recherche FindType(type,color,1,-1,false). Si les deux sont positifs, appelle bridge.WaitTargetObject(premier,second). L'ordre des cibles est maintenu.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetObjectType("lasttarget", "0x0E21", -1);
return null;
}Paramètres et déroulement de l’exécution :
- Si au moins un objectif est manquant/non positif - message et CancelNextTarget, les deux objectifs ne sont pas définis. La branche ne met pas à jour TicksTarget et n'utilise pas l'élément.
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.WaitTargetObjectType("self", "0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: id (Any), type (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType:WaitTargetObjectType(id, type, new InjectionValue(-1)).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetObjectType(InjectionValue id, InjectionValue type)
=> WaitTargetObjectType(id, type, new InjectionValue(-1));Paramètres: id (Any), type (Any), color (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetObjectType. -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.FindType:bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetObjectType: object or ground item not found"). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetObject:bridge.WaitTargetObject(first, second).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetObjectType(InjectionValue id, InjectionValue type, InjectionValue color)
{
int first = GetObject(id);
int second = bridge.FindType(ResolveType(type), NumberConversions.ToInt(color), 1, -1, false);
if (first <= 0 || second <= 0)
{
SystemMessage("UO.WaitTargetObjectType: object or ground item not found");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetObject(first, second);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetSelf();Prépare une réponse à la prochaine cible du serveur via l'alias self.
Il n'y a pas de paramètres.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- L'équipe prépare uniquement une réponse : elle n'utilise pas l'objet, la compétence ou le sort lui-même. La cible serveur suivante reçoit la cible préparée lors du traitement de la trame client.
- Les appels consécutifs forment une file d'attente client commune. Les objets et les coordonnées cibles sont traités un par un ; les fenêtres de sélection locale ClientRequest*/Info/container ne le consomment pas.
- CancelWaitTarget efface la file d'attente. TerminateAll le nettoie entièrement ; l'arrêt d'une procédure en cours d'exécution invalide également ses propres réponses en attente. L'exécution d'une courte procédure n'annule normalement pas la cible préparée.
- L'envoi d'une réponse ne garantit pas une action sur le serveur : il vérifie la portée, l'accessibilité de l'objet, la visibilité et les règles d'action. Pour contrôler, utilisez le résultat du jeu et le journal.
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.WaitTargetSelf");
UO.WaitTargetSelf();Paramètres et déroulement de l’exécution :
- Il n’y a pas d’arguments ; self est utilisé.
- La commande n'ouvre pas le viseur et n'effectue pas l'action elle-même.
UO.WaitTargetSelf();Paramètres et déroulement de l’exécution :
- self doit se résoudre sur le personnage chargé pour cette compétence.
- La vérification Exists élimine l'objet inconnu ; le choix du type d'objet et la validité des compétences restent des conditions du script.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Exists("self")))
{
UO.CancelWaitTarget();
UO.WaitTargetSelf();
UO.UseSkill("Anatomy");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- IsWaitTargetActive vérifie la file d'attente de réponses.
- CancelWaitTarget annule la préparation sans fermer le réticule personnalisé déjà ouvert.
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.WaitTargetSelf();
if (Truth(UO.IsWaitTargetActive()))
{
UO.CancelWaitTarget();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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.WaitTargetSelf. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetObject:WaitTargetObject("self").
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetSelf() => WaitTargetObject("self");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetTile(object? selector);
void UO.WaitTargetTile(object? x, object? y, object? z);
void UO.WaitTargetTile(object? @type, object? x, object? y, object? z);Prépare une cible de coordonnées avec des graphiques de tuiles facultatifs.
-
selector- Uniquement sous forme d'un seul argument : la chaîne "lasttile" répétant le point stocké. -
type- Tuile Graphique/type, 0..65535, pas serial. Zéro indique une cible de coordonnées sans graphiques spécifiés. Présenté sous forme de quatre arguments ; sous la forme x/y/z est égal à 0. -
x— Coordonnée du monde X sur la carte actuelle, 0..65535. Il ne s'agit pas d'un pixel d'écran ou d'une coordonnée Gump. -
y— Coordonnée Y du monde sur la carte actuelle, 0..65535. -
z- Hauteur du point de jeu, pour une cible réseau, utilisez -128..127. Il ne s'agit pas d'un sol ou d'une couche d'équipement.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- L'équipe prépare uniquement une réponse : elle n'utilise pas l'objet, la compétence ou le sort lui-même. La cible serveur suivante reçoit la cible préparée lors du traitement de la trame client.
- Les appels consécutifs forment une file d'attente client commune. Les objets et les coordonnées cibles sont traités un par un ; les fenêtres de sélection locale ClientRequest*/Info/container ne le consomment pas.
- CancelWaitTarget efface la file d'attente. TerminateAll le nettoie entièrement ; l'arrêt d'une procédure en cours d'exécution invalide également ses propres réponses en attente. L'exécution d'une courte procédure n'annule normalement pas la cible préparée.
- L'envoi d'une réponse ne garantit pas une action sur le serveur : il vérifie la portée, l'accessibilité de l'objet, la visibilité et les règles d'action. Pour contrôler, utilisez le résultat du jeu et le journal.
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.WaitTargetTile");
UO.WaitTargetTile("lasttile");Paramètres et déroulement de l’exécution :
- x=1445, y=1690, z=0 ; le type manquant est 0.
- C'est le but du monde. La commande ne déplace pas le personnage et ne place pas l'objet dans le gump.
UO.CancelWaitTarget();
UO.WaitTargetTile(1445, 1690, 0);Paramètres et déroulement de l’exécution :
- type=0x0CCA — exemples de graphiques ; utiliser le type réel de la tuile sélectionnée. x/y/z est sa position mondiale.
- Le graphique et les coordonnées doivent décrire l'objet cartographique souhaité ; le serveur vérifie la validité de la cible.
return RunScenario();
object? RunScenario()
{
UO.CancelWaitTarget();
UO.WaitTargetTile(0x0CCA, 1445, 1690, 0);
return null;
}Paramètres et déroulement de l’exécution :
- le sélecteur autorise uniquement la chaîne lasttile, non sensible à la casse. Une autre chaîne ou un autre nombre sous forme d'un seul argument provoque une erreur.
- Les derniers champs de la tuile en TargetManager sont utilisés. Avant le premier choix, ils peuvent être nuls : sélectionnez d'abord le point souhaité dans le jeu. Trois ou quatre arguments vous permettent de le définir explicitement.
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.WaitTargetTile("lasttile");
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: selector (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LastTile:bridge.LastTile(). -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled."). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CancelNextTarget:bridge.CancelNextTarget(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetTile(InjectionValue selector)
{
string name = selector.Kind == InjectionValueKind.String
? (selector.String ?? string.Empty).Trim()
: string.Empty;
if (!name.Equals("lasttile", StringComparison.OrdinalIgnoreCase))
throw new NativeSubrutineException("UO.WaitTargetTile(one argument) accepts only 'lasttile'.");
int[] tile = bridge.LastTile() ?? Array.Empty<int>();
if (tile.Length < 4)
{
SystemMessage("UO.WaitTargetTile: lasttile is unavailable; next target request canceled.");
bridge.CancelNextTarget();
return;
}
bridge.WaitTargetTile(tile[0], tile[1], tile[2], tile[3]);
ticksTarget = Timer();
}Paramètres: x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), x, y, z).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetTile(InjectionValue x, InjectionValue y, InjectionValue z)
=> WaitTargetTile(new InjectionValue(0), x, y, z);Paramètres: type (Any), x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.WaitTargetTile:bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(x). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetTile(InjectionValue type, InjectionValue x, InjectionValue y, InjectionValue z)
{
bridge.WaitTargetTile(ResolveType(type), NumberConversions.ToInt(x), NumberConversions.ToInt(y), NumberConversions.ToInt(z));
ticksTarget = Timer();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetType(object? @type);
void UO.WaitTargetType(object? @type, object? color);Recherche un élément à graphic/hue et le place dans la file d'attente de la cible suivante.
-
type- Graphique/type int, chaîne hexadécimale ou ensemble nommé type. Ce n'est pas un article serial. -
color- Facultatif int hue ; par défaut -1 - n'importe quelle couleur.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Portée : Sac à dos avec recherche récursive. Bridge.FindType renvoie le serial trouvé ; lorsque serial>0 bridge.WaitTargetObject est appelé. Ces méthodes ne mettent pas directement à jour le runtime TicksTarget.
- Aucun élément - message et CancelNextTarget. La recherche peut modifier le général FindItem/FoundItems ; La commande n'utilise pas l'élément trouvé et n'attend pas le curseur.
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.WaitTargetType");
UO.WaitTargetType("0x0E21");Paramètres et déroulement de l’exécution :
- Recherche un élément à graphic/hue et le place dans la file d'attente de la cible suivante.
UO.WaitTargetType("0x0E21");Paramètres et déroulement de l’exécution :
- Portée : Sac à dos avec recherche récursive. Bridge.FindType renvoie le serial trouvé ; lorsque serial>0 bridge.WaitTargetObject est appelé. Ces méthodes ne mettent pas directement à jour le runtime TicksTarget.
return RunScenario();
object? RunScenario()
{
UO.WaitTargetType("0x0E21", -1);
return null;
}Paramètres et déroulement de l’exécution :
- Aucun élément - message et CancelNextTarget. La recherche peut modifier le général FindItem/FoundItems ; La commande n'utilise pas l'élément trouvé et n'attend pas le curseur.
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.WaitTargetType("0x0E21", -1);
UO.Print(UO.Waiting());
UO.CancelWaitTarget();
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: type (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), -1). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetType(InjectionValue type) => WaitTargetType(ResolveType(type), -1);Paramètres: type (Any), color (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.WaitTargetType. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetType:WaitTargetType(ResolveType(type), NumberConversions.ToInt(color)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Code interne de l’implémentation ; ce n’est pas un script autonome.
public void WaitTargetType(InjectionValue type, InjectionValue color)
=> WaitTargetType(ResolveType(type), NumberConversions.ToInt(color));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.WaitTargetXYZ(object? x, object? y, object? z);Prépare une cible de coordonnées avec graphic=0 pour la prochaine vue du serveur.
-
x— Coordonnée du monde X sur la carte actuelle, 0..65535. Il ne s'agit pas d'un pixel d'écran ou d'une coordonnée Gump. -
y— Coordonnée Y du monde sur la carte actuelle, 0..65535. -
z- Hauteur du point de jeu, pour une cible réseau, utilisez -128..127. Il ne s'agit pas d'un sol ou d'une couche d'équipement.
void - aucune valeur de retour. Appelez sur une ligne séparée ; ne pas utiliser comme true/false, serial ou type. Métadonnées object ? pour les formulaires compatibles ne change pas le résultat réel void.
- L'équipe prépare uniquement une réponse : elle n'utilise pas l'objet, la compétence ou le sort lui-même. La cible serveur suivante reçoit la cible préparée lors du traitement de la trame client.
- Les appels consécutifs forment une file d'attente client commune. Les objets et les coordonnées cibles sont traités un par un ; les fenêtres de sélection locale ClientRequest*/Info/container ne le consomment pas.
- CancelWaitTarget efface la file d'attente. TerminateAll le nettoie entièrement ; l'arrêt d'une procédure en cours d'exécution invalide également ses propres réponses en attente. L'exécution d'une courte procédure n'annule normalement pas la cible préparée.
- L'envoi d'une réponse ne garantit pas une action sur le serveur : il vérifie la portée, l'accessibilité de l'objet, la visibilité et les règles d'action. Pour contrôler, utilisez le résultat du jeu et le journal.
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.WaitTargetXYZ");
UO.WaitTargetXYZ(1445, 1690, 0);Paramètres et déroulement de l’exécution :
- X=1445, Y=1690, Z=0. Le graphique est égal à 0.
- La réponse sera envoyée lorsque la vue des coordonnées du serveur apparaîtra.
UO.WaitTargetXYZ(1445, 1690, 0);Paramètres et déroulement de l’exécution :
- X/Y/Z sont lus à partir de votre propre personnage.
- Il s'agit d'une cible de coordonnées, pas d'une cible object sur le serial du personnage. Pour ce dernier, vous avez besoin de WaitTargetSelf.
return RunScenario();
object? RunScenario()
{
var x = UO.GetX();
var y = UO.GetY();
var z = UO.GetZ();
UO.WaitTargetXYZ(x, y, z);
return null;
}Paramètres et déroulement de l’exécution :
- Remplacez les coordonnées par le point d'extraction. UseType recherche une pelle type=0x0F39 de n'importe quelle couleur dans le sac à dos.
- Si aucun outil adapté n'est disponible, retirez la préparation via CancelWaitTarget avant de passer à une autre action.
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.CancelWaitTarget();
UO.WaitTargetXYZ(1445, 1690, 0);
UO.UseType(0x0F39, -1);
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: x (Any), y (Any), z (Any)
Résultat: void / Unit.
Pendant un appel:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.WaitTargetTile:WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]).
Code interne de l’implémentation ; ce n’est pas un script autonome.
case "waittargetxyz": WaitTargetTile(new InjectionValue(0), arguments[0], arguments[1], arguments[2]); return InjectionValue.Unit;ClassicUO — Bad Newbie & C# Scripts IDE