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

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

Libri

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

Lettura e modifica di libri di gioco: titolo, pagine e testo. Consultare la scheda per i numeri di pagina validi e l'effetto di registrazione.

Sezioni

Argomento Comandi e spiegazioni
Read Page UO.BookGetPageText
Set Page UO.BookSetPageText
Set Header UO.BookSetHeader
Set Text UO.BookSetText
Clear Text UO.BookClearText

Tutti i comandi del tema

Pagine del libro

UO.BookGetPageText · UO.BookSetPageText · UO.BookSetHeader · UO.BookSetText · UO.BookClearText

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

Parametri, risultato e tutti gli scenari

var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
    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.BookSetPageText

Parametri, risultato e tutti gli scenari

UO.BookSetPageText(2, "Camp A");

Riferimento completo dei comandi


UO.BookClearText

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

Firme C#

void UO.BookClearText();

Rimuove il testo da tutte le pagine di un libro modificabile aperto, preservando il titolo e l'autore.

Parametri

Non ci sono parametri.

Valore restituito

void - nessun valore. Questa è una richiesta di scrittura, non true/false o una conferma del server. Il server potrebbe vietare la modifica.

Comportamento

  • Innanzitutto, apri il libro desiderato utilizzando un'azione di gioco. I comandi utilizzano l'ultimo libro aperto: ID il libro non è accettato. Se hai più libri, assicurati di selezionare quello giusto. Get legge le pagine già caricate e non richiede la pagina mancante.
  • Nel manager i contenuti del libro vengono memorizzati nella sessione e sono disponibili senza grafica. Chiudendo la finestra di gioco si salvano il libro e la bozza, riaprendola si ripristinano. La chiusura stessa di una cartella di lavoro la rimuove dalle cartelle di lavoro aperte; l'interruzione della connessione reimposta i libri del server.
  • Le modifiche sono disponibili solo per il libro che stai modificando. La pagina non valida o il testo troppo lungo vengono rifiutati. BookSetText controlla tutte le pagine prima del primo invio: una pagina errata in ritardo non provoca una scrittura parziale.
  • BookClearText invia testo vuoto per ogni pagina. Ciò distrugge il testo precedente del libro; utilizzare sulla copia modificata. Il titolo e l'autore rimangono gli stessi.

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

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
UO.BookClearText();

2. Scenario pratico - Funzione scenario

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
return  RunScenario();
 object? RunScenario()
{
    UO.BookClearText();
    UO.BookSetHeader("New expedition", "Alice");
    UO.BookSetPageText(1, "Bring bandages");
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
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()
    {
        ResetNotebook("Supply list", "Alice", "Bandages" + Chr(10) + "Food");
        return null;
    }

    void ResetNotebook(dynamic title, dynamic author, dynamic firstPage)
    {
        UO.BookClearText();
        UO.BookSetHeader(title, author);
        UO.BookSetPageText(1, firstPage);
    }

    string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}

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

Parametri: Nessun parametro.

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "bookcleartext":

                    state.BookPages.Clear();

                    bridge.BookClearText();

                    return InjectionValue.Unit;

UO.BookGetPageText

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

Firme C#

dynamic UO.BookGetPageText(object? page);

Legge il testo di una pagina dell'ultimo libro aperto.

Parametri

  • page — Numero di pagina da 1, non serial libro. Il limite superiore è il numero di pagine segnalate dal server.

Valore restituito

string — righe di pagina separate da un carattere di nuova riga, senza righe vuote alla fine. Viene restituita una stringa vuota anche se la cartella di lavoro non è aperta, la pagina non è stata ancora ricevuta o il numero non è corretto. Ciò non indica che la pagina esiste o è scrivibile.

