ES UO Topic quests virtues - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
| Tema | Comandos y explicaciones |
|---|---|
| QuestRequest | UO.QuestRequest |
| Quest Arrow | UO.GetQuestArrow |
| Virtues Gump | UO.ReqVirtuesGump |
| UseVirtue | UO.UseVirtue |
UO.QuestRequest · UO.GetQuestArrow · UO.ReqVirtuesGump · UO.UseVirtue
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 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;Parámetros, resultado y todos los escenarios
UO.Print(UO.UseVirtue("Honor"));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
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.
-
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.
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.
- 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.
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.GetQuestArrow();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));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;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;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;
}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 / Array.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetQuestArrow:bridge.GetQuestArrow().
Código interno de implementación; no es un script independiente.
case "getquestarrow":
return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());Parámetros: point (Any)
Resultado: dynamic / Array.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.GetQuestArrow:bridge.GetQuestArrow().
Código interno de implementación; no es un script independiente.
case "getquestarrow":
return new InjectionValue(bridge.GetQuestArrow().Select(value => new InjectionValue(value)).ToArray());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.QuestRequest();Solicita el menú de tareas del servidor.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.QuestRequest");
UO.QuestRequest();Parámetros y flujo de ejecución:
- Solicita el menú de tareas del servidor.
UO.QuestRequest();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;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;
}
}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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.QuestRequest:bridge.QuestRequest().
Código interno de implementación; no es un script independiente.
case "questrequest": bridge.QuestRequest(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ReqVirtuesGump();Solicita la ventana de virtudes de un personaje.
No hay parámetros.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- 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.
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.ReqVirtuesGump");
UO.ReqVirtuesGump();Parámetros y flujo de ejecución:
- Solicita la ventana de virtudes de un personaje.
UO.ReqVirtuesGump();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;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;
}
}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.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RequestVirtuesGump:bridge.RequestVirtuesGump().
Código interno de implementación; no es un script independiente.
case "reqvirtuesgump": bridge.RequestVirtuesGump(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.UseVirtue(object? virtueName);Pide la aplicación de la virtud.
-
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.
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.
- 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.
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.UseVirtue("Honor");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parámetros y flujo de ejecución:
- Pide la aplicación de la virtud.
UO.Print(UO.UseVirtue("Honor"));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;
}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;
}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: virtueName (Any)
Resultado: dynamic / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.UseVirtue:bridge.UseVirtue(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "usevirtue": return new InjectionValue(bridge.UseVirtue(Text(0)));