VSRO SERVER ITEM BUG FIX

09/25/2011 22:40 eglennet#1
[Only registered and activated users can see links. Click Here To Register...]


1. _STRG_DEL_ITEM_NoTX delete
2. SRO_VT_SHARD New Query


PHP Code:
USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_STRG_DEL_ITEM_NoTX] Script Date: 09/24/2011 16:29:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO





CREATE PROCEDURE 
[dbo].[_STRG_DEL_ITEM_NoTX]
@
DelFromPC_Inv AS TINYINT,
@
CharID AS BIGINT, -- 매직 큐브 추가로 인해 확장
@Slot AS TINYINT

as
declare @
Rvalue int
declare @ItemToDel bigint

if (@DelFromPC_Inv = 1)
select @ItemToDel = ItemID FROM _Inventory WHERE CharID = @CharID AND Slot = @Slot
else if ( @DelFromPC_Inv = 2 )
select @itemToDel = ItemID FROM _InventoryForLinkedStorage WHERE LinkedItemID = @CharID AND Slot = @Slot
else
select @ItemToDel = ItemID FROM _InvCOS WHERE COSID = @CharID AND Slot = @Slot

if (@ItemToDel IS NULL or @ItemToDel = 0)
return -
1

----------------------------------------
-- 
졸라 이 아래쪽 순전히 펫 소환아이템 때문에
-- 들어간 코드이다. 분명 overhead이긴 하지만
-- _STRG_DEL_ITEM 의 신뢰도와 게임�*버 코드 복잡도
-- 증가를 유발하지 않기 위해 어쩔 수 없는 판단이었다. T_T
----------------------------------------
declare @
BoundCOS int
declare @RefItemID int
select 
@RefItemID = RefItemID, @BoundCOS = Data from _Items where ID64 = @ItemToDel
if (@@ROWCOUNT = 0)
return -
2

----------------------------------------
-- 
혹시 이눔 PET 소환아이템인가?
----------------------------------------
declare @
TypeID1 tinyint
declare @TypeID2 tinyint
declare @TypeID3 tinyint
select 
@TypeID1 = TypeID1, @TypeID2 = TypeID2, @TypeID3 = TypeID3 from _RefObjCommon where ID = @RefItemID
if (@TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 1 )
begin
----------------------------------------
-- 
엮여있는 PET 이 있으면 그넘 삭제
----------------------------------------
if (@
BoundCOS <> 0)
begin
exec 
@Rvalue = _DeleteCharCOS_NoTX @BoundCOS
if (@Rvalue < 0)
return @
Rvalue
end
end

----------------------------------------
-- 
혹시 이눔 LinkedStorage아이템인가?
----------------------------------------
else if( @
TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 3 )
begin
----------------------------------------
-- 
엮여있는 Storage 있으면 그넘 삭제
----------------------------------------
if (@
BoundCOS <> 0)
begin
IF( NOT EXISTS( select LinkedItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel ) )
BEGIN return -1000 END
IF( EXISTS( select top 1 ItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel and ItemID <> 0 and ItemID IS NOT NULL ) )
BEGIN
update _ItemPool Set InUse 
= 0 from _ItemPool as IP join _InventoryForLinkedStorage as IFLS on IP.ItemID = IFLS.ItemID
where IFLS
.LinkedItemID = @ItemToDel AND IFLS.ItemID <> 0
END
DELETE FROM _InventoryForLinkedStorage where LinkedItemID 
= @ItemToDel
IF( @@ERROR <> 0 )
BEGIN return -2 END
end
end


----------------------------------------------------------
-- 
슬롯 비우기
----------------------------------------------------------
if (@
DelFromPC_Inv = 1 )
update _Inventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot
else if (@DelFromPC_Inv = 2 )
update _InventoryForLinkedStorage SET ItemID = 0 WHERE LinkedItemID = @CharID AND Slot = @Slot
else
update _InvCOS SET ItemID = 0 WHERE COSID = @CharID AND Slot = @Slot

if (@@error <> 0 OR @@rowcount = 0)
return -
3

----------------------------------------------------------
-- 
삭제 대상 아이템에 �*인 임대 정보 삭제
----------------------------------------------------------
if 
exists (select 1 from _RentItemInfo with (nolock) where nItemDBID = @ItemToDel)
begin
delete from _RentItemInfo where nItemDBID 
= @ItemToDel
if (@@ERROR <> 0 OR @@ROWCOUNT = 0)
begin
rollback transaction
return -6
end
end

----------------------------------------------------------
-- 
해당 아이템 삭제
----------------------------------------------------------
exec @Rvalue = _STRG_FREE_ITEM_NoTX @ItemToDel
if (@Rvalue < 0)
return -
4

return 1 
10/04/2011 14:00 vitalik123#2
what bug exacly it fixing?
10/04/2011 14:23 zaza099#3
hi helpme
10/04/2011 20:52 OMGG1#4
hwo this bug was working