Skip to content

IT UO Topic journal

Codex edited this page Oct 12, 2026 · 4 revisions

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

Journal

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

Cerca e attendi messaggi, indici di riga, ora, colore e autore serial. Separa le vecchie righe di registro dal messaggio che ti aspetti dopo l'azione.

Sezioni

Argomento Comandi e spiegazioni
Journal UO.Journal
InJournal UO.InJournal
InJournalBetweenTimes UO.InJournalBetweenTimes
WaitJournalLine UO.WaitJournalLine
System Journal UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal · UO.WaitJournalLineSystem
Journal Ignore UO.AddJournalIgnore · UO.ClearJournalIgnore
Journal Color UO.JournalColor · UO.GetJournalColor
Journal Serial UO.JournalSerial · UO.GetJournalSerial
Journal Timer UO.JournalTimer
Found Text UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer

Tutti i comandi del tema

Journal

UO.Journal · UO.GetJournal · UO.InJournal · UO.InJournalBetweenTimes · UO.LowJournal · UO.HighJournal · UO.ClearJournal · UO.DeleteJournal · UO.ChangeJournalLength · UO.SetJournalLine · UO.AddToJournal · UO.LastJournalMessage · UO.LastMessage

Waiting

UO.WaitJournalLine · UO.WaitJournalLineSystem · UO.WaitingForJournalText

Sistema Journal

UO.AddToSystemJournal · UO.AddToSystemJournalEx · UO.ClearSystemJournal

Journal Ignore

UO.AddJournalIgnore · UO.ClearJournalIgnore

Informazioni sulla linea

UO.JournalColor · UO.GetJournalColor · UO.JournalSerial · UO.GetJournalSerial · UO.JournalTimer · UO.LineCount · UO.LineID · UO.LineIndex · UO.LineMsgType · UO.LineName · UO.LineTextColor · UO.LineTextFont · UO.LineTime · UO.LineType

Testo trovato

UO.FoundedParamId · UO.GetFoundedText · UO.GetFoundedTextColor · UO.GetFoundedTextID · UO.GetFoundedTextIndex · UO.GetFoundedTextSerial · UO.GetFoundedTextTimer

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

Parametri, risultato e tutti gli scenari

var found = UO.InJournal("You see");
if (Truth(found > 0))
{
    var text = UO.GetFoundedText();
    UO.Print(text);
}

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

UO.WaitJournalLine

Parametri, risultato e tutti gli scenari

var started = Now();
var found = UO.WaitJournalLine(started, "success|failed", 3000);
if (Truth(found))
{
    UO.Print(UO.GetFoundedText());
}
else
{
    UO.Print("Timeout");
}

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

Parti del riferimento

1 · 2

Riferimento completo dei comandi


UO.AddJournalIgnore

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

Firme C#

void UO.AddJournalIgnore(object? str);

Aggiunge un filtro di testo locale per le voci del registro di gioco ClassicUO.

Parametri

  • str - frammento di testo non vuoto da cercare nel testo della registrazione a giornale.

Valore restituito

void. Il comando non restituisce il numero di corrispondenze.

Comportamento

  • Il testo è tagliato ai bordi; non viene aggiunta alcuna riga vuota. Quando si controlla un record, la ricerca di una sottostringa viene eseguita senza distinzione tra maiuscole e minuscole. La voce corrispondente è nascosta localmente nel registro del client; il server non riceve il filtro. UO.ClearJournalIgnore() cancella tutti i filtri di testo aggiunti. Le voci già visualizzate non vengono ripristinate una volta cancellate.

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.AddJournalIgnore");
UO.AddJournalIgnore("You see");

1. Nascondi i nuovi post contenenti questa frase. - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Nascondi i nuovi post contenenti questa frase.
UO.AddJournalIgnore("You see");

2. Il filtro cerca una sottostringa che non fa distinzione tra maiuscole e minuscole. - funzione di script

Parametri e flusso di esecuzione:

  • Il filtro cerca una sottostringa che non fa distinzione tra maiuscole e minuscole.
return  RunScenario();
 object? RunScenario()
{
    var phrase = "vendor";
    UO.AddJournalIgnore(phrase);
    return null;
}

3. Più chiamate aggiungono filtri di testo indipendenti. - lezione di sceneggiatura

Parametri e flusso di esecuzione:

  • Più chiamate aggiungono filtri di testo indipendenti.
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.AddJournalIgnore("You see");
        UO.AddJournalIgnore("vendor");
        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.AddJournalIgnore(str) — UO.AddJournalIgnore(Any)

Parametri: str (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "addjournalignore": bridge.AddJournalIgnore(Text(0)); return InjectionValue.Unit;

UO.AddToJournal

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

Firme C#

void UO.AddToJournal(object? text);

Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.

Parametri

Valore restituito

Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.

Comportamento

  • Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
  • UO.Print aggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione.
  • Viene utilizzato il colore dei messaggi di sistema di questo script runtime: inizialmente 0x0440, modificato UO.ConColor. Questa è una voce locale; il nome del comando non significa invio al server.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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.AddToJournal");
UO.AddToJournal("Script started");

1. Breve relazione - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.AddToJournal("Processed item entries: " + Convert.ToString(processed));

2. Avviso di sovraccarico - Funzione script

Parametri e flusso di esecuzione:

  • Vengono letti il ​​peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.AddToJournal("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

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

3. Segnala solo modifiche del peso: classe di script

Parametri e flusso di esecuzione:

  • Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.AddToJournal("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

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

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.AddToJournal(text) — UO.AddToJournal(Any)

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournal

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

Firme C#

void UO.AddToSystemJournal(object? text);

Mostra un messaggio locale sull'avanzamento dello script o sulla condizione di arresto. Lo vedi tu, non gli altri giocatori.

Parametri

Valore restituito

Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.

Comportamento

  • Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
  • UO.Print aggiunge una nuova voce al registro dei messaggi del gioco: prima leggi o salva la stringa/risultato di ricerca desiderato, quindi registra il messaggio diagnostico. In un ciclo veloce, registra i messaggi quando si verificano le modifiche anziché a ogni iterazione.
  • Viene utilizzato il colore dei messaggi di sistema di questo script runtime: inizialmente 0x0440, modificato UO.ConColor. Questa è una voce locale; il nome del comando non significa invio al server.
  • UO.Print · UO.CharPrint · UO.Say · UO.ConColor

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.AddToSystemJournal");
UO.AddToSystemJournal("Script started");

1. Breve relazione - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • elaborato=12 — numero demo di elementi già elaborati. Convert.ToString lo trasforma in una stringa. Questo esempio riporta solo un numero; non trasferisce gli oggetti stessi.
var processed = 12;
UO.AddToSystemJournal("Processed item entries: " + Convert.ToString(processed));

2. Avviso di sovraccarico - Funzione script

Parametri e flusso di esecuzione:

  • Vengono letti il ​​peso e il massimo del personaggio. Un massimo pari a zero/sconosciuto non è considerato un sovraccarico. Se peso >= massimo, viene stampata una riga e Principale termina; gli oggetti non vengono buttati via.
return  RunScenario();
 object? RunScenario()
{
    var weight = UO.Weight();
    var maximum = UO.MaxWeight();
    if (Truth(maximum > 0) && Truth(weight >= maximum))
    {
        UO.AddToSystemJournal("Too heavy: " + Convert.ToString(weight) + "/" + Convert.ToString(maximum));
        return null;
    }

    return null;
}

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

3. Segnala solo modifiche del peso: classe di script

Parametri e flusso di esecuzione:

  • Main ricorda il peso, attende 1000 millisecondi e chiama il ReportWeight completamente dichiarato. L'assistente stampa solo se il peso è cambiato e restituisce il nuovo peso per il controllo successivo. Di per sé non crea un ciclo infinito.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var previous = UO.Weight();
        UO.Wait(1000);
        previous = ReportWeight(previous, UO.Weight());
        return null;
    }

    dynamic ReportWeight(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            UO.AddToSystemJournal("Weight changed: " + Convert.ToString(current));
        }

        return current;
    }

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

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.AddToSystemJournal(text) — UO.AddToSystemJournal(Any)

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "addtojournal":

                case "addtosystemjournal":

                case "clientprint":

                    SystemMessage(Text(0)); return InjectionValue.Unit;

UO.AddToSystemJournalEx

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

Firme C#

void UO.AddToSystemJournalEx(object? text, object? textColor, object? bgColor, object? fontSize, object? fontName);

Visualizza una linea locale nella finestra di gioco e registra una visualizzazione approssimativa del disegno specificato. Utile per messaggi diagnostici di script distinguibili.

Parametri

  • textColor — Colore del testo nel formato 0xRRGGBB, non UO hue. Il canale alfa non viene utilizzato. Esempio 0xFF8800 - arancione; il motore seleziona il colore più vicino dalla tavolozza UO.
  • bgColor - Numero negativo - sfondo predefinito; non negativo - RGB 0xRRGGBB. Lo sfondo richiesto viene scritto nell'output di IDE, ma nella finestra di gioco non viene disegnato un rettangolo colorato separato dietro la linea.
  • fontSize — Dimensione richiesta in punti: il valore <= 0 è sostituito da 10, quindi viene applicato l'intervallo 4..72. Il numero del carattere del gioco viene calcolato come intero come (dimensione + 1) / 3; Non esiste una dimensione esatta del desktop nella finestra di gioco.
  • fontName - Nome del carattere per scrivere le informazioni di progettazione sull'output IDE. Lo spazio bianco attorno ai bordi viene rimosso; il valore vuoto significa Consolas. Questo comando non carica un carattere Windows arbitrario nella finestra del gioco.

Valore restituito

Una chiamata a un metodo con un tipo restituito void viene scritta come un'istruzione autonoma C#; il risultato non può essere assegnato o controllato. Il completamento della dichiarazione non costituisce conferma da parte del server di gioco.

Comportamento

  • Sono richiesti tutti e cinque gli argomenti: Testo, TextColor, BGColor, FontSize, FontName. Il testo è visibile localmente; in IDE viene inoltre salvato il disegno richiesto. Il colore dello sfondo e il nome del carattere sono spunti di progettazione e non è garantito che vengano riprodotti esattamente. ConColor non modifica il RGB passato esplicitamente.
  • Il messaggio va nell'area in basso a sinistra della finestra di gioco e nel registro locale. Una copia è disponibile nell'output IDE. Nel registro generale del manager, attiva il filtro dei messaggi script: la voce è disponibile senza la finestra di gioco. Il filtro dei messaggi del sistema server non seleziona tali record. Il pacchetto vocale di rete non viene inviato. Per la scritta sopra la testa c'è UO.CharPrint.
  • UO.Print · UO.CharPrint · UO.ClientPrintEx · UO.AddToSystemJournalEx

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.AddToSystemJournalEx");
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");

1. UO.AddToSystemJournalEx - 1 - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Messaggio arancione, sfondo predefinito - 1, dimensione 12: questo rende il carattere del gioco 4. Consolas è memorizzato nelle informazioni IDE. Il colore può variare dall'esatto RGB a causa della tavolozza del gioco.
UO.AddToSystemJournalEx("Route started", 0xFF8800, -1, 12, "Consolas");

2. UO.AddToSystemJournalEx — 2 — funzione di script

Parametri e flusso di esecuzione:

  • Un valore BGColor positivo di 0x112233 memorizza la richiesta di background in IDE. Poiché viene utilizzato FontSize=0 10, FontName vuoto diventa Consolas. Nella finestra di gioco, lo sfondo non viene dipinto secondo questo parametro.
return  RunScenario();
 object? RunScenario()
{
    UO.AddToSystemJournalEx("Formatting details", 0x33AAFF, 0x112233, 0, "");
    return null;
}

3. UO.AddToSystemJournalEx - 3 - classe dello scenario

Parametri e flusso di esecuzione:

  • ReportCount è una procedura completamente dichiarata. Segnala solo le variazioni di quantità, selezionando il verde RGB per aumentare e il rosso per diminuire. Restituisce una nuova quantità per il confronto successivo; il risultato appartiene a ReportCount, non a AddToSystemJournalEx.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var previous = 10;
        previous = ReportCount(previous, 12);
        return null;
    }

    dynamic ReportCount(dynamic previous, dynamic current)
    {
        if (Truth(previous != current))
        {
            var textColor = 0xCC3333;
            if (Truth(current > previous))
            {
                textColor = 0x33AA66;
            }

            UO.AddToSystemJournalEx("Count: " + Convert.ToString(current), textColor, -1, 10, "Consolas");
        }

        return current;
    }

    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.AddToSystemJournalEx(text, textColor, bgColor, fontSize, fontName) — UO.AddToSystemJournalEx(Any,Any,Any,Any,Any)

