传奇泡经验 NPC 脚本怎么做?土城安全区扣金币给经验设置教程

来源: 作者: 点击:
很多传奇私人服务器 GM 或玩家想做土城安全区的泡经验 NPC,要求不传送地图、每 10 分钟扣 10000 金币给 10000 经验、离开范围自动关闭功能。下面结合主流私人服务器引擎(如 Hero、Mir2M2)的实操经验,拆解脚本制作步骤、核心代码及关键设置,新手也能跟着做。
一、泡经验 NPC 脚本核心需求拆解
先明确脚本必须实现的 4 个核心功能,避免后续设置遗漏:
固定位置:仅在土城安全区生效,不触发任何地图传送;
定时机制:每 10 分钟执行 1 次 “扣金币 + 给经验” 操作,时间间隔可调整;
资源判定:扣金币前先检查玩家背包金币是否足够,不足则暂停泡经验;
范围限制:玩家离开土城安全区坐标范围后,自动终止泡经验功能,无需手动关闭。
二、实操脚本代码示例(以 Hero 引擎为例)
Hero 引擎是传奇私人服务器常用引擎,脚本语法简单易改,以下代码已实测可实现需求,关键位置加了注释方便调整:
;土城泡经验NPC脚本(NPC名称:土城泡经验使者)
;适用引擎:Hero 1.80+ 版本
;核心功能:安全区泡经验、10分钟扣1万金币给1万经验、离开范围关闭

[@main]
#IF
CHECKMAPNAME 3 ;判断是否在土城地图(土城地图编号通常为3,不同私人服务器可能不同,需核对)
CHECKSAFEZONE ;判断是否在安全区内
#SAY
欢迎使用土城泡经验功能!\
每10分钟扣除10000金币,发放10000经验!\
离开安全区将自动停止泡经验。\
<开启泡经验/@start_exp>\
<取消/@exit>

[@start_exp]
#IF
CHECKGOLD > 9999 ;检查背包金币是否≥10000(避免扣金币失败)
#ACT
MOV S1 0 ;初始化计时变量(S1为自定义变量,记录分钟数)
GOTO @exp_loop ;进入泡经验循环
#ELSE
#SAY
背包金币不足10000,无法开启泡经验!\
快去打宝或交易凑够金币再来吧!\
<返回/@main>

[@exp_loop]
#IF
CHECKSAFEZONE ;持续判断是否在安全区
CHECKMAPNAME 3 ;持续判断是否在土城
#ACT
WAIT 60000 ;等待1分钟(1000毫秒=1秒,60000毫秒=1分钟)
ADD S1 1 ;计时变量+1(记录已过去1分钟)
#IF
EQUAL S1 10 ;判断是否已过去10分钟
#ACT
TAKEGOLD 10000 ;扣除10000金币
GIVEEXP 10000 ;发放10000经验
SENDMSG 6 【泡经验提示】已扣除10000金币,获得10000经验! ;发送系统提示(6为提示颜色,可改)
MOV S1 0 ;重置计时变量,开始下一轮10分钟
GOTO @exp_loop ;返回循环,继续计时
#ELSE
GOTO @exp_loop ;未到10分钟,继续循环计时
#ELSE
#ACT
SENDMSG 6 【泡经验提示】已离开土城安全区,泡经验功能已关闭! ;离开范围提示
GOTO @main ;返回NPC主界面,终止泡经验

三、关键设置步骤(新手必看)
1. 土城安全区坐标与地图编号核对
先确认土城地图编号:登录 GM 账号,打开 “引擎控制端 - 地图管理”,找到 “土城” 对应的地图编号(常见为 3,部分私人服务器为 “土城” 拼音首字母缩写,需记录准确编号);
获取安全区坐标范围:用 GM 工具(如 Hero GM 工具)进入土城,在安全区中心位置按 “Ctrl+F”,查看当前坐标(如 X:320 Y:330),安全区范围建议设为 “X:310-330,Y:320-340”,避免玩家轻微移动就触发关闭(脚本中无需手动输坐标,CHECKSAFEZONE 命令会自动识别引擎设置的安全区范围)。
2. 时间与数值调整(按需修改)
若想调整 “扣金币 / 给经验” 的时间或数值,直接改脚本中这 3 处:
时间间隔:将 “WAIT 60000” 改为其他数值(如 5 分钟 = 300000 毫秒);
金币扣除:将 “TAKEGOLD 10000” 改为目标金币数(如 5000 则扣 5000);
经验给予:将 “GIVEEXP 10000” 改为目标经验值(如 20000 则给 20000)。
3. 自动关闭功能触发设置
无需额外加复杂代码,脚本中 “CHECKSAFEZONE” 和 “CHECKMAPNAME 3” 两个命令会实时判定:
玩家走出土城安全区(如到土城药店门口),CHECKSAFEZONE 判定失败,触发 “离开范围提示” 并关闭功能;
玩家传送至其他地图(如蜈蚣洞),CHECKMAPNAME 3 判定失败,同样自动终止泡经验。
四、常见问题解决(实测避坑)
1. 开启泡经验后不扣金币、不给经验?
先检查引擎 “经验倍数” 设置:进入 “引擎控制端 - 经验设置”,确认 “NPC 给予经验” 未被限制倍数(若倍数设为 0,即使脚本写 10000 经验,玩家也拿不到);
核对金币扣除命令:Hero 引擎用 “TAKEGOLD”,Mir2M2 引擎用 “DEDUCTGOLD”,若引擎不匹配,需换对应命令。
2. 离开安全区不自动关闭?
检查安全区设置:进入 “引擎控制端 - 安全区管理”,确认土城安全区坐标范围是否正确(若范围设太大,玩家走到药店仍在安全区,就不会关闭);
脚本中加 “坐标范围判定”:若 CHECKSAFEZONE 命令失效,可补充坐标判断,如 “CHECKXY 310 320 330 340”(X 从 310 到 330,Y 从 320 到 340),超出则关闭。
3. 玩家金币不足时仍扣经验?
脚本中已加 “CHECKGOLD> 9999” 判定,若仍有问题,需在 “@exp_loop” 循环中再加 1 次金币检查:
#IF
CHECKGOLD < 10000
#ACT
SENDMSG 6 【泡经验提示】背包金币不足,暂时停止泡经验!
GOTO @main

五、扩展建议(提升玩家体验)
加 “泡经验状态提示”:在脚本中加 “SENDMSG 6 【泡经验中】距离下次发放经验还有 XX 分钟”,每 1 分钟提示 1 次,让玩家知道剩余时间;
分档次设置:可加 “普通泡经验(10 分钟扣 1 万给 1 万)”“高级泡经验(10 分钟扣 5 万给 6 万)”,满足不同玩家需求,脚本中用 “< 普通泡经验 /@start_exp1>”“< 高级泡经验 /@start_exp2>” 区分即可。
按以上步骤制作,土城安全区的泡经验 NPC 脚本就能正常运行,且适配多数传奇私人服务器引擎。若遇到引擎特殊情况,可查看对应引擎的 “脚本命令手册”,或找同引擎的 GM 交流调整。