搜索
查看: 6932|回复: 29

Lua编辑的基础问题供新手解惑

[复制链接]
发表于 2020-7-28 21:53:54 | 显示全部楼层 |阅读模式
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

参与人数 9金钱 +40 热心值 +9 收起 理由
零零久 + 1
年少轻狂 + 1 很给力!
HGE-青山依旧丶 + 10 + 1
1580 + 10 + 1 建议使用专门的LUA工具(LuaEditor),相对.
HGE-风雨同舟 + 10 + 1 很给力!
命运的馈赠 + 1 来,给我管理员,我给他个精彩.
咔咔咔咔咔咔 + 1 很给力!
忽如一夜春风来 + 10 + 1 赞一个!
HGE-喵神 + 1 很给力!

查看全部评分

发表于 2020-7-28 22:05:09 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-28 22:10:08 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-28 22:10:12 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-28 22:35:45 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-28 23:30:12 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-28 23:39:51 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-29 00:02:13 | 显示全部楼层
此帖仅作者可见
发表于 2020-7-29 00:03:04 | 显示全部楼层
此帖仅作者可见
 楼主| 发表于 2020-7-29 00:12:25 | 显示全部楼层
此帖仅作者可见
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|HGEM2论坛

GMT+8, 2024-11-21 19:51 , Processed in 0.565712 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表