Parametri: text (Any), textColor (Any), bgColor (Any), fontSize (Any), fontName (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "addtosystemjournalex":

                    bridge.PrintFormattedJournal(Text(0), Arg(1), Arg(2), Arg(3), Text(4)); return InjectionValue.Unit;

UO.ChangeJournalLength

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

Firme C#

void UO.ChangeJournalLength(object? newLength);

Modifica il limite della cronologia del registro client che viene conservato.

Parametri

  • newLength — Numero di record da convertire in int. Limiti di runtime inferiori a 1; JournalManager limiti dall'alto Costanti.MAX_JOURNAL_HISTORY_COUNT.

Valore restituito

void: nessun valore restituito.

Comportamento

  • Salva lo stato.JournalLength, quindi richiama SetJournalLength. JournalManager riduce la cronologia esistente rimuovendo le voci più vecchie fino a un nuovo limite. Le voci filtrate e la visualizzazione del registro sono meccanismi separati.

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

1. Cronologia sui record 100 - script diretto

Parametri e flusso di esecuzione:

  • Il nuovo limite limita il numero di record salvati.
UO.ChangeJournalLength(100);

2. Storia minima - Funzione script

Parametri e flusso di esecuzione:

  • Quando il limite viene ridotto, le vecchie voci vengono cancellate.
return  RunScenario();
 object? RunScenario()
{
    UO.ChangeJournalLength(1);
    return null;
}

3. Input null: classe di script

Parametri e flusso di esecuzione:

  • Lo zero viene normalizzato su 1 anziché cancellare il registro.
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.ChangeJournalLength(0);
        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.ChangeJournalLength(newLength) — UO.ChangeJournalLength(Any)

Parametri: newLength (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "changejournallength": state.JournalLength = Math.Max(1, Arg(0, 100)); bridge.SetJournalLength(state.JournalLength); break;

UO.ClearJournal

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

Firme C#

void UO.ClearJournal();

Rimuove le righe dal registro locale condiviso.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito. Non restituisce il numero di righe eliminate. Il contatore delle visite e la selezione dello script corrente vengono reimpostati.

Comportamento

  • Il buffer condiviso è disponibile per tutti gli script: le righe cancellate non sono più presenti. Le istantanee precedentemente salvate da altri script potrebbero rimanere, ma il loro indice diventerà -1.
  • Senza un filtro di testo, l'intero buffer Classic UO viene cancellato, incluso System. Il file di registro locale e i messaggi del server non vengono eliminati.

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

1. Cancella l'area del registro selezionata - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti. Tutte le righe del buffer condiviso vengono cancellate.
  • L'ultimo contatore di ricerca diventa 0; Print può aggiungere una nuova riga dopo aver cancellato.
UO.ClearJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. Cancella prima dell'attesa - Funzione script

Parametri e flusso di esecuzione:

  • La cancellazione avviene prima che il timestamp venga salvato. 1000 - attesa limitata in millisecondi.
  • Un timestamp è solitamente sufficiente per escludere i vecchi messaggi; La pulizia influisce anche su altri script.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. Selezionare Reimposta voce selezionata - Classe script

Parametri e flusso di esecuzione:

  • Dopo la pulizia tramite lo script corrente indice=-1, anche se è stata eliminata solo una parte del buffer.
  • La variabile text memorizza la copia letta in precedenza e GetFoundedText è già stata cancellata.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.ClearJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        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.ClearJournal() — UO.ClearJournal()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "clearjournal": DeleteJournal(); return InjectionValue.Unit;

UO.ClearJournalIgnore

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

Firme C#

void UO.ClearJournalIgnore();

Rimuove tutti i filtri di testo JournalManager.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito.

Comportamento

  • La rimozione dei filtri non elimina la cronologia né annulla i filtri dei nomi AddChatUserIgnore.

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

1. Stato chiaro: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Rimuove tutti i filtri di testo JournalManager.
UO.ClearJournalIgnore();

2. Cancella dopo l'installazione - funzione script

Parametri e flusso di esecuzione:

  • Consentire la visualizzazione del testo che vedi.
return  RunScenario();
 object? RunScenario()
{
    UO.AddJournalIgnore("You see");
    UO.ClearJournalIgnore();
    return null;
}

3. Rieliminazione: classe di script

Parametri e flusso di esecuzione:

  • La cancellazione di un set vuoto è accettabile e non crea una nuova impostazione.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        UO.ClearJournalIgnore();
        UO.ClearJournalIgnore();
        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.ClearJournalIgnore() — UO.ClearJournalIgnore()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "clearjournalignore": bridge.ClearJournalIgnore(); return InjectionValue.Unit;

UO.ClearSystemJournal

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

Firme C#

void UO.ClearSystemJournal();

Rimuove le righe con il nome dell'autore System.

Parametri

Non ci sono parametri.

Valore restituito

void: nessun valore restituito. Non restituisce il numero di righe eliminate. Il contatore delle visite e la selezione dello script corrente vengono reimpostati.

Comportamento

  • Il buffer condiviso è disponibile per tutti gli script: le righe cancellate non sono più presenti. Le istantanee precedentemente salvate da altri script potrebbero rimanere, ma il loro indice diventerà -1.
  • Il sistema è riconosciuto dal nome dell'autore, senza distinzione tra maiuscole e minuscole; Questo è il filtro del giornale generale ClassicUO.

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

1. Cancella l'area del registro selezionata - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti. Vengono rimosse solo le righe di sistema.
  • L'ultimo contatore di ricerca diventa 0; Print può aggiungere una nuova riga dopo aver cancellato.
UO.ClearSystemJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. Cancella prima dell'attesa - Funzione script

Parametri e flusso di esecuzione:

  • La cancellazione avviene prima che il timestamp venga salvato. 1000 - attesa limitata in millisecondi.
  • Un timestamp è solitamente sufficiente per escludere i vecchi messaggi; La pulizia influisce anche su altri script.
return  RunScenario();
 object? RunScenario()
{
    UO.ClearSystemJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. Selezionare Reimposta voce selezionata - Classe script

Parametri e flusso di esecuzione:

  • Dopo la pulizia tramite lo script corrente indice=-1, anche se è stata eliminata solo una parte del buffer.
  • La variabile text memorizza la copia letta in precedenza e GetFoundedText è già stata cancellata.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.ClearSystemJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        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.ClearSystemJournal() — UO.ClearSystemJournal()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "clearsystemjournal": bridge.DeleteSystemJournal(); SelectJournalEntry(null); return InjectionValue.Unit;

UO.DeleteJournal

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

Firme C#

void UO.DeleteJournal();
void UO.DeleteJournal(object? text);

Rimuove le righe dal registro locale condiviso.

Parametri

  • text — La sottostringa cercata o diverse alternative tramite |, ad esempio successo|non riuscita. Gli spazi ai bordi di ciascuna alternativa vengono rimossi, le alternative vuote vengono saltate. Questo è testo semplice, non un'espressione regolare. Utilizza un modello non vuoto. Opzionale solo per DeleteJournal: durante la trasmissione, le stringhe corrispondenti vengono rimosse senza distinzione tra maiuscole e minuscole; senza argomenti, l'intero buffer viene cancellato.

Valore restituito

void: nessun valore restituito. Non restituisce il numero di righe eliminate. Il contatore delle visite e la selezione dello script corrente vengono reimpostati.

Comportamento

  • Il buffer condiviso è disponibile per tutti gli script: le righe cancellate non sono più presenti. Le istantanee precedentemente salvate da altri script potrebbero rimanere, ma il loro indice diventerà -1.
  • Senza un filtro di testo, l'intero buffer Classic UO viene cancellato, incluso System. Il file di registro locale e i messaggi del server non vengono eliminati.

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

1. Cancella l'area del registro selezionata - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti. Tutte le righe del buffer condiviso vengono cancellate.
  • L'ultimo contatore di ricerca diventa 0; Print può aggiungere una nuova riga dopo aver cancellato.
UO.DeleteJournal();
var count = UO.LineCount();
UO.Print("Search matches after clear: " + Convert.ToString(count));

2. Cancella prima dell'attesa - Funzione script

Parametri e flusso di esecuzione:

  • La cancellazione avviene prima che il timestamp venga salvato. 1000 - attesa limitata in millisecondi.
  • Un timestamp è solitamente sufficiente per escludere i vecchi messaggi; La pulizia influisce anche su altri script.
return  RunScenario();
 object? RunScenario()
{
    UO.DeleteJournal();
    var started = Now();
    var found = UO.WaitJournalLine(started, "notice", 1000);
    UO.Print(Convert.ToString(found));
    return null;
}

3. Selezionare Reimposta voce selezionata - Classe script

Parametri e flusso di esecuzione:

  • Dopo la pulizia tramite lo script corrente indice=-1, anche se è stata eliminata solo una parte del buffer.
  • La variabile text memorizza la copia letta in precedenza e GetFoundedText è già stata cancellata.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        UO.DeleteJournal();
        var index = UO.LineIndex();
        UO.Print(Convert.ToString(index));
        return null;
    }
}

4. Rimuovi solo il testo corrispondente - script diretto

Parametri e flusso di esecuzione:

  • il testo contiene due sottostringhe. Le righe di uno qualsiasi di essi vengono cancellate senza tenere conto del caso; i messaggi rimanenti rimangono.
  • trovato=0 se non ci sono nuovi messaggi corrispondenti dopo l'eliminazione. Il modello vuoto in questa implementazione corrisponde a tutte le stringhe.
UO.DeleteJournal("notice|warning");
var found = UO.InJournal("notice|warning", -1);
UO.Print(Convert.ToString(found));

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.DeleteJournal() — UO.DeleteJournal()

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void DeleteJournal()

        {

            bridge.DeleteJournal();

            SelectJournalEntry(null);

        }

UO.DeleteJournal(text) — UO.DeleteJournal(Any)

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void DeleteJournal(InjectionValue text) => DeleteJournal((string)text);

UO.FoundedParamId

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

Firme C#

dynamic UO.FoundedParamId();

Restituisce il numero dell'alternativa del modello di ricerca corrispondente.

Parametri

Non ci sono parametri.

Valore restituito

int è l'indice da 0 nell'elenco delle alternative non vuote fino a |: successo|fallito dà 0 per successo e 1 per fallito. Se sono presenti più alternative adatte, viene presa la prima nel modello. Senza partita o dopo un diretto Journal anche 0. Questo non è il serial dell'autore, né il numero di riga, né il type del messaggio.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Per prima cosa controlla il risultato della ricerca > 0. Il valore di 0 di per sé non conferma il successo. Gli spazi marginali e le alternative vuote vengono rimossi prima della numerazione.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; . In questo adattamento, ID sta per alternativa, i campi autore e tipo sono disponibili separatamente tramite LineID/LineMsgType.

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

1. Due risultati: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • il successo è un'alternativa a 0, il fallimento è un'alternativa a 1. Il successo della ricerca viene controllato separatamente.
  • Questa è l'analisi del testo, non la conferma di un'operazione di gioco da parte del server.
if (Truth(UO.InJournal("success|failed") > 0))
{
    var outcome = UO.FoundedParamId();
    if (Truth(outcome == 0))
    {
        UO.Print("Success text");
    }
    else
    {
        UO.Print("Failure text");
    }
}

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

2. Tre selezioni senza maiuscole e minuscole - funzione script

Parametri e flusso di esecuzione:

  • -1 disabilita il registro. I risultati 0, 1, 2 corrispondono all'ordine delle alternative.
  • Se la stringa contiene più opzioni, viene restituito il primo modello corrispondente in ordine.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
    {
        var kind = UO.FoundedParamId();
        UO.Print("Alternative: " + Convert.ToString(kind));
    }

    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 risultato prima di leggere un'altra riga - Classe di script

Parametri e flusso di esecuzione:

  • Journal(0) modifica la scelta e reimposta le alternative ID, quindi il risultato viene memorizzato in anticipo.
  • La nuova chiamata getter dopo Journal non descrive più il modello precedente.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success|failed") > 0))
        {
            var outcome = UO.FoundedParamId();
            var latest = UO.Journal(0);
            UO.Print("Saved outcome: " + Convert.ToString(outcome));
        }

        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.FoundedParamId() — UO.FoundedParamId()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "foundedparamid":

                    return new InjectionValue(foundedTextId >= 0 ? foundedTextId : 0);

UO.GetFoundedText

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

Firme C#

string UO.GetFoundedText();

Restituisce il testo della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

string — testo della voce selezionata; riga vuota senza selezione. Il testo vuoto è accettabile per una voce esistente.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.
  • Directory primaria: https://forum.yoko.com.ua/viewtopic.php?p=27633.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • string — testo della voce selezionata; riga vuota senza selezione. Il testo vuoto è accettabile per una voce esistente.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedText();
    UO.Print("Text: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedText();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedText();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.GetFoundedText() — UO.GetFoundedText()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetFoundedText() => selectedJournalEntry?.Text ?? string.Empty;

UO.GetFoundedTextColor

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

Firme C#

string UO.GetFoundedTextColor();

Restituisce il colore della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

string - UO hue nel formato 0x0044 (4 cifre esadecimali). Nessuna scelta - 0x0000; Per un messaggio è accettabile anche hue=0. Questo non è RGB.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.
  • Directory primaria: https://forum.yoko.com.ua/viewtopic.php?p=27633.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • string - UO hue nel formato 0x0044 (4 cifre esadecimali). Nessuna scelta - 0x0000; Per un messaggio è accettabile anche hue=0. Questo non è RGB.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextColor();
    UO.Print("Hue: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextColor();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextColor();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.GetFoundedTextColor() — UO.GetFoundedTextColor()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetFoundedTextColor() => selectedJournalEntry != null ? $"0x{selectedJournalEntry.Color:X4}" : "0x0000";

UO.GetFoundedTextID

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

Firme C#

int UO.GetFoundedTextID();

Restituisce il numero dell'alternativa del modello di ricerca corrispondente.

Parametri

Non ci sono parametri.

Valore restituito

int è l'indice da 0 nell'elenco delle alternative non vuote fino a |: successo|fallito dà 0 per successo e 1 per fallito. Se sono presenti più alternative adatte, viene presa la prima nel modello. Senza partita o dopo un diretto Journal anche 0. Questo non è il serial dell'autore, né il numero di riga, né il type del messaggio.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Per prima cosa controlla il risultato della ricerca > 0. Il valore di 0 di per sé non conferma il successo. Gli spazi marginali e le alternative vuote vengono rimossi prima della numerazione.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; . In questo adattamento, ID sta per alternativa, i campi autore e tipo sono disponibili separatamente tramite LineID/LineMsgType.

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

1. Due risultati: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • il successo è un'alternativa a 0, il fallimento è un'alternativa a 1. Il successo della ricerca viene controllato separatamente.
  • Questa è l'analisi del testo, non la conferma di un'operazione di gioco da parte del server.
if (Truth(UO.InJournal("success|failed") > 0))
{
    var outcome = UO.GetFoundedTextID();
    if (Truth(outcome == 0))
    {
        UO.Print("Success text");
    }
    else
    {
        UO.Print("Failure text");
    }
}

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

2. Tre selezioni senza maiuscole e minuscole - funzione script

Parametri e flusso di esecuzione:

  • -1 disabilita il registro. I risultati 0, 1, 2 corrispondono all'ordine delle alternative.
  • Se la stringa contiene più opzioni, viene restituito il primo modello corrispondente in ordine.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.InJournal("mining|ore|empty", -1) > 0))
    {
        var kind = UO.GetFoundedTextID();
        UO.Print("Alternative: " + Convert.ToString(kind));
    }

    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 risultato prima di leggere un'altra riga - Classe di script

Parametri e flusso di esecuzione:

  • Journal(0) modifica la scelta e reimposta le alternative ID, quindi il risultato viene memorizzato in anticipo.
  • La nuova chiamata getter dopo Journal non descrive più il modello precedente.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success|failed") > 0))
        {
            var outcome = UO.GetFoundedTextID();
            var latest = UO.Journal(0);
            UO.Print("Saved outcome: " + Convert.ToString(outcome));
        }

        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.GetFoundedTextID() — UO.GetFoundedTextID()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int GetFoundedTextID() => foundedTextId >= 0 ? foundedTextId : 0;

UO.GetFoundedTextIndex

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

Firme C#

int UO.GetFoundedTextIndex();

Restituisce l'indice corrente della voce selezionata, se è ancora memorizzato nel registro.

Parametri

Non ci sono parametri.

Valore restituito

int è l'indice corrente da 0 (riga più recente). -1 significa che non c'è scelta o che la voce selezionata è già stata cancellata/precedente. Questo non è il risultato di InJournal: non è necessario sottrarre 1 dall'indice.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • L'indice viene ricalcolato in base all'identità del record. Nuovi messaggi lo aumentano. Il vecchio indice memorizzato non è costante ID; per il testo, GetFoundedText è più sicuro.

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

1. Indice del record trovato - scrittura diretta

Parametri e flusso di esecuzione:

  • Getter senza argomenti legge la selezione dello script corrente. 0 — nuova riga, -1 — nessuna riga nel buffer corrente.
  • Il testo viene preso dalla voce salvata in modo che nuovi messaggi non lo sostituiscano.
if (Truth(UO.InJournal("notice") > 0))
{
    var index = UO.GetFoundedTextIndex();
    var text = UO.GetFoundedText();
    UO.Print(Convert.ToString(index) + ": " + text);
}

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

2. Controlla lettura successiva - Funzione script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona l'ultima voce; il controllo esclude un log vuoto.
  • Per una voce valida è consentito il testo vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    if (Truth(UO.GetFoundedTextIndex() >= 0))
    {
        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. Aggiorna indice dopo l'attesa - Classe di script

Parametri e flusso di esecuzione:

  • L'attesa 100 ms consente l'arrivo di nuovi messaggi. dopo trova di nuovo la stessa voce.
  • dopo può aumentare o diventare -1 quando viene rimosso; GetFoundedText contiene ancora il testo salvato.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("needle") > 0))
        {
            var before = UO.GetFoundedTextIndex();
            UO.Wait(100);
            var after = UO.GetFoundedTextIndex();
            UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

        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.GetFoundedTextIndex() — UO.GetFoundedTextIndex()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int GetFoundedTextIndex() => selectedJournalEntry != null && bridge is IApiJournalReader reader

            ? reader.FindJournalEntryIndex(selectedJournalEntry.Identity) : foundedTextIndex;

UO.GetFoundedTextSerial

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

Firme C#

string UO.GetFoundedTextSerial();

Restituisce serial l'autore della registrazione a giornale selezionata.

Parametri

Non ci sono parametri.

Valore restituito

string - serial dell'autore in formato 0x00001234 (8 cifre esadecimali). Nessuna scelta - 0x00000000. Questo non è il type di un argomento o l'indice di una rivista.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.
  • Directory primaria: https://forum.yoko.com.ua/viewtopic.php?p=27633.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • string - serial dell'autore in formato 0x00001234 (8 cifre esadecimali). Nessuna scelta - 0x00000000. Questo non è il type di un argomento o l'indice di una rivista.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextSerial();
    UO.Print("Speaker serial: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextSerial();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextSerial();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.GetFoundedTextSerial() — UO.GetFoundedTextSerial()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetFoundedTextSerial() => selectedJournalEntry != null

            ? $"0x{unchecked((uint)selectedJournalEntry.Serial):X8}" : "0x00000000";

UO.GetFoundedTextTimer

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

Firme C#

int UO.GetFoundedTextTimer();

Restituisce il timestamp in millisecondi della voce di log selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int — momento di registrazione in millisecondi dall'inizio del runtime, compatibile con Now(). Le voci prima dell'inizio danno 0. Anche senza scelta 0; un segno di calendario errato dà -1. Non è passato o decimi di secondo UO.Timer().

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.
  • Directory primaria: https://forum.yoko.com.ua/viewtopic.php?p=27633.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int — momento di registrazione in millisecondi dall'inizio del runtime, compatibile con Now(). Le voci prima dell'inizio danno 0. Anche senza scelta 0; un segno di calendario errato dà -1. Non è passato o decimi di secondo UO.Timer().
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.GetFoundedTextTimer();
    UO.Print("Timestamp ms: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.GetFoundedTextTimer();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.GetFoundedTextTimer();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.GetFoundedTextTimer() — UO.GetFoundedTextTimer()

Parametri: Nessun parametro.

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int GetFoundedTextTimer() => selectedJournalEntry != null ? JournalEntryTime(selectedJournalEntry.Timestamp) : 0;

UO.GetJournal

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

Firme C#

string UO.GetJournal(object? index);

Legge il testo di una riga all'indice corrente e seleziona quella voce per GetFoundedText/Line*.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string — testo della riga o una riga vuota se l'indice non è corretto/il giornale è vuoto. Una riga esistente può anche avere testo vuoto: dopo la lettura, LineIndex >= 0 conferma che la voce è stata selezionata. Non è il numero di righe.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Reset a lettura diretta ID alternative; GetFoundedTextID/FoundedParamId è seguito da 0. Journal stesso non ricalcola LineCount.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

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

1. L'ultima riga e il suo autore sono una sceneggiatura diretta

Parametri e flusso di esecuzione:

  • 0 è la linea più recente. Innanzitutto vengono letti il ​​testo e l'autore, quindi viene visualizzato il risultato.
  • Print può aggiungere un messaggio; il testo/autore salvato si riferisce alla voce precedentemente selezionata.
var text = UO.GetJournal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);

2. La riga precedente, se esiste, è una funzione di script

Parametri e flusso di esecuzione:

  • 1 è la voce precedente, HighJournal è l'indice massimo disponibile.
  • Il registro potrebbe cambiare tra una chiamata e l'altra. Per i dati di una riga già trovata, utilizzare GetFoundedText.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var text = UO.GetJournal(1);
        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. Distinguere il testo vuoto da quello senza stringa: classe di script

Parametri e flusso di esecuzione:

  • LineIndex=-1 significa che la voce selezionata è mancante/eliminata. Len(testo)=0 di per sé non significa questo.
  • Memorizzare il risultato del test finché l'output diagnostico non viene aggiunto al registro.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.GetJournal(0);
        var index = UO.LineIndex();
        if (Truth(index < 0))
        {
            UO.Print("No record");
        }
        else
        {
            UO.Print("Text length: " + Convert.ToString(Len(text)));
        }

        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;
}

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.GetJournal(index) — UO.GetJournal(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.GetJournalColor

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

Firme C#

string UO.GetJournalColor(object? index);

Legge il campo hue della riga all'indice corrente senza modificare la voce selezionata.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string - UO hue come 0x0044; se l'indice 0x0000 non è corretto. Questo non è RGB.

Comportamento

  • Ogni chiamata legge la posizione corrente. Per testo e campi coerenti dello stesso record, prima Journal(index), quindi GetFoundedText/Line*. I valori nulli possono essere dati reali.

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

1. Nuovo campo record: script diretto

Parametri e flusso di esecuzione:

  • 0 è l'indice della nuova riga. Viene verificata la presenza di un buffer.
  • string - UO hue come 0x0044; se l'indice 0x0000 non è corretto. Questo non è RGB.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.GetJournalColor(0);
    UO.Print(Convert.ToString(value));
}

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

2. Campo record precedente - Funzione script

Parametri e flusso di esecuzione:

  • 1 è la riga precedente, non serial=1.
  • La voce GetFoundedText/Line* selezionata dalla ricerca non viene modificata.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.GetJournalColor(1);
        UO.Print(Convert.ToString(value));
    }

    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 valore prima dell'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • value copia il campo al momento della chiamata. L'attesa non aggiorna la variabile.
  • Per leggere nuovamente la riga corrente 0, richiamare nuovamente il comando; questa potrebbe già essere un'altra voce.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = UO.GetJournalColor(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(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.GetJournalColor(index) — UO.GetJournalColor(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string JournalColor(int index) => bridge.JournalColor(index);

