ES UO Topic quests virtues - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

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

Misiones y virtudes

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

Solicitudes generales de clientes sobre misiones y virtudes. Las misiones del servidor Age of Power se describen en una sección separada de la Wiki.

Secciones

Tema Comandos y explicaciones
QuestRequest UO.QuestRequest
Quest Arrow UO.GetQuestArrow
Virtues Gump UO.ReqVirtuesGump
UseVirtue UO.UseVirtue

Todos los comandos del tema

Misiones / Virtudes

UO.QuestRequest · UO.GetQuestArrow · UO.ReqVirtuesGump · UO.UseVirtue

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.GetQuestArrow

Parámetros, resultado y todos los escenarios

var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
    UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

UO.UseVirtue

Parámetros, resultado y todos los escenarios

UO.Print(UO.UseVirtue("Honor"));

Referencia completa de comandos


UO.GetQuestArrow

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

Firmas de C#

dynamic UO.GetQuestArrow();
dynamic UO.GetQuestArrow(object? point);

Lee la posición de la flecha de la tarea servidor. Permite que el script sepa hacia dónde apunta la flecha recibida del servidor; no lee el comando Track.

Parámetros

  • point: marcador de posición opcional obsoleto. El formulario UO.GetQuestArrow(point) se conserva por motivos de compatibilidad; el argumento no se lee ni se modifica. Utilice UO.GetQuestArrow() y su matriz de retorno.

Valor devuelto

Matriz [existe, x, y], exactamente tres números enteros. [0] - 1 (true), si hay una flecha de servidor, en caso contrario 0 (false); [1] - X, [2] - Y. Sin flecha [0, 0, 0]. Sólo el campo [0] es un atributo booleano; toda la matriz no es bool. Si hay varias flechas se lee la primera guardada, no queda elección por ID.

Comportamiento

  • Las flechas locales y del servidor se almacenan por separado. Track(0) no elimina la flecha del servidor. Sin gráficos, el marcador se guarda y aparece cuando se abre la ventana. Cerrar la ventana del juego no elimina los marcadores; romper la conexión los borra. El servidor puede mover o quitar su flecha. Las coordenadas no prueban que el objetivo sea alcanzable.
  • Coordenadas de celda en el mapa actual, no píxeles de ventana. No se aceptan Z ni número de tarjeta. Seleccione un punto existente en su mapa; el equipo no comprueba el terreno, no traza una ruta ni sigue un objetivo en movimiento.
  • Marcador de posición opcional obsoleto. El formulario UO.GetQuestArrow(point) se conserva por motivos de compatibilidad; el argumento no se lee ni se modifica. Utilice UO.GetQuestArrow() y su matriz de retorno.

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

1. Aplicación directa - guión directo

Parámetros y flujo de ejecución:

  • Primero, se marca [0]; entonces [1]/[2] se puede leer como X/Y. No pase toda la matriz como serial o bool.
