man 发表于 2019-12-21 12:22:49

zMUD 支持Lua脚本插件,功能强大到爆炸,你怕不怕!支持zmud5.55 ...

插件支持zMUD版本zMUD5.55 - zMUD7.21
一、使用方法:
    1, 全部使用Lua插件附加功能。
      zMUD7.21 - 菜单 - 插件
      zMUD5.55 - www.pkuxkx.com主页下载zMUD5.55 用zmud555_lorder打开自动加载;
    2, 一个zMUD有不同窗口,部分窗口使用Lua部分不使用
      2.1 使用lua的窗口,默认加载命令是require 'main', 当然你可以设置自己需要加载的独特的lua,比如#var reloadlua {require 'pangyazi'}
            插件自动加载reloadlua变量下的内容。
      2.2 不使用lua的窗口,#var reloadlua 0
    3, 全部不使用Lua
      直接卸载lua插件

二、实际运行中重新加载lua环境
      输入:reloadlua

               

北大侠客行MUD,中国最好的MUD
2019/12/22 更新一个退出程序时候正则释放内存的bug
2019/12/24 修复一个窗口关闭时lua环境方法未释放的bug。 可以输入 `testdll自行测试每次加载释放100次
2019/12/26 原来zmud发送PChar 转成String 再转成PChar发给Lua,改成直接PChar发给Lua
2020/11/10 v1.1修改reloadlua命令,增加unloadlua命令

man 发表于 2019-12-21 12:23:22

本帖最后由 man 于 2019-12-24 05:05 AM 编辑

二、Lua函数介绍
    主要函数我在main.lua里加载了base.lua以最终封装好的函数为例
    2.1 print
      等同功能函数Echo、Show,主要往zMUD界面输入一串汉字,相当于zmud的#echo;
      print('白公公好猛')

    2.2send
      往ZMUD服务器发送一串命令;
      send('say 白公公好猛')
      更正:
      原函数Send('haha')无法正常工作,需要改成Send('haha\n'),zmud好像默认没有换行符在Send函数后,Run函数不受换行影响。
      目前可以正常使用send('haha')

    2.3Run
      发给zmud解析一串命令,zmud自己的alias也可以正常运行
      Run('say 白公公好猛;#wa 2000;sweat')

    2.4exe
      解析Lua自己的alias,然后发送给Run,也可以继续使用zmud的alias
      比如zmud:#alias bb {say 白公公好猛}
      比如Lua: add_alias('aa',function()   exe('haha')end)
      exe('aa;bb')

    2.5add_timer
       设置一个运行一次的定时器,可以嵌套
       add_timer('delay',1,function()
         exe('haha')
       end)
       或,
       add_timer('delay',1,function()
         add_timer('delay',1,function()
               exe('haha')
         end)
       end)
   2.6set_timer
      设置一个一直运行的定时器
      set_timer('timer',1,function()exe('haha') end)

      2.7del_timer
      删除一个timer
      del_timer('timer')

      2.8别名
      add_alias('aa',function()   exe('kk;nn') end)
      del_alias('aa')

      2.9触发
      add_trigger('123','^[>]*你(.*)哈哈(.*)',function(p)
         print(p)
         print(p)
         exe('faint')
      end)
      close_trigger('123')
      open_trigger('123')
      del_trigger('123')

      2.10 GetAppPath()
       获取zmud当前路径比如c:\zmud5.55

      2.11 GetPathFiles
       获取某个路径下的文件名称,可以存放到一个table里
       a={GetPathFiles(GetAppPath())}

      2.12 Regex
      正则匹配,结果是一个table
      a={Regex('你哈哈大笑','你(.*)')}
      a是匹配结果 '0'表示失败,n表示有n个匹配结果,-1表示可以匹配但是没有结果,因为没有用括号
      a - a就是匹配结果

      2.13 GetVar
      获取一个Zmud变量值,不太建议频繁使用这个功能
      local a=GetVar('a')
      如果需要写入zmud变量值可以使用
      Run('#var aa 10')

      2.14 GetBytes
      获取本游戏窗口zmud传入多少字节的文字
      local a=GetBytes()
      比如你可以一分钟获取一次,如果5分钟内字计数未增加,那么本窗口可能掉线了你可以执行重新连线
      Run("#disconnect;#connect")

man 发表于 2019-12-21 12:32:20

本帖最后由 man 于 2019-12-21 05:12 AM 编辑

三、用lua扩展zmud功能
      比如先设置一个lua的alias
      add_alias('test',function()
             a=10
             b=50
             c=a*b+b/a
             Run('#var test '..c)
      end)

      zmud中可以
      #var aa 50;test;#var bb %eval(@a+@test)

      当然由于Run可以执行很多zmud命令,所以不再举例了,自己想怎么搞就怎么搞吧

四,lua可以单独完成所有机器人任务
   利用lua内部触发,别名,定时器,可以完成几乎所有job和练功机器,这里就不介绍了,可以去书剑mud下载zmud lua机器参考一下。
   实际上推荐使用lua内部函数编写机器更有运行效率。

五,附属文件
    lsqlite.dll -- lua调用sql的文件
    lc.dll   转码utf8 ansi互相转换

suzhige 发表于 2019-12-21 12:42:47

我记得你发过一次了 怎么又发一遍

man 发表于 2019-12-21 13:16:10

...
我刚胡乱写了一把,你就未卜先知了啊

回复 4# suzhige

xgg 发表于 2019-12-26 11:58:45

我选够浪

man 发表于 2019-12-27 12:19:07

浪毛线

karateka 发表于 2021-1-13 02:14:47

qiang qiang
学习中
页: [1]
查看完整版本: zMUD 支持Lua脚本插件,功能强大到爆炸,你怕不怕!支持zmud5.55 ...