Skip to content

API UO BookSetPageText uk

Codex edited this page Sep 23, 2026 · 1 revision

UO.BookSetPageText

ClassicUO / Basic IDE

Home · API · Books

Замінює текст сторінки відкритої редагованої книги.

Точний синтаксис

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

Параметри

  • Page — Номер сторінки від 1, не serial книги. Кількість сторінок визначає сервер.
  • Text — Текст: Chr(10) розділяє рядки; Chr(13) видаляється. До 10 рядків на сторінку і 53 символів у рядку. Нульовий символ заборонено.

Повертає

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 означає лише виконання локальної перевірки й виклику, а не підтвердження запису сервером.

Приклади

Прямий виклик

# Прямий виклик
#
# Замінює текст сторінки відкритої редагованої книги.
#
# Unitзначення немає. Це запит запису, не TRUE/FALSE і не підтвердження сервера. Сервер може
# заборонити редагування.

SUB Main()
    # Приклади потребують уже відкритої книги та отриманих сторінок; запис потребує дозволу
    # редагування. 1, 2 і 3номери сторінок, які мають існувати. Назви й текст демонстраційні.

    UO.BookSetPageText(2, "Camp A")
END SUB

Пояснення параметрів і виконання:

  • Приклади потребують уже відкритої книги та отриманих сторінок; запис потребує дозволу редагування. 1, 2 і 3 — номери сторінок, які мають існувати. Назви й текст демонстраційні.

Практичний сценарій

# Практичний сценарій
#
# Замінює текст сторінки відкритої редагованої книги.
#
# Unitзначення немає. Це запит запису, не TRUE/FALSE і не підтвердження сервера. Сервер може
# заборонити редагування.

SUB Main()
    # Приклади потребують уже відкритої книги та отриманих сторінок; запис потребує дозволу
    # редагування. 1, 2 і 3номери сторінок, які мають існувати. Назви й текст демонстраційні.

    UO.BookSetPageText(1, "Supplies" + Chr(10) + "Bandages" + Chr(10) + "Food")
END SUB

Пояснення параметрів і виконання:

  • Приклади потребують уже відкритої книги та отриманих сторінок; запис потребує дозволу редагування. 1, 2 і 3 — номери сторінок, які мають існувати. Назви й текст демонстраційні.

Повна допоміжна функція

# Повна допоміжна функція
#
# Замінює текст сторінки відкритої редагованої книги.
#
# Unitзначення немає. Це запит запису, не TRUE/FALSE і не підтвердження сервера. Сервер може
# заборонити редагування.

SUB Main()
    # Приклади потребують уже відкритої книги та отриманих сторінок; запис потребує дозволу
    # редагування. 1, 2 і 3номери сторінок, які мають існувати. Назви й текст демонстраційні.
    # Допоміжну функцію наведено повністю. Її 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