Comportamento

  • Innanzitutto, apri il libro desiderato utilizzando un'azione di gioco. I comandi utilizzano l'ultimo libro aperto: ID il libro non è accettato. Se hai più libri, assicurati di selezionare quello giusto. Get legge le pagine già caricate e non richiede la pagina mancante.
  • Nel manager i contenuti del libro vengono memorizzati nella sessione e sono disponibili senza grafica. Chiudendo la finestra di gioco si salvano il libro e la bozza, riaprendola si ripristinano. La chiusura stessa di una cartella di lavoro la rimuove dalle cartelle di lavoro aperte; l'interruzione della connessione reimposta i libri del server.
  • Le modifiche sono disponibili solo per il libro che stai modificando. La pagina non valida o il testo troppo lungo vengono rifiutati. BookSetText controlla tutte le pagine prima del primo invio: una pagina errata in ritardo non provoca una scrittura parziale.

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

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
var text = UO.BookGetPageText(1);
if (Truth(text != ""))
{
    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. Scenario pratico - Funzione scenario

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
return  RunScenario();
 object? RunScenario()
{
    var firstPage = UO.BookGetPageText(1);
    if (Truth(firstPage != ""))
    {
        UO.BookSetPageText(3, firstPage);
    }

    return null;
}

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

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
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()
    {
        ReplaceCampNote(2);
        return null;
    }

    void ReplaceCampNote(dynamic page)
    {
        var text = UO.BookGetPageText(page);
        if (Truth(text == "Camp A"))
        {
            UO.BookSetPageText(page, "Camp B");
        }
    }

    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.BookGetPageText(page) — UO.BookGetPageText(Any)

Parametri: page (Any)

Risultato: dynamic / Any.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "bookgetpagetext":

                {

                    int pageNumber = Math.Max(1, Arg(0));

                    string liveText = bridge.BookGetPageText(pageNumber);

                    if (!string.IsNullOrEmpty(liveText))

                        return new InjectionValue(liveText);

                    int page = pageNumber - 1;

                    return new InjectionValue(page < state.BookPages.Count ? state.BookPages[page] : string.Empty);

                }

UO.BookSetHeader

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

Firme C#

void UO.BookSetHeader(object? title, object? author);

Specifica il titolo e l'autore del libro modificabile aperto.

Parametri

  • title - Titolo; L'editor grafico e il comando salvano i primi caratteri 47.
  • author — Autore; I primi caratteri 29 vengono salvati.

Valore restituito

void - nessun valore. Questa è una richiesta di scrittura, non true/false o una conferma del server. Il server potrebbe vietare la modifica.

Comportamento

  • Innanzitutto, apri il libro desiderato utilizzando un'azione di gioco. I comandi utilizzano l'ultimo libro aperto: ID il libro non è accettato. Se hai più libri, assicurati di selezionare quello giusto. Get legge le pagine già caricate e non richiede la pagina mancante.
  • Nel manager i contenuti del libro vengono memorizzati nella sessione e sono disponibili senza grafica. Chiudendo la finestra di gioco si salvano il libro e la bozza, riaprendola si ripristinano. La chiusura stessa di una cartella di lavoro la rimuove dalle cartelle di lavoro aperte; l'interruzione della connessione reimposta i libri del server.
  • Le modifiche sono disponibili solo per il libro che stai modificando. La pagina non valida o il testo troppo lungo vengono rifiutati. BookSetText controlla tutte le pagine prima del primo invio: una pagina errata in ritardo non provoca una scrittura parziale.

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.BookSetHeader");
UO.BookSetHeader("Mining route", "Alice");

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
UO.BookSetHeader("Mining route", "Alice");

2. Scenario pratico - Funzione scenario

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
return  RunScenario();
 object? RunScenario()
{
    var route = "Northern mine";
    var author = "Alice";
    UO.BookSetHeader("Route: " + route, author);
    return null;
}

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
  • La funzione ausiliaria è data integralmente. Il suo true significa eseguire solo il controllo e la chiamata locale; non restituisce conferma dell'avvenuta registrazione da parte del server.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var requested = SetNotebookHeader("Supply list", "Alice");
        return null;
    }

    dynamic SetNotebookHeader(dynamic title, dynamic author)
    {
        if (Truth(Len(title) > 47) || Truth(Len(author) > 29))
        {
            return false;
        }

        UO.BookSetHeader(title, author);
        return true;
    }

    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.BookSetHeader(title, author) — UO.BookSetHeader(Any,Any)

