Skip to content

IT UO Topic localization

Codex edited this page Oct 12, 2026 · 4 revisions

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

Localizzazione

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

Recupero del testo cliloc localizzato e informazioni sulla codifica. I nomi dei comandi API non vengono tradotti quando si cambia la lingua.

Sezioni

Argomento Comandi e spiegazioni
Cliloc UO.GetCliloc
Cliloc by ID UO.GetClilocByID
Codepage UO.GetUserCodepage

Tutti i comandi del tema

Localizzazione

UO.GetCliloc · UO.GetClilocByID · UO.GetUserCodepage

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.GetCliloc

Parametri, risultato e tutti gli scenari

var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    UO.Print(UO.GetCliloc(item));
}

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

UO.GetClilocByID

Parametri, risultato e tutti gli scenari

var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

Riferimento completo dei comandi


UO.GetCliloc

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

Firme C#

dynamic UO.GetCliloc(object? objID);

Legge il testo delle proprietà dell'oggetto finito da OPL. GetTooltip e GetCliloc sono sinonimi.

Parametri

  • objID — Richiesto l'oggetto serial/ID, non type e non cliloc. Accetta int, stringa decimale/esadecimale, self, backpack, lasttarget, trovaelemento o nome AddObject. 0 significa nessun oggetto.

Valore restituito

string — nome e testo delle proprietà, separati da avanzamento riga, o solo la parte non vuota. Stringa vuota se ObjID=0 o se le proprietà non vengono ricevute. Questo è un testo già pronto; numerico ID cliloc e i parametri vengono restituiti da GetTooltipRec.

Comportamento

  • Se la voce esiste già in OPL, il suo testo viene restituito immediatamente. Se non è presente alcuna voce, viene inviata una richiesta di proprietà e è prevista una risposta fino a 200 ms con un controllo ogni 10 ms. Una pausa non garantisce una risposta.
  • Abbiamo bisogno di un oggetto accessibile e del supporto per le proprietà da parte del server. Un risultato vuoto non è una prova che l'oggetto non esiste: utilizzare Exists separatamente.
  • Il testo può contenere markup del server. Non analizzare le proprietà numeriche in base alla posizione della riga; usa GetTooltipRec per questo.

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

1. Proprietà dell'oggetto nello zaino: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • FindType: oro 0x0EED, qualsiasi hue=-1, contenuto diretto backpack. ObjID=oggetto - trovato serial.
  • Il risultato getter è il testo, non la quantità di oro. Per la quantità utilizzare FindCount(articolo).
var item = UO.FindType(0x0EED, -1, "backpack");
if (Truth(item != ""))
{
    UO.Print(UO.GetCliloc(item));
}

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

2. Gestisci nessuna risposta - Funzione script

Parametri e flusso di esecuzione:

  • ObjID=lasttarget deve puntare all'oggetto desiderato.
  • Una stringa vuota viene elaborata separatamente; Non è necessario ripetere automaticamente la richiesta in un ciclo infinito.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.GetCliloc("lasttarget");
    if (Truth(text == ""))
    {
        UO.Print("No properties received");
    }
    else
    {
        UO.Print(text);
    }

    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. Salva il testo fino all'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • id e salvato sono variabili separate: l'univoco ID dell'oggetto e un'istantanea del suo testo.
  • salvato non cambierà automaticamente se le proprietà sul server cambiano successivamente.
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");
        var saved = UO.GetCliloc(id);
        UO.Print("Object: 0x" + Hex(id));
        UO.Print(saved);
        return null;
    }

    string Hex(object? value) => Convert.ToInt64(value).ToString("X");
}

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.GetCliloc(objID) — UO.GetCliloc(Any)

