-
Notifications
You must be signed in to change notification settings - Fork 0
API UO BookSetPageText zh tw
ClassicUO / Basic IDE
取代已開啟且可編輯書籍的一頁內容。
UO.BookSetPageText(Page:Any, Text:Any) -> Unit
-
Page— 從1起算的頁碼,不是書籍ID。頁數由伺服器提供。 -
Text— 文字:Chr(10)換行,Chr(13)會被移除。每頁最多10行,每行53字元,不接受NUL。
Unit:沒有回傳值。這是寫入要求,不是TRUE/FALSE或伺服器完成確認;伺服器可能拒絕編輯。
- 先透過遊戲操作開啟目標書籍。指令選用最後開啟的書,沒有ID參數;多本書時請確認目標。Get只讀取已收到的資料,不會要求缺少的頁面。
- 管理員即使沒有圖形畫面,也會在工作階段中保存書籍。關閉並重新開啟遊戲視窗會保留書與草稿。關閉書本本身會將其移出已開啟書籍;斷線則清除伺服器書籍。
- 只有可編輯書籍能寫入。無效頁碼與過長文字會遭拒絕。BookSetText會在傳送前檢查所有頁面,因此後面頁面的錯誤不會導致只寫入一部分。
伺服器傳送標頭、頁數與內文。SessionBooks檢查完整封包後保存並更新畫面。Basic經由bridge選擇最後的書,SessionBook讀取內文或檢查後傳送寫入封包。ModernBookGump顯示相同資料,並在分離圖形畫面時保存草稿。
先透過遊戲操作開啟目標書籍。指令選用最後開啟的書,沒有ID參數;多本書時請確認目標。Get只讀取已收到的資料,不會要求缺少的頁面。
管理員即使沒有圖形畫面,也會在工作階段中保存書籍。關閉並重新開啟遊戲視窗會保留書與草稿。關閉書本本身會將其移出已開啟書籍;斷線則清除伺服器書籍。
專案原始碼: src/ClassicUO.Client/Game/Managers/ClassicUOInjectionApiBridge.cs; 函式 GetOpenBook.
只有可編輯書籍能寫入。無效頁碼與過長文字會遭拒絕。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 · 繁體中文 · 日本語 · 한국어
ClassicUO
Bad Newbie & Basic IDE
Найти в справочнике
Клиент и скрипты
Каталоги значений
Разработка и помощь