Gmsv Lua模块Callback介绍
-
Callback函数是用来将gmsv内存中的数据通过开放的API接口传递给Lua的函数,并且调用执行的函数.目前gmsvplus的lua模块支持的callback函数有
- Char_Init_Callback -> 对象实例初始化回调函数
- Char_Loop_Callback -> 对象实例循环事件回调函数
- Char_Talked_Callback -> 对象实例对话事件回调函数
- Char_WindowTalked_Callback -> 对象实例窗口对话事件回调函数
- Char_Walkpre_Callback -> 对象实例行走前事件回调函数
- Event_Login_Callback -> 玩家登陆触发事件回调函数
- Event_LoginGate_Callback -> 玩家登回记录点触发事件回调函数
- Event_Logout_Callback -> 玩家登出触发事件回调函数
- Event_Talk_Callback -> 玩家说话触发事件回调函数
- Event_LevelUp_Callback -> 玩家对象实例升级触发事件回调函数
- Item_Init_Callback -> 物品道具初始化事件回调函数
- Item_Use_Callback -> 物品道具使用触发事件回调函数
- Battle_Win_Callback -> 战斗胜利触发事件回调函数
- Event_BattleStart_Callback -> 战斗开始触发事件回调函数
- Event_BattleOver_Callback -> 战斗结束触发事件回调函数下面主要介绍一个Callback函数,其他的则简要介绍
Char_Init_Callback(int charPointer)
这个函数的作用是对象实例初始化的回调函数
具体介绍为,当用户使用
```
NL.CreateNPC("lua/mynpc.lua","myNpcInit");
```
以上代码的时候,一个NPC的实例的初始化函数被指向lua/mynpc.lua文件中的myNpcInit这个函数,那么这个Lua文件中所定义的myNpcInit这个函数的参数列表,就是通过Char_Init_Callback这个函数来传递的.
所以通过Char_Init_Callback(int charPointer)这个定义,我们的myNpcInit函数就可以如此定义了function myNpcInit(_MyIndex) return true;end
因为Char_Init_Callback这个回调函数只返回一个参数也就是对象的实例,即int型的charPointer,所以相对应的,这个charPointer的值就会传递给Lua函数中的_MyIndex,也就是说
_MyIndex = charPointer;
于是,我们就可以在Lua的函数中调用_MyIndex来达到我们的需求,比如修改_MyIndex这个对象实例的名字
function myNpcInit(_MyIndex) Char.SetData(_MyIndex,%对象_名字%,"测试修改名字"); Char.UpChar(_MyIndex); return true;end
对于其他的回调函数,本文会说明每个回调函数对应的参数列表,以及设置回调参数的函数名.
-
Char_Init_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
NL.CreateNPC(Lua函数所在文件,Lua函数名);Char_Loop_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
Char.SetLoopEvent(Lua函数所在文件,Lua函数名,对象实例,循环间隔);Char_Talked_Callback(int meIndex,int tomeIndex)
参数介绍:
meIndex: 对象实例,一般为NPC,即收到这个回调函数的对象
tomeIndex: 对象实例,一般为玩家,即发起这个回调函数的对象
设置函数:
Char.SetTalkedEvent(Lua函数所在文件,Lua函数名,接受回调函数的对象实例(一般为NPC));Char_WindowTalked_Callback(int meIndex,int tomeIndex,int seqNo, int select,char* data)
参数介绍:
meIndex: 对象实例,一般为NPC,即收到这个回调函数的对象
tomeIndex: 对象实例,一般为玩家,即发起这个回调函数的对象
seqNo: 对话框标识ID,用来识别对话进程
select: 用户选择的按钮或项目的值
data: 窗口返回的信息,如输入框内输入的东西
设置函数:
Char.SetWindowTalkedEvent(Lua函数所在文件,Lua函数名,接受回调函数的对象实例(一般为NPC));Char_WalkPre_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
Char.SetWalkPreEvent(Lua函数所在文件,Lua函数名,对象实例);Event_Login_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
NL.RegLoginEvent(Lua函数所在文件,Lua函数名);Event_LoginGate_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
NL.RegLoginGateEvent(Lua函数所在文件,Lua函数名);Event_Logout_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
NL.RegLogoutEvent(Lua函数所在文件,Lua函数名);Event_LevelUp_Callback(int charPointer)
参数介绍:
charPointer : 对象实例
设置函数:
NL.RegLevelUpEvent(Lua函数所在文件,Lua函数名);Event_Talk_Callback(int charPointer, char *msg, int color, int range, int size)
参数介绍:
charPointer : 对象实例
msg: 说话的内容
color: 文字的颜色
range: 说话的范围
size: 文字的大小
设置函数:
NL.RegTalkEvent(Lua函数所在文件,Lua函数名);Item_Init_Event(int itemPointer, int unk1, int unk2, int itemIndex)
/暂时不开放
Item_Use_Callback(int charPointer, int toPlayerPointer, int slot)
参数介绍:
charPointer : 对象实例
toPlayerPointer: 道具使用的目标的对象实例
slot: 道具所在栏位
设置函数:
NL.RegItemString(Lua函数所在文件,Lua函数名,"LUA_Use"开头的道具字段);Battle_Win_Callback(int battleIndex, int charPointer)
参数介绍:
battleIndex: 战斗实例
charPointer : 对象实例,发起战斗的对象实例
设置函数:
Battle.SetWinEvent(Lua函数所在文件,Lua函数名,战斗实例);
Event_BattleStart_Callback(int battleIndex)参数介绍:
battleIndex : 战斗实例索引
设置函数:
NL.RegBattleStartEvent(Lua函数所在文件,Lua函数名);Event_BattleOver_Callback(int battleIndex)
参数介绍:
battleIndex : 战斗实例索引
设置函数:
NL.RegBattleOverEvent(Lua函数所在文件,Lua函数名);
-
占楼待编辑
-
经典学习中
-
= =看的头大额
-
學習中~~~~~~~~~
-
Free 发表于 2011-7-15 07:36
Char_Init_Callback(int charPointer)参数介绍:
请问Char.SetWalkPostEvent设置了一个回调函数后
是每走一步都会调用该回调函数
还是只有一次?
-
来学习了 顺便回帖顶贴
-
长见识了。。学习了