Parametri: objID (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getcliloc":

                case "gettooltip":

                    return new InjectionValue(bridge.GetTooltip(Arg(0)));

UO.GetClilocByID

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

Firme C#

dynamic UO.GetClilocByID(object? clilocID, object? @params);

Traduce il modello clicoc dai file di gioco e sostituisce i parametri passati.

Parametri

  • clilocID - Obbligatorio int - ID di un messaggio localizzato, non serial di un oggetto e non graphic. Ad esempio, il numero dalla riga[0] del risultato GetTooltipRec.
  • params — Array obbligatorio di sostituzioni nell'ordine 1_..., 2_.... È consentito un valore scalare: diventa un array di una stringa. Per un modello senza parametri, puoi passare una stringa vuota. L'elemento #number si riferisce ad un altro clicoc. Gli elementi vengono convertiti in stringhe; È preferibile passare le stringhe in modo esplicito.

Valore restituito

string: modello tradotto con sostituzioni da Params. Se non è presente alcun caricatore cliloc, viene restituita una stringa vuota. Se ID è sconosciuto, caricato ClilocLoader restituisce il testo diagnostico MegaCliloc: mancante con questo numero e parametri sostituiti. Non restituisce clicoc ID o un segno di successo.

Comportamento

  • Per le proprietà dell'oggetto, prima GetTooltipRec(ObjID): il numero del messaggio e l'oggetto sono diversi ID. Per il testo già pronto di tutte le proprietà, utilizzare GetTooltip(ObjID).

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

1. Modello senza caratteri jolly - script diretto

Parametri e flusso di esecuzione:

  • ClilocID=1042971 — numero di esempio; sostituisci con quello che ti serve. Params è una stringa vuota passata come un singolo valore vuoto.
  • Per un modello senza contrassegni jolly, un parametro vuoto non modifica il testo. Se il modello prevede dati, passare un array come nell'esempio seguente.
var text = UO.GetClilocByID(1042971, "");
UO.Print(text);

2. Passa due valori: funzione script

Parametri e flusso di esecuzione:

  • ClilocID=1042971 è un esempio di modello. args[0] e args[1] occupano le posizioni del primo e del secondo parametro.
  • La dichiarazione della variabile indice[1] crea due elementi: da 0 a 1. Utilizza il modello ID, che prevede parametri corrispondenti.
return  RunScenario();
 object? RunScenario()
{
    dynamic[] args = new dynamic[checked((int)(1) + 1)];
    args[0] = "iron";
    args[1] = "ingot";
    UO.Print(UO.GetClilocByID(1042971, args));
    return null;
}

3. Traduci la prima proprietà immobiliare - classe di script

Parametri e flusso di esecuzione:

  • Il primo argomento sono le proprietà clilocID; il secondo è la sua serie di parametri già pronti.
  • Viene verificata la presenza di almeno un record. Tutti i parametri vengono ricevuti dal server e trasmessi insieme al loro ID.
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 rows = UO.GetTooltipRec("lasttarget");
        if (Truth(ArrayLength(rows) > 0))
        {
            var row = rows[0];
            UO.Print(UO.GetClilocByID(row[0], row[1]));
        }

        return null;
    }

    int ArrayLength(object? value) => value is System.Array array ? array.Length : 0;
    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.GetClilocByID(clilocID, params) — UO.GetClilocByID(Any,Any)

Parametri: clilocID (Any), params (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "getclilocbyid":

                    return new InjectionValue(bridge.GetClilocById(Arg(0), StringArrayArg(1)));

UO.GetUserCodepage

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

Firme C#

int UO.GetUserCodepage();

Restituisce Encoding.Default.CodePage senza leggere le impostazioni del profilo.

Parametri

Non ci sono parametri.

Valore restituito

int — Encoding.Default.CodePage del processo corrente. Questa è la codifica .NET, non la codifica vocale selezionata UO.

Comportamento

  • Restituisce Encoding.Default.CodePage senza leggere le impostazioni del profilo. Il valore dipende dall'ambiente .NET; non può essere considerato garantito Windows ANSI.
  • 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.

var result = UO.GetUserCodepage();
UO.Print("GetUserCodepage: " + Convert.ToString(result));

1. Chiamata diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Restituisce Encoding.Default.CodePage senza leggere le impostazioni del profilo.
UO.Print(UO.GetUserCodepage());

2. Opzione esplicita: funzione dello script

Parametri e flusso di esecuzione:

  • Restituisce Encoding.Default.CodePage senza leggere le impostazioni del profilo. Il valore dipende dall'ambiente .NET; non può essere considerato garantito Windows ANSI.
return  RunScenario();
 object? RunScenario()
{
    var codepage = UO.GetUserCodepage();
    if (Truth(codepage == 65001))
    {
        UO.Print("UTF-8");
    }

    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 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.GetUserCodepage();
        UO.Wait(500);
        var after = UO.GetUserCodepage();
        UO.Print(before);
        UO.Print(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.GetUserCodepage() — UO.GetUserCodepage()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int GetUserCodepage() => Encoding.Default.CodePage;

Clone this wiki locally