Skip to content

ES UO Topic conversion compatibility

Codex edited this page Oct 12, 2026 · 4 revisions

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

Conversión y compatibilidad

Inicio · C# · IDE · UO API · A–Z · Ejemplos · Idiomas

Convierte números, serial y formatos de secuencias de comandos heredados. Un nombre compatible puede tener restricciones o una operación explícitamente prohibida; esto se indica en la tarjeta.

Secciones

Tema Comandos y explicaciones
Hex / int UO.Hex2Int · UO.Int2Hex
EUO ↔ Injection UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO
EasyUO UO.GetEasyUO · UO.SetEasyUO
Conversión de tipo C# y biblioteca estándar C# y biblioteca estándar C# y biblioteca estándar C# y biblioteca estándar C# y biblioteca estándar · C# y biblioteca estándar

Todos los comandos del tema

Conversión

UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO

Límites de compatibilidad

UO.BoxHack · UO.ShutdownWindows

Ejemplos sobre el tema.

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.

UO.Int2Hex

Parámetros, resultado y todos los escenarios

UO.Print(UO.Int2Hex(1073746484));

UO.EUO2ID

Parámetros, resultado y todos los escenarios

var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

Referencia completa de comandos


UO.BoxHack

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

Firmas de C#

void UO.BoxHack();

Imprime un aviso de que ClassicUO no requiere el parche de cliente nativo heredado BoxHack.

Parámetros

No hay parámetros.

Valor devuelto

void: sin valor de retorno.

Comportamiento

  • La rama ExecuteLegacyManualAlias solo llama a SystemMessage. No corrige el movimiento, la voz, los contenedores ni el protocolo de red.

Scripts independientes de C#

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.

Ejemplo sencillo

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

1. Aviso de compatibilidad: secuencia de comandos directa

Parámetros y flujo de ejecución:

  • El mensaje describe la falta de necesidad del parche antiguo.
UO.BoxHack();

2. Procedimiento de llamada: función de script

Parámetros y flujo de ejecución:

  • El procedimiento de compatibilidad no cambia el mundo del juego.
return  RunScenario();
 object? RunScenario()
{
    CompatibilityNotice();
    return null;
}

void CompatibilityNotice()
{
    UO.BoxHack();
}

3. Continuación de guión - Clase de guión

Parámetros y flujo de ejecución:

  • Después del mensaje de diagnóstico, la ejecución continúa.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.BoxHack();
        UO.Print("continued");
        return null;
    }
}

Implementación del comando

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.

UO.BoxHack() — UO.BoxHack()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "boxhack":

                case "fixtalk":

                case "fixwalk":

                    SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");

                    break;

UO.EUO2ID

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

Firmas de C#

dynamic UO.EUO2ID(object? euo);

Decodifica la notación literal EasyUO en base 26 con A=0.

Parámetros

  • euo — Cadena/valor de EasyUO. Las letras se convierten a mayúsculas; se omiten los caracteres que no son letras.

Valor devuelto

int: el valor numérico de 32-bit resultante; Esta no es una cadena hexadecimal.

Comportamiento

  • Calcula secuencialmente valor=valor*26+(letra-A). El acumulador uint se ejecuta sin control, por lo que el desbordamiento envuelve los bits 32. La cadena vacía y la cadena sin letras dan 0. No busca ningún objeto en el mundo.

Scripts independientes de C#

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.

Ejemplo sencillo

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

1. Valor de una sola letra: guión directo

Parámetros y flujo de ejecución:

  • B codifica el número 1.
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));

2. Caracteres que no son letras: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • El caso no es importante; Se omiten el guión y el signo de exclamación.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2ID("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrada nula: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • A codifica cero; el resultado no indica el objeto encontrado.
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 value = UO.EUO2ID("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

Implementación del comando

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.

UO.EUO2ID(euo) — UO.EUO2ID(Any)

Parámetros: euo (Any)

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.EUO2Inj

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

Firmas de C#

string UO.EUO2Inj(object? easyValue);

Decodifica la notación literal EasyUO en base 26 con A=0.

Parámetros

  • easyValue — Cadena/valor de EasyUO. Las letras se convierten a mayúsculas; se omiten los caracteres que no son letras.

Valor devuelto

string es la cadena hexadecimal de la inyección del serial resultante.

Comportamiento

  • Calcula secuencialmente valor=valor*26+(letra-A). El acumulador uint se ejecuta sin control, por lo que el desbordamiento envuelve los bits 32. La cadena vacía y la cadena sin letras dan 0. No busca ningún objeto en el mundo.

Scripts independientes de C#

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.

Ejemplo sencillo

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.EUO2Inj("B");
UO.Print("EUO2Inj: " + Convert.ToString(result));

1. Valor de una sola letra: guión directo

Parámetros y flujo de ejecución:

  • B codifica el número 1.
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));

