565118008 发表于 7 天前

VVM2引擎20260520最新Lua + txt脚本基础服务端

VV引擎目前对Lua支持已趋于成熟,原生支持 Lua 脚本 + 传统 txt 脚本双模式,Lua 是其高级脚本核心,用于实现复杂玩法、
自定义 NPC、任务、副本、后台逻辑、前后端互通等,扩展性远强于传统脚本。


1.目录结构:


2.具体文件用途释义

QFunction-0.lua
QFunction.lua封装了QF中的各种触发LUA版本。
QFunction.lua在引擎启动以及热重载时会自动执行一次,
那么用户可在Qf中定义一些初始化函数或是全局常量以便后用


例如:
for k, _ in pairs(package.loaded) do
if string.find(k, '^Envir/Lua/') then
    package.loaded = nil
end
end

function MainError(errinfo)
if errinfo then
    print('脚本错误', errinfo)
end
end

local function init()
dofile('Envir/Lua/Main.lua')
require("Envir/Lua/初始化")
require("Envir/Lua/CfgVar")
end

local result, errinfo = pcall(init)
if not result then
print('脚本错误', errinfo)
end

这二十多行代码就实现了用户热重载自定义Lua目录脚本的作用,用户的脚本不再局限于market_def目录,
可放置到Envir下的Lua目录,并且这些代码不再局限main入口,可根据用户喜好随意定义!

下面我简单讲解一下原理
QFunction-0.lua中打开并运行Envir/Lua/Main.lua文件,利用lua的元方法定义了一个全局表Npclib,
表Npclib存放有Envir/lua/Npc目录下所有脚本文件,并且每次引擎在热重载脚本会将缓存中脚本文件下标清除,
再利用元方法重置全局表Npclib,以此实现了Envir/lua/Npc目录下所有脚本文件的热更新


参考代码:

local npcliby = {}
npcliby["anniu"] = dofile("Envir/Lua/Npc/anniu.lua")
Npclib = setmetatable(npcliby,{__index = function(Npclib,key)
      local fun = dofile("Envir/lua/Npc/"..key..".lua")
      if fun then
            rawset(Npclib,key,fun)
            return Npclib
      else
            print("调用NPC函数失败id:("..key..")")
            return nil
      end
    end
})

核心作用:Npclib 是一个「自动加载 NPC 脚本」的工具表
当你使用 Npclib.xxx 时,它会自动去读取 Envir/lua/Npc/xxx.lua 文件,并把文件内容缓存起来,下次直接用,不用重复加载。
3.Envir用户脚本区
书写NPC形式的脚本,还是和普通脚本一致,在market_def或者questdiary文件夹内书写。加载方式还是配置merchant.txt进行应用。唯一不同的地方就是脚本后缀不是TXT,而是LUA。例如脚本名字为 传送员-0.txt , LUA脚本只需要改为传送员-0.lua放到同样的位置即可。当同名txt脚本和同名.lua脚本同时存在时,优先读取lua脚本。如果没有找到同名的Lua脚本,则会继续读取同名.txt的传统脚本。所以LUA是双脚本同时存在的。因此,如果感觉写LUA吃力,可以继续使用擅长的TXT写脚本。

此版本仅包含普通商人NPC、传送NPC及各城镇老兵,包括lua和对应的txt脚本,初学者可对应比照学习

部分游戏参考图:












下载地址:
VVM2引擎20260520最新Lua脚本基础服务端

VVM2引擎20260520最新txt脚本基础服务端




tao404404 发表于 6 天前

头疼的500贡献还有就是 图像是32位还是64位的 好奇

619780303 发表于 6 天前

lua看不懂啊

3305252108 发表于 6 天前


头疼的500贡献

苍山暮色 发表于 6 天前

这样能搞的就多了,需要学习的也多了

hsx8998283 发表于 6 天前

看帖回一个是礼貌也是好习惯,嘿嘿

cutenuts 发表于 6 天前

新手菜鸟才学习一下:lol:lol:lol

ggl1981 发表于 6 天前

大佬牛逼,感谢大佬无私分享!

1181070768 发表于 6 天前

前排前排,

cy4230 发表于 6 天前

大佬牛逼,感谢大佬无私分享!
页: [1] 2 3 4 5 6
查看完整版本: VVM2引擎20260520最新Lua + txt脚本基础服务端