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

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

Quêtes et vertus

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

Demandes générales des clients pour les quêtes et les vertus. Les missions du serveur Age of Power sont décrites dans une section distincte du Wiki.

Sections

Sujet Commandes et explications
QuestRequest UO.QuestRequest
Quest Arrow UO.GetQuestArrow
Virtues Gump UO.ReqVirtuesGump
UseVirtue UO.UseVirtue

Toutes les commandes du thème

Quêtes / Vertus

UO.QuestRequest · UO.GetQuestArrow · UO.ReqVirtuesGump · UO.UseVirtue

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.GetQuestArrow

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

var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
    UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}

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

UO.UseVirtue

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

UO.Print(UO.UseVirtue("Honor"));

Référence complète des commandes


UO.GetQuestArrow

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

Signatures C#

dynamic UO.GetQuestArrow();
dynamic UO.GetQuestArrow(object? point);

Lit la position de la flèche de la tâche serveur. Permet au script de savoir où pointe la flèche reçue du serveur ; Elle ne lit pas la commande Track.

Paramètres

  • point - Espace réservé facultatif obsolète. La forme UO.GetQuestArrow(point) est conservée pour des raisons de compatibilité ; l'argument n'est ni lu ni modifié. Utilisez UO.GetQuestArrow() et son tableau de retour.

Valeur de retour

Tableau [existe, x, y], exactement trois entiers. [0] - 1 (true), s'il y a une flèche de serveur, sinon 0 (false) ; [1] - X, [2] - Y. Sans flèche [0, 0, 0]. Seul le champ [0] est un attribut booléen ; le tableau entier n'est pas bool. S'il y a plusieurs flèches, la première enregistrée est lue, il n'y a pas de choix par ID.

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.
  • Espace réservé facultatif obsolète. La forme UO.GetQuestArrow(point) est conservée pour des raisons de compatibilité ; l'argument n'est ni lu ni modifié. Utilisez UO.GetQuestArrow() et son tableau de retour.

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.

object? result = UO.GetQuestArrow();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Application directe - script direct

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

  • Tout d'abord, [0] est coché ; alors [1]/[2] peut être lu comme X/Y. Ne transmettez pas l'intégralité du tableau sous la forme serial ou bool.
var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
    UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}

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

2. Condition de jeu - fonction scénario

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

  • Copie les coordonnées de la flèche du serveur vers le marqueur local Track. Ce n'est pas un mouvement. Si le serveur déplace ultérieurement la flèche, la flèche locale restera au même point.
return  RunScenario();
 object? RunScenario()
{
    var arrow = UO.GetQuestArrow();
    if (Truth(arrow[0] == 1))
    {
        UO.Track(1, arrow[1], arrow[2]);
    }

    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 :

  • ArrowDistance renvoie la distance UO.GetDistance(x,y) au point serveur ou −1 s'il n'y a pas de flèche. À une distance allant jusqu'à deux cellules, seul le Track local est supprimé, la flèche du serveur reste.
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 distance = ArrowDistance();
        if (Truth(distance >= 0) && Truth(distance <= 2))
        {
            UO.Track(0);
        }

        return null;
    }

    dynamic ArrowDistance()
    {
        var arrow = UO.GetQuestArrow();
        if (Truth(arrow[0] == 0))
        {
            return -1;
        }

        return UO.GetDistance(arrow[1], arrow[2]);
    }

    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.GetQuestArrow() — UO.GetQuestArrow()

Paramètres: Aucun paramètre.

Résultat: dynamic / Array.

Pendant un appel:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.GetQuestArrow(point) — UO.GetQuestArrow(Any)

Paramètres: point (Any)

Résultat: dynamic / Array.

Pendant un appel:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.QuestRequest

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

Signatures C#

void UO.QuestRequest();

Demande le menu des tâches du serveur.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

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

Comportement

  • QuestRequest transmet GameActions.RequestQuestMenu(_world) au flux de jeu. L'équipe ne lit ni ne crée de tâches.
  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.

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.QuestRequest");
UO.QuestRequest();

