KBEngine 文档KBEngine 文档
首页
源码学习
架构
API
资料
指南
GitHub
首页
源码学习
架构
API
资料
指南
GitHub
  • 核心概念

    • API 总览
    • API 分类与核对清单
    • 基本数据类型
    • 关键词释义
  • 客户端

    • client插件
    • KBEngine模块
    • Entity类
    • Bots进程
    • KBEngine模块
    • Entity类
    • PyClientApp类
  • 服务端组件

    • Cellapp进程
    • KBEngine模块
    • Entity类
    • Baseapp进程
    • KBEngine模块
    • Entity类
    • Proxy类
    • Loginapp进程
    • KBEngine模块
    • Dbmgr进程
    • KBEngine模块
    • Interfaces进程
    • KBEngine模块
    • Logger进程
    • KBEngine模块

KBEngine模块

KBEngine模块提供了逻辑脚本层访问实体的部分, 以及当前space的数据等等。

类

  • Entity

成员函数

  • def login( username, password ):
  • def createAccount( username, password ):
  • def reloginBaseapp():
  • def player( ):
  • def resetPassword(username):
  • def bindAccountEmail( emailaddress ):
  • def newPassword( oldpassword, newpassword ):
  • def findEntity( entityID ):
  • def getSpaceData( key ):

回调函数

属性

component只读string
entitiesEntitiesentity_uuiduint64entity_idint32spaceIDint32

成员函数文档

def login(username, password):

功能说明: 登录账号到KBEngine服务端。 注意:如果插件与UI层使用事件交互模式,在UI层不要直接调用,请触发一个"login"事件给插件,事件附带数据username和password。

参数:

usernamestring,用户名。
passwordstring,密码。

def createAccount(username, password):

功能说明: 请求向KBEngine服务端创建一个登录账号。 注意:如果插件与UI层使用事件交互模式,在UI层不要直接调用,请触发一个"createAccount"事件给插件,事件附带数据username和password。

参数:

usernamestring,用户名。
passwordstring,密码。

def reloginBaseapp():

功能说明: 请求重登录到KBEngine服务端(通常在掉线之后希望更及时的连接到服务端并继续控制服务端角色时使用)。 注意:如果插件与UI层使用事件交互模式,在UI层不要直接调用,请触发一个"reloginBaseapp"事件给插件,事件附带数据为空。

def player():

功能说明: 获得本次客户端连接对应的Player实体。 它本质上是按客户端运行时记录的 entity_id 从 entities 字典中取回实体,不表示该实体当前一定由本地客户端持有移动控制权。

源码解析:

  • 网络与消息系统:isPlayer()、player() 和 controlledBy() 的关系

返回:

  • Entity,返回当前连接对应的Player实体;如果该实体尚未创建或当前未连接到服务端则返回空。

def resetPassword(username):

功能说明: 请求loginapp重置账号的密码, 服务端将会向该账号绑定的邮箱发送一封重置密码邮件(通常是忘记密码功能使用)。

参数:

usernamestring,用户名。

def bindAccountEmail(emailaddress):

功能说明: 请求baseapp绑定账号的email地址。

参数:

emailaddressstring,邮箱地址。

def newPassword(oldpassword, newpassword):

功能说明: 请求设置账号的新密码。

参数:

oldpasswordstring,旧密码。
newpasswordstring,新密码。

def findEntity(entityID):

功能说明: 通过实体ID在客户端运行时维护的实体表中查找实体实例。 这个查找直接针对 entities 容器本身,不额外要求目标实体当前已经 inWorld;因此“能查到实体”和“实体已经进入客户端世界对象集合”是两件不同的事。

参数:

entityIDint32,实体ID。

源码解析:

  • 网络与消息系统:客户端的句柄表与实体容器语义

返回:

  • Entity,存在返回实体实例,不存在返回空。

def getSpaceData(key):

功能说明: 获取指定key的space数据。 space数据由用户在服务端通过setSpaceData设置。

参数:

keystring,一个字符串关键字。

返回:

  • string,指定key的字符串数据。

回调函数文档

属性文档

component

说明: 这是正运行在当前脚本环境的组件。(至今为止)可能值有'cellapp', 'baseapp', 'client', 'dbmgr', 'bots' 和 'editor'。

entities

说明: entities 是客户端运行时维护的实体实例表。 它包含当前客户端仍然保留的实体对象,不等于“当前 AOI 可见实体列表”:例如当前连接对应的Player实体可能在收到 onCreatedProxies() 后就已经存在于表里,但要等进入世界后 inWorld 才会变为 True;清理当前空间时,客户端通常还会保留Player实体本身。

源码解析:

  • 网络与消息系统:客户端的句柄表与实体容器语义

类型:

  • Entities

entity_uuid

说明: 实体的uuid,改ID与实体本次登录绑定。当使用重登陆功能时服务端会与此ID进行比对,判断合法性。

entity_id

说明: 当前连接对应的 Player 实体 ID。 它是在服务端下发 onCreatedProxies() 时写入客户端运行时的连接级身份标记,player() 和 Entity.isPlayer() 都围绕它判断。 它不等于“当前由本客户端持有移动控制权的实体”。

源码解析:

  • 网络与消息系统:isPlayer()、player() 和 controlledBy() 的关系

spaceID

说明: 当前客户端记录的玩家空间上下文 ID。 它会在当前玩家收到 onEntityEnterSpace() 或初始化 spaceData 时更新,在离开当前空间或执行 clearSpace(false) 后回到 0。 它描述的是“当前连接对应玩家现在处于哪个空间”,不等于 KBEngine.entities 中所有实体共享的过滤条件,也不等于任意一个实体对象自己的 spaceID。

源码解析:

  • 网络与消息系统:客户端的 onEnterWorld() / onLeaveWorld() / onEnterSpace() / onLeaveSpace() 也不是同一层事件
Prev
client插件
Next
Entity类