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

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

Boutiques et vendeurs

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

Achats, ventes, listes de magasins, retards et prix marchands personnels. AllPrice et MassPriceMove utilisent le type d'élément spécifié dans leurs paramètres.

Achat et vente : procédure

Ouvrir le catalogue complet et les exemples

Sections

Sujet Commandes et explications
Buy UO.Buy
Sell UO.Sell
AutoBuy UO.AutoBuy
AutoSell UO.AutoSell
Shop List UO.GetShopList · UO.ClearShopList · UO.Shop
Prices UO.GetPrice · UO.AllPrice · UO.MassPriceMove
VendorMenu UO.VendorMenu
SendShopReply UO.SendShopReply

Toutes les commandes du thème

Acheter / Vendre

UO.Buy · UO.Sell · UO.AutoBuy · UO.AutoBuyEx · UO.AutoSell · UO.Shop · UO.GetShopList · UO.ClearShopList · UO.VendorMenu · UO.SendShopReply

Tarifs

UO.GetPrice · UO.AllPrice · UO.MassPriceMove

Retards

UO.GetAutoBuyDelay · UO.GetAutoSellDelay · UO.SetAutoBuyDelay · UO.SetAutoSellDelay

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

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

UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

UO.MassPriceMove

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

UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

Référence complète des commandes


UO.AllPrice

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

Signatures C#

void UO.AllPrice();
void UO.AllPrice(object? price);
void UO.AllPrice(object? price, object? @type);

Permet la saisie automatique du prix après avoir placé un article dans l'inventaire de votre fournisseur. L'équipe ne transporte pas elle-même d'objets. Activez d’abord le mode, puis faites glisser l’élément. Le prix n'est envoyé qu'après une demande correspondante du serveur. Le deuxième paramètre filtre le TYPE de l'élément.

Paramètres

  • price — Le premier paramètre est le prix total de l'ensemble de l'article/pile exposé, de 0 à 2147483647. 125 signifie prix 125. 0 - prix clairement nul (gratuit si autorisé par le serveur), pas d'arrêt. Une valeur négative désactive le mode ; UO.AllPrice() sans arguments est recommandé.
  • type — Le deuxième paramètre facultatif est TYPE/Graphic de 0 à 65535, un nombre ou une chaîne hexadécimale, par exemple 0x0EED. 0 ou absence - tous types. Le numéro de série de l'article et le nom de l'objet ne sont pas appropriés. La couleur n'est pas filtrée.

Valeur de retour

void : aucune valeur. Activez l'activation des rapports AllPrice. La ligne de prix envoyé indique que la réponse a été envoyée et non l'acceptation du prix confirmé par le serveur.

Comportement

  • Le mode s'applique aux transferts ultérieurs jusqu'à ce qu'il soit désactivé. Une demande de prix déjà en attente avant l'inclusion/le transfert n'est pas automatiquement remplie. Ne répond pas aux demandes de changement de nom du fournisseur/magasin.
  • Nécessite que le conteneur appartienne à un autre personnage/NPC connu du client. Le droit de gérer le vendeur et l'acceptabilité du prix sont vérifiés par le serveur. Le sac à dos habituel du personnage, le coffre au sol et le terrain ne reçoivent pas de prix automatique.
  • Pour un fournisseur standard, la demande de prix cliloc 1043303 est reconnue quelle que soit la langue du client. Les invites de texte système commençant par Saisissez un prix, Saisissez un prix, Saisissez le prix, Saisissez un prix ou Saisissez un prix sont également prises en charge. Une invitation inconnue est laissée pour réponse manuelle.
  • Les requêtes du serveur ASCII et Unicode sont prises en charge. Si l'invitation n'arrive pas dans les 10 secondes, la réponse différée est annulée. Lors d'un transfert de masse, la file d'attente s'arrête également. Les réponses déjà envoyées ne seront pas rappelées.
  • L'autre article TYPE ne reçoit pas de prix. Si MassMove est activé, la prochaine soumission attend que la demande de prix soit traitée ; une demande inconnue ou inappropriée arrête la file d'attente pour éviter de mélanger les éléments.
  • AllPrice() efface les prix en attente et désactive le mode. TerminateAll(), quitter, mourir ou changer de carte réinitialise également le prix automatique. Cette commande ne modifie pas les prix des produits déjà répertoriés.

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

1. Un prix unique pour les articles suivants de tout type - script direct

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

  • price=125 — le prix total de chaque article. type absent : tous les types conviennent.
  • Après le lancement, ajoutez manuellement l'article à l'inventaire de votre fournisseur. Le client répondra à une demande de prix par 125. Chaque article suivant reçoit le même prix jusqu'à ce qu'il soit éteint.
  • Print ne ressemble qu'à l'action ; Cette procédure en elle-même ne transfère rien.
UO.AllPrice(125);
UO.Print("Drop goods into your vendor inventory");

2. Prix ​​automatique pour un type donné uniquement - fonction script

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

  • salePrice est transmis sous la forme price=250. itemType est transmis comme type=0x0F7A, et non serial d'un produit séparé.
  • Le prix 250 fait référence à la totalité de la pile affichée. La commande ne multiplie pas le prix par le nombre d'unités qu'il contient.
  • Les autres types restent sans réponse automatique. Pour ceux-ci, saisissez le prix manuellement ou incluez AllPrice avec un filtre différent.
return  RunScenario();
 object? RunScenario()
{
    var itemType = "0x0F7A";
    var salePrice = 250;
    UO.AllPrice(salePrice, itemType);
    return null;
}

3. Exposer explicitement des éléments gratuitement - classe de script

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

  • price=0 — envoie la chaîne 0 au serveur comme prix. Il ne s’agit pas d’annuler le dialogue ou de l’arrêter.
  • type=0x0F7A limite le prix gratuit à ce type. Le comportement de la vente gratuite dépend des règles du 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()
    {
        UO.AllPrice(0, "0x0F7A");
        return null;
    }
}

4. Désactiver la tarification automatique - script direct

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

  • Aucun argument : le mode est désactivé et les réponses en attente sont supprimées.
  • Le prix déjà fixé par le serveur ne change pas. L'utilisateur remplit lui-même la prochaine demande de prix.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

UO.AllPrice();

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

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 "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price) — UO.AllPrice(Any)

Paramètres: price (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AllPrice(price, type) — UO.AllPrice(Any,Any)

Paramètres: price (Any), type (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "allprice":

                    bridge.AllPrice(arguments.Length > 0 ? NumberConversions.ToInt(arguments[0]) : -1,

                        arguments.Length > 1 ? ResolveType(arguments[1]) : 0);

                    break;

UO.AutoBuy

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

Signatures C#

void UO.AutoBuy(object? itemType, object? itemColor, object? quantity);

Crée, met à jour ou supprime une règle d'achat automatique dans la liste principale par défaut du profil Bad Newbie actuel. La commande configure le traitement futur de l'offre du vendeur NPC ; ne dit pas acheter/vendre, n'ouvre pas de magasin et ne confirme pas la transaction. Procédure complète : listes des magasins.

Paramètres

  • itemType - Produit graphique 0..65535 : par exemple 0x0F7A - Black Pearl, 0x0F51 - poignard. Ce n'est pas le serial du vendeur/objet ni le body du personnage. Un nombre négatif ou un nombre supérieur à 65535 est rejeté. Ici, 0xFFFF est un graphic spécifique, pas un masque de tous les biens.
  • itemColor — Teinte du produit : nombre négatif ou 0xFFFF — n'importe lequel ; 0 - uniquement les articles non peints. Pour un hue précis, utilisez 0..65534. N'utilisez pas de couleurs en dehors de cette plage : une valeur positive est convertie en ushort. Requis.
  • quantity — Le nombre d'UNITÉS de marchandises par offre de magasin reçue, pas le nombre de piles ni le solde souhaité dans le sac à dos. Le positif est limité à 65535. 0/negative supprime la règle de correspondance type+couleur de la valeur par défaut ; il ne s’agit pas de « la quantité totale ». Requis.

Valeur de retour

void - aucune valeur. Appel sur une ligne séparée, sans résultat var = et sans if. La fin de l'appel signifie la fin de la configuration et non une transaction réussie. S'il n'y a pas de profil ou graphic invalide, la règle n'est pas créée ; Il n’y a pas de résultat numérique de l’erreur. Vérifiez la transaction réelle par le contenu du sac à dos, l'or et la réponse du serveur.

Comportement

  • Tous les arguments 3 sont requis. Il s'agit d'un paramètre de règle, pas d'une fonction d'attente.
  • La clé de règle est graphic et le masque hue par défaut. L'appel répété remplace la quantité et les autres champs de cette règle ; il n’ajoute pas de limite supplémentaire à la précédente. Sans prix/nom, les restrictions précédentes sur ces champs sont supprimées.
  • Règle nouvelle/mise à jour Enabled=true. Le commutateur général d'achat/vente est défini en fonction de la présence de règles et le profil est enregistré. La liste par défaut désactivée elle-même n'est pas automatiquement activée : le mode général et la liste doivent être activés dans les paramètres. Les autres listes nommées ne sont pas modifiées.
  • Le traitement commence lorsqu'une liste de marchandises arrive. La limite est dépensée au total sur les lignes correspondant à une règle. Pour chaque position, la première règle activée correspondante est utilisée. La réouverture du magasin donne une nouvelle offre et une nouvelle limite tant que la règle est active.
  • Fonctionne pleinement avec Bad Newbie ; dans Classic, cette automatisation est désactivée. Ne remplacez pas le nom NPC ou le nom de la liste enregistrée dans les paramètres. AutoBuyEx ajoute des filtres prix/nom lors de l'achat ; ClearShopList réinitialise entièrement les deux automatisations.

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.AutoBuy");
UO.AutoBuy(0x0F7A, -1, 1);

1. Préparer l'achat d'une unité de réactif - script direct

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

  • Réactif 0x0F7A - graphic, pas ID NPC. Quantité - 1 ; couleur - n'importe laquelle. Aucun prix plafond n’est spécifié dans ce formulaire. Le script lui-même ne dit rien et n'ouvre pas la boutique. La règle continue de s'appliquer aux phrases suivantes jusqu'à ce que vous la modifiiez/désactiviez.
UO.AutoBuy(0x0F7A, -1, 1);

2. Configurer un approvisionnement en réactifs pour une offre de magasin - fonction de script

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

  • 20 - dans un maximum d'une réponse du magasin, et non « amener la quantité à 20 ». AutoBuy n'a aucun argument de prix et de nom. S'ils sont nécessaires, utilisez AutoBuyEx ; son exemple complet est disponible sur le lien ci-dessous. Le manque de biens, d'argent et les règles du serveur déterminent le résultat.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0F7A, 0, 20);
    return null;
}