UO.GetJournalSerial

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

Firme C#

string UO.GetJournalSerial(object? index);

Legge il campo serial della riga all'indice corrente senza modificare la voce selezionata.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string - serial dell'autore come 0x00001234; se l'indice 0x00000000 non è corretto.

Comportamento

  • Ogni chiamata legge la posizione corrente. Per testo e campi coerenti dello stesso record, prima Journal(index), quindi GetFoundedText/Line*. I valori nulli possono essere dati reali.

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

1. Nuovo campo record: script diretto

Parametri e flusso di esecuzione:

  • 0 è l'indice della nuova riga. Viene verificata la presenza di un buffer.
  • string - serial dell'autore come 0x00001234; se l'indice 0x00000000 non è corretto.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.GetJournalSerial(0);
    UO.Print(Convert.ToString(value));
}

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

2. Campo record precedente - Funzione script

Parametri e flusso di esecuzione:

  • 1 è la riga precedente, non serial=1.
  • La voce GetFoundedText/Line* selezionata dalla ricerca non viene modificata.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.GetJournalSerial(1);
        UO.Print(Convert.ToString(value));
    }

    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 valore prima dell'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • value copia il campo al momento della chiamata. L'attesa non aggiorna la variabile.
  • Per leggere nuovamente la riga corrente 0, richiamare nuovamente il comando; questa potrebbe già essere un'altra voce.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = UO.GetJournalSerial(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(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.GetJournalSerial(index) — UO.GetJournalSerial(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.HighJournal

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

