ctgwglzc 发表于 2010-5-14 00:49:03

送物品的存储

BEGIN TRAN
IF @Num <> 0
BEGIN
IF @StackSize > 1
BEGIN
SET @dur = 1
END
SET @CNum = substring(cast(@Num as varbinary(4)), 4, 1) + substring(cast(@Num as varbinary(4)), 3, 1) + substring(cast(@Num as varbinary(4)), 2, 1) + substring(cast(@Num 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(@StackSize as varbinary(2)), 2, 1)+substring(cast(@StackSize as varbinary(2)), 1, 1) as varchar(2))
IF @Num <> 0
BEGIN
IF @location = 1
BEGIN
SELECT @strItem = strItem FROM USERDATA WHERE strUserId = @playerID
SET @x = 1
WHILE @x <= 400
BEGIN
IF .GetNum(@strItem, @x) = 0
BEGIN
SET @pos = @x
SET @x = 400
END
SET @x = @x + 8
END

UPDATE USERDATA SET strItem = cast(substring(strItem, 1, @pos-1) + cast(cast(@CNum as varchar(4)) + @Cdur + @Cstack as varchar(8)) + substring(strItem, @pos + 8, 401 - @pos) as binary(400)) WHERE strUserID = @playerID
END
ELSE
BEGIN
SELECT @WarehouseData = WareHouseData FROM WAREHOUSE WHERE strAccountID = @playerID
SET @x = 1
WHILE @x <= 3200
BEGIN
IF .GetWNum(@WarehouseData, @x) = 0
BEGIN
SET @pos = @x
SET @x = 3200
END
SET @x = @x + 8
END
UPDATE WAREHOUSE SET WareHouseData = cast(substring(WareHouseData, 1, @pos - 1) + cast(cast(@CNum as varchar(4)) + @Cdur + @Cstack as varchar(8)) + substring(WareHouseData, @pos + 8, 3208 - @pos) as binary(3200)) WHERE strAccountID = @playerID
END
END
END
COMMIT TRAN
RETURN用法exec insert_item 'ID', Item Id , Piece

leonjaykai 发表于 2010-5-14 11:41:18

謝謝分享~~~

28085279 发表于 2010-5-14 12:29:12

适用于哪些版本

evaydd 发表于 2010-5-14 15:19:11

什么版本都能用哈哈

duepbbmal336 发表于 2010-5-15 17:53:13

1# ctgwglzc


这个要怎么用啊

shuaiyong 发表于 2010-5-27 14:36:35

很好的东西,谢谢分享!

leonjaykai 发表于 2010-5-27 17:07:09

這個怎麼測試ct可以簡單說明一下嗎?謝謝

JYMETIN 发表于 2010-5-27 18:08:46

不错 写GM工具的话也可以用到

aiiq 发表于 2010-5-27 22:15:36

这个不够先进
也不够简单
如果玩家在线也会容易无效

leonjaykai 发表于 2010-5-27 23:49:13

9# aiiq


您說清楚點吧   聽不懂啊~~~哈哈
页: [1] 2
查看完整版本: 送物品的存储