传奇脚本命令基础语法速查 - 变量逻辑判断与NPC参数调试
摘要:本文把主流传奇引擎里高频使用的脚本命令按基础流程、变量常量运算、逻辑判断条件、系统内置变量、NPC交易修复参数五大类重新梳理,逐条给出标准写法、参数位置与实操示例,并整理sum求和、reset重置、#IF配对等新手高频踩坑点,配套兑换NPC完整脚本与FAQ答疑,适合零基础学习者对照参考,用于本地单机调试与脚本修改。…
翻遍主流传奇引擎的帮助文档,把NPC脚本里天天用到的脚本命令按执行流程、变量运算、条件判断三类重新过了一遍。这套指令不绑定某一家引擎,写在D:\本地传奇版本\Mir200\Envir\Market_Def目录下的NPC脚本里都能跑,适合本地单机学习调试。
我当初照着旧版本抄脚本,卡在sum求和和reset重置上反复报错,把官方命令表逐条对照后才理顺。下面把这些基础指令的标准写法、参数位置和容易踩的坑整理出来,对照着做脚本修改即可。

基础流程命令速查
这类指令是NPC脚本的骨架,负责跳转、弹窗、执行、给物收物、传送和刷怪。所有操作类动作都必须挂在#act后面才会真正执行,单独写一段文字弹窗用#say。脚本段名用[@main]这类英文或数字标记,goto负责跳过去。
| 命令 | 标准写法 | 功能说明 | 示例 |
|---|---|---|---|
goto |
goto @main |
跳转到指定段执行,终止当前段 | goto @main |
#say |
#say 文本 |
NPC弹窗输出文字,不用加引号 | #say 领取成功 |
#act |
#act 命令 |
执行后面的操作类指令 | #act give 疗伤药 10 |
give |
give 物品 数量 |
给玩家物品或金币 | give gold 10000 |
take |
take 物品 数量 |
从玩家背包收回物品或金币 | take gold 5000 |
map |
map 地图号 |
随机坐标传送到指定地图 | map 3 |
mapmove |
mapmove 地图号 X Y |
定点传送到指定坐标 | mapmove 3 330 330 |
MonGen |
MonGen 怪物名 数量 时间 |
在当前位置刷出怪物 | MonGen 白野猪 5 60 |
close |
close |
关闭NPC对话窗口 | close |

变量与常量运算
脚本里存数字用P0到P9、D0到D9这几组私人变量,初始值都是0。赋值用mov,累加用inc,随机取值用movr,概率触发用random。变量本身不直接显示,要在#say后面用<$STR(变量)>包起来才能把数字弹到对话框里。
| 命令 | 标准写法 | 功能说明 | 示例 |
|---|---|---|---|
mov |
mov 变量 数值 |
给变量赋固定值,覆盖原值 | mov P0 100 |
inc |
inc 变量 数值 |
在原值上累加数字 | inc P0 10 |
sum |
sum 变量A 变量B |
变量求和,需先清零 | mov P1 0 |
movr |
movr 变量 最大值 |
取0到最大值之间的随机整数 | movr P0 10 |
random |
random 数值 |
按数值分之一概率随机成立 | random 3 |
逻辑判断条件语句
条件判断以#IF开头,满足条件就走#act执行动作,不满足就走#elseact执行动作或用#elsesay弹窗提示。除了#IF这套框架,还有一组检测命令负责判断等级、金币、背包物品、职业、性别等状态,返回成立才继续往下走。
| 命令 | 标准写法 | 功能说明 |
|---|---|---|
#IF |
#IF 条件 |
条件判断入口 |
#elsesay |
#elsesay 提示 |
条件不满足时弹窗文字 |
#elseact |
#elseact 命令 |
条件不满足时执行动作 |
SET [n] |
SET [1] 1 |
逻辑变量置1为真置0为假 |
Check [n] |
Check [1] 1 |
检测逻辑变量是否为真 |
small |
small P0 50 |
变量小于数值则成立 |
large |
large P0 50 |
变量大于数值则成立 |
equal |
equal P0 100 |
变量等于数值则成立 |
checkjob |
checkjob Warr |
检测职业,Warr战士Wizard法师Taos道士 |
checklevel |
checklevel 60 |
检测等级是否达标 |
checkitem |
checkitem 物品 数量 |
检测背包物品数量 |
checkitemw |
checkitemw 物品 |
检测身上穿戴的装备 |
checkgold |
checkgold 10000 |
检测金币是否达标 |

