在网上见到过查全属性和复制物品的,试用了一下有问题就扔一边了。想想还是自己写段SQL来得方便。
以下是代码:
--这段SQL是用来查满属性的物品
usemuonline
--下面这一段是查仓库里面的物品
select*fromwarehouse
where(charindex(0xbfitems)%10=8)or(charindex(0xffitems)%10=8)
or(charindex(0x7fitems)%10=8)or(charindex(0x3fitems)%10=8)
--下面这一段是查身上和包裹里面的物品
select*fromcharacter
where(charindex(0xbfinventory)%10=8)or(charindex(0xffinventory)%10=8)
or(charindex(0x7finventory)%10=8)or(charindex(0x3finventory)%10=8)
[Ctrl+A全部选择]
如果是从0.74升级上来的数据库,因为物品代码的位数不一样,使用起来会有问题。产生问题的原因是一些0.74时期的玩家在94~96之后再也没有玩过,他们的仓库和包裹里面的物品代码还是14位,而新的代码是20位。
经过我的研究,warehouse和character表里面都加了一个字段:DbVersion,这个是用来区分你的仓库和包裹里面的装备是用14位的代码还是20位代码的。我们需要做的就是把DbVersion的值还是NULL的所有帐号和角色从库里面清出,用下面的SQL语句就可以了:
deletefromcharacterwhereDbVersionisnull
deletefromwarehousewhereDbVersionisnull
找出有全属性装备的玩家,你要怎样处理就看自己了,如果要删号的话,只需将上面代码中的Select*全部改成Delete就可以了。如果觉得删号太狠了,那么可以清除相应的仓库或包裹,代码如下:
以下是代码:
usemuonline
--下面这一段是清空有全属性物品的仓库
updatewarehousesetitems=null
where(charindex(0xbfitems)%10=8)or(charindex(0xffitems)%10=8)
or(charindex(0x7fitems)%10=8)or(charindex(0x3fitems)%10=8)
--下面这一段是清空有全属性物品的包裹
updatecharactersetinventory=null
where(charindex(0xbfinventory)%10=8)or(charindex(0xffinventory)%10=8)
or(charindex(0x7finventory)%10=8)or(charindex(0x3finventory)%10=8)
[Ctrl+A全部选择]
如果要只清理对应的物品,程序实现起来很麻烦。偶认为用SQL注入的,只清库和包裹都是太仁慈了,没有必要花太多心思写得那么完美。
大家注意语句里面的0x3F,0x8F,0xBF,0xFF都是卓越全属性物品的代码,你需要查其他属性的,只要相应更改这里就可以。
下面的卓越属性代码来自网上,经过多次转贴已经不知道出处,偶发出来给大家参考:
以下是代码:
==卓越属性代码==
①杀死怪物时所获魔法值增加+魔法值/8
②杀死怪物时所获生命值增加+生命值/8
③攻击(魔法)速度增加+7
④攻击力增加+2%
⑤攻击力增加+等级/20
⑥卓越攻击几率增加+10%
⑦追加攻击力+16
01=①02=②03=①②04=③05=①③06=②③07=①②③08=④09=①④0A=②④0B=①②④0C=③④0D=①③④0E=②③④0F=①②③④
10=⑤11=①⑤12=②⑤13=①②⑤14=③⑤15=①③⑤16=②③⑤17=①②③⑤18=④⑤19=①④⑤1A=②④⑤1B=①②④⑤1C=③④⑤
1D=①③④⑤1E=②③④⑤1F=①②③④⑤20=⑥21=①⑥22=②⑥23=①②⑥24=③⑥25=①③⑥26=②③⑥27=①②③⑥28=④⑥
29=①④⑥2A=②④⑥2B=①②④⑥2C=③④⑥2D=①③④⑥2E=②③④⑥2F=①②③④⑥30=⑤⑥31=①⑤⑥32=②⑤⑥33=①②⑤⑥
34=③⑤⑥35=①③⑤⑥36=②③⑤⑥37=①②③⑤⑥38=④⑤⑥39=①④⑤⑥3A=②④⑤⑥3B=①②④⑤⑥3C=③④⑤⑥3D=①③④⑤⑥
3E=②③④⑤⑥3F=①②③④⑤⑥40=⑦41=①⑦42=②⑦43=①②⑦44=③⑦45=①③⑦46=②③⑦47=①②③⑦48=④⑦49=①④⑦
4F=②④⑦4B=①②④⑦4C=③④⑦4D=①③④⑦4E=②③④⑦4F=①②③④⑦50=⑤⑦51=①⑤⑦52=②⑤⑦53=①②⑤⑦54=③⑤⑦
55=①③⑤⑦56=②③⑤⑦57=①②③⑤⑦58=④⑤⑦59=①④⑤⑦5A=②④⑤⑦5B=①②④⑤⑦5C=③④⑤⑦5D=①③④⑤⑦
5E=②③④⑤⑦5F=①②③④⑤⑦60=⑥⑦61=①⑥⑦62=②⑥⑦63=①②⑥⑦64=③⑥⑦65=①③⑥⑦66=②③⑥⑦67=①②③⑥⑦
68=④⑥⑦69=①④⑥⑦6A=②④⑥⑦6B=①②④⑥⑦6C=③④⑥⑦6D=①③④⑥⑦6E=②③④⑥⑦6F=①②③④⑥⑦70=⑤⑥⑦
71=①⑤⑥⑦72=②⑤⑥⑦73=①②⑤⑥⑦74=③⑤⑥⑦75=①③⑤⑥⑦76=②③⑤⑥⑦77=①②③⑤⑥⑦78=④⑤⑥⑦79=①④⑤⑥⑦
7A=②④⑤⑥⑦7B=①②④⑤⑥⑦7C=③④⑤⑥⑦7D=①③④⑤⑥⑦7E=②③④⑤⑥⑦7F=①②③④⑤⑥⑦
(以下卓越代码只对上面的“铠”以后的代码有效)
①杀死怪物时所获金增加+40%
②防御成功率+10%
③伤害反射+5%
④伤害减少+4%
⑤最大魔法值+4%
⑥最大生命值+4%
⑦追加防御力+16
81=①82=②83=①②84=③85=①③86=②③87=①②③88=④89=①④8A=②④8B=①②④8C=③④8D=①③④8E=②③④8F=①②③④
90=⑤91=①⑤92=②⑤93=①②⑤94=③⑤95=①③⑤96=②③⑤97=①②③⑤98=④⑤99=①④⑤9A=②④⑤9B=①②④⑤9C=③④⑤
9D=①③④⑤9E=②③④⑤9F=①②③④⑤A0=⑥A1=①⑥A2=②⑥A3=①②⑥A4=③⑥A5=①③⑥A6=②③⑥A7=①②③⑥A8=④⑥
A9=①④⑥AA=②④⑥AB=①②④⑥AC=③④⑥AD=①③④⑥AE=②③④⑥AF=①②③④⑥B0=⑤⑥B1=①⑤⑥B2=②⑤⑥B3=①②⑤⑥
B4=③⑤⑥B5=①③⑤⑥B6=②③⑤⑥B7=①②③⑤⑥B8=④⑤⑥B9=①④⑤⑥BA=②④⑤⑥BB=①②④⑤⑥BC=③④⑤⑥BD=①③④⑤⑥
BE=②③④⑤⑥BF=①②③④⑤⑥C0=⑦C1=①⑦C2=②⑦C3=①②⑦C4=③⑦C5=①③⑦C6=②③⑦C7=①②③⑦C8=④⑦C9=①④⑦
CF=②④⑦CB=①②④⑦CC=③④⑦CD=①③④⑦CE=②③④⑦CF=①②③④⑦D0=⑤⑦D1=①⑤⑦D2=②⑤⑦D3=①②⑤⑦D4=③⑤⑦
D5=①③⑤⑦D6=②③⑤⑦D7=①②③⑤⑦D8=④⑤⑦D9=①④⑤⑦DA=②④⑤⑦DB=①②④⑤⑦DC=③④⑤⑦DD=①③④⑤⑦
DE=②③④⑤⑦DF=①②③④⑤⑦E0=⑥⑦E1=①⑥⑦E2=②⑥⑦E3=①②⑥⑦E4=③⑥⑦E5=①③⑥⑦E6=②③⑥⑦E7=①②③⑥⑦
E8=④⑥⑦E9=①④⑥⑦EA=②④⑥⑦EB=①②④⑥⑦EC=③④⑥⑦ED=①③④⑥⑦EE=②③④⑥⑦EF=①②③④⑥⑦F0=⑤⑥⑦
F1=①⑤⑥⑦F2=②⑤⑥⑦F3=①②⑤⑥⑦F4=③⑤⑥⑦F5=①③⑤⑥⑦F6=②③⑤⑥⑦F7=①②③⑤⑥⑦F8=④⑤⑥⑦F9=①④⑤⑥⑦
FA=②④⑤⑥⑦FB=①②④⑤⑥⑦FC=③④⑤⑥⑦FD=①③④⑤⑥⑦FE=②③④⑤⑥⑦FF=①②③④⑤⑥⑦
[Ctrl+A全部选择]
另外,要在库里和包裹里查找一个指定物品(用于查复制物品),比如查物品0xA85C79000000007F4166(它的最后4位是物品的序号,之前的7F是卓越属性)。其SQL语句是这样的:
以下是代码:
--下面是查仓库
select*fromwarehouse
wherecharindex(0xA85C79000000007F4166items)>0
--下面是查包裹
select*fromcharacter
wherecharindex(0xA85C79000000007F4166inventory)>0
[Ctrl+A全部选择]
虽然写了那么多,实际有用的SQL语句就几句,很简短。大家应该学会用SQL去管理数据库,而无需动辄去写一大段程序来实现一个很简单的功能。
以下是代码:
--这段SQL是用来查满属性的物品
usemuonline
--下面这一段是查仓库里面的物品
select*fromwarehouse
where(charindex(0xbfitems)%10=8)or(charindex(0xffitems)%10=8)
or(charindex(0x7fitems)%10=8)or(charindex(0x3fitems)%10=8)
--下面这一段是查身上和包裹里面的物品
select*fromcharacter
where(charindex(0xbfinventory)%10=8)or(charindex(0xffinventory)%10=8)
or(charindex(0x7finventory)%10=8)or(charindex(0x3finventory)%10=8)
[Ctrl+A全部选择]
如果是从0.74升级上来的数据库,因为物品代码的位数不一样,使用起来会有问题。产生问题的原因是一些0.74时期的玩家在94~96之后再也没有玩过,他们的仓库和包裹里面的物品代码还是14位,而新的代码是20位。
经过我的研究,warehouse和character表里面都加了一个字段:DbVersion,这个是用来区分你的仓库和包裹里面的装备是用14位的代码还是20位代码的。我们需要做的就是把DbVersion的值还是NULL的所有帐号和角色从库里面清出,用下面的SQL语句就可以了:
deletefromcharacterwhereDbVersionisnull
deletefromwarehousewhereDbVersionisnull
找出有全属性装备的玩家,你要怎样处理就看自己了,如果要删号的话,只需将上面代码中的Select*全部改成Delete就可以了。如果觉得删号太狠了,那么可以清除相应的仓库或包裹,代码如下:
以下是代码:
usemuonline
--下面这一段是清空有全属性物品的仓库
updatewarehousesetitems=null
where(charindex(0xbfitems)%10=8)or(charindex(0xffitems)%10=8)
or(charindex(0x7fitems)%10=8)or(charindex(0x3fitems)%10=8)
--下面这一段是清空有全属性物品的包裹
updatecharactersetinventory=null
where(charindex(0xbfinventory)%10=8)or(charindex(0xffinventory)%10=8)
or(charindex(0x7finventory)%10=8)or(charindex(0x3finventory)%10=8)
[Ctrl+A全部选择]
如果要只清理对应的物品,程序实现起来很麻烦。偶认为用SQL注入的,只清库和包裹都是太仁慈了,没有必要花太多心思写得那么完美。
大家注意语句里面的0x3F,0x8F,0xBF,0xFF都是卓越全属性物品的代码,你需要查其他属性的,只要相应更改这里就可以。
下面的卓越属性代码来自网上,经过多次转贴已经不知道出处,偶发出来给大家参考:
以下是代码:
==卓越属性代码==
①杀死怪物时所获魔法值增加+魔法值/8
②杀死怪物时所获生命值增加+生命值/8
③攻击(魔法)速度增加+7
④攻击力增加+2%
⑤攻击力增加+等级/20
⑥卓越攻击几率增加+10%
⑦追加攻击力+16
01=①02=②03=①②04=③05=①③06=②③07=①②③08=④09=①④0A=②④0B=①②④0C=③④0D=①③④0E=②③④0F=①②③④
10=⑤11=①⑤12=②⑤13=①②⑤14=③⑤15=①③⑤16=②③⑤17=①②③⑤18=④⑤19=①④⑤1A=②④⑤1B=①②④⑤1C=③④⑤
1D=①③④⑤1E=②③④⑤1F=①②③④⑤20=⑥21=①⑥22=②⑥23=①②⑥24=③⑥25=①③⑥26=②③⑥27=①②③⑥28=④⑥
29=①④⑥2A=②④⑥2B=①②④⑥2C=③④⑥2D=①③④⑥2E=②③④⑥2F=①②③④⑥30=⑤⑥31=①⑤⑥32=②⑤⑥33=①②⑤⑥
34=③⑤⑥35=①③⑤⑥36=②③⑤⑥37=①②③⑤⑥38=④⑤⑥39=①④⑤⑥3A=②④⑤⑥3B=①②④⑤⑥3C=③④⑤⑥3D=①③④⑤⑥
3E=②③④⑤⑥3F=①②③④⑤⑥40=⑦41=①⑦42=②⑦43=①②⑦44=③⑦45=①③⑦46=②③⑦47=①②③⑦48=④⑦49=①④⑦
4F=②④⑦4B=①②④⑦4C=③④⑦4D=①③④⑦4E=②③④⑦4F=①②③④⑦50=⑤⑦51=①⑤⑦52=②⑤⑦53=①②⑤⑦54=③⑤⑦
55=①③⑤⑦56=②③⑤⑦57=①②③⑤⑦58=④⑤⑦59=①④⑤⑦5A=②④⑤⑦5B=①②④⑤⑦5C=③④⑤⑦5D=①③④⑤⑦
5E=②③④⑤⑦5F=①②③④⑤⑦60=⑥⑦61=①⑥⑦62=②⑥⑦63=①②⑥⑦64=③⑥⑦65=①③⑥⑦66=②③⑥⑦67=①②③⑥⑦
68=④⑥⑦69=①④⑥⑦6A=②④⑥⑦6B=①②④⑥⑦6C=③④⑥⑦6D=①③④⑥⑦6E=②③④⑥⑦6F=①②③④⑥⑦70=⑤⑥⑦
71=①⑤⑥⑦72=②⑤⑥⑦73=①②⑤⑥⑦74=③⑤⑥⑦75=①③⑤⑥⑦76=②③⑤⑥⑦77=①②③⑤⑥⑦78=④⑤⑥⑦79=①④⑤⑥⑦
7A=②④⑤⑥⑦7B=①②④⑤⑥⑦7C=③④⑤⑥⑦7D=①③④⑤⑥⑦7E=②③④⑤⑥⑦7F=①②③④⑤⑥⑦
(以下卓越代码只对上面的“铠”以后的代码有效)
①杀死怪物时所获金增加+40%
②防御成功率+10%
③伤害反射+5%
④伤害减少+4%
⑤最大魔法值+4%
⑥最大生命值+4%
⑦追加防御力+16
81=①82=②83=①②84=③85=①③86=②③87=①②③88=④89=①④8A=②④8B=①②④8C=③④8D=①③④8E=②③④8F=①②③④
90=⑤91=①⑤92=②⑤93=①②⑤94=③⑤95=①③⑤96=②③⑤97=①②③⑤98=④⑤99=①④⑤9A=②④⑤9B=①②④⑤9C=③④⑤
9D=①③④⑤9E=②③④⑤9F=①②③④⑤A0=⑥A1=①⑥A2=②⑥A3=①②⑥A4=③⑥A5=①③⑥A6=②③⑥A7=①②③⑥A8=④⑥
A9=①④⑥AA=②④⑥AB=①②④⑥AC=③④⑥AD=①③④⑥AE=②③④⑥AF=①②③④⑥B0=⑤⑥B1=①⑤⑥B2=②⑤⑥B3=①②⑤⑥
B4=③⑤⑥B5=①③⑤⑥B6=②③⑤⑥B7=①②③⑤⑥B8=④⑤⑥B9=①④⑤⑥BA=②④⑤⑥BB=①②④⑤⑥BC=③④⑤⑥BD=①③④⑤⑥
BE=②③④⑤⑥BF=①②③④⑤⑥C0=⑦C1=①⑦C2=②⑦C3=①②⑦C4=③⑦C5=①③⑦C6=②③⑦C7=①②③⑦C8=④⑦C9=①④⑦
CF=②④⑦CB=①②④⑦CC=③④⑦CD=①③④⑦CE=②③④⑦CF=①②③④⑦D0=⑤⑦D1=①⑤⑦D2=②⑤⑦D3=①②⑤⑦D4=③⑤⑦
D5=①③⑤⑦D6=②③⑤⑦D7=①②③⑤⑦D8=④⑤⑦D9=①④⑤⑦DA=②④⑤⑦DB=①②④⑤⑦DC=③④⑤⑦DD=①③④⑤⑦
DE=②③④⑤⑦DF=①②③④⑤⑦E0=⑥⑦E1=①⑥⑦E2=②⑥⑦E3=①②⑥⑦E4=③⑥⑦E5=①③⑥⑦E6=②③⑥⑦E7=①②③⑥⑦
E8=④⑥⑦E9=①④⑥⑦EA=②④⑥⑦EB=①②④⑥⑦EC=③④⑥⑦ED=①③④⑥⑦EE=②③④⑥⑦EF=①②③④⑥⑦F0=⑤⑥⑦
F1=①⑤⑥⑦F2=②⑤⑥⑦F3=①②⑤⑥⑦F4=③⑤⑥⑦F5=①③⑤⑥⑦F6=②③⑤⑥⑦F7=①②③⑤⑥⑦F8=④⑤⑥⑦F9=①④⑤⑥⑦
FA=②④⑤⑥⑦FB=①②④⑤⑥⑦FC=③④⑤⑥⑦FD=①③④⑤⑥⑦FE=②③④⑤⑥⑦FF=①②③④⑤⑥⑦
[Ctrl+A全部选择]
另外,要在库里和包裹里查找一个指定物品(用于查复制物品),比如查物品0xA85C79000000007F4166(它的最后4位是物品的序号,之前的7F是卓越属性)。其SQL语句是这样的:
以下是代码:
--下面是查仓库
select*fromwarehouse
wherecharindex(0xA85C79000000007F4166items)>0
--下面是查包裹
select*fromcharacter
wherecharindex(0xA85C79000000007F4166inventory)>0
[Ctrl+A全部选择]
虽然写了那么多,实际有用的SQL语句就几句,很简短。大家应该学会用SQL去管理数据库,而无需动辄去写一大段程序来实现一个很简单的功能。

