|
GXX引擎 Lua脚本接口 >GXX引擎LUA脚本的优势优势:1、有别于其它引擎的LUA系统需要对NPC配置进行excel改造,GXX引擎LUA系统支持原始设计模式,GM学习成本低。
2、GXX引擎LUA系统支持混合编写。原生脚本和LUA脚本可在同一个txt文件中实现混编,简单逻辑可使用原生脚本,复杂逻辑可使用LUA高效实现。且两种类型的脚本可实现变量互通。
3、GXX引擎LUA系统使用最新版本的LUA 5.4.4,处理效率较以往LUA版本提升了一个数量级(十倍)。
4、GXX引擎LUA系统可对提供的对象任意挂接变量,变量可根据实际需要决定是否存盘。对变量的类型和数量不做限制。
使用示例:;TXT脚本部分[@MAIN]#ACTOPENMERCHANTBIGDLG 62 1259 1 4 0 0 1 427 7 1#SAY\ \{狂暴系统:/SCOLOR=21}\{开启狂暴后,人物打怪伤害+50%,爆率+50%/SCOLOR=21}\{被玩家杀死后,属性消失,杀人者获得30跨服币/SCOLOR=21}\{被怪物杀死不受影响,开启狂暴需要:60跨服币/SCOLOR=21}\你当前跨服币为:<$GAMEGIRD>\ \ \<开启狂暴/@main_1>[@main_1];使用LUA脚本交互完成以下功能#ACTRUNLUASCRIPT LuaTestVar.lua TestDemo--LUA脚本部分 LuaTestVar.lua--gSyStem、gNPC、gObject、gPlayer 是参与此脚本执行的四个当前全局对象--引用LUA函数库require "string"require "io"--LUA脚本部分function TestDemo()
--读取狂暴变量gPlayeroadVariables({ 'Berserker' })
--如果玩家身上灵符大于59则执行以下操作if gPlayer.GameGird > 59 and not gPlayer.Berserker thengPlayer.GameGird = gPlayer.GameGird - 60--改变狂暴状态gPlayer.Berserker = false--保存狂暴状态gPlayer:SaveVariables({ 'Berserker' })
--开启狂暴后给予货币、装备、技能--增加金币50000到玩家包裹gPlayer:IncGold(50000)
--通知客户端刷新金币gPlayer:SendGoldChanged()
--按物品名称创建物品local tmpItem = gSystem:CreateItemByName("在线回收(临时)")
--如果用户物品对象存在if tmpItem then--向指定人物加物品到背包if gPlayer:AddItemToBag(tmpItem) then--如果添加成功,则向客户端发送添加物品消息。
gPlayer:SendAddItem(tmpItem)
endend--负重量上限+200gPlayer.WAbility = { ['MaxWearWeight'] = gPlayer.WAbility.MaxWearWeight + 200 }--背包扩展页数+1gNPC:EXTBAGPAGECOUNT(gObject, gPlayer, '+', 1)
--扩展背包已开启格数+24gNPC:EXTBAGOPENITEMCOUNT(gObject, gPlayer, '+', 24)
gPlayer:SysMsg("你的大背包已经扩展成功!", 254, 255, 1)
--打开文件local tmpOpenFile = io.open(gSystem.M2Dir .. '\\Envir\\QuestDiary\\职业技能.txt', "r")
assert(tmpOpenFile, "read file is nil")
for tmpLine in tmpOpenFile:lines() do--按技能名称创建技能local tmpMagic = gSystem:CreateMagicByName(gPlayer, tmpLine)
--用户技能对象存在if tmpMagic thentmpMagic.Level = 3--添加技能对象,成功返回创建技能索引,失败则返回-1if gPlayer:AddMagic(tmpMagic) >= 0 thengPlayer:SendAddMagic(tmpMagic)
elsegPlayer:Free(tmpMagic)
endendendio.close(tmpOpenFile)
gSystem:SendTopBroadCastMsg('狂暴系统开启,被玩家杀死后,属性消失,被怪物杀死不受影响',249, 116, 10, 2, 1)
gSystem:SendCenterMsg(string.format('恭喜玩家【%s】开启狂暴!', gPlayer.Name), 249,0, 10)
elsegSystem:SendTopBroadCastMsg('你的跨服币不足或已经开启狂暴。', 253, 116, 10, 2, 1)
endendLUA常用库:1.string:字符串处理库,提供了字符串的一些基本操作,比如查找、替换、格式化等。
2.table:表处理库,提供了一些表的操作函数,比如插入、删除、排序、合并等。
3.math:数学库,提供了一些常用的数学函数,比如三角函数、指数函数、对数函数等。
4.io:I/O库,提供了对文件和流的读写操作。
5.os:操作系统库,提供了一些与操作系统相关的函数,比如获取当前时间、创建删除文件等。
6.debug:调试库,提供了一些用于调试的函数,比如获取函数调用栈信息、设置断点等。
7.package: 模块管理库,提供了模块加载、模块路径配置等功能。
除了以上的标准库,还有一些扩展库,它们不是默认加载的,需要通过调用require函数来加载,比如socket库用于网络编程、lfs库用于文件系统操作等。
需要注意的是,标准库的函数都是以全局函数的形式存在的,可以直接调用,比如string.sub、table.sort等。如果要自定义函数,建议使用局部函数的形式定义,以避免污染全局命名空间。
|
上一篇:传奇GXX引擎手游 Lua脚本接口下一篇:传奇手游架设配置nginx服务端教程GXX引擎
|