GM-爱好者

 找回密码
 立即注册

在线
客服

在线客服服务时间: 10:00-20:00{不定期回复}

选择下列客服马上在线沟通:

快速
发帖

客服
热线

290016403
7*24小时客服服务热线

关注
微信

关注Q群二维码
顶部
查看: 524|回复: 15

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

[复制链接]
等级头衔

等級:知府

Rank: 12Rank: 12Rank: 12

积分成就
精华
0
G币
0
主题
32
帖子
424
金币
5121

建功勋章

最佳新人活跃会员

发表于 2023-10-29 18:53:00 | 显示全部楼层 |阅读模式

马上注册 立即下载

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

x
[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的诸属性。
等级头衔

等級:县丞

Rank: 7Rank: 7Rank: 7Rank: 7

积分成就
精华
0
G币
0
主题
0
帖子
548
金币
9177

建功勋章

最佳新人活跃会员

发表于 2023-10-29 19:55:46 | 显示全部楼层
楼主,我太崇拜你了!我想我是一天也不能离开GM爱好者:www.gmahz.com
等级头衔

等級:等待验证会员

积分成就
精华
0
G币
0
主题
0
帖子
9968
金币
169592

建功勋章

发表于 2023-11-1 04:18:01 | 显示全部楼层
路过支持一下
等级头衔

等級:等待验证会员

积分成就
精华
0
G币
0
主题
0
帖子
503
金币
8369

建功勋章

发表于 2023-11-1 11:43:57 | 显示全部楼层
其实我一直觉得楼主的品味不错!呵呵!GM爱好者:www.gmahz.com太棒了!
等级头衔

等級:什长

Rank: 3Rank: 3Rank: 3

积分成就
精华
0
G币
0
主题
0
帖子
78
金币
832

建功勋章

发表于 2023-11-1 18:08:57 | 显示全部楼层
既然你诚信诚意的推荐了,那我就勉为其难的看看吧!GM爱好者:www.gmahz.com不走平凡路。
等级头衔

等級:县令

Rank: 8Rank: 8

积分成就
精华
0
G币
0
主题
0
帖子
519
金币
1694

建功勋章

最佳新人活跃会员

发表于 2023-11-2 10:13:57 | 显示全部楼层
楼主太厉害了!楼主,I*老*虎*U!我觉得GM爱好者:www.gmahz.com真是个好地方
等级头衔

等級:郡守

Rank: 13Rank: 13Rank: 13Rank: 13

积分成就
精华
0
G币
0
主题
36
帖子
528
金币
8481

建功勋章

最佳新人活跃会员

发表于 2023-11-3 02:10:34 | 显示全部楼层
我看不错噢 谢谢楼主!GM爱好者:www.gmahz.com越来越好!
等级头衔

等級:郡王

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
精华
0
G币
0
主题
0
帖子
9897
金币
167968

建功勋章

热心会员推广达人宣传达人灌水之王突出贡献最佳新人活跃会员

发表于 2023-11-4 10:10:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
等级头衔

等級:县令

Rank: 8Rank: 8

积分成就
精华
0
G币
0
主题
0
帖子
551
金币
1745

建功勋章

最佳新人活跃会员热心会员灌水之王

发表于 2023-11-14 11:08:11 | 显示全部楼层
金币我要攒金币!!!
等级头衔

等級:郡王

Rank: 14Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
精华
0
G币
0
主题
44
帖子
958
金币
6661

建功勋章

热心会员灌水之王最佳新人活跃会员

发表于 2023-11-15 03:35:39 | 显示全部楼层
楼主,大恩不言谢了!GM爱好者:www.gmahz.com是最棒的!
*滑块验证:
懒得打字嘛,点击右侧快捷回复 【GM爱好者:www.gmahz.com】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|GM-爱好者 ( 赣ICP备20009465号-1 )|网站地图

GMT+8, 2024-9-30 12:20 , Processed in 0.212814 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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