Skip to content

API UO BookSetPageText ja

Codex edited this page Sep 23, 2026 · 1 revision

UO.BookSetPageText

ClassicUO / Basic IDE

Home · API · Books

開いている編集可能な本の1ページを書き換えます。

正確な構文

UO.BookSetPageText(Page:Any, Text:Any) -> Unit

パラメーター

  • Page — 1から始まるページ番号です。本のIDではありません。総ページ数はサーバーが指定します。
  • Text — 文字列。Chr(10)は改行、Chr(13)は削除されます。1ページ10行、1行53文字まで。NULは使用できません。

戻り値

Unit:戻り値なし。書き込み要求であり、TRUE/FALSEやサーバーの完了確認ではありません。サーバーは編集を拒否できます。

動作

  • 先にゲーム操作で対象の本を開いてください。最後に開いた本が対象で、ID引数はありません。複数の本がある場合は対象を確認してください。Getは受信済みデータを読み、未受信ページを要求しません。
  • マネージャーは画面がなくてもセッション内に本を保持します。ゲーム画面を閉じて開き直しても本と下書きは残ります。本自体を閉じると対象から外れ、切断時にはサーバーの本が消去されます。
  • 編集可能な本だけに書き込めます。不正なページや長すぎる本文は拒否されます。BookSetTextは送信前に全ページを検査するため、後のページの不備による一部だけの書き込みはありません。

内部関数:呼び出しから結果まで

サーバーはヘッダー、ページ数、本文を送信します。SessionBooksはパケット全体を検査して保存し、表示を更新します。Basicはbridge経由で最後の本を選び、SessionBookは本文を読むか、検査後に書き込みパケットを送ります。ModernBookGumpは同じデータを表示し、画面切り離し時に下書きを保持します。

1. GetOpenBook

先にゲーム操作で対象の本を開いてください。最後に開いた本が対象で、ID引数はありません。複数の本がある場合は対象を確認してください。Getは受信済みデータを読み、未受信ページを要求しません。

マネージャーは画面がなくてもセッション内に本を保持します。ゲーム画面を閉じて開き直しても本と下書きは残ります。本自体を閉じると対象から外れ、切断時にはサーバーの本が消去されます。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 関数 GetOpenBook.

2. SessionBooks.ReceiveHeader/ReceivePages; SessionBook.Yoko*

編集可能な本だけに書き込めます。不正なページや長すぎる本文は拒否されます。BookSetTextは送信前に全ページを検査するため、後のページの不備による一部だけの書き込みはありません。

Unit:戻り値なし。書き込み要求であり、TRUE/FALSEやサーバーの完了確認ではありません。サーバーは編集を拒否できます。

プロジェクトのソース: src/ClassicUO.Client/Game/Managers/SessionBooks.cs; 関数 SessionBooks.ReceiveHeader/ReceivePages; SessionBook.Yoko*.

補助関数は全体を掲載しています。TRUEはローカル検査と呼び出しの実行を表すだけで、サーバー保存の確認ではありません。

使用例

直接使用

# 直接使用
#
# 開いている編集可能な本の1ページを書き換えます#
# Unit戻り値なし書き込み要求でありTRUE/FALSEやサーバーの完了確認ではありませんサーバーは編集を拒否できますSUB Main()
    # 対象の本が開かれ必要なページを受信済みで書き込み時は編集可能であることが前提です123はページ番号です存在を確認してください名前と本文は例ですUO.BookSetPageText(2, "Camp A")
END SUB

パラメーターと実行の説明:

  • 対象の本が開かれ、必要なページを受信済みで、書き込み時は編集可能であることが前提です。1、2、3はページ番号です。存在を確認してください。名前と本文は例です。

実用例

# 実用例
#
# 開いている編集可能な本の1ページを書き換えます#
# Unit戻り値なし書き込み要求でありTRUE/FALSEやサーバーの完了確認ではありませんサーバーは編集を拒否できますSUB Main()
    # 対象の本が開かれ必要なページを受信済みで書き込み時は編集可能であることが前提です123はページ番号です存在を確認してください名前と本文は例ですUO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food")
END SUB

パラメーターと実行の説明:

  • 対象の本が開かれ、必要なページを受信済みで、書き込み時は編集可能であることが前提です。1、2、3はページ番号です。存在を確認してください。名前と本文は例です。

完全な補助関数

# 完全な補助関数
#
# 開いている編集可能な本の1ページを書き換えます#
# Unit戻り値なし書き込み要求でありTRUE/FALSEやサーバーの完了確認ではありませんサーバーは編集を拒否できますSUB Main()
    # 対象の本が開かれ必要なページを受信済みで書き込み時は編集可能であることが前提です123はページ番号です存在を確認してください名前と本文は例です# 補助関数は全体を掲載していますTRUEはローカル検査と呼び出しの実行を表すだけでサーバー保存の確認ではありませんVAR requested = AppendNote(1, "Return before night")
END SUB

FUNCTION AppendNote(page, line)
    IF Len(line) > 53 THEN
        RETURN FALSE
    END IF
    VAR previous = UO.BookGetPageText(page)
    IF previous = "" THEN
        UO.BookSetPageText(page, line)
        RETURN TRUE
    END IF
    VAR lineCount = 1
    FOR VAR index = 1 TO Len(previous)
        IF Mid(previous, index, 1) = Chr(10) THEN
            lineCount = lineCount + 1
        END IF
    NEXT
    IF lineCount >= 10 THEN
        RETURN FALSE
    END IF
    UO.BookSetPageText(page, previous + Chr(10) + line)
    RETURN TRUE
END FUNCTION

パラメーターと実行の説明:

  • 対象の本が開かれ、必要なページを受信済みで、書き込み時は編集可能であることが前提です。1、2、3はページ番号です。存在を確認してください。名前と本文は例です。
  • 補助関数は全体を掲載しています。TRUEはローカル検査と呼び出しの実行を表すだけで、サーバー保存の確認ではありません。

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

Clone this wiki locally