脚本系统说明 50013版
HiPiHi客户端内嵌了Lua脚本引擎,用户可以通过脚本系统暴露的应用程序接口(API)和客户端完成一定的交互功能。 客户端和用户编写的脚本程序之间的连接方式有两种:回调函数方式和外接程序方式,下面分别以这两种方式说明脚本系统的使用方法。
回调函数方式 HiPiHi客户端设计了一些回调函数,会以一定的规则调用这些回调函数,用户可以编写这些回调函数的具体内容,从而实现用户编写的逻辑在客户端中执行,下面是HiPiHi客户端的Lua回调函数说明。 HiPiHi客户端的回调函数写在指定的Lua文件中,这些文件位于目录: %InstallPath%\Script\Lua下,共包含7个文件: Agent.lua 内含和虚拟人物相关的回调函数 Frame.lua 内含客户端每帧都会调用的回调函数 Global.lua 内含回调函数可以使用的全局变量 Keyboard.lua 内含键盘消息相关的回调函数 Mouse.lua 内含鼠标消息相关的回调函数 Patch.lua 内含和地块相关的回调函数 Timer.lua 内含和定时器相关的回调函数 用户用文本编辑程序(如Windows自带的Notepad.exe)可以打开和编辑文件内容,各文件内含的具体函数和意义如下: Agent.lua 函数名称 | OnFriendList | 函数说明 | 客户端好友列表更新时调用该函数,传入全部好友列表 | 函数参数 | FriendList 该参数为一个Lua的表,表结构为:
{ 好友名称=好友编码 好友名称=好友编码 . . . 好友名称=好友编码 }
其中好友编码的格式为: { h=高32位 l=低32位 } 例如: f = { Joe = { h = 4267651063, l = 1706849627, }, MRZG = { h = 4040817585, l = 3111856507, }, } |
函数名称 | OnFriendListOnline | 函数说明 | 客户端好友列表更新时调用该函数,传入全部在线好友列表 | 函数参数 | FriendList 同OnFriendList |
Frame.lua 函数名称 | OnFrameBegin | 函数说明 | 每帧处理开始时调用该函数 | 函数参数 | uFrameCount 客户端运行的帧数 fTime 客户端运行的时间(秒) fElapsedTime 客户端上帧到这帧的时间间隔(秒) |
函数名称 | OnFrameEnd | 函数说明 | 每帧处理结束时调用该函数 | 函数参数 | uFrameCount 客户端运行的帧数 fTime 客户端运行的时间(秒) fElapsedTime 客户端上帧到这帧的时间间隔(秒) |
Keyboard.lua 函数名称 | OnKeyEvent | 函数说明 | 用户操作键盘时调用该函数 | 函数参数 | iEvent 键盘事件 具体键盘事件在变量 hit_Const_KeyEvent中 变量说明在HiPiHi Extend程序中 iKey 用户操作的键位 具体键位在变量 hit_Const_KeyName 中 变量说明在HiPiHi Extend程序中 bPick 用户操作键盘时鼠标是否对准了场景中的某个物品 vPos 用户操作键盘时鼠标的屏幕位置坐标 iKeyState 键盘的状态 具体的键盘状态在变量 hit_Const_KeyState中 变量说明在HiPiHi Extend程序中 iKeyEvent 键盘的事件 当键盘按下或弹起瞬间 iKeyEvent=1,否则iKeyEvent=0 |
Mouse.lua 函数名称 | OnMouseEvent | 函数说明 | 用户操作鼠标时调用该函数 | 函数参数 | iEvent 鼠标事件编码 具体鼠标事件在变量 hit_Const_MouseEvent中 变量说明在HiPiHi Extend程序中 bPick 用户操作鼠标时鼠标是否对准了场景中的某个物品 vPos 用户操作鼠标时鼠标的屏幕位置坐标 iMouseState 鼠标的状态 具体鼠标状态在变量 hit_Const_MouseState中 变量说明在HiPiHi Extend程序中 iMouseEvent 鼠标的事件 当鼠标按钮按下或弹起瞬间 iMouseEvent=1,否则iMouseEvent=0 |
Patch.lua 函数名称 | OnEnterPatch | 函数说明 | 用户进入你的地块时调用该函数 | 函数参数 | sUserName 进入地块的用户名称 vPos 进入地块的用户当前位置坐标(世界坐标) |
函数名称 | OnInPatch | 函数说明 | 用户停留在你的地块上时,每隔10秒钟调用该函数 | 函数参数 | sUserName 停留用户名称 vPos 停留地块的用户当前位置坐标(世界坐标) |
Timer.lua 函数名称 | OnTimer | 函数说明 | 按设定的时间定时调用该函数,时间可以用函数 hif_System_SetTimer(time)设置,单位秒 | 函数参数 | uFrameCount 客户端运行的帧数 fTime 客户端运行的时间(秒) fElapsedTime 客户端上帧到这帧的时间间隔(秒) |
具体使用实例 在Patch.lua文件中具有如下函数:
function OnEnterPatch(sUserName,vPos) hif_Chat_Say(2,sUserName,"欢迎您来到我的家!" .. sUserName) end
该函数在有用户进入你的地块时执行,执行函数体中的: hif_Chat_Say(2,sUserName,"欢迎您来到我的家!" .. sUserName) hif_Chat_Say函数是一个执行聊天功能的函数(具体说明在HiPiHi Extend程序中)根据hif_Chat_Say的语法,执行的功能是向进入地块的用户以私聊的方式说“欢迎您来到我的家!”,后面跟用户的名称,比如用户MRZG进入你的地块,则MRZG的聊天栏中将会出现“欢迎您来到我的家!MRZG”这样一句话。
外接程序方式 外接程序是完全独立于HiPiHi客户端的第三方程序,它可以向客户端传递脚本代码,从而令客户端完成指定的功能。 目前,外接程序和HiPiHi客户端的脚本交互通过磁盘文件,文件名称为: Extend.lua 位于目录 %InstallPath%/Script/Lua/Extend下。 外接程序只要将需要客户端解释执行的脚本代码写入该文件,并以Windows消息的方式通知客户端,客户端将会读取该文件中的内容并执行。
|