DE UO Topic sound visual environment - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Home · C# · IDE · UO API · A–Z · Beispiele · Sprachen
Geräusche, Beleuchtung, Jahreszeit und Kundenwettereffekte.
| Thema | Befehle und Erklärungen |
|---|---|
| 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
Jede Befehlskarte verfügt über mehrere unabhängige Szenarien: Direktcode, Funktionen und Klassen. Nachfolgend finden Sie ausgewählte kurze Szenarien; Einschränkungen und eine vollständige Analyse sind geplant.
Parameter, Ergebnis und alle Szenarien
UO.Print(UO.PlayWav("alert.wav"));Parameter, Ergebnis und alle Szenarien
UO.Light();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Alarm();Gibt das Wort Alarm im lokalen ClassicUO-Syslog aus. Wird als Hinweis zum Eintreten einer Bedingung im Skript verwendet.
Es gibt keine Parameter.
void – kein Wert. In einer separaten Zeile ausführen. Dies ist kein bool oder eine Bestätigung, dass der Benutzer die Nachricht gesehen hat.
- Es wird nur die Form UO.Alarm() ohne Parameter registriert. Für Ihren eigenen Text verwenden Sie UO.Print(text).
- Der Befehl spielt keinen Ton ab, blinkt kein Symbol und aktiviert kein Fenster. Die Nachricht bleibt lokal: Sie wird nicht an den Spielchat gesendet.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.Alarm");
UO.Alarm();Parameter und Ablauf:
- Es gibt keine Parameter; Das Wort Alarm erscheint im Systemprotokoll.
UO.Alarm();Parameter und Ablauf:
- Alarm hat keine Textoption. Life gibt die Zahl HP zurück; Print fügt eine klare Beschreibung des Grundes hinzu.
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;Parameter und Ablauf:
- 0x0EED – Goldtyp, -1 – jede Farbe, backpack – Rucksack. Alarm wird nur aufgerufen, wenn serial gefunden wird; Setzen Sie einen solchen Anruf nicht ohne Verzögerung in eine Schleife.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(arguments.Length > 0 ? Text(0) : "Alarm"). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Interner Implementierungscode; kein eigenständiges Skript.
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);Aktiviert oder deaktiviert den Client-Wetterfilter.
-
enabled– Optionaler Wert: ohne Argument ist der Filter aktiviert; 0 schaltet sich aus, int ungleich Null schaltet ein.
void – kein Rückgabewert.
- Schreibt das normalisierte Flag in den Laufzeitstatus und übergibt es an den Manager. Der Filter beeinflusst die Verarbeitung des Clients; Serverereignisse und andere Protokolleinstellungen bleiben getrennt.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.FilterWeather");
UO.FilterWeather();Parameter und Ablauf:
- Eine Anzahl von Argumenten von Null bedeutet „Einschließen“, nicht „Lesen“.
UO.FilterWeather();Parameter und Ablauf:
- Ein explizites 0 schaltet den Client-Filter aus.
return RunScenario();
object? RunScenario()
{
UO.FilterWeather(0);
return null;
}Parameter und Ablauf:
- Der Filter schaltet sich ein und kehrt deutlich in den Aus-Zustand zurück.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetWeatherFilter:bridge.SetWeatherFilter(state.WeatherFilter).
Interner Implementierungscode; kein eigenständiges Skript.
case "filterweather": state.WeatherFilter = arguments.Length == 0 || Arg(0) != 0 ? 1 : 0; bridge.SetWeatherFilter(state.WeatherFilter); break;Parameter: enabled (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetWeatherFilter:bridge.SetWeatherFilter(state.WeatherFilter).
Interner Implementierungscode; kein eigenständiges Skript.
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);Legt lokal die Gesamtbeleuchtung des Clients fest.
-
value– Optionale Ganzzahl: 0..30, begrenzt auf diesen Bereich. Die Form ohne Argumente verwendet 0; Dies ist ein Schreibvorgang, kein Lesevorgang.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- ExecuteLegacyManualAlias übergibt Arg(0), wobei das fehlende Argument 0 ist. SetLight weist Light.Overall und Light.RealOverall den begrenzten Wert von byte zu.
- Ändert die Beleuchtung anderer Spieler nicht und fordert sie nicht vom Server an. Das folgende Beleuchtungsserverpaket kann den Wert ersetzen.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.Light");
UO.Light();Parameter und Ablauf:
- Legt lokal die Gesamtbeleuchtung des Clients fest.
UO.Light();Parameter und Ablauf:
- ExecuteLegacyManualAlias übergibt Arg(0), wobei das fehlende Argument 0 ist. SetLight weist Light.Overall und Light.RealOverall den begrenzten Wert von byte zu.
return RunScenario();
object? RunScenario()
{
UO.Light(15);
return null;
}Parameter und Ablauf:
- Ändert die Beleuchtung anderer Spieler nicht und fordert sie nicht vom Server an. Das folgende Beleuchtungsserverpaket kann den Wert ersetzen.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetLight:bridge.SetLight(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "light": bridge.SetLight(Arg(0)); break;Parameter: value (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetLight:bridge.SetLight(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "light": bridge.SetLight(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.PlayWav(object? file);Spielt eine lokale Audiodatei ab.
-
file– Pfad zur Audiodatei. Der absolute Pfad bleibt erhalten, der relative Pfad wird aus CUOEnviroment.ExecutablePath aufgelöst. Die Erweiterung selbst wird nicht überprüft: Die Datei lautet SoundEffect.FromStream.
Numerisches Flag int: 1 – sound.Play() akzeptiert, 0 – keine Datei, Wiedergabe fehlgeschlagen oder Fehler abgefangen. Dies ist nicht das Ende der Wiedergabe.
- Bridge öffnet die Datei zum Lesen, dekodiert SoundEffect.FromStream, speichert empfangene Sounds in einer begrenzten _sounds-Liste und löscht/entsorgt alte, wenn das Limit erreicht ist.
- Wenn eine Datei/ein Fehler nicht existiert, wird eine Meldung angezeigt, das Ergebnis ist 0. Der Befehl wartet nicht auf das Ende des Tons und überträgt die Datei nicht auf den Server.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.PlayWav("alert.wav");
UO.Print("PlayWav: " + Convert.ToString(result));Parameter und Ablauf:
- Spielt eine lokale Audiodatei ab.
UO.Print(UO.PlayWav("alert.wav"));Parameter und Ablauf:
- Bridge öffnet die Datei zum Lesen, dekodiert SoundEffect.FromStream, speichert empfangene Sounds in einer begrenzten _sounds-Liste und löscht/entsorgt alte, wenn das Limit erreicht ist.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.PlayWav("C:\\UO Sounds\\alert.wav"));
return null;
}Parameter und Ablauf:
- Wenn eine Datei/ein Fehler nicht existiert, wird eine Meldung angezeigt, das Ergebnis ist 0. Der Befehl wartet nicht auf das Ende des Tons und überträgt die Datei nicht auf den Server.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: file (Any/String)
Ergebnis: int / Any.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlayWav:bridge.PlayWav(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "playwav": return new InjectionValue(bridge.PlayWav(Text(0)));Parameter: file (Any/String)
Ergebnis: int / Integer.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.PlayWav. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlayWav:bridge.PlayWav(file).
Interner Implementierungscode; kein eigenständiges Skript.
public int PlayWav(string file) => bridge.PlayWav(file);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetSeason(object? season);Ändert lokal die angezeigte Jahreszeit.
-
season— int: 0..4; Werte unter 0/über 4 sind auf die nächstgelegene Grenze begrenzt. Die Nummer entspricht der Enumeration Season des Clients.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- Bridge.SetSeason ruft _world.ChangeSeason((Season)clamp(season,0,4), -1) auf. Dies ist eine Darstellung der Welt des Clients und keine Aufforderung, die Serversaison zu ändern.
- Serverdaten können die Saison später noch einmal ändern. Der Befehl ändert nicht die Karte, das Serverwetter oder das Kalenderdatum.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.SetSeason");
UO.SetSeason(0);Parameter und Ablauf:
- Ändert lokal die angezeigte Jahreszeit.
UO.SetSeason(0);Parameter und Ablauf:
- Bridge.SetSeason ruft _world.ChangeSeason((Season)clamp(season,0,4), -1) auf. Dies ist eine Darstellung der Welt des Clients und keine Aufforderung, die Serversaison zu ändern.
return RunScenario();
object? RunScenario()
{
UO.SetSeason(4);
return null;
}Parameter und Ablauf:
- Serverdaten können die Saison später noch einmal ändern. Der Befehl ändert nicht die Karte, das Serverwetter oder das Kalenderdatum.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: season (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetSeason:bridge.SetSeason(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "setseason": bridge.SetSeason(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Sound(object? soundId);Spielt Ton auf ID von Client-Ressourcen ab.
-
soundId- int ID Ressourcensound UO; nicht der Weg zu WAV und nicht die Dauer.
void – kein Wert. Rufen Sie eine separate Leitung an; Der Abschluss bestätigt nicht die Aktion des Servers.
- ExecuteLegacyManualAlias ruft Bridge.PlaySound auf, wobei RequireGameView("PlaySound").Audio.PlaySound(Sound) im Spielthread ausgeführt wird.
- Erfordert ein geöffnetes Grafikfenster mit Audio. Ein fehlender Fehler GUI kann den Anruf beenden; Dieser void-Befehl gibt kein Wiedergabeergebnis zurück. Für eine lokale Datei verwenden Sie PlayWav.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Der Befehl steht in einer eigenen Anweisung. Die Meldung davor zeigt den Beginn des Aufrufs und bestätigt keine Serveraktion.
UO.Print("Calling UO.Sound");
UO.Sound(0x0040);Parameter und Ablauf:
- Spielt Ton auf ID von Client-Ressourcen ab.
UO.Sound(0x0040);Parameter und Ablauf:
- ExecuteLegacyManualAlias ruft Bridge.PlaySound auf, wobei RequireGameView("PlaySound").Audio.PlaySound(Sound) im Spielthread ausgeführt wird.
return RunScenario();
object? RunScenario()
{
var soundId = 0x0040;
UO.Sound(soundId);
return null;
}Parameter und Ablauf:
- Erfordert ein geöffnetes Grafikfenster mit Audio. Ein fehlender Fehler GUI kann den Anruf beenden; Dieser Unit-Befehl gibt kein Wiedergabeergebnis zurück. Für eine lokale Datei verwenden Sie 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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: soundId (Any)
Ergebnis: void / Unit.
Beim Aufruf:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.PlaySound:bridge.PlaySound(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0).
Interner Implementierungscode; kein eigenständiges Skript.
case "sound": bridge.PlaySound(Arg(0)); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.TicksAnim();Liest die gespeicherte Marke TicksAnim.
Es gibt keine Parameter.
int – markieren Sie UO.Timer in Zehntelsekunden ab Beginn der Laufzeit. 0 – die Marke wurde noch nicht gesetzt oder das Ereignis ist in der ersten Zehntelsekunde eingetreten; es handelt sich nicht um Millisekunden oder Kalenderzeit.
- Gibt das Feld ticksAnim zurück. Es wird durch Morph oder ein Move-Ergebnis ungleich Null aktualisiert; Es handelt sich nicht um eine automatische Überwachung aller manuellen/Serveraktivitäten. Der Befehl selbst ändert die Markierung nicht.
- UO.Timer() – die Marke berechnet das Alter in Zehntelsekunden. Markierungen zwischen verschiedenen Laufzeiten werden nicht verglichen.
Jedes Beispiel kann als separate Datei .csx gespeichert und in IDE ausgeführt werden. Die UO-Objekt- und Wartefunktionen stellen den Host der aktuellen Spielsitzung bereit. Ersetzen Sie Demo-serial-Namen, Koordinaten und Adressen durch Ihre eigenen.
Führe diesen Code als eigene .csx-Datei aus. Die Argumente stehen direkt im Aufruf; ersetze Beispielnamen, Serials und Adressen durch eigene Werte.
Das Ergebnis eines Aufrufs wird im Journal ausgegeben. Zahlen werden nicht in bool umgewandelt; bei Arrays wird die Anzahl der Elemente angezeigt.
var result = UO.TicksAnim();
UO.Print("TicksAnim: " + Convert.ToString(result));Parameter und Ablauf:
- Liest die gespeicherte Marke TicksAnim.
var stamp = UO.TicksAnim();
UO.Print(stamp);Parameter und Ablauf:
- Gibt das Feld ticksAnim zurück. Es wird durch Morph oder ein Move-Ergebnis ungleich Null aktualisiert; Es handelt sich nicht um eine automatische Überwachung aller manuellen/Serveraktivitäten. Der Befehl selbst ändert die Markierung nicht.
return RunScenario();
object? RunScenario()
{
var stamp = UO.TicksAnim();
var ageTenths = UO.Timer() - stamp;
UO.Print(ageTenths);
return null;
}Parameter und Ablauf:
- UO.Timer() – die Marke berechnet das Alter in Zehntelsekunden. Markierungen zwischen verschiedenen Laufzeiten werden nicht verglichen.
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# unterscheidet Groß- und Kleinschreibung. Verwenden Sie den genauen UO-Namen. Numerische Flags mit 0 vergleichen; bool nur bei Rückgabetyp bool verwenden.
Parameter: Keine Parameter.
Ergebnis: int / Integer.
Beim Aufruf:
Interner Implementierungscode; kein eigenständiges Skript.
public int TicksAnim() => ticksAnim;