Repository navigation
ES UO Topic profiles configuration
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Perfiles, configuración de guardado, valores globales y teclas de acceso rápido. El valor de tiempo de ejecución global y la variable de procedimiento local tienen duraciones diferentes.
| Tema | Comandos y explicaciones |
|---|---|
| GetProfile | UO.GetProfile |
| ProfileName | UO.ProfileName |
| ProfileShardName | UO.ProfileShardName |
| ChangeProfile | UO.ChangeProfile |
| ExtChangeProfile | UO.ExtChangeProfile |
| ResetProfile | UO.ResetProfile |
| SaveConfig | UO.SaveConfig |
| Global Variables | UO.GetGlobal · UO.SetGlobal · UO.GListGet · UO.GListSet · UO.GListSize |
| EasyUO Variables | UO.GetEasyUO · UO.SetEasyUO |
| MUL Path | UO.SetMulPath |
UO.GetProfile · UO.ProfileName · UO.ProfileShardName · UO.ChangeProfile · UO.ExtChangeProfile · UO.ResetProfile · UO.SaveConfig · UO.ReqProfile · UO.ClientProfilePath · UO.ClientPath · UO.SetMulPath
UO.GetGlobal · UO.SetGlobal · UO.GetEasyUO · UO.SetEasyUO · UO.GListClear · UO.GListGet · UO.GListPosName · UO.GListPosValue · UO.GListSet · UO.GListSize
UO.LoadHotkeys · UO.SaveHotkeys · UO.Set · UO.SetDefault
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
var text = UO.GetGlobal("manual.delay");
var delayMs = 350;
if (Truth(text != "N/A") && Truth(IsNumeric(text)))
{
var parsed = Val(text);
if (Truth(parsed >= 50) && Truth(parsed <= 5000))
{
delayMs = checked((int)parsed);
}
}
await Delay(delayMs);
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;Parámetros, resultado y todos los escenarios
UO.SetGlobal("manual.delay", 350);
UO.SetGlobal("manual.delay", 600);
var text = UO.GetGlobal("manual.delay");
if (Truth(IsNumeric(text)))
{
await Delay(Val(text));
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ChangeProfile(object? name);Cambia el perfil seleccionado para la siguiente conexión de autocliente cuando se desconecta la sesión.
-
name: nombre de perfil/personaje guardado resuelto por TryResolveProfileCharacter para el fragmento seleccionado. Un nombre vacío/desconocido da -4.
int: 0 — la selección está preparada; -2 — la sesión del administrador o la conexión/mundo del juego está activa; -3 — se ejecuta más de un script; -4: el nombre/fragmento del perfil no está permitido.
- ChangeProfile pasa fragmento/carácter vacío; ExtChangeProfile permite fragmentos y caracteres explícitos. En la sesión del administrador, debe seleccionar otra sesión en ClassicUO Manager; la sesión en ejecución guarda su perfil.
- Si tiene éxito, guarda y descarga el perfil actual, cambia LastServerName, guarda la configuración y asigna el siguiente carácter. La conexión en sí no se inicia; Connect se llama por separado.
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.ChangeProfile("ExampleProfile");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Utilice el nombre del perfil guardado real; un código negativo describe una falla.
var status = UO.ChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));Parámetros y flujo de ejecución:
- Un cliente independiente deshabilitado sin ninguna otra infracción devuelve -4 para un nombre vacío.
return RunScenario();
object? RunScenario()
{
var status = UO.ChangeProfile("");
UO.Print(Convert.ToString(status));
return null;
}Parámetros y flujo de ejecución:
- Connect se llama solo después del código 0; La respuesta del servidor aún no ha sido confirmada.
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 status = UO.ChangeProfile("ExampleProfile");
if (Truth(status == 0))
{
UO.Connect();
}
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: name (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ChangeProfileSelection:bridge.ChangeProfileSelection(Text(0), string.Empty, string.Empty). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "changeprofile":
return new InjectionValue(bridge.ChangeProfileSelection(Text(0), string.Empty, string.Empty));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.ClientPath();Devuelve el directorio de instalación/ejecutable del cliente.
No hay parámetros.
string: ruta al directorio. No es bool, ni una matriz, ni ID. Una ruta vacía significa que el valor no está disponible; no lo use como su carpeta de trabajo actual predeterminada.
- Lea CUOEnviroment.ExecutablePath. Esta no es una ruta de conducción, una lista de puntos de referencia, una carpeta de secuencias de comandos ni una ruta a los datos del juego.
- El comando solo lee la ruta, no abre, crea ni guarda nada. No se debe asumir el delimitador final; el ejemplo auxiliar lo agrega si es necesario.
- El nombre es el nombre del juego/cliente API y se escribe con UO. ClientPath devuelve el directorio del cliente, ClientProfilePath devuelve el directorio del perfil activo.
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.ClientPath();
UO.Print("ClientPath: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos. carpeta - cadena; un valor vacío se procesa por separado.
var folder = UO.ClientPath();
if (Truth(folder == ""))
{
UO.Print("Folder is not available");
return null;
}
UO.Print(folder);
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:
- Estas carpetas tienen diferentes propósitos. El script genera ambas líneas sin cambiar la configuración o el perfil.
return RunScenario();
object? RunScenario()
{
var client = UO.ClientPath();
var profile = UO.ClientProfilePath();
UO.Print("Client: " + client);
if (Truth(profile == ""))
{
UO.Print("No current profile");
}
else
{
UO.Print("Profile: " + profile);
}
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:
- ChildPath se muestra en su totalidad: la carpeta es el directorio resultante, la hoja es el nombre del archivo. Esta es una concatenación de cadenas para un nombre determinado, no un normalizador de ruta universal.
- El archivo no se crea ni se lee; Primero puedes comprobar la cadena resultante.
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 folder = UO.ClientPath();
var filePath = ChildPath(folder, "sample.json");
if (Truth(filePath != ""))
{
UO.Print("Example path: " + filePath);
}
return null;
}
dynamic ChildPath(dynamic folder, dynamic leaf)
{
if (Truth(folder == ""))
{
return "";
}
var last = Right(folder, 1);
if (Truth(last == "/") || Truth(last == "\\"))
{
return folder + leaf;
}
return folder + "/" + leaf;
}
string Right(object? value, int count)
{
string text = Convert.ToString(value) ?? "";
return text[Math.Max(0, text.Length - count)..];
}
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: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientPath:bridge.ClientPath.
Código interno de implementación; no es un script independiente.
case "clientpath": return new InjectionValue(bridge.ClientPath);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.ClientProfilePath();Devuelve el directorio del perfil del cliente actual.
No hay parámetros.
string: ruta al directorio. No es bool, ni una matriz, ni ID. Una ruta vacía significa que el valor no está disponible; no lo use como su carpeta de trabajo actual predeterminada.
- Leer ProfileManager.ProfilePath; si el perfil aún no se ha seleccionado, se devuelve una cadena vacía. La llamada en sí no crea un perfil y no transfiere configuraciones.
- El comando solo lee la ruta, no abre, crea ni guarda nada. No se debe asumir el delimitador final; el ejemplo auxiliar lo agrega si es necesario.
- El nombre es el nombre del juego/cliente API y se escribe con UO. ClientPath devuelve el directorio del cliente, ClientProfilePath devuelve el directorio del perfil activo.
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.ClientProfilePath();
UO.Print("ClientProfilePath: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- No hay argumentos. carpeta - cadena; un valor vacío se procesa por separado.
var folder = UO.ClientProfilePath();
if (Truth(folder == ""))
{
UO.Print("Folder is not available");
return null;
}
UO.Print(folder);
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:
- Estas carpetas tienen diferentes propósitos. El script genera ambas líneas sin cambiar la configuración o el perfil.
return RunScenario();
object? RunScenario()
{
var client = UO.ClientPath();
var profile = UO.ClientProfilePath();
UO.Print("Client: " + client);
if (Truth(profile == ""))
{
UO.Print("No current profile");
}
else
{
UO.Print("Profile: " + profile);
}
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:
- ChildPath se muestra en su totalidad: la carpeta es el directorio resultante, la hoja es el nombre del archivo. Esta es una concatenación de cadenas para un nombre determinado, no un normalizador de ruta universal.
- El archivo no se crea ni se lee; Primero puedes comprobar la cadena resultante.
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 folder = UO.ClientProfilePath();
var filePath = ChildPath(folder, "sample.json");
if (Truth(filePath != ""))
{
UO.Print("Example path: " + filePath);
}
return null;
}
dynamic ChildPath(dynamic folder, dynamic leaf)
{
if (Truth(folder == ""))
{
return "";
}
var last = Right(folder, 1);
if (Truth(last == "/") || Truth(last == "\\"))
{
return folder + leaf;
}
return folder + "/" + leaf;
}
string Right(object? value, int count)
{
string text = Convert.ToString(value) ?? "";
return text[Math.Max(0, text.Length - count)..];
}
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: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CurrentProfilePath:bridge.CurrentProfilePath.
Código interno de implementación; no es un script independiente.
case "shardpath":
case "clientprofilepath": return new InjectionValue(bridge.CurrentProfilePath);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ExtChangeProfile(object? profileName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName, object? charName);Cambia el perfil seleccionado para la siguiente conexión de autocliente cuando se desconecta la sesión.
-
profileName: nombre de perfil/personaje guardado resuelto por TryResolveProfileCharacter para el fragmento seleccionado. Un nombre vacío/desconocido da -4. -
shardName: nombre de fragmento opcional. Un valor vacío utiliza CurrentProfile.ServerName, World.ServerName o LastServerName. -
charName: nombre de personaje opcional. Un valor vacío utiliza el nombre del perfil guardado.
int: 0 — la selección está preparada; -2 — la sesión del administrador o la conexión/mundo del juego está activa; -3 — se ejecuta más de un script; -4: el nombre/fragmento del perfil no está permitido.
- ChangeProfile pasa fragmento/carácter vacío; ExtChangeProfile permite fragmentos y caracteres explícitos. En la sesión del administrador, debe seleccionar otra sesión en ClassicUO Manager; la sesión en ejecución guarda su perfil.
- Si tiene éxito, guarda y descarga el perfil actual, cambia LastServerName, guarda la configuración y asigna el siguiente carácter. La conexión en sí no se inicia; Connect se llama por separado.
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.ExtChangeProfile("ExampleProfile");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Utilice el nombre del perfil guardado real; un código negativo describe una falla.
var status = UO.ExtChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));Parámetros y flujo de ejecución:
- Un cliente independiente deshabilitado sin ninguna otra infracción devuelve -4 para un nombre vacío.
return RunScenario();
object? RunScenario()
{
var status = UO.ExtChangeProfile("");
UO.Print(Convert.ToString(status));
return null;
}Parámetros y flujo de ejecución:
- Connect se llama solo después del código 0; La respuesta del servidor aún no ha sido confirmada.
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 status = UO.ExtChangeProfile("ExampleProfile");
if (Truth(status == 0))
{
UO.Connect();
}
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: profileName (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ChangeProfileSelection:bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter).
Código interno de implementación; no es un script independiente.
case "extchangeprofile":
{
string requestedProfile = Text(0);
string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;
string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;
return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));
}Parámetros: profileName (Any), shardName (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ChangeProfileSelection:bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter).
Código interno de implementación; no es un script independiente.
case "extchangeprofile":
{
string requestedProfile = Text(0);
string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;
string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;
return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));
}Parámetros: profileName (Any), shardName (Any), charName (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ChangeProfileSelection:bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter).
Código interno de implementación; no es un script independiente.
case "extchangeprofile":
{
string requestedProfile = Text(0);
string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;
string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;
return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GListClear();Borra toda la lista temporal antes de una nueva serie de acciones.
No hay parámetros.
void - sin resultado. Después de borrar, GListSize() devuelve 0.
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.GListClear");
UO.GListClear();Parámetros y flujo de ejecución:
- Borrar elimina ambas reglas, Tamaño confirma el vacío. Los elementos del personaje permanecen en su lugar.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
UO.Print("Batch rules cleared");
}
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:
- Las reglas antiguas se eliminan antes de agregar el mineral; la búsqueda solo muestra la nueva regla con graphic 0x19B9.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListClear();
UO.GListSet("ore", 0x19B9);
var i = 0;
while (Truth(i < UO.GListSize()))
{
var name = UO.GListPosName(i);
var graphic = UO.GListPosValue(i);
UO.Print(name + " | graphic: " + Convert.ToString(graphic));
i = i + 1;
}
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:
- Un número leído previamente en retenido permanece disponible después de que se borra la lista. La lista ya contiene entradas 0.
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.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var retained = UO.GListGet("bandage");
UO.GListClear();
UO.Print("Retained graphic: " + Convert.ToString(retained));
UO.Print("Remaining entries: " + Convert.ToString(UO.GListSize()));
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:
Código interno de implementación; no es un script independiente.
public void GListClear() => globalList.Clear();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GListGet(object? nameValue);Lee un valor de una lista temporal por regla o nombre de contador.
-
nameValue— object? se convierte en una cadena. Los nombres se comparan sin distinguir entre mayúsculas y minúsculas: "vendaje" y "BANDAGE" son una clave. Se recomienda un nombre de cadena que no esté vacío; un nombre vacío también es aceptable.
object? — valor guardado con el mismo tipo. Si no hay clave, int 0. El 0 conservado es indistinguible del GListGet ausente; revisa los nombres.
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.
UO.GListSet("simple_value", 42);
object? result = UO.GListGet("simple_value");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- BANDAGE encuentra la llave del vendaje. 0x0E21 - graphic vendaje, no su único serial.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var graphic = UO.GListGet("BANDAGE");
if (Truth(graphic == 0x0E21))
{
UO.Print("Bandage rule selected");
}
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 función completa HasEntry itera a través de nombres; entonces 0 procesado es diferente de faltante. Para claves propias, aquí se utilizan los nombres ASCII.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("processed", 0);
if (Truth(HasEntry("processed")))
{
var count = UO.GListGet("processed");
UO.Print("Recorded count: " + Convert.ToString(count));
}
if (!(Truth(HasEntry("missing"))))
{
UO.Print("No entry named missing");
}
return null;
}
dynamic HasEntry(dynamic name)
{
var i = 0;
while (Truth(i < UO.GListSize()))
{
if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
{
return true;
}
i = i + 1;
}
return false;
}
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:
- retraso: número de milisegundos; UO.Wait se llama solo para un valor en el rango 50–5000. El ejemplo espera 350 ms.
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.GListClear();
UO.GListSet("delay", 350);
var delayMs = UO.GListGet("delay");
if (Truth(delayMs >= 50) && Truth(delayMs <= 5000))
{
await Delay(delayMs);
}
else
{
UO.Print("Delay outside the accepted range");
}
return null;
}
Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}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: nameValue (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GListGet. -
InjectionScript.Runtime.InjectionValue.ToString:nameValue.ToString().
Código interno de implementación; no es un script independiente.
public InjectionValue GListGet(InjectionValue nameValue)
{
string name = nameValue.ToString();
int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));
return index >= 0 ? globalList[index].Value : InjectionValue.Zero;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GListPosName(object? index);Lee el nombre del registro por su posición para enumerar las reglas.
-
index- int: índice de 0 a GListSize()-1 inclusive. No es serial, graphic ni el número de unidades en la pila.
string es el nombre en la última forma registrada del registro. El índice no válido devuelve ""; una clave vacía también devuelve "".
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.
UO.GListClear();
UO.GListSet("simple_value", 42);
var result = UO.GListPosName(0);
UO.Print("GListPosName: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- El índice 0 significa la primera regla. Antes de leer se comprueba que la lista no esté vacía.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
if (Truth(UO.GListSize() > 0))
{
var first = UO.GListPosName(0);
UO.Print("First rule: " + first);
}
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:
- HasEntry devuelve true para un contador cero registrado y false para un nombre faltante.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("processed", 0);
if (Truth(HasEntry("processed")))
{
var count = UO.GListGet("processed");
UO.Print("Recorded count: " + Convert.ToString(count));
}
if (!(Truth(HasEntry("missing"))))
{
UO.Print("No entry named missing");
}
return null;
}
dynamic HasEntry(dynamic name)
{
var i = 0;
while (Truth(i < UO.GListSize()))
{
if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
{
return true;
}
i = i + 1;
}
return false;
}
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:
- Repetir BANDAGE cambia la ortografía del nombre en la primera posición; el oro sigue en segundo lugar.
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.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListSet("BANDAGE", 0x0E21);
var i = 0;
while (Truth(i < UO.GListSize()))
{
var name = UO.GListPosName(i);
var graphic = UO.GListPosValue(i);
UO.Print(name + " | graphic: " + Convert.ToString(graphic));
i = i + 1;
}
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: index (Integer)
Resultado: string / String.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public string GListPosName(int index) => index >= 0 && index < globalList.Count ? globalList[index].Key : string.Empty;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GListPosValue(object? index);Lee el valor de una entrada por posición, como graphic, de una lista previamente completada.
-
index- int: índice de 0 a GListSize()-1 inclusive. No es serial, graphic ni el número de unidades en la pila.
object? — valor con tipo conservado; El índice no válido devuelve int 0. Verifique los límites, ya que el verdadero 0 es aceptable.
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.
UO.GListClear();
UO.GListSet("simple_value", 42);
object? result = UO.GListPosValue(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- El índice 1 selecciona la segunda regla de oro. La verificación de límites precede a la lectura del valor.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var index = 1;
if (Truth(index >= 0) && Truth(index < UO.GListSize()))
{
var graphic = UO.GListPosValue(index);
UO.Print("Second rule graphic: " + Convert.ToString(graphic));
}
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 fuerza bruta busca el vendaje graphic en las reglas, no el objeto en el mundo; no se envían solicitudes de juego.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var total = UO.GListSize();
var i = 0;
while (Truth(i < total))
{
var graphic = UO.GListPosValue(i);
if (Truth(graphic == 0x0E21))
{
UO.Print("Bandage rule at index " + Convert.ToString(i));
}
i = i + 1;
}
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:
- El índice 0 existe, por lo que el valor 0 es un contador válido; verificar el valor no nulo sería un error aquí.
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.GListClear();
UO.GListSet("processed", 0);
var index = 0;
if (Truth(index < UO.GListSize()))
{
var count = UO.GListPosValue(index);
UO.Print("Valid zero count: " + Convert.ToString(count));
}
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: index (Integer)
Resultado: dynamic / Any.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public InjectionValue GListPosValue(int index) => index >= 0 && index < globalList.Count ? globalList[index].Value : InjectionValue.Zero;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.GListSet(object? nameValue, object? value);Escribe un valor con nombre en una lista temporal: por ejemplo, graphic reglas de botín o contador de elementos procesados.
-
nameValue— object? se convierte en una cadena. Los nombres se comparan sin distinguir entre mayúsculas y minúsculas: "vendaje" y "BANDAGE" son una clave. Se recomienda un nombre de cadena que no esté vacío; un nombre vacío también es aceptable.
void - sin resultado; un comando separado, sin asignación.
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.GListSet");
UO.GListSet("gold", 0x0EED);Parámetros y flujo de ejecución:
- vendaje y oro son los nombres de las reglas, los números son graphic. BANDAGE reemplaza la primera entrada, no crea una tercera; la salida muestra el orden.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListSet("BANDAGE", 0x0E21);
var i = 0;
while (Truth(i < UO.GListSize()))
{
var name = UO.GListPosName(i);
var graphic = UO.GListPosValue(i);
UO.Print(name + " | graphic: " + Convert.ToString(graphic));
i = i + 1;
}
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:
- procesado comienza con 0. Tres pasos incrementan el contador almacenado a 3; Los elementos del juego no se mueven aquí.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("processed", 0);
for (int i = (int)(1); i <= 3; i += (int)(1))
{
UO.GListSet("processed", UO.GListGet("processed") + 1);
}
UO.Print("Recorded count: " + Convert.ToString(UO.GListGet("processed")));
return null;
}Parámetros y flujo de ejecución:
- modo - cadena, límite - número 2. El modo selecciona la sucursal, el número limita el procesamiento a dos pasos.
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.GListClear();
UO.GListSet("mode", "inspect");
UO.GListSet("limit", 2);
if (Truth(UO.GListGet("mode") == "inspect"))
{
for (int i = (int)(1); i <= UO.GListGet("limit"); i += (int)(1))
{
UO.Print("Inspect batch: " + Convert.ToString(i));
}
}
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: nameValue (Any), value (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GListSet. -
InjectionScript.Runtime.InjectionValue.ToString:nameValue.ToString().
Código interno de implementación; no es un script independiente.
public void GListSet(InjectionValue nameValue, InjectionValue value)
{
string name = nameValue.ToString();
int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));
var entry = new KeyValuePair<string, InjectionValue>(name, value);
if (index >= 0)
globalList[index] = entry;
else
globalList.Add(entry);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GListSize();Cuenta las entradas con nombre en una lista temporal para comprobar si están vacías o limitar la fuerza bruta.
No hay parámetros.
int >= 0: la cantidad de nombres únicos, no la cantidad de elementos o unidades en las pilas.
- La lista pertenece a la instancia de tiempo de ejecución. Otras ejecuciones de scripts tienen sus propias listas. GList no es un almacenamiento compartido entre perfiles; Estos comandos no escriben un archivo y no ingresan a un estado de perfil guardado. El nuevo tiempo de ejecución obtiene una lista vacía. Tampoco es var/declaración de variable ni UO.SetGlobal.
- El nuevo nombre se añade al final. La repetición de un nombre que no distingue entre mayúsculas y minúsculas reemplaza el significado y la ortografía del nombre en su lugar original. La lectura no borra nada. No puede borrar ni agregar registros en medio de una búsqueda si necesita índices estables.
- Las operaciones son locales: sin paquetes, sin búsquedas de objetos, sin latencia. Set/Get busca el nombre de forma secuencial; para conjuntos más grandes utilice el Diccionario. No existe un comando independiente para eliminar una clave de esta familia; Borrar borra todas las entradas.
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.GListSize();
UO.Print("GListSize: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Un conjunto vacío detiene el procedimiento antes de que se procesen las reglas.
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
UO.Print("No batch rules; stop here");
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:
- Las dos reglas se repiten sobre los índices 0 y 1; la condición i < Tamaño no permite el acceso al índice 2.
return RunScenario();
object? RunScenario()
{
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var i = 0;
while (Truth(i < UO.GListSize()))
{
var name = UO.GListPosName(i);
var graphic = UO.GListPosValue(i);
UO.Print(name + " | graphic: " + Convert.ToString(graphic));
i = i + 1;
}
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:
- La sustitución BANDAGE no aumenta el número de nombres; antes y después El tamaño es 2.
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.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var before = UO.GListSize();
UO.GListSet("BANDAGE", 0x0E21);
if (Truth(UO.GListSize() == before))
{
UO.Print("Existing rule updated without an extra entry");
}
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: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int GListSize() => globalList.Count;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetEasyUO(object? number);Lee una cadena del registro de Windows del usuario EasyUO.
-
numberes el int/valor que será convertido por NumberConversions.ToInt. Forma el valor del registro de nombres decimales.
string — valor HKCU\Software\EasyUO<número>; si no está presente, se marca el nombre *<número>. Si falta la clave/valor o está fuera de Windows, se devuelve una cadena vacía.
- La lectura no crea una clave ni accede al mundo del juego. La interfaz de registro heredada es diferente de GetGlobal. El error de acceso al registro del sistema puede extenderse; no hay cierre separado en el puente.
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.GetEasyUO(1);
UO.Print("GetEasyUO: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- El nombre se lee primero 1, luego *1.
var value = UO.GetEasyUO(1);
UO.Print(value);Parámetros y flujo de ejecución:
- Una cadena vacía puede no tener valor o contener texto vacío almacenado.
return RunScenario();
object? RunScenario()
{
var value = UO.GetEasyUO(999);
if (Truth(Len(value) == 0))
{
UO.Print("empty");
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.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:
- El número define el valor del registro, no el serial del 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 number = 2;
var value = UO.GetEasyUO(number);
UO.Print(value);
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: number (Any)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GetEasyUO. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetEasyUO:bridge.GetEasyUO(NumberConversions.ToInt(number)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(number).
Código interno de implementación; no es un script independiente.
public string GetEasyUO(InjectionValue number) => bridge.GetEasyUO(NumberConversions.ToInt(number));string UO.GetGlobal(object? name);
dynamic UO.GetGlobal(object? globalRegion, object? varName);SetGlobal y GetGlobal comparten valores entre todos los scripts, perfiles y procesos Full Client/Client. Los valores son cadenas; una clave ausente devuelve "N/A". Se distingue mayúsculas; las formas region usan region/name. Manager/Game Manager/CSharp/globals.json persiste y se relee bajo bloqueo entre procesos. Las formas Shared usan el mismo almacén.
-
globalRegion— Espacio de nombres combinado con la clave. -
name— Nombre de clave compartida que distingue mayúsculas. -
varName— Nombre de clave compartida que distingue mayúsculas.
Cada bloque es un .csx completo. Sustituya serials, tipos y coordenadas de ejemplo. El orden y los argumentos C# con nombre siguen la firma.
#getglobal team.target
#get global team.message
Cada bloque es un .csx completo. Sustituya serials, tipos y coordenadas de ejemplo. El orden y los argumentos C# con nombre siguen la firma.
string value = UO.GetGlobal("team.target");
UO.Print(value);string value = UO.GetGlobal("team.delay");
if (int.TryParse(value, out int milliseconds))
UO.Print(milliseconds.ToString());UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
string value = api.GetGlobal("team.target");
api.Print(value);
}
}CSharpGameApi.GetGlobal
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
-> InjectionScript.Runtime.State.Globals.GetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.GetProfile(object? serial);Lee la descripción del carácter público que envía el servidor para la ventana Perfil. Útil para leer notas o buscar texto en la descripción del personaje seleccionado. Estas no son configuraciones de perfil de administrador.
-
serial— Serie de caracteres: un número, una cadena con ID 0x... o un selector de objetos como "self" o "lasttarget". Este no es un tipo de cuerpo, un nombre de archivo ni un perfil de administrador.
string — texto de la descripción principal, sin título ni firma. La descripción vacía es legal; También es posible obtener un resultado en blanco si no hay respuesta en 3 segundos. Esto no es true/false. Se envía una solicitud en cada llamada; si la descripción ya está guardada en la sesión, se devuelve inmediatamente, incluido un borrador de la ventana abierta. Esto no es garantía de una nueva respuesta del servidor.
- La descripción y su borrador pertenecen a la sesión. Cerrar la ventana del juego los guarda sin publicarlos, abrirlos restaura la ventana de Perfil. Al cerrar explícitamente su propio perfil, se envía el texto modificado una vez; el texto de otra persona no se envía. La nueva respuesta del servidor reemplaza los datos antiguos; desconectar la conexión los borra. GetProfile no edita nada por sí mismo.
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.GetProfile("self");
UO.Print("GetProfile: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- "self" - descripción de tu personaje; no configuración de cuenta. Se muestra el texto recibido del servidor o ya guardado en la sesión.
var note = UO.GetProfile("self");
if (Truth(note != ""))
{
UO.Print(note);
}
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:
- Requiere lasttarget existente. FindText busca la palabra "Sanador" que distingue entre mayúsculas y minúsculas en texto libre. Si hay una coincidencia, AddObject guarda el serial seleccionado con el nombre healerNote. Esta es una nota de usuario, no una prueba de profesión NPC.
return RunScenario();
object? RunScenario()
{
if (!(Truth(UO.Exists("lasttarget"))))
{
return null;
}
var note = UO.GetProfile("lasttarget");
if (Truth(FindText(note, "Healer") > 0))
{
UO.AddObject("healerNote", "lasttarget");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}Parámetros y flujo de ejecución:
- La función completa HasPublicNote se detalla a continuación. Prueba la existencia de un objeto y una subcadena y devuelve true/false. "Gremio" - texto de demostración; una respuesta vacía no confirma la ausencia de dicho registro en 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()
{
if (Truth(HasPublicNote("lasttarget", "Guild")))
{
UO.AddObject("guildNote", "lasttarget");
}
return null;
}
dynamic HasPublicNote(dynamic serial, dynamic phrase)
{
if (!(Truth(UO.Exists(serial))))
{
return false;
}
return FindText(UO.GetProfile(serial), phrase) > 0;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
string input = Convert.ToString(text) ?? "";
return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}
}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: serial (Any)
Resultado: string / String.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.GetProfile. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetProfile:bridge.GetProfile(GetObject(serial)). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(serial).
Código interno de implementación; no es un script independiente.
public string GetProfile(InjectionValue serial) => bridge.GetProfile(GetObject(serial));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.LoadHotkeys();Carga macros y teclas de acceso rápido guardadas.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- LoadHotkeys llama a _world.Macros.Load mediante Invoke. La tabla de macros actual se reemplaza con datos de perfil local.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.LoadHotkeys");
UO.LoadHotkeys();Parámetros y flujo de ejecución:
- Carga macros y teclas de acceso rápido guardadas.
UO.LoadHotkeys();Parámetros y flujo de ejecución:
- LoadHotkeys llama a _world.Macros.Load mediante Invoke. La tabla de macros actual se reemplaza con datos de perfil local.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ProfileName());
UO.LoadHotkeys();
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.LoadHotkeys();
UO.Print("Macros loaded");
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. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.LoadHotkeys:bridge.LoadHotkeys().
Código interno de implementación; no es un script independiente.
case "loadhotkeys": bridge.LoadHotkeys(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ProfileName();Lee el nombre del perfil actual.
No hay parámetros.
string — texto del campo puente.ProfileName; sin datos disponibles, es posible una cadena vacía. Este no es un signo de conexión y no es un ID numérico.
- ExecuteClientApiCompatibility devuelve el puente.ProfileName sin cambiar el perfil o la selección del servidor.
- 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.ProfileName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Lee el nombre del perfil actual.
var value = UO.ProfileName();
UO.Print(value);Parámetros y flujo de ejecución:
- ExecuteClientApiCompatibility devuelve el puente.ProfileName sin cambiar el perfil o la selección del servidor.
return RunScenario();
object? RunScenario()
{
var value = UO.ProfileName();
if (Truth(Len(value) > 0))
{
UO.TextPrint(value);
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.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:
- 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.ProfileName();
UO.Wait(500);
var after = UO.ProfileName();
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.ProfileName:bridge.ProfileName.
Código interno de implementación; no es un script independiente.
case "profilename": return new InjectionValue(bridge.ProfileName);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ProfileShardName();Lee el nombre del fragmento.
No hay parámetros.
string — texto del campo puente.ShardName; sin datos disponibles, es posible una cadena vacía. Este no es un signo de conexión y no es un ID numérico.
- ExecuteClientApiCompatibility devuelve el puente.ShardName sin cambiar el perfil o la selección del servidor.
- 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.ProfileShardName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Lee el nombre del fragmento.
var value = UO.ProfileShardName();
UO.Print(value);Parámetros y flujo de ejecución:
- ExecuteClientApiCompatibility devuelve el puente.ShardName sin cambiar el perfil o la selección del servidor.
return RunScenario();
object? RunScenario()
{
var value = UO.ProfileShardName();
if (Truth(Len(value) > 0))
{
UO.TextPrint(value);
}
return null;
}
int Len(object? value) => Convert.ToString(value)?.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:
- 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.ProfileShardName();
UO.Wait(500);
var after = UO.ProfileShardName();
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.ShardName:bridge.ShardName.
Código interno de implementación; no es un script independiente.
case "shardname":
case "profileshardname": return new InjectionValue(bridge.ShardName);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ReqProfile();
void UO.ReqProfile(object? mobile);Imprime el texto del perfil conocido del personaje.
-
mobile- Opcional serial/alias. Sin argumento - "lasttarget". Este no es un perfil de configuración local ClassicUO.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias llama a GetProfile, luego SystemMessage. Bridge.GetProfile envía RequestProfile, luego hasta 3 segundos verifica CharacterPanels.Profile.CurrentText con pausas 25 ms. El texto ya existente se puede devolver inmediatamente; con el tiempo de espera, muestra un mensaje y muestra una línea vacía. Este comando imprime el texto pero no lo devuelve.
- Para el valor de string utilice UO.GetProfile. La presencia de texto no es prueba de un cambio de nombre exitoso o del estado del personaje.
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.ReqProfile");
UO.ReqProfile();Parámetros y flujo de ejecución:
- Imprime el texto del perfil conocido del personaje.
UO.ReqProfile();Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias llama a GetProfile, luego SystemMessage. Bridge.GetProfile envía RequestProfile, luego hasta 3 segundos verifica CharacterPanels.Profile.CurrentText con pausas 25 ms. El texto ya existente se puede devolver inmediatamente; con el tiempo de espera, muestra un mensaje y muestra una línea vacía. Este comando imprime el texto pero no lo devuelve.
return RunScenario();
object? RunScenario()
{
UO.ReqProfile("self");
return null;
}Parámetros y flujo de ejecución:
- Para el valor de string utilice UO.GetProfile. La presencia de texto no es prueba de un cambio de nombre exitoso o del estado del personaje.
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.ReqProfile(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: Sin parámetros.
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget"))). -
InjectionScript.Runtime.InjectionApiUO.GetProfile:GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")).
Código interno de implementación; no es un script independiente.
case "reqprofile":
SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));
break;Parámetros: mobile (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget"))). -
InjectionScript.Runtime.InjectionApiUO.GetProfile:GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")).
Código interno de implementación; no es un script independiente.
case "reqprofile":
SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ResetProfile();Restablece el perfil activo a los valores predeterminados.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ResetProfile llama a ProfileManager.ResetCurrentProfileToDefault; si no hay ningún perfil activo, se muestra un error. Cambia la configuración local, por lo que los valores de usuario guardados pueden perderse.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.ResetProfile");
UO.ResetProfile();Parámetros y flujo de ejecución:
- Restablece el perfil activo a los valores predeterminados.
UO.ResetProfile();Parámetros y flujo de ejecución:
- ResetProfile llama a ProfileManager.ResetCurrentProfileToDefault; si no hay ningún perfil activo, se muestra un error. Cambia la configuración local, por lo que los valores de usuario guardados pueden perderse.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ProfileName());
UO.ResetProfile();
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.ResetProfile();
UO.SaveConfig();
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. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ResetProfile:bridge.ResetProfile().
Código interno de implementación; no es un script independiente.
case "resetprofile": bridge.ResetProfile(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SaveConfig();Guarda el perfil ClassicUO actual.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- SaveConfig llama a ProfileManager.SaveCurrentProfile a través de Invocar. El comando escribe la configuración del perfil local; el camino se toma desde ProfileManager.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.SaveConfig");
UO.SaveConfig();Parámetros y flujo de ejecución:
- Guarda el perfil ClassicUO actual.
UO.SaveConfig();Parámetros y flujo de ejecución:
- SaveConfig llama a ProfileManager.SaveCurrentProfile a través de Invocar. El comando escribe la configuración del perfil local; el camino se toma desde ProfileManager.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ProfileName());
UO.SaveConfig();
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.SaveConfig();
UO.Print(UO.ShardPath());
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.SaveConfig. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SaveConfig:bridge.SaveConfig().
Código interno de implementación; no es un script independiente.
public void SaveConfig() => bridge.SaveConfig();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SaveHotkeys();Guarda macros y teclas de acceso rápido.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- SaveHotkeys llama a _world.Macros.Save mediante Invoke. Se guarda la tabla de macros local del perfil actual.
- Modifica o muestra solo los datos locales especificados. Este comando no tiene confirmación del servidor.
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.SaveHotkeys");
UO.SaveHotkeys();Parámetros y flujo de ejecución:
- Guarda macros y teclas de acceso rápido.
UO.SaveHotkeys();Parámetros y flujo de ejecución:
- SaveHotkeys llama a _world.Macros.Save mediante Invoke. Se guarda la tabla de macros local del perfil actual.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ProfileName());
UO.SaveHotkeys();
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.SaveHotkeys();
UO.LoadHotkeys();
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. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SaveHotkeys:bridge.SaveHotkeys().
Código interno de implementación; no es un script independiente.
case "savehotkeys": bridge.SaveHotkeys(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Set(object? name, object? value);Cambia una de las tres configuraciones heredadas.
-
name— Cadena que no distingue entre mayúsculas y minúsculas: "finddistance", "grabdelay" o "equipfordress". El nombre desconocido se ignora silenciosamente. -
value— int o double/0x-text. Para la forma de cadena TryStr2Int; El texto incorrecto se convierte en 0, no en un error.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- puente de llamadas de distancia.SetFindDistance, puente de llamadas de retardo.SetGrabDelay, equipofordress asigna estado.UseEquipForDress. Estas son tres configuraciones separadas; No existe un fijador universal para propiedades arbitrarias.
- El valor de la cadena se convierte primero a TryStr2Int con fallback=0. Por lo tanto, un error tipográfico puede escribir 0 en la configuración reconocida. Set no busca objetos y no se cambia de ropa.
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.Set");
UO.Set("finddistance", 10);Parámetros y flujo de ejecución:
- Cambia una de las tres configuraciones heredadas.
UO.Set("finddistance", 10);Parámetros y flujo de ejecución:
- puente de llamadas de distancia.SetFindDistance, puente de llamadas de retardo.SetGrabDelay, equipofordress asigna estado.UseEquipForDress. Estas son tres configuraciones separadas; No existe un fijador universal para propiedades arbitrarias.
return RunScenario();
object? RunScenario()
{
UO.Set("grabdelay", "250");
return null;
}Parámetros y flujo de ejecución:
- El valor de la cadena se convierte primero a TryStr2Int con fallback=0. Por lo tanto, un error tipográfico puede escribir 0 en la configuración reconocida. Set no busca objetos y no se cambia de ropa.
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.Set("equipfordress", 1);
UO.Print(UO.FindDistance());
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: name (String), value (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Set. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetFindDistance:bridge.SetFindDistance(value). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetGrabDelay:bridge.SetGrabDelay(value).
Código interno de implementación; no es un script independiente.
public void Set(string name, int value)
{
if (name.Equals("finddistance", StringComparison.OrdinalIgnoreCase))
{
bridge.SetFindDistance(value);
}
else if (name.Equals("grabdelay", StringComparison.OrdinalIgnoreCase))
{
bridge.SetGrabDelay(value);
}
else if (name.Equals("equipfordress", StringComparison.OrdinalIgnoreCase))
{
state.UseEquipForDress = value;
}
}Parámetros: name (String), value (Integer/String)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.Set. -
InjectionScript.Runtime.NumberConversions.TryStr2Int:NumberConversions.TryStr2Int(valueStr, out var value). -
InjectionScript.Runtime.InjectionApiUO.Set:Set(name, valueInt).
Código interno de implementación; no es un script independiente.
public void Set(string name, string valueStr)
{
int valueInt = NumberConversions.TryStr2Int(valueStr, out var value) ? value : 0;
Set(name, valueInt);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetDefault(object? name, object? @object);Guarda el alias serial nombrado en el estado de tiempo de ejecución.
-
name: alias del nombre como texto, el caso maneja el diccionario de objetos. -
object— Serie/alias vía Arg/GetObject. El nombre y el serial vienen en ese orden.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias llama a state.Objects.Set(Text(0),Arg(1)). No hay opción interactiva; No se comprueba la existencia de serial.
- Se trata de registrar el nombre del objeto, no de restablecer el perfil ni de cambiar todas las configuraciones a los valores predeterminados. En llamadas posteriores, el alias se resuelve nuevamente.
- 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.SetDefault");
UO.SetDefault("manualObject", UO.Self());Parámetros y flujo de ejecución:
- Guarda el alias serial nombrado en el estado de tiempo de ejecución.
UO.SetDefault("manualObject", UO.Self());Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias llama a state.Objects.Set(Text(0),Arg(1)). No hay opción interactiva; No se comprueba la existencia de serial.
return RunScenario();
object? RunScenario()
{
UO.SetDefault("manualBag", UO.Backpack());
UO.Print(UO.GetSerial("manualBag"));
return null;
}Parámetros y flujo de ejecución:
- Se trata de registrar el nombre del objeto, no de restablecer el perfil ni de cambiar todas las configuraciones a los valores predeterminados. En llamadas posteriores, el alias se resuelve nuevamente.
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.SetDefault("manualTarget", id);
UO.Print(UO.GetName("manualTarget"));
}
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: name (Any), object (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.State.RuntimeDictionary.Set:state.Objects.Set(Text(0), Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Text:Text(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(1).
Código interno de implementación; no es un script independiente.
case "setdefault":
if (arguments.Length > 1) state.Objects.Set(Text(0), Arg(1));
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetEasyUO(object? number, object? value);Escribe un valor de cadena en el registro de Windows EasyUO.
-
number: número de valor int, formato double sin prefijo *. -
value— Texto a través de ToString; guardado como transmitido.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- En Windows, abre/crea HKCU\Software\EasyUO con permiso de escritura, SetValue(decimalNumber,valor,RegistryValueKind.string). En otros sistemas operativos muestra un mensaje y no lo graba.
- Esta es una entrada externa permanente en el registro del usuario actual, sin alcance del tiempo de ejecución global ni del serial del juego. Esta función no oculta los errores de acceso al registro.
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.SetEasyUO");
UO.SetEasyUO(9001, "manual-example");Parámetros y flujo de ejecución:
- Escribe un valor de cadena en el registro de Windows EasyUO.
UO.SetEasyUO(9001, "manual-example");Parámetros y flujo de ejecución:
- En Windows, abre/crea HKCU\Software\EasyUO con permiso de escritura, SetValue(decimalNumber,valor,RegistryValueKind.String). En otros sistemas operativos muestra un mensaje y no lo graba.
return RunScenario();
object? RunScenario()
{
UO.SetEasyUO(9001, "");
return null;
}Parámetros y flujo de ejecución:
- Esta es una entrada externa permanente en el registro del usuario actual, sin alcance del tiempo de ejecución global ni del serial del juego. Esta función no oculta los errores de acceso al registro.
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.SetEasyUO(9001, "manual-example");
UO.Print(UO.GetEasyUO(9001));
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: number (Any), value (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetEasyUO. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetEasyUO:bridge.SetEasyUO(NumberConversions.ToInt(number), value.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(number). -
InjectionScript.Runtime.InjectionValue.ToString:value.ToString().
Código interno de implementación; no es un script independiente.
public void SetEasyUO(InjectionValue number, InjectionValue value)
=> bridge.SetEasyUO(NumberConversions.ToInt(number), value.ToString());void UO.SetGlobal(object? name, object? value);
void UO.SetGlobal(object? globalRegion, object? varName, object? varValue);SetGlobal y GetGlobal comparten valores entre todos los scripts, perfiles y procesos Full Client/Client. Los valores son cadenas; una clave ausente devuelve "N/A". Se distingue mayúsculas; las formas region usan region/name. Manager/Game Manager/CSharp/globals.json persiste y se relee bajo bloqueo entre procesos. Las formas Shared usan el mismo almacén.
-
globalRegion— Espacio de nombres combinado con la clave. -
name— Nombre de clave compartida que distingue mayúsculas. -
value— Valor guardado como texto. -
varName— Nombre de clave compartida que distingue mayúsculas. -
varValue— Valor guardado como texto.
Cada bloque es un .csx completo. Sustituya serials, tipos y coordenadas de ejemplo. El orden y los argumentos C# con nombre siguen la firma.
#setglobal team.target 0x40001234
#set global team.message Привіт усім
Cada bloque es un .csx completo. Sustituya serials, tipos y coordenadas de ejemplo. El orden y los argumentos C# con nombre siguen la firma.
UO.SetGlobal("team.target", 0x40001234);
UO.Print(UO.GetGlobal("team.target"));UO.SetGlobal("team.message", "Привіт");
UO.Print(UO.GetGlobal("team.message"));UO.SetGlobal("team", "delay", "350");
UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.SetGlobal("team.target", 0x40001234);
api.Print(api.GetGlobal("team.target"));
}
}CSharpGameApi.SetGlobal
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
-> InjectionScript.Runtime.State.Globals.SetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetMulPath(object? pathValue);Guarda la cadena de ruta mulPath en tiempo de ejecución.
-
pathValue— Texto a través de ToString; guardado como transmitido.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Asigna mulPath = ToString o la cadena vacía. El archivo no se abre, los datos del mapa no se recargan y esta función no verifica la disponibilidad de la ruta.
- Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.
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.SetMulPath");
UO.SetMulPath("C:\\Ultima Online");Parámetros y flujo de ejecución:
- Guarda la cadena de ruta mulPath en tiempo de ejecución.
UO.SetMulPath("C:\\Ultima Online");Parámetros y flujo de ejecución:
- Asigna mulPath = ToString o la cadena vacía. El archivo no se abre, los datos del mapa no se recargan y esta función no verifica la disponibilidad de la ruta.
return RunScenario();
object? RunScenario()
{
UO.SetMulPath("");
return null;
}Parámetros y flujo de ejecución:
- Este es el almacenamiento de compatibilidad del tiempo de ejecución actual. No hay consumidores en el proyecto privado mulPath/showZ; el cambio no recarga los recursos ni cambia la visualización de la altura.
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()
{
ApplyValue("C:\\Ultima Online");
return null;
}
void ApplyValue(dynamic value)
{
UO.SetMulPath(value);
}
}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: pathValue (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.SetMulPath. -
InjectionScript.Runtime.InjectionValue.ToString:pathValue.ToString().
Código interno de implementación; no es un script independiente.
public void SetMulPath(InjectionValue pathValue) => mulPath = pathValue.ToString() ?? string.Empty;ClassicUO — Bad Newbie & C# Scripts IDE