物品使用条件分两层处理,一层在StdItems.DB做静态门槛,一层在QFunction、ItemScript、QuestDiary做动态判断。只改数据库不写脚本,复杂道具没法按地图、按会员、按任务变量限制;只写脚本不改数据库,普通药水、卷轴、装备容易出现能点但无效果,或者不该用的角色也能强点。两套配合着配才完整。
一、StdItems.DB静态条件
用DBC2000或引擎自带物品编辑器打开Mir200\DB\StdItems.DB,按物品类型改字段。
CanUse:是否可使用,填1允许点击使用,0禁止。回血回蓝、卷轴、经验丹都要1,纯展示道具可0。
NeedLevel:使用最低等级。新手药填1,高级丹填50或70,转生服可配合转生字段另判。GEE经验卷可直接在NeedLevel填使用等级下限。
NeedJob或职业限制字段:按引擎不同叫法不一样,战士武器限制战士、法师武器限制法师、道士武器限制道士;通用小极品若不限制填0。Hero可用脚本CheckJob再补判,数据库只做硬门槛。
NeedSex:性别限制,男装女装、夫妻任务道具用得到,不限制填0。
Weight:重量影响负重,首饰佩戴可借Weight做负重门槛,但更准的是脚本查属性。
Bind:BLUE/LEG绑定规则0不绑定、1拾取绑定、2穿戴绑定、3拾取加穿戴双绑定;GOM/GEE、BLUE可在Bind字段或脚本双向控制。
Reserved:特殊标识位,城主战袍、行会专属、活动专属可写特定数值,脚本用CheckItemByReserved或按Reserved比对,避免同名普通装备被冒用。
AniCount:部分BLUE/LEG用来挂脚本触发序号,首饰属性门槛、声望门槛、任务门槛可让AniCount对应QFunction的[@StdModeFunc值];包时物品stdmode=2、shape=18时AniCount对应双击触发段。
StdMode/Shape:决定物品是药水、卷轴、装备、经验卷、包时物。经验卷GOM/GEE常走QFunction的@UseItem物品ID,BLUE包时物按stdmode=2 shape=18,LEG按本版触发文件来。
二、QFunction物品使用触发基础
GOM/GEE、部分Hero在Mir200\Envir\Market_Def\QFunction-0.txt写使用段。格式按物品ID绑定:
[@UseItem60001]
IF
CHECKLEVEL >= 50
ACT
TAKE 精元经验卷 1
GIVEEXP 1000000
SENDMSG 6 使用成功,获得100万经验
BREAK
ELSEACT
SENDMSG 6 需要50级以上才可使用
BREAK
60001换成经验卷在StdItems的ID,GEE经验卷可同时在数据库NeedLevel填等级、脚本再补地图或会员判断。 Hero可在ItemScript.txt写“物品ID=脚本文件”,脚本里用[@UseItem物品ID]或[@UseItem_物品名]触发;不同Hero小版本命名有差异,按引擎文档试一次。 BLUE包时物示例:
StdItems行:名称;stdmode=2;shape=18;DuraMax=2;AniCount=51;其余按版本填
QFunction-0.txt:
[@StdModeFunc51]
IF
ACT
MESSAGEBOX 已激活2天包时效果,到期自动回收
BREAK
DuraMax=2表示2天,AniCount=51对应[@StdModeFunc51],双击触发后计时,到期M2自动回收,武器首饰部分版本不支持。
三、等级、职业、性别组合条件
普通限制用CHECKLEVEL、CHECKJOB、CHECKSEX;不同引擎命令名可能写成CheckLevel、CHECKLEV、CheckJob、CHECKJOB,按本服M2命令表统一。
[@UseItem70001]
IF
CHECKLEVEL >= 40
CHECKJOB WARRIOR
ACT
TAKE 战士高级丹 1
CHANGEHP + 500
SENDMSG 6 战士专用回血丹使用成功
BREAK
ELSEACT
SENDMSG 6 仅40级以上战士可使用
BREAK
法师把CHECKJOB改WIZARD或MAGICIAN,道士改TAOIST;三职业通用删掉CHECKJOB整行。性别补充:
IF
CHECKSEX 0
表示男或女按引擎0/1取值,具体看M2命令说明;不写CHECKSEX即不限性别。
四、转生、会员、行会条件
转生判断不同引擎命令不同,GOM/GEE常用CHECKREBIRTH或本版转生变量,Hero用CheckRebirth,LEG按转生脚本写全局变量。示例通用思路:
[@UseItem80001]
IF
CHECKREBIRTH >= 1
CHECKLEVEL >= 80
ACT
TAKE 转生突破丹 1
GmExeCute 调整属性 Self
SENDMSG 6 转生1次以上且80级可使用
BREAK
ELSEACT
SENDMSG 6 需要转生1转且80级
BREAK
未转生可单独拦截:
IF
CHECKREBIRTH 0
ACT
SENDMSG 6 未转生不可使用
BREAK
会员条件GEE可用CHECKMEMBERTYPE、CHECKMEMBERLEVEL;会员专属物品还可在物品使用条件里配类型8、81、82,分别对应不同会员判定逻辑,具体看会员系统文档。 示例:
[@UseItem90001]
IF
CHECKMEMBERTYPE 1
CHECKMEMBERLEVEL >= 2
ACT
TAKE VIP秘药 1
GIVEEXP 5000000
SENDMSG 6 VIP2以上使用成功
BREAK
ELSEACT
SENDMSG 6 仅VIP2以上会员可使用
BREAK
行会条件用CHECKGUILD、CheckGuildMaster、CheckGuildRank等。城主战袍类在StdItems把Reserved设特殊值,QFunction穿戴事件判断:
[@TakeOn7]
IF
CheckItemByReserved 9999
NOT CheckGuildMaster
ACT
TakeOffItem 7
SENDMSG 6 城主战袍仅沙巴克城主可穿
BREAK
7是衣服位,Reserved 9999仅作标识示例,实际按服内统一编号。
五、地图、时间、冷却变量条件
限定某图才能用,用CHECKMAP或本版ISONMAP:
[@UseItemA001]
IF
CHECKMAP 3
CHECKLEVEL >= 30
ACT
TAKE 土城回血包 1
CHANGEHP + 300
SENDMSG 6 土城安全区使用成功
BREAK
ELSEACT
SENDMSG 6 仅在土城可使用
BREAK
部分版本用ISONMAP 地图编号更直观,攻沙图、卧龙、封魔可单独写白名单或黑名单。时间限定用CHECKHOUR、本版日期命令或在线时长变量;日常道具做冷却用角色变量:
[@UseItemB001]
IF
EQUAL <$STR(N01)> 0
ACT
SET N01 1
TAKE 每日体力丹 1
GIVEEXP 200000
SENDMSG 6 使用成功,今日已用1次
BREAK
ELSEACT
SENDMSG 6 今日已使用,明日重置
BREAK
N01用日变量,登录或零点脚本重置为0;没有日变量用账号名名单、文本标记、M2每日变量替代。
六、消耗道具、金币、元宝、背包空格
使用物品还要附带消耗其他材料,先CHECK再TAKE:
[@UseItemC001]
IF
CHECKITEM 高级经验卷 1
CHECKITEM 聚灵符 1
CHECKGAMEGOLD >= 10
ACT
TAKE 高级经验卷 1
TAKE 聚灵符 1
GAMEGOLD - 10
CHANGEEXP + 1000000
SENDMSG 6 消耗卷轴+聚灵符+10元宝,获得经验
BREAK
ELSEACT
SENDMSG 6 需要高级经验卷1、聚灵符1、元宝10
BREAK
金币用CHECKGOLD、GAMEGOLD,元宝按服内货币名CHECKGAMEGOLD、GAMEGOLD;绑定元宝、金条、灵符按本版物品名判断。发奖励前查背包空格,部分引擎用CHECKBAGFREE、CheckBagSize,空格不足先提示清理:
IF
CHECKBAGFREE >= 2
ACT
GIVE 奖励道具 1
BREAK
ELSEACT
SENDMSG 6 背包至少留2个空格
BREAK
七、穿戴类使用条件
装备不是“使用”而是“穿上”,触发写在穿戴事件。GOM/GEE、BLUE/LEG可在QFunction用[@TakeOn装备位]或[@StdModeFunc值]。攻击门槛首饰示例:
StdItems把目标首饰AniCount设1,QFunction:
[@StdModeFunc1]
IF
CheckHeroAttr 攻击 30
ACT
SENDMSG 6 攻击达30,佩戴成功
BREAK
ELSEACT
SENDMSG 6 需要攻击30以上
RETURN
BREAK
魔法、道术把攻击参数换成对应属性名;声望门槛用CheckRepute,荣誉用CheckHonor,任务进度用自定义变量Q1~Qn或本版任务命令。 BLUE包时装备stdmode=2 shape=18走[@StdModeFuncAniCount],不按TakeOn处理;武器首饰包时部分版本不支持,配完用测试号实穿。
八、任务、变量、反刷条件
任务道具按角色变量发资格,未接任务不能用:
[@UseItemD001]
IF
CHECKLEAVE 1
EQUAL <$STR(Q10)> 1
ACT
TAKE 任务传送卷 1
MAPMOVE 任务地图 100 100
SENDMSG 6 任务进行中,传送成功
BREAK
ELSEACT
SENDMSG 6 未接取对应任务
BREAK
Q10=1表示任务到某步,接任务NPC设1,完成或放弃设0。防刷加总次数:
IF
SMALL <$STR(N50)> 5
ACT
INC N50 1
TAKE 免费经验丹 1
CHANGEEXP + 100000
BREAK
ELSEACT
SENDMSG 6 免费经验丹每日限5次
BREAK
N50按日重置;多角色同账号刷用账号级变量或M2每日消费/使用统计。
九、常见不生效排查
点物品没反应:先确认StdItems的CanUse=1、StdMode和Shape对本引擎使用触发匹配,QFunction或ItemScript是否挂载物品ID,文件名和路径是否本版本要求。
等级够仍提示不行:CHECKLEVEL写成>还是>=要统一,NeedLevel数据库值和脚本值别冲突;转生服还要看转生变量是否初始化。
职业判断错乱:Hero用CheckJob(WARRIOR)或CHECKJOB WARRIOR按版本选,GOM用CHECKJOB参数名,LEG按数据库NeedJob优先、脚本补判。
穿戴即脱:TakeOn脚本RETURN前没BREAK、Reserved判断反了、行会/城主命令名不对,都会穿上一秒被脱;先去掉RETURN只发消息,确认条件再启用强制脱。
会员道具所有人能用:会员物品使用条件8/81/82与脚本CHECKMEMBERTYPE要同时配,只改物品不写会员名单会失效。
包时不倒计时:stdmode、shape、DuraMax、AniCount四项和[@StdModeFunc]不匹配,或M2包时功能未开;BLUE示例stdmode=2 shape=18才进包时逻辑。
编码乱码:老引擎QFunction、QuestDiary存ANSI,存UTF-8会中文条件名匹配失败。
十、推荐配置模板
普通经验丹:StdItems设CanUse=1、NeedLevel按档位、Bind按是否绑定;QFunction写@UseItemID,CHECKLEVEL分段发CHANGEEXP或GIVEEXP,低等级服可不写会员地图条件。
高级活动丹:数据库NeedLevel 50,脚本加CHECKREBIRTH>=1、CHECKMEMBERTYPE>=1、CHECKMAP白名单、日变量限3次。
职业专属药:数据库NeedJob限制,脚本再CHECKJOB双保险,避免不同引擎字段名不生效。
行会/城主装:StdItems Reserved写独立值,Bind按需求0/1/2/3,QFunction TakeOn判断CheckGuildMaster/CheckItemByReserved,非权限强制TakeOffItem。
包时增益物:BLUE用stdmode=2 shape=18、DuraMax天数、AniCount触发[@StdModeFunc];GOM/GEE用Buff命令加保存参数,不用包时字段也行。
任务卷轴:数据库CanUse=1,脚本用任务变量Q系列或自定义N变量,未接任务直接ELSEACT提示,接任务NPC写变量、交任务清变量。
改完先建1级、40级、80级、转生号、会员号、行会长号各测一遍;重点看低等级能否强点、错职业能否绕开、非城主能否穿城主装、会员过期是否仍可用、日次数重置是否准确。所有StdItems改前备一份DB,QFunction和QuestDiary改前备文本,变量命名按“物品ID+条件”统一,后期加新道具直接套模板不用重排条件。
传奇使用物品所需条件设置教程包含等级职业性别转生会员行会与脚本限制完整配置
来源:
作者:
点击:

