传奇脚本本质与用法:从NPC对话到自动回收的全解析

来源: 作者: 点击:
传奇脚本是服务端里用特定语法编写的纯文本指令集合,用来控制游戏内一切非玩家直接操作的行为。打个比方,玩家点击NPC领装备,背后就是脚本在检测等级、扣除条件、发放物品。所有功能都靠脚本驱动,没有脚本,游戏只剩空地图。

**脚本是什么**

从载体看,脚本是存在服务端Envir目录下的.txt文件,用记事本就能打开编辑,保存编码必须选ANSI否则中文乱码。从功能看,脚本分为三大类:NPC功能脚本放在Market_Def文件夹,负责对话、买卖、传送、回收等所有可点击NPC的行为;登录触发脚本QManage.txt在MapQuest_Def目录,管玩家上线干什么;物品触发脚本QFunction-0.txt管双击物品、升级、死亡这类全局事件。每个脚本文件里由多个标签段组成,格式统一为[@标签名]开头,下面接执行逻辑。

**脚本怎么写**

任何功能脚本都遵循“判断—执行”的骨架,四类关键字固定搭配使用。以新手领装备脚本为例,完整写法如下:

[@main] ;NPC默认入口,玩家点开NPC先读这里

#SAY ;显示在对话框里的文字

欢迎来领装备,选择职业:\

\<战士领武器@warrior>\

\<法师领武器@mage>\

\<离开@exit>

[@warrior]

#IF ;条件判断开始

checkjob Warr ;检测玩家职业是不是战士

#ACT ;条件成立执行

give 裁决 1 ;给裁决一把

sendmsg 6 战士领到武器了 ;系统提示

#ELSEACT ;条件不成立执行

sendmsg 6 你不是战士,领不了

BREAK ;结束该段,防止往下穿透

#IF下面只能放检测命令,像checklevel检测等级、checkitem检测背包物品、checkgold检测金币、checkpkpoint检测PK值。#ACT下面只能放执行命令,像give给物品、take收走物品、mapmove传送、takegold扣金币。#SAY显示对话内容,\代表换行,<文字@标签>生成可点击选项。

**脚本怎么用**

普通玩家不直接编写脚本,使用脚本是通过游戏内交互触发的。点NPC是触发@main,双击物品是触发QFunction-0.txt里对应的[@StdModeFuncX],X是物品数据库里的触发序号。版本管理员修改脚本后,在M2控制台输入@reloadnpc刷新NPC脚本,或重启引擎生效。

服务端脚本变量控制任务进度。比如用逻辑变量标记是否完成过任务,SET [100] 1代表完成任务,Check [100] 1检测是否完成过,防止重复领奖。全局定时脚本用Robot_def文件夹下的AutoRunRobot.txt设运行周期,再跳转到RobotManage.txt执行具体动作,常见于每小时自动弹窗活动。

**两种常见误解**

有些地方说的“脚本”指玩家用的挂机辅助软件,能自动打怪跑图吃药,那是另一回事,原理是用外部程序模拟键盘鼠标操作,与游戏服务端脚本不是同一个东西。游戏端脚本只能在服务端修改,玩家无法通过客户端直接操作,所有功能都由版本管理员编写部署。