CHUAN2 DEV ENGINE
996 正版授权研发中心 · 360 授权合作教学中心 · 抖音传奇直播合作授权 · 快手推广运营商授权
OFFICIAL LICENSED ACADEMY 查验官方授权证书 →
// 威海旷世互娱教学基地 · 技术文章
工具链框架设计

【工具链】GM 管理命令工具:从手敲指令到参数化面板

2026-09-20 07:58 作者:996 技术组 1 阅读 996引擎Lua教程传奇脚本
完整课程入口:996 全套课程体系Lua 学习路径幂尔框架 mirs.cn

GM 命令的三代形态

运维一个服务器,加物品、调等级、刷怪、开关活动是日常。第一代形态是手敲命令字符串:@item 玩家名 1001 5,快,但参数顺序全靠记,敲错就是事故。第二代是配置表驱动:命令与参数定义在表里,程序自动生成帮助与校验。第三代是参数化面板:配合前端界面点选执行。无论哪代,核心都是同一层——结构化的 GM 命令处理器

处理器设计:命令即数据

把每条命令定义为数据:名称、权限等级、参数类型表、执行函数。启动时统一注册,执行时统一做权限与参数校验:

lua
local Cmds = {}

local function reg(def) Cmds[string.lower(def.name)] = def end

reg{
    name = "item", level = 3,
    args = { {"玩家名","string"}, {"物品id","int"}, {"数量","int"} },
    run = function(who, name, itemId, count)
        giveItem(name, itemId, count)
        log("GM", who, "发物品", name, itemId, count)   -- 全量留痕
    end
}

function ExecGM(who, level, line)
    local parts = {}
    for w in line:gmatch("%S+") do parts[#parts + 1] = w end
    local def = Cmds[string.lower(parts[1] or "")]
    if not def then return "未知命令" end
    if level < def.level then return "权限不足" end
    -- 逐参数按类型校验后调用 def.run
end

五条军规

权限分级。 level 1 查询、2 发放、3 数值改写、4 危险操作(重载/删档),命令注册时定死,执行时强制校验,任何人不得绕过。

全量留痕。 每次执行记录:谁、何时、什么命令、什么参数、结果。GM 日志是封号与客诉的唯一凭据,这一步省不得。

参数校验前置。 int 就是 int、玩家名先验在线,错误在入口拦下并回提示,绝不带着脏参数进业务函数。

影响范围先声明。 对全服生效的命令(公告、加速倍率)在注册时标记 global=true,执行前要求二次确认参数,防手抖。

工具也要热更。 GM 处理器按模块挂表,加新命令 = 注册一条数据,不需要重启 M2——应急时刻你会感谢这个设计。

把这套处理器与文档自动生成(遍历 Cmds 输出帮助表)组合起来,一天就能搭出可持续演进的 GM 体系,比每次现写命令字符串稳妥得多。

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