IT UO Topic profiles configuration - LIHACHTETAN/ClassicUO-Bad-Newbie-CSharp-Scripts-IDE GitHub Wiki

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Profili e configurazione

Home · C# · IDE · UO API · A–Z · Esempi · Lingue

Profili, salvataggio delle impostazioni, valori globali e tasti di scelta rapida. Il valore di runtime globale e la variabile di procedura locale hanno durate diverse.

Sezioni

Argomento Comandi e spiegazioni
GetProfile UO.GetProfile
ProfileName UO.ProfileName
ProfileShardName UO.ProfileShardName
ChangeProfile UO.ChangeProfile
ExtChangeProfile UO.ExtChangeProfile
ResetProfile UO.ResetProfile
SaveConfig UO.SaveConfig
Global Variables UO.GetGlobal · UO.SetGlobal · UO.GListGet · UO.GListSet · UO.GListSize
EasyUO Variables UO.GetEasyUO · UO.SetEasyUO
MUL Path UO.SetMulPath

Tutti i comandi del tema

Profili

UO.GetProfile · UO.ProfileName · UO.ProfileShardName · UO.ChangeProfile · UO.ExtChangeProfile · UO.ResetProfile · UO.SaveConfig · UO.ReqProfile · UO.ClientProfilePath · UO.ClientPath · UO.SetMulPath

Variabili globali

UO.GetGlobal · UO.SetGlobal · UO.GetEasyUO · UO.SetEasyUO · UO.GListClear · UO.GListGet · UO.GListPosName · UO.GListPosValue · UO.GListSet · UO.GListSize

Tasti di scelta rapida/Impostazioni

UO.LoadHotkeys · UO.SaveHotkeys · UO.Set · UO.SetDefault

Esempi sull'argomento

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.

UO.GetGlobal

Parametri, risultato e tutti gli scenari

var text = UO.GetGlobal("manual.delay");
var delayMs = 350;
if (Truth(text != "N/A") && Truth(IsNumeric(text)))
{
    var parsed = Val(text);
    if (Truth(parsed >= 50) && Truth(parsed <= 5000))
    {
        delayMs = checked((int)parsed);
    }
}
await Delay(delayMs);

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;

UO.SetGlobal

Parametri, risultato e tutti gli scenari

UO.SetGlobal("manual.delay", 350);
UO.SetGlobal("manual.delay", 600);
var text = UO.GetGlobal("manual.delay");
if (Truth(IsNumeric(text)))
{
    await Delay(Val(text));
}

Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
bool IsNumeric(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out _);
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
double Val(object? value) => double.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out var number) ? number : 0;

Riferimento completo dei comandi


UO.ChangeProfile

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.ChangeProfile(object? name);

Modifica il profilo selezionato per la successiva connessione self-client quando la sessione viene disconnessa.

Parametri

  • name — Nome del profilo/personaggio salvato risolto da TryResolveProfileCharacter per il frammento selezionato. Un nome vuoto/sconosciuto dà -4.

Valore restituito

int: 0 — la selezione è preparata; -2 — la sessione del manager o la connessione/mondo di gioco è attiva; -3 — viene eseguito più di uno script; -4 - il nome/shard del profilo non è consentito.

Comportamento

  • ChangeProfile passa frammento/carattere vuoto; ExtChangeProfile consente shard e caratteri espliciti. Nella sessione del manager, devi selezionare un'altra sessione in ClassicUO Manager: la sessione di corsa salva il suo profilo.
  • In caso di successo, salva e scarica il profilo corrente, modifica LastServerName, salva le impostazioni e assegna il carattere successivo. La connessione stessa non si avvia; Connect viene richiamato separatamente.

Script C# autonomi

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.

Esempio semplice

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.ChangeProfile("ExampleProfile");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Controlla il codice di errore: script diretto

Parametri e flusso di esecuzione:

  • Utilizza il nome del profilo effettivamente salvato; un codice negativo descrive un guasto.
var status = UO.ChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));

2. Nome vuoto - funzione dello script

Parametri e flusso di esecuzione:

  • Un client autonomo disabilitato senza altre violazioni restituisce -4 per un nome vuoto.
return  RunScenario();
 object? RunScenario()
{
    var status = UO.ChangeProfile("");
    UO.Print(Convert.ToString(status));
    return null;
}

3. Connessione dopo la selezione riuscita - classe di script

