传奇角色全身各部位穿戴装备附加属性点数检测方法CHECKITEMADDVALUE与CheckNewItemVal

来源: 作者: 点击:
检查身上装备附加点分三层。第一层用CHECKITEMADDVALUE读各槽位极品附加,适合武器攻击魔法道术、衣服防御魔御、首饰各项上限、幸运准确攻速持久。第二层用CheckNewItemValue或CHECKNEWITEMVALUE读新属性,适合暴击、伤害增加、物减、魔减、反弹、体质。第三层用CheckItemAddValueEx读GOM/GEE附加与元素总和并回写变量。不同引擎命令名大小写不同,参数含义按所用M2命令手册核对再上线。

一、穿身位置代码

0盔甲
1武器
2照明物,蜡烛类附加升级多数引擎无效
3项链
4头盔
5右手镯
6左手镯
7右戒指
8左戒指
9护身符位,老12格模型常留空
10腰带
11鞋子
12宝石
13斗笠
14军鼓
15马牌
16盾牌
17时装衣服
18时装武器
19时装项链
20时装头盔
21时装左镯
22时装右镯
23时装左戒
24时装右戒
25时装勋章
26时装腰带
27时装鞋子
28时装宝石
30到41十二首饰盒
42到47六首饰盒

老Hero、老Blue按0到12模型写,0盔甲、1武器、3项链、4头盔、5右镯、6左镯、7右戒、8左戒、10腰带、11鞋子、12宝石。 新GOM/GEE/部分合击扩展支持到47,OK框用-1,具体以M2版本说明为准。

二、各部位属性点代码

盔甲:0防御、1魔御、2攻击、3魔法、4道术、5到13无常规效果、14持久。
武器:0 DC2攻击上限、1 MC2魔法上限、2 SC2道术上限、3幸运、4诅咒、5准确、6攻速、7强度、10需开封、14持久。
头盔:0防御、1魔御、2攻击、3魔法、4道术、5佩戴需求、6佩戴等级、14持久。
项链:0 AC2、1 MAC2、2 DC2、3 MC2、4 SC2、6需求、7等级、14持久。
手镯:0 AC2、1 MAC2、2 DC2、3 MC2、4 SC2、6需求、7等级、14持久。
戒指:同手镯首饰模型,0 AC2、1 MAC2、2 DC2、3 MC2、4 SC2、6需求、7等级、14持久。

三、单件检测脚本

检测武器攻击上限附加大于6:

[@checkweapon]
IF

CheckItemAddValue 1 0 > 6
ACT

SENDMSG 5 武器附加攻击上限超过6点
ELSEACT

SENDMSG 5 武器附加攻击上限不足

检测武器幸运附加大于6:

[@checkluck]
IF

CheckItemAddValue 1 3 > 6
ACT

SENDMSG 5 武器附加幸运超过6点
ELSEACT

SENDMSG 5 武器幸运附加不足

检测盔甲防御附加大于1:

[@checkarmorac]
IF

CheckItemAddValue 0 0 > 1
ACT

SENDMSG 5 盔甲附加防御超过1点
ELSEACT

SENDMSG 5 盔甲防御附加不足

检测项链DC2附加大于3:

[@checkneckdc]
IF

CheckItemAddValue 3 2 > 3
ACT

SENDMSG 5 项链附加攻击上限超过3点
ELSEACT

SENDMSG 5 项链攻击附加不足

检测右手镯AC2附加大于2:

[@checkbraceac]
IF

CheckItemAddValue 5 0 > 2
ACT

SENDMSG 5 右手镯附加防御上限超过2点
ELSEACT

SENDMSG 5 右手镯防御附加不足

老12格模型左手镯用6、右戒指用7、左戒指用8;新扩展模型按引擎首饰槽重排,别直接套老号。

四、全身汇总总点数

需要把全身附加点加总做入门、回收、转生、合装备门槛,用临时变量逐部位读再CALCVAR。以老模型战士防御类汇总为例:

[@sumac]
IF

ACT

MOV N0 0
CheckItemAddValue 0 0 > 0
ACT

