在传奇服务端中,自动买药功能需通过NPC脚本配合QFunction系统实现。核心逻辑为:检测背包药品数量,不足时自动从指定NPC处购买,并支持地图切换或定时触发刷新机制。以下为可直接部署的完整方案。
第一步:创建药品商人NPC
在EnvirNpc_def目录下新建文件,例如AutoBuyer.txt,内容如下:
[@main]
SAY
需要自动补满红蓝药吗?
[@BuyAll]
ACT
CALLSHOPITEM0200100;购买200个红药(物品编号0)
CALLSHOPITEM1200100;购买200个蓝药(物品编号1)
SENDMSG7药品已补满。
CLOSE
确保该NPC已在MapQuest_def或Npc坐标文件中正确放置。
第二步:编写自动检测与购买脚本
在EnvirQFunction.txt中添加以下代码段:
[@AutoBuyPotion]
IF
CHECKBAGITEM05000
ACT
MOVN0150
SUBN0
MULN0100;假设红药单价100
TAKEGOLDN0
GIVE0N0
SENDMSG7自动补充个红药。
[@NeedBlue]
IF
CHECKGOLD>5000
ACT
MOVN1150
SUBN1
MULN1100;蓝药单价100
TAKEGOLDN1
GIVE1N1
SENDMSG7自动补充个蓝药。
第三步:绑定自动触发机制
实现“自动刷新”需利用系统事件。在EnvirQManage.txt中加入:
[@Login]
;玩家登录时启动定时器
SETTIMER1060;每60秒执行一次
[@Timer_10]
;定时器触发自动买药
ACT
GOTO@AutoBuyPotion
此外,可在地图切换时触发补药。在EnvirMapQuest_def对应地图文件中添加:
[@MapEnter]
ACT
GOTO@AutoBuyPotion
第四步:配置物品编号与价格
确认红药、蓝药在StdItems.txt中的ItemIndex是否为0和1。若不同,需替换脚本中的编号。例如:
小红药ItemIndex=380
小蓝药ItemIndex=381
则脚本中所有“0”改为380,“1”改为381,并调整单价与数量。
关键指令说明:
CHECKBAGITEMX:返回物品X当前数量。
CALLSHOPITEM:直接调用商店购买,但需NPC有对应商品;若用GIVE方式,则无需商店存在,适合后台补给。
SETTIMER:设置循环定时器,第二个参数为秒数。
注意事项:
自动买药消耗金币,需确保玩家有足够资金,否则脚本跳过。
定时器频率不宜过高,建议30秒以上,避免服务器负载。
若使用GIVE方式发药,无需NPC在线,但需关闭防外挂检测对GIVE的拦截。
此方案无需外部工具,完全基于服务端脚本实现,支持登录、定时、进图三重触发,可彻底替代手动购药操作。
第一步:创建药品商人NPC
在EnvirNpc_def目录下新建文件,例如AutoBuyer.txt,内容如下:
[@main]
SAY
需要自动补满红蓝药吗?
[@BuyAll]
ACT
CALLSHOPITEM0200100;购买200个红药(物品编号0)
CALLSHOPITEM1200100;购买200个蓝药(物品编号1)
SENDMSG7药品已补满。
CLOSE
确保该NPC已在MapQuest_def或Npc坐标文件中正确放置。
第二步:编写自动检测与购买脚本
在EnvirQFunction.txt中添加以下代码段:
[@AutoBuyPotion]
IF
CHECKBAGITEM05000
ACT
MOVN0150
SUBN0
MULN0100;假设红药单价100
TAKEGOLDN0
GIVE0N0
SENDMSG7自动补充个红药。
[@NeedBlue]
IF
CHECKGOLD>5000
ACT
MOVN1150
SUBN1
MULN1100;蓝药单价100
TAKEGOLDN1
GIVE1N1
SENDMSG7自动补充个蓝药。
第三步:绑定自动触发机制
实现“自动刷新”需利用系统事件。在EnvirQManage.txt中加入:
[@Login]
;玩家登录时启动定时器
SETTIMER1060;每60秒执行一次
[@Timer_10]
;定时器触发自动买药
ACT
GOTO@AutoBuyPotion
此外,可在地图切换时触发补药。在EnvirMapQuest_def对应地图文件中添加:
[@MapEnter]
ACT
GOTO@AutoBuyPotion
第四步:配置物品编号与价格
确认红药、蓝药在StdItems.txt中的ItemIndex是否为0和1。若不同,需替换脚本中的编号。例如:
小红药ItemIndex=380
小蓝药ItemIndex=381
则脚本中所有“0”改为380,“1”改为381,并调整单价与数量。
关键指令说明:
CHECKBAGITEMX:返回物品X当前数量。
CALLSHOPITEM:直接调用商店购买,但需NPC有对应商品;若用GIVE方式,则无需商店存在,适合后台补给。
SETTIMER:设置循环定时器,第二个参数为秒数。
注意事项:
自动买药消耗金币,需确保玩家有足够资金,否则脚本跳过。
定时器频率不宜过高,建议30秒以上,避免服务器负载。
若使用GIVE方式发药,无需NPC在线,但需关闭防外挂检测对GIVE的拦截。
此方案无需外部工具,完全基于服务端脚本实现,支持登录、定时、进图三重触发,可彻底替代手动购药操作。

