传奇服务端挖宝道具设置与随机挖宝物品配置方法

来源: 作者: 点击:
传奇服务端里做挖宝道具,核心是把“挖取触发”和“随机奖励池”分开处理。怪物或宝箱尸体被挖取时,服务端进入QFunction-0.txt的[@ButchCloneItem]或[@DigItem]段,脚本再根据RANDOM、GetRandomText、#CHILD RANDOM等方式从物品列表中随机发放奖励。不同引擎命令略有差异,但思路一致:先确认挖取触发点,再配置随机池,最后控制次数、提示和来源。

一、先确认挖宝触发方式

挖宝道具通常有三种触发形式:

第一种是怪物尸体挖取。玩家按住CTRL右键点击怪物尸体,触发挖取脚本。

第二种是宝箱类物品挖取。宝箱StdMode多为31,Shape决定宝箱类型,奖品可通过M2宝箱设置或脚本发放。

第三种是NPC或技能触发挖宝。例如使用“藏宝图”“探宝铲”等物品,触发脚本后随机奖励。

如果版本里已经有人形怪或可挖怪物,优先检查QFunction-0.txt中的[@ButchCloneItem]段。如果是宝箱,则检查M2宝箱设置和@GetBoxsItemX脚本段。如果完全自建挖宝道具,建议走物品使用触发或NPC挖取触发。

二、怪物挖取随机奖励脚本

文件路径:
Mir200EnvirMapQuest_defQFunction-0.txt

[@ButchCloneItem]
IF
CHECKMONNAME 赤月恶魔
ACT
MOV N10 0
RANDOM 3
MOV N10 <RESULT>
GOTO @DigReward
BREAK

IF
CHECKMONNAME 祖玛教主
ACT
MOV N10 0
RANDOM 4
MOV N10 <RESULT>
GOTO @DigReward
BREAK

[@DigReward]
IF
EQUAL N10 0
ACT
GIVE 屠龙 1
SENDMSG 7 挖宝获得:屠龙
BREAK

IF
EQUAL N10 1
ACT
GIVE 嗜魂法杖 1
SENDMSG 7 挖宝获得:嗜魂法杖
BREAK

IF
EQUAL N10 2
ACT
GIVE 逍遥扇 1
SENDMSG 7 挖宝获得:逍遥扇
BREAK

IF
EQUAL N10 3
ACT
GIVE 金币 50000
SENDMSG 7 挖宝获得:金币50000
BREAK

这种方式适合怪物种类固定、奖励池不大的情况。每个怪物可以单独判断名称,再进入对应奖励分支。

三、使用文本列表实现随机挖宝

如果奖励物品较多,建议用文本列表配合GetRandomText读取,避免脚本过长。

先在Mir200EnvirQuestDiary挖宝奖励目录下新建文件,例如:
赤月挖宝.txt

内容示例:
屠龙
嗜魂法杖
逍遥扇
开天
镇天
玄天
金币 50000
金刚石 10

脚本写法:

[@ButchCloneItem]
IF
CHECKMONNAME 赤月恶魔
ACT
MOV S10 .QuestDiary挖宝奖励赤月挖宝.txt
GETRANDOMTEXT <STR(S10)> S11
GIVE <STR(S11)> 1
SENDMSG 7 挖宝获得:<STR(S11)>
BREAK

GetRandomText会从文本中随机读取一行,再把该行内容作为物品名称发放。文本里每行写一个奖励,物品名后面可带数量,例如“金币 50000”。如果物品名称本身包含空格,需确保引擎支持该格式,或改为固定数量发放。

四、使用#CHILD RANDOM控制随机池

部分引擎支持在爆率或脚本中使用#CHILD RANDOM,从括号内随机取一件。这种写法适合把奖励池集中管理。

示例:

[@DigTreasure]
IF
CHECKITEM 藏宝图 1
ACT
TAKE 藏宝图 1
GOTO @TreasureRandom

[@TreasureRandom]
IF
ACT
MOV N10 0
RANDOM 100
MOV N10 <RESULT>
GOTO @TreasureCheck