CALCVAR HUMAN 临时防御点 = 0
CheckItemAddValue 0 0 > 0
ACT

GETITEMADDVALUE 0 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
CheckItemAddValue 4 0 > 0
ACT

GETITEMADDVALUE 4 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
CheckItemAddValue 5 0 > 0
ACT

GETITEMADDVALUE 5 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
CheckItemAddValue 6 0 > 0
ACT

GETITEMADDVALUE 6 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
CheckItemAddValue 7 0 > 0
ACT

GETITEMADDVALUE 7 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
CheckItemAddValue 8 0 > 0
ACT

GETITEMADDVALUE 8 0
CALCVAR HUMAN 临时防御点 + <$STR(M0)>
SENDMSG 5 全身防御类附加汇总完成,可继续判断

GETITEMADDVALUE把当前CheckItemAddValue刚检测到的属性值写入临时变量,具体写入M0、N0还是S0看引擎;部分Hero/Blue用固定返回变量,部分GOM用自定义变量接收。写汇总前用小号逐件戴装测试,确认每件属性都能被GET到,避免只统计了最后一件。

全职业攻击类汇总示例,武器DC2、项链DC2、两手镯DC2、两戒指DC2:

[@sumdc]
IF

ACT

CALCVAR HUMAN 临时攻击点 = 0
CheckItemAddValue 1 0 > 0
ACT

GETITEMADDVALUE 1 0
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CheckItemAddValue 3 2 > 0
ACT

GETITEMADDVALUE 3 2
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CheckItemAddValue 5 2 > 0
ACT

GETITEMADDVALUE 5 2
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CheckItemAddValue 6 2 > 0
ACT

GETITEMADDVALUE 6 2
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CheckItemAddValue 7 2 > 0
ACT

GETITEMADDVALUE 7 2
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CheckItemAddValue 8 2 > 0
ACT

GETITEMADDVALUE 8 2
CALCVAR HUMAN 临时攻击点 + <$STR(M0)>
CHECKVAR HUMAN 临时攻击点 > 20
ACT

SENDMSG 5 全身攻击附加超过20点,可进高阶地图
ELSEACT

SENDMSG 5 全身攻击附加不足20点

魔法类把武器1、项链3、手镯3、戒指3代入;道术类把武器2、项链4、手镯4、戒指4代入。头盔、衣服若版本允许附加攻魔道,再按对应部位属性码加入。

五、GOM/GEE用CheckItemAddValueEx汇总

GOM资料给的格式为CheckItemAddValueEx 装备位置 操作符 附加值 属性类型 返回变量,位置-1到47,-1为OK框物品;可检测附加属性和元素属性总和,武器诅咒不计入,参数5可回写总和变量。

检测武器附加属性大于5并回变量:

[@gomwp]
IF

CheckItemAddValueEx 1 > 5 0 M0
ACT

SENDMSG 5 武器附加属性总和大于5,返回值<$STR(M0)>
ELSEACT

SENDMSG 5 武器附加属性不足

检测武器元素属性大于5:

[@gomele]
IF

CheckItemAddValueEx 1 > 5 1 M0
ACT

SENDMSG 5 武器元素属性总和大于5,返回值<$STR(M0)>
ELSEACT

SENDMSG 5 武器元素属性不足

全身多件汇总用循环或逐位置写段,把每件回写值用CALCVAR加到HUMAN自定义变量。属性类型编号按所用GOM/GEE命令手册核,不同小版本0基础附加、1元素、2绿光极品的编号可能不同。

六、新属性检测CheckNewItemValue

Hero新属性用CheckNewItemValue 位置 属性 操作符 值。常见映射:0致命一击、1攻击伤害增加、2物理伤害减少、3魔法伤害减少、4忽视或反弹按版本、5体质、6体质扩展、7附加经验、8怒气恢复、9合计攻击、10目标爆率、11治愈增强、13人物魔力。 GEE扩展用CHECKNEWITEMVALUE,位置0到18为穿身,boxitem0到boxitem7为自定义OK框,属性0到10覆盖暴击、增伤、物减、魔减等。