3. Supprimer les règles sélectionnées sans réinitialiser les autres listes - classe de script

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

  • L'assistant accepte graphic. Seules les règles par défaut avec AnyHue sont supprimées ; les règles individuelles hue=0 sont conservées. Cela n'annule pas une transaction déjà envoyée au serveur. Pour supprimer une couleur exacte, transmettez le même hue avec lequel la règle a été créée.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuy(itemType, -1, 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.AutoBuy(itemType, itemColor, quantity) — UO.AutoBuy(Any,Any,Any)

Paramètres: itemType (Any), itemColor (Any), quantity (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "autobuy":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), 0, string.Empty); return InjectionValue.Unit;

UO.AutoBuyEx

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

Signatures C#

void UO.AutoBuyEx(object? itemType, object? itemColor, object? quantity, object? price, object? name);

Crée, met à jour ou supprime une règle d'achat automatique dans la liste principale par défaut du profil Bad Newbie actuel. La commande configure le traitement futur de l'offre du vendeur NPC ; ne dit pas acheter/vendre, n'ouvre pas de magasin et ne confirme pas la transaction. Procédure complète : listes des magasins.

Paramètres

  • itemType - Produit graphique 0..65535 : par exemple 0x0F7A - Black Pearl, 0x0F51 - poignard. Ce n'est pas le serial du vendeur/objet ni le body du personnage. Un nombre négatif ou un nombre supérieur à 65535 est rejeté. Ici, 0xFFFF est un graphic spécifique, pas un masque de tous les biens.
  • itemColor — Teinte du produit : nombre négatif ou 0xFFFF — n'importe lequel ; 0 - uniquement les articles non peints. Pour un hue précis, utilisez 0..65534. N'utilisez pas de couleurs en dehors de cette plage : une valeur positive est convertie en ushort. Requis.
  • quantity — Le nombre d'UNITÉS de marchandises par offre de magasin reçue, pas le nombre de piles ni le solde souhaité dans le sac à dos. Le positif est limité à 65535. 0/negative supprime la règle de correspondance type+couleur de la valeur par défaut ; il ne s’agit pas de « la quantité totale ». Requis.
  • price — Prix maximum d'UNE unité, pas de la totalité de la transaction. 0/négatif – pas de prix plafond. Les produits dont le prix dépasse la limite positive sont autorisés. Le prix n'est ni échangé ni modifié sur le serveur. Requis.
  • name — Sous-chaîne du nom du PRODUIT, insensible à la casse ; les espaces de bord sont supprimés, ligne vide - pas de filtre. Il ne s'agit pas du nom du vendeur ni du nom de l'annonce. Par exemple, "Black Pearl" vérifie le texte de l'emplacement du magasin si le serveur a envoyé exactement ce nom. Requis.

Valeur de retour

void - aucune valeur. Appel sur une ligne séparée, sans résultat var = et sans if. La fin de l'appel signifie la fin de la configuration et non une transaction réussie. S'il n'y a pas de profil ou graphic invalide, la règle n'est pas créée ; Il n’y a pas de résultat numérique de l’erreur. Vérifiez la transaction réelle par le contenu du sac à dos, l'or et la réponse du serveur.

Comportement

  • Tous les arguments 5 sont requis. Il s'agit d'un paramètre de règle, pas d'une fonction d'attente.
  • La clé de règle est graphic et le masque hue par défaut. L'appel répété remplace la quantité et les autres champs de cette règle ; il n’ajoute pas de limite supplémentaire à la précédente. Sans prix/nom, les restrictions précédentes sur ces champs sont supprimées.
  • Règle nouvelle/mise à jour Enabled=true. Le commutateur général d'achat/vente est défini en fonction de la présence de règles et le profil est enregistré. La liste par défaut désactivée elle-même n'est pas automatiquement activée : le mode général et la liste doivent être activés dans les paramètres. Les autres listes nommées ne sont pas modifiées.
  • Le traitement commence lorsqu'une liste de marchandises arrive. La limite est dépensée au total sur les lignes correspondant à une règle. Pour chaque position, la première règle activée correspondante est utilisée. La réouverture du magasin donne une nouvelle offre et une nouvelle limite tant que la règle est active.
  • Fonctionne pleinement avec Bad Newbie ; dans Classic, cette automatisation est désactivée. Ne remplacez pas le nom NPC ou le nom de la liste enregistrée dans les paramètres. AutoBuyEx ajoute des filtres prix/nom lors de l'achat ; ClearShopList réinitialise entièrement les deux automatisations.

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.AutoBuyEx");
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

1. Préparer l'achat d'une unité de réactif - script direct

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

  • Réactif 0x0F7A - graphic, pas ID NPC. Quantité - 1 ; couleur - n'importe laquelle. Prix ​​plafond 5 par unité. Le script lui-même ne dit rien et n'ouvre pas la boutique. La règle continue de s'appliquer aux phrases suivantes jusqu'à ce que vous la modifiiez/désactiviez.
UO.AutoBuyEx(0x0F7A, -1, 1, 5, "");

