Repository navigation
IT UO Topic client ui
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Home · C# · IDE · UO API · A–Z · Esempi · Lingue
Visualizza messaggi, finestre di servizio, visualizza oggetti e apre IDE. Questi passaggi non sostituiscono l'invio della voce al server.
| Argomento | Comandi e spiegazioni |
|---|---|
| UO.Print | |
| ClientPrint | UO.ClientPrint |
| Info Window | UO.FillInfoWindow · UO.ClearInfoWindow · UO.FillNewWindow |
| Text Window | UO.TextOpen · UO.TextPrint · UO.TextClear · UO.TextClose |
| Gump semplici | UO.CloseSimpleGump |
| Close UI Window | UO.CloseClientUIWindow |
| Circle Transparency | UO.CircleTrans |
| Show Z | UO.SetShowZ |
| Open IDE | UO.OpenIDE |
UO.Print · UO.ClientPrint · UO.ClientPrintEx · UO.CharPrint · UO.ColorPrint · UO.ConsolePrint · UO.ServerPrint · UO.SetSilentMode · UO.ConColor · UO.FontColor
UO.ClearInfoWindow · UO.FillInfoWindow · UO.FillNewWindow · UO.TextOpen · UO.TextClear · UO.TextClose · UO.TextPrint · UO.CloseSimpleGump · UO.CloseClientUIWindow · UO.ShowJournal · UO.OpenIDE · UO.HelpRequest · UO.ActivateHandle · UO.CloseHandle · UO.Snap
UO.Hide · UO.ClientHide · UO.ClientMarkChar · UO.CircleTrans · UO.SetShowZ · UO.Morph
UO.AddFigure · UO.UpdateFigure · UO.RemoveFigure · UO.ClearFigures
Ogni carta comando ha diversi scenari indipendenti: codice diretto, funzioni e classi. Di seguito sono selezionati brevi scenari; restrizioni e un'analisi completa sono nelle carte.
Parametri, risultato e tutti gli scenari
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);Parametri, risultato e tutti gli scenari
UO.FillInfoWindow("Status ready");Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ActivateHandle();Richiede a Windows/SDL di portare in primo piano la finestra del client corrente. Non ci sono argomenti né risultati. Questo è un comando della finestra, non un oggetto, un'abilità o un'applicazione di destinazione; la messa a fuoco effettiva dipende dal sistema di finestre.
Non ci sono parametri.
void. La chiamata richiede solo l'attivazione della finestra; non riconosce che il sistema a finestre lo ha portato in primo piano.
- Il client apre la finestra di visualizzazione del gioco tramite SDL. Il comando non invia un pacchetto di gioco né esegue un'azione nel mondo. Una finestra ridotta a icona o limitazioni del sistema di finestre potrebbero impedire l'effettiva messa a fuoco.
- RequireGameView richiede Client.Game. Se la finestra grafica ClassicUO non è aperta, il ponte lancia InvalidOperationException. SDL_RaiseWindow richiede l'apertura di una finestra esistente; La decisione sulla messa a fuoco è lasciata al sistema a finestre.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ActivateHandle");
UO.ActivateHandle();Parametri e flusso di esecuzione:
- Richiedere che la finestra del client venga portata in primo piano.
UO.ActivateHandle();Parametri e flusso di esecuzione:
- Non richiedere il focus della finestra prima di connetterti al gioco.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Connected()))
{
UO.ActivateHandle();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Avvolgi l'azione della finestra in una procedura riutilizzabile.
- Eseguire la richiesta tramite una procedura ausiliaria.
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()
{
RunAction();
return null;
}
void RunAction()
{
UO.ActivateHandle();
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ActivateHandle. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ActivateHandle:bridge.ActivateHandle().
Codice interno di implementazione; non è uno script autonomo.
public void ActivateHandle() => bridge.ActivateHandle();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.AddFigure(object? figure);Aggiunge una figura locale alla mappa del mondo ClassicUO e restituisce il suo ID. La figura viene memorizzata sul lato client, il server di gioco non viene informato.
int è il positivo ID della cifra aggiunta. Se i dati della cifra non sono corretti o la carta si rifiuta di aggiungerla, viene restituito 0. Trasferisci il ID ricevuto su UO.UpdateFigure o UO.RemoveFigure.
- Crea una figura locale per
WorldMapGump. Sono supportati linea, ellisse, rettangolo, freccia direzionale e testo. Le coordinatefcWorldseguono la trasformazione e la scala della mappa;fcScreensono misurati rispetto alla finestra della mappa. Vengono visualizzate le forme per la sfaccettatura selezionata.
Formato array: [kind, coord, x1, y1, x2, y2, brushColor, brushStyle, color, worldNum, text]. kind: 0 linea, 1 ellisse, 2 rettangolo, 3 freccia direzionale, 4 testo. coord: schermata 0 world, 1. color utilizza l'ordine dei byte Delphi TColor (0x00BBGGRR). Per una freccia con coordinate mondiali e x2=0,y2=0, il punto iniziale è il carattere corrente. Gli storici brushColor e brushStyle sono adottati per compatibilità; l'ombreggiatura visiva non garantisce una corrispondenza completa con Delphi.
La figura rimane nella raccolta del cliente finché non viene eliminata/eliminata o il processo termina. Cambiando faccetta si nascondono solo le figure appartenenti ad un'altra faccetta.
- È accettato un minimo di campi 9. Se manca worldNum viene utilizzata la carta corrente; senza testo, viene presa una stringa vuota. il tipo è limitato a 0..4, coordinata - 0..1; altri significati danno 0. Negativo worldNum consente la visualizzazione su qualsiasi aspetto. Il contatore ID viene incrementato prima che venga controllato SetYokoMapFigure, quindi un pezzo rifiutato può lasciare uno spazio vuoto in ID. Raccolta WorldMapGump statico in corso; gli script regolari di un gestore utilizzano uno stato di runtime persistente comune.
- brushColor e brushStyle vengono salvati nella voce, ma il renderer corrente non li utilizza. La linea e il rettangolo vengono disegnati come un contorno; l'ellisse è composta da segmenti 32. La firma del testo viene disegnata solo per kind=4; altri tipi non lo emettono. color specifica il contorno nel formato COLORREF 0x00BBGGRR.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
object? result = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parametri e flusso di esecuzione:
- kind=2 disegna un contorno rosso. Il campo testo con il valore Area viene salvato, ma per questa tipologia l'etichetta non viene disegnata; il testo restituisce kind=4.
dynamic[] fig = new dynamic[checked((int)(11) + 1)];
fig[0] = 2;
fig[1] = 0;
fig[2] = UO.GetX("self")-3;
fig[3] = UO.GetY("self")-3;
fig[4] = UO.GetX("self")+3;
fig[5] = UO.GetY("self")+3;
fig[6] = 0;
fig[7] = 1;
fig[8] = 255;
fig[9] = UO.WorldNum();
fig[10] = "Area";
var figureId = UO.AddFigure(fig);Parametri e flusso di esecuzione:
- Con le coordinate world e x2=0,y2=0 l'origine della freccia viene presa dalla posizione del carattere quando viene disegnata. il testo con il valore East per kind=3 non viene restituito.
return RunScenario();
object? RunScenario()
{
dynamic[] dirFig = new dynamic[checked((int)(11) + 1)];
dirFig[0] = 3;
dirFig[1] = 0;
dirFig[2] = UO.GetX("self") + 10;
dirFig[3] = UO.GetY("self");
dirFig[4] = 0;
dirFig[5] = 0;
dirFig[6] = 0;
dirFig[7] = 1;
dirFig[8] = 65280;
dirFig[9] = UO.WorldNum();
dirFig[10] = "East";
var arrowId = UO.AddFigure(dirFig);
return null;
}Parametri e flusso di esecuzione:
- Crea una linea blu tra due punti della sfaccettatura corrente.
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()
{
dynamic[] lineFig = new dynamic[checked((int)(11) + 1)];
lineFig[0] = 0;
lineFig[1] = 0;
lineFig[2] = UO.GetX("self");
lineFig[3] = UO.GetY("self");
lineFig[4] = UO.GetX("self") + 8;
lineFig[5] = UO.GetY("self");
lineFig[6] = 0;
lineFig[7] = 1;
lineFig[8] = 16711680;
lineFig[9] = UO.WorldNum();
lineFig[10] = "";
var lineId = UO.AddFigure(lineFig);
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: figure (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::TryMapFigureArg:TryMapFigureArg(0, out int[] figure, out string figureText). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetMapFigure:bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::SerializeMapFigure:SerializeMapFigure(figure, figureText).
Codice interno di implementazione; non è uno script autonomo.
case "addfigure":
{
if (!TryMapFigureArg(0, out int[] figure, out string figureText))
return InjectionValue.Zero;
int id = state.NextMapFigureId++;
if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)
return InjectionValue.Zero;
state.MapFigures[id] = SerializeMapFigure(figure, figureText);
return new InjectionValue(id);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CharPrint(object? color, object? msg);
void UO.CharPrint(object? id, object? color, object? msg);Crea un'iscrizione visibile solo a te sopra l'oggetto caricato: ad esempio, un segno del bersaglio selezionato o un avvertimento sopra il tuo personaggio. Questo non è il discorso del personaggio o il messaggio nella parte inferiore della finestra di gioco.
-
idè il seriale dell'oggetto, non graphic/type o una coordinata. UO.CharPrint nella forma a tre argomenti comprende anche self, lasttarget e i nomi degli oggetti memorizzati. Per SenderID in UO.ClientPrintEx utilizzare un numero, ad esempio UO.Hex2Int(UO.GetSerial("self")); gli alias di stringa non vengono risolti come oggetti lì. -
colorè UO hue, non RGB. Vengono presi i bit 16 meno significativi del numero; 0x0044 è un esempio. -1 diventa 0xFFFF invece di significare "qualsiasi colore". Il colore ConColor non è utilizzato qui.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- L'oggetto deve esistere nel mondo caricato e non essere eliminato; il testo vuoto o il target mancante non vengono disegnati. Il comando non scarica l'oggetto dal server. Il server e gli altri giocatori non ricevono questo messaggio. Senza la finestra di gioco, l'iscrizione non è visibile al mondo; non sostituisce il syslog del manager.
- UO.CharPrint(color, msg) seleziona il suo personaggio. UO.CharPrint(id, color, msg) seleziona l'oggetto specificato. Entrambe le forme utilizzano il carattere 3. UO.ClientPrintEx richiede tutti e quattro gli argomenti nell'ordine SenderID, Colore, Carattere, Testo.
- Il numero del carattere è UO, non la dimensione in punti o il nome del carattere di Windows. Il numero è limitato all'intervallo 0..255; La disponibilità di un carattere specifico dipende dai file di gioco. Nell'esempio, 3 è il numero del carattere normale.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
- UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.CharPrint");
UO.CharPrint(0x0044, "Ready");Parametri e flusso di esecuzione:
- La prima forma CharPrint posiziona Ready sopra il suo carattere. ClientPrintEx lo riceve serial tramite UO.Hex2Int(UO.GetSerial("self")) e passa esplicitamente il carattere a 3. L'iscrizione non include alcuna modalità di gioco.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
UO.CharPrint(0x0044, "Ready");Parametri e flusso di esecuzione:
- target — serial dell'ultimo target. Zero significa che non c'è nessuno da taggare in questo esempio. Target selezionato - solo firma locale: il target non viene attaccato e il target del server attivo non viene riempito.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
return RunScenario();
object? RunScenario()
{
var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
if (Truth(target != 0))
{
UO.CharPrint(target, 0x0044, "Selected target");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- ShowWeightWarning è dichiarato integralmente di seguito. Confronta il peso con un limite positivo noto e riscrive il suo personaggio solo quando è sovraccarico; non butta via niente. Convert.ToString trasforma il peso in testo.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
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()
{
ShowWeightWarning(UO.Weight(), UO.MaxWeight());
return null;
}
void ShowWeightWarning(dynamic weight, dynamic maximum)
{
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.CharPrint(UO.Hex2Int(UO.GetSerial("self")), 0x0044, "Too heavy: " + Convert.ToString(weight));
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: color (Integer/String), msg (String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(bridge.Self, color, msg). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
Codice interno di implementazione; non è uno script autonomo.
public void CharPrint(int color, string msg) => CharPrint(bridge.Self, color, msg);Parametri: color (Integer/String), msg (String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(bridge.Self, NumberConversions.ToInt(color), msg). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Self:bridge.Self.
Codice interno di implementazione; non è uno script autonomo.
public void CharPrint(string color, string msg) => CharPrint(bridge.Self, NumberConversions.ToInt(color), msg);Parametri: id (Any/Integer), color (Any/Integer), msg (Any/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
InjectionScript.Runtime.InjectionApiUO.CharPrint:CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Codice interno di implementazione; non è uno script autonomo.
public void CharPrint(InjectionValue id, InjectionValue color, InjectionValue msg)
=> CharPrint(GetObject(id), NumberConversions.ToInt(color), (string)msg);Parametri: id (Any/Integer), color (Any/Integer), msg (Any/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CharPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CharPrint:bridge.CharPrint(id, color, msg).
Codice interno di implementazione; non è uno script autonomo.
public void CharPrint(int id, int color, string msg) => bridge.CharPrint(id, color, msg);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.CircleTrans();
void UO.CircleTrans(object? enabled);Legge o modifica l'impostazione del cerchio di trasparenza del profilo attivo.
-
enabled- int: 0 disabilita, qualsiasi valore diverso da zero abilita. Senza argomenti, l'impostazione è di sola lettura.
Senza argomento int 1/0; la forma con un argomento restituisce null.
- La lettura in assenza di profilo dà 0. Una voce senza profilo stampa un errore; se c'è un profilo, cambia UseCircleOfTransparency e salva il profilo. Questa è una personalizzazione visiva del client.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.CircleTrans();
UO.Print("CircleTrans: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- La lettura non cambia il profilo.
var enabled = UO.CircleTrans();
UO.Print(Convert.ToString(enabled));Parametri e flusso di esecuzione:
- La registrazione mantiene attivo il cerchio di trasparenza.
return RunScenario();
object? RunScenario()
{
UO.CircleTrans(1);
return null;
}Parametri e flusso di esecuzione:
- Il flag salvato viene ripristinato dopo una modifica temporanea dell'impostazione.
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 previous = UO.CircleTrans();
UO.CircleTrans(0);
UO.CircleTrans(previous);
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CircleTrans. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CircleTrans:bridge.CircleTrans().
Codice interno di implementazione; non è uno script autonomo.
public int CircleTrans() => bridge.CircleTrans();Parametri: enabled (Integer)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CircleTrans. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CircleTrans:bridge.CircleTrans(enabled).
Codice interno di implementazione; non è uno script autonomo.
public void CircleTrans(int enabled) => bridge.CircleTrans(enabled);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearFigures();Elimina tutte le forme di mappa personalizzate e le relative voci di runtime.
Non ci sono parametri.
void: nessun valore restituito.
- Cancella WorldMapGump.ClearYokoMapFigures e state.MapFigures. La mappa base e UserStatics non sono cambiate.
- ClearYokoMapFigures cancella la raccolta statica di WorldMapGump in corso, quindi il comando cancella MapFigures dal suo stato di runtime. L'ambito della pulizia è determinato dalla raccolta client complessiva, non solo dal nome dello script chiamante.
- Vengono mantenute le normali etichette della mappa personalizzata (userMarkers.usr).
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ClearFigures");
UO.ClearFigures();Parametri e flusso di esecuzione:
- Elimina tutte le forme di mappa personalizzate e le relative voci di runtime.
UO.ClearFigures();Parametri e flusso di esecuzione:
- Crea una forma locale per la mappa corrente, quindi elimina tutte le forme personalizzate.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(9) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = figure[2] + 1;
figure[5] = figure[3] + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
var figureId = UO.AddFigure(figure);
UO.ClearFigures();
return null;
}Parametri e flusso di esecuzione:
- La cancellazione di un set vuoto è accettabile e non crea una nuova impostazione.
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.ClearFigures();
UO.ClearFigures();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClearMapFigures:bridge.ClearMapFigures().
Codice interno di implementazione; non è uno script autonomo.
case "clearfigures":
bridge.ClearMapFigures();
state.MapFigures.Clear();
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClearInfoWindow();Cancella le righe della finestra di testo del client.
Non ci sono parametri.
void: nessun valore restituito.
- TextClear cancella il buffer; se la finestra era aperta, la aggiorna con contenuto vuoto. La finestra non si chiude necessariamente.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ClearInfoWindow");
UO.ClearInfoWindow();Parametri e flusso di esecuzione:
- Cancella le righe della finestra di testo del client.
UO.ClearInfoWindow();Parametri e flusso di esecuzione:
- Cancella una riga della finestra di testo aggiunta in precedenza.
return RunScenario();
object? RunScenario()
{
UO.FillInfoWindow("status");
UO.ClearInfoWindow();
return null;
}Parametri e flusso di esecuzione:
- La cancellazione di un set vuoto è accettabile e non crea una nuova impostazione.
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.ClearInfoWindow();
UO.ClearInfoWindow();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClear:bridge.TextClear().
Codice interno di implementazione; non è uno script autonomo.
case "clearinfowindow": bridge.TextClear(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.ClientHide(object? objID);Nasconde serial un oggetto caricato o un altro personaggio solo nella visualizzazione ClassicUO, inclusi contenitori, bambole di carta e oggetti equipaggiati.
-
objID— Seriale dell'oggetto specifico caricato: int o stringa esadecimale/decimale. Questo non è graphic/type. Per un nome salvato, utilizzare GetSerial(nome). Il parametro è obbligatorio; la vista non appare.
int 1 dopo aver trasmesso il comando della plancia. Il risultato storico non conferma la presenza dell'oggetto: anche per un bridge serial o self sconosciuto restituisce un errore e il runtime restituisce 1. Non utilizzare questo valore come test per nascondersi con successo. I metadati di compatibilità mostrano object?.
- È richiesto esattamente un argomento. Per selezionare con il mouse, utilizzare UO.Hide().
- Hide(serial) agisce immediatamente su un oggetto caricato noto. Passa serial di uno stack/oggetto specifico anziché graphic/type. Lo stack selezionato viene completamente nascosto, indipendentemente dall'importo.
- L'articolo rimane nel contenitore: quantità, proprietario, contenuto e stato del server non cambiano. FindType/GetContent riesce ancora a trovarlo. Nascondere non è un filtro di ricerca, un riporto, un'eliminazione, una capacità di nascondere o un'invisibilità lato server.
- Il contenitore normale, la finestra di scambio e la griglia del bottino non disegnano l'oggetto nascosto e non accettano clic/trascinamenti su di esso. Il flag persiste quando la finestra viene ricostruita e riaperta mentre è in uso lo stesso oggetto caricato.
- L'oggetto equipaggiato scompare dalla bambola di carta, dalla piccola fessura e dall'immagine del personaggio. Resta equipaggiato: il layer, l'armatura e lo stato sul server non cambiano. La veste nascosta non si sovrappone più alla biancheria intima. L'immagine del personaggio nel gestore viene aggiornata utilizzando lo stesso flag; l'elenco delle attrezzature effettive rimane disponibile.
- Hide non nasconde il proprio carattere, il proprio territorio e la propria statica. L'inesistente serial dà un messaggio. Nascondere la borsa stessa non chiude la finestra del contenuto già aperta, né nasconde automaticamente ogni articolo incluso.
- Non esiste un comando Scopri separato nell'attuale API. Nascondere appartiene all'istanza dell'oggetto caricato: rimuoverlo dal mondo client e caricarlo nuovamente (ad esempio, quando ci si ricollega) reimposta il flag. La semplice chiusura/apertura di un baule non è un modo garantito per restituire un articolo.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
object? result = UO.ClientHide(0x40001234);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parametri e flusso di esecuzione:
- ObjID è un elemento specifico, non il suo type. Scompare dal display, rimanendo nel suo contenitore.
var item = 0x40001234;
if (Truth(UO.Exists(item)))
{
UO.ClientHide(item);
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- FindType cerca graphic 0x0EED di qualsiasi colore in backpack. Il serial restituito viene trasmesso a ClientHide; l'intero stack è completamente nascosto.
return RunScenario();
object? RunScenario()
{
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
UO.ClientHide(item);
UO.Print("Amount is still: " + Convert.ToString(UO.GetQuantity(item)));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- GetSerial risolve il nome della decorazione precedentemente salvata. L'oggetto deve prima essere caricato, ad esempio aprendo il suo contenitore.
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.GetSerial("decoration");
if (Truth(UO.Exists(item)) && Truth(item != UO.GetSerial("self")))
{
UO.ClientHide(item);
}
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 maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: objID (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientHide:bridge.ClientHide(Arg(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Codice interno di implementazione; non è uno script autonomo.
case "clienthide": bridge.ClientHide(Arg(0)); return InjectionValue.True;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientMarkChar(object? actionIndex, object? id);Aggiorna le etichette del client LastTarget e/o LastAttack.
-
actionIndex- int: 1 - LastTarget; 2 - LastAttack; 3 - entrambi. Altri valori stampano un errore. -
id— Numero seriale dell'oggetto o nome supportato di self/backpack/lasttarget/oggetto salvato; le stringhe numeriche e le stringhe 0x vengono risolte dal runtime.
void: nessun valore restituito.
- ClientMarkChar modifica gli obiettivi salvati senza inviare un attacco o rispondere al server di destinazione. I comandi successivi possono utilizzare la nuova etichetta.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ClientMarkChar");
UO.ClientMarkChar(1, "self");Parametri e flusso di esecuzione:
- Il bersaglio salvato diventa il tuo personaggio.
UO.ClientMarkChar(1,"self");Parametri e flusso di esecuzione:
- Quest'ultimo target viene utilizzato per entrambi i tag client.
return RunScenario();
object? RunScenario()
{
var target = UO.LastTarget();
if (Truth(UO.Exists(target)))
{
UO.ClientMarkChar(3, target);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Zero non fa parte del set di azioni e genera un messaggio di errore.
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.ClientMarkChar(0, "self");
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: actionIndex (Any), id (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ClientMarkChar. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ClientMarkChar:bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(actionIndex). -
InjectionScript.Runtime.InjectionApiUO.GetObject:GetObject(id).
Codice interno di implementazione; non è uno script autonomo.
public void ClientMarkChar(InjectionValue actionIndex, InjectionValue id)
=> bridge.ClientMarkChar(NumberConversions.ToInt(actionIndex), GetObject(id));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientPrint(object? text);Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
-
UO.Printaggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione. - Viene utilizzato il colore dei messaggi di sistema di questo script runtime: inizialmente 0x0440, modificato UO.ConColor. Questa è una voce locale; il nome del comando non significa invio al server.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata senza valore restituito (void). Il testo del messaggio è indicato direttamente nella chiamata.
UO.ClientPrint("Hello from C#");Parametri e flusso di esecuzione:
- elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.ClientPrint("Processed item entries: " + Convert.ToString(processed));Parametri e flusso di esecuzione:
- Vengono letti il peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ClientPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ClientPrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: text (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Codice interno di implementazione; non è uno script autonomo.
case "addtojournal":
case "addtosystemjournal":
case "clientprint":
SystemMessage(Text(0)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ClientPrintEx(object? senderID, object? color, object? font, object? text);Crea un'iscrizione visibile solo a te sopra l'oggetto caricato: ad esempio, un segno del bersaglio selezionato o un avvertimento sopra il tuo personaggio. Questo non è il discorso del personaggio o il messaggio nella parte inferiore della finestra di gioco.
-
senderIDè il seriale dell'oggetto, non graphic/type o una coordinata. UO.CharPrint nella forma a tre argomenti comprende anche self, lasttarget e i nomi degli oggetti memorizzati. Per SenderID in UO.ClientPrintEx utilizzare un numero, ad esempio UO.Hex2Int(UO.GetSerial("self")); gli alias di stringa non vengono risolti come oggetti lì. -
colorè UO hue, non RGB. Vengono presi i bit 16 meno significativi del numero; 0x0044 è un esempio. -1 diventa 0xFFFF invece di significare "qualsiasi colore". Il colore ConColor non è utilizzato qui. -
font: numero del carattere UO, non la dimensione in punti o il nome del carattere di Windows. Il numero è limitato all'intervallo 0..255; La disponibilità di un carattere specifico dipende dai file di gioco. Nell'esempio, 3 è il numero del carattere normale.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- L'oggetto deve esistere nel mondo caricato e non essere eliminato; il testo vuoto o il target mancante non vengono disegnati. Il comando non scarica l'oggetto dal server. Il server e gli altri giocatori non ricevono questo messaggio. Senza la finestra di gioco, l'iscrizione non è visibile al mondo; non sostituisce il syslog del manager.
- UO.CharPrint(color, msg) seleziona il suo personaggio. UO.CharPrint(id, color, msg) seleziona l'oggetto specificato. Entrambe le forme utilizzano il carattere 3. UO.ClientPrintEx richiede tutti e quattro gli argomenti nell'ordine SenderID, Colore, Carattere, Testo.
- Il numero del carattere è UO, non la dimensione in punti o il nome del carattere di Windows. Il numero è limitato all'intervallo 0..255; La disponibilità di un carattere specifico dipende dai file di gioco. Nell'esempio, 3 è il numero del carattere normale.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
- UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ClientPrintEx");
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");Parametri e flusso di esecuzione:
- La prima forma CharPrint posiziona Ready sopra il suo carattere. ClientPrintEx lo riceve serial tramite UO.Hex2Int(UO.GetSerial("self")) e passa esplicitamente il carattere a 3. L'iscrizione non include alcuna modalità di gioco.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Ready");Parametri e flusso di esecuzione:
- target — serial dell'ultimo target. Zero significa che non c'è nessuno da taggare in questo esempio. Target selezionato - solo firma locale: il target non viene attaccato e il target del server attivo non viene riempito.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
return RunScenario();
object? RunScenario()
{
var target = UO.Hex2Int(UO.GetSerial("lasttarget"));
if (Truth(target != 0))
{
UO.ClientPrintEx(target, 0x0044, 3, "Selected target");
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- ShowWeightWarning è dichiarato integralmente di seguito. Confronta il peso con un limite positivo noto e riscrive il suo personaggio solo quando è sovraccarico; non butta via niente. Convert.ToString trasforma il peso in testo.
- GetSerial restituisce una stringa esadecimale. Hex2Int lo trasforma in un int prima di confrontarlo con il numero 0; la stringa "0x00000000" non può essere selezionata come numero 0.
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()
{
ShowWeightWarning(UO.Weight(), UO.MaxWeight());
return null;
}
void ShowWeightWarning(dynamic weight, dynamic maximum)
{
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ClientPrintEx(UO.Hex2Int(UO.GetSerial("self")), 0x0044, 3, "Too heavy: " + Convert.ToString(weight));
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: senderID (Any), color (Any), font (Any), text (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CharPrintEx:bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(3).
Codice interno di implementazione; non è uno script autonomo.
case "clientprintex":
bridge.CharPrintEx(Arg(0), Arg(1), Arg(2), Text(3)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseClientUIWindow(object? uiWindowType, object? id);Chiude la finestra del client locale del tipo specificato per un oggetto specifico. Ad esempio, puoi rimuovere la bambola di carta del personaggio, il suo stato o la finestra dello zaino. Il comando non chiude il client di gioco e non risponde ai pulsanti gump del server.
-
uiWindowType— Codice finestra numerico obbligatorio: 0 — paperdoll (attrezzatura), 1 — stato del personaggio, 2 — profilo, 3 — contenitore. Questo è un elenco separato di quattro codici, non graphic/type body e non ID server gump. Altri numeri non trovano la finestra. -
id— Seriale dell'oggetto a cui appartiene la finestra: carattere self/serial per i tipi 0..2, contenitore backpack/serial per il tipo 3. Accetta un numero, una stringa esadecimale o un alias di oggetto risolvibile. Questo non è il numero della finestra nell'elenco InfoGumps. Un alias di oggetto sconosciuto viene convertito in 0.
void - nessun valore. La chiamata viene scritta su una riga separata, senza var risultato = e senza if UO.CloseClientUIWindow(...). Se non c'è una finestra aperta adatta, non succede nulla; il comando non restituisce true/false.
- Entrambi i parametri sono obbligatori. Vengono confrontate sia la classe della finestra che LocalSerial. Chiamare con (3, self) non significa zaino: lo zaino richiede backpack.
- Il bypass influisce sulle finestre aperte e non ancora distrutte di questo tipo/serial; tutte le finestre corrispondenti vengono chiuse nel thread del gioco. Le restanti finestre rimangono aperte.
- L'interfaccia si chiude, gli oggetti non vengono rimossi dal contenitore e il personaggio non scompare dal mondo. È lecito ripetere: se la finestra è già chiusa, non c'è corrispondenza.
- Per le finestre di dialogo lato server, studia UO.CloseSimpleGump e UO.NumGumpButton; i codici 0..3 di questo comando non si applicano lì.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.CloseClientUIWindow");
UO.CloseClientUIWindow(0, "self");Parametri e flusso di esecuzione:
- Si chiude solo la finestra dell'equipaggiamento del tuo personaggio; il suo stato, profilo e zaino rimangono finestre separate.
UO.CloseClientUIWindow(0, "self");Parametri e flusso di esecuzione:
- Se lo zaino non è stato aperto l'azione non cambierà nulla. Questo comando non sposta gli elementi e non restituisce un risultato.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.Connected()) && Truth(UO.Exists("backpack")))
{
UO.CloseClientUIWindow(3, "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;Parametri e flusso di esecuzione:
- 1 - stato, 2 - profilo. l'id è serial del mobile selezionato. ASC(testo,0) qui analizza la stringa serial in un numero con un 0 di riserva. La procedura utente non promette nulla circa la presenza di una finestra; entrambe le chiamate hanno Unit.
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 selected = Asc(UO.GetSerial("lasttarget"), 0);
CloseMobilePanels(selected);
return null;
}
void CloseMobilePanels(dynamic id)
{
if (Truth(id == 0) || !(Truth(UO.Exists(id))))
{
return;
}
UO.CloseClientUIWindow(1, id);
UO.CloseClientUIWindow(2, id);
}
int Asc(object? value, int fallback = 0)
{
string text = Convert.ToString(value) ?? "";
if (text.StartsWith("0x", StringComparison.OrdinalIgnoreCase))
return int.TryParse(text[2..], System.Globalization.NumberStyles.HexNumber, System.Globalization.CultureInfo.InvariantCulture, out int hex) ? hex : fallback;
return int.TryParse(text, out int number) ? number : fallback;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: uiWindowType (Any), id (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseClientWindow:bridge.CloseClientWindow(Arg(0), Arg(1)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Codice interno di implementazione; non è uno script autonomo.
case "closeclientuiwindow": bridge.CloseClientWindow(Arg(0), Arg(1)); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseHandle();Richiede all'applicazione client corrente di uscire tramite Client.Game.Exit.
Non ci sono parametri.
void: nessun valore restituito.
- CloseUO viene inviato allo stesso bridge.CloseHandle. L'uscita viene eseguita nel thread del gioco; se manca Client.Game, non viene eseguita alcuna azione. Il comando non è l'arresto di un gump separato.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.CloseHandle");
UO.CloseHandle();Parametri e flusso di esecuzione:
- La chiamata richiede la chiusura dell'applicazione client.
UO.CloseHandle();Parametri e flusso di esecuzione:
- L'esempio mostra una condizione controllata; il valore 0 mantiene il client aperto.
return RunScenario();
object? RunScenario()
{
var finishClient = 0;
if (Truth(finishClient))
{
UO.CloseHandle();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Un helper completamente dichiarato consente l'abilitazione esplicita dell'uscita.
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()
{
FinishClient(0);
return null;
}
void FinishClient(dynamic enabled)
{
if (Truth(enabled))
{
UO.CloseHandle();
}
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.CloseHandle. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseHandle:bridge.CloseHandle().
Codice interno di implementazione; non è uno script autonomo.
public void CloseHandle() => bridge.CloseHandle();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.CloseSimpleGump(object? gumpIndex);Chiude localmente un server gump che può essere chiuso da un indice rigoroso.
-
gumpIndex— Obbligatorio int — indice del server attivo gump, da 0 a GetGumpsCount()-1. Questo non è GumpID/serial. Il numero negativo e l'indice fuori dall'elenco non sono validi. L'apertura, la chiusura e il riordino delle finestre possono modificare l'indice; controlla GetGumpID/GetGumpSerial prima di agire.
void: non restituisce nulla. Il risultato non può essere interpretato come conferma del server o bool.
- Funziona con gump server attivi. Zaino, mappa, impostazioni e altre finestre locali non sono incluse in questo elenco. Una chiamata legge i dati nel thread del gioco; chiamate diverse possono visualizzare stati diversi dell'elenco.
- Indice non valido e NoClose non cambiano nulla. Il comando non invia la risposta del pulsante al server. Per questa risposta, usa SendGumpSelect.
- La chiusura modifica l'elenco e gli indici. Per chiudere in massa, attraversa l'elenco dall'ultimo indice al primo.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.CloseSimpleGump");
UO.CloseSimpleGump(0);Parametri e flusso di esecuzione:
- 0 è un indice, non ID. Se la finestra impedisce la chiusura, rimane aperta.
UO.CloseSimpleGump(0);Parametri e flusso di esecuzione:
- L'attraversamento inverso riduce l'impatto degli spostamenti dell'indice post-chiusura. Quando si aprono nuove finestre in parallelo, controllare nuovamente l'elenco.
return RunScenario();
object? RunScenario()
{
var i = UO.GetGumpsCount() - 1;
while (Truth(i >= 0))
{
UO.CloseSimpleGump(i);
i = i - 1;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- info[1] - GumpID salvato. L'azione non restituisce nulla, quindi il risultato non viene assegnato alla variabile.
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 info = UO.GetGumpInfo(0);
if (Truth(ArrayLength(info) == 5))
{
UO.CloseSimpleGump(0);
UO.Print(Hex(info[1]));
}
return null;
}
int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
string Hex(object? value) => Convert.ToInt64(value).ToString("X");
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: gumpIndex (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.CloseSimpleGump:bridge.CloseSimpleGump(Arg(0)).
Codice interno di implementazione; non è uno script autonomo.
case "closesimplegump":
if (bridge is IApiGumpAccess gumpAccess) gumpAccess.CloseGumpAtIndex(Arg(0));
else bridge.CloseSimpleGump(Arg(0));
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ColorPrint(object? color, object? msg);Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.
-
color- UO hue, non RGB. Numero o stringa esadecimale; il bridge utilizza i bit bassi 16. Da non confondere con graphic/type. 0x0044 nell'esempio è il hue selezionato. Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
-
UO.Printaggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione. - Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata senza valore restituito (void). Il testo del messaggio è indicato direttamente nella chiamata.
UO.ColorPrint(0x0044, "Hello from C#");Parametri e flusso di esecuzione:
- elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.ColorPrint(0x0044, "Processed item entries: " + Convert.ToString(processed));Parametri e flusso di esecuzione:
- Vengono letti il peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ColorPrint(0x0044, "Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ColorPrint(0x0044, "Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: color (Any), msg (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ColorPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(NumberConversions.ToInt(color), msg.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Codice interno di implementazione; non è uno script autonomo.
public void ColorPrint(InjectionValue color, InjectionValue msg) => bridge.Print(NumberConversions.ToInt(color), msg.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ConColor(object? color);Imposta UO hue per i successivi messaggi di sistema di questo runtime di script.
-
color- UO hue, non RGB. Numero o stringa esadecimale; il bridge utilizza i bit bassi 16. Da non confondere con graphic/type. 0x0044 nell'esempio è il hue selezionato.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Influisce sui successivi UO.ClientPrint, UO.AddToJournal e UO.AddToSystemJournal. Non ricolora le righe precedenti, non cambia il profilo SpeechHue e non cambia il colore di UO.Print senza un argomento colore. Il vecchio getter di colore non è qui: memorizza il normale hue selezionato nella sua variabile.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ConColor");
UO.ConColor(0x0044);Parametri e flusso di esecuzione:
- 0x0044 diventa il colore della successiva linea di sistema. ConColor stesso non stampa nulla.
UO.ConColor(0x0044);
UO.AddToSystemJournal("Notice");Parametri e flusso di esecuzione:
- Il normale Print mantiene il suo colore 0x03B2 e AddToJournal utilizza il 0x0044 specificato. Entrambi i messaggi sono locali.
return RunScenario();
object? RunScenario()
{
UO.ConColor(0x0044);
UO.Print("Normal Print color");
UO.AddToJournal("System color");
return null;
}Parametri e flusso di esecuzione:
- usualHue=0x0440 è chiaramente il colore normale selezionato, non il vecchio valore letto. La prova utilizza il temporaneo 0x0035;
finallyrestituisce usualHue, quindi la riga successiva viene stampata nuovamente a colori normali.
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 usualHue = 0x0440;
UO.ConColor(usualHue);
try
{
UO.ConColor(0x0035);
UO.AddToSystemJournal("Temporary warning");
}
finally
{
UO.ConColor(usualHue);
}
UO.AddToSystemJournal("Normal messages again");
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: color (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ConColor. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color).
Codice interno di implementazione; non è uno script autonomo.
public void ConColor(InjectionValue color)
{
systemMessageColor = NumberConversions.ToInt(color);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ConsolePrint(object? msg);Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
-
UO.Printaggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione. - Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
- Nonostante la Console nel nome, si tratta dello stesso output del gioco locale, non di un terminale Windows separato.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata senza valore restituito (void). Il testo del messaggio è indicato direttamente nella chiamata.
UO.ConsolePrint("Hello from C#");Parametri e flusso di esecuzione:
- elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.ConsolePrint("Processed item entries: " + Convert.ToString(processed));Parametri e flusso di esecuzione:
- Vengono letti il peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ConsolePrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ConsolePrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: msg (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ConsolePrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(msg.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Codice interno di implementazione; non è uno script autonomo.
public void ConsolePrint(InjectionValue msg) => bridge.Print(msg.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FillInfoWindow(object? s);Aggiunge una riga a una finestra di testo e la visualizza.
-
s— Testo della riga; il valore viene convertito in string.
void: nessun valore restituito.
- Le righe precedentemente accumulate vengono conservate fino al limite MaxTextWindowLines.
- TextPrint aggiunge una linea e mostra YokoTextWindowGump stesso; TextOpen protegge lo stato aperto. Quando il buffer trabocca, le righe più vecchie vengono cancellate. Questa è una finestra di testo separata, non un server gump e non UO.GetInfo.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.FillInfoWindow");
UO.FillInfoWindow("Status ready");Parametri e flusso di esecuzione:
- Il testo viene inviato alla finestra di testo del client.
UO.FillInfoWindow("Status ready");Parametri e flusso di esecuzione:
- La stringa è formata dalla corrente locale HP.
return RunScenario();
object? RunScenario()
{
var status = "HP: " + Convert.ToString(UO.GetHP());
UO.FillInfoWindow(status);
return null;
}Parametri e flusso di esecuzione:
- Il secondo comando aggiunge secondo dopo primo.
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.FillInfoWindow("first");
UO.FillInfoWindow("second");
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: s (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Codice interno di implementazione; non è uno script autonomo.
case "fillinfowindow":
bridge.TextPrint(Text(0));
bridge.TextOpen();
return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FillNewWindow(object? s);Cancella la finestra di testo, aggiunge una riga e la mostra.
-
s— Testo della riga; il valore viene convertito in string.
void: nessun valore restituito.
- Prima che TextPrint venga eseguito TextClear; le righe precedentemente accumulate vengono eliminate.
- TextPrint aggiunge una linea e mostra YokoTextWindowGump stesso; TextOpen protegge lo stato aperto. Quando il buffer trabocca, le righe più vecchie vengono cancellate. Questa è una finestra di testo separata, non un server gump e non UO.GetInfo.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.FillNewWindow");
UO.FillNewWindow("Status ready");Parametri e flusso di esecuzione:
- Il testo viene inviato alla finestra di testo del client.
UO.FillNewWindow("Status ready");Parametri e flusso di esecuzione:
- La stringa è formata dalla corrente locale HP.
return RunScenario();
object? RunScenario()
{
var status = "HP: " + Convert.ToString(UO.GetHP());
UO.FillNewWindow(status);
return null;
}Parametri e flusso di esecuzione:
- Il secondo comando sostituisce il contenuto: ciò che resta è il secondo.
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.FillNewWindow("first");
UO.FillNewWindow("second");
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: s (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClear:bridge.TextClear(). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Codice interno di implementazione; non è uno script autonomo.
case "fillnewwindow": bridge.TextClear(); bridge.TextPrint(Text(0)); bridge.TextOpen(); return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.FontColor(object? color);Imposta hue sul successivo UO.UOAMessage locale di questo script. Non cambia il colore del discorso del personaggio, il normale tema UO.Print, InfoFindList o IDE.
-
color— Indice numerico obbligatorio hue 0..65535, ad esempio 0x0044. Questo non è RGB. int è memorizzato all'interno e quando l'output viene ridotto a ushort; -1 NON significa reset e diventa 65535. Il valore iniziale del nuovo runtime è 0x03B2. Non esiste forma senza argomento.
void: nessun risultato, vecchio colore o segno di successo. Per ripristinare l'impostazione in un secondo momento, memorizza il hue selezionato in una variabile di script.
- Cambia solo stato.FontColor, non stampa un messaggio né invia un pacchetto di rete.
- Valido fino al successivo FontColor nello stesso runtime. Un'altra scrittura indipendente ha il proprio stato. UO.Print(text,color) imposta direttamente il colore e non legge FontColor.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.FontColor");
UO.FontColor(0x0021);Parametri e flusso di esecuzione:
- 0x0021 — indice hue; La tonalità finale dipende dai file tonalità del cliente. Il messaggio è visibile localmente; non è parlato dal personaggio.
UO.FontColor(0x0021);
var first = UO.FindList("0x0EED", "backpack");
if (Truth(first == ""))
{
UO.UOAMessage("No gold in the loaded backpack");
}
else
{
UO.UOAMessage("Gold units: " + Convert.ToString(UO.FindFullQuantity()));
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- L'avviso completo accetta testo e hue. L'ultimo hue installato rimane per il successivo UOAMessage di questo runtime. Non esiste FontColor() integrato per la lettura qui.
return RunScenario();
object? RunScenario()
{
Notice("Supplies checked", 0x0044);
Notice("Restock needed", 0x0021);
return null;
}
void Notice(dynamic text, dynamic hue)
{
UO.FontColor(hue);
UO.UOAMessage(text);
}Parametri e flusso di esecuzione:
- 0x03B2 — valore iniziale FontColor del nuovo runtime. Infine restituisce esattamente la base selezionata in caso di normale completamento/gestione degli errori; non ripristina il valore precedente sconosciuto.
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 baseHue = 0x03B2;
try
{
UO.FontColor(0x0021);
UO.UOAMessage("Check the route before moving");
}
finally
{
UO.FontColor(baseHue);
}
UO.UOAMessage("Ready");
UO.Print("Regular Print keeps its own color");
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: color (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias::Arg:Arg(0, state.FontColor).
Codice interno di implementazione; non è uno script autonomo.
case "fontcolor": state.FontColor = Arg(0, state.FontColor); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.HelpRequest();Richiede il menu di aiuto del server.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- ExecuteClientApiCompatibility chiama HelpRequest, che invia GameActions.RequestHelp tramite Invoke. Il contenuto del menu è determinato dal server.
- Negli esempi, UO.Wait specifica solo una pausa nello script; la fine della pausa non dimostra che il server abbia completato la richiesta.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.HelpRequest");
UO.HelpRequest();Parametri e flusso di esecuzione:
- Richiede il menu di aiuto del server.
UO.HelpRequest();Parametri e flusso di esecuzione:
- ExecuteClientApiCompatibility chiama HelpRequest, che invia GameActions.RequestHelp tramite Invoke. Il contenuto del menu è determinato dal server.
return RunScenario();
object? RunScenario()
{
if (Truth(UO.IsOnline()))
{
UO.HelpRequest();
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Negli esempi, UO.Wait specifica solo una pausa nello script; la fine della pausa non dimostra che il server abbia completato la richiesta.
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()
{
if (Truth(UO.IsOnline()))
{
UO.HelpRequest();
UO.Print("Help requested");
}
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 maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.HelpRequest:bridge.HelpRequest().
Codice interno di implementazione; non è uno script autonomo.
case "helprequest": bridge.HelpRequest(); return InjectionValue.Unit;void UO.Hide();
void UO.Hide(object? serial);
string UO.Hide(object? type, object? x, object? y);
string UO.Hide(object? type, object? x, object? y, object? z);Hide nasconde localmente un oggetto caricato senza usare Hiding. Resend/Resync annulla questa modifica e ripristina la precedente visualizzazione, anche dopo più Hide. I dati e il flag Hidden del server non cambiano.
-
serial— Seriale oggetto o alias salvato. -
type— ID grafico; -1 accetta qualsiasi tipo nella posizione. -
x— Coordinata X del mondo. -
y— Coordinata Y del mondo. -
z— Altezza Z; la forma breve usa 0.
Configurare il prefisso in C# Scripts IDE; # è un esempio. Separare i parametri con spazi e racchiudere il testo fra virgolette. id significa serial, type significa graphic. xy x y [z] seleziona il primo oggetto caricato nel punto; type da solo il primo risultato. Il terzo argomento di InfoTile(x,y,map) è la mappa, non Z.
#hide
#hide id 0x40001234
#hide type 0x0EED
#hide xy 1450 1690
#hide type 0x0EED xy 1450 1690 0
Ogni blocco è un .csx completo. Sostituire serial, tipi e coordinate di esempio. Ordine e argomenti C# nominati seguono la firma.
UO.Hide(0x40001234);UO.Print(UO.Hide(0x0EED, 1450, 1690, 0));foreach (int serial in new[] { 0x40001234, 0x40005678 })
UO.Hide(serial);new CommandSample().Execute(UO);
sealed class CommandSample
{
public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
{
api.Hide(0x40001234);
}
}CSharpGameApi.Hide
-> CSharpScriptGlobals
-> InjectionScript.Runtime.InjectionApiUO.Hide
ClassicUOInjectionApiBridge -> target / serial / type-position selection
-> local hidden-object state -> renderer visibility
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Morph(object? @type);Cambia localmente il graphic del personaggio corrente.
-
type- int body graphic o la stringa type risolta da ResolveType. 0 ripristina graphic salvato con il primo Morph; un numero diverso da zero viene ridotto a ushort.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Bridge.Morph senza Player non cambia nulla. La prima volta che viene chiamato, salva _originalGraphic, quindi lo assegna a Player.Graphic. Aggiornamenti runtime ticksAnim=Timer anche se manca il Player.
- Si tratta di un'apparizione locale, non di una trasformazione del server o di un cambiamento nella razza/nelle abilità disponibili. I valori esterni a ushort non vengono controllati da questa funzione bridge e vengono ridotti a 16 bit.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.Morph");
UO.Morph("0x0190");Parametri e flusso di esecuzione:
- Cambia localmente il graphic del personaggio corrente.
UO.Morph("0x0190");Parametri e flusso di esecuzione:
- Bridge.Morph senza Player non cambia nulla. La prima volta che viene chiamato, salva _originalGraphic, quindi lo assegna a Player.Graphic. Aggiornamenti runtime ticksAnim=Timer anche se manca il Player.
return RunScenario();
object? RunScenario()
{
UO.Morph(0);
return null;
}Parametri e flusso di esecuzione:
- Si tratta di un'apparizione locale, non di una trasformazione del server o di un cambiamento nella razza/nelle abilità disponibili. I valori esterni a ushort non vengono controllati da questa funzione bridge e vengono ridotti a 16 bit.
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.Morph("0x0190");
UO.Wait(500);
UO.Morph(0);
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: type (Integer/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Morph. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Morph:bridge.Morph(type). -
InjectionScript.Runtime.InjectionApiUO.Timer:Timer().
Codice interno di implementazione; non è uno script autonomo.
public void Morph(int type)
{
bridge.Morph(type);
ticksAnim = Timer();
}Parametri: type (Integer/String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Morph. -
InjectionScript.Runtime.InjectionApiUO.Morph:Morph(ResolveType(type)). -
InjectionScript.Runtime.InjectionApiUO.ResolveType:ResolveType(type).
Codice interno di implementazione; non è uno script autonomo.
public void Morph(string type) => Morph(ResolveType(type));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.OpenIDE();
void UO.OpenIDE(object? filePath);-
filePath— Percorso facoltativo. Spazio vuoto/bianco: apre l'editor senza selezionare un file; il relativo viene risolto da _manager.AutoloadPath, l'assoluto viene preservato.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Bridge.OpenIDE prepara il percorso richiesto, quindi Invoke chiama YokoScriptEditorGump.Open(_world,requested). Lo script dal file non viene eseguito dal comando OpenIDE.
- L'editor è una finestra grafica, non un'applicazione esterna Launch. La lettura/visualizzazione del file dipende dall'esistenza del percorso e dalla logica dell'editor.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.OpenIDE");
UO.OpenIDE();Parametri e flusso di esecuzione:
- Apre l'editor grafico C# IDE.
UO.OpenIDE();Parametri e flusso di esecuzione:
- Bridge.OpenIDE prepara il percorso richiesto, quindi Invoke chiama YokoScriptEditorGump.Open(_world,requested). Lo script dal file non viene eseguito dal comando OpenIDE.
return RunScenario();
object? RunScenario()
{
UO.OpenIDE("Example.csx");
return null;
}Parametri e flusso di esecuzione:
- L'editor è una finestra grafica, non un'applicazione esterna Launch. La lettura/visualizzazione del file dipende dall'esistenza del percorso e dalla logica dell'editor.
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 path = "C:\\UO Scripts\\Example.csx";
UO.OpenIDE(path);
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.OpenIDE. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenIDE:bridge.OpenIDE(string.Empty).
Codice interno di implementazione; non è uno script autonomo.
public void OpenIDE() => bridge.OpenIDE(string.Empty);Parametri: filePath (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.OpenIDE. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.OpenIDE:bridge.OpenIDE(filePath.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:filePath.ToString().
Codice interno di implementazione; non è uno script autonomo.
public void OpenIDE(InjectionValue filePath) => bridge.OpenIDE(filePath.ToString());Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.Print(object? msg);
void UO.Print(object? msg, object? color);Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.
-
color- UO hue, non RGB. Numero o stringa esadecimale; il bridge utilizza i bit bassi 16. Da non confondere con graphic/type. 0x0044 nell'esempio è il hue selezionato. Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
-
UO.Printaggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione. - Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
UO.Print("C# script started");
UO.Print($"Position: {UO.GetX()}, {UO.GetY()}");Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata senza valore restituito (void). Il testo del messaggio è indicato direttamente nella chiamata.
UO.Print("Hello from C#");Parametri e flusso di esecuzione:
- elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.Print("Processed item entries: " + Convert.ToString(processed), 0x0044);Parametri e flusso di esecuzione:
- Vengono letti il peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.Print("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum), 0x0044);
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.Print("Weight changed: " + Convert.ToString(current), 0x0044);
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: msg (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Print. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(msg.ToString()). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Codice interno di implementazione; non è uno script autonomo.
public void Print(InjectionValue msg)
{
bridge.Print(msg.ToString());
}Parametri: msg (Any), color (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Print. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Print:bridge.Print(NumberConversions.ToInt(color), msg.ToString()). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(color). -
InjectionScript.Runtime.InjectionValue.ToString:msg.ToString().
Codice interno di implementazione; non è uno script autonomo.
public void Print(InjectionValue msg, InjectionValue color)
{
bridge.Print(NumberConversions.ToInt(color), msg.ToString());
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.RemoveFigure(object? figureID);Elimina una figura sulla mappa locale tramite il suo ID.
-
figureID- int ID, restituito AddFigure. Questo non è un oggetto serial e nemmeno un gump ID.
int — il risultato di bridge.RemoveMapFigure: 1/0 dalla presenza di una figura rimossa. La voce runtime viene cancellata indipendentemente dal risultato del bridge.
- Prima chiama bridge.RemoveMapFigure, quindi state.MapFigures.Remove(id), quindi restituisce il risultato del bridge. Sconosciuto ID non crea una forma né attiva un'azione del server.
- La figura locale della mappa non è un oggetto del mondo. Altre forme e geometrie del server non cambiano.
- WorldMapGump memorizza le immagini nel dizionario statico del processo. Gli script/chat/macro regolari di un mondo/profilo utilizzano un comune GetPersistentState e un contatore ID; I processi dei singoli manager non condividono i disegni. World.Clear/YokoScripts.Clear e lo stato di caricamento del profilo non cancellano o ripristinano questo dizionario (il caricatore ripristina solo UserStatics). Pertanto, i disegni possono sopravvivere a un cambiamento del mondo/profilo nello stesso processo, tenendo conto di worldNum; il nuovo stato può enfatizzare nuovamente un disegno ID già esistente. ClearFigures cancella esplicitamente i disegni e i record dello stato attuale. Successo: scrittura/eliminazione dei dati, non prova della visualizzazione.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
var id = UO.AddFigure(new object?[] { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 });
UO.Print("Removed flag: " + Convert.ToString(UO.RemoveFigure(id)));Parametri e flusso di esecuzione:
- Elimina una figura sulla mappa locale tramite il suo ID.
UO.Print(UO.RemoveFigure(1));Parametri e flusso di esecuzione:
- Prima chiama bridge.RemoveMapFigure, quindi state.MapFigures.Remove(id), quindi restituisce il risultato del bridge. Sconosciuto ID non crea una forma né attiva un'azione del server.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(10) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = UO.GetX() + 1;
figure[5] = UO.GetY() + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
figure[10] = "Example";
var id = UO.AddFigure(figure);
if (Truth(id > 0))
{
UO.Print(UO.RemoveFigure(id));
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- La figura locale della mappa non è un oggetto del mondo. Altre forme e geometrie del server non cambiano.
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 id = 1;
var first = UO.RemoveFigure(id);
var second = UO.RemoveFigure(id);
UO.Print(Convert.ToString(first) + " " + Convert.ToString(second));
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: figureID (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.RemoveMapFigure:bridge.RemoveMapFigure(id).
Codice interno di implementazione; non è uno script autonomo.
case "removefigure":
{
int id = Arg(0);
int removed = bridge.RemoveMapFigure(id);
state.MapFigures.Remove(id);
return new InjectionValue(removed);
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ServerPrint(object? message);Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.
Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.
- Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
-
UO.Printaggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione. - Senza colore, viene utilizzato hue 0x03B2. UO.Print(text, color) accetta prima il testo; UO.ColorPrint(color, text) – colora prima.
- Nonostante la parola Server nel nome o la somiglianza con un messaggio di rete, il comando stampa solo testo locale. Per parlare al mondo, usa UO.Say.
- UO.Print · UO.CharPrint · UO.Say · UO.ConColor
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata senza valore restituito (void). Il testo del messaggio è indicato direttamente nella chiamata.
UO.ServerPrint("Hello from C#");Parametri e flusso di esecuzione:
- elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.ServerPrint("Processed item entries: " + Convert.ToString(processed));Parametri e flusso di esecuzione:
- Vengono letti il peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return RunScenario();
object? RunScenario()
{
var weight = UO.Weight();
var maximum = UO.MaxWeight();
if (Truth(maximum > 0) && Truth(weight >= maximum))
{
UO.ServerPrint("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
return null;
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
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 previous = UO.Weight();
UO.Wait(1000);
previous = ReportWeight(previous, UO.Weight());
return null;
}
dynamic ReportWeight(dynamic previous, dynamic current)
{
if (Truth(previous != current))
{
UO.ServerPrint("Weight changed: " + Convert.ToString(current));
}
return current;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: message (String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ServerPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ServerPrint:bridge.ServerPrint(message).
Codice interno di implementazione; non è uno script autonomo.
public void ServerPrint(string message) => bridge.ServerPrint(message);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetShowZ(object? stateValue);Cambia il flag locale showZ runtime.
-
stateValue- 0 si spegne; qualsiasi numero intero diverso da zero include.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Assegna a showZ il valore di 0 o 1 dopo NumberConversions.ToInt. Questa funzione stessa non modifica le coordinate e non invia il pacchetto.
- Questo è l'archivio di compatibilità del runtime corrente. Non sono presenti consumatori nel progetto privato mulPath/showZ; la modifica non ricarica le risorse né modifica la visualizzazione dell'altezza.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.SetShowZ");
UO.SetShowZ(1);Parametri e flusso di esecuzione:
- Cambia il flag locale showZ runtime.
UO.SetShowZ(1);Parametri e flusso di esecuzione:
- Assegna a showZ il valore di 0 o 1 dopo NumberConversions.ToInt. Questa funzione stessa non modifica le coordinate e non invia il pacchetto.
return RunScenario();
object? RunScenario()
{
UO.SetShowZ(0);
return null;
}Parametri e flusso di esecuzione:
- Questo è l'archivio di compatibilità del runtime corrente. Non sono presenti consumatori nel progetto privato mulPath/showZ; la modifica non ricarica le risorse né modifica la visualizzazione dell'altezza.
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()
{
ApplyValue(1);
return null;
}
void ApplyValue(dynamic value)
{
UO.SetShowZ(value);
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: stateValue (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.SetShowZ. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(stateValue).
Codice interno di implementazione; non è uno script autonomo.
public void SetShowZ(InjectionValue stateValue) => showZ = NumberConversions.ToInt(stateValue) != 0 ? 1 : 0;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.SetSilentMode(object? value);Cambia il flag locale SilentMode runtime.
-
value- 0 si spegne; qualsiasi numero intero diverso da zero include.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Memorizza SilentMode come 0/1. GumpLinesResult legge il flag: con 0 i risultati non vuoti GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription vengono inoltre stampati in una finestra di testo e aperta; con 1 questa visualizzazione aggiuntiva viene soppressa. L'array restituito non cambia. Altri suoni Print e messaggi del server non vengono soppressi.
- In un normale host client, questi dati di stato vengono presi dal gestore GetPersistentState e sono comuni a script/chat/macro dello stesso mondo/profilo e non appartengono a uno script. Un altro processo o un InjectionRuntimeState apparentemente separato ha uno stato diverso. Caricare/cancellare un profilo può sostituirlo; salvati serial vengono ancora confrontati con il mondo caricato.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.SetSilentMode");
UO.SetSilentMode(1);Parametri e flusso di esecuzione:
- Memorizza SilentMode come 0/1. GumpLinesResult legge il flag: con 0 i risultati non vuoti GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription vengono inoltre stampati in una finestra di testo e aperta; con 1 questa visualizzazione aggiuntiva viene soppressa. L'array restituito non cambia. Altri suoni Print e messaggi del server non vengono soppressi.
UO.SetSilentMode(1);Parametri e flusso di esecuzione:
- Memorizza SilentMode come 0/1. GumpLinesResult legge il flag: con 0 i risultati non vuoti GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription vengono inoltre stampati in una finestra di testo e aperta; con 1 questa visualizzazione aggiuntiva viene soppressa. L'array restituito non cambia. Altri suoni Print e messaggi del server non vengono soppressi.
return RunScenario();
object? RunScenario()
{
UO.SetSilentMode(0);
return null;
}Parametri e flusso di esecuzione:
- Memorizza SilentMode come 0/1. GumpLinesResult legge il flag: con 0 i risultati non vuoti GetGumpShortLines/GetGumpFullLines/GetGumpButtonsDescription vengono inoltre stampati in una finestra di testo e aperta; con 1 questa visualizzazione aggiuntiva viene soppressa. L'array restituito non cambia. Altri suoni Print e messaggi del server non vengono soppressi.
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()
{
ApplyValue(1);
return null;
}
void ApplyValue(dynamic value)
{
UO.SetSilentMode(value);
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: value (Any)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0).
Codice interno di implementazione; non è uno script autonomo.
case "setsilentmode": state.SilentMode = Arg(0) != 0 ? 1 : 0; return InjectionValue.Unit;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ShowJournal();Apre una finestra di registro del client locale.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- ShowJournal chiama GameActions.OpenJournal(_world). I record non vengono cancellati e il testo non viene inviato al server.
- Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del server.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.ShowJournal");
UO.ShowJournal();Parametri e flusso di esecuzione:
- Apre una finestra di registro del client locale.
UO.ShowJournal();Parametri e flusso di esecuzione:
- ShowJournal chiama GameActions.OpenJournal(_world). I record non vengono cancellati e il testo non viene inviato al server.
return RunScenario();
object? RunScenario()
{
UO.Print("Journal example");
UO.ShowJournal();
return null;
}Parametri e flusso di esecuzione:
- Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del 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()
{
UO.ShowJournal();
UO.Print(UO.LineCount());
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteLegacyManualAlias. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.ShowJournal:bridge.ShowJournal().
Codice interno di implementazione; non è uno script autonomo.
case "showjournal": bridge.ShowJournal(); break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Snap();
int UO.Snap(object? name);
int UO.Snap(object? name, object? quality);
int UO.Snap(object? file, object? quality, object? includeUI);Salva un'istantanea della finestra grafica del client.
-
name- Nome file opzionale. .jpg/.jpeg seleziona JPEG, altro/nessuno seleziona PNG. Le directory dal nome vengono rimosse; Viene utilizzato solo il nome di base. -
file- Nome file opzionale. .jpg/.jpeg seleziona JPEG, altro/nessuno seleziona PNG. Le directory dal nome vengono rimosse; Viene utilizzato solo il nome di base. -
quality- Opzionale int, predefinito 100, limitato a 1..100. Colpisce JPEG; PNG non utilizza la qualità con perdita. -
includeUI- Opzionale bool, predefinito true. false disegna il mondo/l'illuminazione senza UI.
Flag numerico int: 1 - file immagine salvato, 0 - errore di acquisizione/scrittura. Senza una finestra grafica, RequireGameView genera un errore prima di TakeScreenshot.
- TakeScreenshot scrive in ExecutablePath/Data/Client/Screenshots, cancella i caratteri del nome non validi, seleziona automaticamente il nome in base alla data se vuoto, aggiunge _2/_3 se esiste un file esistente. Non viene utilizzato un percorso assoluto arbitrario.
- Con UI legge il backbuffer; senza UI crea RenderTarget2D e rende il mondo. JPEG imposta temporaneamente FNA_GRAPHICS_JPEG_SAVE_QUALITY con ripristino; PNG SaveAsPng. Gli errori all'interno di TakeScreenshot vengono registrati e indicati come 0.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il risultato di una sola chiamata viene mostrato nel diario. Un numero non viene convertito in bool; per un array viene mostrato il numero di elementi.
var result = UO.Snap();
UO.Print("Snap: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Salva un'istantanea della finestra grafica del client.
UO.Print(UO.Snap());Parametri e flusso di esecuzione:
- TakeScreenshot scrive in ExecutablePath/Data/Client/Screenshots, cancella i caratteri del nome non validi, seleziona automaticamente il nome in base alla data se vuoto, aggiunge _2/_3 se esiste un file esistente. Non viene utilizzato un percorso assoluto arbitrario.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Snap("manual-example.jpg", 85));
return null;
}Parametri e flusso di esecuzione:
- Con UI legge il backbuffer; senza UI crea RenderTarget2D e rende il mondo. JPEG imposta temporaneamente FNA_GRAPHICS_JPEG_SAVE_QUALITY con ripristino; PNG SaveAsPng. Gli errori all'interno di TakeScreenshot vengono registrati e indicati come 0.
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(UO.Snap("manual-world.png", 100, false));
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(null, 100, true).
Codice interno di implementazione; non è uno script autonomo.
public int Snap() => bridge.Snap(null, 100, true);Parametri: name (String)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(name, 100, true).
Codice interno di implementazione; non è uno script autonomo.
public int Snap(string name) => bridge.Snap(name, 100, true);Parametri: name (String), quality (Integer)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Snap. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.Snap:bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true).
Codice interno di implementazione; non è uno script autonomo.
public int Snap(string name, int quality) => bridge.Snap(name, Math.Max(1, Math.Min(100, quality)), true);Parametri: file (Any), quality (Any), includeUI (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Register [Snap]. -
InjectionScript.Runtime.InjectionApiUO.Snap:Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])). -
InjectionScript.Runtime.InjectionValue.ToString:values[0].ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(values[1]). -
InjectionScript.Runtime.InjectionApiUO.ToBoolean:ToBoolean(values[2]).
La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.
Codice interno di implementazione; non è uno script autonomo.
values => new InjectionValue(Snap(values[0].ToString(), NumberConversions.ToInt(values[1]), ToBoolean(values[2])))Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextClear();Cancella il buffer della finestra di testo locale.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Cancella _textWindow; se la finestra era aperta, la ripropone con un elenco vuoto. Una finestra chiusa rimane chiusa. Il registro del client non viene cancellato.
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del server.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.TextClear");
UO.TextClear();Parametri e flusso di esecuzione:
- Cancella il buffer della finestra di testo locale.
UO.TextClear();Parametri e flusso di esecuzione:
- Cancella _textWindow; se la finestra era aperta, la ripropone con un elenco vuoto. Una finestra chiusa rimane chiusa. Il registro del client non viene cancellato.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Old line");
UO.TextClear();
return null;
}Parametri e flusso di esecuzione:
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del 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()
{
UO.TextClose();
UO.TextClear();
UO.TextOpen();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.TextClear. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClear:bridge.TextClear().
Codice interno di implementazione; non è uno script autonomo.
public void TextClear() => bridge.TextClear();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextClose();Chiude la finestra di testo locale, salvando il buffer.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Imposta _textWindowOpen=false e Elimina l'esistente YokoTextWindowGump. L'elenco _textWindow non viene cancellato; TextOpen mostrerà nuovamente le sue linee.
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del server.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.TextClose");
UO.TextClose();Parametri e flusso di esecuzione:
- Chiude la finestra di testo locale, salvando il buffer.
UO.TextClose();Parametri e flusso di esecuzione:
- Imposta _textWindowOpen=false e Elimina l'esistente YokoTextWindowGump. L'elenco _textWindow non viene cancellato; TextOpen mostrerà nuovamente le sue linee.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Retained line");
UO.TextClose();
return null;
}Parametri e flusso di esecuzione:
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del 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()
{
UO.TextPrint("Retained line");
UO.TextClose();
UO.Wait(250);
UO.TextOpen();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.TextClose. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextClose:bridge.TextClose().
Codice interno di implementazione; non è uno script autonomo.
public void TextClose() => bridge.TextClose();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextOpen();Apre una finestra di testo locale.
Non ci sono parametri.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Memorizza _textWindowOpen=true e chiama YokoTextWindowGump.Show con la _textWindow corrente. Il buffer non viene cancellato; alla riapertura vengono visualizzate le righe accumulate.
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del server.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.TextOpen");
UO.TextOpen();Parametri e flusso di esecuzione:
- Apre una finestra di testo locale.
UO.TextOpen();Parametri e flusso di esecuzione:
- Memorizza _textWindowOpen=true e chiama YokoTextWindowGump.Show con la _textWindow corrente. Il buffer non viene cancellato; alla riapertura vengono visualizzate le righe accumulate.
return RunScenario();
object? RunScenario()
{
UO.TextPrint("Example");
UO.TextOpen();
return null;
}Parametri e flusso di esecuzione:
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del 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()
{
UO.TextOpen();
UO.Wait(500);
UO.TextClose();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: Nessun parametro.
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.TextOpen. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextOpen:bridge.TextOpen().
Codice interno di implementazione; non è uno script autonomo.
public void TextOpen() => bridge.TextOpen();Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.TextPrint(object? text);Aggiunge una riga a una finestra di testo locale e la apre.
-
text- Testo fino a ToString; salvato come trasmesso.
void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.
- Al limite, MaxTextWindowLines=2000 rimuove le vecchie righe, quindi aggiunge testo o una riga vuota, imposta _textWindowOpen=true e mostra la finestra. Questo non è UO.Print nel registro e non è un discorso al server.
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del server.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
Il comando è un’istruzione separata. Il messaggio precedente indica l’inizio della chiamata e non conferma un’azione del server.
UO.Print("Calling UO.TextPrint");
UO.TextPrint("Example");Parametri e flusso di esecuzione:
- Aggiunge una riga a una finestra di testo locale e la apre.
UO.TextPrint("Example");Parametri e flusso di esecuzione:
- Al limite, MaxTextWindowLines=2000 rimuove le vecchie righe, quindi aggiunge testo o una riga vuota, imposta _textWindowOpen=true e mostra la finestra. Questo non è UO.Print nel registro e non è un discorso al server.
return RunScenario();
object? RunScenario()
{
var message = "Line 1";
UO.TextPrint(message);
UO.TextPrint("Line 2");
return null;
}Parametri e flusso di esecuzione:
- L'azione è un'interfaccia/buffer locale; Non c'è alcun messaggio di rete o conferma del 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()
{
UO.TextClear();
UO.TextPrint("Fresh report");
UO.TextClose();
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: text (String)
Risultato: void / Unit.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.TextPrint. -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.TextPrint:bridge.TextPrint(text).
Codice interno di implementazione; non è uno script autonomo.
public void TextPrint(string text) => bridge.TextPrint(text);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.UpdateFigure(object? figureID, object? figure);Sostituisce la descrizione di una figura esistente sulla mappa locale.
-
figureID- int ID nello stato. MapFigures ricevuto da AddFigure. Sconosciuto ID dà 0. -
figure— Matrice o stringa con |: [tipo,coord,x1,y1,x2,y2,brushColor,brushStyle,colore,worldNum,testo]. Minimo primi 9 campi numerici; worldNum è la mappa corrente per impostazione predefinita, il testo è vuoto per impostazione predefinita. -
figure[0] (kind)- il tipo dovrebbe essere 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure restituisce 0 quando questi limiti vengono violati. -
figure[1] (coord)- il tipo dovrebbe essere 0..4, coord - 0..1, FigureID - positivo. WorldMapGump.SetYokoMapFigure restituisce 0 quando questi limiti vengono violati.
Flag numerico int: 1 - l'analisi ha avuto successo e bridge. SetMapFigure ha restituito un risultato diverso da zero, dopodiché il record è stato aggiornato; 0 - no ID, errore nel campo di testo struttura/numerico o bridge non riuscito.
- TryMapFigureArg accetta Array o |string. I primi campi 9 vengono convertiti; il testo numerico è controllato da TryStr2Int. Vista/notazione breve non supportata - 0, altri errori di conversione della vista potrebbero interrompere lo script.
- Se il bridge fallisce, la voce di runtime esistente non viene sostituita. In caso di successo, salva SerializeMapFigure con 10 campi numerici e testo. La figura è solo locale, non un elemento del server.
- tipo: 0 linea, 1 ellisse (32 segmento di contorno), 2 contorno rettangolare, 3 freccia, 4 testo. coord=0 — coordinate del mondo con conversione nella mappa, coord=1 — pixel relativi all'area di disegno della mappa. x1/y1 e x2/y2 - estremità/confini; per la freccia del mondo x2=y2=0 imposta l'inizio del Giocatore e l'obiettivo di x1/y1. colore: 0x00BBGGRR (byte basso rosso), colore del contorno. brushColor/brushStyle vengono salvati, ma il render non li legge: non c'è riempimento. worldNum<0 viene visualizzato su qualsiasi mappa, altrimenti solo quella specificata. Il testo viene disegnato nel primo punto (+3 pixel per forme non di testo) nel carattere della mappa, non nel colore del contorno.
- WorldMapGump memorizza le immagini nel dizionario statico del processo. Gli script/chat/macro regolari di un mondo/profilo utilizzano un comune GetPersistentState e un contatore ID; I processi dei singoli manager non condividono i disegni. World.Clear/YokoScripts.Clear e lo stato di caricamento del profilo non cancellano o ripristinano questo dizionario (il caricatore ripristina solo UserStatics). Pertanto, i disegni possono sopravvivere a un cambiamento del mondo/profilo nello stesso processo, tenendo conto di worldNum; il nuovo stato può enfatizzare nuovamente un disegno ID già esistente. ClearFigures cancella esplicitamente i disegni e i record dello stato attuale. Successo: scrittura/eliminazione dei dati, non prova della visualizzazione.
Ogni esempio può essere salvato come file separato .csx ed eseguito in IDE. Le funzioni oggetto UO e attesa forniscono l'host della sessione di gioco corrente. Sostituisci i nomi, le coordinate e gli indirizzi demo serial con i tuoi.
Esegui questo codice in un file .csx separato. Gli argomenti sono visibili nella chiamata; sostituisci nomi, serial e indirizzi di esempio con i tuoi.
object?[] figure = { 0, 0, UO.X(), UO.Y(), UO.X() + 3, UO.Y(), 0, 0, 255 };
var id = UO.AddFigure(figure);
figure[8] = 65280;
UO.Print("Updated flag: " + Convert.ToString(UO.UpdateFigure(id, figure)));Parametri e flusso di esecuzione:
- Sostituisce la descrizione di una figura esistente sulla mappa locale.
dynamic[] figure = new dynamic[checked((int)(8) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = 100;
figure[3] = 100;
figure[4] = 101;
figure[5] = 101;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
UO.Print(UO.UpdateFigure(1, figure));Parametri e flusso di esecuzione:
- TryMapFigureArg accetta Array o |string. I primi campi 9 vengono convertiti; il testo numerico è controllato da TryStr2Int. Vista/notazione breve non supportata - 0, altri errori di conversione della vista potrebbero interrompere lo script.
return RunScenario();
object? RunScenario()
{
dynamic[] figure = new dynamic[checked((int)(10) + 1)];
figure[0] = 0;
figure[1] = 0;
figure[2] = UO.GetX();
figure[3] = UO.GetY();
figure[4] = UO.GetX() + 1;
figure[5] = UO.GetY() + 1;
figure[6] = 0;
figure[7] = 0;
figure[8] = 0;
figure[9] = UO.WorldNum();
figure[10] = "Example";
var id = UO.AddFigure(figure);
if (Truth(id > 0))
{
UO.Print(UO.UpdateFigure(id, figure));
UO.RemoveFigure(id);
}
return null;
}
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;Parametri e flusso di esecuzione:
- Se il bridge fallisce, la voce di runtime esistente non viene sostituita. In caso di successo, salva SerializeMapFigure con 10 campi numerici e testo. La figura è solo locale, non un elemento del 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 figure = "0|0|100|100|101|101|0|0|0";
UO.Print(UO.UpdateFigure(1, figure));
return null;
}
}C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.
Parametri: figureID (Any), figure (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Arg:Arg(0). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::TryMapFigureArg:TryMapFigureArg(1, out int[] figure, out string figureText). -
ClassicUO.Game.Managers.ClassicUOInjectionApiBridge.SetMapFigure:bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::SerializeMapFigure:SerializeMapFigure(figure, figureText).
Codice interno di implementazione; non è uno script autonomo.
case "updatefigure":
{
int id = Arg(0);
if (!state.MapFigures.ContainsKey(id) || !TryMapFigureArg(1, out int[] figure, out string figureText))
return InjectionValue.False;
if (bridge.SetMapFigure(id, figure[0], figure[1], figure[2], figure[3], figure[4], figure[5], figure[6], figure[7], figure[8], figure[9], figureText) == 0)
return InjectionValue.False;
state.MapFigures[id] = SerializeMapFigure(figure, figureText);
return InjectionValue.True;
}ClassicUO — Bad Newbie & C# Scripts IDE