Parametri e flusso di esecuzione:

  • Connect viene chiamato solo dopo il codice 0; La risposta del server non è stata ancora confermata.
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 status = UO.ChangeProfile("ExampleProfile");
        if (Truth(status == 0))
        {
            UO.Connect();
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ChangeProfile(name) — UO.ChangeProfile(Any)

Parametri: name (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "changeprofile":

                    return new InjectionValue(bridge.ChangeProfileSelection(Text(0), string.Empty, string.Empty));

UO.ClientPath

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

string UO.ClientPath();

Restituisce la directory di installazione/eseguibile del client.

Parametri

Non ci sono parametri.

Valore restituito

string: percorso della directory. Non è bool, non è un array e non ID. Un percorso vuoto significa che il valore non è disponibile; non utilizzarlo come cartella di lavoro corrente predefinita.

Comportamento

  • Leggi CUOEnviroment.ExecutablePath. Questo non è un percorso di guida, un elenco di punti di passaggio, una cartella di script o un percorso per i dati di gioco.
  • Il comando legge solo il percorso, non apre, crea o salva nulla. Il delimitatore finale non dovrebbe essere assunto; l'esempio helper lo aggiunge se necessario.
  • Il nome è il nome del gioco/client API ed è scritto con UO. ClientPath restituisce la directory del client, ClientProfilePath restituisce la directory del profilo attivo.

Script C# autonomi

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.

Esempio semplice

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.ClientPath();
UO.Print("ClientPath: " + Convert.ToString(result));

1. Percorso di lettura - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti. cartella - stringa; un valore vuoto viene elaborato separatamente.
var folder = UO.ClientPath();
if (Truth(folder == ""))
{
    UO.Print("Folder is not available");
    return null;
}
UO.Print(folder);

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Confronta la cartella del cliente con la cartella del profilo - Funzione script

Parametri e flusso di esecuzione:

  • Queste cartelle hanno scopi diversi. Lo script restituisce entrambe le righe senza modificare la configurazione o il profilo.
return  RunScenario();
 object? RunScenario()
{
    var client = UO.ClientPath();
    var profile = UO.ClientProfilePath();
    UO.Print("Client: " + client);
    if (Truth(profile == ""))
    {
        UO.Print("No current profile");
    }
    else
    {
        UO.Print("Profile: " + profile);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione completa per creare il percorso del tuo file - classe script

Parametri e flusso di esecuzione:

  • ChildPath viene mostrato nella sua interezza: cartella è la directory risultante, foglia è il nome del file. Si tratta di una concatenazione di stringhe per un determinato nome, non di un normalizzatore di percorso universale.
  • Il file non viene creato né letto; Per prima cosa puoi controllare la stringa risultante.
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 folder = UO.ClientPath();
        var filePath = ChildPath(folder, "sample.json");
        if (Truth(filePath != ""))
        {
            UO.Print("Example path: " + filePath);
        }

        return null;
    }

    dynamic ChildPath(dynamic folder, dynamic leaf)
    {
        if (Truth(folder == ""))
        {
            return "";
        }

        var last = Right(folder, 1);
        if (Truth(last == "/") || Truth(last == "\\"))
        {
            return folder + leaf;
        }

        return folder + "/" + leaf;
    }

    string Right(object? value, int count)
    {
        string text = Convert.ToString(value) ?? "";
        return text[Math.Max(0, text.Length - count)..];
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ClientPath() — UO.ClientPath()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "clientpath": return new InjectionValue(bridge.ClientPath);

UO.ClientProfilePath

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

string UO.ClientProfilePath();

Restituisce la directory del profilo client corrente.

Parametri

Non ci sono parametri.

Valore restituito

string: percorso della directory. Non è bool, non è un array e non ID. Un percorso vuoto significa che il valore non è disponibile; non utilizzarlo come cartella di lavoro corrente predefinita.

Comportamento

  • Leggi ProfileManager.ProfilePath; se il profilo non è stato ancora selezionato viene restituita una stringa vuota. La chiamata stessa non crea un profilo e non trasferisce le impostazioni.
  • Il comando legge solo il percorso, non apre, crea o salva nulla. Il delimitatore finale non dovrebbe essere assunto; l'esempio helper lo aggiunge se necessario.
  • Il nome è il nome del gioco/client API ed è scritto con UO. ClientPath restituisce la directory del client, ClientProfilePath restituisce la directory del profilo attivo.

Script C# autonomi

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.

Esempio semplice

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.ClientProfilePath();
UO.Print("ClientProfilePath: " + Convert.ToString(result));

1. Percorso di lettura - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti. cartella - stringa; un valore vuoto viene elaborato separatamente.
var folder = UO.ClientProfilePath();
if (Truth(folder == ""))
{
    UO.Print("Folder is not available");
    return null;
}
UO.Print(folder);

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Confronta la cartella del cliente con la cartella del profilo - Funzione script

Parametri e flusso di esecuzione:

  • Queste cartelle hanno scopi diversi. Lo script restituisce entrambe le righe senza modificare la configurazione o il profilo.
return  RunScenario();
 object? RunScenario()
{
    var client = UO.ClientPath();
    var profile = UO.ClientProfilePath();
    UO.Print("Client: " + client);
    if (Truth(profile == ""))
    {
        UO.Print("No current profile");
    }
    else
    {
        UO.Print("Profile: " + profile);
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione completa per creare il percorso del tuo file - classe script

Parametri e flusso di esecuzione:

  • ChildPath viene mostrato nella sua interezza: cartella è la directory risultante, foglia è il nome del file. Si tratta di una concatenazione di stringhe per un determinato nome, non di un normalizzatore di percorso universale.
  • Il file non viene creato né letto; Per prima cosa puoi controllare la stringa risultante.
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 folder = UO.ClientProfilePath();
        var filePath = ChildPath(folder, "sample.json");
        if (Truth(filePath != ""))
        {
            UO.Print("Example path: " + filePath);
        }

        return null;
    }

    dynamic ChildPath(dynamic folder, dynamic leaf)
    {
        if (Truth(folder == ""))
        {
            return "";
        }

        var last = Right(folder, 1);
        if (Truth(last == "/") || Truth(last == "\\"))
        {
            return folder + leaf;
        }

        return folder + "/" + leaf;
    }

    string Right(object? value, int count)
    {
        string text = Convert.ToString(value) ?? "";
        return text[Math.Max(0, text.Length - count)..];
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ClientProfilePath() — UO.ClientProfilePath()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "shardpath":

                case "clientprofilepath": return new InjectionValue(bridge.CurrentProfilePath);

UO.ExtChangeProfile

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.ExtChangeProfile(object? profileName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName);
dynamic UO.ExtChangeProfile(object? profileName, object? shardName, object? charName);

Modifica il profilo selezionato per la successiva connessione self-client quando la sessione viene disconnessa.

Parametri

  • profileName — Nome del profilo/personaggio salvato risolto da TryResolveProfileCharacter per il frammento selezionato. Un nome vuoto/sconosciuto dà -4.
  • shardName — Nome del frammento opzionale. Un valore vuoto utilizza CurrentProfile.ServerName, World.ServerName o LastServerName.
  • charName - Nome del carattere opzionale. Un valore vuoto utilizza il nome del profilo salvato.

Valore restituito

int: 0 — la selezione è preparata; -2 — la sessione del manager o la connessione/mondo di gioco è attiva; -3 — viene eseguito più di uno script; -4 - il nome/shard del profilo non è consentito.

Comportamento

  • ChangeProfile passa frammento/carattere vuoto; ExtChangeProfile consente shard e caratteri espliciti. Nella sessione del manager, devi selezionare un'altra sessione in ClassicUO Manager: la sessione di corsa salva il suo profilo.
  • In caso di successo, salva e scarica il profilo corrente, modifica LastServerName, salva le impostazioni e assegna il carattere successivo. La connessione stessa non si avvia; Connect viene richiamato separatamente.

Script C# autonomi

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.

Esempio semplice

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.ExtChangeProfile("ExampleProfile");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Controlla il codice di errore: script diretto

Parametri e flusso di esecuzione:

  • Utilizza il nome del profilo effettivamente salvato; un codice negativo descrive un guasto.
var status = UO.ExtChangeProfile("ExampleProfile");
UO.Print(Convert.ToString(status));

2. Nome vuoto - funzione dello script

Parametri e flusso di esecuzione:

  • Un client autonomo disabilitato senza altre violazioni restituisce -4 per un nome vuoto.
return  RunScenario();
 object? RunScenario()
{
    var status = UO.ExtChangeProfile("");
    UO.Print(Convert.ToString(status));
    return null;
}

3. Connessione dopo la selezione riuscita - classe di script

Parametri e flusso di esecuzione:

  • Connect viene chiamato solo dopo il codice 0; La risposta del server non è stata ancora confermata.
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 status = UO.ExtChangeProfile("ExampleProfile");
        if (Truth(status == 0))
        {
            UO.Connect();
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ExtChangeProfile(profileName) — UO.ExtChangeProfile(Any)

Parametri: profileName (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.ExtChangeProfile(profileName, shardName) — UO.ExtChangeProfile(Any,Any)

Parametri: profileName (Any), shardName (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.ExtChangeProfile(profileName, shardName, charName) — UO.ExtChangeProfile(Any,Any,Any)

Parametri: profileName (Any), shardName (Any), charName (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "extchangeprofile":

                {

                    string requestedProfile = Text(0);

                    string requestedShard = arguments.Length > 1 ? Text(1) : string.Empty;

                    string requestedCharacter = arguments.Length > 2 ? Text(2) : string.Empty;

                    return new InjectionValue(bridge.ChangeProfileSelection(requestedProfile, requestedShard, requestedCharacter));

                }

UO.GListClear

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.GListClear();

Cancella l'intero elenco temporaneo prima di una nuova serie di azioni.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun risultato. Dopo la cancellazione, GListSize() restituisce 0.

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.GListClear");
UO.GListClear();

1. GListClear - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Cancella rimuove entrambe le regole, Dimensione conferma il vuoto. Gli oggetti del personaggio rimangono al loro posto.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
    UO.Print("Batch rules cleared");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListClear — 2 — funzione di script

Parametri e flusso di esecuzione:

  • Le vecchie regole vengono rimosse prima che venga aggiunto il minerale; la ricerca mostra solo la nuova regola con graphic 0x19B9.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    UO.GListClear();
    UO.GListSet("ore", 0x19B9);
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        var name = UO.GListPosName(i);
        var graphic = UO.GListPosValue(i);
        UO.Print(name + " | graphic: " + Convert.ToString(graphic));
        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;

3. GListClear - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • Un numero precedentemente letto e mantenuto rimane disponibile dopo che l'elenco viene cancellato. L'elenco contiene già voci 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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        var retained = UO.GListGet("bandage");
        UO.GListClear();
        UO.Print("Retained graphic: " + Convert.ToString(retained));
        UO.Print("Remaining entries: " + Convert.ToString(UO.GListSize()));
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListClear() — UO.GListClear()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void GListClear() => globalList.Clear();

UO.GListGet

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GListGet(object? nameValue);

Legge un valore da un elenco temporaneo in base al nome della regola o del contatore.

Parametri

  • nameValue — object? viene convertito in una stringa. I nomi vengono confrontati senza distinzione tra maiuscole e minuscole: "bendaggio" e "BANDAGE" sono una chiave. Si consiglia un nome di stringa non vuoto; è accettabile anche un nome vuoto.

Valore restituito

object? — valore salvato con lo stesso tipo. Se non è presente alcun tasto, int 0. Il 0 conservato è indistinguibile dall'assente GListGet; controlla i nomi

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.

UO.GListSet("simple_value", 42);
object? result = UO.GListGet("simple_value");
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. GListGet - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • BANDAGE trova la chiave della benda. 0x0E21 - graphic benda, non la sua unica serial.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var graphic = UO.GListGet("BANDAGE");
if (Truth(graphic == 0x0E21))
{
    UO.Print("Bandage rule selected");
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListGet — 2 — funzione di script

Parametri e flusso di esecuzione:

  • La funzione completa HasEntry scorre i nomi; quindi 0 in elaborato è diverso da mancante. Per le chiavi proprie, qui vengono utilizzati i nomi ASCII.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    if (Truth(HasEntry("processed")))
    {
        var count = UO.GListGet("processed");
        UO.Print("Recorded count: " + Convert.ToString(count));
    }

    if (!(Truth(HasEntry("missing"))))
    {
        UO.Print("No entry named missing");
    }

    return null;
}

dynamic HasEntry(dynamic name)
{
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
        {
            return true;
        }

        i = i + 1;
    }

    return false;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. GListGet - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • ritardo: numero di millisecondi; UO.Wait viene chiamato solo per un valore compreso nell'intervallo 50–5000. L'esempio attende 350 ms.
return await new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenarioAsync();
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;
    }

    async public Task<object?> RunScenarioAsync()
    {
        UO.GListClear();
        UO.GListSet("delay", 350);
        var delayMs = UO.GListGet("delay");
        if (Truth(delayMs >= 50) && Truth(delayMs <= 5000))
        {
            await Delay(delayMs);
        }
        else
        {
            UO.Print("Delay outside the accepted range");
        }

        return null;
    }

    Task Delay(object? milliseconds) => WaitAsync(checked((int)Convert.ToDouble(milliseconds)));
    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListGet(nameValue) — UO.GListGet(Any)

Parametri: nameValue (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public InjectionValue GListGet(InjectionValue nameValue)

        {

            string name = nameValue.ToString();

            int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));

            return index >= 0 ? globalList[index].Value : InjectionValue.Zero;

        }

UO.GListPosName

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

string UO.GListPosName(object? index);

Legge il nome del record in base alla sua posizione per enumerare le regole.

Parametri

  • index - int: indice da 0 a GListSize()-1 compreso. Non è serial, graphic o il numero di unità nello stack.

Valore restituito

string è il nome nell'ultima forma registrata del registro. L'indice non valido restituisce ""; anche una chiave vuota restituisce "".

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.

UO.GListClear();
UO.GListSet("simple_value", 42);
var result = UO.GListPosName(0);
UO.Print("GListPosName: " + Convert.ToString(result));

1. GListPosName - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • L'indice 0 indica la prima regola. Prima della lettura si controlla che la lista non sia vuota.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
if (Truth(UO.GListSize() > 0))
{
    var first = UO.GListPosName(0);
    UO.Print("First rule: " + first);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListPosName — 2 — funzione di script

Parametri e flusso di esecuzione:

  • HasEntry restituisce true per un contatore zero registrato e false per un nome mancante.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    if (Truth(HasEntry("processed")))
    {
        var count = UO.GListGet("processed");
        UO.Print("Recorded count: " + Convert.ToString(count));
    }

    if (!(Truth(HasEntry("missing"))))
    {
        UO.Print("No entry named missing");
    }

    return null;
}

dynamic HasEntry(dynamic name)
{
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        if (Truth(Convert.ToString(UO.GListPosName(i)) == Convert.ToString(name)))
        {
            return true;
        }

        i = i + 1;
    }

    return false;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. GListPosName - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • Ripetendo BANDAGE si modifica l'ortografia del nome in prima posizione; l'oro rimane 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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        UO.GListSet("BANDAGE", 0x0E21);
        var i = 0;
        while (Truth(i < UO.GListSize()))
        {
            var name = UO.GListPosName(i);
            var graphic = UO.GListPosValue(i);
            UO.Print(name + " | graphic: " + Convert.ToString(graphic));
            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;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListPosName(index) — UO.GListPosName(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GListPosName(int index) => index >= 0 && index < globalList.Count ? globalList[index].Key : string.Empty;

UO.GListPosValue

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.GListPosValue(object? index);

Legge il valore di una voce per posizione, ad esempio graphic, da un elenco precompilato.

Parametri

  • index - int: indice da 0 a GListSize()-1 compreso. Non è serial, graphic o il numero di unità nello stack.

Valore restituito

object? — valore con tipo conservato; l'indice non valido restituisce int 0. Controlla i confini, poiché vero 0 è accettabile.

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.

UO.GListClear();
UO.GListSet("simple_value", 42);
object? result = UO.GListPosValue(0);
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. GListPosValue - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • L'indice 1 seleziona la seconda regola oro. Il controllo dei limiti precede la lettura del valore.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
var index = 1;
if (Truth(index >= 0) && Truth(index < UO.GListSize()))
{
    var graphic = UO.GListPosValue(index);
    UO.Print("Second rule graphic: " + Convert.ToString(graphic));
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListPosValue — 2 — funzione di script

Parametri e flusso di esecuzione:

  • La forza bruta cerca la benda graphic nelle regole, non l'oggetto nel mondo; non vengono inviate richieste di gioco.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    var total = UO.GListSize();
    var i = 0;
    while (Truth(i < total))
    {
        var graphic = UO.GListPosValue(i);
        if (Truth(graphic == 0x0E21))
        {
            UO.Print("Bandage rule at index " + Convert.ToString(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;

3. GListPosValue - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • L'indice 0 esiste, quindi il valore 0 è un contatore valido; controllare il valore per non null sarebbe un errore qui.
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.GListClear();
        UO.GListSet("processed", 0);
        var index = 0;
        if (Truth(index < UO.GListSize()))
        {
            var count = UO.GListPosValue(index);
            UO.Print("Valid zero count: " + Convert.ToString(count));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListPosValue(index) — UO.GListPosValue(Integer)

Parametri: index (Integer)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public InjectionValue GListPosValue(int index) => index >= 0 && index < globalList.Count ? globalList[index].Value : InjectionValue.Zero;

UO.GListSet

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.GListSet(object? nameValue, object? value);

Scrive un valore denominato in un elenco temporaneo: ad esempio, graphic regole di bottino o contatore di oggetti elaborati.

Parametri

  • nameValue — object? viene convertito in una stringa. I nomi vengono confrontati senza distinzione tra maiuscole e minuscole: "bendaggio" e "BANDAGE" sono una chiave. Si consiglia un nome di stringa non vuoto; è accettabile anche un nome vuoto.

Valore restituito

void - nessun risultato; un comando separato, senza assegnazione.

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.GListSet");
UO.GListSet("gold", 0x0EED);

1. GListSet - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • benda e oro sono i nomi delle regole, i numeri sono graphic. BANDAGE sostituisce la prima voce, non ne crea una terza; l'output mostra l'ordine.
UO.GListClear();
UO.GListSet("bandage", 0x0E21);
UO.GListSet("gold", 0x0EED);
UO.GListSet("BANDAGE", 0x0E21);
var i = 0;
while (Truth(i < UO.GListSize()))
{
    var name = UO.GListPosName(i);
    var graphic = UO.GListPosValue(i);
    UO.Print(name + " | graphic: " + Convert.ToString(graphic));
    i = i + 1;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListSet — 2 — funzione di script

Parametri e flusso di esecuzione:

  • elaborato inizia con 0. Tre passi incrementano il contatore memorizzato a 3; gli oggetti del gioco non si spostano qui.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("processed", 0);
    for (int i = (int)(1); i <= 3; i += (int)(1))
    {
        UO.GListSet("processed", UO.GListGet("processed") + 1);
    }

    UO.Print("Recorded count: " + Convert.ToString(UO.GListGet("processed")));
    return null;
}

3. GListSet - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • modalità - stringa, limite - numero 2. La modalità seleziona il ramo, il numero limita l'elaborazione a due passaggi.
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.GListClear();
        UO.GListSet("mode", "inspect");
        UO.GListSet("limit", 2);
        if (Truth(UO.GListGet("mode") == "inspect"))
        {
            for (int i = (int)(1); i <= UO.GListGet("limit"); i += (int)(1))
            {
                UO.Print("Inspect batch: " + Convert.ToString(i));
            }
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListSet(nameValue, value) — UO.GListSet(Any,Any)

Parametri: nameValue (Any), value (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void GListSet(InjectionValue nameValue, InjectionValue value)

        {

            string name = nameValue.ToString();

            int index = globalList.FindIndex(pair => pair.Key.Equals(name, StringComparison.OrdinalIgnoreCase));

            var entry = new KeyValuePair<string, InjectionValue>(name, value);

            if (index >= 0)

                globalList[index] = entry;

            else

                globalList.Add(entry);

        }

UO.GListSize

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

int UO.GListSize();

Conta le voci denominate in un elenco temporaneo per verificare la presenza di vuoti o limitare la forza bruta.

Parametri

Non ci sono parametri.

Valore restituito

int >= 0 — il numero di nomi univoci, non il numero di elementi o unità nelle pile.

Comportamento

  • L'elenco appartiene all'istanza di runtime. Altre esecuzioni di script hanno i propri elenchi. GList non è un archivio condiviso tra profili; questi comandi non scrivono un file e non entrano in uno stato di profilo salvato. Il nuovo runtime riceve un elenco vuoto. Inoltre non è var/dichiarazione di variabile e non UO.SetGlobal.
  • Il nuovo nome viene aggiunto alla fine. La ripetizione di un nome senza distinzione tra maiuscole e minuscole sostituisce il significato e l'ortografia del nome nella posizione originale. La lettura non cancella nulla. Non è possibile cancellare o aggiungere record nel mezzo di una ricerca se sono necessari indici stabili.
  • Le operazioni sono locali: nessun pacchetto, nessuna ricerca di oggetti, nessuna latenza. Set/Get searches for the name sequentially; for larger sets use Dictionary. Non esiste un comando separato per eliminare una chiave in questa famiglia; Clear clears all entries.

Script C# autonomi

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.

Esempio semplice

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.GListSize();
UO.Print("GListSize: " + Convert.ToString(result));

1. GListSize - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Un set vuoto interrompe la procedura prima che le regole vengano elaborate.
UO.GListClear();
if (Truth(UO.GListSize() == 0))
{
    UO.Print("No batch rules; stop here");
    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. GListSize — 2 — funzione di script

Parametri e flusso di esecuzione:

  • Le due regole vengono iterate sugli indici 0 e 1; la condizione i < Size non consente l'accesso all'indice 2.
return  RunScenario();
 object? RunScenario()
{
    UO.GListClear();
    UO.GListSet("bandage", 0x0E21);
    UO.GListSet("gold", 0x0EED);
    var i = 0;
    while (Truth(i < UO.GListSize()))
    {
        var name = UO.GListPosName(i);
        var graphic = UO.GListPosValue(i);
        UO.Print(name + " | graphic: " + Convert.ToString(graphic));
        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;

3. GListSize - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • La sostituzione BANDAGE non aumenta il numero di nomi; prima e dopo La dimensione è 2.
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.GListClear();
        UO.GListSet("bandage", 0x0E21);
        UO.GListSet("gold", 0x0EED);
        var before = UO.GListSize();
        UO.GListSet("BANDAGE", 0x0E21);
        if (Truth(UO.GListSize() == before))
        {
            UO.Print("Existing rule updated without an extra entry");
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GListSize() — UO.GListSize()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int GListSize() => globalList.Count;

UO.GetEasyUO

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

string UO.GetEasyUO(object? number);

Legge una stringa dal registro Windows dell'utente EasyUO.

Parametri

  • number è l'int/valore da convertire da NumberConversions.ToInt. Costituisce il valore del registro dei nomi decimali.

Valore restituito

string — valore HKCU\Software\EasyUO<numero>; se non è presente viene controllato il nome *. Se la chiave/valore è mancante o esterna a Windows, viene restituita una stringa vuota.

Comportamento

  • La lettura non crea una chiave né accede al mondo di gioco. L'interfaccia del registro legacy è diversa da GetGlobal. L'errore di accesso al registro di sistema potrebbe diffondersi; non c'è una presa separata nel bridge.

Script C# autonomi

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.

Esempio semplice

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.GetEasyUO(1);
UO.Print("GetEasyUO: " + Convert.ToString(result));

1. Leggi la voce 1 - script diretto

Parametri e flusso di esecuzione:

  • Il nome viene letto prima 1, poi *1.
var value = UO.GetEasyUO(1);
UO.Print(value);

2. Controlla il risultato vuoto - funzione script

Parametri e flusso di esecuzione:

  • Una stringa vuota non può contenere alcun valore o contenere testo vuoto memorizzato.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.GetEasyUO(999);
    if (Truth(Len(value) == 0))
    {
        UO.Print("empty");
    }

    return null;
}

int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Numero salvato - classe di script

Parametri e flusso di esecuzione:

  • Il numero definisce il valore del registro, non il serial dell'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 = 2;
        var value = UO.GetEasyUO(number);
        UO.Print(value);
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GetEasyUO(number) — UO.GetEasyUO(Any)

Parametri: number (Any)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetEasyUO(InjectionValue number) => bridge.GetEasyUO(NumberConversions.ToInt(number));

UO.GetGlobal

Firme C#

string UO.GetGlobal(object? name);
dynamic UO.GetGlobal(object? globalRegion, object? varName);

Comportamento e risultato

SetGlobal e GetGlobal condividono valori tra tutti gli script, profili e processi Full Client/Client. I valori sono stringhe; una chiave assente dà "N/A". Le maiuscole contano; le forme region usano region/name. Manager/Game Manager/CSharp/globals.json persiste e viene riletto con blocco fra processi. Le forme Shared usano lo stesso archivio.

Parametri

  • globalRegion — Spazio dei nomi associato alla chiave.
  • name — Nome della chiave condivisa, sensibile alle maiuscole.
  • varName — Nome della chiave condivisa, sensibile alle maiuscole.

Ogni blocco è un .csx completo. Sostituire serial, tipi e coordinate di esempio. Ordine e argomenti C# nominati seguono la firma.

Comandi chat

#getglobal team.target
#get global team.message

Esempi C# completi

Ogni blocco è un .csx completo. Sostituire serial, tipi e coordinate di esempio. Ordine e argomenti C# nominati seguono la firma.

1

string value = UO.GetGlobal("team.target");
UO.Print(value);

2

string value = UO.GetGlobal("team.delay");
if (int.TryParse(value, out int milliseconds))
    UO.Print(milliseconds.ToString());

3

UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        string value = api.GetGlobal("team.target");
        api.Print(value);
    }
}

Chiamate interne

CSharpGameApi.GetGlobal
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
  -> InjectionScript.Runtime.State.Globals.GetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement


UO.GetProfile

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

string UO.GetProfile(object? serial);

Legge la descrizione del carattere pubblico che il server invia per la finestra Profilo. Utile per leggere note o cercare testo nella descrizione del carattere selezionato. Queste non sono impostazioni del profilo manager.

Parametri

  • serial — Carattere seriale: un numero, una stringa con ID 0x... o un selettore di oggetto come "self" o "lasttarget". Non si tratta di un tipo di corpo, di un nome di file o di un profilo manager.

Valore restituito

string — testo della descrizione principale, senza titolo e firma. La descrizione vuota è legale; è possibile anche un risultato vuoto se non c'è risposta entro 3 secondi. Questo non è true/false. Ad ogni chiamata viene inviata una richiesta; se la descrizione è già salvata nella sessione, viene restituita immediatamente, inclusa una bozza della finestra aperta. Questa non è una garanzia di una nuova risposta del server.

Comportamento

  • La descrizione e la sua bozza appartengono alla sessione. Chiudendo la finestra di gioco li salva senza pubblicarli, aprendoli ripristina la finestra del Profilo. Chiudendo esplicitamente il proprio Profilo si invia il testo modificato una sola volta; il testo di qualcun altro non viene inviato. La nuova risposta del server sostituisce i vecchi dati, disconnettendo la connessione li cancella. GetProfile non modifica nulla in sé.

Script C# autonomi

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.

Esempio semplice

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.GetProfile("self");
UO.Print("GetProfile: " + Convert.ToString(result));

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • "self" - descrizione del tuo personaggio; non la configurazione dell'account. Viene visualizzato il testo ricevuto dal server o già salvato nella sessione.
var note = UO.GetProfile("self");
if (Truth(note != ""))
{
    UO.Print(note);
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

2. Condizioni del gioco - funzione scenario

Parametri e flusso di esecuzione:

  • Richiede lasttarget esistente. FindText cerca la parola "Guaritore" con distinzione tra maiuscole e minuscole nel testo libero. Se c'è una corrispondenza, AddObject salva il serial selezionato sotto il nome healerNote. Questa è una nota dell'utente, non una prova della professione NPC.
return  RunScenario();
 object? RunScenario()
{
    if (!(Truth(UO.Exists("lasttarget"))))
    {
        return null;
    }

    var note = UO.GetProfile("lasttarget");
    if (Truth(FindText(note, "Healer") > 0))
    {
        UO.AddObject("healerNote", "lasttarget");
    }

    return null;
}

bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
int FindText(int start, object? text, object? value)
{
    string input = Convert.ToString(text) ?? "";
    return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • L'intera funzione HasPublicNote è riportata di seguito. Verifica l'esistenza di un oggetto e di una sottostringa, restituendo true/false. "Gilda" - testo dimostrativo; una risposta vuota non conferma l'assenza di tale record sul 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()
    {
        if (Truth(HasPublicNote("lasttarget", "Guild")))
        {
            UO.AddObject("guildNote", "lasttarget");
        }

        return null;
    }

    dynamic HasPublicNote(dynamic serial, dynamic phrase)
    {
        if (!(Truth(UO.Exists(serial))))
        {
            return false;
        }

        return FindText(UO.GetProfile(serial), phrase) > 0;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    int FindText(object? text, object? value) => (Convert.ToString(text) ?? "").IndexOf(Convert.ToString(value) ?? "", StringComparison.Ordinal) + 1;
    int FindText(int start, object? text, object? value)
    {
        string input = Convert.ToString(text) ?? "";
        return input.IndexOf(Convert.ToString(value) ?? "", Math.Clamp(start - 1, 0, input.Length), StringComparison.Ordinal) + 1;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.GetProfile(serial) — UO.GetProfile(Any)

Parametri: serial (Any)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetProfile(InjectionValue serial) => bridge.GetProfile(GetObject(serial));

UO.LoadHotkeys

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.LoadHotkeys();

Carica macro e tasti di scelta rapida salvati.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • LoadHotkeys chiama _world.Macros.Load tramite Invoke. La tabella macro corrente viene sostituita con i dati del profilo locale.
  • Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del server.

Script C# autonomi

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.

Esempio semplice

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.LoadHotkeys");
UO.LoadHotkeys();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Carica macro e tasti di scelta rapida salvati.
UO.LoadHotkeys();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • LoadHotkeys chiama _world.Macros.Load tramite Invoke. La tabella macro corrente viene sostituita con i dati del profilo locale.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.LoadHotkeys();
    return null;
}

3. Funzione di supporto completa: classe di script

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.LoadHotkeys();
        UO.Print("Macros loaded");
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.LoadHotkeys() — UO.LoadHotkeys()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "loadhotkeys": bridge.LoadHotkeys(); break;

UO.ProfileName

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.ProfileName();

Legge il nome del profilo corrente.

Parametri

Non ci sono parametri.

Valore restituito

string — testo del campo del ponte.ProfileName; senza dati disponibili è possibile una stringa vuota. Questo non è un segno di connessione e non è un numerico ID.

Comportamento

  • ExecuteClientApiCompatibility restituisce bridge.ProfileName senza modificare la selezione del profilo o del server.
  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.

Script C# autonomi

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.

Esempio semplice

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.ProfileName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Legge il nome del profilo corrente.
var value = UO.ProfileName();
UO.Print(value);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteClientApiCompatibility restituisce bridge.ProfileName senza modificare la selezione del profilo o del server.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.ProfileName();
    if (Truth(Len(value) > 0))
    {
        UO.TextPrint(value);
    }

    return null;
}

int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.ProfileName();
        UO.Wait(500);
        var after = UO.ProfileName();
        UO.Print(before = after);
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ProfileName() — UO.ProfileName()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "profilename": return new InjectionValue(bridge.ProfileName);

UO.ProfileShardName

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

dynamic UO.ProfileShardName();

Legge il nome del frammento.

Parametri

Non ci sono parametri.

Valore restituito

string — testo del campo del ponte.ShardName; senza dati disponibili è possibile una stringa vuota. Questo non è un segno di connessione e non è un numerico ID.

Comportamento

  • ExecuteClientApiCompatibility restituisce bridge.ShardName senza modificare la selezione del profilo o del server.
  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.

Script C# autonomi

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.

Esempio semplice

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.ProfileShardName();
UO.Print(result is Array values ? "Count: " + values.Length : Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Legge il nome del frammento.
var value = UO.ProfileShardName();
UO.Print(value);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteClientApiCompatibility restituisce bridge.ShardName senza modificare la selezione del profilo o del server.
return  RunScenario();
 object? RunScenario()
{
    var value = UO.ProfileShardName();
    if (Truth(Len(value) > 0))
    {
        UO.TextPrint(value);
    }

    return null;
}

int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Legge lo stato locale attuale. Non esiste alcun pacchetto, destinazione o aggiornamento automatico; le singole letture possono vedere stati diversi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var before = UO.ProfileShardName();
        UO.Wait(500);
        var after = UO.ProfileShardName();
        UO.Print(before = after);
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ProfileShardName() — UO.ProfileShardName()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "shardname":

                case "profileshardname": return new InjectionValue(bridge.ShardName);

UO.ReqProfile

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.ReqProfile();
void UO.ReqProfile(object? mobile);

Stampa il testo del profilo conosciuto del personaggio.

Parametri

  • mobile - Opzionale serial/alias. Senza argomento - "lasttarget". Questo non è un profilo con impostazioni locali ClassicUO.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ExecuteLegacyManualAlias chiama GetProfile, quindi SystemMessage. Bridge.GetProfile invia RequestProfile, quindi fino a 3 secondi controlla CharacterPanels.Profile.CurrentText con pause 25 ms. Il testo già esistente può essere restituito immediatamente; con timeout visualizza un messaggio e fornisce una riga vuota. Questo comando stampa il testo ma non lo restituisce.
  • Per il valore string utilizzare UO.GetProfile. La presenza di testo non è una prova dell'avvenuta ridenominazione o dello stato del personaggio.

Script C# autonomi

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.

Esempio semplice

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.ReqProfile");
UO.ReqProfile();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Stampa il testo del profilo conosciuto del personaggio.
UO.ReqProfile();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteLegacyManualAlias chiama GetProfile, quindi SystemMessage. Bridge.GetProfile invia RequestProfile, quindi fino a 3 secondi controlla CharacterPanels.Profile.CurrentText con pause 25 ms. Il testo già esistente può essere restituito immediatamente; con timeout visualizza un messaggio e fornisce una riga vuota. Questo comando stampa il testo ma non lo restituisce.
return  RunScenario();
 object? RunScenario()
{
    UO.ReqProfile("self");
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Per il valore string utilizzare UO.GetProfile. La presenza di testo non è una prova dell'avvenuta ridenominazione o dello stato del personaggio.
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 = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.ReqProfile(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;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ReqProfile() — UO.ReqProfile()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "reqprofile":

                    SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));

                    break;

UO.ReqProfile(mobile) — UO.ReqProfile(Any)

Parametri: mobile (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "reqprofile":

                    SystemMessage(GetProfile(arguments.Length > 0 ? arguments[0] : new InjectionValue("lasttarget")));

                    break;

UO.ResetProfile

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.ResetProfile();

Ripristina il profilo attivo ai valori predefiniti.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ResetProfile chiama ProfileManager.ResetCurrentProfileToDefault; se non c'è nessun profilo attivo, viene visualizzato un errore. Modifica le impostazioni locali, pertanto i valori utente salvati potrebbero andare persi.
  • Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del server.

Script C# autonomi

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.

Esempio semplice

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.ResetProfile");
UO.ResetProfile();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Ripristina il profilo attivo ai valori predefiniti.
UO.ResetProfile();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ResetProfile chiama ProfileManager.ResetCurrentProfileToDefault; se non c'è nessun profilo attivo, viene visualizzato un errore. Modifica le impostazioni locali, pertanto i valori utente salvati potrebbero andare persi.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.ResetProfile();
    return null;
}

3. Funzione di supporto completa: classe di script

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.ResetProfile();
        UO.SaveConfig();
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.ResetProfile() — UO.ResetProfile()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "resetprofile": bridge.ResetProfile(); break;

UO.SaveConfig

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SaveConfig();

Salva il profilo ClassicUO corrente.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • SaveConfig chiama ProfileManager.SaveCurrentProfile tramite Invoke. Il comando scrive le impostazioni del profilo locale; il sentiero si prende da ProfileManager.
  • Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del server.

Script C# autonomi

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.

Esempio semplice

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.SaveConfig");
UO.SaveConfig();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Salva il profilo ClassicUO corrente.
UO.SaveConfig();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • SaveConfig chiama ProfileManager.SaveCurrentProfile tramite Invoke. Il comando scrive le impostazioni del profilo locale; il sentiero si prende da ProfileManager.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.SaveConfig();
    return null;
}

3. Funzione di supporto completa: classe di script

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.SaveConfig();
        UO.Print(UO.ShardPath());
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SaveConfig() — UO.SaveConfig()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void SaveConfig() => bridge.SaveConfig();

UO.SaveHotkeys

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SaveHotkeys();

Salva macro e tasti di scelta rapida.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • SaveHotkeys chiama _world.Macros.Save tramite Invoke. Viene salvata la tabella macro locale del profilo corrente.
  • Modifica o visualizza solo i dati locali specificati. Questo comando non ha la conferma del server.

Script C# autonomi

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.

Esempio semplice

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.SaveHotkeys");
UO.SaveHotkeys();

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Salva macro e tasti di scelta rapida.
UO.SaveHotkeys();

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • SaveHotkeys chiama _world.Macros.Save tramite Invoke. Viene salvata la tabella macro locale del profilo corrente.
return  RunScenario();
 object? RunScenario()
{
    UO.Print(UO.ProfileName());
    UO.SaveHotkeys();
    return null;
}

3. Funzione di supporto completa: classe di script

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.SaveHotkeys();
        UO.LoadHotkeys();
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SaveHotkeys() — UO.SaveHotkeys()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "savehotkeys": bridge.SaveHotkeys(); break;

UO.Set

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.Set(object? name, object? value);

Modifica una delle tre impostazioni legacy.

Parametri

  • name — Stringa senza distinzione tra maiuscole e minuscole: "finddistance", "grabdelay" o "equipfordress". Il nome sconosciuto viene silenziosamente ignorato.
  • value - int o double/0x-testo. Per la stringa forma TryStr2Int; il testo errato diventa 0, non un errore.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • finddistance chiama bridge.SetFindDistance, grabdelay chiama bridge.SetGrabDelay, equipfordress assegna state.UseEquipForDress. Queste sono tre impostazioni separate; Non esiste un setter universale per proprietà arbitrarie.
  • Il valore della stringa viene prima convertito TryStr2Int con fallback=0. Pertanto, un errore di battitura potrebbe scrivere 0 nell'impostazione riconosciuta. Set stesso non cerca oggetti e non cambia vestiti.

Script C# autonomi

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.

Esempio semplice

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.Set");
UO.Set("finddistance", 10);

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Modifica una delle tre impostazioni legacy.
UO.Set("finddistance", 10);

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • finddistance chiama bridge.SetFindDistance, grabdelay chiama bridge.SetGrabDelay, equipfordress assegna state.UseEquipForDress. Queste sono tre impostazioni separate; Non esiste un setter universale per proprietà arbitrarie.
return  RunScenario();
 object? RunScenario()
{
    UO.Set("grabdelay", "250");
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Il valore della stringa viene prima convertito TryStr2Int con fallback=0. Pertanto, un errore di battitura potrebbe scrivere 0 nell'impostazione riconosciuta. Set stesso non cerca oggetti e non cambia vestiti.
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.Set("equipfordress", 1);
        UO.Print(UO.FindDistance());
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.Set(name, value) — UO.Set(String,Integer)

Parametri: name (String), value (Integer/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void Set(string name, int value)

        {

            if (name.Equals("finddistance", StringComparison.OrdinalIgnoreCase))

            {

                bridge.SetFindDistance(value);

            }

            else if (name.Equals("grabdelay", StringComparison.OrdinalIgnoreCase))

            {

                bridge.SetGrabDelay(value);

            }

            else if (name.Equals("equipfordress", StringComparison.OrdinalIgnoreCase))

            {

                state.UseEquipForDress = value;

            }

        }

UO.Set(name, value) — UO.Set(String,String)

Parametri: name (String), value (Integer/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void Set(string name, string valueStr)

        {

            int valueInt = NumberConversions.TryStr2Int(valueStr, out var value) ? value : 0;

            Set(name, valueInt);

        }

UO.SetDefault

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SetDefault(object? name, object? @object);

Salva l'alias denominato serial nello stato di runtime.

Parametri

  • name — Alias ​​del nome come testo, case gestisce il dizionario degli oggetti.
  • object — Seriale/alias tramite Arg/GetObject. Il nome e serial vanno in quest'ordine.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • ExecuteLegacyManualAlias chiama state.Objects.Set(Text(0),Arg(1)). Non esiste una scelta interattiva; l'esistenza di serial non è verificata.
  • Si tratta della registrazione del nome dell'oggetto, non del ripristino del profilo o della modifica di tutte le impostazioni sui valori predefiniti. Nelle chiamate successive l'alias viene nuovamente risolto.
  • 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.

Script C# autonomi

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.

Esempio semplice

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.SetDefault");
UO.SetDefault("manualObject", UO.Self());

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Salva l'alias denominato serial nello stato di runtime.
UO.SetDefault("manualObject", UO.Self());

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • ExecuteLegacyManualAlias chiama state.Objects.Set(Text(0),Arg(1)). Non esiste una scelta interattiva; l'esistenza di serial non è verificata.
return  RunScenario();
 object? RunScenario()
{
    UO.SetDefault("manualBag", UO.Backpack());
    UO.Print(UO.GetSerial("manualBag"));
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Si tratta della registrazione del nome dell'oggetto, non del ripristino del profilo o della modifica di tutte le impostazioni sui valori predefiniti. Nelle chiamate successive l'alias viene nuovamente risolto.
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 = UO.GetSerial("lasttarget");
        if (Truth(UO.Exists(id)))
        {
            UO.SetDefault("manualTarget", id);
            UO.Print(UO.GetName("manualTarget"));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SetDefault(name, object) — UO.SetDefault(Any,Any)

Parametri: name (Any), object (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "setdefault":

                    if (arguments.Length > 1) state.Objects.Set(Text(0), Arg(1));

                    break;

UO.SetEasyUO

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SetEasyUO(object? number, object? value);

Scrive un valore stringa nel registro di Windows EasyUO.

Parametri

  • number — Numero del valore int, formattato double senza prefisso *.
  • value - Testo fino a ToString; salvato come trasmesso.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Su Windows, apre/crea HKCU\Software\EasyUO con permesso di scrittura, SetValue(decimalNumber,valore,RegistryValueKind.string). Su altri sistemi operativi visualizza un messaggio e non lo registra.
  • Si tratta di una voce permanente esterna nel registro dell'utente corrente, senza ambito runtime globale e non con il gioco serial. Gli errori di accesso al registro non vengono nascosti da questa funzione.

Script C# autonomi

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.

Esempio semplice

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.SetEasyUO");
UO.SetEasyUO(9001, "manual-example");

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Scrive un valore stringa nel registro di Windows EasyUO.
UO.SetEasyUO(9001, "manual-example");

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Su Windows, apre/crea HKCU\Software\EasyUO con permesso di scrittura, SetValue(decimalNumber,valore,RegistryValueKind.String). Su altri sistemi operativi visualizza un messaggio e non lo registra.
return  RunScenario();
 object? RunScenario()
{
    UO.SetEasyUO(9001, "");
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Si tratta di una voce permanente esterna nel registro dell'utente corrente, senza ambito runtime globale e non con il gioco serial. Gli errori di accesso al registro non vengono nascosti da questa funzione.
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.SetEasyUO(9001, "manual-example");
        UO.Print(UO.GetEasyUO(9001));
        return null;
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SetEasyUO(number, value) — UO.SetEasyUO(Any,Any)

Parametri: number (Any), value (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void SetEasyUO(InjectionValue number, InjectionValue value)

            => bridge.SetEasyUO(NumberConversions.ToInt(number), value.ToString());

UO.SetGlobal

Firme C#

void UO.SetGlobal(object? name, object? value);
void UO.SetGlobal(object? globalRegion, object? varName, object? varValue);

Comportamento e risultato

SetGlobal e GetGlobal condividono valori tra tutti gli script, profili e processi Full Client/Client. I valori sono stringhe; una chiave assente dà "N/A". Le maiuscole contano; le forme region usano region/name. Manager/Game Manager/CSharp/globals.json persiste e viene riletto con blocco fra processi. Le forme Shared usano lo stesso archivio.

Parametri

  • globalRegion — Spazio dei nomi associato alla chiave.
  • name — Nome della chiave condivisa, sensibile alle maiuscole.
  • value — Valore memorizzato come testo.
  • varName — Nome della chiave condivisa, sensibile alle maiuscole.
  • varValue — Valore memorizzato come testo.

Ogni blocco è un .csx completo. Sostituire serial, tipi e coordinate di esempio. Ordine e argomenti C# nominati seguono la firma.

Comandi chat

#setglobal team.target 0x40001234
#set global team.message Привіт усім

Esempi C# completi

Ogni blocco è un .csx completo. Sostituire serial, tipi e coordinate di esempio. Ordine e argomenti C# nominati seguono la firma.

1

UO.SetGlobal("team.target", 0x40001234);
UO.Print(UO.GetGlobal("team.target"));

2

UO.SetGlobal("team.message", "Привіт");
UO.Print(UO.GetGlobal("team.message"));

3

UO.SetGlobal("team", "delay", "350");
UO.Print(Convert.ToString(UO.GetGlobal("team", "delay")));

4

new CommandSample().Execute(UO);

sealed class CommandSample
{
    public void Execute(global::ClassicUO.CSharp.CSharpGameApi api)
    {
        api.SetGlobal("team.target", 0x40001234);
        api.Print(api.GetGlobal("team.target"));
    }
}

Chiamate interne

CSharpGameApi.SetGlobal
  -> CSharpScriptGlobals
  -> InjectionScript.Runtime.InjectionApiUO.RegisterClientApiCompatibility
  -> InjectionScript.Runtime.State.Globals.SetGlobal
Globals -> SharedGlobalStore -> named mutex -> atomic JSON replacement


UO.SetMulPath

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Firme C#

void UO.SetMulPath(object? pathValue);

Salva la stringa del percorso mulPath in fase di esecuzione.

Parametri

  • pathValue - Testo fino a ToString; salvato come trasmesso.

Valore restituito

void - nessun valore. Chiama su una linea separata; il completamento non conferma l'azione del server.

Comportamento

  • Assegna mulPath = ToString o la stringa vuota. Il file non si apre, i dati della mappa non vengono ricaricati e la disponibilità del percorso non viene verificata da questa funzione.
  • 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.

Script C# autonomi

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.

Esempio semplice

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.SetMulPath");
UO.SetMulPath("C:\\Ultima Online");

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Salva la stringa del percorso mulPath in fase di esecuzione.
UO.SetMulPath("C:\\Ultima Online");

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Assegna mulPath = ToString o la stringa vuota. Il file non si apre, i dati della mappa non vengono ricaricati e la disponibilità del percorso non viene verificata da questa funzione.
return  RunScenario();
 object? RunScenario()
{
    UO.SetMulPath("");
    return null;
}

3. Funzione di supporto completa: classe di script

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("C:\\Ultima Online");
        return null;
    }

    void ApplyValue(dynamic value)
    {
        UO.SetMulPath(value);
    }
}

Implementazione del comando

C# distingue maiuscole e minuscole. Usare il nome UO esatto. Confrontare i flag numerici con 0; usare bool solo se la firma restituisce bool.

UO.SetMulPath(pathValue) — UO.SetMulPath(Any)

Parametri: pathValue (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void SetMulPath(InjectionValue pathValue) => mulPath = pathValue.ToString() ?? string.Empty;
⚠️ **GitHub.com Fallback** ⚠️