2. Caracteres que no son letras: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • El caso no es importante; Se omiten el guión y el signo de exclamación.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Inj("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrada nula: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • A codifica cero; el resultado no indica el objeto encontrado.
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 value = UO.EUO2Inj("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

Implementación del comando

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.

UO.EUO2Inj(easyValue) — UO.EUO2Inj(Any)

Parámetros: easyValue (Any)

Resultado: string / String.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public string EUO2Inj(InjectionValue easyValue)

        {

            uint value = 0;

            foreach (char c in easyValue.ToString().ToUpperInvariant())

            {

                if (c < 'A' || c > 'Z')

                    continue;

                value = unchecked(value * 26 + (uint)(c - 'A'));

            }

            return NumberConversions.ToHex(unchecked((int)value));

        }

UO.EUO2Type

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

Firmas de C#

dynamic UO.EUO2Type(object? euo);

Decodifica la notación literal EasyUO en base 26 con A=0.

Parámetros

  • euo — Cadena/valor de EasyUO. Las letras se convierten a mayúsculas; se omiten los caracteres que no son letras.

Valor devuelto

int: el valor numérico de 32-bit resultante; Esta no es una cadena hexadecimal.

Comportamiento

  • Calcula secuencialmente valor=valor*26+(letra-A). El acumulador uint se ejecuta sin control, por lo que el desbordamiento envuelve los bits 32. La cadena vacía y la cadena sin letras dan 0. No busca ningún objeto en el mundo.

Scripts independientes de C#

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.

Ejemplo sencillo

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

1. Valor de una sola letra: guión directo

Parámetros y flujo de ejecución:

  • B codifica el número 1.
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));

2. Caracteres que no son letras: función de secuencia de comandos

Parámetros y flujo de ejecución:

  • El caso no es importante; Se omiten el guión y el signo de exclamación.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.EUO2Type("b-!");
    UO.Print(Convert.ToString(value));
    return null;
}

3. Entrada nula: clase de secuencia de comandos

Parámetros y flujo de ejecución:

  • A codifica cero; el resultado no indica el objeto encontrado.
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 value = UO.EUO2Type("A");
        UO.Print(Convert.ToString(value));
        return null;
    }
}

Implementación del comando

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.

UO.EUO2Type(euo) — UO.EUO2Type(Any)

Parámetros: euo (Any)

Resultado: dynamic / Any.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "euo2id":

                case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));

UO.Hex2Int

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

Firmas de C#

int UO.Hex2Int(object? value);

Convierte un valor numérico o texto numérico en un int.

Parámetros

  • value — int, double, double-texto o texto hexadecimal con 0x. Se permiten espacios alrededor de los bordes y del letrero. Las cadenas de alias "self"/"lasttarget" no están permitidas aquí.

Valor devuelto

int con bits 32; hexadecimal 0xFFFFFFFF da -1. double se trunca a cero con una verificación de rango. Matriz y null en NumberConversions.ToInt da 0.

Comportamiento

  • A pesar del nombre, se acepta texto decimal. El texto no válido indica FormatException, el tipo no admitido indica InvalidCastException; desbordamiento double: error de conversión.
  • El formato inverso es UO.Int2Hex. Una transformación no prueba la existencia de un objeto.

Scripts independientes de C#

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.

Ejemplo sencillo

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.Hex2Int("0x40001234");
UO.Print("Hex2Int: " + Convert.ToString(result));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Convierte un valor numérico o texto numérico en un int.
UO.Print(UO.Hex2Int("0x40001234"));

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • A pesar del nombre, se acepta texto decimal. El texto no válido indica FormatException, el tipo no admitido indica InvalidCastException; desbordamiento double: error de conversión.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Hex2Int("255"));
    UO.Print(UO.Hex2Int("0xFFFFFFFF"));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • El formato inverso es UO.Int2Hex. Una transformación no prueba la existencia de un objeto.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var number = UO.Hex2Int("0x000000FF");
        UO.Print(UO.Int2Hex(number));
        return null;
    }
}