Firme C#

dynamic UO.HighJournal();

Restituisce l'indice di log massimo disponibile.

Parametri

Non ci sono parametri.

Valore restituito

int: -1 quando il caricatore è vuoto; altrimenti il ​​numero di record memorizzati meno 1 è l'indice del record più vecchio disponibile. Journal/GetJournal utilizza indici zero dalla nuova voce alla vecchia voce; un risultato positivo InJournal utilizza un conteggio singolo diverso.

Comportamento

  • Nuovi messaggi e pulizia cambiano i confini. L'ordine qui è Journal(0) dalla nuova voce alla vecchia voce.

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

1. Controlla le voci: script diretto

Parametri e flusso di esecuzione:

  • Un limite negativo indica un buffer vuoto.
  • Se il buffer non è vuoto, Journal(0) legge una nuova voce.
if (Truth(UO.HighJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.Print(text);
}

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

2. Numero di righe disponibili - funzione dello script

Parametri e flusso di esecuzione:

  • HighJournal=-1 quando il log è vuoto, quindi totale=0. LowJournal descrive il limite inferiore, non il numero di righe.
  • Questo è il numero totale di righe archiviate localmente; LineCount si riferisce all'ultima ricerca.
return  RunScenario();
 object? RunScenario()
{
    var total = UO.HighJournal() + 1;
    UO.Print("Rows: " + Convert.ToString(total));
    return null;
}

3. Leggi la riga sul bordo - Classe di script

Parametri e flusso di esecuzione:

  • l'indice viene passato direttamente al Journal, senza sottrarre uno.
  • L'indice potrebbe spostarsi con i messaggi in arrivo; Il buffer non viene congelato tra le chiamate.
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 index = UO.HighJournal();
        if (Truth(index >= 0))
        {
            var text = UO.Journal(index);
            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;
}

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.HighJournal() — UO.HighJournal()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "highjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : bridge.JournalEntryCount() - 1);

UO.InJournal

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

Firme C#

int UO.InJournal(object? pattern);
int UO.InJournal(object? pattern, object? maxLinesOrIgnoreCase);
int UO.InJournal(object? pattern, object? serial, object? color);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly);
int UO.InJournal(object? pattern, object? serial, object? color, object? startTime, object? endTime, object? newestOnly, object? caseSensitive);

Cerca un messaggio nel registro locale e salva il record trovato con i relativi campi.

Parametri

  • pattern — La sottostringa cercata o diverse alternative tramite |, ad esempio successo|non riuscita. Gli spazi ai bordi di ciascuna alternativa vengono rimossi, le alternative vuote vengono saltate. Questo è testo semplice, non un'espressione regolare. Utilizza un modello non vuoto.
  • maxLinesOrIgnoreCase — Solo la forma di due argomenti: -1 — l'intero registro disponibile, senza distinzione tra maiuscole e minuscole; 0 - non spuntare nessuna riga; numero positivo: seleziona non più di questo numero di ultime righe, con distinzione tra maiuscole e minuscole. Altri valori negativi sono limitati a 0.
  • serial — Il terzo e i successivi argomenti includono la forma estesa. Il secondo argomento di questa forma è il numerico serial dell'autore del messaggio, non graphic/type. -1 disabilita il filtro; 0 seleziona serial=0. Anche una stringa esadecimale contenente un numero viene convertita in un numero; il nome alias dell'oggetto non è consentito qui.
  • color — Il terzo argomento della forma estesa è numerico UO hue; -1 o 0xFFFF disabilita il filtro. 0 seleziona hue=0. Questo non è RGB.
  • startTime - Etichetta iniziale opzionale Now(), int in millisecondi. Dato un endTime positivo, il valore startTime=0 indica l'inizio dell'esecuzione. Se entrambi i contrassegni sono mancanti/non positivi, non è presente alcun filtro temporale.
  • endTime — Etichetta finale opzionale Now(), int in millisecondi. Assente o 0 - ora corrente. L'ordine dei confini positivi non è significativo. L'etichetta futura è limitata all'ora corrente.
  • newestOnly - Opzionale bool, predefinito false. true interrompe la ricerca dopo la prima corrispondenza; LineCount poi 0 o 1. false conta tutte le righe corrispondenti, scegliendo comunque quella più recente.
  • caseSensitive — Forma estesa bool opzionale, predefinita false. true fa distinzione tra maiuscole e minuscole. Un modulo solo modello, invece, fa sempre distinzione tra maiuscole e minuscole.

