[HERO引擎]增加支持Lua脚本

[复制链接]
发表于 2018-7-25 23:47:17 | 显示全部楼层 |阅读模式
[HERO引擎]增加支持Lua脚本


功能:增加支持Lua脚本

Lua脚本用法:

       与之前所有NPC的脚本文件所放文件位置一样,原本脚本文件“NPC名字-地图编号.TXT”,用LUA就是“NPC名字-地图编号.LUA”。



注意: 当前M2脚本读取的方式是优先读取原本TXT脚本,在TXT脚本不存在时候去读取LUA脚本,如两种类型脚本都不存在则跳过此NPC脚本加载





Lua脚本例子: NPC名字-地图编号.LUA



   functionmain()

   localPlayer= GETOBJECT("PLAYER")

   NpcSay(Player.Name.." ,Hello,我是用LUA做成的NPC!\\<                              

倚天一出,谁与争锋!/AUTOCOLOR=253> \\<开始任务/@KAI>");                           

   //NPC对话内容

   end;



function KAI()      

   If Player.Level > 50 then                                                   

    //跳转的函数

   SetNewItemValue("1 1 + 5");

   SendMsg("5 你的武器增加了5点伤害!");

   end;

end;



function getIntPart(x)

   if x <= 0 then

      return math.ceil(x);

   end



      if math.ceil(x) == x then

      x = math.ceil(x);

   else

      x = math.ceil(x) - 1;

   end

   return x;

end






说明:

      遍现在NPC对话显示的内容需要用函数NpcSay来输出,对话内容支持以前脚本的字体、颜色、格式设置。

      同以前一样,函数跳转(脚本跳转)可用"@XXX"来跳转,需和要跳转的函数名完全一致,包括大小写。因为LUA脚本是严格区分大小写的。

      脚本执行函数(原#ACT)下的所有函数如带有参数,参数格式同原本脚本参数格式一致,如示例编写。

      LUA脚本的字符串连接符为“..”



LUA脚本的好处:

如果脚本编写者需要在脚本使用变量,类,函数,不需要再在M2上编写,

可以直接用脚本写出需要的东西,然后交由M2Q去解释处理就可以了



获取属性参考

Player.Name
人名

Player.Level
等级

Player.HP  
当前血量

Player.MaxHP
血量上限

Player.MP
当前蓝量

Player.MaxMP  
蓝量上限

Player.DC
攻击力

Player.MC
魔法力

Player.SC
道术力

Player.AC
防御力

Player.MAC
魔法防御力

Player.Weight
负重

Player.WearWeight
穿戴重量

Player.HandWeight
腕力

Player.CreditPoint
荣誉

Player.Gold
金币数量

Player.GameGold
元宝

Player.GameGlory
新荣誉

Player.nX
人物当前X坐标

Player.nY
人物当前Y坐标

Player.MapName  
人物当前地图




一、概述:

    M2Server 已(初步)加入了对Lua 脚本的支持,而需注意的是,M2Server所支持的 Lua 格式脚本,

    较之官方的 Lua语法略有变化,如调经验指令CHANGEEXP,可能会带有2个参数,

    老脚本的写法类似“CHANGEEXP + 100”,按 Lua 的官方写法,应是CHANGEEXP(“+”, “100”),

    而 M2Server 作了变通,GM可以更熟悉的方式来编写脚本CHANGEEXP("+ 100"),至于参数解析等工作,

    全交由M2Server处理,GM 无需考虑,只需熟悉这种简单的语法即可。



二、新脚本示例:



function      main()



local      role      =      GETOBJECT("PLAYER")



      NPCSAY(role.Name.."("..role.Level.."),<你好/AUTOCOLOR=253>\\      <开始任务/@kai>

<check调试/@chkdbg>\\")      

end



function      kai()      



      CHANGEEXP("+      100")



SENDMSG("0      你的经验增加了100点!")



end

function      chkdbg()

      if    CHECKBAGSIZE("35")      then

            NPCSAY("你的背包至少有      35      个空位!\\      \\<返回/@main>")

else

      NPCSAY("你的背包已没有      35      个空位\\      \\<返回/@main>")



end



end




三、新脚本语法规则说明:



正如上文示例所示,新脚本的语法有需注意的地方,如下:



1)、每个新脚本文件(通用的库文件除外),都应有main入口函数;

2)、新脚本系统预定义及处理了数个“变量”和函数,它们皆大写

3)、调用预定义的函数时(如CHANGEEXP),所有参数以字符串形式书写传递(如"+      100"); …

N)、待补充。




四、预定义变量:(亦即由M2Server导出的可在脚本中引用的变量)列表



1)、PLAYER,代表当前的角色对象,应以类似role = GETOBJECT("PLAYER")的形式获取之;

2)、NPC,代表当前的NPC对象,应以类似npc= GETOBJECT("NPC ")的形式获取之;




五、预定义函数:(亦即由M2Server导出的可在脚本中引用的函数)列表



1)、GETOBJECT,获取某个变量,已支持获取当前角色及NPC对象(如上);

2)、NPCSAY

3)、SENDMSG

4)、所有HERO支持的老脚本指令




六、角色属性列表



M2Server导出了一些可在脚本中以类似“role.XX”的形式引用的角色属性,以供方便快捷的读取角色信息,列表如下:



1)、Name
c7)、DC
13)、MaxWeight

2)、Level
8)、MC
14)、WearWeight

3)、HP
9)、SC
15)、MaxWearWeight

4)、MaxHP
10)、AC
16)、HandWeight

5)、MP
11)、MAC
17)、MaxHandWeight

6)、MaxMP
12)、Weight
18)、CreditPoint  …等等。

注意:应先“role      =      GETOBJECT("PLAYER")”获取role对象,才可引用role的诸属性。






上一篇:[HERO引擎]禁止登录列表控制详解
下一篇:圣灵系统技能使用说明
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标记上【已解决】;
如果你想回报坛友,最好的方法是为其加【人气】积分,为他人加人气积分不会扣除自己的积分,去做一个懂得回报的人吧;
如果你觉得对方帖子非常优秀,还可以给作者打赏【金币】,打赏会扣除自己等量【金币】;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|传奇GM论坛 ( 湘ICP备16009886号-2 )|网站地图

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.

禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.如遇版权问题,请及时QQ联系(2364142471)

今天是: | 本站已经安全运行: //这个地方可以改颜色

9pk | 9ss | 99j | 88a | haosf | zhaosf | laomir | qusf | 2hq | 6xq

热血传奇 | 英雄合击 | 贪玩蓝月 | 手机版传奇 | 网页版传奇 | 单职业传奇 | 传奇服务端 | 传奇广告代理 | 传奇广告价格表

传奇引擎 | 传奇版本 | 传奇脚本 | 传奇工具 | 传奇加速器 | 传奇登陆器 | 传奇教程 | 传奇论坛 | 传奇广告发布 | 传奇版本下载站

复古传奇 | 金币传奇 | 打金传奇 | 轻变传奇 | 微变传奇 | 中变传奇 | 超变传奇 | 变态传奇 | 合击传奇 | 连击传奇 | 迷失传奇 | 单职业传奇 | 开区模板

51LA统计
快速回复 返回顶部 返回列表