[@TreasureCheck]
IF
SMALL N10 10
ACT
GIVE 开天 1
SENDMSG 7 挖宝获得:开天
BREAK

IF
SMALL N10 30
ACT
GIVE 镇天 1
SENDMSG 7 挖宝获得:镇天
BREAK

IF
SMALL N10 60
ACT
GIVE 玄天 1
SENDMSG 7 挖宝获得:玄天
BREAK

IF
ACT
GIVE 金币 20000
SENDMSG 7 挖宝获得:金币20000
BREAK

RANDOM 100会生成0到99之间的随机数,通过SMALL判断区间,可实现不同稀有度奖励。数值区间越小,奖励越稀有。

五、宝箱类挖宝道具设置

如果挖宝道具是宝箱,需要检查物品数据库中宝箱的StdMode和Shape。宝箱StdMode通常为31,Shape决定宝箱等级和外观。钥匙StdMode一般为40,Shape需要与宝箱对应。

宝箱奖品可以在M2Server的宝箱设置界面配置权重,也可以通过脚本扩展。高级宝箱可走@GetBoxsItemX脚本段,X为宝箱Shape值。

例如Shape为15的宝箱,可添加:

[@GetBoxsItem15]
IF
ACT
MOV N10 0
RANDOM 100
MOV N10 <$RESULT>
GOTO @Box15Reward

[@Box15Reward]
IF
SMALL N10 5
ACT
GIVE 屠龙 1
BREAK

IF
SMALL N10 20
ACT
GIVE 嗜魂法杖 1
BREAK

IF
ACT
GIVE 金币 30000
BREAK

六、挖取次数限制

挖宝道具必须限制次数,否则玩家可无限挖取。常用方式有逻辑变量、全局变量或物品消耗。

逻辑变量示例:

[@ButchCloneItem]
IF
CHECK [100] 1
ELSESAY
该怪物已挖取过。
ELSEACT
SET [100] 1
GOTO @DoDig

玩家下线后逻辑变量会重置,如果需要每日限制,可配合日期变量或机器人脚本每日清空。

物品消耗示例:

[@UseDigTool]
IF
CHECKITEM 探宝铲 1
ACT
TAKE 探宝铲 1
GOTO @StartDig
ELSEACT
SENDMSG 7 背包中没有探宝铲。
CLOSE

物品消耗方式更稳定,适合正式版本。逻辑变量适合测试或临时限制。

七、奖励来源标记

如果版本需要区分物品来源,可使用CHANGEMAKEITEMINFO或SetThrowItemLy标记挖宝获得。例如发放后把来源改为“挖宝获取”,方便后台查询。

示例:

GIVE 开天 1
CHANGEMAKEITEMINFO -1 8 * * * 1

其中类型8对应挖掘获取,具体类型值以当前引擎说明为准。如果不支持该命令,可省略,不影响奖励发放。

八、部署步骤

确认挖宝触发方式,是怪物挖取、宝箱开启还是物品使用。
在QFunction-0.txt或对应脚本中添加触发段。
建立奖励文本或奖励分支,确定随机池内容。
设置挖取次数限制或物品消耗。
在M2Server中重载脚本,进入游戏测试。
检查奖励是否正确发放,随机池是否生效,次数限制是否正常。

九、常见问题

挖取后没有奖励,检查QFunction-0.txt是否已重载,以及触发段名称是否正确。

随机奖励总是一样的,检查RANDOM是否被正确调用,或文本文件中是否只有一行内容。

物品发放失败,确认物品名称与Stditem.db一致,不能有多余空格或错字。

宝箱不开奖,检查宝箱StdMode是否为31,Shape是否与@GetBoxsItemX对应。

玩家无限挖取,说明次数限制未生效,需改用物品消耗或全局变量记录。

奖励来源显示异常,检查CHANGEMAKEITEMINFO参数是否写错,或引擎是否支持该命令。

随机挖宝脚本结构简单,适合快速搭建挖宝、藏宝图、秘境宝箱等玩法。奖励池建议分成普通、稀有、极品三档,避免高价值物品概率过高。挖取触发点要统一,不要同时在怪物爆率、宝箱设置和脚本里重复发放,否则容易出现双倍奖励。