课时 16 · 阶段项目:装备系统模块

课时 16 · 阶段项目:装备系统模块(Lua 进阶):综合运用进阶知识完成模块级项目。示例跑在 996 新三端引擎里,接口按本地官方文档逐个核对。

教程/第二部分 · Lua 进阶更新于 2026-10-074 个小节 教程第 19 / 23 篇 Lua进阶

本课的代码跑在 996 引擎里,用到的是服务端接口(changeexp、 SetInt 这类),在线运行器里没有这些函数。 每个函数的签名都能在 文档检索 里按名字查到原文。

本课目标

  • 综合运用进阶知识完成模块级项目。

知识讲解

项目:装备类(属性加成)+ 背包联动 + 装备强化。要求:装备对象用 OOP 建模,含基础属性与强化等级;强化受成功率影响,失败降级;装备属性随强化等级动态计算;背包与装备之间可穿戴、卸下联动。本项目综合模块设计、面向对象、元表、错误处理与测试,是进入引擎开发前最后一次纯 Lua 训练。

示例:装备类骨架

local Equip = {}
Equip.__index = Equip

function Equip.new(name, baseAtk)
    local self = setmetatable({}, Equip)
    self.name = name
    self.baseAtk = baseAtk
    self.level = 0
    return self
end

function Equip:attack()
    return self.baseAtk + self.level * 5   -- 每级 +5
end

function Equip:upgrade()
    if math.random(1, 100) <= 80 then
        self.level = self.level + 1
        return true
    end
    if self.level > 0 then self.level = self.level - 1 end
    return false
end

local sword = Equip.new('木剑', 10)
for i = 1, 5 do sword:upgrade() end
print(sword.name, sword.level, sword:attack())

练习任务

  • 完成装备系统完整版:装备强化成功后属性实时变化;提供背包列表与穿戴/卸下接口;强化失败与背包已满等边界情况输出明确提示;最后写一段测试代码覆盖成功与失败分支。

参考:验收要点

  • Equip 模块以 return M 导出,new/attack/upgrade 为公开接口;
  • 穿戴逻辑把装备放入 player.equip,卸下放回背包并检测背包容量;
  • upgrade 内部用 pcall 或数值校验防止非法输入;
  • 测试代码分别验证强化成功(属性增加)与失败(降级)两条路径。

知识讲解

本章课时内容依据:课程大纲第二阶段(课时 9—16)教学目标与作业设计,逐课时沿用,未作变动。

本篇依据
  • 《996 新三端 Lua 开发教学技术手册》课时 16

参数与取值以你本机版本的官方帮助文档为准,不同版本之间有过调整。