传奇中,如何编写包裹全部特修和单个装备特修的脚本?

来源: 作者: 点击:
在传奇私人服务器里,特修装备是玩家常有的需求。无论是想一次性修好包裹里的所有装备,还是只修理放入 NPC 对话框圆框中的单个装备,都可以通过脚本实现。如果你的脚本提示 “不能修理”,很可能是命令用错了或者条件没设置对。下面就详细讲讲这两种脚本的编写方法,以及常见问题的解决办法。
一、如何编写单个装备特修脚本(针对 NPC 框内物品)
单个装备特修是让玩家把需要修理的装备放入 NPC 对话界面的物品框(就是那个圆框)中,由 NPC 进行特修。这种脚本的关键是要准确识别框内的装备,并判断是否符合修理条件。
编写步骤:
设置 NPC 对话和物品框
首先在脚本的[@main]段落里,用ITEMBOX命令添加一个物品框,让玩家可以放入装备。比如:
[@main]
请把需要特修的装备放入下方框内,特修不降低持久上限\
每次特修费用:5000金币\ \
ITEMBOX:0:-1:0:100:100:50:50:5,6:250#放入需要特修的装备\
<开始特修/@repair_single>
<离开/@exit>

这里的ITEMBOX:0表示第一个物品框,玩家放入的装备会暂时存放在这里。
编写特修执行命令
在[@repair_single]段落中,需要检查框内是否有装备,然后执行特修命令。正确的脚本应该是:
[@repair_single]
#if
CHECKITEMBOX 0 1 ;检查0号物品框内是否有1件装备
CHECKGOLD > 4999 ;检查金币是否足够
#act
REPAIRITEMBOX 0 3 ;特修0号框内的装备,费用是普通修理的3倍
TAKEGOLD 5000 ;扣除5000金币
SENDMSG 6 装备特修完成,持久已恢复!
GOTO @main
#else
#if
NOT CHECKITEMBOX 0 1
#say
请先在框内放入需要修理的装备\
<返回/@main>
#else
#say
金币不足,特修需要5000金币\
<返回/@main>

这里的REPAIRITEMBOX是专门用于修理物品框内装备的命令,后面的 “0” 代表物品框编号,“3” 表示特修倍率(费用是普通修理的 3 倍)。
为什么提示 “不能修理”?
如果用了REPAIRITEM(修理身上装备的命令)而不是REPAIRITEMBOX,系统就会找不到要修理的装备,从而提示错误。另外,如果物品框编号写错(比如写成 1 但实际只设置了 0 号框),也会导致无法识别装备。
二、如何编写包裹全部装备特修脚本
包裹全部特修是让 NPC 自动检测玩家包裹里的所有可修理装备(比如武器、衣服、首饰等),并一次性修好。这种脚本需要遍历包裹里的物品,逐个判断是否需要修理。
编写步骤:
设置批量修理的触发对话
在 NPC 的主对话里添加一个 “批量特修” 的选项,比如:
[@main]
欢迎使用特修服务\ \
<单个装备特修/@single_mode>\
<包裹全部特修/@batch_repair>\
<离开/@exit>

[@batch_repair]
确定要特修包裹里的所有装备吗?\
总费用根据装备数量计算(每件5000金币)\ \
<确认/@do_batch>
<返回/@main>

编写批量修理的核心脚本
由于不同引擎的批量修理命令不同,这里以常用的 GOM 引擎为例,用循环命令遍历包裹:
[@do_batch]
#if
CHECKBAGITEM 武器 1 ;检查包裹里是否有可修理的装备(以武器为例)
#act
MOV S$count 0 ;记录装备数量的变量
[@loop_repair]
#if
CHECKBAGITEM 武器 1
#act
TAKE 武器 1 ;临时取出1件武器
REPAIRITEM 3 ;特修取出的武器(3倍费用)
GIVE 武器 1 ;将修好的武器放回包裹
ADD S$count 1 ;数量加1
GOTO @loop_repair ;循环处理下一件
#else
#if
S$count > 0
#act
CALC GOLD = S$count * 5000 ;计算总费用
TAKEGOLD <$GOLD>
SENDMSG 6 已特修<$S$count>件装备,共花费<$GOLD>金币
GOTO @main
#else
#say
你的包裹里没有可特修的装备\
<返回/@main>

这个脚本通过循环取出每件装备,修好后再放回包裹,适合处理包裹里的所有武器、衣服等装备。如果想包含首饰,需要在CHECKBAGITEM里添加首饰名称。
常见问题解决:
如果提示 “不能修理”,可能是因为REPAIRITEM命令没有配合TAKE和GIVE使用。直接对包裹里的装备用REPAIRITEM会失效,必须先临时取出装备才能修理。另外,有些装备(比如特殊道具)本身不能修理,需要在脚本里用CHECKITEM排除这些物品。
三、让脚本更完善的小技巧
限制可修理的装备类型
比如只允许特修武器和衣服,可以在脚本中添加类型判断:
#if
CHECKITEMBOX 0 1
ITEMTYPEBOX 0 武器 ;检查0号框内是武器
#act
...(执行特修)
#else
#say
只能特修武器和衣服哦\
<返回/@main>

处理装备持久已满的情况
避免玩家对完好的装备进行修理,可以添加持久度检查:
#if
ITEMDURBOX 0 < 100 ;检查框内装备的当前持久是否低于最大值
#act
...(执行特修)
#else
#say
这件装备的持久是满的,不需要修理\
<返回/@main>

保存脚本并测试
把脚本文件(比如命名为特修NPC-3.txt)放在Envir\Market_Def文件夹,然后在Merchant文件中添加 NPC 位置。登录游戏后,先放一件耐久不足的装备测试单个特修,再用多个需要修理的装备测试批量功能,看看是否能正常扣除金币并修复。
编写特修脚本的关键是用对命令:单个装备用REPAIRITEMBOX配合物品框,批量修理用循环取出 +REPAIRITEM。如果提示 “不能修理”,先检查命令是否正确,再看条件设置是否遗漏(比如金币是否足够、是否有装备)。按照上面的步骤修改后,脚本就能正常工作了。