检测武器致命一击大于5:

[@checkcrit]
IF

CheckNewItemValue 1 0 > 5
ACT

SENDMSG 5 武器致命一击附加大于5%
ELSEACT

SENDMSG 5 武器无足够致命一击

检测盔甲体质大于5:

[@checkcon]
IF

CheckNewItemValue 0 6 > 5
ACT

SENDMSG 5 盔甲体质附加大于5点
ELSEACT

SENDMSG 5 盔甲体质不足

检测全身增伤门槛,逐部位写:

[@sumnewdmg]
IF

ACT

CALCVAR HUMAN 新增伤点 = 0
CheckNewItemValue 1 1 > 0
ACT

GETNEWITEMVALUE 1 1
CALCVAR HUMAN 新增伤点 + <$STR(M0)>
CheckNewItemValue 0 1 > 0
ACT

GETNEWITEMVALUE 0 1
CALCVAR HUMAN 新增伤点 + <$STR(M0)>
CheckNewItemValue 3 1 > 0
ACT

GETNEWITEMVALUE 3 1
CALCVAR HUMAN 新增伤点 + <$STR(M0)>
CHECKVAR HUMAN 新增伤点 > 10
ACT

SENDMSG 5 全身新属性增伤超过10点
ELSEACT

SENDMSG 5 全身新属性增伤不足10点

GETNEWITEMVALUE命令名各引擎可能写成GetNewItemValue或只通过CheckNewItemValue回写变量,使用前在M2命令列表搜一次。

七、OK框与对话框检测

玩家把装备放OK框再点NPC,用-1位置检测。CHECKITEMADDVALUE -1 属性 符号 值可读OK框物品;多OK框GEE用boxitem0到boxitem7。

[@checkok]
IF

CheckItemAddValue -1 0 > 3
ACT

SENDMSG 5 OK框盔甲/武器对应属性超过3点
ELSEACT

SENDMSG 5 OK框属性不足

Hero对话框升级可用CHECKDLGITEMADDVALUE、GETDLGITEMVALUE读对话框物品属性点,再配合UPGRADEDLGITEM写升级上限;这种适合OK框/拖拽框洗练,不用于直接穿身汇总。

八、数据库底属性与附加点区分

StdItems里AC/AC2/MAC/MAC2/DC/DC2/MC/MC2/SC/SC2是底属性,不属于“附加极品点”。衣服武器AC/MAC/DC/MC/SC按防御魔御攻魔道上下限存;首饰AC2常映射准确、MAC2常映射敏捷,具体看StdMode和版本解释。 CHECKITEMADDVALUE读的是额外附加、极品点、升级点;若只查底属性是否满足,不写附加命令,直接用CheckItemAddValue比对底值会误判。铁血部分资料提到UPGRADEITEMEX增加的附加属性不能被某些CHECKITEMADDVALUE检测,遇到这类用对应新版命令或改升级方式。

九、升级前门槛检测

武器升级前要求原有附加攻击不超过7,避免叠太高:

[@upgcheck]
IF

CheckItemAddValue 1 0 < 7
ACT

SENDMSG 5 武器附加攻击未满7,允许继续升级
ELSEACT

SENDMSG 5 武器附加攻击已达上限,停止升级

衣服洗练前要求防御附加在0到10:

[@washac]
IF

CheckItemAddValue 0 0 > 0
CheckItemAddValue 0 0 < 10
ACT

SENDMSG 5 衣服防御附加在可洗范围
ELSEACT

SENDMSG 5 衣服防御附加不在可洗范围

多属性装备要求攻、命、速同时达标,用多行#IF:

[@triplecheck]
IF

CheckItemAddValue 1 0 > 5
CheckItemAddValue 1 5 > 2
CheckItemAddValue 1 6 > 1
ACT

SENDMSG 5 武器攻击、准确、攻速均达标
ELSEACT

SENDMSG 5 武器多属性未同时达标

十、回收与入门门槛

全身附加总点回收,先汇总再按总点给元宝或材料:

[@recyclebyadd]
IF

ACT

