ctgwglzc 发表于 2008-12-25 19:05:03

装备信息加密,解密代码

--Electro Shock Private Server Gaming--
--Procedure Create Time 10.05.2008--
--Please Do Not Change Procedures--
--Lütfen Procedure Üstünde Değişiklik Yapmayınız--

CREATE PROCEDURE item_decode
@strUserId varchar(30)
AS
DECLARE
@length int, -- stritem uzunluğu
@i int, -- item'in stritem deki yeri
@dwid int,
@dur int,
@duar int,
@StackSize1 int,
@Slot int,
@Row int,
@name varchar(100),
@extname varchar(100),
@ext int


    SET @i = 14*0+1
    SET @length = 337

SELECT @row=count(*) FROM USERDATA WHERE strUserId=@strUserId

DELETE FROM INVENTORY_EDIT WHERE strUserId=@strUserId

IF @row>0
BEGIN

WHILE @i < @length
BEGIN

SELECT @dwid=cast(cast(substring(cast(substring(strItem, @i,4) as varbinary(4)), 4, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 3, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 2, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 1, 1) as varbinary(4)) as int(4)),
@dur = cast(cast(cast( substring(strItem, @i+5, 1) as varbinary(1))+cast(substring(strItem, @i+4, 1) as varbinary(1)) as varbinary(2)) as smallint),
@StackSize1 = cast(cast(cast( substring(strItem, @i+7, 1) as varbinary(1))+cast(substring(strItem, @i+6, 1) as varbinary(1)) as varbinary(2)) as smallint),
      @strUserId = strUserId
      FROM USERDATA
      WHERE strUserId = @strUserId

IF @dwid=0
BEGIN

    SET @extname='Item Not Have'
    SET @name='Item Not Have'

END

ELSE

BEGIN

    SET @extname='Not Found'

SELECT @extname=strName FROM ITEM WHERE Num=@dwid

END

INSERT INTO INVENTORY_EDIT (dwid,stacksize,durability,strUserId,Slot,ItemName,extname) values(@dwid,@stacksize1,@dur,@strUserId,(@i-1) / 8,@extname,@name )

    SET @i=@i+8

END

SELECT * FROM INVENTORY_EDIT WHERE strUserId=@strUserId ORDER BY Slot

END
GO

ctgwglzc 发表于 2008-12-25 19:10:43

以上为解密代码
以下为加密代码
--Electro Shock Private Server Gaming--
--Procedure Create Time 10.05.2008--
--Please Do Not Change Procedures--
--Lütfen Procedure &Uuml;stünde Değişiklik Yapmayınız--

CREATE PROCEDURE item_encode
@strUserId varchar(30)
AS
DECLARE
@length int, -- stritem uzunluğu
@row int, -- yerine g&ouml;re deişior.
@i int, -- item'in stritem deki yeri
@dwid int, -- dwid
@pos int,
@dur int,
@dur1 int,
@ext int,
@StackSize1 int,
@strName varchar(30),
@strExtName varchar(30),
@Cdwid varbinary(4),
@cdur varchar(2),
@Source tinyint,
@NEWdwid int,
@StackSize int,
@cstack varchar(2),
@Slot int

    SET @Slot=0
    SET @i = 14*0
    SET @length = 337

SELECT @row=count( * ) FROM USERDATA WHERE strUserId=@strUserId

IF @row>0
BEGIN


SELECT @dwid=dwid,
@dur = durability,
@StackSize1 = stacksize,
      @strUserId = strUserId
      FROM INVENTORY_EDIT
      WHERE strUserId = @strUserId and Slot=@Slot

    SET @Cdwid = Substring(cast(@dwid as varbinary(4)), 4, 1) + Substring(cast(@dwid as varbinary(4)), 3, 1) + Substring(cast(@dwid as varbinary(4)), 2, 1) + Substring(cast(@dwid as varbinary(4)), 1, 1)
    SET @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))
    SET @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))


    UPDATE USERDATA SET strItem = cast(cast(cast(@Cdwid as varchar(4)) + @Cdur + @Cstack as varchar(8))   as binary(400)) WHERE strUserId = @strUserId


    SET @i=@i+8
    SET @Slot=@Slot+1



WHILE @Slot < 42
BEGIN

SELECT @dwid=dwid,
@dur = durability,
@StackSize1 = stacksize,
      @strUserId = strUserId
      FROM INVENTORY_EDIT
      WHERE strUserId = @strUserId and Slot=@Slot

    SET @Cdwid = Substring(cast(@dwid as varbinary(4)), 4, 1) + Substring(cast(@dwid as varbinary(4)), 3, 1) + Substring(cast(@dwid as varbinary(4)), 2, 1) + Substring(cast(@dwid as varbinary(4)), 1, 1)
    SET @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))
    SET @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))


    UPDATE USERDATA SET strItem = cast( substring(strItem, 1, @i) + cast(cast(@Cdwid as varchar(4)) + @Cdur + @Cstack as varchar(8)) + substring(strItem, @i+8, 401-@i) as binary(400)) WHERE strUserId = @strUserId


    SET @i=@i+8
    SET @Slot=@Slot+1

END

END

DELETE FROM INVENTORY_EDIT
GO

njsun 发表于 2008-12-25 19:49:33

好帖,做板凳先!!哈哈

yangwx 发表于 2008-12-25 20:47:29

o ,好贴!

njsun 发表于 2008-12-25 22:51:11

仓库编辑器?

lz2006 发表于 2008-12-26 03:38:02

加解密
有什么用呢?

vvforgs 发表于 2008-12-26 10:25:01

本帖最后由 vvforgs 于 2008-12-26 10:31 编辑

解密
http://i273.photobucket.com/albums/jj229/vvforgs/1-4.jpg
加密
http://i273.photobucket.com/albums/jj229/vvforgs/2-3.jpg

ctgwglzc 发表于 2008-12-26 10:35:45

加解密
有什么用呢?
lz2006 发表于 2008-12-26 03:38 http://www.kofans.cn/bbs/static/image/common/back.gif
USERDATA和WAREHOUSE里的ITEM项为加密后的数据,你无法直接编辑的

28085279 发表于 2008-12-26 14:06:44

这个适合什么版本的数据库

ryan6755 发表于 2008-12-26 14:14:29

好强大得东西,拜领了!谢谢CT分享!
页: [1] 2 3
查看完整版本: 装备信息加密,解密代码