当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇脚本检测装备是否为极品的实现方法

热度:
在传奇脚本中检测装备是否为“极品”,核心是使用CHECKITEMADDVALUE命令,配合CHECKITEMADDVALUE或读取物品附加属性(如<$ITEMADD[下标]>)进行判断。以下是适用于SKYM2和BULEM2引擎的具体脚本。

一、基础脚本:检测手镯并判断是否为极品

假设“手镯防御神水”的使用触发在QFunction-0.txt的[@StdModeFuncX]段,其中X是该物品的StdMode编号。核心逻辑是:检测指定位置的“手镯”类装备,若其任何附加属性不为0(即已有极品点数),则判定为极品,神水使用无效。
;假设手镯防御神水的StdMode编号为555
[@StdModeFunc555]
#IF
;1.检测右手镯位是否为空
WEARGITEM手镯1=0
#ACT
SENDMSG6请先佩戴一个手镯!
BREAK

;2.检测右手镯位是否戴着手镯
WEARGITEM手镯1=1
#IF
;3.检查手镯的“防御”附加属性是否为0(是否为白板)
CHECKITEMADDVALUE10=0
CHECKITEMADDVALUE11=0
CHECKITEMADDVALUE12=0
CHECKITEMADDVALUE13=0
CHECKITEMADDVALUE14=0
#ACT
;4.非极品(全附加属性为0),给手镯增加1点防御
UPGRADEUSERITEM10+1
SENDMSG6手镯防御力+1!
BREAK
#ELSEACT
;5.是极品(任一附加属性不为0),神水使用无效
SENDMSG6该手镯是极品装备,神水无效!
BREAK


命令详解:
•CHECKITEMADDVALUE位置属性编号比较符数值:

◦位置编号:1代表右手镯,2代表左手镯,0代表武器,3代表衣服,4代表头盔,5代表项链,6代表戒指,7代表腰带,8代表鞋子,9代表宝石。

◦属性编号:0代表防御下限,1代表防御上限,2代表魔防下限,3代表魔防上限,4代表攻击下限,5代表攻击上限,6代表魔法下限,7代表魔法上限,8代表道术下限,9代表道术上限,10代表准确,11代表敏捷,12代表幸运,13代表诅咒,14代表攻击速度,15代表魔法躲避,16代表体力恢复,17代表魔法恢复,18代表中毒躲避,19代表中毒恢复,20代表体力增加,21代表魔法增加,22代表暴击,23代表忽视防御,24代表致命一击,25代表伤害反弹,26代表伤害吸收,27代表冰冻,28代表麻痹,29代表防麻痹,30代表防冰冻,31代表防毒,32代表防石化,33代表防沉默,34代表防定身,35代表防混乱,36代表防恐惧,37代表防诱惑,38代表防变身,39代表防驱逐,40代表防即死,41代表防爆,42代表防偷,43代表防破坏,44代表防掉线,45代表防封号,46代表防封IP,47代表防封机器,48代表防封账号,49代表防封角色,50代表防封公会,51代表防封聊天,52代表防封交易,53代表防封组队,54代表防封行会,55代表防封好友,56代表防封邮件,57代表防封拍卖,58代表防封摆摊,59代表防封仓库,60代表防封商店,61代表防封任务,62代表防封活动,63代表防封副本,64代表防封战场,65代表防封竞技场,66代表防封跨服,67代表防封跨区,68代表防封跨线,69代表防封跨服战场,70代表防封跨服竞技场,71代表防封跨服副本,72代表防封跨服活动,73代表防封跨服任务,74代表防封跨服商店,75代表防封跨服仓库,76代表防封跨服拍卖,77代表防封跨服摆摊,78代表防封跨服邮件,79代表防封跨服好友,80代表防封跨服行会,81代表防封跨服公会,82代表防封跨服组队,83代表防封跨服聊天,84代表防封跨服交易,85代表防封跨服传送,86代表防封跨服回城,87代表防封跨服复活,88代表防封跨服死亡,89代表防封跨服退出,90代表防封跨服登录,91代表防封跨服注册,92代表防封跨服创建角色,93代表防封跨服删除角色,94代表防封跨服改名,95代表防封跨服转职,96代表防封跨服转生,97代表防封跨服转阵营,98代表防封跨服转国家,99代表防封跨服转服务器,100代表防封跨服转线路。

