曲江轻舟

脚本函数

定时器脚本和触发器脚本主要是通过函数来实现期望功能的。

Easymud中可以被用户使用的函数分为三类:

  1. Lua 5.4虚拟机提供的函数。

  2. Easymud提供给用户的内置函数。

  3. 用户自定义函数。

Lua 5.4基础函数

Lua虚拟机提供了很多基础函数,为用户实现目标功能提供了极大的便利。

Lua 5.4参考手册官网地址:Lua 5.4 Reference Manual - contents

官网可能访问速度很慢,本站提供了Lua官网内容的副本 Lua 5.4 参考手册

内置函数

Easymud应用提供一些函数,可被触发器脚本和定时器脚本调用,这些函数是与游戏互动操作所必要的。

用户函数

用户自己编写的函数。通过定时器编辑器和触发器编辑器界面,用户可以编写自己的函数。当满足定时器时间条件或触发器的触发条件,应用就会执行用户脚本中的函数。

用户函数 = 用户代码 + [ 内置函数 ] + [ 基础函数 ]。

function my_func(total)
    debug("执行函数my_func")
    for i = 1, total do
        debug(""..(math.max(i, 5)))
        sleep(500)
    end
end

my_func(10)

内置函数列表

应用内置的函数在逐渐增加中,下面列出已提供的内置函数。

函数名 功能 出现版本 作废版本 更新版本
echo 在本地窗口回显信息。 1.0.0 1.1.0
cmd 向Mud服务器发送命令或命令序列。 1.1.0 1.1.7
sleep 休眠/等待一段时间。 1.0.0
tm 启用/禁用定时器组定时器 1.5.4
trg 启用/禁用触发器集合触发器 1.5.4
set 设置应用级变量。 1.1.0 1.1.4
get 获取应用级变量。 1.1.0
debug 在本地窗口输出调试信息,带有时间戳前缀。 1.0.0 1.1.4
clear_console 清空编辑器界面的日志消息。 1.0.0
send_cmd 向Mud服务器发送消息。已作废,简化为cmd 1.0.0 1.1.0
toggle_timer 启用/禁用定时器。已作废,简化为timer 1.0.0 1.1.0
timer 启用/禁用定时器。已作废,优化为tm 1.1.0
toggle_timer_group 启用/禁用定时器组。已作废,简化为timers 1.0.0 1.1.0
timers 启用/禁用定时器组。已作废,优化为tm 1.1.0
toggle_trigger 启用/禁用触发器。已作废,简化为trigger 1.0.5 1.1.0
trigger 启用/禁用触发器。已作废,优化为trg 1.1.0
toggle_trigger_set 启用/禁用触发器集合。已作废,简化为triggers 1.0.5 1.1.0
triggers 启用/禁用触发器集合。已作废,优化为trg 1.1.0

版本说明:

  • 出现版本,是指从某个版本开始加入的,之后的版本都有效。

  • 作废版本,是指从某个版本开始作废的,之后的版本不再支持。

  • 更新版本,是指某个版本之后函数的参数或功能有所调整。

内置函数详情

下面列出内置函数的详细说明:函数的形参类型,功能说明,形参说明,用法示例。

echo

echo(string|integer|number|boolean|table|function|error|userdata)

在本地窗口显示指定的字符串内容。

  1. 需要显示的信息,支持所有lua数据类型。
echo("hello world!")
echo(123.45)

cmd

cmd(string)

向服务端发送指定的命令。

  1. string 需要发送的命令字符串。如果命令字符串以"#"开头,则可通过";"连接命令序列,命令序列中每个子命令若以整数n开头则会重复发送n次。
cmd("dazuo 100")
cmd('id here')
cmd("#n;2e;ne;nw;localmap")

注:在命令行直接以"#"开头,即可输入命令序列。

sleep

sleep(integer)

休眠或等待一段时间,单位毫秒。

  1. integer 休眠或等待时长,大于0的整数值。
cmd("nw")
sleep(2000)
cmd("e")

tm

tm(boolean, string [, string] )

启用或禁用定时器组定时器

  1. boolean true启用,false禁用。

  2. string 定时器组名。

  3. string 可选的,定时器项名。当未提供该参数时,对定时器组进行操作;当提供了该参数时,对组内的项目进行操作。如果是启用项目操作,则会自动启用所在的组。

-- 禁用名为“定时吃喝”的定时器组
tm(false, "定时吃喝")

-- 启用定时器组“定时吃喝”中的“喝水”项,同时自动启用该组,使得目标定时器可以运行。
tm(true, "定时吃喝", "喝水")

trg

trg(boolean, string [, string] )

启用或禁用触发器集合触发器

  1. boolean true启用,false禁用。

  2. string 触发器集合名。

  3. string 可选的,触发器名。当未提供该参数时,对触发器集合进行操作;当提供了该参数时,对集合内的触发器进行操作。如果是启用触发器操作,则会自动启用所在的集合

-- 禁用集合
trg(false, "练功修炼")


-- 启用触发器
trg(true, "练功修炼", "打坐1")

set

set(string, string|integer|number|boolean|table|nil)

设置应用级变量,将会同步到应用内的所有虚拟机实例中。普通的lua全局变量仅在当前虚拟机中可见,而应用级变量则是在应用内所有的虚拟机实例中都可见。

  1. string 变量名。

  2. string|integer|number|boolean|table|nil 变量值。

set("sai", "say hi")

fruits = { "banana", "watermelon", "orange" }
set("fruits", fruits)

get

get(string)

获取应用级变量,目标变量由所有虚拟机共享。

  1. string 变量名。
get("sai")

debug

debug(string|integer|number|boolean|table|function|error|userdata)

A. 如果在定时器配置窗口,或触发器的配置窗口执行脚本试运行功能,则debug会在日志栏输出字符串内容;

B. 如果在后台运行的脚本服务中调用了debug函数,则会在用户主窗口中输出字符串内容。

每次调用debug都会先输出当前时间。

  1. 待显示的信息,支持所有lua数据类型。
a = 10
debug("变量 a = "..a)

clear_console

clear_console()

清空定时器或触发器配置界面的日志窗口内容。

clear_console()

timer

timer(string, string, boolean)

已弃用,将在2.0版停用。请改用tm函数。

启用或禁用定时器项。

  1. string 定时器组名。

  2. string 定时器项名,是在第一个参数指定的组内的项名。

  3. boolean 值为true启用,false禁用。

timer("定时吃喝", "喝水", false)

timers

timers(string, boolean)

已弃用,将在2.0版停用。请改用tm函数。

启用或禁用定时器组。

  1. string 定时器组名。
timers("定时吃喝", true)

trigger

trigger(string, string, boolean)

已弃用,将在2.0版停用。请改用trg函数。

启用或禁用触发器。

  1. string 触发器集合名。

  2. string 触发器名,该触发器必须位于第一个参数指定的集合中。

  3. boolean 值为true启用,false禁用。

trigger("门派任务", "捡柴火", false)

triggers

triggers(string, boolean)

已弃用,将在2.0版停用。请改用trg函数。

启用或禁用触发器集合。当启用或禁用时,目标集合内的所有触发器都同时被启用或禁用。触发器下的表达式不受影响。

  1. string 触发器集合名。

  2. boolean 值为true启用,false禁用。

triggers("练功修炼", true)