FR UO Topic skills - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Compétences

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

Appliquer les compétences, lire les valeurs et gérer les verrous de compétences. Le nom de la compétence et la disponibilité de l'action dépendent des données supportées par le client/serveur.

Compétences : noms et numéros exacts

Ouvrir le catalogue complet et les exemples

Sections

Sujet Commandes et explications
UseSkill UO.UseSkill
Skill Value UO.GetSkillValue · UO.SkillVal
Skill Current Value UO.GetSkillCurrentValue
Skill Cap UO.GetSkillCap
Skill Locks UO.GetSkillLockState · UO.SetSkillLockState
Tracking UO.Track
Snooping UO.Snoop
Stealth UO.StealthCnt · UO.UseSkill

Toutes les commandes du thème

Compétences

UO.UseSkill · UO.GetSkillCap · UO.GetSkillCurrentValue · UO.GetSkillValue · UO.GetSkillLockState · UO.SetSkillLockState · UO.SkillLockState · UO.SkillVal · UO.Track · UO.Snoop · UO.StealthCnt · UO.TicksSkill

Exemples sur le sujet

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

UO.UseSkill

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

if (!(Truth(UO.Connected())) || Truth(UO.Dead()) || Truth(UO.Hidden()))
{
    return null;
}
if (!(Truth(UO.UseSkill("Hiding"))))
{
    UO.Print("Hiding request rejected");
    return null;
}
await Delay(1000);
if (Truth(UO.Hidden()))
{
    UO.Print("Character is hidden");
}
else
{
    UO.Print("Not hidden yet; check the game journal");
}

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;

UO.GetSkillValue

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

var selector = "Mining";
var value = UO.GetSkillValue(selector);
UO.Print(Convert.ToString(value));

Référence complète des commandes


UO.GetSkillCap

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

Signatures C#

double UO.GetSkillCap(object? skillName);

Lit la limite de compétences reçue du serveur.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.

Valeur de retour

double (Double) - points de compétence par incréments de 0,1, par exemple 95,1, pas 951. Le champ CapFixed est divisé par 10 directement en Double. 0 signifie zéro compétence ou aucun personnage/compétence. Le résultat n'est pas bool. Les legs SkillVal/BaseVal ont une échelle différente – ne mélangez pas ces familles.

Comportement

  • La lecture s'effectue via Invoke sur le thread de jeu en fonction des données déjà reçues ; les paquets réseau ne sont pas envoyés. La compétence n'est ni utilisée ni entraînée. Deux requêtes - deux instantanés distincts.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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.GetSkillCap("Mining");
UO.Print("GetSkillCap: " + Convert.ToString(result));

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var value = UO.GetSkillCap(selector);
UO.Print(Convert.ToString(value));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillCap("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(value));
        }
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.

Compétences

