USE [SRO_VT_SHARD]
GO
/****** Object: StoredProcedure [dbo].[_SMC_EDIT_ITEM] Script Date: 04/17/2014 18:51:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_SMC_EDIT_ITEM]
----------------------------------------------------- params to find target item
@

torage int, /* 0 = inventory, 1 = chest, 2 = guild chest, 3 = Avatar Inventory */
@OwnerName varchar(128), /* account id or char id */
@

int,
@ItemIDToEdit bigint, /* just for check validity */
----------------------------------------------------- params to modify the item
@RefItemID int,
@OptLvl tinyint,
@

bigint,
@Data int,
@

reater varchar(32),
@MagParamNum int,
@MagParam1 bigint,
@MagParam2 bigint,
@MagParam3 bigint,
@MagParam4 bigint,
@MagParam5 bigint,
@MagParam6 bigint,
@MagParam7 bigint,
@MagParam8 bigint,
@MagParam9 bigint,
@MagParam10 bigint,
@MagParam11 bigint,
@MagParam12 bigint
as
----------------------------------------------------
-- step 1. check validity of parameters
----------------------------------------------------
if @

torage <> 0 and @

torage <> 1 and @

torage <> 2 and @

torage <> 3)
begin
select -1 -- invalid target storage
return
end
declare @ownerid int
declare @ItemID bigint
set @ownerid = 0
set @ItemID = 0
if @

torage = 0)
begin
select @ownerid = charid from _char where charname16 = @OwnerName
if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null)
begin
select -2 -- can't find owner
return
end
select @ItemID = ItemID from _inventory where charid = @ownerid and slot = @
end
else if @

torage = 1)
begin
select @ownerid = JID from _AccountJID where AccountID = @ownername
if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null)
begin
select -2 -- can't find owner
return
end
select @ItemID = itemid from _chest where userjid = @ownerid and slot = @
end
else if @

torage = 2)
begin
select @ownerid = [id] from _guild where [name] = @ownername
if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null)
begin
select -2 -- can't find owner
return
end
select @ItemID = itemid from _guildchest where guildid = @ownerid and slot = @
end
else
begin
select @ownerid = charid from _char where charname16 = @OwnerName
if (@@rowcount = 0 or @ownerid = 0 or @ownerid is null)
begin
select -2 -- can't find owner
return
end
select @ItemID = ItemID from _InventoryForAvatar where charid = @ownerid and slot = @
end
if (@itemID = 0 or @itemid is null)
begin
select -3 -- can't find the item
return
end
if (@itemid <> @ItemIDToEdit)
begin
select -4 -- it's not the one that you wanna edit
return
end
declare @

1 int
declare @

2 int
select @

1 = TypeID1, @

2 = TypeID2 from _RefObjCommon with(nolock) where ID = @RefItemID
if @

1 <> 3)
begin
select -5 -- about to assign non-item object
return
end
if @

2 <> 1) -- is equipment
begin
-- can't assign magic param or optlevel to non-equip item
if (@MagParamNum > 0 or @OptLvl > 0)
begin
select -6
return
end
end
----------------------------------------------------
-- step 2. correct some non-critical parameters
----------------------------------------------------
if (LEN @

reater) = 0)
set @

reater = NULL
----------------------------------------------------
-- step 3. modify target item to desired values
----------------------------------------------------
if (@MagParamNum = 0)
begin
update _Items
set RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @

, Data = @Data, CreaterName = @

reater, MagParamNum = 0
where id64 = @ItemID
end
else
begin
update _Items
set RefItemID = @RefItemID, OptLevel = @OptLvl, Variance = @

, Data = @Data, CreaterName = @

reater, MagParamNum = @MagParamNum,
MagParam1 = @MagParam1, MagParam2 = @MagParam2, MagParam3 = @MagParam3, MagParam4 = @MagParam4,
MagParam5 = @MagParam5, MagParam6 = @MagParam6, MagParam7 = @MagParam7, MagParam8 = @MagParam8,
MagParam9 = @MagParam9, MagParam10 = @MagParam10, MagParam11 = @MagParam11, MagParam12 = @MagParam12
where id64 = @ItemID
end
if (@@error <> 0 or @@rowcount = 0)
begin
select -7
return
end
select 1
return