[Only registered and activated users can see links. Click Here To Register...]
1. _STRG_DEL_ITEM_NoTX delete
2. SRO_VT_SHARD New Query
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