Repository navigation
IT UO Topic conversion compatibility
Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
Home · C# · IDE · UO API · A–Z · Esempi · Lingue
Converte numeri, serial e formati di script legacy. Un nome compatibile può avere restrizioni o un'operazione esplicitamente vietata: questo è indicato sulla carta.
| Argomento | Comandi e spiegazioni |
|---|---|
| Hex / int | UO.Hex2Int · UO.Int2Hex |
| EUO ↔ Injection | UO.EUO2ID · UO.EUO2Type · UO.EUO2Inj · UO.Inj2EUO |
| EasyUO | UO.GetEasyUO · UO.SetEasyUO |
| Conversione di tipo | C# e libreria standard C# e libreria standard C# e libreria standard C# e libreria standard C# e libreria standard · C# e libreria standard |
UO.Hex2Int · UO.Int2Hex · UO.ScanInt · UO.EUO2ID · UO.EUO2Inj · UO.EUO2Type · UO.Inj2EUO
UO.BoxHack · UO.ShutdownWindows
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
UO.Print(UO.Int2Hex(1073746484));Parametri, risultato e tutti gli scenari
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.BoxHack();Stampa un avviso che la patch del client nativo legacy BoxHack non è richiesta da ClassicUO.
Non ci sono parametri.
void: nessun valore restituito.
- Il ramo ExecuteLegacyManualAlias chiama solo SystemMessage. Non corregge il movimento, la voce, i contenitori o il protocollo di rete.
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.BoxHack");
UO.BoxHack();Parametri e flusso di esecuzione:
- Il messaggio descrive la mancata necessità della vecchia patch.
UO.BoxHack();Parametri e flusso di esecuzione:
- La procedura di compatibilità non modifica il mondo di gioco.
return RunScenario();
object? RunScenario()
{
CompatibilityNotice();
return null;
}
void CompatibilityNotice()
{
UO.BoxHack();
}Parametri e flusso di esecuzione:
- Dopo il messaggio diagnostico, l'esecuzione continua.
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.BoxHack();
UO.Print("continued");
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. -
InjectionScript.Runtime.InjectionApiUO.SystemMessage:SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.").
Codice interno di implementazione; non è uno script autonomo.
case "boxhack":
case "fixtalk":
case "fixwalk":
SystemMessage($"{name}: obsolete native-client patch; ClassicUO does not require it.");
break;Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.EUO2ID(object? euo);Decodifica la notazione letterale EasyUO in radice 26 con A=0.
-
euo— Stringa/valore EasyUO. Le lettere vengono convertite in maiuscolo; i caratteri non alfabetici vengono saltati.
int — il valore numerico risultante a 32 bit; questa non è una stringa esadecimale.
- Calcola in sequenza valore=valore*26+(lettera-A). L'accumulatore uint viene eseguito senza controllo, quindi l'overflow avvolge i bit 32. La stringa vuota e la stringa senza lettere danno 0. Non cerca nessun oggetto nel mondo.
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.EUO2ID("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parametri e flusso di esecuzione:
- B codifica il numero 1.
var value = UO.EUO2ID("B");
UO.Print(Convert.ToString(value));Parametri e flusso di esecuzione:
- Il caso non è importante; Il trattino e il punto esclamativo vengono saltati.
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2ID("b-!");
UO.Print(Convert.ToString(value));
return null;
}Parametri e flusso di esecuzione:
- A codifica zero; il risultato non indica l'oggetto trovato.
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 value = UO.EUO2ID("A");
UO.Print(Convert.ToString(value));
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: euo (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Codice interno di implementazione; non è uno script autonomo.
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.EUO2Inj(object? easyValue);Decodifica la notazione letterale EasyUO in radice 26 con A=0.
-
easyValue— Stringa/valore EasyUO. Le lettere vengono convertite in maiuscolo; i caratteri non alfabetici vengono saltati.
string è la stringa esadecimale dell'Iniezione del risultante serial.
- Calcola in sequenza valore=valore*26+(lettera-A). L'accumulatore uint viene eseguito senza controllo, quindi l'overflow avvolge i bit 32. La stringa vuota e la stringa senza lettere danno 0. Non cerca nessun oggetto nel mondo.
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.EUO2Inj("B");
UO.Print("EUO2Inj: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- B codifica il numero 1.
var value = UO.EUO2Inj("B");
UO.Print(Convert.ToString(value));Parametri e flusso di esecuzione:
- Il caso non è importante; Il trattino e il punto esclamativo vengono saltati.
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2Inj("b-!");
UO.Print(Convert.ToString(value));
return null;
}Parametri e flusso di esecuzione:
- A codifica zero; il risultato non indica l'oggetto trovato.
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 value = UO.EUO2Inj("A");
UO.Print(Convert.ToString(value));
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: easyValue (Any)
Risultato: string / String.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.EUO2Inj. -
InjectionScript.Runtime.InjectionValue.ToString:easyValue.ToString(). -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(unchecked((int)value)).
Codice interno di implementazione; non è uno script autonomo.
public string EUO2Inj(InjectionValue easyValue)
{
uint value = 0;
foreach (char c in easyValue.ToString().ToUpperInvariant())
{
if (c < 'A' || c > 'Z')
continue;
value = unchecked(value * 26 + (uint)(c - 'A'));
}
return NumberConversions.ToHex(unchecked((int)value));
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
dynamic UO.EUO2Type(object? euo);Decodifica la notazione letterale EasyUO in radice 26 con A=0.
-
euo— Stringa/valore EasyUO. Le lettere vengono convertite in maiuscolo; i caratteri non alfabetici vengono saltati.
int — il valore numerico risultante a 32 bit; questa non è una stringa esadecimale.
- Calcola in sequenza valore=valore*26+(lettera-A). L'accumulatore uint viene eseguito senza controllo, quindi l'overflow avvolge i bit 32. La stringa vuota e la stringa senza lettere danno 0. Non cerca nessun oggetto nel mondo.
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.EUO2Type("B");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));Parametri e flusso di esecuzione:
- B codifica il numero 1.
var value = UO.EUO2Type("B");
UO.Print(Convert.ToString(value));Parametri e flusso di esecuzione:
- Il caso non è importante; Il trattino e il punto esclamativo vengono saltati.
return RunScenario();
object? RunScenario()
{
var value = UO.EUO2Type("b-!");
UO.Print(Convert.ToString(value));
return null;
}Parametri e flusso di esecuzione:
- A codifica zero; il risultato non indica l'oggetto trovato.
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 value = UO.EUO2Type("A");
UO.Print(Convert.ToString(value));
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: euo (Any)
Risultato: dynamic / Any.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility. -
InjectionScript.Runtime.InjectionApiUO.DecodeEasyUoId:DecodeEasyUoId(Text(0)). -
InjectionScript.Runtime.InjectionApiUO.ExecuteClientApiCompatibility::Text:Text(0).
Codice interno di implementazione; non è uno script autonomo.
case "euo2id":
case "euo2type": return new InjectionValue(DecodeEasyUoId(Text(0)));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.Hex2Int(object? value);Converte un valore numerico o un testo numerico in un int.
-
value— Testo int, double, double o testo esadecimale con 0x. Sono ammessi spazi attorno ai bordi e al cartello. Le stringhe alias "self"/"lasttarget" non sono consentite qui.
int con 32 bit; esadecimale 0xFFFFFFFF dà -1. double viene troncato a zero con un controllo dell'intervallo. Array e null in NumberConversions.ToInt danno come risultato 0.
- Nonostante il nome, è accettato il testo decimale. Il testo non valido dà FormatException, il tipo non supportato dà InvalidCastException; overflow double: errore di conversione.
- La formattazione inversa è UO.Int2Hex. Una trasformazione non prova l'esistenza di un oggetto.
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.Hex2Int("0x40001234");
UO.Print("Hex2Int: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Converte un valore numerico o un testo numerico in un int.
UO.Print(UO.Hex2Int("0x40001234"));Parametri e flusso di esecuzione:
- Nonostante il nome, è accettato il testo decimale. Il testo non valido dà FormatException, il tipo non supportato dà InvalidCastException; overflow double: errore di conversione.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Hex2Int("255"));
UO.Print(UO.Hex2Int("0xFFFFFFFF"));
return null;
}Parametri e flusso di esecuzione:
- La formattazione inversa è UO.Int2Hex. Una trasformazione non prova l'esistenza di un oggetto.
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 number = UO.Hex2Int("0x000000FF");
UO.Print(UO.Int2Hex(number));
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: value (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Hex2Int. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
Codice interno di implementazione; non è uno script autonomo.
public int Hex2Int(InjectionValue value) => NumberConversions.ToInt(value);Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Inj2EUO(object? serialValue);Codifica il numero di bit 32 serial con le lettere A..Z per EasyUO.
-
serialValue— Numero fino a NumberConversions.ToInt, quindi uint senza segno con bit conservati. Per un alias, prendi prima GetSerial/Hex2Int.
string sono le solite cifre di base 26 con A=0..Z=25. Zero dà "A". Questo non è un nome esadecimale o di oggetto.
- L'algoritmo inserisce la lettera A + valore % 26 a sinistra e divide uint per 26 a zero. Questa è la conversione del progetto, non il numero di colonna di Excel A1.
- EUO2Inj esegue la conversione inversa in una stringa esadecimale. La codifica non crea un oggetto e non lo richiede al 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.Inj2EUO(0);
UO.Print("Inj2EUO: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Codifica il numero di bit 32 serial con le lettere A..Z per EasyUO.
UO.Print(UO.Inj2EUO(0));Parametri e flusso di esecuzione:
- L'algoritmo inserisce la lettera A + valore % 26 a sinistra e divide uint per 26 a zero. Questa è la conversione del progetto, non il numero di colonna di Excel A1.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Inj2EUO(26));
UO.Print(UO.Inj2EUO(25));
return null;
}Parametri e flusso di esecuzione:
- EUO2Inj esegue la conversione inversa in una stringa esadecimale. La codifica non crea un oggetto e non lo richiede al client.
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 value = UO.Hex2Int("0x40001234");
var encoded = UO.Inj2EUO(value);
UO.Print(encoded);
UO.Print(UO.EUO2Inj(encoded));
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: serialValue (Any)
Risultato: string / String.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Inj2EUO. -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(serialValue).
Codice interno di implementazione; non è uno script autonomo.
public string Inj2EUO(InjectionValue serialValue)
{
uint value = unchecked((uint)NumberConversions.ToInt(serialValue));
if (value == 0)
return "A";
var result = new StringBuilder();
while (value > 0)
{
result.Insert(0, (char)('A' + value % 26));
value /= 26;
}
return result.ToString();
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
string UO.Int2Hex(object? value);Formatta int come una stringa esadecimale serial.
-
value- int o testo numerico/esadecimale; double viene troncato a zero con un controllo di overflow. Impossibile trovare l'alias dell'oggetto.
string "0xXXXXXXXX": otto cifre esadecimali, tutti 32 bit int. Un valore negativo è rappresentato nel complemento a due.
- NumberConversions.ToInt esegue la conversione, quindi ToHex utilizza il formato X8. Ad esempio -1 restituisce "0xFFFFFFFF". Il testo numerico non valido causa un errore; questo non è un test per l'esistenza di serial.
- Per rappresentare un numero è sufficiente la conversione; la presenza dell'oggetto viene verificata da UO.Exists separatamente.
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.Int2Hex(1073746484);
UO.Print("Int2Hex: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Formatta int come una stringa esadecimale serial.
UO.Print(UO.Int2Hex(1073746484));Parametri e flusso di esecuzione:
- NumberConversions.ToInt esegue la conversione, quindi ToHex utilizza il formato X8. Ad esempio -1 restituisce "0xFFFFFFFF". Il testo numerico non valido causa un errore; questo non è un test per l'esistenza di serial.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.Int2Hex(-1));
return null;
}Parametri e flusso di esecuzione:
- Per rappresentare un numero è sufficiente la conversione; la presenza dell'oggetto viene verificata da UO.Exists separatamente.
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 encoded = UO.Int2Hex(255);
UO.Print(encoded);
UO.Print(UO.Hex2Int(encoded));
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: value (Any)
Risultato: string / String.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.Int2Hex. -
InjectionScript.Runtime.NumberConversions.ToHex:NumberConversions.ToHex(NumberConversions.ToInt(value)). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(value).
Codice interno di implementazione; non è uno script autonomo.
public string Int2Hex(InjectionValue value) => NumberConversions.ToHex(NumberConversions.ToInt(value));Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
int UO.ScanInt(object? textValue, object? startValue);Trova il primo numero con segno double/hex nella stringa, a partire dalla posizione.
-
textValue: SMS tramite ToString. Cerca la prima corrispondenza dell'espressione regolare [-+]?(?:0[xX][0-9A-Fa-f]+|\d+). -
startValue— int, posizione zero UTF-16. Limitato a 0..text.Length; non indicizzare da 1.
int è il primo numero a 32 bit riconosciuto. Non c'è corrispondenza o il numero non va bene - 0; uno zero reale dà anche 0.
- Regex.Match viene applicato a Substring(start). Se la prima corrispondenza non riesce a convertire TryStr2Int, i numeri successivi non vengono cercati. La parte frazionaria, come .5, non è inclusa nel token numerico.
- Un inizio negativo diventa 0, un inizio oltre la fine della riga diventa text.Length e il risultato è 0. La linea originale non cambia.
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.ScanInt("gold=123", 0);
UO.Print("ScanInt: " + Convert.ToString(result));Parametri e flusso di esecuzione:
- Trova il primo numero con segno double/hex nella stringa, a partire dalla posizione.
UO.Print(UO.ScanInt("gold=123", 0));Parametri e flusso di esecuzione:
- Regex.Match viene applicato a Substring(start). Se la prima corrispondenza non riesce a convertire TryStr2Int, i numeri successivi non vengono cercati. La parte frazionaria, come .5, non è inclusa nel token numerico.
return RunScenario();
object? RunScenario()
{
UO.Print(UO.ScanInt("-7 0xFF", 3));
return null;
}Parametri e flusso di esecuzione:
- Un inizio negativo diventa 0, un inizio oltre la fine della riga diventa text.Length e il risultato è 0. La linea originale non cambia.
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 text = "count=0x20";
var amount = UO.ScanInt(text, 6);
UO.Print(amount);
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: textValue (Any), startValue (Any)
Risultato: int / Integer.
Durante la chiamata:
-
InjectionScript.Runtime.InjectionApiUO.ScanInt. -
InjectionScript.Runtime.InjectionValue.ToString:textValue.ToString(). -
InjectionScript.Runtime.NumberConversions.ToInt:NumberConversions.ToInt(startValue). -
InjectionScript.Runtime.NumberConversions.TryStr2Int:NumberConversions.TryStr2Int(match.Value, out int value).
Codice interno di implementazione; non è uno script autonomo.
public int ScanInt(InjectionValue textValue, InjectionValue startValue)
{
string text = textValue.ToString() ?? string.Empty;
int start = Math.Max(0, Math.Min(text.Length, NumberConversions.ToInt(startValue)));
Match match = Regex.Match(text.Substring(start), @"[-+]?(?:0[xX][0-9A-Fa-f]+|\d+)", RegexOptions.CultureInvariant);
return match.Success && NumberConversions.TryStr2Int(match.Value, out int value) ? value : 0;
}Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어
void UO.ShutdownWindows(object? state);Rifiuta sempre un tentativo di arresto di Windows da uno script.
-
state— L'argomento legacy è memorizzato nella firma, ma non viene utilizzato: qualsiasi chiamata viene bloccata.
Non esiste un risultato normale: NativeSubrutineException con il messaggio "shutdownwindows è bloccato intenzionalmente: gli script potrebbero non arrestare Windows."
- ExecuteLegacyManualAlias genera immediatamente un'eccezione. Non viene eseguito alcun arresto, riavvio o avvio di un processo esterno.
- Tutti e tre gli esempi mostrano deliberatamente chiamate proibite e falliscono quando vengono eseguiti. Non possono essere utilizzati come condizione per un arresto corretto.
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.
try { UO.ShutdownWindows(0); }
catch (Exception error) { UO.Print(error.Message); }Parametri e flusso di esecuzione:
- Rifiuta sempre un tentativo di arresto di Windows da uno script.
UO.ShutdownWindows(0);Parametri e flusso di esecuzione:
- ExecuteLegacyManualAlias genera immediatamente un'eccezione. Non viene eseguito alcun arresto, riavvio o avvio di un processo esterno.
return RunScenario();
object? RunScenario()
{
UO.ShutdownWindows(1);
return null;
}Parametri e flusso di esecuzione:
- Tutti e tre gli esempi mostrano deliberatamente chiamate proibite e falliscono quando vengono eseguiti. Non possono essere utilizzati come condizione per un arresto corretto.
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("The next command is expected to fail");
UO.ShutdownWindows(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: state (Any)
Risultato: void / Unit.
Durante la chiamata:
Codice interno di implementazione; non è uno script autonomo.
case "shutdownwindows":
throw new NativeSubrutineException("shutdownwindows is intentionally blocked: scripts may not shut down Windows.");ClassicUO — Bad Newbie & C# Scripts IDE