背包极品检测问题
一键回收背包物品,极品不回收。
标记 颜色 都试了 遍历 也试了、好像都不好实现。
或者有没有什么命令可以改 单个装备的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