Repository navigation
FR UO Topic containers
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Accueil · C# · IDE · UO API · A–Z · Exemples · Langues
Lisez le contenu, ouvrez et sélectionnez le conteneur de destination. Un conteneur fermé ou pas encore chargé ne fournit pas au client une liste complète des éléments.
| Sujet | Commandes et explications |
|---|---|
| Backpack | UO.Backpack |
| Bank | UO.ObjAtLayerEx · UO.OpenContainer |
| OpenContainer | UO.OpenContainer |
| LastContainer | UO.LastContainer |
| ContainerOf | UO.ContainerOf · UO.GetParent |
| IsContainer | UO.IsContainer |
| Conteneurs imbriqués | UO.GetContent · UO.FindTypeEx · UO.FindTypesArrayEx |
| Receiving Container | UO.SetReceivingContainer · UO.UnsetReceivingContainer |
| Catch Bag | UO.SetCatchBag · UO.UnsetCatchBag |
| Container Transfers | UO.MoveItem · UO.MoveItems · UO.MassMove · UO.EmptyContainer |
UO.ContainerOf · UO.GetParent · UO.ContainerOff
UO.SetReceivingContainer · UO.UnsetReceivingContainer
UO.SetCatchBag · UO.UnsetCatchBag
Chaque carte de commande possède plusieurs scénarios indépendants : code direct, fonctions et classes. Vous trouverez ci-dessous une sélection de courts scénarios ; des restrictions et une analyse complète sont à prévoir.
Paramètres, résultat et tous les scénarios
UO.OpenContainer("lasttarget");Paramètres, résultat et tous les scénarios
UO.Print("Select a chest or corpse");
var sent = UO.EmptyContainer(350);
if (Truth(sent == 0))
{
UO.Print("Cancelled, empty, unavailable, or a transfer failed");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Backpack();Renvoie le ID du sac à dos équipé du personnage actuel.
Il n'y a pas de paramètres.
int - serial/ID, pas graphic/type, couche, nombre d'éléments ou bool. 0—il n'y a aucun objet actuel. Tous les bits 32 serial sont sauvegardés ; vérifiez != 0, pas == true ou > 0. Le résultat enregistré n'est pas lui-même mis à jour. Recherche un élément non supprimé sur le calque Backpack du lecteur actuel. Aucun joueur/détruit, aucun sac à dos ou sac retiré - 0. Renvoie le conteneur, pas le contenu ; ne crée pas de nouveau sac.
- Il n'y a pas de paramètres. Lit les données locales via Invoke sur le flux du jeu ; l'annulation du script interrompt l'attente de ce thread. N'envoie pas le colis, n'ouvre pas le conteneur/cible et ne transfère pas l'article.
- Le self/backpack intégré sans parenthèses est relu à moins qu'il ne soit remplacé par une variable de script. Les noms de chaînes sont traités par la commande de réception. Dans la destination de transport, "self" signifie le sac à dos et UO.Self() renvoie le serial du personnage. Pour le conteneur ID, utilisez explicitement UO.Backpack().
- World.Clear supprime le joueur ; les lectures ultérieures donnent 0. Entrer dans le monde ou changer de sac équipé peut changer ID. Les lectures individuelles ne sont pas atomiques. Un ID différent de zéro ne prouve pas la connexion, la résolution du serveur ou le chargement du contenu.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.Backpack();
UO.Print("Backpack: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- id stocke le résultat d'un appel ; HEX formate serial pour le journal. L’exemple ne sélectionne ni n’utilise rien.
var id = UO.Backpack();
UO.Print("ID: " + Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Paramètres et déroulement de l’exécution :
- avant/après sont lus à des intervalles de 250 ms. UO.Wait ajouté à titre d'exemple uniquement. L'égalité signifie un ID final identique ; des changements intermédiaires peuvent être manqués.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var before = UO.Backpack();
await Delay(250);
var after = UO.Backpack();
if (Truth(before != after))
{
UO.Print("ID changed: " + Hex(after));
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- candidat - enregistré ID LastTarget. IsOwnSerial (candidat) prend un serial et renvoie bool : true pour le propre ID actuel non nul, sinon false. La définition de la fonction est donnée dans son intégralité ; la cible ne change pas.
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 candidate = UO.LastTarget();
if (Truth(Truth(IsOwnSerial(candidate)) == true))
{
UO.Print("Own object selected");
}
else
{
UO.Print("Different object or no own object");
}
return null;
}
dynamic IsOwnSerial(dynamic candidate)
{
var current = UO.Backpack();
return Truth(current != 0) && Truth(current == candidate);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.ContainerOf(object? arg0);Lit le parent immédiat de l'élément.
-
name— Série/ID d'un objet spécifique : int, chaîne décimale/hexadécimale ou alias défini self, backpack, lasttarget, lastobject ou nom AddObject. Ce n'est pas graphic/type.
string de la forme "0x40001234" - serial du propriétaire du conteneur/personnage. Pour un objet au sol c'est soit "0x00000000" soit "0xFFFFFFFF". Pour un nom/objet inconnu ou un mobile - "0x00000000". Ce n'est pas le graphic du conteneur, ni le ID de l'élément lui-même, ni le propriétaire racine du sac imbriqué.
- Le champ Conteneur d'un élément local est lu, sans parcours récursif et sans appel au serveur. Vérifiez Exists avant d'interpréter un résultat nul. Ground utilise deux représentations valides.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.ContainerOf("backpack");
UO.Print("ContainerOf: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- l'élément est serial de la pile trouvée. type=0x0EED est transmis uniquement par FindType.
- parent désigne le sac à dos réel, et non le personnage qui contient le sac à dos.
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
var parent = UO.ContainerOf(item);
UO.Print(Convert.ToString(parent));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- L’argument est le sac à dos lui-même.
- Le parent du sac à dos équipé sera le serial du personnage.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var bag = UO.GetSerial("backpack");
if (Truth(UO.Exists(bag)))
{
UO.Print(Convert.ToString(UO.ContainerOf(bag)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- GetContent("ground") donne ID les objets en dehors des conteneurs.
- Les deux représentations de la terre sont valables. Un parent nul sans Exists ne suffit pas pour déduire la position d'un élément.
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 items = UO.GetContent("ground");
if (Truth(ArrayLength(items) > 0))
{
var item = items[0];
if (Truth(UO.Exists(item)))
{
UO.Print(Convert.ToString(UO.ContainerOf(item)));
}
}
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ContainerOff();Réinitialise le conteneur d’exécution de réception désigné.
Il n'y a pas de paramètres.
void - aucune valeur de retour.
- Appelle UnsetReceivingContainer et écrit State.ReceivingContainer=0. Les opérations Grab suivantes sans affectation explicite utilisent le sac à dos s'il en est un disponible. Les objets ne bougent pas et la fenêtre du conteneur ne se ferme pas.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
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.ContainerOff");
UO.ContainerOff();Paramètres et déroulement de l’exécution :
- L'état ReceivingContainer devient 0.
UO.ContainerOff();Paramètres et déroulement de l’exécution :
- L'affectation est effacée ; l'action ne déplace pas le contenu.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.SetReceivingContainer("backpack");
UO.ContainerOff();
return null;
}Paramètres et déroulement de l’exécution :
- L'état nul permet une réinitialisation répétée.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
UO.ContainerOff();
UO.ContainerOff();
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetContent(object? arg0);Lit le contenu direct d'un conteneur ou d'objets chargés au sol.
-
ID— Série/ID d'un objet spécifique : int, chaîne décimale/hexadécimale ou alias défini self, backpack, lasttarget, lastobject ou nom AddObject. Ce n'est pas graphic/type. Les lignes my/backpack sélectionnent le sac à dos. Seuls les terrains sélectionnés explicites 0, "0" ou "ground". Un alias inconnu, un sac à dos manquant, un ID négatif ou un type de valeur inapproprié génèrent un tableau vide.
Tableau - serial de chaque enfant direct. Pour ground/0 - articles hors conteneurs ; Les deux marques au sol normales 0 et 0xFFFFFFFF sont prises en compte. Sans entrées, un tableau vide est renvoyé. La liste contient ID, pas type et aucun calque.
- Les données déjà téléchargées par le client sont lues. La commande n'ouvre pas le conteneur, ne déplace pas les éléments et ne télécharge pas les objets depuis l'ensemble du serveur.
- Array - tableau avec des indices commençant à 0. Enregistrez-le dans var, vérifiez ArrayLength avant d'y accéder. Des éléments peuvent disparaître du monde après avoir pris un instantané : vérifiez Exists(serial) avant d'agir.
- Il n'y a pas de parcours récursif de sacs imbriqués, de tri à distance, de filtre Ignore ou FindDistance/FindVertical. L'instantané FindType habituel reste inchangé.
- Un coffre non ouvert peut paraître vide : l'absence de données reçues ne prouve pas que le serveur est vide. Utilisez d’abord le conteneur ouvert et attendez son contenu.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.GetContent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- ID="backpack" - le sac à dos du personnage actuel, éléments directement imbriqués uniquement.
- Longueur - nombre d'enregistrements/ID. Ce n'est pas le montant du montant en piles. La liste vide donne 0.
var items = UO.GetContent("backpack");
UO.Print(Convert.ToString(ArrayLength(items)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;Paramètres et déroulement de l’exécution :
- ID="backpack" - le sac à dos du personnage actuel, éléments directement imbriqués uniquement.
- items[i] — numérique serial. Hex est utilisé uniquement pour la sortie. La boucle n'accède pas au dernier index.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var items = UO.GetContent("backpack");
var i = 0;
while (Truth(i < ArrayLength(items)))
{
UO.Print("0x" + Hex(items[i]));
i = i + 1;
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- ID="backpack" - le sac à dos du personnage actuel, éléments directement imbriqués uniquement.
- Deux choses différentes sont vérifiées : l'enregistrement dans l'instantané et l'existence actuelle de l'objet. Ordre sans tri explicite ne signifie pas proximité.
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 items = UO.GetContent("backpack");
if (Truth(ArrayLength(items) > 0))
{
var first = items[0];
if (Truth(UO.Exists(first)))
{
UO.Print(UO.GetName(first));
}
}
else
{
UO.Print("Empty list");
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Paramètres et déroulement de l’exécution :
- ID="ground" sélectionne explicitement le sol. NPC/joueurs ne sont pas inclus dans cette liste.
- Le rayon de recherche ici n'est pas limité à FindDistance. Pour le filtre de type et de distance, il y a GetWorldItems(type, couleur, distance).
var groundItems = UO.GetContent("ground");
UO.Print(Convert.ToString(ArrayLength(groundItems)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetParent(object? arg0);Lit le parent immédiat de l'élément.
-
ObjID— Série/ID d'un objet spécifique : int, chaîne décimale/hexadécimale ou alias défini self, backpack, lasttarget, lastobject ou nom AddObject. Ce n'est pas graphic/type.
int - serial propriétaire du conteneur/personnage. Pour un élément au sol, il s'agit de 0 ou -1 (bits 0xFFFFFFFF), selon la saisie du client. Pour un objet inconnu ou Mobile - 0. Ce n'est pas le graphic du conteneur, ni le ID de l'élément lui-même, ni le propriétaire racine du sac imbriqué.
- Le champ Conteneur d'un élément local est lu, sans parcours récursif et sans appel au serveur. Vérifiez Exists avant d'interpréter un résultat nul. Ground utilise deux représentations valides.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.GetParent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- l'élément est serial de la pile trouvée. type=0x0EED est transmis uniquement par FindType.
- parent désigne le sac à dos réel, et non le personnage qui contient le sac à dos.
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
var parent = UO.GetParent(item);
UO.Print(Convert.ToString(parent));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- L’argument est le sac à dos lui-même.
- Le parent du sac à dos équipé sera le serial du personnage.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var bag = UO.GetSerial("backpack");
if (Truth(UO.Exists(bag)))
{
UO.Print(Convert.ToString(UO.GetParent(bag)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- GetContent("ground") donne ID les objets en dehors des conteneurs.
- Les deux représentations de la terre sont valables. Un parent nul sans Exists ne suffit pas pour déduire la position d'un élément.
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 items = UO.GetContent("ground");
if (Truth(ArrayLength(items) > 0))
{
var item = items[0];
if (Truth(UO.Exists(item)))
{
UO.Print(Convert.ToString(UO.GetParent(item)));
}
}
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;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Ground();Renvoie un indicatif de terrain spécial pour le paramètre de conteneur de recherche ou la destination de transfert.
Il n'y a pas de paramètres.
int, toujours 0. Ce zéro est un indicateur de sol valide, pas false, pas une erreur de recherche, pas un élément ID, graphic, un numéro de carte ou des coordonnées. Ne cochez pas Ground() comme signe de succès ; vérifiez le résultat de la recherche ou du transfert qui a transmis cette valeur.
- Il n'y a pas de paramètres. L'appel Ground() lui-même ne recherche rien, ne déplace rien, n'ouvre pas de cible, n'envoie pas de paquets et ne modifie pas les résultats de la recherche précédente. Avant d'entrer dans le jeu, il renvoie également 0.
- Envoyez les commandes FindType, FindList, Count, FindTypeEx, FindTypesArrayEx, CountEx ou MoveItem à la position du conteneur/destination. La recherche voit les objets du monde chargés, mais ne charge pas les cellules distantes. Pour le transfert au sol, X/Y/Z sont les coordonnées du monde, pas les pixels de la fenêtre du conteneur.
- FindType(type, couleur) apparaît toujours dans l'inventaire : le deuxième paramètre est la couleur. Pour le terrain, écrivez FindType(type, couleur, UO.Ground()). Dans l'ancien compact FindType/MoveItem le numéro -1 indique l'inventaire ; en compatible FindTypeEx/FindTypesArrayEx/CountEx - 1 est également autorisé comme masse. Utilisez UO.Ground() ou le nom explicite ground, ne transférez pas de désignations numériques entre différentes commandes sans vérifier.
- Les différences de notation entre les commandes et les exemples ci-dessus décrivent ce client.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.Ground();
UO.Print("Ground: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- la destination reçoit int 0, Print génère ce numéro. L’appel en lui-même ne jette rien.
var destination = UO.Ground();
UO.Print(Convert.ToString(destination));Paramètres et déroulement de l’exécution :
- 0x0EED - graphiques dorés ; le second -1 signifie n'importe quel hue. Ground() définit une recherche dans le monde, false désactive la récursion du conteneur. FindTypeEx renvoie un serial ou 0 s'il n'y a aucun résultat. != 0 vérifie ce serial. Le courant FindDistance/FindVertical et la liste Ignore sont utilisés.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var id = UO.FindTypeEx(0x0EED, -1, UO.Ground(), false);
if (Truth(id != 0))
{
UO.Print(Hex(id));
}
else
{
UO.Print("0");
}
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- FindGroundTypes(firstType, secondType, rayon, hauteur) recherche l'or 0x0EED et la perle noire 0x0F7A avec rayon=5 et hauteur=10. déclarer les types de variables[1] crée deux cellules ; couleurs[0] et conteneurs[0] - un chacun. La pile entière compte pour un résultat ; les types/couleurs sont des alternatives, les conteneurs qui se croisent ne dupliquent pas ID. La fonction renvoie le tableau enregistré serial ; Restaure enfin les deux limites. Sorties principales tous les ID. Le code fonction est donné dans son intégralité.
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 ids = FindGroundTypes(0x0EED, 0x0F7A, 5, 10);
foreach (var id in ids)
{
UO.Print(Hex(id));
}
return null;
}
dynamic FindGroundTypes(dynamic firstType, dynamic secondType, dynamic radius, dynamic height)
{
var oldDistance = UO.FindDistance();
var oldVertical = UO.FindVertical();
dynamic[] types = new dynamic[checked((int)(1) + 1)];
types[0] = firstType;
types[1] = secondType;
dynamic[] colors = new dynamic[checked((int)(0) + 1)];
colors[0] = -1;
dynamic[] containers = new dynamic[checked((int)(0) + 1)];
containers[0] = UO.Ground();
try
{
UO.FindDistance(radius);
UO.FindVertical(height);
UO.FindTypesArrayEx(types, colors, containers, false);
return UO.GetFoundItems();
}
finally
{
UO.FindDistance(oldDistance);
UO.FindVertical(oldVertical);
}
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}Paramètres et déroulement de l’exécution :
- Remplacez 0x40001001 par serial d'un élément disponible. IsObjectExists vérifie d'abord l'objet chargé. MoveItem(article, montant, destination, X, Y, Z) : montant=0 - la pile entière, Ground() - le terrain, GetX/GetY/GetZ - la cellule du monde du personnage. le résultat est 1 si le client a accepté la demande de transfert, sinon 0. C'est le résultat de MoveItem, pas de Ground(), et non d'une confirmation de livraison du serveur.
var item = 0x40001001;
if (Truth(UO.IsObjectExists(item)))
{
var result = UO.MoveItem(item, 0, UO.Ground(), UO.GetX("self"), UO.GetY("self"), UO.GetZ("self"));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsContainer(object? arg0);Vérifie l'indicateur Conteneur dans les données de tuile du type graphique de l'élément chargé.
-
ObjID— Obligatoire serial/ID d'un objet spécifique : int, chaîne hexadécimale ou alias self, backpack, lasttarget, lastobject, lastcontainer, laststatus, finditem, lastcorpse ou nom AddObject. Ce n'est pas graphic/type. Le nom non spécifié se résout en 0 ; la commande n'ouvre aucune nouvelle cible.
int 1 - un élément connu a un attribut de conteneur dans ses données graphic. int 0 - il n'y a pas de signe de ce type, l'objet est mobile, inconnu ou supprimé. Il ne s'agit pas du nombre d'objets contenus dans le conteneur, ni du signe d'une décharge ouverte, ni d'une confirmation de l'accès au contenu.
Le résultat de la commande est un indicateur numérique : 1 signifie une condition remplie, 0 signifie une condition non remplie. Après var result = command(...) vérifiez si (result != 0) ou if (result == 0). Enregistrez le résultat d'un appel : un appel répété peut effectuer à nouveau l'action ou lire l'état qui a déjà changé.
- Le modèle client local est lu ; Il n'y a aucune requête au serveur, pas d'attente ni de déplacement.
- Le résultat fait référence au moment de la lecture. Après UO.Wait ou une autre action, l'objet et ses drapeaux peuvent changer.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
var result = UO.IsContainer(UO.GetSerial("lastobject"));
UO.Print("IsContainer: " + Convert.ToString(result));Paramètres et déroulement de l’exécution :
- item est le serial de l'objet lastobject, pas son type.
- La commande lit uniquement l'attribut du conteneur et ne l'ouvre pas.
var item = UO.GetSerial("lastobject");
if (Truth(UO.IsContainer(item)))
{
UO.Print("Known container: " + item);
}
else
{
UO.Print("Not a known container");
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Le sac doit être sélectionné à l'avance et son contenu doit être connu du client.
- FindType reçoit de l'or type, n'importe quel conteneur hue et serial. Un résultat vide ne prouve pas que le conteneur du serveur est vide.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var bag = UO.GetSerial("lasttarget");
if (Truth(UO.IsContainer(bag)))
{
var found = UO.FindType(0x0EED, -1, bag);
UO.Print("Known gold item: " + found);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Exists et IsContainer répondent à des questions différentes sur le même serial.
- Si les données des tuiles ne conviennent pas ou ne sont pas encore disponibles, la classification peut différer de celle attendue ; ne l'utilisez pas pour vérifier les droits de la poitrine.
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 bag = UO.GetSerial("backpack");
var exists = UO.Exists(bag);
var container = UO.IsContainer(bag);
UO.Print("Loaded: " + Convert.ToString(exists));
UO.Print("Container flag: " + Convert.ToString(container));
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastContainer();Lit serial du dernier conteneur.
Il n'y a pas de paramètres.
int — enregistré serial ; 0 signifie que serial n'est pas installé. Ce n'est pas bool ni graphic/type ; un ID différent de zéro peut ne plus exister dans le monde.
- Source du champ : _world.LastContainer. La commande ne sélectionne, n’utilise ou n’attaque pas l’objet.
- Lit l'état local actuel. Il n’y a pas de package, de cible ou de mise à jour automatique ; les lectures individuelles peuvent voir différents états.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
Le résultat d’un seul appel est affiché dans le journal. Un nombre n’est pas converti en bool ; un tableau est affiché par son nombre d’éléments.
object? result = UO.LastContainer();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Paramètres et déroulement de l’exécution :
- Lit serial du dernier conteneur.
var id = UO.LastContainer();
UO.Print(Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Paramètres et déroulement de l’exécution :
- Source du champ : _world.LastContainer. La commande ne sélectionne, n’utilise ou n’attaque pas l’objet.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
var id = UO.LastContainer();
if (Truth(id != 0) && Truth(UO.Exists(id)))
{
UO.Print(UO.GetName(id));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Lit l'état local actuel. Il n’y a pas de package, de cible ou de mise à jour automatique ; les lectures individuelles peuvent voir différents états.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
var before = UO.LastContainer();
UO.Wait(500);
var after = UO.LastContainer();
UO.Print(before = after);
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.OpenContainer(object? arg0);
void UO.OpenContainer(object? arg0, object? arg1);Demandes d'ouverture d'un conteneur.
-
id— Objet série/ID : int, chaîne numérique/hexadécimale ou alias établi, par exemple "lasttarget". Ce n'est pas graphic/type. Vérifiez l’objet chargé avant d’agir. -
timeout— Facultatif int, millisecondes ; la valeur par défaut est 0. Une valeur négative n’ajoute pas d’anticipation.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- Bridge.OpenContainer appelle UseObject(id), puis UO.Wait(timeout) uniquement si timeout>0. La pause est fixe ; la présence/le contenu du conteneur ne sont pas vérifiés.
- Sans délai d'attente, il n'y a pas de pause. La fin de la pause ne doit pas être considérée comme une preuve que le contenu est ouvert ou complètement chargé.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.
UO.Print("Calling UO.OpenContainer");
UO.OpenContainer("lasttarget");Paramètres et déroulement de l’exécution :
- Demandes d'ouverture d'un conteneur.
UO.OpenContainer("lasttarget");Paramètres et déroulement de l’exécution :
- Bridge.OpenContainer appelle UseObject(id), puis UO.Wait(timeout) uniquement si timeout>0. La pause est fixe ; la présence/le contenu du conteneur ne sont pas vérifiés.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
if (Truth(UO.Exists("lasttarget")))
{
UO.OpenContainer("lasttarget", 1000);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Paramètres et déroulement de l’exécution :
- Sans délai d'attente, il n'y a pas de pause. La fin de la pause ne doit pas être considérée comme une preuve que le contenu est ouvert ou complètement chargé.
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 id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.OpenContainer(id, 1000);
UO.Print(UO.GetName(id));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetCatchBag();
void UO.SetCatchBag(object? arg0);-
container— Numéro de série du conteneur, son nom enregistré, "backpack" ou "my". 0 annule l'attribution. Sans arguments, lastobject est utilisé - le dernier objet appliqué, non réinitialisé. Si le nom ne se résout pas en serial positif, l'affectation est supprimée. L'installation elle-même ne vérifie pas la disponibilité du serveur ni l'adéquation de l'objet à la migration.
void : Aucune valeur de retour. Vous ne pouvez pas utiliser var résultat = UO.SetCatchBag(...), si UO.SetCatchBag(...), ou attendre le nombre 1 comme confirmation. Le mouvement réel est effectué par une commande distincte, par exemple Grab.
- UO.SetCatchBag() et UO.SetReceivingContainer() ont des valeurs de forme différentes sans arguments : le premier prend lastobject, le second réinitialise le conteneur.
- Réinitialisation explicite : UO.UnsetCatchBag(), UO.UnsetReceivingContainer() ou UO.SetCatchBag(0). Après la réinitialisation, Grab utilise son sac à dos sans mission distincte.
- Le réglage de serial ne signifie pas que le serveur autorisera l'élément à y être placé. La distance, l'existence et la disponibilité sont vérifiées lors du transfert effectif.
- 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é.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.
UO.Print("Calling UO.SetCatchBag");
UO.SetCatchBag();Paramètres et déroulement de l’exécution :
- Le paramètre de conteneur unique reçoit la chaîne "backpack". Le runtime le permet dans serial de votre sac à dos.
- L'appel est écrit sur une ligne séparée sans résultat var car il renvoie Unit. Le message Print décrit le paramétrage et ne confirme pas le transfert de l'élément.
var destination = "backpack";
UO.SetCatchBag(destination);
UO.Print("Receiving container: own backpack");Paramètres et déroulement de l’exécution :
- Cette surcharge n'a pas de paramètres : en interne le nom lastobject est utilisé.
- Les parenthèses vides ne signifient pas une réinitialisation. Présélectionnez le conteneur approprié par un simple double-clic. La disponibilité du sac de transport dépend de l'état actuel du jeu.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.SetCatchBag();
UO.Print("Destination taken from lastobject");
return null;
}Paramètres et déroulement de l’exécution :
- Lors du premier appel, containers=bag contient la chaîne hexadécimale serial. 0x40001234 est un exemple, vous devez le remplacer par votre propre valeur.
- Lors du deuxième appel, containers=0 le désattribue. Le Grab suivant sans conteneur explicite utilise un sac à dos.
- La réinitialisation est située après le bloc de report prévu. La définition et la réinitialisation ne renvoient pas de résultat et ne déplacent pas les éléments d'elles-mêmes.
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 bag = "0x40001234";
UO.SetCatchBag(bag);
UO.Print("Configured destination: " + bag);
UO.SetCatchBag(0);
UO.Print("Destination reset to the normal backpack fallback");
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetReceivingContainer();
void UO.SetReceivingContainer(object? arg0);Définit le conteneur de réception pour le futur Grab.
-
id- Facultatif serial/alias. "my"/"backpack" - sac à dos actuel. Le positif ID est conservé sans contrôle d'existence ; 0/negative/no argument efface le paramètre.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- La chaîne est résolue GetObject, sauf pour le spécial my/backpack. Bridge.SetReceivingContainer attribue State.ReceivingContainer. L'élément n'est pas transféré par cet appel.
- Après le nettoyage, Grab utilise le sac à dos sans but explicite. Un ID positif à lui seul ne confirme pas que le conteneur est chargé ou accessible au serveur.
- 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é.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.
UO.Print("Calling UO.SetReceivingContainer");
UO.SetReceivingContainer();Paramètres et déroulement de l’exécution :
- Définit le conteneur de réception pour le futur Grab.
UO.SetReceivingContainer("backpack");Paramètres et déroulement de l’exécution :
- La chaîne est résolue GetObject, sauf pour le spécial my/backpack. Bridge.SetReceivingContainer attribue State.ReceivingContainer. L'élément n'est pas transféré par cet appel.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.SetReceivingContainer();
return null;
}Paramètres et déroulement de l’exécution :
- Après le nettoyage, Grab utilise le sac à dos sans but explicite. Un ID positif à lui seul ne confirme pas que le conteneur est chargé ou accessible au serveur.
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 bag = UO.GetSerial("lastcontainer");
if (Truth(UO.IsContainer(bag)))
{
UO.SetReceivingContainer(bag);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetCatchBag();Efface le conteneur de réception pour Grab.
Il n'y a pas de paramètres.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- ExecuteLegacyManualAlias appelle UnsetReceivingContainer ; le pont attribue ReceivingContainer=0. Next Grab utilise un sac à dos. Il ne s’agit pas d’un retrait de sac.
- Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.
- 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é.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.
UO.Print("Calling UO.UnsetCatchBag");
UO.UnsetCatchBag();Paramètres et déroulement de l’exécution :
- Efface le conteneur de réception pour Grab.
UO.UnsetCatchBag();Paramètres et déroulement de l’exécution :
- ExecuteLegacyManualAlias appelle UnsetReceivingContainer ; le pont attribue ReceivingContainer=0. Next Grab utilise un sac à dos. Il ne s’agit pas d’un retrait de sac.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.SetCatchBag("backpack");
UO.UnsetCatchBag();
return null;
}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 await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
UO.UnsetCatchBag();
UO.Print(UO.Backpack());
return null;
}
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetReceivingContainer();Efface le conteneur de réception enregistré.
Il n'y a pas de paramètres.
void - aucune valeur. Appelez sur une ligne séparée ; l'achèvement ne confirme pas l'action du serveur.
- UnsetReceivingContainer attribue ReceivingContainer=0. Next Grab utilise un sac à dos sans but explicite. Les articles ne sont pas transférés.
- Modifie ou affiche uniquement les données locales spécifiées. Cette commande n'a pas de confirmation du serveur.
- 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é.
Chaque exemple peut être enregistré dans un fichier séparé .csx et exécuté dans IDE. Les fonctions d'objet UO et d'attente fournissent l'hôte de la session de jeu en cours. Remplacez les noms, coordonnées et adresses de la démo serial par les vôtres.
Exécutez ce code dans un fichier .csx séparé. Les arguments sont visibles dans l’appel ; remplacez les noms, serials et adresses d’exemple par les vôtres.
La commande forme une instruction séparée. Le message précédent indique le début de l’appel et ne confirme aucune action du serveur.
UO.Print("Calling UO.UnsetReceivingContainer");
UO.UnsetReceivingContainer();Paramètres et déroulement de l’exécution :
- Efface le conteneur de réception enregistré.
UO.UnsetReceivingContainer();Paramètres et déroulement de l’exécution :
- UnsetReceivingContainer attribue ReceivingContainer=0. Next Grab utilise un sac à dos sans but explicite. Les articles ne sont pas transférés.
return await RunScenarioAsync();
async Task<object?> RunScenarioAsync()
{
UO.SetReceivingContainer("backpack");
UO.UnsetReceivingContainer();
return null;
}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 await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
async public Task<object?> RunScenarioAsync()
{
UO.UnsetReceivingContainer();
UO.Print(UO.Backpack());
return null;
}
}ClassicUO — Bad Newbie & C# Scripts IDE