ES UO Topic sound visual environment - 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
Sonidos, iluminación, efectos de temporada y clima del cliente.
| Tema | Comandos y explicaciones |
|---|---|
| Sound | UO.Sound |
| PlayWav | UO.PlayWav |
| Light | UO.Light |
| Season | UO.SetSeason |
| Weather Filter | UO.FilterWeather |
UO.Sound · UO.PlayWav · UO.Alarm · UO.Light · UO.SetSeason · UO.FilterWeather · UO.TicksAnim
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
UO.Print(UO.PlayWav("alert.wav"));Parámetros, resultado y todos los escenarios
UO.Light();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Alarm();Imprime la palabra Alarm en el syslog local ClassicUO. Úselo como nota sobre la ocurrencia de una condición en el script.
No hay parámetros.
void - sin valor. Ejecutar en una línea separada. Esto no es bool ni una confirmación de que el usuario vio el mensaje.
- Sólo se registra el formulario UO.Alarm() sin parámetros. Para su propio texto, utilice UO.Print(text).
- El comando no reproduce ningún sonido, no muestra ningún icono ni activa una ventana. El mensaje sigue siendo local: no se envía al chat del juego.
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.Alarm");
UO.Alarm();Parámetros y flujo de ejecución:
- No hay parámetros; La palabra Alarm aparece en el registro del sistema.
UO.Alarm();Parámetros y flujo de ejecución:
- Alarm no tiene una opción de texto. Life devuelve el número HP; Print agrega una descripción clara del motivo.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Life() < 30))
{
UO.Alarm();
UO.Print("Health is below 30");
}
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:
- 0x0EED - tipo dorado, -1 - cualquier color, backpack - mochila. Alarm se llama solo cuando se encuentra serial; No pongas esa llamada en un bucle sin demora.
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 item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.Alarm();
UO.Print("Gold stack found: " + Convert.ToString(item));
}
else
{
UO.Print("No gold stack in the loaded backpack");
}
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.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(arguments.Length > 0 ? Text(0) : "Alarm"). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "alarm":
SystemMessage(arguments.Length > 0 ? Text(0) : "Alarm"); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FilterWeather();
void UO.FilterWeather(object? enabled);Activa o desactiva el filtro meteorológico del cliente.
-
enabled— Valor opcional: sin argumento, el filtro está activado; 0 se apaga, int distinto de cero se enciende.
void: sin valor de retorno.
- Escribe el indicador normalizado en el estado de tiempo de ejecución y lo pasa al administrador. El filtro afecta el procesamiento del cliente; los eventos del servidor y otras configuraciones de registro permanecen separados.
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.FilterWeather");
UO.FilterWeather();Parámetros y flujo de ejecución:
- Un número cero de argumentos significa incluir, no leer.
UO.FilterWeather();Parámetros y flujo de ejecución:
- Un 0 explícito desactiva el filtro del cliente.
return RunScenario();
object? RunScenario()
{
UO.FilterWeather(0);
return null;
}Parámetros y flujo de ejecución:
- El filtro se enciende y claramente vuelve al estado apagado.
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.FilterWeather(1);
UO.FilterWeather(0);
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. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetWeatherFilter:bridge.SetWeatherFilter(state.WeatherFilter).
Código interno de implementación; no es un script independiente.
case "filterweather": state.WeatherFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetWeatherFilter(state.WeatherFilter); break;Parámetros: enabled (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetWeatherFilter:bridge.SetWeatherFilter(state.WeatherFilter).
Código interno de implementación; no es un script independiente.
case "filterweather": state.WeatherFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetWeatherFilter(state.WeatherFilter); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Light();
void UO.Light(object? value);Establece localmente la iluminación general del cliente.
-
value— Entero opcional: 0..30, limitado a este rango. La forma sin argumentos utiliza 0; Esto es una escritura, no una lectura.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias pasa Arg(0), donde el argumento que falta es 0. SetLight asigna Light.Overall y Light.RealOverall un valor de byte limitado.
- No cambia la iluminación de otros jugadores y no la solicita al servidor. El siguiente paquete de servidor de iluminación puede reemplazar el valor.
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.Light");
UO.Light();Parámetros y flujo de ejecución:
- Establece localmente la iluminación general del cliente.
UO.Light();Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias pasa Arg(0), donde el argumento que falta es 0. SetLight asigna Light.Overall y Light.RealOverall un valor de byte limitado.
return RunScenario();
object? RunScenario()
{
UO.Light(15);
return null;
}Parámetros y flujo de ejecución:
- No cambia la iluminación de otros jugadores y no la solicita al servidor. El siguiente paquete de servidor de iluminación puede reemplazar el valor.
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.Light(99);
UO.Print("Light clamped to 30");
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.SetLight:bridge.SetLight(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "light": bridge.SetLight(Arg(0)); break;Parámetros: value (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetLight:bridge.SetLight(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "light": bridge.SetLight(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.PlayWav(object? file);Reproduce un archivo de audio local.
-
file: ruta al archivo de audio. La ruta absoluta se conserva, la ruta relativa se resuelve desde CUOEnviroment.ExecutablePath. La extensión en sí no está marcada: el archivo dice SoundEffect.FromStream.
Indicador numérico int: 1 - sonido.Play() aceptado, 0 - no hay archivo, la reproducción falló o se detectó un error. Este no es el final de la reproducción.
- Bridge abre el archivo para leerlo, decodifica SoundEffect.FromStream, almacena los sonidos recibidos en una lista limitada de _sonidos y elimina/elimina los antiguos cuando se alcanza el límite.
- Si un archivo/error no existe, se muestra un mensaje y el resultado es 0. El comando no espera a que finalice el sonido y no transfiere el archivo al 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.
var result = UO.PlayWav("alert.wav");
UO.Print("PlayWav: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Reproduce un archivo de audio local.
UO.Print(UO.PlayWav("alert.wav"));Parámetros y flujo de ejecución:
- Bridge abre el archivo para leerlo, decodifica SoundEffect.FromStream, almacena los sonidos recibidos en una lista limitada de _sonidos y elimina/elimina los antiguos cuando se alcanza el límite.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.PlayWav("C:\\UO Sounds\\alert.wav"));
return null;
}Parámetros y flujo de ejecución:
- Si un archivo/error no existe, se muestra un mensaje y el resultado es 0. El comando no espera a que finalice el sonido y no transfiere el archivo al 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.PlayWav("alert.wav");
if (Truth(accepted == 0))
{
UO.Print("Audio file could not be played");
}
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: file (Any/String)
Resultado: int / Any.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlayWav:bridge.PlayWav(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Código interno de implementación; no es un script independiente.
case "playwav": return new InjectionValue(bridge.PlayWav(Text(0)));Parámetros: file (Any/String)
Resultado: int / Integer.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.PlayWav. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlayWav:bridge.PlayWav(file).
Código interno de implementación; no es un script independiente.
public int PlayWav(string file) => bridge.PlayWav(file);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetSeason(object? season);Cambia localmente la temporada mostrada.
-
season— int: 0..4; los valores por debajo de 0/por encima de 4 se limitan al límite más cercano. El número corresponde a la enumeración Season del cliente.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- Puente.SetSeason llama a _world.ChangeSeason((Temporada)abrazadera(temporada,0,4), -1). Esta es una muestra del mundo del cliente y no una solicitud para cambiar la temporada del servidor.
- Los datos del servidor pueden volver a cambiar la temporada más adelante. El comando no cambia el mapa, el clima del servidor ni la fecha del calendario.
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.SetSeason");
UO.SetSeason(0);Parámetros y flujo de ejecución:
- Cambia localmente la temporada mostrada.
UO.SetSeason(0);Parámetros y flujo de ejecución:
- Puente.SetSeason llama a _world.ChangeSeason((Temporada)abrazadera(temporada,0,4), -1). Esta es una muestra del mundo del cliente y no una solicitud para cambiar la temporada del servidor.
return RunScenario();
object? RunScenario()
{
UO.SetSeason(4);
return null;
}Parámetros y flujo de ejecución:
- Los datos del servidor pueden volver a cambiar la temporada más adelante. El comando no cambia el mapa, el clima del servidor ni la fecha del calendario.
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.SetSeason(99);
UO.Print("Season clamped to 4");
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: season (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetSeason:bridge.SetSeason(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "setseason": bridge.SetSeason(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Sound(object? soundId);Reproduce sonido en ID desde los recursos del cliente.
-
soundId- int ID sonido de recurso UO; ni el camino a WAV ni la duración.
void - sin valor. Llame en una línea separada; la finalización no confirma la acción del servidor.
- ExecuteLegacyManualAlias llama a bridge.PlaySound, donde RequireGameView("PlaySound").Audio.PlaySound(sound) se ejecuta en el hilo del juego.
- Requiere una ventana gráfica abierta con audio. Un error faltante GUI puede finalizar la llamada; Este comando void no devuelve el resultado de la reproducción. Para un archivo local, use PlayWav.
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.Sound");
UO.Sound(0x0040);Parámetros y flujo de ejecución:
- Reproduce sonido en ID desde los recursos del cliente.
UO.Sound(0x0040);Parámetros y flujo de ejecución:
- ExecuteLegacyManualAlias llama a bridge.PlaySound, donde RequireGameView("PlaySound").Audio.PlaySound(sound) se ejecuta en el hilo del juego.
return RunScenario();
object? RunScenario()
{
var soundId = 0x0040;
UO.Sound(soundId);
return null;
}Parámetros y flujo de ejecución:
- Requiere una ventana gráfica abierta con audio. Un error faltante GUI puede finalizar la llamada; Este comando de unidad no devuelve un resultado de reproducción. Para un archivo local, use PlayWav.
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.Sound(0x0040);
UO.Wait(250);
UO.Print("Sound request made");
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: soundId (Any)
Resultado: void / Unit.
Durante la llamada:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlaySound:bridge.PlaySound(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Código interno de implementación; no es un script independiente.
case "sound": bridge.PlaySound(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksAnim();Lee la marca guardada TicksAnim.
No hay parámetros.
int: marca UO.Timer en décimas de segundo desde el inicio del tiempo de ejecución. 0 - la marca aún no se ha fijado o el evento ocurrió en la primera décima de segundo; No son milisegundos ni tiempo calendario.
- Devuelve el campo ticksAnim. Se actualiza mediante Morph o mediante un resultado distinto de cero Move; no es una observación automática de todas las actividades manuales/del servidor. El comando en sí no cambia la marca.
- UO.Timer() - la marca calcula la edad en décimas de segundo. Las marcas no se comparan entre diferentes tiempos de ejecución.
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.TicksAnim();
UO.Print("TicksAnim: " + Convert.ToString(result));Parámetros y flujo de ejecución:
- Lee la marca guardada TicksAnim.
var stamp = UO.TicksAnim();
UO.Print(stamp);Parámetros y flujo de ejecución:
- Devuelve el campo ticksAnim. Se actualiza mediante Morph o mediante un resultado distinto de cero Move; no es una observación automática de todas las actividades manuales/del servidor. El comando en sí no cambia la marca.
return RunScenario();
object? RunScenario()
{
var stamp = UO.TicksAnim();
var ageTenths = UO.Timer() - stamp;
UO.Print(ageTenths);
return null;
}Parámetros y flujo de ejecución:
- UO.Timer() - la marca calcula la edad en décimas de segundo. Las marcas no se comparan entre diferentes tiempos de ejecución.
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.TicksAnim();
UO.Wait(250);
var after = UO.TicksAnim();
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: int / Integer.
Durante la llamada:
Código interno de implementación; no es un script independiente.
public int TicksAnim() => ticksAnim;