跳到正文
本頁目錄

🏃‍♂️ 玩家綁定數據

在實際開發中,經常有需要將某些數據和服務器中的某個玩家相關聯,並在插件的工作週期中不斷維護這些數據的需求。

為此,腳本引擎設計了玩家綁定數據接口。綁定數據接口使用鍵 - 值對的形式儲存數據。
在你將數據綁定到某個玩家上以後,即使在玩家對象超出作用域被銷燬,甚至當此玩家退出遊戲時,玩家綁定數據將仍然存在。當你再次獲得這個玩家的玩家對象的時候,仍然可以讀取到之前儲存的綁定數據。
只有當服務端關閉的時候,所有的數據才會被統一銷燬。

由此,腳本引擎給予開發者在插件的整個生命週期中跟蹤某個特定玩家相關數據的能力。

對於某個特定的玩家對象pl,有如下這些接口:

儲存玩家綁定數據

pl.setExtraData(name,data)

  • 參數:

  • name : String
    要儲存到綁定數據的名字

  • data : 任意类型
    你要儲存的綁定數據,可以是Null

  • 返回值:是否成功儲存

  • 返回值類型:Boolean

獲取玩家綁定數據

pl.getExtraData(name)

  • 參數:
  • name : String
    要讀取的綁定數據的名字
  • 返回值:儲存的綁定數據
  • 返回值類型:任意类型,取決於儲存的數據類型
  • 如返回值為 Null 則表示未獲取到指定的綁定數據,或者數據為空

刪除玩家綁定數據

pl.delExtraData(name)

  • 參數:
  • name : String
    要刪除的綁定數據的名字
  • 返回值:是否刪除成功
  • 返回值類型:Boolean

👨‍💻 XUID 數據庫

XUID數據庫讓你可以即使在玩家離線的時候,也可以查詢玩家名字與XUID的對應關係。
當一個玩家第一次進服的時候,他的名字和XUID就會被自動記錄在內置 XUID 數據庫中。使用下面的函數來進行相關查詢

根據玩家名查詢XUID

data.name2xuid(name)

  • 參數:
  • name : String
    要查詢的玩家名
  • 返回值:玩家的XUID
  • 返回值類型:String
  • 如果返回值為Null,則代表查詢失敗

根據XUID查詢玩家名

data.xuid2name(xuid)

  • 參數:
  • xuid: String
    要查詢的玩家XUID
  • 返回值:玩家名
  • 返回值類型:String
  • 如果返回值為Null,則代表查詢失敗

根據玩家名查詢UUID

data.name2uuid(name)

  • 參數:
  • name : String
    要查詢的玩家名
  • 返回值:玩家的UUID
  • 返回值類型:String
  • 如果返回值為Null,則代表查詢失敗

根據XUID查詢玩家UUID

data.xuid2uuid(xuid)

  • 參數:
  • xuid: String
    要查詢的玩家XUID
  • 返回值:玩家的UUID
  • 返回值類型:String
  • 如果返回值為Null,則代表查詢失敗

獲取所有的玩家信息

data.getAllPlayerInfo()

  • 返回值: 所有的玩家信息
  • 返回值類型: Array<Object>
  • 每個對象都含有以下屬性:
    • name: 玩家名
    • xuid: 玩家XUID
    • uuid: 玩家UUID

提示:XUID數據庫中儲存的玩家名為玩家對象對應的realName字段

Warning

以下API均為0.8.13新API,使用以下API將導致插件無法兼容舊版

根據XUID查詢玩家信息

data.fromXuid(xuid)

  • 參數:
  • xuid: String 要查詢玩家的XUID
  • 返回值: 玩家信息條目,例如 {xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}
  • 返回值類型: Object
  • 如果返回值為Null,則代表查詢失敗

根據UUID查詢玩家信息

data.fromUuid(uuid)

  • 參數:
  • uuid: String 要查詢玩家的UUID
  • 返回值: 玩家信息條目,例如 {xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}
  • 返回值類型: Object
  • 如果返回值為Null,則代表查詢失敗

根據名字查詢玩家信息

data.fromName(name)

  • 參數:
  • name: String 要查詢玩家的名字
  • 返回值: 玩家信息條目,例如 {xuid:1145141919810,name:yjsp,uuid:2a30fa4a-3a63-3370-88a8-144a941101e2}
  • 返回值類型: Object
  • 如果返回值為Null,則代表查詢失敗