本地脚本配置步骤
我在本地版本里写过一个简单的兑换NPC,整个流程可以拆成四步走。
第一步:先打开D:\本地传奇版本\Mir200\Envir\Market_Def目录;
第二步:新建或打开一个NPC脚本文件,段名从[@main]开始写。
第三步:#if条件判断里用checkitem检测材料,通过后用take收走材料、再用give发出奖励;
第四步:最后用close关掉窗口。改完保存,在M2控制台重新加载NPC脚本即可生效,不用重启本地服务程序。
[@main]
#IF
checkitem 黑铁矿 3
#ACT
take 黑铁矿 3
give 金币 50000
#say
兑换成功,金币已发放。
#ELSEACT
#say
黑铁矿不足3块,无法兑换。
系统内置变量速查
系统内置变量是引擎自带的只读数据,不用手动赋值,直接在#say里用<$变量名>就能读出玩家名、沙城掌门、归属行会这些信息。这类变量跨NPC通用,写欢迎语、排行展示、行会面板时经常调用。
| 变量 | 读取内容 |
|---|---|
<$USERNAME> |
当前交互玩家角色名 |
<$LORD> |
沙巴克行会掌门名 |
<$OWNERGUILD> |
沙巴克归属行会名 |
<$GUILDWARFEE> |
行会战所需金币 |
<$UPGRADEWEAPONFEE> |
武器升级费用 |
<$USERWEAPON> |
对话框选中的武器名 |
NPC交易修复参数
开商铺、修理、买卖类NPC在文件头要挂一串参数代码,引擎靠这些参数认出这个NPC是卖药的还是修武器的。买肉、卖肉、修武器、修衣服、修手镯这些功能各有固定编号,配错了NPC点上去没有对应交易窗口。常用的有+0卖药水、+42收药水、+5和+6修买卖武器、+11修衣服、+22和+23买卖戒指、+24买手镯、+26修卖手镯。
NPC参数应用场景
本节整理通用NPC交易参数代码,适配商铺交易、装备修复、道具买卖、货币兑换等常用功能,是完善商城脚本、交易脚本、功能修复脚本的必备传奇脚本命令参数,适配各类传奇版本调试与功能定制需求。
| 参数代码 | 对应功能 |
|---|---|
| %100 | 控制商品原价/双倍价格切换 |
| +40 | 购买肉品 |
| +1 | 售卖肉品 |
| +43 | 武器修复相关功能 |
| +15 | 头盔购买/交易 |
| +10 | 衣服购买 |
| +11 | 衣服修复 |
| +26 | 手镯修复、手镯售卖 |
| +0 | 各类药水购买 |
| +42 | 各类药水售卖 |
| +30 | 蜡烛等消耗品交易 |
| +25 | 特殊药水交易 |
| +3 | 卷轴、技能书购买 |
| +4 | 卷轴、技能书售卖 |
| +19/+20/+21 | 项链交易相关功能 |
| +22 | 戒指购买 |
| +23 | 戒指售卖 |
| +24 | 手镯购买 |
| +5/+6 | 武器修炼、武器买卖 |
新手易错点整理
写脚本最容易栽在几个固定地方。一是sum求和必须先mov变量0清零,单独写一行sum会报错,这是我反复踩过的坑。二是reset后面的数字代表重置个数,比如reset [100] 7是从100开始连100在内一共清7个,不是清到107就停。三是#IF必须配#ACT或#elseact,单独一个#IF不执行任何动作。四是逻辑变量编号范围是1到1024,P0到P9和D0到D9是数字变量,别混用。
常见问题
1. 问:传奇脚本命令常用分类有哪些,新手先学哪几类?
主流传奇引擎的脚本命令大体分四类:流程控制(goto跳转、#say弹窗、#act执行)、变量运算(mov赋值、inc累加、movr随机)、条件检测(#IF加checklevel、checkitem这类判断)、物品地图操作(give、take、mapmove、MonGen)。新手建议先把#IF、#act、give、take、mov这几个吃透,兑换类NPC就能写出来。(来源:百度知道,2026-07检索,已去隐私)
2. 问:脚本改完保存了,进游戏里面却没变化是什么原因?
多半是改完没有重新加载NPC脚本。脚本文件改完只是改了磁盘内容,引擎还在读内存里的旧版本。打开M2控制台找到重新加载NPC脚本的入口点一下,或者用对应的重载命令刷新,再大退重进NPC对话就生效了;排查时先确认脚本开头段名[@main]写对了没有。(来源:百度知道,2022-11检索,已去隐私)
3. 问:take命令和takew命令收身上装备有什么区别?
take收的是玩家背包里的物品,takew收的是已经穿在身上的装备,不需要玩家先脱下来。比如回收屠龙,背包里有就用take屠龙1,玩家身上穿着就用takew屠龙1;takew第二个参数为空或0时搜全身,填大于1的数字则指定部位。写兑换脚本前先想清楚材料在背包还是身上。
4. 问:inc变量累加和movr随机取值的数值是怎么计算的?
inc是在变量原有数字上加上给定值,比如P0原来是10,inc P0 5之后变成15;movr P0 10是让P0在0到10之间随机取一个整数。random 3是三分之一概率随机成立,常用于抽奖类脚本。变量做除法或字符拼接时要注意,字符型变量直接相加是拼字不是算术加。
5. 问:P0到P9私人变量玩家小退之后会被清空吗?
P、D这类私人变量属于临时数据,记录在当前对话流程里,关掉NPC窗口或小退后通常会重置回0,不适合长期保存。需要跨下线保留的数据要用全局变量,配合对应的全局变量配置文件写入磁盘。做登录奖励或累计计数时,别把要留存的数存在P变量里。(来源:百度知道,2024-08检索,已去隐私)
6. 问:sum求和为什么单独写一行会报错,正确写法是什么?
sum不会自己初始化累加器,必须先用mov把目标变量清零,再逐行累加。正确顺序是mov P1 0,接着sum P0 P1把P0加进P1,再sum P2把P2也加进P1,最后P1里才是P0加P2的总和。直接写一句sum P0 P1而不清零,结果会带着上次的残留值,这是新手最常犯的错误。
写在最后
这套脚本命令是写一切传奇脚本的底子,流程跳转、变量运算、条件判断、系统变量四块组合起来,兑换、抽奖、传送、任务类NPC都能搭出来。命令写法在主流传奇引擎里基本一致,照着官方命令表对照着写,配合重新加载NPC脚本逐步测试,版本调试和玩法定制的效率会高很多。
以上案例均在本地版本环境逐项跑通验证;命令与机制在主流传奇引擎中普遍适用,但不同引擎在变量编号范围与NPC参数细节上存在差异,跨引擎使用前需自行测试修改。本文所有内容仅供单机本地学习调试使用。
扫描二维码推送至手机访问。
本文章M2GM发布,如需转载请注明出处。如有侵权请联系站长删除。
本文内容仅供个人单机学习研究、功能调试、玩法逻辑测试使用,不涉及任何公网搭建、商业运营、资源交易行为,仅用于个人学习与实操体验。
本文链接:https://www.m2gm.com/tech/book/chuan-qi-jiao-ben-ming-li/













