背包极品检测问题

admin 2023/04/19 14:56:33 239
背包极品检测问题



一键回收背包物品,极品不回收。


标记 颜色 都试了 遍历 也试了、好像都不好实现。


或者有没有什么命令可以改 单个装备的DB,颜色代码。  比如:白色255 改成 250代码   (不是改装备颜色。是改DB颜色代码

类似  SetItemShape
最好的办法就是改名 GEE好像有遍历背包的命令呀,能实现呀。 功能:遍历背包获取,物品的各项信息

命令:GetPlayInfo BAGITEMCOUNT P10

[@main]
#if
#act
GetPlayInfo BAGITEMCOUNT P10
Sendmsg 5 提示:您的背包当中有<$STR(p10)>件物品。
WHILE P1 < <$STR(P10)>
MOV S1
MOV S2
MOV S3
MOV S4
GetItemFieldValue bagitem<$STR(P1)> name S1
GetItemFieldValue bagitem<$STR(P1)> idx S2
GetItemFieldValue bagitem<$STR(P1)> makeindex S3
GetItemFieldValue bagitem<$STR(P1)> upgradecount S4
Sendmsg 6 提示:第<$STR(P1)>件,物品名称=<$STR(S1)>,IDX=<$STR(S2)>,唯一ID=<$STR(S3)>,星星数=<$STR(S4)>
INC P1 1
ENDWHILE

试过不好写。。

比如背包有:圣战戒指  x2   普通的
                   圣战戒指  x2   极品

只回收 普通的。  你检测星星 没用 直接不执行。 或 直接 同名装备全部都回收。

当然可能是我不会写,? - -
遍历背包物品,需要回收的物品记录唯一ID(MakeIndex),回收关联此ID(LinkBagItem ),将关联物品删除(DelLinkItem ),剩下的给什么奖励就不用说了吧
难搞难搞难搞难搞难搞 瞎鸡巴写都可以写一个,有什么难搞的

;获取背包所有物品数量
GetPlayInfo BAGITEMCOUNT N$背包物品数量
MOV P1 0
;循环支持背包物品数量次数
loopgoto @获取物品ID N$背包物品数量

[@获取物品ID]
#IF
large P1 <$str(N$背包物品数量)>
#ACT
endloop
Break

#or
;检测物品基础属性极品是否大于0
CheckItemAddValueEx bagitem<$STR(P1)> > 0 0
;检测物品元素属性极品是否大于0
CheckItemAddValueEx bagitem<$STR(P1)> > 0 1
#ACT
;如有极品,跳过此物品,继续循环
INC P1 1
Break
#ELSEACT
MOV N$唯一ID 0
;无极品属性,获取此物品唯一ID
GetItemFieldValue bagitem<$STR(P1)> makeindex N$唯一ID
;获取物品名字
;GetItemFieldValue bagitem<$STR(P1)> name S$物品名字
此处可写脚本检测你的回收名单之类的
进行加货币操作

;删除此物品,既回收此物品

LinkBagItem N$唯一ID<$STR(P2)>
DelLinkItem


#IF
#ACT
;继续循环脚本
INC P1 1



测试不成功!!极品一样被回收了  - -!


#ACT
GetPlayInfo BAGITEMCOUNT N$背包物品数量
MOV P1 0
loopgoto @获取物品ID N$背包物品数量

[@获取物品ID]
#IF
large P1 <$str(N$背包物品数量)>
#ACT
endloop
Break

#OR
CheckItemAddValueEx bagitem<$STR(P1)> > 0 0
CheckItemAddValueEx bagitem<$STR(P1)> > 0 1
#ACT
INC P1 1
Break
#ELSEACT
GetItemFieldValue bagitem<$STR(P1)> makeindex S1
LinkBagItem <$STR(S1)>
sendmsg 7 回收物品ID:<$STR(S1)>
DelLinkItem

#IF
#ACT
INC P1 1

GetPlayInfo BAGITEMCOUNT N$背包物品数量
MOV P1 0
;循环支持背包物品数量次数
loopgoto @获取物品ID N$背包物品数量

[@获取物品ID]
#IF
large P1 <$str(N$背包物品数量)>
#ACT
endloop
Break
#ELSEACT
GetItemFieldValue bagitem<$STR(P1)> name S$物品名字

#OR
CheckItemAddValueEx bagitem<$STR(P1)> > 0 0
CheckItemAddValueEx bagitem<$STR(P1)> > 0 1
#ACT
sendmsg 7 物品:<$STR(S$物品名字)>是极品
INC P1 1
Break
#ELSEACT
sendmsg 5 物品:<$STR(S$物品名字)>不是极品
INC P1 1
Break

测试下.看看检测提示!


经测试 发现 直接跳过了  极品检测   
是极品装备也 直接执行#ELSEACT 取反了

极品检测解决了 。但是回收给的货币有BUG。
如果包里有 1个极品 6个普通  背包就有7件装备
执行后 只回收了3件装备,但是给了6件回收的金币、
背包剩下1个极品  3个普通
再继续点回收 回收了2件 给1件的币
剩下1个极品 1个普通 再点下 回收1件 给1个币

#ACT
GetPlayInfo BAGITEMCOUNT N$背包物品数量
MOV P1 0
loopgoto @获取物品ID <$str(N$背包物品数量)>
[@获取物品ID]
#IF
large P1 <$str(N$背包物品数量)>
#ACT
endloop
Break
#ELSEACT
GetItemFieldValue bagitem<$STR(P1)> Value2 S4
#if
LARGE S4 0
#ACT
INC P1 1
Break
#ELSEACT
GetItemFieldValue bagitem<$STR(P1)> name S$物品名字
GetItemFieldValue bagitem<$STR(P1)> makeindex S1
LinkBagItem <$STR(S1)>
DelLinkItem
MOV S$回收类型 木剑|复活|麻痹

#IF
CheckContainsText S$回收类型 S$物品名字
#ACT
give 金币 1
sendmsg 7 回收物品【<$STR(S$物品名字)>】ID:<$STR(S1)>,金币+1

#IF
#ACT
INC P1 1


哦,那是脚本逻辑有问题..故障原因如下:

例如你包裹有物品1,2,3,4,5,6,7
所以物品的位置是bagitem1,bagitem2....bagitem7
回收时,如果回收了第3个物品,既bagitem3
那么后面的物品4,既bagitem4实际等于bagitem3了..

错误的原因,已经告诉你了,脚本就很容易处理了!
V8和翎风好像不支持 BAGITEMCOUNT
返回