mudlet机器人脚本开发基础:常用API函数

mudlet机器人开发除了基本的触发外,还可以使用lua脚本,客户端提供了大量的功能函数,这里列出常用和实用的部分。

指令相关

send

send(command, showOnScreen)

发送指令到游戏窗口,注意这个函数是直接发送command到游戏服务端,不会匹配客户端设置的别名,第二个参数showOnScreen 值为true/false,设置是否回显指令在屏幕上。

sendAll

sendAll(list of things to send, [echo back or not])

发送一系列指令到游戏,如果你是要快速行走,请用speedwalk()

denyCurrentSend

denyCurrentSend()

禁止send指令到游戏,可配合sysDataSendRequest事件使用,如下示例:

-- cancels all "eat hambuger" commands
function cancelEatHamburger(event, command)
  if command == "eat hamburger" then
    denyCurrentSend()
    cecho("<red>Denied! Didn't let the command through.\n")
  end
end

registerAnonymousEventHandler("sysDataSendRequest", "cancelEatHamburger")

getCommandSeparator

getCommandSeparator()

返回玩家配置文件正在使用的命令分隔符。

sendGMCP

sendGMCP(command)

发送GMCP数据到服务器,对支持GMCP的服务端来说,可以有更多的操作

内容显示相关

echo

echo([miniconsoleName or labelName], text)

此函数在当前行的末尾追加文本。相似函数还有cecho(), decho(), hecho(), insertText(), cinsertText(), 当然lua自带的print也可以使用。

display

display(content)

和echo类似的函数,在屏幕上显示文本,但和echo相比,还可以直接显示table,更适合做脚本调试。

计时器

tempTimer

tempTimer(time, code to do[, repeating])

enableTimer

enableTimer(name)

disableTimer

disableTimer(name)

killTimer

killTimer(id)
-- or disable & enable a tempTimer you've made
timerID = tempTimer(10, [[echo("hi!")]])

-- it won't go off now
disableTimer(timerID)
-- it will continue going off again
enableTimer(timerID)

remainingTime

remainingTime(timer id number or name)

别名

tempAlias

aliasID = tempAlias(regex, code to do)

创建一个临时别名,此别名在重新启动mudlet后丢失。

permAlias

permAlias(name, parent, regex, lua code)

创建一个持久别名,该别名在重新启动Mudlet后保留,并显示在脚本编辑器中。

enableAlias

enableAlias(name)

disableAlias

disableAlias(name)

killAlias

killAlias(aliasID)

触发

feedTriggers

feedTriggers(text[, dataIsUtf8Encoded = true])

这个函数主要是用来测试触发,因为它发送的内容就像是游戏服务端发过来的内容一样,可以被客户端触发解析。 file 和Mudlet内置的这个别名效果一样。

模块与扩展包

getModules

getModules()

获取客户端安装的模块,可以用来自动安装或卸载模块。getPackages()是功能类似的函数。

--Check if the module myTabChat is installed and if it isn't install it and enable sync on it
if not table.contains(getModules(),"myTabChat") then
  installModule(getMudletHomeDir().."/modules/myTabChat.xml")
  enableModuleSync("myTabChat")
end

installModule

installModule(location)

安装模块,只能是本地文件(远程文件可以先下载再安装),可以是XML, zip, mpackage文件。

uninstallModule

uninstallModule(name)

reloadModule

reloadModule("mudren-mapper")

getPackages

getPackages()
--Check if the generic_mapper package is installed and if so uninstall it
if table.contains(getPackages(),"generic_mapper") then
  uninstallPackage("generic_mapper")
end

installPackage

installPackage(location or url)

安装扩展包,参数可以是本地文件,也可是网址(自动下载安装)

installPackage([[https://mud.ren/storage/mudren.mpackage.zip]])

uninstallPackage

uninstallPackage(name)

getMudletHomeDir

getMudletHomeDir()

返回当前配置目录

事件处理相关

关于事件,可直接看这里:mudlet机器人脚本开发基础:事件系统

registerAnonymousEventHandler

registerAnonymousEventHandler(event name, functionReference, [one shot])

注册匿名事件处理程序

killAnonymousEventHandler

killAnonymousEventHandler(handler id)

注销注册的匿名事件处理程序

raiseEvent

raiseEvent(event_name, arg-1, … arg-n)

raiseGlobalEvent

raiseGlobalEvent(event_name, arg-1, … arg-n)

内容处理相关

selectString

selectString([windowName], text, number_of_match)

replace

replace([windowName], with, [keepcolor])

setLink

setLink([windowName], command, tooltip)

如下示例,给移动方向增加可点吉链接,玩家可直接点方向移动: file

其它杂项

alert

alert([seconds])

让Mudlet图标在任务栏上闪烁提醒你

openWebPage

openWebPage(URL)

打开一个网页

openWebPage("https://bbs.mud.ren")

openUrl

openUrl (url)

打开一个网页

openUrl("www.mudlet.org")

connectToServer

connectToServer(host, port, [save])

连接到指定的游戏服务器。

disconnect

disconnect()

断开游戏连接

reconnect

reconnect()

重连游戏

closeMudlet

closeMudlet()

关闭游戏客户端

downloadFile

downloadFile(saveto, url)

下载文件

showColors

showColors([columns], [filterColor], [sort])

显示当前Mudlet中支持的颜色列表

京ICP备13031296号-4