请选择 进入手机版 | 继续访问电脑版

传奇服务端-GM论坛基地「免费下载」传奇版本库部落

 找回密码
 立即注册
搜索
热搜: 1.76 1.80 DBC2000
查看: 617|回复: 0

[技术文章] 手机传奇服务端-Lua教程服务端与客户端通信工作原理

[复制链接]
  • TA的每日心情

    前天 02:37
  • 签到天数: 165 天

    [LV.7]少将

    441

    主题

    479

    帖子

    8212

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    8212
    发表于 2019-4-24 11:12:16 | 显示全部楼层 |阅读模式
    Lua教程第一章:服务端与客户端通信
    Lua实现的功能都需要服务端与客户端之间通信合作才可以完成,所以两者之间的通信是所有功能实现的基础

    本例将实现一个最基本的服务端与客户端通信功能:在游戏中按下Ctrl+C键,发送一条消息到服务端,服务端接收到消息后,返回一条消息给客户端。

    一、传奇服务端文件结构图如下:

    手机传奇服务端LUA

    手机传奇服务端LUA



    只有了解的文件结构,才知道Lua脚本文件如何放置以及它的作用!

    二、传奇客户端Lua

    首先,我们在客户端目录下创建一个“lua”文件夹,并在里面创建一个“client.lua”脚本文件
    通过上面的文件结构,我们可以知道,该文件在游戏启动时就会加载

    我们开始编辑“client.lua”脚本文件:
    BINDKEYEVENT("C", "test.lua", "keydown")
    BINDLUASOCKET(1, "test.lua", "servermsg")

    第一行BINDKEYEVENT函数是一个绑定按键事件的函数,有三个参数:
    1、对应的按键
    2、对应的lua脚本文件
    3、对应的函数名
    作用说明:绑定Ctrl+C键,当按下这组合键时,会执行同级目录下“test.lua”脚本文件里的“keydown”函数


    第二行BINDLUASOCKET函数是绑定服务端消息的函数,有三个参数:
    1、消息ID
    2、对应的lua脚本文件
    3、对应的函数名
    作用说明:当服务端发送ID为1的消息时,会执行同级目录下“test.lua”脚本文件里的“servermsg”函数


    我们继续在客户端目录的“lua”文件夹里创建一个“test.lua”脚本文件,开始编辑:
    function keydown()
            SENDTEXT(100, "来自客户端的消息")
    end

    function servermsg(msg)
            CHAT(msg)
    end
    复制代码
    这里有两个函数,对应上面绑定的函数名

    第一个keydown函数的执行内容是:
    给服务端发送一个ID为100的消息

    第二个servermsg函数的执行内容是:
    将传入的参数输出到游戏聊天框中


    三、服务端

    我们在服务端的“Mir200”目录下创建一个“lua”文件夹,并在里面创建一个“SocketLua.lua”脚本文件并编辑:
    BINDSOCKET(100, test_lua\\test.lua", "test", 0)
    复制代码
    这个函数是绑定客户端消息事件,有4个参数:
    1、消息ID
    2、对应的lua脚本文件,默认为服务端“Mir200\Envir”目录
    3、对应的函数名
    4、该参数暂时保留,传入0即可
    作用说明:当客户端发送ID为100的消息时,就会执行服务端“Mir200\Envir\test_lua\test.lua”脚本文件里的“test”函数

    我们继续在服务端“Mir200\Envir”目录下创建一个“test_lua”文件夹,并在里面创建一个“test.lua”脚本文件进行编辑:
    function test()
            local msg = GETSOCKETMSG()
            PRINT(msg)
            SENDTEXT(1, "来自服务端的消息")
    end


    这个函数对应上面绑定的函数名,执行内容是:
    首先通过GETSOCKETMSG()方法获取到客户端发送过来的消息并保存到变量
    然后打印到M2窗口,再发送一条ID为1的消息

    到此,通信功能部分全部完成,开启服务端,进入游戏,按下CTRL+C键,会看到:

    客户端会显示从服务端发送过来的消息

    Lua发送消息

    Lua发送消息



    服务端会显示从客户端发送过来的消息

    Lua端M2显示

    Lua端M2显示


    四:总结
    服务端与客户端之间的通信主要通过事件绑定来触发消息的发送与接收
    当客户端发送消息到服务端时,根据服务端绑定的事件,执行对应的函数,再给客户端回消息
    也可以从服务端主动发消息到客户端,两者之间是可以任意发送消息的


    传奇服务端GM论坛(DIYGM.COM)免费提供传奇版本,登录器,补丁素材,引擎M2,资源等大量回复即可下载,传奇版本库基地提供服务。



    上一篇:复古传奇角色基本操作界面说明-传奇版本攻略详解
    下一篇:分享传奇登录器列表打不开:交流
    回复

    使用道具 举报

    *滑动验证:
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ:2444100141|网站地图|传奇标签|手机版|小黑屋|传奇服务端版本 ( 滇ICP备13005504号-4 )

    GMT+8, 2019-7-20 00:13 , Processed in 0.178242 second(s), 33 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表