Repository navigation
ES UO Topic localization
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas
Recuperar texto cliloc localizado e información de codificación. Los nombres de los comandos API no se traducen al cambiar el idioma.
| Tema | Comandos y explicaciones |
|---|---|
| Cliloc | UO.GetCliloc |
| Cliloc by ID | UO.GetClilocByID |
| Codepage | UO.GetUserCodepage |
UO.GetCliloc · UO.GetClilocByID · UO.GetUserCodepage
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 item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.Print(UO.GetCliloc(item));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros, resultado y todos los escenarios
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetCliloc(object? objID);Lee el texto de propiedades del objeto terminado de OPL. GetTooltip y GetCliloc son sinónimos.
-
objID: objeto serial/ID obligatorio, no type ni cliloc. Acepta int, cadena decimal/hexadecimal, self, backpack, lasttarget, buscar elemento o nombre AddObject. 0 significa sin objeto.
string: nombre y texto de las propiedades, separados por avance de línea, o solo la parte que no está vacía. Cadena vacía si ObjID=0 o si no se reciben propiedades. Este es un texto ya preparado; numérico ID cliloc y los parámetros son devueltos por GetTooltipRec.
- Si la entrada ya existe en OPL, su texto se devuelve inmediatamente. Si no hay entrada, se envía una solicitud de propiedad y se espera una respuesta hasta 200 ms con una verificación cada 10 ms. Una pausa no garantiza una respuesta.
- Necesitamos un objeto accesible y soporte para propiedades por parte del servidor. Un resultado vacío no es prueba de la ausencia del objeto: use Exists solo.
- El texto puede contener marcas del servidor. No analice propiedades numéricas por posición de línea; use GetTooltipRec para esto.
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.GetCliloc("backpack");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- FindType: oro 0x0EED, cualquier hue=-1, contenido directo backpack. ObjID=elemento - encontrado serial.
- El resultado del getter es el texto, no la cantidad de oro. Para cantidad, utilice FindCount(artículo).
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.Print(UO.GetCliloc(item));
}
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:
- ObjID=lasttarget debe apuntar al objeto deseado.
- Una cadena vacía se procesa por separado; No es necesario repetir automáticamente la solicitud en un bucle sin fin.
return RunScenario();
object? RunScenario()
{
var text = UO.GetCliloc("lasttarget");
if (Truth(text == ""))
{
UO.Print("No properties received");
}
else
{
UO.Print(text);
}
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:
- id y save son variables separadas: el ID único del objeto y una instantánea de su texto.
- guardado no cambiará automáticamente si las propiedades en el servidor cambian más adelante.
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");
var saved = UO.GetCliloc(id);
UO.Print("Object: 0x" + Hex(id));
UO.Print(saved);
return null;
}
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: objID (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetTooltip:bridge.GetTooltip(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "getcliloc":
case "gettooltip":
return new InjectionValue(bridge.GetTooltip(Arg(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.GetClilocByID(object? clilocID, object? @params);Traduce la plantilla cliloc de los archivos del juego y sustituye los parámetros pasados.
-
clilocID- Obligatorio int - ID de un mensaje localizado, no serial de un objeto y no graphic. Por ejemplo, el número de la fila [0] del resultado GetTooltipRec. -
params— Matriz obligatoria de sustituciones en orden1_...,2_.... Se permite un valor escalar: se convierte en una matriz de una cadena. Para una plantilla sin parámetros, puede pasar una cadena vacía. El elemento #number hace referencia a otro cliloc. Los elementos se convierten en cadenas; Es preferible pasar cadenas explícitamente.
string: plantilla traducida con sustituciones de Params. Si no hay ningún cargador cliloc, se devuelve una cadena vacía. Si se desconoce ID, el ClilocLoader cargado devuelve el texto de diagnóstico MegaCliloc: falta con este número y parámetros sustituidos. No devuelve cliloc ID ni un signo de éxito.
- Para las propiedades del objeto, primero GetTooltipRec(ObjID): el número de mensaje y el objeto son diferentes ID. Para obtener texto listo para usar de todas las propiedades, use GetTooltip(ObjID).
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.GetClilocByID(1042971, "");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- ClilocID=1042971 — número de ejemplo; reemplázalo con lo que necesites. Params es una cadena vacía que se pasa como un único valor vacío.
- Para un patrón sin marcadores comodín, un parámetro vacío no cambia el texto. Si la plantilla espera datos, pase una matriz como en el siguiente ejemplo.
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);Parámetros y flujo de ejecución:
- ClilocID=1042971 es un ejemplo de plantilla. args[0] y args[1] ocupan las posiciones del primer y segundo parámetro.
- La declaración de la variable de índice [1] crea dos elementos: 0 a 1. Utilice la plantilla ID, que espera los parámetros adecuados.
return RunScenario();
object? RunScenario()
{
dynamic[] args = new dynamic[checked((int)(1) + 1)];
args[0] = "iron";
args[1] = "ingot";
UO.Print(UO.GetClilocByID(1042971, args));
return null;
}Parámetros y flujo de ejecución:
- El primer argumento son las propiedades clilocID; el segundo es su conjunto de Params ya preparado.
- Se comprueba la presencia de al menos un registro. Todos los parámetros se reciben del servidor y se transmiten junto con su ID.
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 rows = UO.GetTooltipRec("lasttarget");
if (Truth(ArrayLength(rows) > 0))
{
var row = rows[0];
UO.Print(UO.GetClilocByID(row[0], row[1]));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue mayúsculas y minúsculas. Use el nombre UO exacto. Compare indicadores numéricos con 0; use bool solo si la firma devuelve bool.
Parámetros: clilocID (Any), params (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetClilocById:bridge.GetClilocById(Arg(0), StringArrayArg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::StringArrayArg:StringArrayArg(1).
Código interno de implementación; no es un script independiente.
case "getclilocbyid":
return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.GetUserCodepage();Devuelve Codificación.Predeterminada.CodePage sin leer la configuración del perfil.
No hay parámetros.
int — Codificación.Predeterminada.CodePage del proceso actual. Esta es la codificación .NET, no la codificación de voz seleccionada UO.
- Devuelve Codificación.Predeterminada.CodePage sin leer la configuración del perfil. El valor depende del entorno .NET; no se puede considerar Windows garantizado ANSI.
- 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.
var result = UO.GetUserCodepage();
UO.Print("GetUserCodepage: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Devuelve Codificación.Predeterminada.CodePage sin leer la configuración del perfil.
UO.Print(UO.GetUserCodepage());Parámetros y flujo de ejecución:
- Devuelve Codificación.Predeterminada.CodePage sin leer la configuración del perfil. El valor depende del entorno .NET; no se puede considerar Windows garantizado ANSI.
return RunScenario();
object? RunScenario()
{
var codepage = UO.GetUserCodepage();
if (Truth(codepage == 65001))
{
UO.Print("UTF-8");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parámetros y flujo de ejecución:
- Lee el estado local actual. No hay paquete, objetivo o actualización automática; las lecturas individuales pueden ver diferentes estados.
return new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
private readonly Func<int, Task> WaitAsync;
private readonly string[] Args;
private readonly CancellationToken Cancellation;
private readonly Action Checkpoint;
public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
{
UO = api;
WaitAsync = wait;
Args = args;
Cancellation = cancellation;
Checkpoint = checkpoint;
}
public object? RunScenario()
{
var before = UO.GetUserCodepage();
UO.Wait(500);
var after = UO.GetUserCodepage();
UO.Print(before);
UO.Print(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: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int GetUserCodepage() => Encoding.Default.CodePage;ClassicUO — Bad Newbie & C# Scripts IDE