2. Configurer un approvisionnement en réactifs pour une offre de magasin - fonction de script

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

  • 20 - réponse maximale dans un magasin, et non « amener la quantité à 20 ». 5 — prix unitaire, « Black Pearl » — sous-chaîne du nom du produit. Si le serveur appelle le réactif différemment, changez le filtre ou passez "". Le manque de biens, d'argent et les règles du serveur déterminent le résultat.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuyEx(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3. Supprimer les règles sélectionnées sans réinitialiser les autres listes - classe de script

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

  • L'assistant accepte graphic. Seules les règles par défaut avec AnyHue sont supprimées ; les règles individuelles hue=0 sont conservées. Cela n'annule pas une transaction déjà envoyée au serveur. Pour supprimer une couleur exacte, transmettez le même hue avec lequel la règle a été créée.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.AutoBuyEx(itemType, -1, 0, 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.AutoBuyEx(itemType, itemColor, quantity, price, name) — UO.AutoBuyEx(Any,Any,Any,Any,Any)

Paramètres: itemType (Any), itemColor (Any), quantity (Any), price (Any), name (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "autobuyex":

                    bridge.SetAutoBuyRule(Arg(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

UO.AutoSell

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

Signatures C#

void UO.AutoSell(object? itemType, object? itemColor, object? quantity);

Crée, met à jour ou supprime une règle de vente automatique dans la liste principale par défaut du profil Bad Newbie actuel. La commande configure le traitement futur de l'offre du vendeur NPC ; ne dit pas acheter/vendre, n'ouvre pas de magasin et ne confirme pas la transaction. Procédure complète : listes des magasins.

Paramètres

  • itemType - Produit graphique 0..65535 : par exemple 0x0F7A - Black Pearl, 0x0F51 - poignard. Ce n'est pas le serial du vendeur/objet ni le body du personnage. Un nombre négatif ou un nombre supérieur à 65535 est rejeté. Ici, 0xFFFF est un graphic spécifique, pas un masque de tous les biens.
  • itemColor — Teinte du produit : nombre négatif ou 0xFFFF — n'importe lequel ; 0 - uniquement les articles non peints. Pour un hue précis, utilisez 0..65534. N'utilisez pas de couleurs en dehors de cette plage : une valeur positive est convertie en ushort. Requis.
  • quantity — Le nombre d'UNITÉS de marchandises par offre de magasin reçue, pas le nombre de piles ni le solde souhaité dans le sac à dos. Le positif est limité à 65535. 0/negative supprime la règle de correspondance type+couleur de la valeur par défaut ; il ne s’agit pas de « la quantité totale ». Requis.

Valeur de retour

void - aucune valeur. Appel sur une ligne séparée, sans résultat var = et sans if. La fin de l'appel signifie la fin de la configuration et non une transaction réussie. S'il n'y a pas de profil ou graphic invalide, la règle n'est pas créée ; Il n’y a pas de résultat numérique de l’erreur. Vérifiez la transaction réelle par le contenu du sac à dos, l'or et la réponse du serveur.

Comportement

  • Tous les arguments 3 sont requis. Il s'agit d'un paramètre de règle, pas d'une fonction d'attente.
  • La clé de règle est graphic et le masque hue par défaut. L'appel répété remplace la quantité et les autres champs de cette règle ; il n’ajoute pas de limite supplémentaire à la précédente. Sans prix/nom, les restrictions précédentes sur ces champs sont supprimées.
  • Règle nouvelle/mise à jour Enabled=true. Le commutateur général d'achat/vente est défini en fonction de la présence de règles et le profil est enregistré. La liste par défaut désactivée elle-même n'est pas automatiquement activée : le mode général et la liste doivent être activés dans les paramètres. Les autres listes nommées ne sont pas modifiées.
  • Le traitement commence lorsqu'une liste de marchandises arrive. La limite est dépensée au total sur les lignes correspondant à une règle. Pour chaque position, la première règle activée correspondante est utilisée. La réouverture du magasin donne une nouvelle offre et une nouvelle limite tant que la règle est active.
  • Fonctionne pleinement avec Bad Newbie ; dans Classic, cette automatisation est désactivée. Ne remplacez pas le nom NPC ou le nom de la liste enregistrée dans les paramètres. AutoBuyEx ajoute des filtres prix/nom lors de l'achat ; ClearShopList réinitialise entièrement les deux automatisations.

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.AutoSell");
UO.AutoSell(0x0F51, -1, 1);

1. Autoriser la vente d'un poignard - script direct

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

  • 0x0F51 - graphic dague, n'importe quel hue, 1 - un par phrase. L'équipe ne sélectionne pas un serial spécifique et ne teste pas l'utilité/valeur de l'élément. Sélectionnez le type/couleur exact de votre article.
UO.AutoSell(0x0F51, -1, 1);

2. Vendre uniquement une robe d'une certaine couleur est fonction du scénario

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

  • 0x1F03 est un exemple de robe graphic standard, 0x0044 est un exemple de hue. Remplacez les deux par votre produit. 5 — unités, pas prix ; les paramètres de prix minimum et de nom Sell/AutoSell ne sont pas acceptés. Le serveur doit inclure l'article dans l'offre de vente.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoSell(0x1F03, 0x0044, 5);
    return null;
}

3. Désactivez deux types de ventes avant d'accéder à NPC - classe de script

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

  • Le nom de la procédure est arbitraire ; itemType et hue sont ses paramètres. Les autres règles, achats et listes nommées personnalisées sont conservées. Si une autre liste activée vend également ces articles, désactivez la règle correspondante via les paramètres.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.AutoSell(itemType, hue, 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.AutoSell(itemType, itemColor, quantity) — UO.AutoSell(Any,Any,Any)

Paramètres: itemType (Any), itemColor (Any), quantity (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "autosell":

                    bridge.SetAutoSellRule(Arg(0), Arg(1), Arg(2)); return InjectionValue.Unit;

UO.Buy

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

Signatures C#

void UO.Buy(object? @type);
void UO.Buy(object? @type, object? color);
void UO.Buy(object? @type, object? color, object? quantity);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice);
void UO.Buy(object? @type, object? color, object? quantity, object? maxPrice, object? name);

Crée, met à jour ou supprime une règle d'achat automatique dans la liste principale par défaut du profil Bad Newbie actuel. La commande configure le traitement futur de l'offre du vendeur NPC ; ne dit pas acheter/vendre, n'ouvre pas de magasin et ne confirme pas la transaction. Procédure complète : listes des magasins.

Paramètres

  • type - Produit graphique 0..65535 : par exemple 0x0F7A - Black Pearl, 0x0F51 - poignard. Ce n'est pas le serial du vendeur/objet ni le body du personnage. Un nombre négatif ou un nombre supérieur à 65535 est rejeté. Ici, 0xFFFF est un graphic spécifique, pas un masque de tous les biens.
  • color — Teinte du produit : nombre négatif ou 0xFFFF — n'importe lequel ; 0 - uniquement les articles non peints. Pour un hue précis, utilisez 0..65534. N'utilisez pas de couleurs en dehors de cette plage : une valeur positive est convertie en ushort. La valeur par défaut est 1.
  • quantity — Le nombre d'UNITÉS de marchandises par offre de magasin reçue, pas le nombre de piles ni le solde souhaité dans le sac à dos. Le positif est limité à 65535. 0/negative supprime la règle de correspondance type+couleur de la valeur par défaut ; il ne s’agit pas de « la quantité totale ». La valeur par défaut est 1.
  • maxPrice — Prix maximum d'UNE unité, pas de la totalité de la transaction. 0/négatif – pas de prix plafond. Les produits dont le prix dépasse la limite positive sont autorisés. Le prix n'est ni échangé ni modifié sur le serveur. La valeur par défaut est 0.
  • name — Sous-chaîne du nom du PRODUIT, insensible à la casse ; les espaces de bord sont supprimés, ligne vide - pas de filtre. Il ne s'agit pas du nom du vendeur ni du nom de l'annonce. Par exemple, "Black Pearl" vérifie le texte de l'emplacement du magasin si le serveur a envoyé exactement ce nom. La valeur par défaut est une chaîne vide.

Valeur de retour

void - aucune valeur. Appel sur une ligne séparée, sans résultat var = et sans if. La fin de l'appel signifie la fin de la configuration et non une transaction réussie. S'il n'y a pas de profil ou graphic invalide, la règle n'est pas créée ; Il n’y a pas de résultat numérique de l’erreur. Vérifiez la transaction réelle par le contenu du sac à dos, l'or et la réponse du serveur.

Comportement

  • Buy accepte les arguments 1 à 5 ; manquant à droite color=-1, quantité=1, maxPrice=0, name="".
  • La clé de règle est graphic et le masque hue par défaut. L'appel répété remplace la quantité et les autres champs de cette règle ; il n’ajoute pas de limite supplémentaire à la précédente. Sans prix/nom, les restrictions précédentes sur ces champs sont supprimées.
  • Règle nouvelle/mise à jour Enabled=true. Le commutateur général d'achat/vente est défini en fonction de la présence de règles et le profil est enregistré. La liste par défaut désactivée elle-même n'est pas automatiquement activée : le mode général et la liste doivent être activés dans les paramètres. Les autres listes nommées ne sont pas modifiées.
  • Le traitement commence lorsqu'une liste de marchandises arrive. La limite est dépensée au total sur les lignes correspondant à une règle. Pour chaque position, la première règle activée correspondante est utilisée. La réouverture du magasin donne une nouvelle offre et une nouvelle limite tant que la règle est active.
  • Fonctionne pleinement avec Bad Newbie ; dans Classic, cette automatisation est désactivée. Ne remplacez pas le nom NPC ou le nom de la liste enregistrée dans les paramètres. AutoBuyEx ajoute des filtres prix/nom lors de l'achat ; ClearShopList réinitialise entièrement les deux automatisations.

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.Buy");
UO.Buy(0x0F7A);

1. Préparer l'achat d'une unité de réactif - script direct

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

  • Réactif 0x0F7A - graphic, pas ID NPC. Quantité - 1 ; couleur - n'importe laquelle. Aucun prix plafond n’est spécifié dans ce formulaire. Le script lui-même ne dit rien et n'ouvre pas la boutique. La règle continue de s'appliquer aux phrases suivantes jusqu'à ce que vous la modifiiez/désactiviez.
UO.Buy(0x0F7A);

2. Configurer un approvisionnement en réactifs pour une offre de magasin - fonction de script

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

  • 20 - réponse maximale dans un magasin, et non « amener la quantité à 20 ». 5 — prix unitaire, « Black Pearl » — sous-chaîne du nom du produit. Si le serveur appelle le réactif différemment, changez le filtre ou passez "". Le manque de biens, d'argent et les règles du serveur déterminent le résultat.
return  RunScenario();
 object? RunScenario()
{
    UO.Buy(0x0F7A, 0, 20, 5, "Black Pearl");
    return null;
}

3. Supprimer les règles sélectionnées sans réinitialiser les autres listes - classe de script

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

  • L'assistant accepte graphic. Seules les règles par défaut avec AnyHue sont supprimées ; les règles individuelles hue=0 sont conservées. Cela n'annule pas une transaction déjà envoyée au serveur. Pour supprimer une couleur exacte, transmettez le même hue avec lequel la règle a été créée.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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()
    {
        DisableReagentRule(0x0F7A);
        DisableReagentRule(0x0F84);
        return null;
    }

    void DisableReagentRule(dynamic itemType)
    {
        UO.Buy(itemType, -1, 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.Buy(type) — UO.Buy(Any)

Paramètres: type (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color) — UO.Buy(Any,Any)

Paramètres: type (Any), color (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity) — UO.Buy(Any,Any,Any)

Paramètres: type (Any), color (Any), quantity (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice) — UO.Buy(Any,Any,Any,Any)

Paramètres: type (Any), color (Any), quantity (Any), maxPrice (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.Buy(type, color, quantity, maxPrice, name) — UO.Buy(Any,Any,Any,Any,Any)

Paramètres: type (Any), color (Any), quantity (Any), maxPrice (Any), name (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "buy":

                    bridge.SetAutoBuyRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1, arguments.Length > 3 ? Arg(3) : 0, arguments.Length > 4 ? Text(4) : string.Empty);

                    break;

UO.ClearShopList

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

Signatures C#

void UO.ClearShopList();

Supprime les règles d'achat et de vente automatiques du profil actif.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

void - aucune valeur de retour.

Comportement

  • Efface BackNewbieAutoBuyRules et BackNewbieAutoSellRules, désactive les AutoBuy/AutoSell partagés, met à jour OptionsGump et enregistre le profil. La liste du butin ne change pas ; l'absence de profil donne une action vide.

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

1. État clair - script direct

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

  • Supprime les règles d'achat et de vente automatiques du profil actif.
UO.ClearShopList();

2. Effacer après l'installation - fonction de script

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

  • Supprimez la règle d'achat de bandages ainsi que le reste des règles commerciales.
return  RunScenario();
 object? RunScenario()
{
    UO.AutoBuy(0x0E21, -1, 10);
    UO.ClearShopList();
    return null;
}

3. Re-Purge - Classe de script

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

  • Effacer un ensemble vide est acceptable et ne crée pas de nouveau paramètre.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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

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 "clearshoplist":

                    bridge.ClearAutoShopRules(); return InjectionValue.Unit;

UO.GetAutoBuyDelay

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

Signatures C#

dynamic UO.GetAutoBuyDelay();

Lit le délai d'achat automatique actuel à partir du profil client.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int — délai actuel en millisecondes. Les valeurs écrites par le setter sont limitées à 0…65535. 0 signifie aucun délai supplémentaire ; ce n'est pas une erreur. S'il n'y a pas de profil chargé, 3 est renvoyé. La lecture ne renvoie pas la quantité d'article ni ne confirme la transaction.

Comportement

  • Le paramétrage est général pour le profil actuel : les modifications dans un autre script ou UI sont visibles la prochaine fois que vous le lirez. Zéro est un paramètre valide, ce n'est pas un signe de données manquantes et ce n'est pas une raison pour renvoyer l'ancien cache de script.
  • La valeur par défaut est 3 ms. Après l'envoi d'une opération automatique, le gestionnaire fixe l'heure de la prochaine opération autorisée. Les listes de fournisseurs arrivées plus tôt ne sont pas traitées par ce passe ; getter ne déclenche pas d'attente et n'envoie pas lui-même d'achat/vente.
  • Il ne s'agit pas d'un délai de MassMove, Drag/Drop ou d'un trading manuel. La nouvelle valeur est appliquée lors de la planification du prochain délai ; le moment déjà attribué n'est pas recalculé.

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.GetAutoBuyDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Afficher le délai actuel - script direct

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

  • Il n'y a pas d'arguments. délai — temps en millisecondes.
  • La valeur reflète le profil au moment de l'appel. Le var enregistré ne sera pas mis à jour ultérieurement.
var delay = UO.GetAutoBuyDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2. Modifier le paramètre et lire la valeur limitée - fonction de script

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

  • le passeur obtient 70000 ms ; le maximum autorisé est 65535. L'exemple modifie le paramètre de profil.
  • actual doit contenir 65535 lorsque le profil est chargé. Getter renvoie la valeur contrainte réelle plutôt que l'argument d'origine 70000.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(70000);
    var actual = UO.GetAutoBuyDelay();
    UO.Print(Convert.ToString(actual));
    return null;
}

3. Distinguer les délais nuls et non nuls - classe de scénario

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

  • Zéro est coché explicitement. Cet exemple ne modifie pas le profil.
  • Une latence nulle ne signifie pas que l’opération est terminée. Pour le résultat de la transaction, vérifiez les objets du 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()
    {
        var current = UO.GetAutoBuyDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

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

Paramètres: Aucun paramètre.

Résultat: dynamic / Any.

Pendant un appel:

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

case "getautobuydelay":

                    return new InjectionValue(bridge.GetAutoBuyDelay());

UO.GetAutoSellDelay

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

Signatures C#

dynamic UO.GetAutoSellDelay();

Lit le délai de vente automatique actuel à partir du profil client.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

int — délai actuel en millisecondes. Les valeurs écrites par le setter sont limitées à 0…65535. 0 signifie aucun délai supplémentaire ; ce n'est pas une erreur. S'il n'y a pas de profil chargé, 3 est renvoyé. La lecture ne renvoie pas la quantité d'article ni ne confirme la transaction.

Comportement

  • Le paramétrage est général pour le profil actuel : les modifications dans un autre script ou UI sont visibles la prochaine fois que vous le lirez. Zéro est un paramètre valide, ce n'est pas un signe de données manquantes et ce n'est pas une raison pour renvoyer l'ancien cache de script.
  • La valeur par défaut est 3 ms. Après l'envoi d'une opération automatique, le gestionnaire fixe l'heure de la prochaine opération autorisée. Les listes de fournisseurs arrivées plus tôt ne sont pas traitées par ce passe ; getter ne déclenche pas d'attente et n'envoie pas lui-même d'achat/vente.
  • Il ne s'agit pas d'un délai de MassMove, Drag/Drop ou d'un trading manuel. La nouvelle valeur est appliquée lors de la planification du prochain délai ; le moment déjà attribué n'est pas recalculé.

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.GetAutoSellDelay();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Afficher le délai actuel - script direct

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

  • Il n'y a pas d'arguments. délai — temps en millisecondes.
  • La valeur reflète le profil au moment de l'appel. Le var enregistré ne sera pas mis à jour ultérieurement.
var delay = UO.GetAutoSellDelay();
UO.Print("Delay ms: " + Convert.ToString(delay));

2. Modifier le paramètre et lire la valeur limitée - fonction de script

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

  • le passeur obtient 70000 ms ; le maximum autorisé est 65535. L'exemple modifie le paramètre de profil.
  • actual doit contenir 65535 lorsque le profil est chargé. Getter renvoie la valeur contrainte réelle plutôt que l'argument d'origine 70000.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(70000);
    var actual = UO.GetAutoSellDelay();
    UO.Print(Convert.ToString(actual));
    return null;
}

3. Distinguer les délais nuls et non nuls - classe de scénario

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

  • Zéro est coché explicitement. Cet exemple ne modifie pas le profil.
  • Une latence nulle ne signifie pas que l’opération est terminée. Pour le résultat de la transaction, vérifiez les objets du 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()
    {
        var current = UO.GetAutoSellDelay();
        if (Truth(current == 0))
        {
            UO.Print("No additional delay");
        }
        else
        {
            UO.Print("Delay: " + Convert.ToString(current) + " ms");
        }

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

Paramètres: Aucun paramètre.

Résultat: dynamic / Any.

Pendant un appel:

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

case "getautoselldelay":

                    return new InjectionValue(bridge.GetAutoSellDelay());

UO.GetPrice

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

Signatures C#

dynamic UO.GetPrice(object? objID);

Lit le Item.Price connu du client pour l'article serial.

Paramètres

  • objID — Numéro de série de l'objet ou nom pris en charge de l'objet self/backpack/lasttarget/saved ; les chaînes numériques et les chaînes 0x sont résolues par l'exécution.

Valeur de retour

int — conversion non vérifiée de uint Item.Price en int. Un élément manquant donne 0 ; les prix supérieurs à 2147483647 sont affichés comme négatifs int.

Comportement

  • L'équipe ne demande pas de proposition de fournisseur. La valeur dépend des données précédemment reçues par le client. Zéro peut indiquer un prix inconnu/zéro ou l'absence d'un article ; pour vérifier un objet, utilisez Exists.

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.GetPrice(UO.LastTarget());
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Prix ​​de l'article sélectionné - script direct

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

  • Le résultat est un Item.Price mis en cache.
var item = UO.LastTarget();
if (Truth(UO.Exists(item)))
{
    var price = UO.GetPrice(item);
    UO.Print(Convert.ToString(price));
}

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

2. Zéro serial – fonction de script

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

  • Un élément manquant donne 0.
return  RunScenario();
 object? RunScenario()
{
    var price = UO.GetPrice(0);
    UO.Print(Convert.ToString(price));
    return null;
}

3. Aperçu des prix – Classe de script

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

  • Seul un nouvel appel relit le modèle ; la pause elle-même ne demande pas de prix.
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 item = UO.LastTarget();
        var before = UO.GetPrice(item);
        await Delay(500);
        var after = UO.GetPrice(item);
        UO.Print(Convert.ToString(before) + " " + Convert.ToString(after));
        return null;
    }

    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.GetPrice(objID) — UO.GetPrice(Any)

Paramètres: objID (Any)

Résultat: dynamic / Any.

Pendant un appel:

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

case "getprice":

                    return new InjectionValue(bridge.GetPrice(Arg(0)));

UO.GetShopList

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

Signatures C#

dynamic UO.GetShopList();

Lit les produits de la dernière offre active du vendeur NPC. Vous permet de vérifier le type, la quantité et le prix avant d'acheter ou de vendre.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

Tableau de string — tableau de chaînes, indices de 0. Chaque ligne : serial|graphic|hue|montant|prix|nom. Série - ID position spécifique, graphic - type, hue - couleur ; les trois premiers champs sont écrits au format 0x. Montant — unités disponibles moins la traite dans la fenêtre, prix — prix d'une unité, nom — nom. Ce n'est pas une liste serial ni une liste bool. S'il n'y a pas d'offre, le tableau est vide. Le nom peut contenir | : les cinq premiers délimiteurs définissent les champs, le reste est le nom.

Comportement

  • Tout d'abord, comme une action de jeu normale, ouvrez un achat ou une vente à partir du NPC souhaité et attendez que le serveur propose. Ces équipes elles-mêmes ne recherchent pas de vendeur, n'ouvrent pas de commerce, ne fixent pas de prix pour un vendeur personnel et ne transfèrent pas d'objets entre les coffres. ID du vendeur n'est pas passé en paramètre : en cas de plusieurs offres, la dernière est utilisée.
  • Dans le manager, l'offre est stockée dans la session de jeu. La fermeture du client graphique enregistre la proposition et le brouillon, son ouverture restaure la fenêtre. Fermer le magasin lui-même, répondre, fermer le serveur ou déconnecter la connexion supprime l'offre. Autobuy/autosell Bad Newbie peut le traiter avant le script.
  • La lecture n'envoie pas de requêtes au serveur. Il s'agit d'un instantané de l'approvisionnement déjà reçu, et non d'une garantie du stock actuel de NPC. Le champ de quantité reflète les unités, pas le nombre de lignes/piles. ArrayLength(lignes) compte les positions. Les prix ici se lisent GetShopList ; SendShopReply n'accepte pas le prix.
  • La liste explicite remplace le brouillon et n'y est pas ajoutée. Répéter un serial additionne la quantité ; le total est limité par la quantité totale de l'article dans l'offre. Inconnu serial, quantité incorrecte ou non positive rejette l'intégralité de la réponse avant de la soumettre, enregistrant l'offre. S'il n'y a pas de phrase, SendShopReply signale une erreur. La ligne "0" n'est pas une commande d'annulation ; utiliser "".

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.GetShopList();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Analyser la première position - script direct

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

  • GetWord utilise l'index de 0 : 0 - serial, 1 - graphic, 2 - hue, 3 - quantité, 4 - prix. Avant les lignes[0], la longueur du tableau est vérifiée.
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var serial = ReadField(rows[0], 0, "|");
var itemType = ReadField(rows[0], 1, "|");
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
var price = Convert.ToDouble(ReadField(rows[0], 4, "|"));
UO.Print(serial + " / " + itemType + " / " + Convert.ToString(amount) + " / " + Convert.ToString(price));

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2. Achetez jusqu'à dix bandages à un prix limité - fonction script

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

  • Pour l'offre d'ACHAT pré-ouverte uniquement. 0x0E21 — bandages, 5 — prix unitaire maximum, 10 — quantité requise. La première position appropriée est prise ; exact serial est lu à partir de la phrase. Le code ne démarre pas l'achat lui-même.
return  RunScenario();
 object? RunScenario()
{
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= 5) && Truth(amount > 0))
            {
                if (Truth(amount > 10))
                {
                    amount = 10;
                }

                UO.SendShopReply(ReadField(row, 0, "|") + ":" + Convert.ToString(amount));
                return null;
            }
        }
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3. Calculer le stock disponible du type sélectionné - classe de scénario

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

  • La fonction auxiliaire est donnée dans son intégralité : elle additionne le champ montant de toutes les positions du type spécifié. Si la clause est vide, renvoie 0 ; il s'agit du nombre d'unités disponibles, et non du nombre d'animaux ou d'objets sur le personnage.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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 available = CountOfferedType("0x0E21");
        if (Truth(available < 10))
        {
            UO.Print("Bandage stock below 10: " + Convert.ToString(available));
        }

        return null;
    }

    dynamic CountOfferedType(dynamic itemType)
    {
        var total = 0;
        var rows = UO.GetShopList();
        for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
        {
            if (Truth(ReadField(rows[i], 1, "|") == itemType))
            {
                total = total + Convert.ToInt32(ReadField(rows[i], 3, "|"));
            }
        }

        return total;
    }

    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;
    string ReadField(object? row, int index, string separator)
    {
        string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
        return index >= 0 && index < fields.Length ? fields[index] : "";
    }
}

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

Paramètres: Aucun paramètre.

Résultat: dynamic / Any.

Pendant un appel:

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

public InjectionValue GetShopList()

            => new InjectionValue((bridge.GetShopList() ?? Array.Empty<string>()).Select(item => new InjectionValue(item)).ToArray());

UO.MassPriceMove

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

Signatures C#

void UO.MassPriceMove();
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination);
void UO.MassPriceMove(object? delay, object? quantity, object? @type, object? price, object? destination, object? x, object? y, object? z);

Permet le transfert de masse d'articles d'un TYPE avec tarification automatique dans l'inventaire de votre fournisseur. La source est déterminée par le premier transfert manuel. Chaque pile est entièrement transférée et est considérée comme un élément ; après sa demande de prix, le client répond et continue ensuite la file d'attente.

Paramètres

  • delay — Le premier paramètre est le délai entre les demandes de transfert en millisecondes, un entier compris entre 0 et 2147483647. 350 signifie 0,35 secondes. Avec 0, pas plus d'un prochain report n'est envoyé par image de jeu. Aucun délai n'est ajouté à GrabDelay. Une valeur négative désactive le mode et efface la file d'attente ; pour l'extinction, une notation claire UO.MassPriceMove() est préférable.
  • quantity - Le deuxième paramètre est la limite TOTALE des éléments individuels (éléments), y compris le premier transfert manuel. Une pile/pile est considérée comme un article, quelle que soit la quantité à l'intérieur. 50 signifie jusqu'à 50 piles entières ou 50 éléments uniques. La pile n'est PAS divisée à cette limite. 0 - tous les éléments appropriés. Les valeurs négatives ne sont pas autorisées.
  • type - Le troisième paramètre est le code du type d'élément (Graphique/Type), l'entier 0..65535, par exemple 0x0EED ou la chaîne "0x0EED" pour l'or. Ce n'est PAS serial/ID et PAS le nom AddObject. 0 détermine le type par le premier transfert manuel. Avec un type explicite, faire glisser un autre type n'active pas la file d'attente ; Le mode continue d'attendre un élément approprié.
  • price — Le quatrième paramètre requis est le prix total 0..2147483647 pour chaque article/pile complet affiché. 0 signifie gratuit, pas d'arrêt. Le prix négatif est rejeté.
  • destination - Le cinquième paramètre facultatif est serial ou le nom enregistré du conteneur dans l'inventaire de votre fournisseur. En cas d'absence, il est prélevé lors de la remise à zéro manuelle. Un sac à dos ordinaire, un coffre au sol et destination=0 sont ici déviés : il est impossible de fixer un prix sur le terrain.
  • x - Sixième paramètre - X à l'intérieur du conteneur du fournisseur : -1 ou 65535 pour le placement automatique, sinon 0..65535. Indiqué uniquement avec Y et Z.
  • y - Septième paramètre - Y à l'intérieur du conteneur du fournisseur : -1/65535 pour le placement automatique, sinon 0..65535. Uniquement indiqué avec X et Z.
  • z — Le huitième paramètre est la hauteur -128..127, à l'intérieur du conteneur généralement 0. Sans X/Y/Z explicite, avec une destination donnée, -1,-1,0 sont utilisés ; Lors de l'attribution manuelle, l'emplacement de réinitialisation est pris.

Valeur de retour

void : aucune valeur. L'activation de MassPriceMove active l'attente manuelle de l'échantillon. Les messages de transfert et de prix indiquent les demandes soumises et ne constituent pas une garantie d'acceptation du serveur.

Comportement

  • Formulaires avec les arguments 0, 4, 5 ou 8. Commande exacte : délai, quantité, type, prix, destination, x, y, z. Les triples de coordonnées partielles ne sont pas pris en charge.
  • Tout d’abord, appelez la commande, puis récupérez et faites glisser l’intégralité de l’élément approprié. Tapez 0 s'en souvient TYPE ; un type explicite ignore les retours à la ligne manuels des autres types. La source est toujours tirée du premier élément approprié.
  • La quantité comprend le premier article manuel. 50 signifie 50 piles complètes de 100, et non 50 unités de la pile. 0 - tous les objets droits appropriés. La couleur n'est pas filtrée et les conteneurs imbriqués ne sont pas développés.
  • Les règles de reconnaissance des demandes de prix AllPrice s'appliquent, notamment ASCII/Unicode et 10-seconde d'attente. Délai de pause - intervalle minimum : un serveur lent l'augmente pour ne pas confondre les prix.
  • Le mode général AllPrice n'a pas besoin d'être activé. Le prix de cette opération est prioritaire sur AllPrice. Il n'est pas recommandé de modifier le prix AllPrice ou de transférer manuellement des articles supplémentaires pendant la file d'attente : une réponse inconnue ou une panne de serveur interrompt la file d'attente.
  • MassPriceMove() désactive la file d'attente de transfert actuelle et annule la réponse de prix en attente ; le AllPrice général, s'il a été activé séparément, est conservé. TerminateAll() désactive les deux modes. Il s'agit d'une file d'attente commune avec MassMove : la nouvelle activation remplace l'ancienne.
  • Si la demande de prix n'est pas reconnue, la commande quitte la boîte de dialogue pour la saisie manuelle et arrête les transferts ultérieurs. Les pannes de serveur, les décès, les changements de carte et les éléments/conteneurs indisponibles cessent également de fonctionner.
  • Appeler correctement et à plusieurs reprises la même commande, alors que le mode attend toujours le premier glissement de la souris, désactive l'attente : Désactiver MassMove/MassPriceMove apparaît directement dans la fenêtre de jeu. L'appel suivant réactive le mode. Après le premier transfert, utilisez le formulaire sans argument pour arrêter la file d'attente restante. Les demandes déjà envoyées ne sont pas annulées.

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

1. Déplacez les piles 50 avec le prix, en déterminant le type avec la souris - script direct

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

  • délai=350 ms ; quantité=50 d'articles individuels, y compris le premier manuel ; type=0 se souvient de l'échantillon TYPE ; price=125 pour chaque article entier.
  • il manque la destination et les coordonnées : faites glisser l'échantillon directement dans l'inventaire de votre fournisseur.
  • Si les piles d'origine sont 100, un maximum de 50 piles complètes sont transférées. Chacun reçoit un prix 125 suite aux requêtes du serveur.
UO.MassPriceMove(350, 50, 0, 125);
UO.Print("Drag one complete stack into your vendor bag");

2. Tous les articles d'un type connu dans le sac du fournisseur sélectionné - fonction de script

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

  • AddObject vous invite à sélectionner un sac de fournisseur et l'enregistre sous le nom supplier_bag. C'est la destination ID ; le type reste le code 0x0F7A.
  • delay=500, quantité=0 sans limite, type=0x0F7A, prix=250, destination=vendor_bag.
  • X/Y/Z manquant : -1,-1,0. Pour démarrer une file d'attente, faites glisser manuellement un élément du type approprié ; à partir de là, le sac d'origine est déterminé.
return  RunScenario();
 object? RunScenario()
{
    UO.AddObject("vendor_bag");
    UO.MassPriceMove(500, 0, "0x0F7A", 250, "vendor_bag");
    UO.Print("Now drag one matching item from the source");
    return null;
}

3. Spécifiez les huit paramètres et l'emplacement à l'intérieur du sac - classe de scénario

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

  • délai=350 ms ; quantité=10 articles complets ; type=itemType=0x0EED; price=1000 pour chaque pile complète.
  • destination=vendorBag est le vrai ID des sacs de votre vendeur, remplacez l'exemple. C'est le cinquième paramètre, pas le quatrième.
  • x=60, y=70 est l'endroit à l'intérieur de ce sac, z=0. Ce ne sont pas les coordonnées du personnage sur la carte.
  • Une fois appelé, faites glisser et déposez manuellement l’échantillon approprié depuis la source. Si le serveur rejette le placement, les autres demandes sont arrêtées.
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 itemType = "0x0EED";
        var vendorBag = "0x40005678";
        UO.MassPriceMove(350, 10, itemType, 1000, vendorBag, 60, 70, 0);
        return null;
    }
}