CALCVAR HUMAN 回收附加点 = 0
CheckItemAddValue 0 0 > 0
ACT

GETITEMADDVALUE 0 0
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CheckItemAddValue 0 1 > 0
ACT

GETITEMADDVALUE 0 1
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CheckItemAddValue 1 0 > 0
ACT

GETITEMADDVALUE 1 0
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CheckItemAddValue 1 1 > 0
ACT

GETITEMADDVALUE 1 1
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CheckItemAddValue 3 2 > 0
ACT

GETITEMADDVALUE 3 2
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CheckItemAddValue 3 3 > 0
ACT

GETITEMADDVALUE 3 3
CALCVAR HUMAN 回收附加点 + <$STR(M0)>
CHECKVAR HUMAN 回收附加点 > 30
ACT

Give 附加回收券 1
SENDMSG 5 全身附加超过30点,发放回收券
ELSEACT

SENDMSG 5 全身附加不足30点,不予回收

进高阶图要求全身攻魔道附加均达标,分别汇总武器、项链、手镯、戒指对应码再判断;道士把项链4、手镯4、戒指4、武器2代入,法师把项链3、手镯3、戒指3、武器1代入。

十一、QF自动触发检测

穿戴武器即时判断双7或高附加,放QFunction-0的@TakeOn1:

[@TakeOn1]
IF

CheckItemAddValue 1 0 > 6
CheckItemAddValue 1 3 > 6
ACT

POWERRATE 120 600
SENDMSG 5 武器攻击与幸运附加均超6,开启倍攻
ELSEACT

SENDMSG 5 武器附加未达双高,不触发倍攻

@TakeOn1对应武器位置,头盔、衣服、首饰按引擎TakeOn编号写不同段。若只用NPC点一下检测,不放QF,避免每次穿装刷消息打扰玩家。

十二、常见不生效

命令大小写报错:Hero写CHECKITEMADDVALUE,GOM写CheckItemAddValue或CheckItemAddValueEx,GEE写CHECKNEWITEMVALUE,照抄别混。先在M2命令列表搜命令全名。

位置码错位:老12格把项链写1、武器写3会全错;新47格把时装、首饰盒、盾牌另排。按所用引擎位置表重列再写脚本。

附加点读不到:用CHECKITEMADDVALUE查底属性,但装备点数是StdItems固定值,不是极品附加。底属性判断应改数据库字段核对或用引擎提供的底属性读取命令;极品附加才用ADDVALUE系列。

GET返回空:没先CHECK再GET,或Get命令返回变量名不对。标准写法先CheckItemAddValue满足条件,再GetItemAddValue取刚检测属性到临时变量,最后CALCVAR汇总。

铁血UPGRADEITEMEX附加不检:部分铁血资料明确CHECKITEMADDVALUE不能检UPGRADEITEMEX产生的点,换新版检测命令或改升级写入方式。

OK框检测空:玩家没放装备、位置没写-1、多框没写boxitem。NPC先提示放入OK框再检测。

新属性用错旧命令:暴击、增伤、物减、魔减用CheckNewItemValue/CHECKNEWITEMVALUE,不用CHECKITEMADDVALUE;后者只覆盖老极品AC/MC/DC等附加模型,读不到新属性类型。

重载不完整:改NPC、QF、Market_Def后M2重载NPC脚本;GOM新属性、Ex属性改完重载物品属性和脚本;Hero对话框命令改完重载QF与NPC。不重载会出现“命令存在但检测无反应”。

全身汇总变量串号:多NPC都用M0、N0传值,前面检测完没清,后面汇总带入旧值。每段开头CALCVAR自定义HUMAN变量=0,或换S/M/N不同号,避免交叉污染。

按上面分部位单检、GET取点、CALCVAR汇总、Ex查元素、New查暴击增伤,可覆盖升级门槛、洗练上限、回收计价、进图门槛、穿戴倍攻全部场景。老版本优先CHECKITEMADDVALUE 0到12模型,新GOM/GEE加CheckItemAddValueEx,Hero新属性加CheckNewItemValue,正式上线前用空号、单件极品、全套极品三组数据各跑一遍。