var arrow = UO.GetQuestArrow();
if (Truth(Truth(arrow[0]) == true))
{
    UO.Print(Convert.ToString(arrow[1]) + ", " + Convert.ToString(arrow[2]));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Condición de juego - función de escenario

Parámetros y flujo de ejecución:

  • Copia las coordenadas de la flecha del servidor al marcador local Track. Esto no es un movimiento. Si luego el servidor mueve la flecha, el local se quedará en el mismo punto.
return  RunScenario();
 object? RunScenario()
{
    var arrow = UO.GetQuestArrow();
    if (Truth(arrow[0] == 1))
    {
        UO.Track(1, arrow[1], arrow[2]);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • ArrowDistance devuelve la distancia UO.GetDistance(x,y) al punto del servidor o −1 si no hay flecha. A una distancia de hasta dos celdas, solo se elimina el Track local, permanece la flecha 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()
    {
        var distance = ArrowDistance();
        if (Truth(distance >= 0) && Truth(distance <= 2))
        {
            UO.Track(0);
        }

        return null;
    }

    dynamic ArrowDistance()
    {
        var arrow = UO.GetQuestArrow();
        if (Truth(arrow[0] == 0))
        {
            return -1;
        }

        return UO.GetDistance(arrow[1], arrow[2]);
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

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.GetQuestArrow() — UO.GetQuestArrow()

Parámetros: Sin parámetros.

Resultado: dynamic / Array.

Durante la llamada:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.GetQuestArrow(point) — UO.GetQuestArrow(Any)

Parámetros: point (Any)

Resultado: dynamic / Array.

Durante la llamada:

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

case "getquestarrow":

                    return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());

UO.QuestRequest

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

Firmas de C#

void UO.QuestRequest();

Solicita el menú de tareas del servidor.

Parámetros

No hay parámetros.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • QuestRequest pasa GameActions.RequestQuestMenu(_world) a la transmisión del juego. El equipo no lee ni crea tareas.
  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Solicita el menú de tareas del servidor.
UO.QuestRequest();

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

Parámetros y flujo de ejecución:

  • QuestRequest pasa GameActions.RequestQuestMenu(_world) a la transmisión del juego. El equipo no lee ni crea tareas.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.IsOnline()))
    {
        UO.QuestRequest();
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.
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.QuestRequest();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        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.QuestRequest() — UO.QuestRequest()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "questrequest": bridge.QuestRequest(); return InjectionValue.Unit;

UO.ReqVirtuesGump

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

Firmas de C#

void UO.ReqVirtuesGump();

Solicita la ventana de virtudes de un personaje.

Parámetros

No hay parámetros.

Valor devuelto

void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.

Comportamiento

  • RequestVirtuesGump, si hay Jugador, llama a ReplyGump con carácter gumpID=0x1CD, botón=1 y carácter serial. Sin Player no hay petición.
  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Solicita la ventana de virtudes de un personaje.
UO.ReqVirtuesGump();

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

Parámetros y flujo de ejecución:

  • RequestVirtuesGump, si hay Jugador, llama a ReplyGump con carácter gumpID=0x1CD, botón=1 y carácter serial. Sin Player no hay petición.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.Self() != 0))
    {
        UO.ReqVirtuesGump();
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • En los ejemplos, UO.Wait especifica solo una pausa del script; el final de la pausa no prueba que el servidor haya completado la solicitud.
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.ReqVirtuesGump();
        UO.Wait(500);
        UO.Print(UO.GetGumpsCount());
        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.ReqVirtuesGump() — UO.ReqVirtuesGump()

Parámetros: Sin parámetros.

Resultado: void / Unit.

Durante la llamada:

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

case "reqvirtuesgump": bridge.RequestVirtuesGump(); return InjectionValue.Unit;

UO.UseVirtue

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

Firmas de C#

dynamic UO.UseVirtue(object? virtueName);

Pide la aplicación de la virtud.

Parámetros

  • virtueName — El nombre honor/sacrificio/valor/compasión/honestidad/humildad/justicia/espiritualidad no distingue entre mayúsculas y minúsculas, se eliminan los espacios exteriores o el texto double ID 1..8.

Valor devuelto

Indicador numérico int: 1 - válido ID 1..8 enviado a través de Send_InvokeVirtueRequest; 0 - nombre desconocido/ID no válido. Esto no es una confirmación del efecto del servidor.

Comportamiento

  • Los nombres corresponden a ID: Honor=1, Sacrificio=2, Valor=3, Compasión=4, Honestidad=5, Humildad=6, Justicia=7, Espiritualidad=8. El análisis numérico de esta función utiliza int.TryParse, no conversión 0x.
  • El equipo en sí no establece una meta de seguimiento ni verifica los puntos de virtud/disponibilidad; esto lo determina el servidor.

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

1. Llamada directa - guión directo

Parámetros y flujo de ejecución:

  • Pide la aplicación de la virtud.
UO.Print(UO.UseVirtue("Honor"));

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

Parámetros y flujo de ejecución:

  • Los nombres corresponden a ID: Honor=1, Sacrificio=2, Valor=3, Compasión=4, Honestidad=5, Humildad=6, Justicia=7, Espiritualidad=8. El análisis numérico de esta función utiliza int.TryParse, no conversión 0x.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.UseVirtue("1"));
    return null;
}

3. Función auxiliar completa: clase de script

Parámetros y flujo de ejecución:

  • El equipo en sí no establece una meta de seguimiento ni verifica los puntos de virtud/disponibilidad; esto lo determina el servidor.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var accepted = UO.UseVirtue("Honor");
        if (Truth(accepted))
        {
            UO.Print("Virtue request sent");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

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.UseVirtue(virtueName) — UO.UseVirtue(Any)

Parámetros: virtueName (Any)

Resultado: dynamic / Any.

Durante la llamada:

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

case "usevirtue": return new InjectionValue(bridge.UseVirtue(Text(0)));
⚠️ **GitHub.com Fallback** ⚠️