•以上属性编号较多,实际检测时,通常只检测主属性(如防御、攻击、魔法、道术)即可。脚本中检测了0-4号属性(防御下限、防御上限、魔防下限、魔防上限、攻击下限),若都为0,可基本判定为非极品。

•UPGRADEUSERITEM位置属性编号+数值:为指定位置的指定属性增加点数。此处为右手镯(位置1)的防御下限(属性0)增加1点。

二、进阶脚本:支持左右手镯,并防止重复使用

上述脚本仅检测右手镯,且神水使用后不会消失。以下脚本扩展为支持左右手镯,并增加防重复使用标记,即一旦手镯被神水强化过,再次使用无效。
;假设手镯防御神水的StdMode编号为555
[@StdModeFunc555]
#IF
;1.检测左右手镯位是否为空
WEARGITEM手镯1=0
WEARGITEM手镯2=0
#ACT
SENDMSG6请先佩戴一个手镯!
BREAK

;2.先尝试右手镯
WEARGITEM手镯1=1
#IF
;3.检查右手镯是否为极品
CHECKITEMADDVALUE10=0
CHECKITEMADDVALUE11=0
CHECKITEMADDVALUE12=0
CHECKITEMADDVALUE13=0
CHECKITEMADDVALUE14=0
;4.检查右手镯是否已被此神水强化过(防重复)
CheckItemCustomItemValue10=0
#ACT
;5.非极品且未强化过,增加1点防御
UPGRADEUSERITEM10+1
;6.标记该手镯已被强化(在自定义属性0写入标记1)
SetItemCustomItemValue10=1
SENDMSG6右手镯防御力+1!
BREAK
#ELSEACT
;右手镯不符合条件,尝试左手镯
GOTO@CheckLeftBracelet

[@CheckLeftBracelet]
WEARGITEM手镯2=1
#IF
CHECKITEMADDVALUE20=0
CHECKITEMADDVALUE21=0
CHECKITEMADDVALUE22=0
CHECKITEMADDVALUE23=0
CHECKITEMADDVALUE24=0
CheckItemCustomItemValue20=0
#ACT
UPGRADEUSERITEM20+1
SetItemCustomItemValue20=1
SENDMSG6左手镯防御力+1!
BREAK
#ELSEACT
;两个手镯都是极品或已强化过
SENDMSG6手镯是极品或已使用过神水,无法强化!
BREAK


新增命令详解:
•CheckItemCustomItemValue位置属性编号比较符数值:检测物品的自定义属性值。自定义属性是引擎为物品预留的扩展属性,可用于做标记。此处用自定义属性0来标记“是否被此神水强化过”(0表示未强化,1表示已强化)。

•SetItemCustomItemValue位置属性编号=数值:设置物品的自定义属性值。强化成功后,将对应的自定义属性0设置为1。

注意:自定义属性的编号和可用性取决于引擎。SKYM2和BULEM2通常支持自定义属性。如果不支持,也可以用其他方法标记,例如将强化后的手镯改名(但会影响原始名称显示),或记录到一个全局变量/个人变量中(但变量管理复杂)。使用自定义属性是较简洁的方法。

三、脚本生效与调试

1.物品设置:在StdItems.DB中,将“手镯防御神水”的StdMode字段设置为一个未使用的编号(例如555),并将其AniCount字段也设置为555(通常AniCount与StdMode一致,用于关联@StdModeFunc触发)。DuraMax字段设置为1(表示使用次数)。
2.脚本放置:将上述脚本放入Mir200\Envir\Market_Def\QFunction-0.txt文件中。如果该文件已存在[@StdModeFunc555]段,需合并或替换。
3.重载脚本:修改后,在M2Server(引擎控制器)上点击“重载QF脚本”或“重载所有NPC”使改动生效。
4.调试:如果使用无效,检查M2控制台是否有脚本报错。常见错误包括命令拼写错误、位置编号错误、属性编号超范围、或StdMode编号不匹配。

通过以上脚本,即可实现“手镯防御神水”仅对非极品手镯生效一次的逻辑。
[顶部]