Parametri: title (Any), author (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "booksetheader":

                    state.BookTitle = Text(0);

                    state.BookAuthor = Text(1);

                    bridge.BookSetHeader(state.BookTitle, state.BookAuthor);

                    return InjectionValue.Unit;

UO.BookSetPageText

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

Firme C#

void UO.BookSetPageText(object? page, object? text);

Sostituisce il testo di una pagina di un libro modificabile aperto.

Parametri

  • page — Numero di pagina da 1, non serial libro. Il limite superiore è il numero di pagine segnalate dal server.
  • text — Testo. Le linee sono separate da Chr(10); Chr(13) viene rimosso. Fino a 10 righe per pagina e 53 caratteri per riga. Il carattere null è vietato.

Valore restituito

void - nessun valore. Questa è una richiesta di scrittura, non true/false o una conferma del server. Il server potrebbe vietare la modifica.

Comportamento

  • Innanzitutto, apri il libro desiderato utilizzando un'azione di gioco. I comandi utilizzano l'ultimo libro aperto: ID il libro non è accettato. Se hai più libri, assicurati di selezionare quello giusto. Get legge le pagine già caricate e non richiede la pagina mancante.
  • Nel manager i contenuti del libro vengono memorizzati nella sessione e sono disponibili senza grafica. Chiudendo la finestra di gioco si salvano il libro e la bozza, riaprendola si ripristinano. La chiusura stessa di una cartella di lavoro la rimuove dalle cartelle di lavoro aperte; l'interruzione della connessione reimposta i libri del server.
  • Le modifiche sono disponibili solo per il libro che stai modificando. La pagina non valida o il testo troppo lungo vengono rifiutati. BookSetText controlla tutte le pagine prima del primo invio: una pagina errata in ritardo non provoca una scrittura parziale.

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.BookSetPageText");
UO.BookSetPageText(2, "Camp A");

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
UO.BookSetPageText(2, "Camp A");

2. Scenario pratico - Funzione scenario

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
return  RunScenario();
 object? RunScenario()
{
    UO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food");
    return null;
}

string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
  • La funzione ausiliaria è data integralmente. Il suo true significa eseguire solo il controllo e la chiamata locale; non restituisce conferma dell'avvenuta registrazione da parte del server.
return  new ScriptScenario(UO, WaitAsync, Args, Cancellation, Checkpoint).RunScenario();
class ScriptScenario
{
    private readonly global::ClassicUO.CSharp.CSharpGameApi UO;
    private readonly Func<int, Task> WaitAsync;
    private readonly string[] Args;
    private readonly CancellationToken Cancellation;
    private readonly Action Checkpoint;
    public ScriptScenario(global::ClassicUO.CSharp.CSharpGameApi api, Func<int, Task> wait, string[] args, CancellationToken cancellation, Action checkpoint)
    {
        UO = api;
        WaitAsync = wait;
        Args = args;
        Cancellation = cancellation;
        Checkpoint = checkpoint;
    }

     public object? RunScenario()
    {
        var requested = AppendNote(1, "Return before night");
        return null;
    }

    dynamic AppendNote(dynamic page, dynamic line)
    {
        if (Truth(Len(line) > 53))
        {
            return false;
        }

        var previous = UO.BookGetPageText(page);
        if (Truth(previous == ""))
        {
            UO.BookSetPageText(page, line);
            return true;
        }

        var lineCount = 1;
        for (int index = (int)(1); index <= Len(previous); index += (int)(1))
        {
            if (Truth(Mid(previous, index, 1) == Chr(10)))
            {
                lineCount = lineCount + 1;
            }
        }

        if (Truth(lineCount >= 10))
        {
            return false;
        }

        UO.BookSetPageText(page, previous + Chr(10) + line);
        return true;
    }

    string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
    int Len(object? value) => Convert.ToString(value)?.Length ?? 0;
    string Mid(object? value, int start, int length = int.MaxValue)
    {
        string text = Convert.ToString(value) ?? "";
        int offset = Math.Clamp(start - 1, 0, text.Length);
        return text.Substring(offset, Math.Min(Math.Max(0, length), text.Length - offset));
    }

    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.BookSetPageText(page, text) — UO.BookSetPageText(Any,Any)

Parametri: page (Any), text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "booksetpagetext":

                {

                    int page = Math.Max(0, Arg(0) - 1);

                    while (state.BookPages.Count <= page) state.BookPages.Add(string.Empty);

                    state.BookPages[page] = Text(1);

                    bridge.BookSetPageText(page + 1, state.BookPages[page]);

                    return InjectionValue.Unit;

                }

UO.BookSetText

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

Firme C#

void UO.BookSetText(object? text);

Scrive il testo dalla prima pagina di un libro modificabile aperto.

Parametri

  • text — Testo. Le linee sono separate da Chr(10); Chr(13) viene rimosso. Fino a 10 righe per pagina e 53 caratteri per riga. Il carattere null è vietato.

Valore restituito

void - nessun valore. Questa è una richiesta di scrittura, non true/false o una conferma del server. Il server potrebbe vietare la modifica.

Comportamento

  • Innanzitutto, apri il libro desiderato utilizzando un'azione di gioco. I comandi utilizzano l'ultimo libro aperto: ID il libro non è accettato. Se hai più libri, assicurati di selezionare quello giusto. Get legge le pagine già caricate e non richiede la pagina mancante.
  • Nel manager i contenuti del libro vengono memorizzati nella sessione e sono disponibili senza grafica. Chiudendo la finestra di gioco si salvano il libro e la bozza, riaprendola si ripristinano. La chiusura stessa di una cartella di lavoro la rimuove dalle cartelle di lavoro aperte; l'interruzione della connessione reimposta i libri del server.
  • Le modifiche sono disponibili solo per il libro che stai modificando. La pagina non valida o il testo troppo lungo vengono rifiutati. BookSetText controlla tutte le pagine prima del primo invio: una pagina errata in ritardo non provoca una scrittura parziale.
  • BookSetText: Chr(12) separa esplicitamente le pagine. Se Chr(12) non è presente, ogni riga 10 forma una pagina. Le vecchie pagine rimanenti non vengono cancellate: per sostituirle completamente chiamare prima BookClearText separatamente. Il testo vuoto sostituisce solo la prima pagina.

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.BookSetText");
UO.BookSetText("Camp A\nReturn home");

1. Applicazione diretta - sceneggiatura diretta

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
UO.BookSetText("Mining route" + Chr(10) + "Start at camp");

string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();

2. Scenario pratico - Funzione scenario

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
return  RunScenario();
 object? RunScenario()
{
    UO.BookSetText("Camp A" + Chr(12) + "Camp B" + Chr(12) + "Return home");
    return null;
}

string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();

3. Funzione di supporto completa: classe di script

Parametri e flusso di esecuzione:

  • Tutti gli esempi presuppongono che il libro richiesto sia già aperto, che le pagine richieste siano state ricevute e che il libro sia in fase di modifica per la registrazione. I numeri 1, 2 e 3 sono i numeri di pagina; assicurati che esistano. I testi/nomi sono a scopo dimostrativo.
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()
    {
        WriteRoute("Northern mine", "Bring bandages");
        return null;
    }

    void WriteRoute(dynamic destination, dynamic supplies)
    {
        var firstPage = "Destination" + Chr(10) + destination;
        var secondPage = "Supplies" + Chr(10) + supplies;
        UO.BookSetText(firstPage + Chr(12) + secondPage);
    }

    string Chr(object? value) => ((char)Convert.ToInt32(value)).ToString();
}

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

Parametri: text (Any)

Risultato: void / Unit.

Durante la chiamata:

Codice interno di implementazione; non è uno script autonomo.

case "booksettext":

                {

                    string bookText = Text(0) ?? string.Empty;

                    state.BookPages.Clear();

                    state.BookPages.AddRange(bookText.Split(new[] { '\f' }, StringSplitOptions.None));

                    bridge.BookSetText(bookText);

                    return InjectionValue.Unit;

                }
⚠️ **GitHub.com Fallback** ⚠️