Valore restituito

int: 0 – non esiste una linea adatta; un numero positivo è la posizione della voce corrispondente più recente, contando dalla fine dell'intero registro, iniziando con 1. Questo non è il numero di corrispondenze o il numero di alternative al modello. Per l'indice zero utilizzare LineIndex/GetFoundedTextIndex, per il numero di corrispondenze utilizzare LineCount, per il numero alternativo utilizzare GetFoundedTextID. Nuovi messaggi successivi potrebbero modificare l'indice, ma i campi salvati del record selezionato rimangono disponibili.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • La ricerca non prevede nuovo testo. Il modello vuoto nell'attuale InJournal corrisponde a qualsiasi stringa, ma non fornisce ID un'alternativa; per verificare la presenza di stringhe, utilizzare HighJournal/LowJournal.
  • La forma a due argomenti specifica il limite/caso, non serial. Per serial è obbligatorio passare anche il colore. Un argomento SetJournalLine può limitare l'area di ricerca.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

Now() fornisce l'host dell'esecuzione corrente: si tratta di un numero intero di millisecondi dello stesso orologio nativo utilizzato dal log. Non sostituirlo con Environment.TickCount, ora Unix o il tuo cronometro: l'origine sarà diversa. In un normale programma .cs/.csproj, chiama context.Now() sul CSharpScriptGlobals passato.

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

1. Controlla la distinzione tra maiuscole e minuscole del messaggio: script diretto

Parametri e flusso di esecuzione:

  • pattern=Vedi è una sottostringa, le maiuscole sono importanti. trovato=0 significa assente.
  • Il testo viene copiato dalla voce trovata; l'arrivo di un nuovo messaggio non lo sostituisce.
var found = UO.InJournal("You see");
if (Truth(found > 0))
{
    var text = UO.GetFoundedText();
    UO.Print(text);
}

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

2. Le selezioni multiple non fanno distinzione tra maiuscole e minuscole: funzione script

Parametri e flusso di esecuzione:

  • Il secondo argomento -1 rimuove il limite di riga e disabilita la distinzione tra maiuscole e minuscole.
  • risultato=0 per successo, 1 per fallito; questo è il numero dell'alternativa, non quello dell'oratore ID.
return  RunScenario();
 object? RunScenario()
{
    var found = UO.InJournal("success|failed", -1);
    if (Truth(found > 0))
    {
        var outcome = UO.GetFoundedTextID();
        UO.Print("Alternative: " + Convert.ToString(outcome));
    }

    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. Controlla solo le ultime venti righe - classe script

Parametri e flusso di esecuzione:

  • 20 - linee massime da controllare, le maiuscole sono importanti. corrispondenze: il numero di righe corrispondenti nell'area selezionata.
  • trovato contiene la posizione più 1, non corrispondenze. Anche la scrittura di testo diagnostico può essere aggiunto al registro.
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 found = UO.InJournal("bank", 20);
        var matches = UO.LineCount();
        UO.Print("Matches: " + Convert.ToString(matches));
        return null;
    }
}

4. Tutte le opzioni avanzate: script diretto

Parametri e flusso di esecuzione:

  • serial=0x00001234 — esempio dell'autore, colore=0x0044 — hue. Sostituisci con valori reali. iniziato/endTime — contrassegni dei millisecondi.
  • true interrompe la ricerca alla prima riga; false non fa distinzione tra maiuscole e minuscole. In attesa di 350 ms separatamente, InJournal non attende da solo.
var started = Now();
UO.Wait(350);
var found = UO.InJournal("hello", 0x00001234, 0x0044, started, Now(), true, false);
if (Truth(found > 0))
{
    UO.Print(UO.GetFoundedText());
}

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

5. Filtra solo per ora - funzione script

Parametri e flusso di esecuzione:

  • serial=-1 e color=-1 disabilitano entrambi i filtri. Due marcatori limitano il tempo.
  • newestOnly e caseSensitive vengono omessi: false e false. Senza corrispondenza, viene restituito 0.
return  RunScenario();
 object? RunScenario()
{
    var started = Now();
    UO.Wait(100);
    var found = UO.InJournal("notice", -1, -1, started, Now());
    if (Truth(found == 0))
    {
        UO.Print("No matching message");
    }

    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.InJournal(pattern) — UO.InJournal(Any)

Parametri: pattern (Any/String)

Risultato: int / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "injournal": return new InjectionValue(InJournal(Text(0)));

UO.InJournal(pattern) — UO.InJournal(String)

Parametri: pattern (Any/String)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int InJournal(string pattern)

            => InJournalCore(pattern, -1, ignoreCase: false);

UO.InJournal(pattern, maxLinesOrIgnoreCase) — UO.InJournal(String,Integer)

Parametri: pattern (String), maxLinesOrIgnoreCase (Integer)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int InJournal(string pattern, int maxLinesOrIgnoreCase)

            => InJournalCore(pattern,

                maxLinesOrIgnoreCase == -1 ? -1 : Math.Max(0, maxLinesOrIgnoreCase),

                ignoreCase: maxLinesOrIgnoreCase == -1);

UO.InJournal(pattern, serial, color) — UO.InJournal(Any,Any,Any)

Parametri: pattern (Any), serial (Any), color (Any)

Risultato: int / Integer.

Durante la chiamata:

La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.

Codice interno di implementazione; non è uno script autonomo.

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime) — UO.InJournal(Any,Any,Any,Any)

Parametri: pattern (Any), serial (Any), color (Any), startTime (Any)

Risultato: int / Integer.

Durante la chiamata:

La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.

Codice interno di implementazione; non è uno script autonomo.

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime) — UO.InJournal(Any,Any,Any,Any,Any)

Parametri: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any)

Risultato: int / Integer.

Durante la chiamata:

La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.

Codice interno di implementazione; non è uno script autonomo.

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly) — UO.InJournal(Any,Any,Any,Any,Any,Any)

Parametri: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any)

Risultato: int / Integer.

Durante la chiamata:

La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.

Codice interno di implementazione; non è uno script autonomo.

values => new InjectionValue(CompactInJournal(values))

UO.InJournal(pattern, serial, color, startTime, endTime, newestOnly, caseSensitive) — UO.InJournal(Any,Any,Any,Any,Any,Any,Any)

Parametri: pattern (Any), serial (Any), color (Any), startTime (Any), endTime (Any), newestOnly (Any), caseSensitive (Any)

Risultato: int / Integer.

Durante la chiamata:

La chiamata esegue il delegate del gestore memorizzato. Il metodo di registrazione lo crea durante la costruzione dell’API.

Codice interno di implementazione; non è uno script autonomo.

values => new InjectionValue(CompactInJournal(values))

UO.InJournalBetweenTimes

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

Firme C#

int UO.InJournalBetweenTimes(object? pattern, object? startTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime);
int UO.InJournalBetweenTimes(object? pattern, object? startTime, object? endTime, object? limit);

Cerca una stringa tra due timestamp di esecuzione e memorizza la voce corrispondente più recente.

Parametri

  • pattern — La sottostringa cercata o diverse alternative tramite |, ad esempio successo|non riuscita. Gli spazi ai bordi di ciascuna alternativa vengono rimossi, le alternative vuote vengono saltate. Questo è testo semplice, non un'espressione regolare. Utilizza un modello non vuoto.
  • startTime — Etichetta obbligatoria Now(): int millisecondi dall'inizio del runtime. 0 - inizio dell'esecuzione. Questa non è l'età del record o la data frazionaria LineTime.
  • endTime - Etichetta finale opzionale Now(). Se omesso o non positivo, viene utilizzata l'ora corrente. I confini positivi possono essere trasmessi in ordine inverso; il confine futuro è limitato all'ora corrente.
  • limit - Quarto argomento opzionale: -1 - nessun limite e senza distinzione tra maiuscole e minuscole; numero positivo: numero massimo di righe nell'intervallo, con distinzione tra maiuscole e minuscole; 0 e valori negativi tranne -1 - non controllano le stringhe.

Valore restituito

int: 0 – non esiste una linea adatta; un numero positivo è la posizione della voce corrispondente più recente, contando dalla fine dell'intero registro, iniziando con 1. Questo non è il numero di corrispondenze o il numero di alternative al modello. Per l'indice zero utilizzare LineIndex/GetFoundedTextIndex, per il numero di corrispondenze utilizzare LineCount, per il numero alternativo utilizzare GetFoundedTextID. Nuovi messaggi successivi potrebbero modificare l'indice, ma i campi salvati del record selezionato rimangono disponibili.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Nei moduli con due o tre argomenti, viene fatta distinzione tra maiuscole e minuscole. I confini sono inclusi. Il calcolo dell'intervallo non mette in pausa lo script.
  • Qui, passa intere etichette a Now(). LineTime restituisce un'altra unità. Directory primaria: .

Now() fornisce l'host dell'esecuzione corrente: si tratta di un numero intero di millisecondi dello stesso orologio nativo utilizzato dal log. Non sostituirlo con Environment.TickCount, ora Unix o il tuo cronometro: l'origine sarà diversa. In un normale programma .cs/.csproj, chiama context.Now() sul CSharpScriptGlobals passato.

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.InJournalBetweenTimes("You see", 0, Now());
UO.Print("InJournalBetweenTimes: " + Convert.ToString(result));

1. Controlla i messaggi dopo l'azione: script diretto

Parametri e flusso di esecuzione:

  • avviato viene salvato fino al UseSkill. endTime omesso - fino all'ora corrente; hidden è un esempio di testo lato server.
  • Si tiene conto del caso. Il messaggio non dimostra lo stato attuale; UO.Hidden() legge lo stato del personaggio.
var started = Now();
UO.UseSkill("Hiding");
UO.Wait(500);
if (Truth(UO.InJournalBetweenTimes("hidden", started) > 0))
{
    UO.Print(UO.GetFoundedText());
}

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

2. Intervallo fisso dall'inizio - funzione script

Parametri e flusso di esecuzione:

  • startTime=0 — inizio dell'esecuzione; terminato: etichetta finale salvata in millisecondi.
  • I nuovi messaggi dopo la fine non sono inclusi. Anche i vecchi record prima del runtime sono fuori dall'intervallo.
