Repository navigation
ES UO Topic containers
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Lea el contenido, abra y seleccione el contenedor de destino. Un contenedor cerrado o aún no cargado no proporciona al cliente una lista completa de artículos.
| Tema | Comandos y explicaciones |
|---|---|
| Backpack | UO.Backpack |
| Bank | UO.ObjAtLayerEx · UO.OpenContainer |
| OpenContainer | UO.OpenContainer |
| LastContainer | UO.LastContainer |
| ContainerOf | UO.ContainerOf · UO.GetParent |
| IsContainer | UO.IsContainer |
| Contenedores anidados | 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
Cada tarjeta de comando tiene varios escenarios independientes: código directo, funciones y clases. A continuación se muestran escenarios breves seleccionados; restricciones y análisis completos están en las cartas.
Parámetros, resultado y todos los escenarios
UO.OpenContainer("lasttarget");Parámetros, resultado y todos los escenarios
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();Devuelve el ID de la mochila equipada del personaje actual.
No hay parámetros.
int - serial/ID, no graphic/type, capa, número de elementos o bool. 0: no hay ningún objeto actual. Se guardan todos los bits 32 serial; marque != 0, no == true o > 0. El resultado guardado no se actualiza por sí solo. Busca un elemento recuperado en la capa Backpack del reproductor actual. No hay jugador/destruido, no se ha quitado ninguna mochila o bolsa - 0. Devuelve el contenedor, no el contenido; no crea una nueva bolsa.
- No hay parámetros. Lee datos locales a través de Invoke en la transmisión del juego; cancelar el script interrumpe la espera de ese hilo. No envía el paquete, no abre el contenedor/destino y no transfiere el artículo.
- El self/backpack integrado sin paréntesis se lee nuevamente a menos que lo anule una variable de script. Los nombres de cadenas son procesados por el comando de recepción. En el destino de transporte, "self" significa la mochila y UO.Self() devuelve el serial del personaje. Para el contenedor ID, utilice UO.Backpack() explícitamente.
- World.Clear elimina al jugador; las lecturas posteriores arrojan 0. Entrar al mundo o cambiar la bolsa equipada puede cambiar ID. Las lecturas individuales no son atómicas. Un ID distinto de cero no prueba la conexión, la resolución del servidor ni la carga de contenido.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.Backpack();
UO.Print("Backpack: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- id almacena el resultado de una llamada; HEX formatea serial para el registro. El ejemplo no selecciona ni usa nada.
var id = UO.Backpack();
UO.Print("ID: " + Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- antes/después se leen a intervalos de 250 ms. UO.Wait agregado solo por ejemplo. Igualdad significa idéntica final ID; Es posible que se pasen por alto los cambios intermedios.
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;Parámetros y flujo de ejecución:
- candidato - guardado ID LastTarget. IsOwnSerial(candidato) toma uno serial y devuelve bool: true para el actual ID distinto de cero; de lo contrario, false. La definición de la función se proporciona en su totalidad; El objetivo no cambia.
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 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;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Backpack:bridge.Backpack.
Código interno de implementación; no es un script independiente.
case "backpack": return new InjectionValue(bridge.Backpack);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.ContainerOf(object? name);Lee el padre inmediato del elemento.
-
name— Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type.
string de la forma "0x40001234" - serial del propietario del contenedor/carácter. Para un elemento en el suelo, es "0x00000000" o "0xFFFFFFFF". Para nombre/objeto desconocido o móvil: "0x00000000". No es el graphic del contenedor, ni el ID del elemento en sí, ni el propietario raíz de la bolsa anidada.
- Se lee el campo Contenedor de un elemento local, sin recorrido recursivo ni llamada al servidor. Marque Exists antes de interpretar un resultado nulo. Ground utiliza dos representaciones válidas.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.ContainerOf("backpack");
UO.Print("ContainerOf: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- El elemento es serial de la pila encontrada. type=0x0EED se transmite únicamente por FindType.
- padre denota la mochila real, no el carácter que contiene la mochila.
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;Parámetros y flujo de ejecución:
- El argumento es la propia mochila.
- El padre de la mochila equipada será el serial del personaje.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- GetContent("ground") proporciona ID elementos fuera de los contenedores.
- Ambas representaciones de la tierra son válidas. Un padre nulo sin Exists no es suficiente para inferir la posición de un objeto.
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 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;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: name (Any)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ContainerOf. -
InjectionScript.Runtime.InjectionApiUO.TryGetObject:TryGetObject(name, out int id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ContainerOf:bridge.ContainerOf(id).
Código interno de implementación; no es un script independiente.
public string ContainerOf(InjectionValue name)
{
if (TryGetObject(name, out int id))
{
var containerId = bridge.ContainerOf(id);
if (containerId < 0)
return "0xFFFFFFFF";
return $"0x{containerId:X8}";
}
return "0x00000000";
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ContainerOff();Restablece el contenedor de tiempo de ejecución de recepción designado.
No hay parámetros.
void: sin valor de retorno.
- Llama a UnsetReceivingContainer y escribe Estado.ReceivingContainer=0. Las siguientes operaciones de Grab sin una asignación explícita utilizan la mochila, si hay una disponible. Los artículos no se mueven y la ventana del contenedor no se cierra.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.ContainerOff");
UO.ContainerOff();Parámetros y flujo de ejecución:
- El estado ReceivingContainer se convierte en 0.
UO.ContainerOff();Parámetros y flujo de ejecución:
- La asignación está borrada; la acción no mueve el contenido.
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer("backpack");
UO.ContainerOff();
return null;
}Parámetros y flujo de ejecución:
- El estado nulo permite un reinicio repetido.
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.ContainerOff();
UO.ContainerOff();
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer().
Código interno de implementación; no es un script independiente.
public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetContent(object? id);Lee el contenido directo de un contenedor o artículos cargados en el suelo.
-
id— Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type. Las líneas my/backpack seleccionan la mochila. Sólo se seleccionan terrenos explícitos 0, "0" o "ground". Un alias desconocido, una mochila perdida, un ID negativo o un tipo de valor inadecuado dan como resultado una matriz vacía.
Matriz - serial de cada hijo directo. Para ground/0 - artículos fuera de contenedores; Se tienen en cuenta ambas marcas normales del suelo 0 y 0xFFFFFFFF. Sin entradas, se devuelve una matriz vacía. La lista contiene ID, no type y ninguna capa.
- Se leen los datos ya descargados por el cliente. El comando no abre el contenedor, no mueve elementos ni descarga objetos de todo el servidor.
- Matriz: matriz con índices que comienzan desde 0. Guárdalo en var, marca ArrayLength antes de acceder. Los elementos pueden desaparecer del mundo después de tomar una instantánea: marque Exists(serial) antes de actuar.
- No hay recorrido recursivo de bolsas anidadas, clasificación por distancia, filtro Ignore o FindDistance/FindVertical. La instantánea normal de FindType permanece sin cambios.
- Un cofre sin abrir puede parecer vacío: la ausencia de datos recibidos no prueba que el servidor esté vacío. Primero use un recipiente abierto y espere su contenido.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetContent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
- Longitud: número de registros/ID. Esta no es la cantidad de Monto en pilas. La lista vacía da 0.
var items = UO.GetContent("backpack");
UO.Print(Convert.ToString(ArrayLength(items)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;Parámetros y flujo de ejecución:
- ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
- elementos [i] - numérico serial. Hex se utiliza sólo para salida. El bucle no accede al último índice.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- ID="backpack" - mochila del personaje actual, solo elementos anidados directos.
- Se verifican dos cosas diferentes: el registro en la instantánea y la existencia del objeto ahora. Orden sin clasificación explícita no significa cercanía.
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 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;
}Parámetros y flujo de ejecución:
- ID="ground" selecciona explícitamente el terreno. NPC/jugadores no están incluidos en esta lista.
- El radio de búsqueda aquí no se limita a FindDistance. Para el filtro type y la distancia hay GetWorldItems(type,color,distancia).
var groundItems = UO.GetContent("ground");
UO.Print(Convert.ToString(ArrayLength(groundItems)));
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: id (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
InjectionScript.Runtime.NumberConversions.TryStr2Int:NumberConversions.TryStr2Int(text, out int literal). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(text). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetEquipment:bridge.GetEquipment(container). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetContent:bridge.GetContent(container). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Backpack:bridge.Backpack.
Código interno de implementación; no es un script independiente.
case "getcontent":
case "getequipment":
{
InjectionValue selection = arguments[0];
bool ground = false, explicitZero;
int container;
if (selection.Kind == InjectionValueKind.String)
{
string text = Text(0).Trim();
ground = text.Equals("ground", StringComparison.OrdinalIgnoreCase);
explicitZero = NumberConversions.TryStr2Int(text, out int literal) && literal == 0;
container = ground ? 0 : text.Equals("my", StringComparison.OrdinalIgnoreCase)
? bridge.Backpack : GetObject(text);
}
else
{
if (selection.Kind != InjectionValueKind.Integer && selection.Kind != InjectionValueKind.Decimal)
return new InjectionValue(Array.Empty<InjectionValue>());
container = Arg(0);
explicitZero = selection.Kind == InjectionValueKind.Integer ? selection.Integer == 0 : selection.Decimal == 0d;
}
// Only an explicit ground/zero selector may query world items.
if (container < 0 || container == 0 && !ground && !explicitZero)
return new InjectionValue(Array.Empty<InjectionValue>());
bool equipment = name.Equals("GetEquipment", StringComparison.OrdinalIgnoreCase);
int[] items = equipment
? container == 0 ? Array.Empty<int>() : bridge.GetEquipment(container)
: bridge.GetContent(container);
return new InjectionValue(items.Select(serial => new InjectionValue(serial)).ToArray());
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetParent(object? objID);Lee el padre inmediato del elemento.
-
objID— Serie/ID de un objeto específico: int, cadena decimal/hexadecimal o alias de conjunto self, backpack, lasttarget, lastobject o nombre AddObject. Esto no es graphic/type.
int - serial propietario del contenedor/carácter. Para un artículo en tierra, es 0 o -1 (bits 0xFFFFFFFF), dependiendo de la entrada del cliente. Para un objeto o móvil desconocido: 0. No es el graphic del contenedor, ni el ID del elemento en sí, ni el propietario raíz de la bolsa anidada.
- Se lee el campo Contenedor de un elemento local, sin recorrido recursivo ni llamada al servidor. Marque Exists antes de interpretar un resultado nulo. Ground utiliza dos representaciones válidas.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.GetParent("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- El elemento es serial de la pila encontrada. type=0x0EED se transmite únicamente por FindType.
- padre denota la mochila real, no el carácter que contiene la mochila.
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;Parámetros y flujo de ejecución:
- El argumento es la propia mochila.
- El padre de la mochila equipada será el serial del personaje.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- GetContent("ground") proporciona ID elementos fuera de los contenedores.
- Ambas representaciones de la tierra son válidas. Un padre nulo sin Exists no es suficiente para inferir la posición de un objeto.
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 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;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: objID (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ContainerOf:bridge.ContainerOf(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "getparent": return new InjectionValue(bridge.ContainerOf(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Ground();Devuelve un designador de terreno especial para el parámetro de búsqueda del contenedor o el destino de transferencia.
No hay parámetros.
int, siempre 0. Este cero es un designador de terreno válido, no false, ni un error de búsqueda, ni un elemento ID, graphic, un número de mapa o una coordenada. No marque Ground() como señal de éxito; verifique el resultado de búsqueda o transferencia al que se le pasó este valor.
- No hay parámetros. La llamada Ground() en sí no busca nada, no mueve nada, no abre el objetivo, no envía paquetes y no cambia los resultados de la búsqueda anterior. Antes de entrar al juego, también devuelve 0.
- Envíe los comandos FindType, FindList, Count, FindTypeEx, FindTypesArrayEx, CountEx o MoveItem a la posición del contenedor/destino. La búsqueda ve objetos del mundo cargados, pero no carga celdas distantes. Para la transferencia al suelo, X/Y/Z son las coordenadas mundiales, no los píxeles de la ventana del contenedor.
- FindType(type, color) todavía aparece en el inventario: el segundo parámetro es el color. Para tierra, escriba FindType(type, color, UO.Ground()). En el antiguo compacto FindType/MoveItem el número -1 indica inventario; en compatible FindTypeEx/FindTypesArrayEx/CountEx - 1 también se permite como tierra. Utilice UO.Ground() o el nombre explícito ground, no transfiera designaciones numéricas entre diferentes comandos sin verificar.
- Las diferencias de notación entre los comandos y los ejemplos anteriores describen este cliente.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.Ground();
UO.Print("Ground: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- el destino recibe int 0, Print genera este número. La llamada en sí no descarta nada.
var destination = UO.Ground();
UO.Print(Convert.ToString(destination));Parámetros y flujo de ejecución:
- 0x0EED - gráficos dorados; el segundo -1 significa cualquier hue. Ground() establece una búsqueda en el mundo, false desactiva la recursividad del contenedor. FindTypeEx devuelve uno serial o 0 si no hay resultado. != 0 comprueba esto serial. Se utilizan el FindDistance/FindVertical actual y la lista Ignore.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- FindGroundTypes(firstType, secondType, radio, altura) busca oro 0x0EED y perla negra 0x0F7A con radio=5 y altura=10. declarar los tipos de variables [1] crea dos celdas; colores[0] y contenedores[0] - uno cada uno. Toda la pila cuenta como un resultado; los tipos/colores son alternativos, los contenedores que se cruzan no se duplican ID. La función devuelve la matriz guardada serial; Finalmente restablece ambos límites. Salidas principales cada ID. El código de función se proporciona completo.
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 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");
}Parámetros y flujo de ejecución:
- Reemplace 0x40001001 con serial de un artículo disponible. IsObjectExists primero verifica el objeto cargado. MoveItem(artículo, cantidad, destino, X, Y, Z): cantidad=0 - toda la pila, Ground() - tierra, GetX/GetY/GetZ - la celda mundial del personaje. El resultado es 1 si el cliente aceptó la solicitud de transferencia, en caso contrario 0. Este es el resultado de MoveItem, no de Ground(), y no de una confirmación de entrega del servidor.
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;C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
case "ground": return new InjectionValue(0);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.IsContainer(object? objID);Comprueba la bandera del contenedor en los datos del mosaico del tipo gráfico del elemento cargado.
-
objID— Obligatorio serial/ID de un objeto específico: int, cadena hexadecimal o alias self, backpack, lasttarget, lastobject, lastcontainer, último estado, elemento de búsqueda, último cadáver o nombre AddObject. Esto no es graphic/type. El nombre no especificado se resuelve en 0; el comando no abre ningún objetivo nuevo.
int 1: un elemento conocido tiene un atributo de contenedor en sus datos graphic. int 0: no existe tal signo, el objeto es mobile, desconocido o eliminado. Esta no es la cantidad de cosas en el contenedor, ni una señal de que el contenedor está abierto, ni una confirmación del acceso al contenido.
El resultado del comando es una bandera numérica: 1 significa una condición cumplida, 0 significa una condición no cumplida. Después de var resultado = comando(...) verifique si (resultado! = 0) o si (resultado == 0). Guarde el resultado de una llamada: una llamada repetida puede realizar la acción nuevamente o leer el estado que ya cambió.
- Se lee el modelo del cliente local; No hay solicitudes al servidor, ni esperas ni movimientos.
- El resultado se refiere al momento de la lectura. Después de UO.Wait u otra acción, el objeto y sus indicadores pueden cambiar.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
var result = UO.IsContainer(UO.GetSerial("lastobject"));
UO.Print("IsContainer: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- El elemento es el serial del objeto lastobject, no su type.
- El comando solo lee el atributo del contenedor y no lo abre.
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;Parámetros y flujo de ejecución:
- La bolsa debe ser seleccionada con antelación y el cliente debe conocer su contenido.
- FindType recibe oro type, cualquier contenedor hue y serial. Un resultado vacío no prueba que el contenedor del servidor esté vacío.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- Exists y IsContainer responden preguntas diferentes sobre el mismo serial.
- Si los TileData no son adecuados o aún no están disponibles, la clasificación puede diferir de lo esperado; no lo utilices como control de los derechos del cofre.
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 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;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: objID (Any)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.IsContainer:bridge.IsContainer(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "iscontainer": return new InjectionValue(bridge.IsContainer(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.LastContainer();Lee el serial del último contenedor.
No hay parámetros.
int — guardado serial; 0 significa serial no está instalado. No es bool ni graphic/type; Es posible que un ID distinto de cero ya no exista en el mundo.
- Fuente del campo: _world.LastContainer. El comando no selecciona, usa ni ataca el objeto.
- Lee el estado local actual. No hay paquete, objetivo o actualización automática; las lecturas individuales pueden ver diferentes estados.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El resultado de una sola llamada se muestra en el diario. Un número no se convierte en bool; para un array se muestra su cantidad de elementos.
object? result = UO.LastContainer();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Lee el serial del último contenedor.
var id = UO.LastContainer();
UO.Print(Hex(id));
string Hex(object? value) => Convert.ToInt64(value).ToString("X");Parámetros y flujo de ejecución:
- Fuente del campo: _world.LastContainer. El comando no selecciona, usa ni ataca el objeto.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- Lee el estado local actual. No hay paquete, objetivo o actualización automática; las lecturas individuales pueden ver diferentes estados.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var before = UO.LastContainer();
UO.Wait(500);
var after = UO.LastContainer();
UO.Print(before = after);
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetLastContainer:bridge.GetLastContainer().
Código interno de implementación; no es un script independiente.
case "lastcontainer": return new InjectionValue(bridge.GetLastContainer());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.OpenContainer(object? id);
void UO.OpenContainer(object? id, object? timeout);Solicitudes para abrir un contenedor.
-
id— Objeto serial/ID: int, cadena numérica/hexadecimal o alias establecido, por ejemplo "lasttarget". Esto no es graphic/type. Verifique el objeto cargado antes de actuar. -
timeout— Opcional int, milisegundos; el valor predeterminado es 0. Un valor negativo no añade anticipación.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Bridge.OpenContainer llama a UseObject(id), luego UO.Wait(timeout) solo si se agota el tiempo de espera>0. La pausa es fija; no se comprueba la presencia/contenido del contenedor.
- Sin tiempo de espera no hay pausa. El final de la pausa no debe tomarse como evidencia de que el contenido se ha abierto o cargado por completo.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.OpenContainer");
UO.OpenContainer("lasttarget");Parámetros y flujo de ejecución:
- Solicitudes para abrir un contenedor.
UO.OpenContainer("lasttarget");Parámetros y flujo de ejecución:
- Bridge.OpenContainer llama a UseObject(id), luego UO.Wait(timeout) solo si se agota el tiempo de espera>0. La pausa es fija; no se comprueba la presencia/contenido del contenedor.
return RunScenario();
object? RunScenario()
{
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;Parámetros y flujo de ejecución:
- Sin tiempo de espera no hay pausa. El final de la pausa no debe tomarse como evidencia de que el contenido se ha abierto o cargado por completo.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var id = UO.GetSerial("lasttarget");
if (Truth(UO.Exists(id)))
{
UO.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;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: id (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.OpenContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenContainer:bridge.OpenContainer(GetObject(id), 0). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Código interno de implementación; no es un script independiente.
public void OpenContainer(InjectionValue id) => bridge.OpenContainer(GetObject(id), 0);Parámetros: id (Any), timeout (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.OpenContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenContainer:bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(timeout).
Código interno de implementación; no es un script independiente.
public void OpenContainer(InjectionValue id, InjectionValue timeout) => bridge.OpenContainer(GetObject(id), NumberConversions.ToInt(timeout));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetCatchBag();
void UO.SetCatchBag(object? container);-
container— Serie del contenedor, su nombre guardado, "backpack" o "my". 0 desasigna. Sin argumentos, se utiliza lastobject: el último objeto aplicado, no restablecido. Si el nombre no resulta positivo serial, se elimina la asignación. La instalación en sí no verifica la disponibilidad del servidor ni la idoneidad del objeto para la migración.
void: Sin valor de retorno. No puede usar var resultado = UO.SetCatchBag(...), si UO.SetCatchBag(...), ni esperar el número 1 como confirmación. El movimiento real se realiza mediante un comando independiente, por ejemplo Grab.
- UO.SetCatchBag() y UO.SetReceivingContainer() tienen valores de forma diferentes sin argumentos: el primero toma lastobject, el segundo restablece el contenedor.
- Restablecimiento explícito: UO.UnsetCatchBag(), UO.UnsetReceivingContainer() o UO.SetCatchBag(0). Después del reinicio, Grab usa su mochila sin una tarea separada.
- Tener instalado el serial no significa que el servidor permitirá colocar el artículo allí. La distancia, la existencia y la disponibilidad se comprueban durante el propio traslado.
- En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.SetCatchBag");
UO.SetCatchBag();Parámetros y flujo de ejecución:
- El parámetro de contenedor único recibe la cadena "backpack". El tiempo de ejecución lo permite en serial de tu mochila.
- La llamada se escribe en una línea separada sin resultado var porque devuelve Unidad. El mensaje Print describe la configuración y no confirma la transferencia del artículo.
var destination = "backpack";
UO.SetCatchBag(destination);
UO.Print("Receiving container: own backpack");Parámetros y flujo de ejecución:
- Esta sobrecarga no tiene parámetros: internamente se utiliza el nombre lastobject.
- Los paréntesis vacíos no significan restablecer. Preseleccione el contenedor apropiado simplemente haciendo doble clic. La disponibilidad de bolsas para su transporte real depende del estado actual del juego.
return RunScenario();
object? RunScenario()
{
UO.SetCatchBag();
UO.Print("Destination taken from lastobject");
return null;
}Parámetros y flujo de ejecución:
- En la primera llamada, contenedor=bolsa contiene la cadena hexadecimal serial. 0x40001234 es un ejemplo, debes reemplazarlo con tu propio valor.
- En la segunda llamada, contenedor=0 lo desasigna. Los siguientes Grab sin un contenedor explícito usan una mochila.
- El reinicio se encuentra después del bloque de acarreo previsto. Configurar y restablecer no devuelven ningún resultado y no mueven elementos por sí solos.
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 bag = "0x40001234";
UO.SetCatchBag(bag);
UO.Print("Configured destination: " + bag);
UO.SetCatchBag(0);
UO.Print("Destination reset to the normal backpack fallback");
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject"). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString().
Código interno de implementación; no es un script independiente.
case "setcatchbag":
SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");
break;Parámetros: container (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject"). -
InjectionScript.Runtime.InjectionValue.ToString:arguments[0].ToString().
Código interno de implementación; no es un script independiente.
case "setcatchbag":
SetReceivingContainer(arguments.Length > 0 ? arguments[0].ToString() : "lastobject");
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetReceivingContainer();
void UO.SetReceivingContainer(object? id);Establece el contenedor receptor para el futuro Grab.
-
id- Opcional serial/alias. "my"/"backpack" - mochila actual. El positivo ID se conserva sin verificación de existencia; 0/negativo/sin argumento borra la configuración.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- La cadena se resuelve GetObject, excepto el especial my/backpack. Puente.SetReceivingContainer asigna Estado.ReceivingContainer. El artículo no es transferido por esta llamada.
- Después de limpiar, Grab usa la mochila sin un propósito explícito. Un ID positivo por sí solo no confirma que el contenedor esté cargado o sea accesible para el servidor.
- En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.SetReceivingContainer");
UO.SetReceivingContainer();Parámetros y flujo de ejecución:
- Establece el contenedor receptor para el futuro Grab.
UO.SetReceivingContainer("backpack");Parámetros y flujo de ejecución:
- La cadena se resuelve GetObject, excepto el especial my/backpack. Puente.SetReceivingContainer asigna Estado.ReceivingContainer. El artículo no es transferido por esta llamada.
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer();
return null;
}Parámetros y flujo de ejecución:
- Después de limpiar, Grab usa la mochila sin un propósito explícito. Un ID positivo por sí solo no confirma que el contenedor esté cargado o sea accesible para el servidor.
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 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;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer:UnsetReceivingContainer().
Código interno de implementación; no es un script independiente.
public void SetReceivingContainer() => UnsetReceivingContainer();Parámetros: id (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetReceivingContainer:bridge.SetReceivingContainer(id).
Código interno de implementación; no es un script independiente.
public void SetReceivingContainer(int id)
{
if (id <= 0)
bridge.UnsetReceivingContainer();
else
bridge.SetReceivingContainer(id);
}Parámetros: id (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer. -
InjectionScript.Runtime.InjectionApiUO.SetReceivingContainer:SetReceivingContainer(bridge.Backpack). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Backpack:bridge.Backpack.
Código interno de implementación; no es un script independiente.
public void SetReceivingContainer(string id)
{
string name = (id ?? string.Empty).Trim();
if (name.Equals("my", StringComparison.OrdinalIgnoreCase)
|| name.Equals("backpack", StringComparison.OrdinalIgnoreCase))
{
SetReceivingContainer(bridge.Backpack);
return;
}
SetReceivingContainer(GetObject(id));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetCatchBag();Limpia el contenedor receptor para Grab.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias llama a UnsetReceivingContainer; el puente asigna ReceivingContainer=0. El Grab posterior usa una mochila. Esto no es quitar la bolsa.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
- En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.UnsetCatchBag");
UO.UnsetCatchBag();Parámetros y flujo de ejecución:
- Limpia el contenedor receptor para Grab.
UO.UnsetCatchBag();Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias llama a UnsetReceivingContainer; el puente asigna ReceivingContainer=0. El Grab posterior usa una mochila. Esto no es quitar la bolsa.
return RunScenario();
object? RunScenario()
{
UO.SetCatchBag("backpack");
UO.UnsetCatchBag();
return null;
}Parámetros y flujo de ejecución:
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.UnsetCatchBag();
UO.Print(UO.Backpack());
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer:UnsetReceivingContainer().
Código interno de implementación; no es un script independiente.
case "unsetcatchbag": UnsetReceivingContainer(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.UnsetReceivingContainer();Borra el contenedor de recepción guardado.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- UnsetReceivingContainer asigna ReceivingContainer=0. Posteriormente Grab usa una mochila sin un propósito explícito. Los artículos no se transfieren.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
- En un host de cliente normal, estos datos de estado se toman del administrador GetPersistentState y son comunes a los scripts/chat/macros del mismo mundo/perfil, y no pertenecen a un solo script. Otro proceso o un InjectionRuntimeState aparentemente separado tiene un estado diferente. Cargar/borrar un perfil puede reemplazarlo; guardados serial todavía se comparan con el mundo cargado.
Cada ejemplo se puede guardar como un archivo independiente .csx y ejecutar en IDE. Las funciones de objeto UO y de espera proporcionan el anfitrión de la sesión de juego actual. Reemplace los nombres, coordenadas y direcciones de la demostración serial por los suyos propios.
Ejecuta este código en un archivo .csx independiente. Los argumentos aparecen en la llamada; sustituye los nombres, seriales y direcciones de ejemplo por los tuyos.
El comando es una instrucción independiente. El mensaje anterior indica el inicio de la llamada y no confirma una acción del servidor.
UO.Print("Calling UO.UnsetReceivingContainer");
UO.UnsetReceivingContainer();Parámetros y flujo de ejecución:
- Borra el contenedor de recepción guardado.
UO.UnsetReceivingContainer();Parámetros y flujo de ejecución:
- UnsetReceivingContainer asigna ReceivingContainer=0. Posteriormente Grab usa una mochila sin un propósito explícito. Los artículos no se transfieren.
return RunScenario();
object? RunScenario()
{
UO.SetReceivingContainer("backpack");
UO.UnsetReceivingContainer();
return null;
}Parámetros y flujo de ejecución:
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.UnsetReceivingContainer();
UO.Print(UO.Backpack());
return null;
}
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.UnsetReceivingContainer. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UnsetReceivingContainer:bridge.UnsetReceivingContainer().
Código interno de implementación; no es un script independiente.
public void UnsetReceivingContainer() => bridge.UnsetReceivingContainer();ClassicUO — Bad Newbie & C# Scripts IDE