zMUD 支持Lua脚本插件,功能强大到爆炸,你怕不怕!支持zmud5.55 ...
插件支持zMUD版本zMUD5.55 - zMUD7.21一、使用方法:
1, 全部使用Lua插件附加功能。
zMUD7.21 - 菜单 - 插件
zMUD5.55 - www.pkuxkx.net主页下载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-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 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互相转换 我记得你发过一次了 怎么又发一遍 ...
我刚胡乱写了一把,你就未卜先知了啊
回复 4# suzhige 我选够浪 浪毛线 qiang qiang
学习中
页:
[1]