return  RunScenario();
 object? RunScenario()
{
    var ended = Now();
    var found = UO.InJournalBetweenTimes("notice", 0, ended);
    UO.Print("Search result: " + Convert.ToString(found));
    return null;
}

3. Alternative all'intervallo e senza distinzione tra maiuscole e minuscole - Classe di script

Parametri e flusso di esecuzione:

  • L'ultimo -1 rimuove il limite di linea e disabilita maiuscole e minuscole. Il terzo argomento è l'etichetta finale, non il ritardo.
  • Risultato ID: 0 per successo, 1 per fallito. È richiesto il controllo trovato > 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()
    {
        var started = Now();
        UO.Wait(350);
        var found = UO.InJournalBetweenTimes("success|failed", started, Now(), -1);
        if (Truth(found > 0))
        {
            UO.Print(Convert.ToString(UO.GetFoundedTextID()));
        }

        return null;
    }

    bool Truth(object? value) => value is bool flag ? flag : value is string text ? !string.IsNullOrEmpty(text) : value != null && Convert.ToDouble(value) != 0;
    private int Now() => global::ClassicUO.CSharp.CSharpScriptContext.Current.Now();
}

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.InJournalBetweenTimes(pattern, startTime) — UO.InJournalBetweenTimes(Any,Any)

Parametri: pattern (Any/String), startTime (Any/Integer)

Risultato: int / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime) — UO.InJournalBetweenTimes(String,Integer)

Parametri: pattern (Any/String), startTime (Any/Integer)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int InJournalBetweenTimes(string pattern, int startTime)

            => InJournalBetweenTimesCore(pattern, startTime, CurrentJournalTime(), -1, ignoreCase: false);

UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(Any,Any,Any)

Parametri: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)

Risultato: int / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime, endTime) — UO.InJournalBetweenTimes(String,Integer,Integer)

Parametri: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int InJournalBetweenTimes(string pattern, int startTime, int endTime)

            => InJournalBetweenTimesCore(pattern, startTime, endTime, -1, ignoreCase: false);

UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(Any,Any,Any,Any)

Parametri: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)

Risultato: int / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "injournalbetweentimes":

                    if (arguments.Length > 3)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2), Arg(3)));

                    if (arguments.Length > 2)

                        return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1), Arg(2)));

                    return new InjectionValue(InJournalBetweenTimes(Text(0), Arg(1)));

UO.InJournalBetweenTimes(pattern, startTime, endTime, limit) — UO.InJournalBetweenTimes(String,Integer,Integer,Integer)

Parametri: pattern (Any/String), startTime (Any/Integer), endTime (Any/Integer), limit (Any/Integer)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int InJournalBetweenTimes(string pattern, int startTime, int endTime, int limit)

            => InJournalBetweenTimesCore(pattern, startTime, endTime,

                limit == -1 ? -1 : Math.Max(0, limit), ignoreCase: limit == -1);

UO.Journal

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

Firme C#

string UO.Journal(object? index);

Legge il testo di una riga all'indice corrente e seleziona quella voce per GetFoundedText/Line*.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string — testo della riga o una riga vuota se l'indice non è corretto/il giornale è vuoto. Una riga esistente può anche avere testo vuoto: dopo la lettura, LineIndex >= 0 conferma che la voce è stata selezionata. Non è il numero di righe.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Reset a lettura diretta ID alternative; GetFoundedTextID/FoundedParamId è seguito da 0. Journal stesso non ricalcola LineCount.
  • https://forum.yoko.com.ua/viewtopic.php?p=27633 ; .

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

1. L'ultima riga e il suo autore sono una sceneggiatura diretta

Parametri e flusso di esecuzione:

  • 0 è la linea più recente. Innanzitutto vengono letti il ​​testo e l'autore, quindi viene visualizzato il risultato.
  • Print può aggiungere un messaggio; il testo/autore salvato si riferisce alla voce precedentemente selezionata.
var text = UO.Journal(0);
var author = UO.LineName();
UO.Print(author + ": " + text);

2. La riga precedente, se esiste, è una funzione di script

Parametri e flusso di esecuzione:

  • 1 è la voce precedente, HighJournal è l'indice massimo disponibile.
  • Il registro potrebbe cambiare tra una chiamata e l'altra. Per i dati di una riga già trovata, utilizzare GetFoundedText.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var text = UO.Journal(1);
        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. Distinguere il testo vuoto da quello senza stringa: classe di script

Parametri e flusso di esecuzione:

  • LineIndex=-1 significa che la voce selezionata è mancante/eliminata. Len(testo)=0 di per sé non significa questo.
  • Memorizzare il risultato del test finché l'output diagnostico non viene aggiunto al registro.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var text = UO.Journal(0);
        var index = UO.LineIndex();
        if (Truth(index < 0))
        {
            UO.Print("No record");
        }
        else
        {
            UO.Print("Text length: " + Convert.ToString(Len(text)));
        }

        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;
}

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.Journal(index) — UO.Journal(Any)

Parametri: index (Any/Integer)

Risultato: string / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "journal": return new InjectionValue(GetJournalText(Arg(0)));

UO.Journal(index) — UO.Journal(Integer)

Parametri: index (Any/Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string GetJournalText(int index)

        {

            SelectJournalEntry(ReadJournalSnapshot(index));

            return selectedJournalEntry?.Text ?? string.Empty;

        }

UO.JournalColor

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

Firme C#

string UO.JournalColor(object? index);

Legge il campo hue della riga all'indice corrente senza modificare la voce selezionata.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string - UO hue come 0x0044; se l'indice 0x0000 non è corretto. Questo non è RGB.

Comportamento

  • Ogni chiamata legge la posizione corrente. Per testo e campi coerenti dello stesso record, prima Journal(index), quindi GetFoundedText/Line*. I valori nulli possono essere dati reali.

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

1. Nuovo campo record: script diretto

Parametri e flusso di esecuzione:

  • 0 è l'indice della nuova riga. Viene verificata la presenza di un buffer.
  • string - UO hue come 0x0044; se l'indice 0x0000 non è corretto. Questo non è RGB.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalColor(0);
    UO.Print(Convert.ToString(value));
}

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

2. Campo record precedente - Funzione script

Parametri e flusso di esecuzione:

  • 1 è la riga precedente, non serial=1.
  • La voce GetFoundedText/Line* selezionata dalla ricerca non viene modificata.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalColor(1);
        UO.Print(Convert.ToString(value));
    }

    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 valore prima dell'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • value copia il campo al momento della chiamata. L'attesa non aggiorna la variabile.
  • Per leggere nuovamente la riga corrente 0, richiamare nuovamente il comando; questa potrebbe già essere un'altra voce.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = UO.JournalColor(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(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.JournalColor(index) — UO.JournalColor(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string JournalColor(int index) => bridge.JournalColor(index);

UO.JournalSerial

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

Firme C#

string UO.JournalSerial(object? index);

Legge il campo serial della riga all'indice corrente senza modificare la voce selezionata.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

string - serial dell'autore come 0x00001234; se l'indice 0x00000000 non è corretto.

Comportamento

  • Ogni chiamata legge la posizione corrente. Per testo e campi coerenti dello stesso record, prima Journal(index), quindi GetFoundedText/Line*. I valori nulli possono essere dati reali.

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

1. Nuovo campo record: script diretto

Parametri e flusso di esecuzione:

  • 0 è l'indice della nuova riga. Viene verificata la presenza di un buffer.
  • string - serial dell'autore come 0x00001234; se l'indice 0x00000000 non è corretto.
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalSerial(0);
    UO.Print(Convert.ToString(value));
}

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

2. Campo record precedente - Funzione script

Parametri e flusso di esecuzione:

  • 1 è la riga precedente, non serial=1.
  • La voce GetFoundedText/Line* selezionata dalla ricerca non viene modificata.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalSerial(1);
        UO.Print(Convert.ToString(value));
    }

    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 valore prima dell'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • value copia il campo al momento della chiamata. L'attesa non aggiorna la variabile.
  • Per leggere nuovamente la riga corrente 0, richiamare nuovamente il comando; questa potrebbe già essere un'altra voce.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = UO.JournalSerial(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(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.JournalSerial(index) — UO.JournalSerial(Integer)

Parametri: index (Integer)

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string JournalSerial(int index) => bridge.JournalSerial(index);

UO.JournalTimer

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

Firme C#

int UO.JournalTimer(object? index);

Legge il campo timestamp di una riga all'indice corrente senza modificare la voce selezionata.

Parametri

  • index - Obbligatorio int - indice corrente: 0 indica la riga più recente, 1 - quella precedente. Gli indici vengono spostati quando arrivano i messaggi. Questo non è un serial, non una variante ID del modello e non un risultato positivo di InJournal.

Valore restituito

int — etichetta discografica in millisecondi dall'inizio del runtime, compatibile con Now(). 0 per la registrazione prima dell'esecuzione; -1 per indice/ora non validi. Questa non è l'età del record o i decimi di secondo UO.Timer().

Comportamento

  • Ogni chiamata legge la posizione corrente. Per testo e campi coerenti dello stesso record, prima Journal(index), quindi GetFoundedText/Line*. I valori nulli possono essere dati reali.

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

1. Nuovo campo record: script diretto

Parametri e flusso di esecuzione:

  • 0 è l'indice della nuova riga. Viene verificata la presenza di un buffer.
  • int — etichetta discografica in millisecondi dall'inizio del runtime, compatibile con Now(). 0 per la registrazione prima dell'esecuzione; -1 per indice/ora non validi. Questa non è l'età del record o i decimi di secondo UO.Timer().
if (Truth(UO.HighJournal() >= 0))
{
    var value = UO.JournalTimer(0);
    UO.Print(Convert.ToString(value));
}

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

2. Campo record precedente - Funzione script

Parametri e flusso di esecuzione:

  • 1 è la riga precedente, non serial=1.
  • La voce GetFoundedText/Line* selezionata dalla ricerca non viene modificata.
return  RunScenario();
 object? RunScenario()
{
    if (Truth(UO.HighJournal() >= 1))
    {
        var value = UO.JournalTimer(1);
        UO.Print(Convert.ToString(value));
    }

    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 valore prima dell'azione successiva: classe di script

Parametri e flusso di esecuzione:

