传奇写功能主要围绕服务端脚本展开,常见引擎包括 GOM、GEE、BLUE、996 等。不同引擎命令略有差异,但基础结构基本一致。功能脚本通常放在 MirServerMir200Envir 目录下,NPC 配置在 merchant.txt,对话脚本放在 Market_def 或 Market_Def,全局触发写在 QFunction-0.txt,登录触发写在 QManage.txt,定时活动写在 Robot_def。
一个最简单的 NPC 对话脚本结构如下:
[@main]
say
你好,勇士。\
<领取奖励/@getgift>\
<离开/@exit>
[@getgift]
if
checklevelex > 29
checkgold 1000
act
take gold 1000
give 裁决之杖 1
sendmsg 7 奖励已发放。
goto @main
elseact
sendmsg 7 等级不足或金币不够。
goto @main
[@exit]
act
close
这段脚本表示玩家与 NPC 对话后,如果等级大于 29 且金币达到 1000,就扣除金币并发放物品;条件不满足则提示失败。
常用条件命令包括 checklevelex 检测等级、checkgold 检测金币、checkgamegold 检测元宝、checkitem 检测物品、checkjob 检测职业、checkhum 检测地图人数、isadmin 检测管理员权限。
常用执行命令包括 give 给予物品、take 收回物品、map 随机传送、mapmove 定点传送、changelevel 调整等级、addskill 添加技能、delskill 删除技能、monclear 清除地图怪物、mongen 刷怪、gamemaster 开启 GM 权限。
变量系统分为内置变量和自定义变量。GOM/GEE 引擎中,P0-P9、D0-D9 属于早期内置变量;自定义数字变量常用 N0-N999、U0-U99,自定义字符变量常用 S0-S999、T0-T99;全局变量可用 G0-G999、A0-A999。
变量操作命令包括 mov 赋值、inc 自增、dec 自减、mul 乘法、div 整除、sum 求和、movr 随机赋值、small 判断小于、large 判断大于、equal 判断等于。
例如写一个签到功能:
[@sign]
if
equal N10 0
act
mov N10 1
give 金币 50000
sendmsg 7 今日签到已完成。
elseact
sendmsg 7 今日已签到。
这里 N10 用来记录是否已签到。如果要保存玩家数据,需要使用自定义变量并配合 loadvar、savevar 或引擎提供的自定义变量命令。
自定义变量写法示例:
[@initvar]
if
act
var integer human signcount
loadvar human signcount ..QuestDiary签到sign.txt
[@dailysign]
if
checkvar human signcount < 1
act
calcvar human signcount + 1
savevar human signcount ..QuestDiary签到sign.txt
give 金币 10000
sendmsg 7 签到成功。
elseact
sendmsg 7 今日已签到。
全局触发功能写在 QFunction-0.txt,常见标签包括 @PlayLevelUp 升级触发、@OnKillMob 击杀怪物触发、@PickUpItemX 拾取物品触发、@UserCmdX 自定义命令触发、@MagSelfFuncX 技能触发。
例如玩家升级自动发奖励:
[@PlayLevelUp]
if
checklevelex = 35
act
give 沃玛装备 1
sendmsg 7 恭喜达到35级,获得奖励。
定时活动写在 Robot_defAutoRunRobot.txt:
AutoRun NPC MIN 60 @每小时活动
在 RobotManage.txt 中写触发内容:
[@每小时活动]
if
act
sendmsg 0 活动开启,请前往盟重安全区领取奖励。
写功能时需要注意文件编码。GOM、GEE 等引擎的脚本文件通常必须保存为 ANSI 编码,使用 UTF-8 容易出现中文乱码或脚本解析失败。 修改 NPC 或脚本后,需要通过 M2 重载 NPC、重载脚本或重启服务端使改动生效。
调试功能时建议先复制一份已有脚本,再逐步修改命令和变量。每次改动后先测试条件是否生效、物品是否正确扣除、变量是否保存、提示是否准确。避免一次性写太多功能,否则出现问题后难以排查。
如果是 996 三端引擎,部分功能会使用 LUA 脚本,语法更接近客户端自动化脚本,变量和函数写法与 GOM/GEE 的文本脚本不同。 传统 GOM/GEE 服务端则以文本脚本为主,结构由 [@段名]、#if、#act、#say、goto、close 组成。
实际开发中,可以先从简单 NPC 开始,例如传送、领取奖励、回收装备、签到、转生、称号激活,再逐步加入变量判断、全局触发和定时活动。脚本逻辑保持清晰,条件写在 #if 下面,执行写在 #act 下面,对话写在 #say 下面,失败分支用 #elseact 或 #elsesay 处理,这样后期维护会更方便。
传奇服务端功能脚本编写指南:GOM/GEE引擎NPC对话、变量系统与全局触发核心教程
来源:
作者:
点击:

