跳至主要內容

初窥 Lua

鸵鸟工作室大约 3 分钟脚本Lua

别担心. 这个章节并不是要教你写很复杂的代码. 只是告诉你一些小技巧.

还是从上一章的例子开始

CMD("等待", "延迟", 45)
CMD("出兵", "绿皮", 3)
CMD("出兵", "大壮", 2)

CMD("等待", "延迟", 45)
CMD("出兵", "绿皮", 10)
CMD("出兵", "大壮", 10)

CMD("等待", "延迟", 45)
CMD("出兵", "绿皮", 10)
CMD("出兵", "大壮", 10)
CMD("出兵", "长矛", 8)

CMD("等待", "延迟", 45)
CMD("出兵", "绿皮", 10)
CMD("出兵", "大壮", 10)
CMD("出兵", "长矛", 8)

CMD("等待", "延迟", 50)
CMD("出兵", "绿皮", 10)
CMD("出兵", "大壮", 10)
CMD("等待", "延迟", 10)
CMD("出兵", "紫皮", 8)
CMD("出兵", "运兵车", 2)
CMD("等待", "延迟", 10)
CMD("出兵", "巫医", 3)

Math.random

Lua内置了许多基础方法. 这里我们比较常用的就是random.

调用math.random(n,m) 就可以在 n <= x <= m 的范围内随机取得一个整数

所以如果你想给脚本中增加一些随机性 可以这样写:

CMD("出兵", "绿皮", math.random(2,6))

注释

注释 对于Lua来说是会被直接忽略掉的. 但是这可以帮助我们更好的梳理代码结构.相当于我们自己的备忘录.

当一行以两个横线开头-- 后续的内容就不会执行

注释的主要作用是 一个是备忘录,另外一个就是临时删除掉一些内容. 比如:

-- 以下的内容是第三波的怪
CMD("等待", "延迟", 50)
CMD("出兵", "绿皮", 10)
CMD("出兵", "大壮", 10)
CMD("等待", "延迟", 10)
CMD("出兵", "紫皮", 8)  -- 首次出现紫皮怪
CMD("出兵", "运兵车", 2)
CMD("等待", "延迟", 10)
-- 可以把原本的代码注释掉.这样就不会执行了
-- CMD("出兵", "巫医", 3)

函数

函数可以理解为一组代码块. 是一种组织代码的方式. 这个讲解起来比较抽象.

还是直接上例子吧.

如果不理解 可以用 lua 函数,什么是函数 等关键字搜索一下.

比如对于开头的那串代码 可以修改为

function Init(...)
    -- 第1波
    CMD("等待", "延迟", 45)
    StartWave1()

    -- 第2波
    CMD("等待", "延迟", 45)
    StartWave2()

    -- 第3波
    CMD("等待", "延迟", 45)
    StartWave3()

    -- 第4波
    CMD("等待", "延迟", 45)
    StartWave4()

    -- 第5波
    CMD("等待", "延迟", 50)
    StartWave5()
end

function StartWave1()
    CMD("出兵", "绿皮", 3)
    CMD("出兵", "大壮", 2)
end

function StartWave2()
    CMD("出兵", "绿皮", 10)
    CMD("出兵", "大壮", 10)
end

function StartWave3()
    CMD("出兵", "绿皮", 10)
    CMD("出兵", "大壮", 10)
    CMD("出兵", "长矛", 8)
end

function StartWave4()
    CMD("出兵", "绿皮", 10)
    CMD("出兵", "大壮", 10)
    CMD("出兵", "长矛", 8)
end

function StartWave5()
    CMD("出兵", "绿皮", 10)
    CMD("出兵", "大壮", 10)
    CMD("等待", "延迟", 10)
    CMD("出兵", "紫皮", 8)
    CMD("出兵", "运兵车", 2)
    CMD("等待", "延迟", 10)
    CMD("出兵", "巫医", 3)
end

Init函数

注意

如果你要使用函数的方式组织代码.请确保所有的代码都放置在函数内

边境军团有一些固定的函数名. 比如这里用到的Init函数.也就是所有代码的入口.

函数的作用

上面这个例子 和开头的脚本是等效的. 也就是两个执行起来没有任何的区别.

对于简单的脚本来说.不使用函数的方式 看起来更简洁.并且更加有利于在手机上编辑.

不过使用函数的方式组织代码后.结构更加清晰. 比如上面的代码

出怪间隔 都是在Init函数内控制的. 每一个StartWave*函数都是控制具体的要出什么怪.

所以因人而异. 选择一种你比较喜欢的方式编辑即可.

不过需要注意的是. 如果一但使用函数的方式组织代码. 请确保所有的代码都放置在某个函数内.

上次编辑于:
贡献者: Eran