当前位置:首页 > 实操教程 > 技术手册 > 正文内容

传奇脚本命令基础语法速查 - 变量逻辑判断与NPC参数调试

M2GM2026-07-29技术手册255
摘要:本文把主流传奇引擎里高频使用的脚本命令按基础流程、变量常量运算、逻辑判断条件、系统内置变量、NPC交易修复参数五大类重新梳理,逐条给出标准写法、参数位置与实操示例,并整理sum求和、reset重置、#IF配对等新手高频踩坑点,配套兑换NPC完整脚本与FAQ答疑,适合零基础学习者对照参考,用于本地单机调试与脚本修改。…
[TOCM]

翻遍主流传奇引擎的帮助文档,把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

传奇脚本命令内容示意图 - M2GM

变量与常量运算

脚本里存数字用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 检测金币是否达标

传奇脚本命令脚本配置示意图 - M2GM

本地脚本配置步骤

我在本地版本里写过一个简单的兑换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/

分享给朋友:

相关文章

ESP插件ESPCheckCustomItemText脚本教程 - 装备自定义文本检测

ESP插件ESPCheckCustomItemText脚本教程 - 装备自定义文本检测

本文详细讲解了ESPCheckCustomItemText脚本的核心原理、命令格式与参数用法,提供三阶实操案例、零基础配置步骤及常见报错修复方案,帮助学习者快速掌握ESP插件装备自定义文本检测功能的调试方法。…

SD插件SDOpenAutoPlayGame脚本教程 - 自动挂机功能开启与状态检测

SD插件SDOpenAutoPlayGame脚本教程 - 自动挂机功能开启与状态检测

本文聚焦SDOpenAutoPlayGame脚本实操,详细讲解SD插件自动挂机功能的解锁、启动、停止及状态检测配置方法,提供零基础可套用的脚本代码,梳理常见报错与修复方案,助力玩家完成本地版本挂机功能调试。…

996引擎GetMapRouteInfo怎么查?查看动态地图链接点脚本教程

996引擎GetMapRouteInfo怎么查?查看动态地图链接点脚本教程

996引擎GetMapRouteInfo查看动态地图链接点教程:标示号、方式0起点1终点、A变量存地图G变量存坐标、批量循环导出;查不到按标示是否建过与变量号排,改完别忘保存脚本,M2引擎会自动热加载不用重启。…

BLUE引擎WebBrowser怎么使用?NPC命令打开网站脚本教程

BLUE引擎WebBrowser怎么使用?NPC命令打开网站脚本教程

WebBrowser是BLUE引擎由NPC在游戏客户端内直接打开网页的命令,后面跟完整网址,玩家点对话链接即在登录器内置浏览器窗口加载,不必切外部IE。本文给出[@main]链接跳[@baidu]段再写WebBrowser地址的配置步骤,并排查HTTPS白屏、段名对不上、改完不生效三类问题。…

BLUE引擎人物自动寻路脚本配置 - MOVETOCELL命令教程

BLUE引擎人物自动寻路脚本配置 - MOVETOCELL命令教程

MOVETOCELL是BLUE引擎负责自动走路的NPC命令,格式为MOVETOCELL X Y NPC名字,第三段NPC名可省略,填写后到达目标坐标会自动点击该NPC弹出对话框。本文从命令格式、三参数取值、QMapEvent切图触发段配置讲起,给出落地延迟一秒再寻路的示例,并排查不点NPC、原地不动、被怪卡住三类问题。…

我调SD插件宝宝范围切割SDBDELMONHPEX命令时踩过的坑

我调SD插件宝宝范围切割SDBDELMONHPEX命令时踩过的坑

SD插件宝宝范围切割教程:命令SDBDELMONHPEX十个参数,参数4范围基准0自身1目标,坐标用当前坐标变量跟随角色,参数8填3只切怪物,含避坑与对比分析,适配SD插件脚本学习,仅供单机本地调试。…

大秦插件写入键值配置方法 - 哈希键值存储实战案例

大秦插件写入键值配置方法 - 哈希键值存储实战案例

写入键值命令DQHashTableCreate后接标识字符串和存储内容两个参数;标识字符串不区分大小写作为记录查找键;参数2存储内容自定义;写入后用读取查找删除同族命令闭环操作;重复写入会覆盖旧值;常用于活动状态跨脚本共享、玩家临时记录、开关标记管理;标识建议加用途前缀避免空格特殊符号。…

HGE引擎GetRandomName随机取文本脚本教程 - 文本名单配置指南

HGE引擎GetRandomName随机取文本脚本教程 - 文本名单配置指南

本文详解HGE引擎GetRandomName从文本文件随机抽一行到变量的命令。给出格式与五个参数说明,讲清字符串变量支持S、N、G、A类型但不能用<$STR(G0)>格式的限制,区分指定行填0随机与填行号固定读取的差异,与RANDOM命令对比,搭一个随机头衔NPC脚本并给出三阶案例,含Force刷新方法。…