1. Appel direct - script direct

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

  • Demande le menu des tâches du serveur.
UO.QuestRequest();

2. Option explicite - fonction de script

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

  • QuestRequest transmet GameActions.RequestQuestMenu(_world) au flux de jeu. L'équipe ne lit ni ne crée de tâches.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.QuestRequest();
    }

    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 :

  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.
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.QuestRequest();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        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.QuestRequest() — UO.QuestRequest()

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 "questrequest": bridge.QuestRequest(); return InjectionValue.Unit;

UO.ReqVirtuesGump

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

Signatures C#

void UO.ReqVirtuesGump();

Demande la fenêtre des vertus d'un personnage.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

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

Comportement

  • RequestVirtuesGump, s'il y a un Joueur, appelle ReplyGump avec le caractère gumpID=0x1CD, bouton=1 et serial. Sans Player, il n'y a aucune demande.
  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.

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.ReqVirtuesGump");
UO.ReqVirtuesGump();

1. Appel direct - script direct

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

  • Demande la fenêtre des vertus d'un personnage.
UO.ReqVirtuesGump();

2. Option explicite - fonction de script

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

  • RequestVirtuesGump, s'il y a un Joueur, appelle ReplyGump avec le caractère gumpID=0x1CD, bouton=1 et serial. Sans Player, il n'y a aucune demande.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Self() != 0))
    {
        UO.ReqVirtuesGump();
    }

    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 :

  • Dans les exemples, UO.Wait spécifie uniquement une pause de script ; la fin de la pause ne prouve pas que le serveur a complété la requête.
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.ReqVirtuesGump();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        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.ReqVirtuesGump() — UO.ReqVirtuesGump()

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 "reqvirtuesgump": bridge.RequestVirtuesGump(); return InjectionValue.Unit;

UO.UseVirtue

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

Signatures C#

dynamic UO.UseVirtue(object? virtueName);

Demande l’application de la vertu.

Paramètres

  • virtueName — Nom honneur/sacrifice/valeur/compassion/honnêteté/humilité/justice/spiritualité insensible à la casse, avec les espaces extérieurs supprimés, ou double-texte ID 1..8.

Valeur de retour

Indicateur numérique int : 1 - valide ID 1..8 envoyé via Send_InvokeVirtueRequest ; 0 - nom inconnu/ID invalide. Ceci n’est pas une confirmation de l’effet serveur.

Comportement

  • Les noms correspondent à ID : Honneur=1, Sacrifice=2, Valor=3, Compassion=4, Honnêteté=5, Humilité=6, Justice=7, Spiritualité=8. L'analyse numérique de cette fonction utilise int.TryParse, pas la conversion 0x.
  • L'équipe elle-même ne fixe pas d'objectif de suivi ni ne vérifie les points de vertu/disponibilité ; ceci est déterminé par le serveur.

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.

object? result = UO.UseVirtue("Honor");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Appel direct - script direct

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

  • Demande l’application de la vertu.
UO.Print(UO.UseVirtue("Honor"));

2. Option explicite - fonction de script

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

  • Les noms correspondent à ID : Honneur=1, Sacrifice=2, Valor=3, Compassion=4, Honnêteté=5, Humilité=6, Justice=7, Spiritualité=8. L'analyse numérique de cette fonction utilise int.TryParse, pas la conversion 0x.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.UseVirtue("1"));
    return null;
}

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

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

  • L'équipe elle-même ne fixe pas d'objectif de suivi ni ne vérifie les points de vertu/disponibilité ; ceci est déterminé 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()
    {
        var accepted = UO.UseVirtue("Honor");
        if (Truth(accepted))
        {
            UO.Print("Virtue request sent");
        }

        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.UseVirtue(virtueName) — UO.UseVirtue(Any)

Paramètres: virtueName (Any)

Résultat: dynamic / Any.

Pendant un appel:

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

case "usevirtue": return new InjectionValue(bridge.UseVirtue(Text(0)));
⚠️ **GitHub.com Fallback** ⚠️