Compétences

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()
    {
        var before = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillCap(selector);
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

Implémentation de la commande

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

UO.GetSkillCap(skillName) — UO.GetSkillCap(Any)

Paramètres: skillName (Any)

Résultat: double / Decimal.

Pendant un appel:

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

case "getskillcap": return new InjectionValue(bridge.GetSkillValue(Text(0), false, true));

UO.GetSkillCurrentValue

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

Signatures C#

double UO.GetSkillCurrentValue(object? skillName);

Lit la valeur effective de la compétence avec les modificateurs.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.

Valeur de retour

double (Double) - points de compétence par incréments de 0,1, par exemple 95,1, pas 951. Le champ ValueFixed est divisé par 10 directement en Double. 0 signifie zéro compétence ou aucun personnage/compétence. Le résultat n'est pas bool. Les legs SkillVal/BaseVal ont une échelle différente – ne mélangez pas ces familles.

Comportement

  • La lecture s'effectue via Invoke sur le thread de jeu en fonction des données déjà reçues ; les paquets réseau ne sont pas envoyés. La compétence n'est ni utilisée ni entraînée. Deux requêtes - deux instantanés distincts.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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.GetSkillCurrentValue("Mining");
UO.Print("GetSkillCurrentValue: " + Convert.ToString(result));

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var value = UO.GetSkillCurrentValue(selector);
UO.Print(Convert.ToString(value));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillCurrentValue("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(value));
        }
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.

Compétences

Compétences

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()
    {
        var before = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillCurrentValue(selector);
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

Implémentation de la commande

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

UO.GetSkillCurrentValue(skillName) — UO.GetSkillCurrentValue(Any)

Paramètres: skillName (Any)

Résultat: double / Decimal.

Pendant un appel:

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

case "getskillcurrentvalue": return new InjectionValue(bridge.GetSkillValue(Text(0), true, false));

UO.GetSkillLockState

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

Signatures C#

int UO.GetSkillLockState(object? skillName);

Lit le mode de changement de compétence locale.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.

Valeur de retour

int : 0 - augmentation, 1 - diminution, 2 - blocage. Il s'agit d'un code de mode, pas true/false. Pour une compétence inconnue ou un personnage manquant, −1 est renvoyé.

Comportement

  • La lecture s'effectue via Invoke sur le thread de jeu en fonction des données déjà reçues ; les paquets réseau ne sont pas envoyés. La compétence n'est ni utilisée ni entraînée. Deux requêtes - deux instantanés distincts.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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.GetSkillLockState("Mining");
UO.Print("GetSkillLockState: " + Convert.ToString(result));

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var mode = UO.GetSkillLockState(selector);
UO.Print(Convert.ToString(mode));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    var mode = UO.GetSkillLockState("Mining");
    if (Truth(mode == 2))
    {
        UO.Print("Locked");
    }
    else
    {
        if (Truth(mode == -1))
        {
            UO.Print("Unknown selector");
        }
        else
        {
            UO.Print("Mode: " + Convert.ToString(mode));
        }
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.

Compétences

Compétences

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()
    {
        var before = ReadMode("Mining");
        await Delay(1000);
        var after = ReadMode("Mining");
        UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        return null;
    }

    dynamic ReadMode(dynamic selector)
    {
        return UO.GetSkillLockState(selector);
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

Implémentation de la commande

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

UO.GetSkillLockState(skillName) — UO.GetSkillLockState(Any)

Paramètres: skillName (Any)

Résultat: int / Integer.

Pendant un appel:

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

case "getskilllockstate": return new InjectionValue(bridge.GetSkillLockState(Text(0)));

UO.GetSkillValue

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

Signatures C#

double UO.GetSkillValue(object? skillName);

Lit la valeur de base de la compétence sans modificateurs.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.

Valeur de retour

double (Double) - points de compétence par incréments de 0,1, par exemple 95,1, pas 951. Le champ BaseFixed est divisé par 10 directement en Double. 0 signifie zéro compétence ou aucun personnage/compétence. Le résultat n'est pas bool. Les legs SkillVal/BaseVal ont une échelle différente – ne mélangez pas ces familles.

Comportement

  • La lecture s'effectue via Invoke sur le thread de jeu en fonction des données déjà reçues ; les paquets réseau ne sont pas envoyés. La compétence n'est ni utilisée ni entraînée. Deux requêtes - deux instantanés distincts.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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.GetSkillValue("Mining");
UO.Print("GetSkillValue: " + Convert.ToString(result));

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var value = UO.GetSkillValue(selector);
UO.Print(Convert.ToString(value));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.GetSkillLockState("Mining") >= 0))
    {
        var value = UO.GetSkillValue("Mining");
        if (Truth(value >= 95.1))
        {
            UO.Print("Value >= 95.1: " + Convert.ToString(value));
        }
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.

Compétences

Compétences

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()
    {
        var before = ReadValue("Animal_Lore");
        await Delay(1000);
        var after = ReadValue("Animal Lore");
        UO.Print(Convert.ToString(after - before));
        return null;
    }

    dynamic ReadValue(dynamic selector)
    {
        return UO.GetSkillValue(selector);
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
}

Implémentation de la commande

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

UO.GetSkillValue(skillName) — UO.GetSkillValue(Any)

Paramètres: skillName (Any)

Résultat: double / Decimal.

Pendant un appel:

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

case "getskillvalue": return new InjectionValue(bridge.GetSkillValue(Text(0), false, false));

UO.SetSkillLockState

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

Signatures C#

void UO.SetSkillLockState(object? skillName, object? skillState);

Demande un changement en mode compétence.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • skillState — Mode obligatoire : 0 — augmentation, 1 — diminution, 2 — blocage. Ce sont trois codes, pas bool ; true/false ne remplacent pas les noms de tous les modes.

Valeur de retour

void - aucune valeur de retour. Le résultat ne peut pas être utilisé comme un succès/échec ou comparé à true. La lecture suivante montre le modèle local, pas la confirmation du serveur.

Comportement

  • Une requête valide envoie un paquet via GameActions et change immédiatement de mode local. Le serveur peut appliquer ses propres restrictions ; Les augmentations de compétences ou de statistiques ne sont pas garanties. Les compétences inconnues, les index/modes invalides et les caractères manquants sont ignorés sans package.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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

UO.Print("Calling UO.SetSkillLockState");
UO.SetSkillLockState("Mining", 2);

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var mode = 2;
UO.SetSkillLockState(selector, mode);
UO.Print(Convert.ToString(UO.GetSkillLockState(selector)));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    var selector = "Mining";
    var before = UO.GetSkillLockState(selector);
    if (Truth(before >= 0) && Truth(before <= 2))
    {
        UO.SetSkillLockState(selector, 0);
        UO.Print(Convert.ToString(UO.GetSkillLockState(selector)));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.

Compétences

Compétences

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()
    {
        ApplyMode("Mining", 2);
        return null;
    }

    void ApplyMode(dynamic selector, dynamic mode)
    {
        if (Truth(mode < 0) || Truth(mode > 2))
        {
            return;
        }

        if (Truth(UO.GetSkillLockState(selector) < 0))
        {
            return;
        }

        UO.SetSkillLockState(selector, mode);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

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

UO.SetSkillLockState(skillName, skillState) — UO.SetSkillLockState(Any,Any)

Paramètres: skillName (Any), skillState (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "setskilllockstate":

                case "skilllockstate": bridge.SetSkillLockState(Text(0), Arg(1)); return InjectionValue.Unit;

UO.SkillLockState

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

Signatures C#

void UO.SkillLockState(object? skillName, object? skillState);

Demande un changement en mode compétence.

Paramètres

  • skillName - Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • skillState — Mode obligatoire : 0 — augmentation, 1 — diminution, 2 — blocage. Ce sont trois codes, pas bool ; true/false ne remplacent pas les noms de tous les modes.

Valeur de retour

void - aucune valeur de retour. Le résultat ne peut pas être utilisé comme un succès/échec ou comparé à true. La lecture suivante montre le modèle local, pas la confirmation du serveur.

Comportement

  • Une requête valide envoie un paquet via GameActions et change immédiatement de mode local. Le serveur peut appliquer ses propres restrictions ; Les augmentations de compétences ou de statistiques ne sont pas garanties. Les compétences inconnues, les index/modes invalides et les caractères manquants sont ignorés sans package.
  • Compétence requise : un nom issu des données client, tel que "Mining" ou "Animal Lore", ou un index décimal de 0 à Skills.Length−1, un nombre ou une chaîne. La casse du nom n'a pas d'importance, les espaces de fin sont supprimés, _ est remplacé par un espace. L'index n'est pas le ID du sujet ou l'index de 1. Une chaîne numérique signifie toujours un index.
  • ExecuteClientApiCompatibility sélectionne la branche de commande. Text lit le sélecteur de compétences, Arg lit les nombres numériques et les modes. Un argument non convertible peut faire échouer l'appel avec une erreur de conversion.

Scripts C# autonomes

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

Exemple simple

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

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

UO.Print("Calling UO.SkillLockState");
UO.SkillLockState("Mining", 2);

1. Lecture et sortie - script direct

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

  • Dans l'exemple, le sélecteur et, lors de l'enregistrement, le mode sont explicitement spécifiés. La première ligne sélectionne une compétence par nom ou une caractéristique par numéro. Print affiche uniquement le résultat.
var selector = "Mining";
var mode = 2;
UO.SkillLockState(selector, mode);
UO.Print(Convert.ToString(UO.GetSkillLockState(selector)));

2. Appliquer en condition ou en comparaison - fonction script

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

  • Le seuil 95.1 et les modes 0/1/2 sont donnés à titre d'exemple. −1 est vérifié avant de changer de mode. Après l'écriture, seule la copie locale est lue ; il n'attend pas la réponse du serveur.
return  RunScenario();
 object? RunScenario()
{
    var selector = "Mining";
    var before = UO.GetSkillLockState(selector);
    if (Truth(before >= 0) && Truth(before <= 2))
    {
        UO.SkillLockState(selector, 0);
        UO.Print(Convert.ToString(UO.GetSkillLockState(selector)));
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Tout le code d’assistance est donné ci-dessous Main. Le sélecteur sélectionne une compétence/caractéristique, le mode définit le mode d'enregistrement. ReadValue/ReadMode renvoie le numéro d'origine ; ApplyMode vérifie les arguments, exécute l'action et ne renvoie aucune valeur. UO.Wait(1000) dans l'exemple de lecture sépare deux images.
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()
    {
        ApplyMode("Mining", 2);
        return null;
    }

    void ApplyMode(dynamic selector, dynamic mode)
    {
        if (Truth(mode < 0) || Truth(mode > 2))
        {
            return;
        }

        if (Truth(UO.GetSkillLockState(selector) < 0))
        {
            return;
        }

        UO.SkillLockState(selector, mode);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

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

UO.SkillLockState(skillName, skillState) — UO.SkillLockState(Any,Any)

Paramètres: skillName (Any), skillState (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "setskilllockstate":

                case "skilllockstate": bridge.SetSkillLockState(Text(0), Arg(1)); return InjectionValue.Unit;

UO.SkillVal

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

Signatures C#

int UO.SkillVal(object? skillName);
int UO.SkillVal(object? skill, object? variant);

Lit la valeur héritée d'une compétence ou son mode/croissance.

Paramètres

  • variant - Facultatif int : 0 - valeur effective (par défaut), 1 - valeur de base, 2 - augmentation de la valeur de base à partir de la première lecture de cette compétence en exécution, 3 - mode blocage.
  • skillName — Nom issu du dictionnaire d'exécution skillNameToSkillId, par exemple "Mining". La casse n'est pas importante, mais les espaces ne sont pas coupés et _ n'est pas remplacé. Le texte numérique de cette fonction héritée n'est pas un index ; un nom inconnu affiche un message et donne 0.
  • skill — Nom issu du dictionnaire d'exécution skillNameToSkillId, par exemple "Mining". La casse n'est pas importante, mais les espaces ne sont pas coupés et _ n'est pas remplacé. Le texte numérique de cette fonction héritée n'est pas un index ; un nom inconnu affiche un message et donne 0.

Valeur de retour

int : options 0/1/2 - dixièmes de points de compétence (951 = 95.1) ; option 3 - mode 0/1/2 ou -1 s'il n'y a pas de joueur/compétence. Le nom/variante inconnu donne 0. L'option 2 peut être négative si la base est inférieure au temps d'exécution de base enregistré, y compris en l'absence de Player et base=0. Ce n'est pas bool.

Comportement

  • Avant de choisir la variante, SkillBaseVal est pris et, si la compétence est lue pour la première fois, la ligne de base est enregistrée. Par conséquent, même la lecture de variant=0/1/3 définit le point de départ de la croissance future variant=2.
  • Une variante incorrecte affiche un message et donne 0, mais la ligne de base a peut-être déjà été créée. Les valeurs GetSkillValue/GetSkillCurrentValue sont mesurées par des lunettes double et ont une échelle différente.

Scripts C# autonomes

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

Exemple simple

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

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.SkillVal("Mining");
UO.Print("SkillVal: " + Convert.ToString(result));

1. Appel direct - script direct

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

  • Lit la valeur héritée d'une compétence ou son mode/croissance.
UO.Print(UO.SkillVal("Mining"));
UO.Print(UO.SkillVal("Mining", 1));

2. Option explicite - fonction de script

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

  • Avant de choisir la variante, SkillBaseVal est pris et, si la compétence est lue pour la première fois, la ligne de base est enregistrée. Par conséquent, même la lecture de variant=0/1/3 définit le point de départ de la croissance future variant=2.
return  RunScenario();
 object? RunScenario()
{
    var baseline = UO.SkillVal("Mining", 2);
    UO.Wait(1000);
    UO.Print(UO.SkillVal("Mining", 2) - baseline);
    return null;
}

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

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

  • Une variante incorrecte affiche un message et donne 0, mais la ligne de base a peut-être déjà été créée. Les valeurs GetSkillValue/GetSkillCurrentValue sont mesurées par des lunettes double et ont une échelle différente.

Compétences

Compétences

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 lockMode = UO.SkillVal("Mining", 3);
        if (Truth(lockMode == 2))
        {
            UO.Print("Skill locked");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

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

UO.SkillVal(skillName) — UO.SkillVal(String)

Paramètres: skillName (String)

Résultat: int / Integer.

Pendant un appel:

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

public int SkillVal(string skillName) => SkillVal(skillName, 0);

UO.SkillVal(skill, variant) — UO.SkillVal(Any,Any)

Paramètres: skill (Any), variant (Any)

Résultat: int / Integer.

Pendant un appel:

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 => new InjectionValue(SkillVal(values[0].ToString(), NumberConversions.ToInt(values[1])))

UO.Snoop

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

Signatures C#

void UO.Snoop();
void UO.Snoop(object? container);

Utilise un conteneur/objet, demandant généralement qu'il soit ouvert.

Paramètres

  • container - Facultatif serial/alias. La valeur par défaut est bridge.LastTarget. La commande ne vérifie pas IsContainer ni l'affiliation.

Valeur de retour

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

Comportement

  • ExecuteLegacyManualAlias appelle bridge.UseObject(Arg(0,bridge.LastTarget)). Il s'agit d'une requête de double-clic classique et non d'un algorithme client distinct pour la compétence Snooping.
  • Bridge envoie la requête sur le flux du jeu. Les règles du serveur s'appliquent ; Il n’y a pas d’attente de confirmation intégrée.

Scripts C# autonomes

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

Exemple simple

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

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

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

1. Appel direct - script direct

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

  • Utilise un conteneur/objet, demandant généralement qu'il soit ouvert.
UO.Snoop();

2. Option explicite - fonction de script

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

  • ExecuteLegacyManualAlias appelle bridge.UseObject(Arg(0,bridge.LastTarget)). Il s'agit d'une requête de double-clic classique et non d'un algorithme client distinct pour la compétence Snooping.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsContainer("lasttarget")))
    {
        UO.Snoop("lasttarget");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • Bridge envoie la requête sur le flux du jeu. Les règles du serveur s'appliquent ; Il n’y a pas d’attente de confirmation intégré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()
    {
        var id = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.Snoop(id);
            UO.Wait(500);
            UO.Print(UO.GetContent(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;
}

Implémentation de la commande

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

UO.Snoop() — UO.Snoop()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

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

case "snoop": bridge.UseObject(Arg(0, bridge.LastTarget)); break;

UO.Snoop(container) — UO.Snoop(Any)

Paramètres: container (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "snoop": bridge.UseObject(Arg(0, bridge.LastTarget)); break;

UO.StealthCnt

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

Signatures C#

int UO.StealthCnt();

Lit le compteur de décalage de furtivité local du personnage.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int est la somme accumulée max(abs(deltaX),abs(deltaY)) entre les appels à IsHidden. Il ne s'agit pas d'un nombre garanti d'étapes furtives du serveur ni de la limite restante.

Comportement

  • Sans Player ou lorsque Player n'est pas masqué, réinitialise count=0 et enregistre le X/Y actuel (ou -1). En mode furtif, compare avec les X/Y enregistrés précédemment, ajoute le décalage et met à jour les coordonnées.
  • Le compteur change au fur et à mesure de sa lecture. Les allers-retours entre les appels peuvent être ignorés ; changer Z sans X/Y n’augmente pas le compteur.

Scripts C# autonomes

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

Exemple simple

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

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.StealthCnt();
UO.Print("StealthCnt: " + Convert.ToString(result));

1. Appel direct - script direct

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

  • Lit le compteur de décalage de furtivité local du personnage.
UO.Print(UO.StealthCnt());

2. Option explicite - fonction de script

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

  • Sans Player ou lorsque Player n'est pas masqué, réinitialise count=0 et enregistre le X/Y actuel (ou -1). En mode furtif, compare avec les X/Y enregistrés précédemment, ajoute le décalage et met à jour les coordonnées.
return  RunScenario();
 object? RunScenario()
{
    var before = UO.StealthCnt();
    UO.Wait(500);
    UO.Print(UO.StealthCnt() - before);
    return null;
}

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

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

  • Le compteur change au fur et à mesure de sa lecture. Les allers-retours entre les appels peuvent être ignorés ; changer Z sans X/Y n’augmente pas le compteur.
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.Hidden()))
        {
            UO.Print(UO.StealthCnt());
        }
        else
        {
            UO.Print(UO.StealthCnt());
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

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

UO.StealthCnt() — UO.StealthCnt()

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 StealthCnt() => bridge.StealthCnt();

UO.TicksSkill

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

Signatures C#

int UO.TicksSkill();

Lit la marque enregistrée TicksSkill.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int — marque UO.Timer en dixièmes de seconde à partir du début de l'exécution. 0 - la marque n'a pas encore été posée ou l'événement s'est produit dans le premier dixième de seconde ; ce ne sont pas des millisecondes ou l’heure du calendrier.

Comportement

  • Renvoie le champ ticksSkill. Il est mis à jour par le UseSkill/UseSkillAtTarget accepté avec succès ; il ne s'agit pas d'une observation automatique de toutes les activités manuelles/serveurs. La commande elle-même ne modifie pas la marque.
  • UO.Timer() - la marque calcule l'âge en dixièmes de seconde. Les marques ne sont pas comparées entre les différentes exécutions.

Scripts C# autonomes

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

Exemple simple

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

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.TicksSkill();
UO.Print("TicksSkill: " + Convert.ToString(result));

1. Appel direct - script direct

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

  • Lit la marque enregistrée TicksSkill.
var stamp = UO.TicksSkill();
UO.Print(stamp);

2. Option explicite - fonction de script

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

  • Renvoie le champ ticksSkill. Il est mis à jour par le UseSkill/UseSkillAtTarget accepté avec succès ; il ne s'agit pas d'une observation automatique de toutes les activités manuelles/serveurs. La commande elle-même ne modifie pas la marque.
return  RunScenario();
 object? RunScenario()
{
    var stamp = UO.TicksSkill();
    var ageTenths = UO.Timer() - stamp;
    UO.Print(ageTenths);
    return null;
}

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

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

  • UO.Timer() - la marque calcule l'âge en dixièmes de seconde. Les marques ne sont pas comparées entre les différentes exécutions.

Compétences

Compétences

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 before = UO.TicksSkill();
        UO.Wait(250);
        var after = UO.TicksSkill();
        UO.Print(before = after);
        return null;
    }
}

Implémentation de la commande

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

UO.TicksSkill() — UO.TicksSkill()

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 TicksSkill() => ticksSkill;

UO.Track

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

Signatures C#

void UO.Track();
void UO.Track(object? flag);
void UO.Track(object? flagRaw, object? x, object? y);

Crée ou supprime une flèche locale vers les coordonnées. Aide à marquer le lieu de retour. Ne déclenche pas la compétence Pistage, ne recherche pas de créatures et ne déplace pas le personnage.

Paramètres

  • flag — 0 — supprime la flèche locale ; tout autre tout - spectacle. UO.Track() et UO.Track(1) le placent dans le X/Y actuel du personnage. UO.Track(1, x, y) le place au point indiqué ; UO.Track(0, x, y) ignore les coordonnées. La forme à deux paramètres n'est pas incluse dans le API enregistré.
  • flagRaw — 0 — supprime la flèche locale ; tout autre tout - spectacle. UO.Track() et UO.Track(1) le placent dans le X/Y actuel du personnage. UO.Track(1, x, y) le place au point indiqué ; UO.Track(0, x, y) ignore les coordonnées. La forme à deux paramètres n'est pas incluse dans le API enregistré.
  • x — Coordonnées des cellules sur la carte actuelle, pas les pixels de la fenêtre. Le Z et le numéro de carte ne sont pas acceptés. Sélectionnez un point existant sur votre carte ; l'équipe ne vérifie pas le terrain, ne trace pas d'itinéraire ou ne suit pas une cible en mouvement.
  • y — Coordonnées des cellules sur la carte actuelle, pas les pixels de la fenêtre. Le Z et le numéro de carte ne sont pas acceptés. Sélectionnez un point existant sur votre carte ; l'équipe ne vérifie pas le terrain, ne trace pas d'itinéraire ou ne suit pas une cible en mouvement.

Valeur de retour

void - aucune valeur ; la commande ne renvoie pas de succès de déplacement ou bool. Seul le jeton local est modifié.

Comportement

  • Les flèches du serveur et locales sont stockées séparément. Track(0) ne supprime pas la flèche du serveur. Sans graphique, le marqueur est enregistré et apparaît à l'ouverture de la fenêtre. La fermeture de la fenêtre de jeu ne supprime pas les marqueurs ; rompre la connexion les efface. Le serveur peut déplacer ou supprimer sa flèche. Les coordonnées ne prouvent pas que l'objectif est réalisable.
  • Coordonnées des cellules sur la carte actuelle, pas les pixels de la fenêtre. Le Z et le numéro de carte ne sont pas acceptés. Sélectionnez un point existant sur votre carte ; l'équipe ne vérifie pas le terrain, ne trace pas d'itinéraire ou ne suit pas une cible en mouvement.
  • 0 — supprime la flèche locale ; tout autre tout - spectacle. UO.Track() et UO.Track(1) le placent dans le X/Y actuel du personnage. UO.Track(1, x, y) le place au point indiqué ; UO.Track(0, x, y) ignore les coordonnées. La forme à deux paramètres n'est pas incluse dans le API enregistré.

Scripts C# autonomes

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

Exemple simple

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

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

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

1. Application directe - script direct

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

  • UO.Track() mémorise le point actuel : après avoir quitté, la flèche pointe vers l'arrière. Le point n'est pas mis à jour automatiquement suivant le caractère.
UO.Track();

2. Condition de jeu - fonction scénario

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

  • Affiche une flèche locale vers 1450,1690 sur la carte actuelle. Si vous êtes déjà dans un carré, Track(0) le supprime. Remplacez vos coordonnées.
return  RunScenario();
 object? RunScenario()
{
    var x = 1450;
    var y = 1690;
    UO.Track(1, x, y);
    if (Truth(UO.GetDistance(x, y) <= 1))
    {
        UO.Track(0);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

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

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

  • La fonction MarkIfDistant utilise les mêmes X/Y et distance : si la cible est plus loin que deux cellules, elle met une flèche, sinon elle la supprime. La fonction entière est présentée ci-dessous ; il n’y a aucun mouvement ni attente de réussite ici.
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()
    {
        MarkIfDistant(1450, 1690);
        return null;
    }

    void MarkIfDistant(dynamic x, dynamic y)
    {
        if (Truth(UO.GetDistance(x, y) > 2))
        {
            UO.Track(1, x, y);
        }
        else
        {
            UO.Track(0);
        }
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implémentation de la commande

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

UO.Track() — UO.Track()

Paramètres: Aucun paramètre.

Résultat: void / Unit.

Pendant un appel:

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

public void Track() => Track(1, GetX(), GetY());

UO.Track(flag) — UO.Track(Any)

Paramètres: flag (Any)

Résultat: void / Unit.

Pendant un appel:

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

public void Track(InjectionValue flag) => Track(NumberConversions.ToInt(flag), GetX(), GetY());

UO.Track(flagRaw, x, y) — UO.Track(Any,Any,Any)

Paramètres: flagRaw (Any), x (Any), y (Any)

Résultat: void / Unit.

Pendant un appel:

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

public void Track(InjectionValue flagRaw, InjectionValue x, InjectionValue y)

            => Track(NumberConversions.ToInt(flagRaw), NumberConversions.ToInt(x), NumberConversions.ToInt(y));

UO.UseSkill

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

Signatures C#

int UO.UseSkill(object? skillName);

Demande au serveur d'utiliser la compétence par son nom. Exactement un paramètre : skillName. UO.UseSkill("Hiding") essaie de cacher son propre personnage. Si la compétence a besoin d'une cible, sélectionnez-la avec le viseur du jeu ou à l'avance avec une commande séparée WaitTargetObject.

Paramètres

  • skillName - Chaîne obligatoire - le nom anglais exact de la compétence, tel que "Masquage", "Anatomie" ou "Méditation". Le cas n’est pas important ; les espaces et les traits de soulignement ne sont pas automatiquement corrigés. Le numéro de compétence, serial, self, la distance, la notoriété, maxZ et l'attente ne sont pas transférés ici. Tous les noms.

Valeur de retour

int : 1/true—le client a accepté la demande ; 0/false - nom inconnu ou échec local. Il ne s’agit pas d’une réussite de compétence, d’une croissance de compétence ou d’un signe de furtivité. Pour la furtivité, lisez Hidden(). Vous pouvez écrire if UO.UseSkill("Hiding") { ... } ou comparer avec 1/true. Un argument manquant ou supplémentaire est une erreur d'appel.

Comportement

  • Forme unique : UO.UseSkill(skillName). Il n'y a pas de deuxième paramètre ou de paramètres ultérieurs. La recherche, la cible et l'attente sont effectuées par d'autres commandes.
  • La dissimulation et la méditation ne nécessitent pas la sélection d’un autre objet. Ne leur préparez pas WaitTargetObject : la rafale restante peut répondre à la vue du prochain étranger.
  • L'anatomie utilise une lunette. Appelez UseSkill("Anatomy") et sélectionnez le personnage avec la souris. Pour répondre automatiquement, exécutez d'abord WaitTargetObject, puis UseSkill : de cette façon vous ne manquerez pas la réponse rapide du serveur.
  • UseSkill ne crée ni n'efface la file d'attente cible. Si vous avez préparé une réponse, effacez-la CancelWaitTarget en cas d'échec/d'expiration. N'exécutez pas d'autres scénarios d'observation en même temps.
  • L'empoisonnement, la provocation et d'autres compétences en plusieurs étapes nécessitent un traitement séparé de cibles/outils supplémentaires. Un objet présélectionné ne complète aucune compétence.
  • Le nom dans le dictionnaire ne garantit pas une utilisation sans outil. L'exploitation minière nécessite un outil ; les sorts sont lancés par Cast. Les règles et le succès sont déterminés par le serveur.
  • Une demande acceptée met à jour TicksSkill. L'équipe ne s'attend pas à de la furtivité, à des effets, à une augmentation des compétences ou à une consommation de file d'attente.

Scripts C# autonomes

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

Exemple simple

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

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.UseSkill("Hiding");
UO.Print("UseSkill: " + Convert.ToString(result));

1. Masquer via le masquage - script direct

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

  • Se cacher est le seul argument. UO.Wait(1000) donne le temps de répondre ; Hidden lit le flag reçu. Renvoyer 1 depuis UseSkill ne signifie pas que vous vous êtes échappé.
if (!(Truth(UO.Connected())) || Truth(UO.Dead()) || Truth(UO.Hidden()))
{
    return null;
}
if (!(Truth(UO.UseSkill("Hiding"))))
{
    UO.Print("Hiding request rejected");
    return null;
}
await Delay(1000);
if (Truth(UO.Hidden()))
{
    UO.Print("Character is hidden");
}
else
{
    UO.Print("Not hidden yet; check the game journal");
}

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;

2. Anatomie avec une cible préparée séparément - fonction de script

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

  • L'anatomie est le seul paramètre UseSkill ; mobile fait référence à WaitTargetObject. ASC convertit la chaîne hexadécimale GetSerial en un nombre pour la vérification de la plage. 1500 — millisecondes à attendre dans l'exemple. Efface enfin la file d'attente restante ; voir le résultat Anatomie dans le jeu.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
    var mobile = Asc(UO.GetSerial("lasttarget"), 0);
    if (Truth(mobile <= 0) || Truth(mobile >= 0x40000000) || !(Truth(UO.Exists(mobile))))
    {
        return null;
    }

    UO.CancelWaitTarget();
    try
    {
        UO.WaitTargetObject(mobile);
        if (Truth(UO.UseSkill("Anatomy")))
        {
            await Delay(1500);
        }
    }
    finally
    {
        UO.CancelWaitTarget();
    }

    return null;
}

int Asc(object? value, int fallback = 0)
{
    string text = Convert.ToString(value) ?? "";
    if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
        return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
    return int.TryParse(text, out int number) ? number : fallback;
}

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;

3. Méditation et observation du mana - Cours de script

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

  • La méditation est invoquée sans but. avant de stocker le mana précédent, 2000 est la période d'observation. La croissance du mana peut avoir d’autres raisons ; Ce n’est pas une preuve de méditation ni une promesse d’un taux de récupération fixe.

Compétences

Compétences

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()
    {
        if (!(Truth(UO.Connected())) || Truth(UO.Dead()))
        {
            return null;
        }

        var before = UO.Mana();
        if (!(Truth(UO.UseSkill("Meditation"))))
        {
            UO.Print("Meditation request rejected");
            return null;
        }

        await Delay(2000);
        if (Truth(UO.Mana() > before))
        {
            UO.Print("Mana increased");
        }
        else
        {
            UO.Print("No mana increase observed yet");
        }

        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;
}

Implémentation de la commande

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

UO.UseSkill(skillName) — UO.UseSkill(String)

Paramètres: skillName (String)

Résultat: int / Integer.

Pendant un appel:

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

public int UseSkill(string skillName)

        {

            return UseSkillCore(skillName) ? 1 : 0;

        }
⚠️ **GitHub.com Fallback** ⚠️