Implementación del comando

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.

UO.Hex2Int(value) — UO.Hex2Int(Any)

Parámetros: value (Any)

Resultado: int / Integer.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);

UO.Inj2EUO

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

Firmas de C#

string UO.Inj2EUO(object? serialValue);

Codifica el número de bits 32 serial con las letras A..Z para EasyUO.

Parámetros

  • serialValue: número hasta NumberConversions.ToInt, luego uint sin firmar con bits conservados. Para un alias, primero obtenga GetSerial/Hex2Int.

Valor devuelto

string son los dígitos base habituales 26 con A=0..Z=25. Cero da "A". Este no es un hexadecimal ni un nombre de objeto.

Comportamiento

  • El algoritmo inserta la letra A + valor % 26 a la izquierda y divide uint por 26 a cero. Esta es la conversión del proyecto, no el número de columna de Excel A1.
  • EUO2Inj realiza la conversión inversa a una cadena hexadecimal. La codificación no crea un objeto y no lo solicita al cliente.

Scripts independientes de C#

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.

Ejemplo sencillo

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.Inj2EUO(0);
UO.Print("Inj2EUO: " + Convert.ToString(result));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Codifica el número de bits 32 serial con las letras A..Z para EasyUO.
UO.Print(UO.Inj2EUO(0));

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • El algoritmo inserta la letra A + valor % 26 a la izquierda y divide uint por 26 a cero. Esta es la conversión del proyecto, no el número de columna de Excel A1.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Inj2EUO(26));
    UO.Print(UO.Inj2EUO(25));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • EUO2Inj realiza la conversión inversa a una cadena hexadecimal. La codificación no crea un objeto y no lo solicita al cliente.
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 value = UO.Hex2Int("0x40001234");
        var encoded = UO.Inj2EUO(value);
        UO.Print(encoded);
        UO.Print(UO.EUO2Inj(encoded));
        return null;
    }
}

Implementación del comando

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.

UO.Inj2EUO(serialValue) — UO.Inj2EUO(Any)

Parámetros: serialValue (Any)

Resultado: string / String.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public string Inj2EUO(InjectionValue serialValue)

        {

            uint value = unchecked((uint)NumberConversions.ToInt(serialValue));

            if (value == 0)

                return "A";

            var result = new StringBuilder();

            while (value > 0)

            {

                result.Insert(0, (char)('A' + value % 26));

                value /= 26;

            }

            return result.ToString();

        }

UO.Int2Hex

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

Firmas de C#

string UO.Int2Hex(object? value);

Formatea un int como una cadena serial hexadecimal.

Parámetros

  • value — texto int o numérico/hexadecimal; double se trunca a cero con una comprobación de desbordamiento. No se puede encontrar el alias del objeto.

Valor devuelto

string "0xXXXXXXXX": ocho dígitos hexadecimales, todos 32 bits int. Un valor negativo se representa en complemento a dos.

Comportamiento

  • NumberConversions.ToInt realiza la conversión, luego ToHex usa el formato X8. Por ejemplo -1 da "0xFFFFFFFF". El texto numérico no válido provoca un error; Esta no es una prueba de la existencia de serial.
  • Para representar un número, la conversión es suficiente; la presencia del objeto se comprueba mediante UO.Exists por separado.

Scripts independientes de C#

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.

Ejemplo sencillo

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.Int2Hex(1073746484);
UO.Print("Int2Hex: " + Convert.ToString(result));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Formatea un int como una cadena serial hexadecimal.
UO.Print(UO.Int2Hex(1073746484));

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • NumberConversions.ToInt realiza la conversión, luego ToHex usa el formato X8. Por ejemplo -1 da "0xFFFFFFFF". El texto numérico no válido provoca un error; Esta no es una prueba de la existencia de serial.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.Int2Hex(-1));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Para representar un número, la conversión es suficiente; la presencia del objeto se comprueba mediante UO.Exists por separado.
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 encoded = UO.Int2Hex(255);
        UO.Print(encoded);
        UO.Print(UO.Hex2Int(encoded));
        return null;
    }
}

Implementación del comando

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.

UO.Int2Hex(value) — UO.Int2Hex(Any)

Parámetros: value (Any)

Resultado: string / String.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));

UO.ScanInt

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

Firmas de C#

