课时 19 · 服务端触发系统

课时 19 · 服务端触发系统(996 新三端引擎入门):理解触发即全局函数,掌握常用触发。示例跑在 996 新三端引擎里,接口按本地官方文档逐个核对。

教程/第三部分 · 996 新三端引擎入门更新于 2026-10-074 个小节 教程第 23 / 23 篇 新三端触发接口

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

本课目标

  • 理解触发即全局函数,掌握常用触发。

知识讲解

新三端服务端没有独立的脚本命令队列,一切逻辑由「触发」驱动:引擎在特定事件发生时调用同名全局函数,并传入相关对象参数。最常见的参数是 actor(玩家对象,number/string 型)。理解每个触发的参数与返回值语义,是写功能的第一步。

返回值语义:部分触发的返回值会被引擎读取,用于拦截默认行为。例如 NPC 点击触发 clicknpc 返回 true 表示不允许继续执行 TXT 脚本;返回 false 或 nil 则继续。写触发前务必查文档确认该触发的返回值要求。

示例:NPC 点击触发

function clicknpc(actor, npcId, script)
    release_print('点击NPC', npcId, script)
    -- return true 表示不允许继续执行 TXT 脚本
    return true
end

来源:本地文档 触发\玩家\NPC点击触发.md。

示例:玩家登录触发

function login(actor)
    release_print('玩家', actor, '登录触发')
end

来源:本地文档 触发\玩家\玩家登录触发.md。

示例:杀怪获取经验触发

function getexpbykillmon(actor, killer, mon, exp)
    release_print('杀怪获取经验触发', actor, exp)
end

来源:本地文档 触发\玩家\杀怪获取经验触发.md。

触发分类导航(课时 17 的目录盘点已列):写功能时先问「这个事件有没有对应触发」,例如登录 → login、点击 NPC → clicknpc、杀怪得经验 → getexpbykillmon、定时 → ontimer{id}、重载 → qfloadend。

练习任务

  • 写登录公告与升级触发提示:玩家登录时控制台打印欢迎语;玩家升级时打印新等级。

参考:登录 + 升级提示

function login(actor)
    release_print('欢迎进入新三端世界,玩家', actor)
end

-- 升级触发:本地文档 触发/英雄-宠物/角色升级触发.md
function playlevelup(actor, level)
    release_print('玩家', actor, '升级到', newLevel)
end

知识讲解

说明:升级触发的真实签名是 playlevelup(actor, level),level 是升级后的等级,出处:本地文档 触发/英雄-宠物/角色升级触发.md。

触发分类与数量来源:本地 showdoc 服务端 260831 目录盘点。

本篇依据
  • 《996 新三端 Lua 开发教学技术手册》课时 19
  • 本地文档 触发\玩家\NPC点击触发.md
  • 本地文档 触发\玩家\玩家登录触发.md
  • 本地文档 触发\玩家\杀怪获取经验触发.md

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