宝箱产出分两层管。物品数据库管“宝箱是什么、双击怎么触发、钥匙收什么费”;宝箱规则文件管“里面出什么、出几个、几率多少”。只改数据库不写规则文件,开箱没奖励;只写规则文件不建数据库物品,双击没反应或M2不识别。
一、StdItems物品库建宝箱与钥匙
传统宝箱在StdItems.DB建两行:
宝箱行示例
Name=黄金宝箱
Stdmode=48
Shape=1
Anicount=0或指定值
Source=1或对应规则文件编号
Reserved按引擎填0旧宝箱/1新宝箱/2九周年类
其他价格、库存、职业按普通物品补。
Stdmode=48通常是宝箱类,Shape1到6对应不同外观,6可给珍珑;Anicount在某些资料里用于转动抽取,0表示转动抽取、100表示不转直接给,具体看引擎宝箱模块。Source对应Envir下BoxsList/Boxs目录里的规则文件编号。
钥匙行示例
Name=黄金钥匙
Stdmode=49
Shape=与宝箱Anicount一致
Need=0金币/1元宝/2灵符/3金刚石
NeedLevel=收费数量
钥匙Shape和宝箱Anicount对上才能开;Need决定扣费类型,NeedLevel决定每次扣多少。只做消耗钥匙不扣货币,Need填0、NeedLevel填0,脚本里再用TAKE扣钥匙。
Hero类双击物品开箱不一定要Stdmode48。物品库把宝箱Stdmode设31,Anicount设触发号X,QFunction-0.txt写:
[@StdModeFuncX]
IF
ACT
OpenItemBox宝箱名
SENDMSG7开启宝箱成功
OpenItemBox对应的爆物走怪物爆率/ItemBox,不直接在StdItems写数量。这种方式适合“背包双击宝箱→按爆率出物”,数量概率在爆率文件管。
二、Blue/LEG的BoxItem.txt数量与几率
Envir\BoxItem.txt按宝箱名分段,格式:
[黄金宝箱]
经验20001
经验2000005
声望510
声望1520
金刚石1030
金刚石2040
天尊头盔1150
天尊项链1150
天尊手镯199
天尊戒指199
圣战头盔199
圣战项链1150
圣战戒指1150
法神头盔1150
法神项链1150
法神戒指199
三列含义:物品名、数量、获取几率。部分Blue资料写几率1到255,数字越大越难出,0不获取;LEG同类示例也用“物品数量几率”,中间格由引擎按几率排。经验、声望、金刚石用“经验数值”“声望数值”“金刚石数值”写法,不要写具体物品名。
NPC用钥匙开箱示例:
[@开黄金宝箱]
IF
CHECKITEM黄金宝箱1
CHECKITEM黄金钥匙1
CHECKBAGGAGE1
ACT
TAKE黄金宝箱1
TAKE黄金钥匙1
OPENBOX黄金宝箱
SENDMSG0黄金宝箱已开启
BREAK
ELSEACT
SENDMSG0需要黄金宝箱1个和黄金钥匙1个
BREAK
OPENBOX调BoxItem.txt里同名段;BoxItem改完在M2菜单重载,不重载不生效。
三、GEE/盛大类BoxsList与X.txt数量几率
数据库宝箱Stdmode48、Shape对应外观,Source写规则编号。Envir下建BoxsList.txt:
0
1
2
每行一个编号,必须连续。每个编号建0.txt、1.txt、2.txt,格式:
0.txt首行可写多次开启与收费参数,常见:
11010202050503
含义按引擎文档:是否多次、起始金币、起始元宝、累增金币、累增元宝、有效金币、有效元宝、最高次数。后面逐行写物品:
天尊头盔01
天尊项链01
天尊手镯01
天尊戒指01
经验(2000)0
金刚石(20)0
声望(200)0
圣战头盔1
圣战项链1
法神头盔2
经验(1000000)3
物品类型0可得、1不可得、2中间隔、3永远不可得;经验/金刚石/声望用“经验(数量)”“金刚石(数量)”“声望(数量)”。传统宝箱至少12个物品、珍珑至少8个、抽奖至少20个,数量不足M2可能不让开。
NPC命令可用OPENBOXS宝箱号码钥匙shape0;第三参0普通、非零按珍珑/抽奖走对应文件。数据库Source、BoxsList编号、X.txt名称三者对齐,差一个开箱空白。
四、3K/新宝箱类型数量几率
部分新宝箱规则按“物品名类型数量几率”四列:
天尊头盔0130
天尊项链0140
天尊手镯0150
天尊戒指0160
经验0100012
金刚石01013
声望02014
圣战头盔11100
圣战项链11100
圣战戒指11100
法神头盔0170
金刚石250113
类型0普通、1填充、2中间格、3极品;几率1到65535,数字越大概率越小。天赐类要求0类型至少8件、3类型至少2件,每次从0类随机取6到7件、3类取1到2件;九周年在StdItems的Reserved填2,M2物品装备里配钥匙数。
五、ItemBox.txt四列与权重算法
部分引擎Envir\ItemBox.txt按“宝箱名物品名数量参数”多列:
赤金宝箱金砖11
赤金宝箱经验2000001
赤金宝箱完美摄魂11
有资料把第四列当掉落开关,1进池、0不出;概率另由整体爆率控制。也有资料把第三列当权重,某物概率=该物权重÷同宝箱所有物权重和,例如10个物全权重1各10%,金砖改5、其余1则总权重14、金砖约35.7%。写之前先看本服ItemBox表头注释:若是“名物数开关”,数量填第三列、概率不在这里;若是“名物数权重A权重B”,按权重改,0通常特殊分组。
六、数量与堆叠的实际规则
数据库物品本身有堆叠上限,Stackable/Overlap或StdItems对应字段决定“数量”能发多少。宝箱规则写“屠龙1”每次发1把;写“金砖10”要看金砖物品库是否允许堆叠10,不允许就分多行或改发10次1个。经验、声望、金刚石不是实体装备,用经验(数值)、声望(数值)、金刚石(数值),不受背包堆叠限制但受M2单条经验上限影响。
绑定类产出在StdItems设Bind,或在规则文件用绑定标记;BoxItem纯文本不支持绑定时,改NPC开箱后GIVE绑定物品替代OPENBOX。比如不写OPENBOX,改:
[@开绑定宝箱]
IF
CHECKITEM黄金宝箱1
ACT
TAKE黄金宝箱1
RANDOMEX100
IF
SMALL30
ACT
GIVE屠龙1
BindItem屠龙
SENDMSG0获得绑定屠龙
BREAK
IF
SMALL70
ACT
GIVE金砖10
SENDMSG0获得金砖10
BREAK
ELSEACT
GIVE经验卷1
BREAK
BindItem命令名按引擎替换,没有就用数据库Bind字段预先绑定再GIVE。
七、怪物掉宝箱与宝箱再出物
宝箱作为怪物掉落,在MonItems/怪物名.txt写:
1/100黄金宝箱1
表示100分之一掉1个黄金宝箱。宝箱本身数量在爆率文件管,宝箱里面数量在BoxItem/Boxs/X.txt管,两层分开。Hero双击Stdmode31开箱时,OpenItemBox调的“宝箱名”要在怪物爆率里有对应掉落池;若用ItemBox.txt,则ItemBox的宝箱名和怪物掉出的宝箱名一致。
八、NPC自由配数量概率,不依赖数据库宝箱
不做Stdmode48、不建BoxItem,纯脚本也能跑:
[@超级宝箱]
IF
CHECKITEM超级宝箱1
CHECKITEM宝箱钥匙1
CHECKBAGGAGE2
ACT
TAKE超级宝箱1
TAKE宝箱钥匙1
RANDOMEX1000
IF
SMALL50
ACT
GIVE屠龙1
SENDMSG0开出屠龙1把
BREAK
IF
SMALL200
ACT
GIVE金砖20
SENDMSG0开出金砖20个
BREAK
IF
SMALL500
ACT
GIVE经验卷5
SENDMSG0开出经验卷5个
BREAK
ELSEACT
GIVE金币袋1
SENDMSG0开出金币袋1个
BREAK
RANDOMEX1000配SMALL50是5%,SMALL200累计到20%,SMALL500累计到50%,剩下走#else。多档别都从0开始,否则低档拦截高档;要独立概率就每段重新RANDOMEX。
九、排错
开箱没任何物品:先确认BoxItem/Boxs/X.txt名称与NPCOPENBOX、数据库Source完全一致;再确认M2已重载宝箱规则;Stdmode48宝箱还要看Shape、Anicount、Source三字段。
只出经验不出装备:BoxItem里装备几率写太大,比如150、200,相对经验1到5几乎不出;按目标概率重算,经验若想常出写1到10,极品装备写100到300。
双击宝箱没反应:Hero查Stdmode31、Anicount触发号、QFunction[@StdModeFuncX];传统查Stdmode48、Shape,NPC开箱查OPENBOX/OPENBOXS命令是否本引擎支持。
钥匙扣了不开:CHECKITEM钥匙数量、TAKE顺序、CHECKBAGGAGE空格都要写;先发物再TAKE会白给,先TAKE再发物断线可能扣钥匙不发奖,用变量锁或M2事务开箱最稳。
数量发成0:规则文件数量列写0、数据库GIVE数量写0、爆率数量列写0都会不出;BoxItem第三列是数量不是几率,别把几率填第三列。
珍珑/抽奖空白:传统12、珍珑8、抽奖20最少物品数,类型分配不对也开不了;新宝箱0类/3类最少件数按M2要求补。
改完用管理员小号分别测:空箱规则、单物品100%规则、低几率极品、经验/声望/金刚石、绑定装备、钥匙扣费、多次转盘收费。确认数量、几率、数据库字段、规则文件全部对应再放到正式地图怪物掉落。
一、StdItems物品库建宝箱与钥匙
传统宝箱在StdItems.DB建两行:
宝箱行示例
Name=黄金宝箱
Stdmode=48
Shape=1
Anicount=0或指定值
Source=1或对应规则文件编号
Reserved按引擎填0旧宝箱/1新宝箱/2九周年类
其他价格、库存、职业按普通物品补。
Stdmode=48通常是宝箱类,Shape1到6对应不同外观,6可给珍珑;Anicount在某些资料里用于转动抽取,0表示转动抽取、100表示不转直接给,具体看引擎宝箱模块。Source对应Envir下BoxsList/Boxs目录里的规则文件编号。
钥匙行示例
Name=黄金钥匙
Stdmode=49
Shape=与宝箱Anicount一致
Need=0金币/1元宝/2灵符/3金刚石
NeedLevel=收费数量
钥匙Shape和宝箱Anicount对上才能开;Need决定扣费类型,NeedLevel决定每次扣多少。只做消耗钥匙不扣货币,Need填0、NeedLevel填0,脚本里再用TAKE扣钥匙。
Hero类双击物品开箱不一定要Stdmode48。物品库把宝箱Stdmode设31,Anicount设触发号X,QFunction-0.txt写:
[@StdModeFuncX]
IF
ACT
OpenItemBox宝箱名
SENDMSG7开启宝箱成功
OpenItemBox对应的爆物走怪物爆率/ItemBox,不直接在StdItems写数量。这种方式适合“背包双击宝箱→按爆率出物”,数量概率在爆率文件管。
二、Blue/LEG的BoxItem.txt数量与几率
Envir\BoxItem.txt按宝箱名分段,格式:
[黄金宝箱]
经验20001
经验2000005
声望510
声望1520
金刚石1030
金刚石2040
天尊头盔1150
天尊项链1150
天尊手镯199
天尊戒指199
圣战头盔199
圣战项链1150
圣战戒指1150
法神头盔1150
法神项链1150
法神戒指199
三列含义:物品名、数量、获取几率。部分Blue资料写几率1到255,数字越大越难出,0不获取;LEG同类示例也用“物品数量几率”,中间格由引擎按几率排。经验、声望、金刚石用“经验数值”“声望数值”“金刚石数值”写法,不要写具体物品名。
NPC用钥匙开箱示例:
[@开黄金宝箱]
IF
CHECKITEM黄金宝箱1
CHECKITEM黄金钥匙1
CHECKBAGGAGE1
ACT
TAKE黄金宝箱1
TAKE黄金钥匙1
OPENBOX黄金宝箱
SENDMSG0黄金宝箱已开启
BREAK
ELSEACT
SENDMSG0需要黄金宝箱1个和黄金钥匙1个
BREAK
OPENBOX调BoxItem.txt里同名段;BoxItem改完在M2菜单重载,不重载不生效。
三、GEE/盛大类BoxsList与X.txt数量几率
数据库宝箱Stdmode48、Shape对应外观,Source写规则编号。Envir下建BoxsList.txt:
0
1
2
每行一个编号,必须连续。每个编号建0.txt、1.txt、2.txt,格式:
0.txt首行可写多次开启与收费参数,常见:
11010202050503
含义按引擎文档:是否多次、起始金币、起始元宝、累增金币、累增元宝、有效金币、有效元宝、最高次数。后面逐行写物品:
天尊头盔01
天尊项链01
天尊手镯01
天尊戒指01
经验(2000)0
金刚石(20)0
声望(200)0
圣战头盔1
圣战项链1
法神头盔2
经验(1000000)3
物品类型0可得、1不可得、2中间隔、3永远不可得;经验/金刚石/声望用“经验(数量)”“金刚石(数量)”“声望(数量)”。传统宝箱至少12个物品、珍珑至少8个、抽奖至少20个,数量不足M2可能不让开。
NPC命令可用OPENBOXS宝箱号码钥匙shape0;第三参0普通、非零按珍珑/抽奖走对应文件。数据库Source、BoxsList编号、X.txt名称三者对齐,差一个开箱空白。
四、3K/新宝箱类型数量几率
部分新宝箱规则按“物品名类型数量几率”四列:
天尊头盔0130
天尊项链0140
天尊手镯0150
天尊戒指0160
经验0100012
金刚石01013
声望02014
圣战头盔11100
圣战项链11100
圣战戒指11100
法神头盔0170
金刚石250113
类型0普通、1填充、2中间格、3极品;几率1到65535,数字越大概率越小。天赐类要求0类型至少8件、3类型至少2件,每次从0类随机取6到7件、3类取1到2件;九周年在StdItems的Reserved填2,M2物品装备里配钥匙数。
五、ItemBox.txt四列与权重算法
部分引擎Envir\ItemBox.txt按“宝箱名物品名数量参数”多列:
赤金宝箱金砖11
赤金宝箱经验2000001
赤金宝箱完美摄魂11
有资料把第四列当掉落开关,1进池、0不出;概率另由整体爆率控制。也有资料把第三列当权重,某物概率=该物权重÷同宝箱所有物权重和,例如10个物全权重1各10%,金砖改5、其余1则总权重14、金砖约35.7%。写之前先看本服ItemBox表头注释:若是“名物数开关”,数量填第三列、概率不在这里;若是“名物数权重A权重B”,按权重改,0通常特殊分组。
六、数量与堆叠的实际规则
数据库物品本身有堆叠上限,Stackable/Overlap或StdItems对应字段决定“数量”能发多少。宝箱规则写“屠龙1”每次发1把;写“金砖10”要看金砖物品库是否允许堆叠10,不允许就分多行或改发10次1个。经验、声望、金刚石不是实体装备,用经验(数值)、声望(数值)、金刚石(数值),不受背包堆叠限制但受M2单条经验上限影响。
绑定类产出在StdItems设Bind,或在规则文件用绑定标记;BoxItem纯文本不支持绑定时,改NPC开箱后GIVE绑定物品替代OPENBOX。比如不写OPENBOX,改:
[@开绑定宝箱]
IF
CHECKITEM黄金宝箱1
ACT
TAKE黄金宝箱1
RANDOMEX100
IF
SMALL30
ACT
GIVE屠龙1
BindItem屠龙
SENDMSG0获得绑定屠龙
BREAK
IF
SMALL70
ACT
GIVE金砖10
SENDMSG0获得金砖10
BREAK
ELSEACT
GIVE经验卷1
BREAK
BindItem命令名按引擎替换,没有就用数据库Bind字段预先绑定再GIVE。
七、怪物掉宝箱与宝箱再出物
宝箱作为怪物掉落,在MonItems/怪物名.txt写:
1/100黄金宝箱1
表示100分之一掉1个黄金宝箱。宝箱本身数量在爆率文件管,宝箱里面数量在BoxItem/Boxs/X.txt管,两层分开。Hero双击Stdmode31开箱时,OpenItemBox调的“宝箱名”要在怪物爆率里有对应掉落池;若用ItemBox.txt,则ItemBox的宝箱名和怪物掉出的宝箱名一致。
八、NPC自由配数量概率,不依赖数据库宝箱
不做Stdmode48、不建BoxItem,纯脚本也能跑:
[@超级宝箱]
IF
CHECKITEM超级宝箱1
CHECKITEM宝箱钥匙1
CHECKBAGGAGE2
ACT
TAKE超级宝箱1
TAKE宝箱钥匙1
RANDOMEX1000
IF
SMALL50
ACT
GIVE屠龙1
SENDMSG0开出屠龙1把
BREAK
IF
SMALL200
ACT
GIVE金砖20
SENDMSG0开出金砖20个
BREAK
IF
SMALL500
ACT
GIVE经验卷5
SENDMSG0开出经验卷5个
BREAK
ELSEACT
GIVE金币袋1
SENDMSG0开出金币袋1个
BREAK
RANDOMEX1000配SMALL50是5%,SMALL200累计到20%,SMALL500累计到50%,剩下走#else。多档别都从0开始,否则低档拦截高档;要独立概率就每段重新RANDOMEX。
九、排错
开箱没任何物品:先确认BoxItem/Boxs/X.txt名称与NPCOPENBOX、数据库Source完全一致;再确认M2已重载宝箱规则;Stdmode48宝箱还要看Shape、Anicount、Source三字段。
只出经验不出装备:BoxItem里装备几率写太大,比如150、200,相对经验1到5几乎不出;按目标概率重算,经验若想常出写1到10,极品装备写100到300。
双击宝箱没反应:Hero查Stdmode31、Anicount触发号、QFunction[@StdModeFuncX];传统查Stdmode48、Shape,NPC开箱查OPENBOX/OPENBOXS命令是否本引擎支持。
钥匙扣了不开:CHECKITEM钥匙数量、TAKE顺序、CHECKBAGGAGE空格都要写;先发物再TAKE会白给,先TAKE再发物断线可能扣钥匙不发奖,用变量锁或M2事务开箱最稳。
数量发成0:规则文件数量列写0、数据库GIVE数量写0、爆率数量列写0都会不出;BoxItem第三列是数量不是几率,别把几率填第三列。
珍珑/抽奖空白:传统12、珍珑8、抽奖20最少物品数,类型分配不对也开不了;新宝箱0类/3类最少件数按M2要求补。
改完用管理员小号分别测:空箱规则、单物品100%规则、低几率极品、经验/声望/金刚石、绑定装备、钥匙扣费、多次转盘收费。确认数量、几率、数据库字段、规则文件全部对应再放到正式地图怪物掉落。

