CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
入门夯实996引擎模块require

【入门夯实】模块返回值的多种形态:require拿到什么

2026-09-24 20:44 作者:996 技术组 0 阅读 996引擎Lua教程传奇脚本入门夯实996引擎Lua模块require

学员常见误区

模块文件末尾漏写 return,require 返回的是 true(文件执行成功的标记)而不是数据——调用方拿 true 当表用,取字段报 attempt to index a number value。另一类错误是模块顶层直接执行重初始化(读配置、连数据),两次 require 时机不同拿到半成品表,字段一半 nil。错误场景:

lua
local guild = require("guild_mod")
guild.members()

guild_mod.lua 末尾没有 return,guild 是 true,报错信息让学员一头雾水。

正确姿势

模块统一返回一张本地表 M,重活收进 M.init() 由入口显式调用,加载与初始化解耦。攻城模块拆成配置、结算、播报三个文件,统一表返回。示例代码如下:

lua
local M = {}
M.cfg = { siegeGold = 800000, taxRate = 5 }
function M.init()
    sendmsg(nil, 1, "攻城模块初始化完成,税率 " .. M.cfg.taxRate .. "%")
end
function M.settle(winGuild)
    sendmsg(nil, 1, winGuild .. " 攻占沙巴克,缴获 " .. M.cfg.siegeGold .. " 金币")
end
return M

调用方 require 拿到 M 表,init 时机由入口控制,重复 require 只执行一次文件体、共享同一张 M。示例代码如下:

lua
local siege = require("siege_mod")
siege.init()
siege.settle("兄弟情深")

两行完成初始化与结算,文件体零副作用。

引擎验证

三步验证:注释掉 return 行,观察 require 返回 true 与后续报错;两个脚本各自 require 同一模块,修改 M.cfg 后互相可见(同一张表);把 init 里的输出挪到文件顶层,对比两次加载时机差异。

举一反三

模块也可以返回函数(工厂形态):每次调用返回独立实例,适合多副本各自持有一份计数器的场景。示例代码如下:

lua
return function(start)
    local n = start or 0
    return function()
        n = n + 1
        return n
    end
end

工厂每次调用生成新闭包,两份计数器互不干扰,与共享单例的 M 表形成两极。

作者履历与出处

本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。

← 返回文章地图返回研学路径

最新技术文章 · 实战干货

LATEST ARTICLES

全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →

策划架构996引擎

【策划架构】帮会试炼场:限时挑战的门票与积分设计

设计初衷 帮会活动只有攻城与聚餐两板斧:非攻城日帮会频道冷清,成员缺乏共同目标。帮会试炼场设计:帮会自有试炼场(限时挑战波次…

2026-09-26 03:53 996 技术组 · 0 阅读
策划架构996引擎

【策划架构】帮会会费:成员会费的收缴与公示设计

设计初衷 帮会资金靠少数大佬捐献:金主一走帮会资金断崖,普通成员没有参与感也不会珍惜帮会资源。帮会会费设计:成员按职位每周缴…

2026-09-26 03:53 996 技术组 · 0 阅读
策划架构996引擎

【策划架构】募兵编制:帮会扩军的募兵与编制作业设计

设计初衷 帮会扩张靠熟人拉人:增长有天花板、新人质量参差、老人不愿带新。募兵编制设计:帮会发布募兵任务包(新人完成入帮任务即…

2026-09-26 03:53 996 技术组 · 0 阅读
高级技巧996引擎

【高级技巧】协程超时兜底:resume与pcall的组合封装

底层原理 协程体内出错时 resume 返回 ok=false 与错误对象,但协程体若死循环则 resume 永久挂起——错…

2026-09-26 03:53 996 技术组 · 0 阅读
高级技巧996引擎

【高级技巧】协程双向通信:resume传参与yield回传封装

底层原理 coroutine.resume 的实参会在协程内成为首个 yield 的返回值;coroutine.yield …

2026-09-26 03:53 996 技术组 · 0 阅读
进阶实战996引擎

【进阶实战】摆摊自动补货:摊位库存的定时补齐封装

业务场景 挂摊卖药每小时断货:玩家下线前上满货,两小时后摊位空转。摊位自动补货封装:上摊时设定补货仓库(背包或帮会仓),定时…

2026-09-26 03:53 996 技术组 · 0 阅读