4. Annulation de la file d'attente et réponse au prix en attente - script direct

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

  • Sans argument, la commande désactive la file d'attente générale des transferts en masse et efface sa réponse de prix en attente.
  • Les prix et transferts déjà acceptés par le serveur ne sont pas annulés. Pour arrêter d'autres procédures et activer séparément AllPrice, utilisez UO.TerminateAll().

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

UO.MassPriceMove();

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

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 "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price) — UO.MassPriceMove(Any,Any,Any,Any)

Paramètres: delay (Any), quantity (Any), type (Any), price (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination) — UO.MassPriceMove(Any,Any,Any,Any,Any)

Paramètres: delay (Any), quantity (Any), type (Any), price (Any), destination (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.MassPriceMove(delay, quantity, type, price, destination, x, y, z) — UO.MassPriceMove(Any,Any,Any,Any,Any,Any,Any,Any)

Paramètres: delay (Any), quantity (Any), type (Any), price (Any), destination (Any), x (Any), y (Any), z (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "masspricemove":

                    if (arguments.Length == 0) bridge.MassPriceMove(-1, 0, 0, 0, -1, -1, -1, 0);

                    else bridge.MassPriceMove(NumberConversions.ToInt(arguments[0]),

                        NumberConversions.ToInt(arguments[1]), ResolveType(arguments[2]),

                        NumberConversions.ToInt(arguments[3]),

                        arguments.Length > 4 ? ResolveTransferDestination(arguments[4], true) : -1,

                        arguments.Length > 5 ? NumberConversions.ToInt(arguments[5]) : -1,

                        arguments.Length > 6 ? NumberConversions.ToInt(arguments[6]) : -1,

                        arguments.Length > 7 ? NumberConversions.ToInt(arguments[7]) : 0);

                    break;

UO.Sell

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

Signatures C#

void UO.Sell(object? @type);
void UO.Sell(object? @type, object? color);
void UO.Sell(object? @type, object? color, object? quantity);

Crée, met à jour ou supprime une règle de vente automatique dans la liste principale par défaut du profil Bad Newbie actuel. La commande configure le traitement futur de l'offre du vendeur NPC ; ne dit pas acheter/vendre, n'ouvre pas de magasin et ne confirme pas la transaction. Procédure complète : listes des magasins.

Paramètres

  • type - Produit graphique 0..65535 : par exemple 0x0F7A - Black Pearl, 0x0F51 - poignard. Ce n'est pas le serial du vendeur/objet ni le body du personnage. Un nombre négatif ou un nombre supérieur à 65535 est rejeté. Ici, 0xFFFF est un graphic spécifique, pas un masque de tous les biens.
  • color — Teinte du produit : nombre négatif ou 0xFFFF — n'importe lequel ; 0 - uniquement les articles non peints. Pour un hue précis, utilisez 0..65534. N'utilisez pas de couleurs en dehors de cette plage : une valeur positive est convertie en ushort. La valeur par défaut est 1.
  • quantity — Le nombre d'UNITÉS de marchandises par offre de magasin reçue, pas le nombre de piles ni le solde souhaité dans le sac à dos. Le positif est limité à 65535. 0/negative supprime la règle de correspondance type+couleur de la valeur par défaut ; il ne s’agit pas de « la quantité totale ». La valeur par défaut est 1.

Valeur de retour

void - aucune valeur. Appel sur une ligne séparée, sans résultat var = et sans if. La fin de l'appel signifie la fin de la configuration et non une transaction réussie. S'il n'y a pas de profil ou graphic invalide, la règle n'est pas créée ; Il n’y a pas de résultat numérique de l’erreur. Vérifiez la transaction réelle par le contenu du sac à dos, l'or et la réponse du serveur.

Comportement

  • Sell ​​​​prend des arguments 1 à 3 ; manque sur la droite couleur=-1, quantité=1.
  • La clé de règle est graphic et le masque hue par défaut. L'appel répété remplace la quantité et les autres champs de cette règle ; il n’ajoute pas de limite supplémentaire à la précédente. Sans prix/nom, les restrictions précédentes sur ces champs sont supprimées.
  • Règle nouvelle/mise à jour Enabled=true. Le commutateur général d'achat/vente est défini en fonction de la présence de règles et le profil est enregistré. La liste par défaut désactivée elle-même n'est pas automatiquement activée : le mode général et la liste doivent être activés dans les paramètres. Les autres listes nommées ne sont pas modifiées.
  • Le traitement commence lorsqu'une liste de marchandises arrive. La limite est dépensée au total sur les lignes correspondant à une règle. Pour chaque position, la première règle activée correspondante est utilisée. La réouverture du magasin donne une nouvelle offre et une nouvelle limite tant que la règle est active.
  • Fonctionne pleinement avec Bad Newbie ; dans Classic, cette automatisation est désactivée. Ne remplacez pas le nom NPC ou le nom de la liste enregistrée dans les paramètres. AutoBuyEx ajoute des filtres prix/nom lors de l'achat ; ClearShopList réinitialise entièrement les deux automatisations.

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.Sell");
UO.Sell(0x0F51);

1. Autoriser la vente d'un poignard - script direct

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

  • 0x0F51 - graphic dague, n'importe quel hue, 1 - un par phrase. L'équipe ne sélectionne pas un serial spécifique et ne teste pas l'utilité/valeur de l'élément. Sélectionnez le type/couleur exact de votre article.
UO.Sell(0x0F51);

2. Vendre uniquement une robe d'une certaine couleur est fonction du scénario

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

  • 0x1F03 est un exemple de robe graphic standard, 0x0044 est un exemple de hue. Remplacez les deux par votre produit. 5 — unités, pas prix ; les paramètres de prix minimum et de nom Sell/AutoSell ne sont pas acceptés. Le serveur doit inclure l'article dans l'offre de vente.
return  RunScenario();
 object? RunScenario()
{
    UO.Sell(0x1F03, 0x0044, 5);
    return null;
}

3. Désactivez deux types de ventes avant d'accéder à NPC - classe de script

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

  • Le nom de la procédure est arbitraire ; itemType et hue sont ses paramètres. Les autres règles, achats et listes nommées personnalisées sont conservées. Si une autre liste activée vend également ces articles, désactivez la règle correspondante via les paramètres.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

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()
    {
        RemoveSaleRule(0x0F51, -1);
        RemoveSaleRule(0x1F03, 0x0044);
        return null;
    }

    void RemoveSaleRule(dynamic itemType, dynamic hue)
    {
        UO.Sell(itemType, hue, 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.Sell(type) — UO.Sell(Any)

Paramètres: type (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color) — UO.Sell(Any,Any)

Paramètres: type (Any), color (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.Sell(type, color, quantity) — UO.Sell(Any,Any,Any)

Paramètres: type (Any), color (Any), quantity (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "sell":

                    bridge.SetAutoSellRule(Arg(0), arguments.Length > 1 ? Arg(1) : -1, arguments.Length > 2 ? Arg(2) : 1);

                    break;

UO.SendShopReply

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

Signatures C#

void UO.SendShopReply(object? reply);

Envoie la sélection de produits à la dernière offre active du vendeur NPC. Le sens de la transaction est déterminé par l'offre : acheter à NPC ou lui vendre.

Paramètres

  • reply — Chaîne : "serial:quantité" ; plusieurs positions sont séparées par |, ; ou virgule. Au lieu de : disons =. Série - positions ID de GetShopList, décimal ou 0x, pas graphic et non ID vendeur. La quantité est un nombre entier positif de un, et non le nombre de piles ; sans cela, 1 est pris. "accepter" n'est pas sensible à la casse ou "1" confirme la fenêtre de brouillon ; une ligne vide annule la transaction avec une réponse vide.

Valeur de retour

void - Il n'y a pas de valeur de retour : ni true/false, ni le montant, ni la confirmation d'achat. Le serveur décide si la transaction est valide. Après la soumission, vérifiez les éléments mis à jour, l'or ou le message du serveur.

Comportement

  • Tout d'abord, comme une action de jeu normale, ouvrez un achat ou une vente à partir du NPC souhaité et attendez que le serveur propose. Ces équipes elles-mêmes ne recherchent pas de vendeur, n'ouvrent pas de commerce, ne fixent pas de prix pour un vendeur personnel et ne transfèrent pas d'objets entre les coffres. ID du vendeur n'est pas passé en paramètre : en cas de plusieurs offres, la dernière est utilisée.
  • Dans le manager, l'offre est stockée dans la session de jeu. La fermeture du client graphique enregistre la proposition et le brouillon, son ouverture restaure la fenêtre. Fermer le magasin lui-même, répondre, fermer le serveur ou déconnecter la connexion supprime l'offre. Autobuy/autosell Bad Newbie peut le traiter avant le script.
  • La lecture n'envoie pas de requêtes au serveur. Il s'agit d'un instantané de l'approvisionnement déjà reçu, et non d'une garantie du stock actuel de NPC. Le champ de quantité reflète les unités, pas le nombre de lignes/piles. ArrayLength(lignes) compte les positions. Les prix ici se lisent GetShopList ; SendShopReply n'accepte pas le prix.
  • La liste explicite remplace le brouillon et n'y est pas ajoutée. Répéter un serial additionne la quantité ; le total est limité par la quantité totale de l'article dans l'offre. Inconnu serial, quantité incorrecte ou non positive rejette l'intégralité de la réponse avant de la soumettre, enregistrant l'offre. S'il n'y a pas de phrase, SendShopReply signale une erreur. La ligne "0" n'est pas une commande d'annulation ; utiliser "".

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

1. Sélectionnez jusqu'à trois unités de la première position - script direct

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

  • Jusqu'à 3 les unités de première position sont sélectionnées ; serial n'a pas la peau dure. Pour une offre d’achat c’est un achat, pour une offre de vente c’est une vente. Vérifiez quelle offre vous avez ouverte.
var rows = UO.GetShopList();
if (Truth(ArrayLength(rows) == 0))
{
    return null;
}
var amount = Convert.ToInt32(ReadField(rows[0], 3, "|"));
if (Truth(amount > 3))
{
    amount = 3;
}
if (Truth(amount > 0))
{
    UO.SendShopReply(ReadField(rows[0], 0, "|") + ":" + Convert.ToString(amount));
}

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;

string ReadField(object? row, int index, string separator) { string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None); return index >= 0 && index < fields.Length ? fields[index] : ""; }

2. Sélectionnez un élément à la fois dans le budget - fonction de script

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

  • Uniquement pour l'offre ACHETER : budget 30, tapez 0x0E21. Une unité est sélectionnée parmi chaque article éligible si le prix est positif et dans les limites du budget restant. La chaîne est concaténée à l'aide de |; un SendShopReply envoie la totalité de la sélection.
return  RunScenario();
 object? RunScenario()
{
    double budget = 30;
    var reply = "";
    var rows = UO.GetShopList();
    for (int i = (int)(0); i <= ArrayLength(rows) - 1; i += (int)(1))
    {
        var row = rows[i];
        if (Truth(ReadField(row, 1, "|") == "0x0E21"))
        {
            var price = Convert.ToDouble(ReadField(row, 4, "|"));
            var amount = Convert.ToInt32(ReadField(row, 3, "|"));
            if (Truth(price > 0) && Truth(price <= budget) && Truth(amount > 0))
            {
                if (Truth(reply != ""))
                {
                    reply = reply + "|";
                }

                reply = reply + ReadField(row, 0, "|") + ":1";
                budget = budget - price;
            }
        }
    }

    if (Truth(reply != ""))
    {
        UO.SendShopReply(reply);
    }

    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;
string ReadField(object? row, int index, string separator)
{
    string[] fields = (Convert.ToString(row) ?? "").Split(new[] { separator }, StringSplitOptions.None);
    return index >= 0 && index < fields.Length ? fields[index] : "";
}

3. Confirmer le brouillon de la fenêtre - Classe de script

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

  • Présélectionnez les quantités dans la vitrine du magasin. "accepter" envoie exactement ce brouillon ; Après avoir fermé la fenêtre de jeu, il est enregistré. Si rien n’est sélectionné, une réponse vide sera envoyée. "1" est un synonyme de confirmation, pas de sujet serial.
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.SendShopReply("accept");
        return null;
    }
}

4. Annuler l'offre - script direct

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

  • Une ligne vide envoie une réponse vide et ferme l'offre active. Le contrôle GetShopList évite d'être appelé lorsqu'il n'y a pas de marchandise, mais il ne fait pas la distinction entre une phrase vide et une phrase absente.

Listes Shop / Listes d'achat et de vente

Listes Shop / Listes d'achat et de vente

if (Truth(ArrayLength(UO.GetShopList()) > 0))
{
    UO.SendShopReply("");
}

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;

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.SendShopReply(reply) — UO.SendShopReply(Any)

Paramètres: reply (Any)

Résultat: void / Unit.

Pendant un appel:

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

public void SendShopReply(InjectionValue reply) => bridge.SendShopReply(reply.ToString());

UO.SetAutoBuyDelay

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

Signatures C#

void UO.SetAutoBuyDelay(object? value);

Définit le délai d'achat automatique et enregistre le profil actuel.

Paramètres

  • value — Nombre requis de millisecondes. Une valeur négative est limitée à 0, une valeur supérieure à 65535 est limitée au nombre 65535. 0 désactive le délai supplémentaire, mais ne désactive pas le trading automatique lui-même.

Valeur de retour

void - aucune valeur de retour. Appelez sur une ligne distincte, puis utilisez GetAutoBuyDelay() pour lire le paramètre effectif. S'il n'y a pas de profil, le passeur ne sauvegarde rien ; le getter dans cet état donne la norme 3 ms.

Comportement

  • Le paramétrage est général pour le profil actuel : les modifications dans un autre script ou UI sont visibles la prochaine fois que vous le lirez. Zéro est un paramètre valide, ce n'est pas un signe de données manquantes et ce n'est pas une raison pour renvoyer l'ancien cache de script.
  • La valeur par défaut est 3 ms. Après l'envoi d'une opération automatique, le gestionnaire fixe l'heure de la prochaine opération autorisée. Les listes de fournisseurs arrivées plus tôt ne sont pas traitées par ce passe ; getter ne déclenche pas d'attente et n'envoie pas lui-même d'achat/vente.
  • Il ne s'agit pas d'un délai de MassMove, Drag/Drop ou d'un trading manuel. La nouvelle valeur est appliquée lors de la planification du prochain délai ; le moment déjà attribué n'est pas recalculé.
  • Dans un hôte client standard, ces données d'état sont extraites du gestionnaire GetPersistentState et sont communes aux scripts/chat/macros du même monde/profil, et n'appartiennent pas à un seul script. Un autre processus ou un InjectionRuntimeState apparemment séparé a un état différent. Charger/effacer un profil peut le remplacer ; Les serial enregistrés sont toujours comparés au monde chargé.

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

1. Définir l'intervalle 350 ms - script direct

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

  • Value=350 — millisecondes entre les opérations automatiques autorisées.
  • Le paramètre est enregistré dans le profil actuel et est visible par les autres scripts.
UO.SetAutoBuyDelay(350);
UO.Print(Convert.ToString(UO.GetAutoBuyDelay()));

2. Supprimer le délai supplémentaire - fonction de script

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

  • Value=0 a une signification indépendante ; n'est pas remplacé par la valeur non nulle précédente.
  • Seul le délai change. Les règles, les listes et un commutateur de trading automatique général sont définis séparément.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoBuyDelay(0);
    var actual = UO.GetAutoBuyDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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. Appliquer la valeur calculée - Classe de script

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

  • request=70000 dépasse le maximum. appliqué lit le profil après les restrictions du setter.
  • Lorsque le profil est chargé, le résultat sera 65535. Pour revenir au délai standard, appelez explicitement le setter avec 3.
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 requested = 70000;
        UO.SetAutoBuyDelay(requested);
        var applied = UO.GetAutoBuyDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        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.SetAutoBuyDelay(value) — UO.SetAutoBuyDelay(Any)

Paramètres: value (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "setautobuydelay":

                    state.AutoBuyDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoBuyDelay(state.AutoBuyDelay);

                    return InjectionValue.Unit;

UO.SetAutoSellDelay

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

Signatures C#

void UO.SetAutoSellDelay(object? value);

Définit le délai de vente automatique et enregistre le profil actuel.

Paramètres

  • value — Nombre requis de millisecondes. Une valeur négative est limitée à 0, une valeur supérieure à 65535 est limitée au nombre 65535. 0 désactive le délai supplémentaire, mais ne désactive pas le trading automatique lui-même.

Valeur de retour

void - aucune valeur de retour. Appelez sur une ligne distincte, puis utilisez GetAutoSellDelay() pour lire le paramètre effectif. S'il n'y a pas de profil, le passeur ne sauvegarde rien ; le getter dans cet état donne la norme 3 ms.

Comportement

  • Le paramétrage est général pour le profil actuel : les modifications dans un autre script ou UI sont visibles la prochaine fois que vous le lirez. Zéro est un paramètre valide, ce n'est pas un signe de données manquantes et ce n'est pas une raison pour renvoyer l'ancien cache de script.
  • La valeur par défaut est 3 ms. Après l'envoi d'une opération automatique, le gestionnaire fixe l'heure de la prochaine opération autorisée. Les listes de fournisseurs arrivées plus tôt ne sont pas traitées par ce passe ; getter ne déclenche pas d'attente et n'envoie pas lui-même d'achat/vente.
  • Il ne s'agit pas d'un délai de MassMove, Drag/Drop ou d'un trading manuel. La nouvelle valeur est appliquée lors de la planification du prochain délai ; le moment déjà attribué n'est pas recalculé.
  • Dans un hôte client standard, ces données d'état sont extraites du gestionnaire GetPersistentState et sont communes aux scripts/chat/macros du même monde/profil, et n'appartiennent pas à un seul script. Un autre processus ou un InjectionRuntimeState apparemment séparé a un état différent. Charger/effacer un profil peut le remplacer ; Les serial enregistrés sont toujours comparés au monde chargé.

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

1. Définir l'intervalle 350 ms - script direct

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

  • Value=350 — millisecondes entre les opérations automatiques autorisées.
  • Le paramètre est enregistré dans le profil actuel et est visible par les autres scripts.
UO.SetAutoSellDelay(350);
UO.Print(Convert.ToString(UO.GetAutoSellDelay()));

2. Supprimer le délai supplémentaire - fonction de script

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

  • Value=0 a une signification indépendante ; n'est pas remplacé par la valeur non nulle précédente.
  • Seul le délai change. Les règles, les listes et un commutateur de trading automatique général sont définis séparément.
return  RunScenario();
 object? RunScenario()
{
    UO.SetAutoSellDelay(0);
    var actual = UO.GetAutoSellDelay();
    if (Truth(actual == 0))
    {
        UO.Print("Delay disabled");
    }

    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. Appliquer la valeur calculée - Classe de script

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

  • request=70000 dépasse le maximum. appliqué lit le profil après les restrictions du setter.
  • Lorsque le profil est chargé, le résultat sera 65535. Pour revenir au délai standard, appelez explicitement le setter avec 3.
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 requested = 70000;
        UO.SetAutoSellDelay(requested);
        var applied = UO.GetAutoSellDelay();
        UO.Print("Requested: " + Convert.ToString(requested));
        UO.Print("Applied: " + Convert.ToString(applied));
        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.SetAutoSellDelay(value) — UO.SetAutoSellDelay(Any)

Paramètres: value (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "setautoselldelay":

                    state.AutoSellDelay = Math.Max(0, Arg(0));

                    bridge.SetAutoSellDelay(state.AutoSellDelay);

                    return InjectionValue.Unit;

UO.Shop

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

Signatures C#

void UO.Shop();

Imprime une liste locale des lignes commerciales.

Paramètres

Il n'y a pas de paramètres.

Valeur de retour

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

Comportement

  • ExecuteLegacyManualAlias lit bridge.GetShopList et concatène les lignes via "|" pour SystemMessage. Le menu vendeur ne s'ouvre pas, l'achat/vente ne s'effectue pas.
  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du 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.

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

1. Appel direct - script direct

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

  • Imprime une liste locale des lignes commerciales.
UO.Shop();

2. Option explicite - fonction de script

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

  • ExecuteLegacyManualAlias lit bridge.GetShopList et concatène les lignes via "|" pour SystemMessage. Le menu vendeur ne s'ouvre pas, l'achat/vente ne s'effectue pas.
return  RunScenario();
 object? RunScenario()
{
    UO.Shop();
    UO.Print(UO.GetArrayLength(UO.GetShopList()));
    return null;
}

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

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

  • Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du 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()
    {
        UO.Shop();
        UO.TextOpen();
        UO.TextPrint("Shop list was printed in the journal");
        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.Shop() — UO.Shop()

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 "shop": SystemMessage(string.Join(" | ", bridge.GetShopList())); break;

UO.VendorMenu

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

Signatures C#

void UO.VendorMenu(object? vendor);
void UO.VendorMenu(object? menu, object? choice);

Utilise un vendeur ou enregistre un crochet de menu permanent.

Paramètres

  • vendor — Formulaire avec un argument : serial/alias de l'objet vendeur.
  • menu — Un formulaire avec deux arguments : un titre et un élément de menu, tous deux sous forme de texte. Il s'agit d'une opération différente ; le premier argument n'est pas serial.
  • choice — Un formulaire avec deux arguments : un titre et un élément de menu, tous deux sous forme de texte. Il s'agit d'une opération différente ; le premier argument n'est pas serial.

Valeur de retour

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

Comportement

  • Un argument appelle bridge.UseObject. Les deux arguments appellent bridge.AddMenuHook(menu,choice,true), où true signifie un hook répétable.
  • N'achète ni ne vend automatiquement. L'ouverture et la sélection des menus sont déterminées par le serveur ; le hook enregistré agit sur les prochains menus correspondants jusqu'à son annulation.
  • Pour les formulaires de menu/choix, le responsable sélectionne le premier menu dont le titre contient une invite, insensible à la casse ; SessionMenu sélectionne le premier élément dont le nom contient le choix, également insensible à la casse. Le texte vierge convient à tout le monde ; le texte numérique est un fragment du nom, pas un index. Une sélection réussie envoie une réponse et ferme le menu local. Un hook unique n'est supprimé qu'après une sélection réussie ; il reste un crochet permanent.

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

1. Appel direct - script direct

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

  • Utilise un vendeur ou enregistre un crochet de menu permanent.
if (Truth(UO.Exists("lasttarget")))
{
    UO.VendorMenu("lasttarget");
}

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

2. Option explicite - fonction de script

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

  • Un argument appelle bridge.UseObject. Les deux arguments appellent bridge.AddMenuHook(menu,choice,true), où true signifie un hook répétable.
return  RunScenario();
 object? RunScenario()
{
    UO.VendorMenu("Vendor", "Buy");
    return null;
}

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

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

  • N'achète ni ne vend automatiquement. L'ouverture et la sélection des menus sont déterminées par le serveur ; le hook enregistré agit sur les prochains menus correspondants jusqu'à son annulation.
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.VendorMenu("Vendor", "Buy");
        UO.Print(UO.MenuHookPresent());
        UO.CancelMenu();
        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.VendorMenu(vendor) — UO.VendorMenu(Any)

Paramètres: vendor (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;

UO.VendorMenu(menu, choice) — UO.VendorMenu(Any,Any)

Paramètres: menu (Any), choice (Any)

Résultat: void / Unit.

Pendant un appel:

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

case "vendormenu":

                    if (arguments.Length >= 2) bridge.AddMenuHook(Text(0), Text(1), true);

                    else bridge.UseObject(Arg(0, bridge.LastTarget));

                    break;
⚠️ **GitHub.com Fallback** ⚠️