  • value copia il campo al momento della chiamata. L'attesa non aggiorna la variabile.
  • Per leggere nuovamente la riga corrente 0, richiamare nuovamente il comando; questa potrebbe già essere un'altra voce.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var value = UO.JournalTimer(0);
        UO.Wait(100);
        UO.Print("Saved value: " + Convert.ToString(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.JournalTimer(index) — UO.JournalTimer(Integer)

Parametri: index (Integer)

Risultato: int / Integer.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public int JournalTimer(int index) => JournalEntryTime(index);

UO.LastJournalMessage

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

Firme C#

dynamic UO.LastJournalMessage();

Legge il testo della voce di registro locale più recente.

Parametri

Non ci sono parametri.

Valore restituito

string — testo della nuova voce; stringa vuota se non è presente alcun registro o la voce stessa contiene testo vuoto.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Aggiorna la selezione e i campi della Linea* allo stesso modo di Journal(0).

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

1. Leggi e salva testo - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti; text copia l'ultima riga corrente.
  • La stampa dopo la lettura potrebbe diventare essa stessa l'ultimo messaggio.
var text = UO.LastJournalMessage();
UO.Print(text);

2. Controlla la sottostringa - funzione dello script

Parametri e flusso di esecuzione:

  • FindText restituisce la posizione da 1 o 0. Viene controllata solo l'ultima riga.
  • Per cercare nell'intero registro, utilizzare InJournal.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.LastJournalMessage();
    if (Truth(FindText(text, "bank") > 0))
    {
        UO.Print("Text contains bank");
    }

    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. Confronta con il risultato della ricerca: classe di script

Parametri e flusso di esecuzione:

  • la corrispondenza viene salvata fino alla lettura dell'ultima, quindi non cambia con una nuova selezione.
  • L'ultimo messaggio potrebbe essere diverso da quello trovato; trovato > 0 significa ricerca riuscita.
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 found = UO.InJournal("needle");
        var matched = UO.GetFoundedText();
        var latest = UO.LastJournalMessage();
        UO.Print("Found: " + matched);
        UO.Print("Latest: " + latest);
        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.LastJournalMessage() — UO.LastJournalMessage()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "lastjournalmessage": return new InjectionValue(GetJournalText(0));

UO.LastMessage

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

Firme C#

string UO.LastMessage();

Legge il testo della voce di registro locale più recente.

Parametri

Non ci sono parametri.

Valore restituito

string — testo della nuova voce; stringa vuota se non è presente alcun registro o la voce stessa contiene testo vuoto.

Comportamento

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

1. Leggi e salva testo - script diretto

Parametri e flusso di esecuzione:

  • Non ci sono argomenti; text copia l'ultima riga corrente.
  • La stampa dopo la lettura potrebbe diventare essa stessa l'ultimo messaggio.
var text = UO.LastMessage();
UO.Print(text);

2. Controlla la sottostringa - funzione dello script

Parametri e flusso di esecuzione:

  • FindText restituisce la posizione da 1 o 0. Viene controllata solo l'ultima riga.
  • Per cercare nell'intero registro, utilizzare InJournal.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.LastMessage();
    if (Truth(FindText(text, "bank") > 0))
    {
        UO.Print("Text contains bank");
    }

    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. Confronta con il risultato della ricerca: classe di script

Parametri e flusso di esecuzione:

  • la corrispondenza viene salvata fino alla lettura dell'ultima, quindi non cambia con una nuova selezione.
  • L'ultimo messaggio potrebbe essere diverso da quello trovato; trovato > 0 significa ricerca riuscita.
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 found = UO.InJournal("needle");
        var matched = UO.GetFoundedText();
        var latest = UO.LastMessage();
        UO.Print("Found: " + matched);
        UO.Print("Latest: " + latest);
        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.LastMessage() — UO.LastMessage()

Parametri: Nessun parametro.

Risultato: string / String.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public string LastMessage() => bridge.LastMessage();

UO.LineCount

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

Firme C#

dynamic UO.LineCount();

Legge il numero di righe corrispondenti dall'ultima ricerca.

Parametri

Non ci sono parametri.

Valore restituito

int è il numero di record corrispondenti nell'ultima area controllata. 0 se non ci sono corrispondenze; per newestOnly=true non più di 1. Questo non è il numero di righe nell'intero log, né il numero di occorrenze di una sottostringa in un messaggio, né la posizione del testo trovato.

Comportamento

  • La ricerca prende in considerazione limite, tempo, serial, hue e un argomento SetJournalLine. Diretto Journal/GetJournal non ricalcola il contatore. La pulizia lo ripristina. Il contatore appartiene al bridge dello script corrente.

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

1. Tutte le corrispondenze sono script diretti

Parametri e flusso di esecuzione:

  • Cerca senza limiti e registrati. Vengono contate le linee, non il numero di minerali all'interno della linea.
  • risultato — posizione più 1; fiammiferi: una quantità separata.
var result = UO.InJournal("ore", -1);
var matches = UO.LineCount();
UO.Print(Convert.ToString(matches));

2. Le corrispondenze tra le ultime dieci righe sono una funzione dello script

Parametri e flusso di esecuzione:

  • 10 — linee massime da controllare; viene preso in considerazione il caso.
  • Il conteggio può variare da 0 a 10, anche se ci sono molte più partite più vecchie.
return  RunScenario();
 object? RunScenario()
{
    var result = UO.InJournal("ore", 10);
    UO.Print(Convert.ToString(UO.LineCount()));
    return null;
}

3. Ricerca di fine anticipata - Lezione di script

Parametri e flusso di esecuzione:

  • serial/color=-1, time=0/0 — i filtri sono disabilitati. true interrompe la ricerca alla prima riga corrispondente.
  • checkedMatches è uguale a 0 o 1 e non indica il numero totale di corrispondenze nell'intero registro.
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 result = UO.InJournal("ore", -1, -1, 0, 0, true, false);
        var checkedMatches = UO.LineCount();
        UO.Print(Convert.ToString(checkedMatches));
        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.LineCount() — UO.LineCount()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linecount": return new InjectionValue(bridge.JournalMatchCount());

UO.LineID

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

Firme C#

dynamic UO.LineID();

Restituisce il numero serial dell'autore della registrazione a giornale selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int - 32-bit serial dell'autore. Nessuna scelta - 0. Il bit più significativo può risultare in un numero negativo a causa del segno int; GetFoundedTextSerial preserva la rappresentazione esadecimale completa. Questo non è graphic/type.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int - 32-bit serial dell'autore. Nessuna scelta - 0. Il bit più significativo può risultare in un numero negativo a causa del segno int; GetFoundedTextSerial preserva la rappresentazione esadecimale completa. Questo non è graphic/type.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineID();
    UO.Print("Speaker serial: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineID();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineID();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineID() — UO.LineID()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "lineid": return new InjectionValue(selectedJournalEntry?.Serial ?? 0);

UO.LineIndex

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

Firme C#

dynamic UO.LineIndex();

Restituisce l'indice corrente della voce selezionata, se è ancora memorizzato nel registro.

Parametri

Non ci sono parametri.

Valore restituito

int è l'indice corrente da 0 (riga più recente). -1 significa che non c'è scelta o che la voce selezionata è già stata cancellata/precedente. Questo non è il risultato di InJournal: non è necessario sottrarre 1 dall'indice.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • L'indice viene ricalcolato in base all'identità del record. Nuovi messaggi lo aumentano. Il vecchio indice memorizzato non è costante ID; per il testo, GetFoundedText è più sicuro.

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

1. Indice del record trovato - scrittura diretta

Parametri e flusso di esecuzione:

  • Getter senza argomenti legge la selezione dello script corrente. 0 — nuova riga, -1 — nessuna riga nel buffer corrente.
  • Il testo viene preso dalla voce salvata in modo che nuovi messaggi non lo sostituiscano.
if (Truth(UO.InJournal("notice") > 0))
{
    var index = UO.LineIndex();
    var text = UO.GetFoundedText();
    UO.Print(Convert.ToString(index) + ": " + text);
}

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

2. Controlla lettura successiva - Funzione script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona l'ultima voce; il controllo esclude un log vuoto.
  • Per una voce valida è consentito il testo vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    if (Truth(UO.LineIndex() >= 0))
    {
        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. Aggiorna indice dopo l'attesa - Classe di script

Parametri e flusso di esecuzione:

  • L'attesa 100 ms consente l'arrivo di nuovi messaggi. dopo trova di nuovo la stessa voce.
  • dopo può aumentare o diventare -1 quando viene rimosso; GetFoundedText contiene ancora il testo salvato.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("needle") > 0))
        {
            var before = UO.LineIndex();
            UO.Wait(100);
            var after = UO.LineIndex();
            UO.Print(Convert.ToString(before) + " -> " + Convert.ToString(after));
        }

        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.LineIndex() — UO.LineIndex()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "lineindex": return new InjectionValue(GetFoundedTextIndex());

UO.LineMsgType

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

Firme C#

dynamic UO.LineMsgType();

Restituisce il tipo di messaggio di rete della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int - codice MessageType: 0 Normale, 1 Sistema, 2 Emote, 3 Limit3Spell, 6 Etichetta, 7 Focus, 8 Sussurro, 9 Urlo, 10 Incantesimo, 13 Gilda, 14 Alleanza, 15 Comando, 16 GmChat, 192 Codificato, 255 Festa. Nessuna scelta 0. Questi sono i codici Classici UO; non sostituirli con numeri diversi da esempi di terze parti.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int - codice MessageType: 0 Normale, 1 Sistema, 2 Emote, 3 Limit3Spell, 6 Etichetta, 7 Focus, 8 Sussurro, 9 Urlo, 10 Incantesimo, 13 Gilda, 14 Alleanza, 15 Comando, 16 GmChat, 192 Codificato, 255 Festa. Nessuna scelta 0. Questi sono i codici Classici UO; non sostituirli con numeri diversi da esempi di terze parti.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineMsgType();
    UO.Print("Message type: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineMsgType();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineMsgType();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineMsgType() — UO.LineMsgType()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linemsgtype": return new InjectionValue(selectedJournalEntry?.MessageType ?? 0);

UO.LineName

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

Firme C#

dynamic UO.LineName();

Restituisce il nome dell'autore della voce di diario selezionata.

Parametri

Non ci sono parametri.

Valore restituito

string — nome dell'autore della voce selezionata, ad esempio nome del sistema o del personaggio; stringa vuota senza selezione/senza nome. Un nome non garantisce l'unicità di un personaggio.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • string — nome dell'autore della voce selezionata, ad esempio nome del sistema o del personaggio; stringa vuota senza selezione/senza nome. Un nome non garantisce l'unicità di un personaggio.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineName();
    UO.Print("Speaker: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineName();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineName();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineName() — UO.LineName()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linename": return new InjectionValue(selectedJournalEntry?.Name ?? string.Empty);

UO.LineTextColor

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

Firme C#

dynamic UO.LineTextColor();

Restituisce il colore numerico della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int - UO hue della voce selezionata (0…65535); nessuna scelta 0. Lo zero è accettabile come colore. Questo non è RGB o ID dell'autore.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int - UO hue della voce selezionata (0…65535); nessuna scelta 0. Lo zero è accettabile come colore. Questo non è RGB o ID dell'autore.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTextColor();
    UO.Print("Hue: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTextColor();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTextColor();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineTextColor() — UO.LineTextColor()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linetextcolor":

                    return new InjectionValue(selectedJournalEntry?.Color ?? 0);

UO.LineTextFont

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

Firme C#

dynamic UO.LineTextFont();

Restituisce il carattere della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int — UO font ID del record selezionato (0…255 nel client); nessuna scelta 0. Questo è il carattere del gioco ID, non la dimensione del carattere IDE.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int — UO font ID del record selezionato (0…255 nel client); nessuna scelta 0. Questo è il carattere del gioco ID, non la dimensione del carattere IDE.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTextFont();
    UO.Print("Font ID: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTextFont();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTextFont();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineTextFont() — UO.LineTextFont()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linetextfont": return new InjectionValue(selectedJournalEntry?.Font ?? 0);

UO.LineTime

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

Firme C#

dynamic UO.LineTime();

Restituisce il timestamp del calendario della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

double — OLE Automazione Date, numero di giorni da 30.12.1899, la parte frazionaria specifica l'ora del giorno. Nessuna scelta 0. Non sono i millisecondi Now() o l'intero timestamp Unix. La differenza di due di questi segni viene moltiplicata per 86400000 per millisecondi.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • double — OLE Automazione Date, numero di giorni da 30.12.1899, la parte frazionaria specifica l'ora del giorno. Nessuna scelta 0. Non sono i millisecondi Now() o l'intero timestamp Unix. La differenza di due di questi segni viene moltiplicata per 86400000 per millisecondi.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineTime();
    UO.Print("OLE date: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineTime();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineTime();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineTime() — UO.LineTime()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linetime": return new InjectionValue(selectedJournalEntry?.Timestamp ?? 0d);

UO.LineType

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

Firme C#

dynamic UO.LineType();

Restituisce la categoria di testo della voce di registro selezionata.

Parametri

Non ci sono parametri.

Valore restituito

int - categoria TextType del cliente: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. Nessuna scelta 0. Questa è una categoria di visualizzazione, non serial, non graphic e non MessageType.

Comportamento

  • Cerca e Journal/GetJournal/LastJournalMessage salva il testo e i campi di una singola voce nello script corrente. I nuovi messaggi non sostituiscono questi campi. Se un record viene eliminato da un giornale limitato, i campi conservati rimangono, ma LineIndex/GetFoundedTextIndex restituiscono -1. La successiva ricerca o lettura seleziona un'altra voce; una ricerca non riuscita, un indice non valido e la cancellazione tramite questo script reimpostano la selezione.
  • Getter non esegue una ricerca e non seleziona la riga più recente. I valori nulli/vuoti possono essere dati validi; considerare il risultato della ricerca.

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

1. Campo di lettura dopo la ricerca - script diretto

Parametri e flusso di esecuzione:

  • avviso: un esempio del testo cercato. Getter viene chiamato senza parametri solo dopo una ricerca riuscita.
  • int - categoria TextType del cliente: 0 CLIENT, 1 SYSTEM, 2 OBJECT, 3 GUILD_ALLY. Nessuna scelta 0. Questa è una categoria di visualizzazione, non serial, non graphic e non MessageType.
if (Truth(UO.InJournal("notice") > 0))
{
    var value = UO.LineType();
    UO.Print("Text category: " + Convert.ToString(value));
}

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

2. Campo di lettura di una riga specifica - funzione dello script

Parametri e flusso di esecuzione:

  • Journal(0) seleziona una nuova voce. indice e valore vengono letti prima di Print.
  • Il controllo dell'indice permette di distinguere tra l'assenza di un record e un campo valido nullo o vuoto.
return  RunScenario();
 object? RunScenario()
{
    var text = UO.Journal(0);
    var index = UO.LineIndex();
    var value = UO.LineType();
    if (Truth(index >= 0))
    {
        UO.Print(Convert.ToString(value));
    }

    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 campo prima della ricerca successiva - Classe script

Parametri e flusso di esecuzione:

  • La prima ricerca seleziona il successo, la seconda sostituisce o reimposta la selezione. salvato contiene già una copia del campo obbligatorio.
  • Il var salvato non cambia con una nuova ricerca, cancellazione o ricezione di messaggi.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        if (Truth(UO.InJournal("success") > 0))
        {
            var saved = UO.LineType();
            var nextMatch = UO.InJournal("failed");
            UO.Print("Saved: " + Convert.ToString(saved));
        }

        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.LineType() — UO.LineType()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "linetype": return new InjectionValue(selectedJournalEntry?.TextType ?? 0);

UO.LowJournal

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

Firme C#

dynamic UO.LowJournal();

Restituisce l'indice di log minimo disponibile.

Parametri

Non ci sono parametri.

Valore restituito

int: -1 when the magazine is empty; altrimenti 0 è l'indice del record disponibile più recente. Journal/GetJournal utilizza indici zero dal nuovo record al vecchio; un risultato positivo InJournal utilizza un conteggio singolo diverso.

Comportamento

  • Nuovi messaggi e pulizia cambiano i confini. L'ordine qui è Journal(0) dalla nuova voce alla vecchia voce.

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

1. Controlla le voci: script diretto

Parametri e flusso di esecuzione:

  • Un limite negativo indica un buffer vuoto.
  • Se il buffer non è vuoto, Journal(0) legge una nuova voce.
if (Truth(UO.LowJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.Print(text);
}

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

2. Leggi la riga al confine - funzione dello script

Parametri e flusso di esecuzione:

  • l'indice viene passato direttamente al Journal, senza sottrarre uno.
  • L'indice potrebbe spostarsi con i messaggi in arrivo; Il buffer non viene congelato tra le chiamate.
return  RunScenario();
 object? RunScenario()
{
    var index = UO.LowJournal();
    if (Truth(index >= 0))
    {
        var text = UO.Journal(index);
        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. Leggi l'intervallo di log corrente - Classe di script

Parametri e flusso di esecuzione:

  • LowJournal e HighJournal formano i confini degli indici. Non è il numero di righe; il contenuto del registro può cambiare tra una chiamata e l'altra.
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()
    {
        int first = UO.LowJournal();
        int last = UO.HighJournal();
        if (first > last)
            return null;
        for (int index = first; index <= last; index++)
            UO.Print($"{index}: {UO.Journal(index)}");
        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.LowJournal() — UO.LowJournal()

Parametri: Nessun parametro.

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "lowjournal": return new InjectionValue(bridge.JournalEntryCount() == 0 ? -1 : 0);

UO.SetJournalLine

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

Firme C#

void UO.SetJournalLine(object? index);
void UO.SetJournalLine(object? stringIndex, object? text);

Modifica il testo di una riga; una forma separata con un argomento specifica il limite inferiore della ricerca.

Parametri

  • index — Per modulo (indice,testo): indice corrente da 0, dove 0 è una nuova riga. Per modulo (indice): numero di vecchie righe saltate dall'inizio del buffer interno, non indice Journal; 0 rimuove la restrizione. Il limite negativo di un argomento è limitato a 0.
  • stringIndex — Il nome dell'indice nella registrazione compatibile a due argomenti: l'indice corrente Journal da 0.
  • text — Nuovo testo di una riga esistente, inclusa una riga vuota. Obbligatorio nel modulo di sostituzione del testo.

Valore restituito

void: nessun valore restituito. Se l'indice non è valido, la forma a due argomenti non cambia nulla. La forma con un argomento non modifica il testo.

Comportamento

  • La sostituzione è locale, non viene inviato nulla al server. I campi autore/ora vengono conservati. Un'istantanea del testo già selezionata rimane la stessa finché non viene ripetuta Journal o la ricerca.
  • Il limite a un argomento è un'estensione deprecata: il numero di vecchie righe nel buffer corrente; quando i record vengono estromessi/eliminati, il loro significato cambia. Per un confine affidabile tra le azioni, usa InJournalBetweenTimes con Now().

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

1. Segna l'ultima riga: sceneggiatura diretta

Parametri e flusso di esecuzione:

  • 0 — nuova riga; il secondo argomento è il suo nuovo testo completo.
  • Ciò modifica il buffer locale. Tra la lettura e la scrittura possono arrivare nuovi messaggi; l'indice non è costante ID.
if (Truth(UO.HighJournal() >= 0))
{
    var text = UO.Journal(0);
    UO.SetJournalLine(0, "[read] " + text);
}

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

2. Sostituisci il testo con una stringa vuota - funzione script

Parametri e flusso di esecuzione:

  • Una riga vuota sostituisce il testo, ma non rimuove la voce o il suo autore.
  • L'indice non valido viene ignorato. esiste può essere true anche con text="".
return  RunScenario();
 object? RunScenario()
{
    UO.SetJournalLine(0, "");
    var text = UO.Journal(0);
    var exists = UO.LineIndex() >= 0;
    UO.Print(Convert.ToString(exists));
    return null;
}

3. Rimuovi restrizione di ricerca - Classe script

Parametri e flusso di esecuzione:

  • Un argomento 0 significa non saltare le vecchie righe; questa è un'altra forma di comando.
  • Ricerca senza restrizioni e senza distinzione tra maiuscole e minuscole. Nessun testo viene sostituito da questo modulo.
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.SetJournalLine(0);
        var found = UO.InJournal("notice", -1);
        UO.Print(Convert.ToString(found));
        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.SetJournalLine(index) — UO.SetJournalLine(Integer)

Parametri: index (Integer)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void SetJournalLine(int index) => bridge.SetJournalLine(index);

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Any,Any)

Parametri: stringIndex (Any/Integer), text (Any/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "setjournalline":

                    if (arguments.Length > 1) bridge.SetJournalLine(Arg(0), Text(1));

                    else bridge.SetJournalLine(Arg(0));

                    return InjectionValue.Unit;

UO.SetJournalLine(stringIndex, text) — UO.SetJournalLine(Integer,String)

Parametri: stringIndex (Any/Integer), text (Any/String)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

public void SetJournalLine(int index, string text) => bridge.SetJournalLine(index, text);

Clone this wiki locally