网络安全 秦将铁甲 cqcq etmir2
传奇开区,版本定制,加QQ:3504116 先学习★后付款Q:270733022 点击赞助此处文字位(#3) 点击赞助此处文字位(#4) 【绝世神器】
【梵天复古】 【终极骷髅王】 【绝世神器】 【绝世神器】 【梵天复古】
【梵天复古】 点击赞助此处文字位(#111) ▇▃狂化屠魔▃▇ ‖   一个福利怪直接起飞   ‖ 领先市场全新给力版本
回忆 70 80 90 的梦!!! 点击赞助此处文字位(#116) 点击赞助此处文字位(#117) 【终极骷髅王】 【终极骷髅王】
【终极骷髅王】 点击赞助此处文字位(#121) 点击赞助此处文字位(#122) 点击赞助此处文字位(#123) 点击赞助此处文字位(#124)
部分体验推荐
版本名称 版本类型 版本介绍 版本说明 游戏网站
【牛来传说】 【单职业神器】 全新鉴定系统,散人好混,地图超大 领先市场全新给力版本 进入游戏
【一怒拔刀】 【单职业复古】 数值平衡,极限刀速,PK丝滑,超爽爆装 领先市场全新给力版本 进入游戏
【蓝月复古】 【独家品牌】 经典耐玩,高端保值,一切靠打,散人好混 领先市场全新给力版本 进入游戏
【终极骷髅王】 【独家品牌】 无限刀,散人为王,地图超多,PK超爽 领先市场全新给力版本 进入游戏
【绝世神器】 【独家品牌】 装备爽爆★PK流畅★玩法不再千篇一律 领先市场全新给力版本 进入游戏
【功夫专属】 【独家品牌】 梦想之心,打怪成长,强大BUFF加持 领先市场全新给力版本 进入游戏
【梵天复古】 【独家品牌】 装备爽爆★PK流畅★玩法不再千篇一律 领先市场全新给力版本 进入游戏
▇▃狂化屠魔▃▇ 全职业 新狂化屠魔 别人不敢爆的我们爆 上线就送自动回收 每日免费领取50元 进入游戏
【热血怀旧】 【独家品牌】 再续怀旧第二章,法道丝滑,低消生态版 领先市场全新给力版本 进入游戏
查看: 3|回复: 0

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

[复制链接]

7786

主题

-5

回帖

60万

积分

管理员

积分
600292
QQ
发表于 1 小时前 | 显示全部楼层 |阅读模式
翻遍主流传奇引擎的帮助文档,把NPC脚本里天天用到的脚本命令按执行流程、变量运算、条件判断三类重新过了一遍。这套指令不绑定某一家引擎,写在D:\本地传奇版本\Mir200\Envir\Market_Def目录下的NPC脚本里都能跑,适合本地单机学习调试。

我当初照着旧版本抄脚本,卡在sum求和和reset重置上反复报错,把官方命令表逐条对照后才理顺。下面把这些基础指令的标准写法、参数位置和容易踩的坑整理出来,对照着做脚本修改即可。

1.png

基础流程命令速查
这类指令是NPC脚本的骨架,负责跳转、弹窗、执行、给物收物、传送和刷怪。所有操作类动作都必须挂在#act后面才会真正执行,单独写一段文字弹窗用#say。脚本段名用[@main]这类英文或数字标记,goto负责跳过去。

命令标准写法功能说明示例
gotogoto @main跳转到指定段执行,终止当前段goto @main
#say#say 文本NPC弹窗输出文字,不用加引号#say 领取成功
#act#act 命令执行后面的操作类指令#act give 疗伤药 10
givegive 物品 数量给玩家物品或金币give gold 10000
taketake 物品 数量从玩家背包收回物品或金币take gold 5000
mapmap 地图号随机坐标传送到指定地图map 3
mapmovemapmove 地图号 X Y定点传送到指定坐标mapmove 3 330 330
MonGenMonGen 怪物名 数量 时间在当前位置刷出怪物MonGen 白野猪 5 60
closeclose关闭NPC对话窗口close

2.png

变量与常量运算
脚本里存数字用P0到P9、D0到D9这几组私人变量,初始值都是0。赋值用mov,累加用inc,随机取值用movr,概率触发用random。变量本身不直接显示,要在#say后面用<$STR(变量)>包起来才能把数字弹到对话框里。

命令标准写法功能说明示例
movmov 变量 数值给变量赋固定值,覆盖原值mov P0 100
incinc 变量 数值在原值上累加数字inc P0 10
sumsum 变量A 变量B变量求和,需先清零mov P1 0
movrmovr 变量 最大值取0到最大值之间的随机整数movr P0 10
randomrandom 数值按数值分之一概率随机成立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检测逻辑变量是否为真
smallsmall P0 50变量小于数值则成立
largelarge P0 50变量大于数值则成立
equalequal P0 100变量等于数值则成立
checkjobcheckjob Warr检测职业,Warr战士Wizard法师Taos道士
checklevelchecklevel 60检测等级是否达标
checkitemcheckitem 物品 数量检测背包物品数量
checkitemwcheckitemw 物品检测身上穿戴的装备
checkgoldcheckgold 10000检测金币是否达标

3.png

本地脚本配置步骤
我在本地版本里写过一个简单的兑换NPC,整个流程可以拆成四步走。

第一步:先打开D:\本地传奇版本\Mir200\Envir\Market_Def目录;

第二步:新建或打开一个NPC脚本文件,段名从[@main]开始写。

第三步:#if条件判断里用checkitem检测材料,通过后用take收走材料、再用give发出奖励;

第四步:最后用close关掉窗口。改完保存,在M2控制台重新加载NPC脚本即可生效,不用重启本地服务程序。


  1. [@main]
  2. #IF
  3. checkitem 黑铁矿 3
  4. #ACT
  5. take 黑铁矿 3
  6. give 金币 50000
  7. #say
  8. 兑换成功,金币已发放。
  9. #ELSEACT
  10. #say
  11. 黑铁矿不足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参数细节上存在差异,跨引擎使用前需自行测试修改。本文所有内容仅供单机本地学习调试使用。

温馨提示:

如需运营或商用本站资源,请在下载源码后联系版权方进行授权,本站不参与任何运营游戏相关活动,仅供从业者交流技术使用.对于因后续运营游戏产生的版权纠纷,与本站无关。


郑重声明:本站所有资源仅供用户本地电脑学习源代码的内含设计思想和原理,禁止任何其他用途!→ 详情点击查看 ←
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ在线咨询
咨询客服
87599992
QQ群交流
1129542134
快速回复 返回顶部 返回列表