1.首先我们先要明白函数这个概念,其实说认真点很难懂,但说白话就是设定一个框。这个框引擎自带的已经设定好了,新手就不需要动了。
来看看实例,就拿技能回调这个最近比较火的来看看吧
例:C:\Mirserver3\Mir200\LuaScripts\System目录下找到init.lua和BindEvent.lua 这2个文件。
我们打开init.lua如图:
什么是“请释放指定事件的注释”?
在lua语言中“--”,2个横杠代表注释,意思就是在横杠后面的内容不会读取和运行,只是供提醒标注使用的内容
去掉后跟其他的区别,这里一目了然了,去掉2个横杠后这说明这条命令已经在运行了。这可以说所谓的开关吧!
再打开BindEvent.lua ,再其中找到技能回调的内容(可以直接用搜索)如图:
如上图红色框部分:--使用技能回调。
这里的--就是注释,方便写作者找到对应的位置。这个下面不在提了 ,应该懂得--的用法了吧
好 ,我们看看写法
--使用技能回调
function on_DoSpellSkill(Actor, TagActor, nPoint)
local Actorname = Actor:getCharName() --取使用技能者名字
local TagActorname = TagActor:getCharName() --取被技能命中者名字
local ActorFasguinRing= "喵神953cq" --赋值ActorFasguinRing为喵神953cq
local ActorRingR = Actor:getRingR() --取使用者右戒指
local ActorRingL = Actor:getRingL() --取使用者左戒指
local MiaoShen = 10 --设置血量固定比例
local TagActorHp = TagActor:getHp() --取被技能命中者当前血量
local TagActorMaxHp = TagActor:getMaxHp() --取被技能命中者最大血量
local TagActorHpPercentageB = math.round(TagActorHp / TagActorMaxHp * 100) --取当前血量比例
local ActorRandom = math.random(1,100) --取1到100的随机值
local TagActorRace = TagActor:getRace() --取种族
--这里说几个常见的问题
--1,local 这个命令要牢牢记住,是设定临时变量的命令
--2,local后面橙色的部分是根据个人习惯来自行编写的,当然我这里是自己的习惯,整洁才是王道。
--3,“=”号是赋值的意思,不是等于!而“==”才是等于的意思!
--4,“=”号后面的这些命令去说明书查找,对应的是什么一目了然。我这里在后面也注释了,注释一定要常用,再好的脑子不如记录。
--5,当我们这些变量都设定完成了以后那我们要做什么呢?这就牵扯到语法、关系命令等问题。看看下面比较简单的一个写法。
if (ActorRingR == ActorRing or ActorRingL == ActorRing) and (TagActorHpPercentageB <= MiaoShen) and (ActorRandom <= 10) and (TagActorRace ~= 0 and TagActorRace ~= 66) then
--这一段白话:如果(if)右戒指(ActorRingR)等于喵神953cq(ActorRing)或者左戒指(ActorRingL)等于喵神953cq(ActorRing)并且(and)当前血量比例(TagActorHpPercentageB)等于血量固定比例(MiaoShen)并且(and)取1到100的随机值(ActorRandom)小于等于(<=)10并且(and)击打的种族(TagActorRace)不是(~=)0(本体)并且(and)击打的种族(TagActorRace)不是(~=)66(英雄)那么(Then)
--其实一个if内可以写很多的或者,和,这样的检测,我看很多人还是很多if开头的写,正规很重要!
TagActor:setHp(0) --设置当前血量为0,0就是死亡喽,不用老想着怎么死,有的人找死亡命令都找疯了。我群里面问的很多
s.obj.sendBroadcastMsg("["..TagActorname.."]剩余血量["..TagActorHp.."]被["..Actorname.."]斩杀了!")
--全服通告的命令,这里注意".."这个命令是连接,变量与文字的命令,切记,变量跟文字串在一起一定要用这个,否则报错,不要问为什么,记住就行,这就是语法规则!
end --结束 if-then-end 这是完整的一段。
print() --使用技能时回调
end
下面贴一下常用的命令,网上都有,可以自己找,我也是贴一下。
算术运算符下表列出了 Lua 语言中的常用算术运算符,设定 A 的值为10,B 的值为 20: 操作符 | 描述 | 实例 | + | 加法 | A + B 输出结果 30 | - | 减法 | A - B 输出结果 -10 | * | 乘法 | A * B 输出结果 200 | / | 除法 | B / A w输出结果 2 | % | 取余 | B % A 输出结果 0 | ^ | 乘幂 | A^2 输出结果 100 | - | 负号 | -A 输出结果 -10 |
关系运算符下表列出了 Lua 语言中的常用关系运算符,设定 A 的值为10,B 的值为 20: 操作符 | 描述 | 实例 | == | 等于,检测两个值是否相等,相等返回 true,否则返回 false | (A == B) 为 false。 | ~= | 不等于,检测两个值是否相等,相等返回 false,否则返回 true | (A ~= B) 为 true。 | > | 大于,如果左边的值大于右边的值,返回 true,否则返回 false | (A > B) 为 false。 | < | 小于,如果左边的值大于右边的值,返回 false,否则返回 true | (A < B) 为 true。 | >= | 大于等于,如果左边的值大于等于右边的值,返回 true,否则返回 false | (A >= B) 返回 false。 | <= | 小于等于, 如果左边的值小于等于右边的值,返回 true,否则返回 false | (A <= B) 返回 true。 |
逻辑运算符下表列出了 Lua 语言中的常用逻辑运算符,设定 A 的值为 true,B 的值为 false: 操作符 | 描述 | 实例 | and | 逻辑与操作符。 若 A 为 false,则返回 A,否则返回 B。 | (A and B) 为 false。 | or | 逻辑或操作符。 若 A 为 true,则返回 A,否则返回 B。 | (A or B) 为 true。 | not | 逻辑非操作符。与逻辑运算结果相反,如果条件为 true,逻辑非为 false。 | not(A and B) 为 true。
|
其他运算符下表列出了 Lua 语言中的连接运算符与计算表或字符串长度的运算符: 操作符 | 描述 | 实例 | .. | 连接两个字符串 | a..b ,其中 a 为 "Hello " , b 为 "World", 输出结果为 "Hello World"。 | # | 一元运算符,返回字符串或表的长度。 | #"Hello" 返回 5 |
|