查看: 243|回复: 22

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

[复制链接]

1

主题

2

回帖

237

积分

技术

积分
237
发表于 昨天 17:29 | 显示全部楼层 |阅读模式
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[k] = 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[key]
        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脚本基础服务端




本帖子中包含更多资源

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

x
Ctrl or ⌘ + Enter

14

主题

20

回帖

391

积分

中级会员

积分
391
发表于 4 小时前 | 显示全部楼层
头疼的500贡献  还有就是 图像是32位还是64位的 好奇

0

主题

9

回帖

141

积分

注册会员

积分
141
发表于 4 小时前 | 显示全部楼层
lua  看不懂啊

7

主题

9

回帖

422

积分

中级会员

积分
422
发表于 4 小时前 | 显示全部楼层

头疼的500贡献

0

主题

3

回帖

72

积分

注册会员

积分
72
发表于 3 小时前 来自手机 | 显示全部楼层
这样能搞的就多了,需要学习的也多了

25

主题

28

回帖

476

积分

中级会员

积分
476
发表于 3 小时前 | 显示全部楼层
看帖回一个是礼貌也是好习惯,嘿嘿

0

主题

1

回帖

43

积分

新手上路

积分
43
发表于 3 小时前 | 显示全部楼层
新手菜鸟才学习一下

11

主题

26

回帖

466

积分

中级会员

积分
466
发表于 3 小时前 | 显示全部楼层
大佬牛逼,感谢大佬无私分享!

0

主题

2

回帖

49

积分

新手上路

积分
49
发表于 3 小时前 | 显示全部楼层
前排前排,

2

主题

14

回帖

216

积分

中级会员

积分
216
发表于 2 小时前 | 显示全部楼层
大佬牛逼,感谢大佬无私分享!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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