int UO.ScanInt(object? textValue, object? startValue);

Encuentra el primer número double/hexadecimal con signo en la cadena, comenzando en la posición.

Parámetros

  • textValue: envía un mensaje de texto a través de ToString. Busca la primera coincidencia de la expresión regular [-+]?(?:0[xX][0-9A-Fa-f]+|\d+).
  • startValue — int, posición cero UTF-16. Limitado a 0..text.Length; no indexar desde 1.

Valor devuelto

int es el primer número de bit 32 reconocido. No hay coincidencia o el número no encaja - 0; un cero real también da 0.

Comportamiento

  • Regex.Match se aplica a la subcadena (inicio). Si la primera coincidencia no logra convertir TryStr2Int, no se buscan los siguientes números. La parte fraccionaria, como .5, no está incluida en el token numérico.
  • Un inicio negativo se convierte en 0, un inicio más allá del final de la línea se convierte en texto.Longitud y el resultado es 0. La línea original no cambia.

Scripts independientes de C#

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.

Ejemplo sencillo

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.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Encuentra el primer número double/hexadecimal con signo en la cadena, comenzando en la posición.
UO.Print(UO.ScanInt("gold=123", 0));

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • Regex.Match se aplica a la subcadena (inicio). Si la primera coincidencia no logra convertir TryStr2Int, no se buscan los siguientes números. La parte fraccionaria, como .5, no está incluida en el token numérico.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ScanInt("-7 0xFF", 3));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Un inicio negativo se convierte en 0, un inicio más allá del final de la línea se convierte en texto.Longitud y el resultado es 0. La línea original no cambia.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = "count=0x20";
        var amount = UO.ScanInt(text, 6);
        UO.Print(amount);
        return null;
    }
}

Implementación del comando

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.

UO.ScanInt(textValue, startValue) — UO.ScanInt(Any,Any)

Parámetros: textValue (Any), startValue (Any)

Resultado: int / Integer.

Durante la llamada:

Código interno de implementación; no es un script independiente.

public int ScanInt(InjectionValue textValue, InjectionValue startValue)

        {

            string text = textValue.ToString() ?? string.Empty;

            int start = Math.Max(0, Math.Min(text.Length, NumberConversions.ToInt(startValue)));

            Match match = Regex.Match(text.Substring(start), @"[-+]?(?:0[xX][0-9A-Fa-f]+|\d+)", RegexOptions.CultureInvariant);

            return match.Success && NumberConversions.TryStr2Int(match.Value, out int value) ? value : 0;

        }

UO.ShutdownWindows

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

Firmas de C#

void UO.ShutdownWindows(object? state);

Siempre rechaza un intento de apagar Windows desde un script.

Parámetros

  • state: el argumento heredado se almacena en la firma, pero no se utiliza: cualquier llamada se bloquea.

Valor devuelto

No hay un resultado normal: NativeSubrutineException con el mensaje "el cierre de Windows está bloqueado intencionalmente: es posible que los scripts no cierren Windows".

Comportamiento

  • ExecuteLegacyManualAlias lanza una excepción inmediatamente. No se realiza ningún apagado, reinicio o inicio de un proceso externo.
  • Los tres ejemplos muestran deliberadamente llamadas prohibidas y fallan cuando se ejecutan. No pueden utilizarse como condición para un cierre exitoso.

Scripts independientes de C#

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.

Ejemplo sencillo

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.

try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Siempre rechaza un intento de apagar Windows desde un script.
UO.ShutdownWindows(0);

2. Opción explícita: función de script

Parámetros y flujo de ejecución:

  • ExecuteLegacyManualAlias lanza una excepción inmediatamente. No se realiza ningún apagado, reinicio o inicio de un proceso externo.
return  RunScenario();
 object? RunScenario()
{
    UO.ShutdownWindows(1);
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • Los tres ejemplos muestran deliberadamente llamadas prohibidas y fallan cuando se ejecutan. No pueden utilizarse como condición para un cierre exitoso.
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.Print("The next command is expected to fail");
        UO.ShutdownWindows(0);
        return null;
    }
}

Implementación del comando

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.

UO.ShutdownWindows(state) — UO.ShutdownWindows(Any)

Parámetros: state (Any)

Resultado: void / Unit.

Durante la llamada:

Código interno de implementación; no es un script independiente.

case "shutdownwindows":

                    throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");

Clone this wiki locally