Skip to content

API UO BookSetText zh tw

Codex edited this page Sep 23, 2026 · 1 revision

UO.BookSetText

ClassicUO / Basic IDE

Home · API · Books

從已開啟且可編輯書籍的第一頁開始寫入。

完整語法

UO.BookSetText(Text:Any) -> Unit

參數

  • Text — 文字:Chr(10)換行,Chr(13)會被移除。每頁最多10行,每行53字元,不接受NUL。

傳回值

Unit:沒有回傳值。這是寫入要求,不是TRUE/FALSE或伺服器完成確認;伺服器可能拒絕編輯。

行為

  • 先透過遊戲操作開啟目標書籍。指令選用最後開啟的書,沒有ID參數;多本書時請確認目標。Get只讀取已收到的資料,不會要求缺少的頁面。
  • 管理員即使沒有圖形畫面,也會在工作階段中保存書籍。關閉並重新開啟遊戲視窗會保留書與草稿。關閉書本本身會將其移出已開啟書籍;斷線則清除伺服器書籍。
  • 只有可編輯書籍能寫入。無效頁碼與過長文字會遭拒絕。BookSetText會在傳送前檢查所有頁面,因此後面頁面的錯誤不會導致只寫入一部分。
  • BookSetText用Chr(12)明確分頁;沒有時每10行分為一頁。剩餘舊頁不變;完整替換前須明確呼叫BookClearText。空字串只取代第一頁。

內部函式:從呼叫到結果

伺服器傳送標頭、頁數與內文。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*.

先透過遊戲操作開啟目標書籍。指令選用最後開啟的書,沒有ID參數;多本書時請確認目標。Get只讀取已收到的資料,不會要求缺少的頁面。

範例

直接使用

# 直接使用
#
# 從已開啟且可編輯書籍的第一頁開始寫入#
# Unit沒有回傳值這是寫入要求不是TRUE/FALSE或伺服器完成確認伺服器可能拒絕編輯SUB Main()
    # 範例假定目標書已開啟必要頁面已收到且寫入時可編輯123是頁碼請確認存在名稱與文字僅供示例UO.BookSetText("Mining route" + Chr(10) + "Start at camp")
END SUB

參數與執行說明:

  • 範例假定目標書已開啟、必要頁面已收到,且寫入時可編輯。1、2、3是頁碼,請確認存在。名稱與文字僅供示例。

實用情境

# 實用情境
#
# 從已開啟且可編輯書籍的第一頁開始寫入#
# Unit沒有回傳值這是寫入要求不是TRUE/FALSE或伺服器完成確認伺服器可能拒絕編輯SUB Main()
    # 範例假定目標書已開啟必要頁面已收到且寫入時可編輯123是頁碼請確認存在名稱與文字僅供示例UO.BookSetText("Camp A" + Chr(12) + "Camp B" + Chr(12) + "Return home")
END SUB

參數與執行說明:

  • 範例假定目標書已開啟、必要頁面已收到,且寫入時可編輯。1、2、3是頁碼,請確認存在。名稱與文字僅供示例。

完整輔助函式

# 完整輔助函式
#
# 從已開啟且可編輯書籍的第一頁開始寫入#
# Unit沒有回傳值這是寫入要求不是TRUE/FALSE或伺服器完成確認伺服器可能拒絕編輯SUB Main()
    # 範例假定目標書已開啟必要頁面已收到且寫入時可編輯123是頁碼請確認存在名稱與文字僅供示例WriteRoute("Northern mine", "Bring bandages")
END SUB

SUB WriteRoute(destination, supplies)
    VAR firstPage = "Destination" + Chr(10) + destination
    VAR secondPage = "Supplies" + Chr(10) + supplies
    UO.BookSetText(firstPage + Chr(12) + secondPage)
END SUB

參數與執行說明:

  • 範例假定目標書已開啟、必要頁面已收到,且寫入時可編輯。1、2、3是頁碼,請確認存在。名稱與文字僅供示例。

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

Clone this wiki locally