Gmsv Lua模块Callback介绍


  • 管理员

    Callback函数是用来将gmsv内存中的数据通过开放的API接口传递给Lua的函数,并且调用执行的函数.目前gmsvplus的lua模块支持的callback函数有

    1. Char_Init_Callback -> 对象实例初始化回调函数
    2. Char_Loop_Callback -> 对象实例循环事件回调函数
    3. Char_Talked_Callback -> 对象实例对话事件回调函数
    4. Char_WindowTalked_Callback -> 对象实例窗口对话事件回调函数
    5. Char_Walkpre_Callback -> 对象实例行走前事件回调函数
    6. Event_Login_Callback -> 玩家登陆触发事件回调函数
    7. Event_LoginGate_Callback -> 玩家登回记录点触发事件回调函数
    8. Event_Logout_Callback -> 玩家登出触发事件回调函数
    9. Event_Talk_Callback -> 玩家说话触发事件回调函数
    10. Event_LevelUp_Callback -> 玩家对象实例升级触发事件回调函数
    11. Item_Init_Callback -> 物品道具初始化事件回调函数
    12. Item_Use_Callback -> 物品道具使用触发事件回调函数
    13. Battle_Win_Callback -> 战斗胜利触发事件回调函数
    14. Event_BattleStart_Callback -> 战斗开始触发事件回调函数
    15. 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
    

    对于其他的回调函数,本文会说明每个回调函数对应的参数列表,以及设置回调参数的函数名.


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0

  • 管理员

    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函数名);


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0

  • 管理员

    占楼待编辑


    • 想着从别人那获取什么之前,请先自己做出点什么贡献。

    • 技术不是可以衣来伸手饭来张口的。

    • 在你开口问别人为什么之前,请先自己问问搜索引擎。

    • 自由和分享是需要建立在你自身的基础之上的。

    0


  • 经典学习中



  • = =看的头大额



  • 學習中~~~~~~~~~



  • Free 发表于 2011-7-15 07:36
    Char_Init_Callback(int charPointer)

    参数介绍:

    请问Char.SetWalkPostEvent设置了一个回调函数后
    是每走一步都会调用该回调函数
    还是只有一次?



  • 来学习了 顺便回帖顶贴



  • 长见识了。。学习了


登录后回复