GXX引擎 Lua腳本接口 >GXX引擎LUA腳本的優勢優勢:1、有別于其它引擎的LUA系統需要對NPC配置進行excel改造,GXX引擎LUA系統支持原始設計模式,GM學習成本低。
2.png (89.64 KB, 下載次數: 312)
下載附件
2023-12-28 11:16 上傳
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()
--讀取狂暴變量gPlayer oadVariables({ '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等。如果要自定義函數,建議使用局部函數的形式定義,以避免污染全局命名空間。
|
|