|
USE [SRO_VT_SHARD] GO /****** Object: StoredProcedure [dbo].[_ADD_ITEM_BY_GENDER] Script Date: 04/03/2015 02:28:47 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
CREATE PROCEDURE [dbo].[_ADD_ITEM_BY_GENDER]
/* Full coded by Lazcano , not allowed to copy uner your name. */ /* www.facebook.com/designer.ramy.saied */ /* Silkroad 4 Arab */
-- Procedure can use for add items by character gender -- You can use it to add start items , systems , etc ..
-- External parameters .. @CharID Int , @MaleItem Varchar(128) , @FemaleItem Varchar(128) , @Data Int , @OptLevel Int As
-- Declare expressions. ------------------------ Declare @RefObjID Int , @ID64 Int , @RefItemID Int , @FreeItemID Bigint , @Inv_Capacity Int , @Empty_Slot Int , @SN BigInt , @MaleData Int , @FemaleData Int --------------------------------------------------------------------------------------------------------------- Set @SN = (Select LatestItemSerial From [SRO_VT_SHARD].[dbo].[_LatestItemSerial]) +1 Set @ID64 = (Select MAX (ID64) FROM [SRO_VT_SHARD].[dbo].[_Items]) +1 Set @RefObjID = (Select RefObjID From [SRO_VT_SHARD].[dbo].[_Char] Where CharID = @CharID) Set @FreeItemID = (Select Top 1 (ItemID) From [SRO_VT_SHARD].[dbo].[_ItemPool] With (Nolock) Where InUse = 0 and ItemID > 0) Set @Inv_Capacity = (Select InventorySize From [SRO_VT_SHARD].[dbo].[_Char] Where CharID = @CharID) Select Top 1 @Empty_Slot = Slot From [SRO_VT_SHARD].[dbo].[_Inventory] With (Nolock) Where CharID = @CharID and Slot >= 13 and Slot < @Inv_Capacity and ItemID = 0 Order By Slot IF @Data between 0 and 1 Begin Set @MaleData = (Select Dur_L From [SRO_VT_SHARD].[dbo].[_RefObjItem] AS ObjItem Inner join [SRO_VT_SHARD].[dbo].[_RefObjCommon] AS ObjCommon ON ObjItem.ID = ObjCommon.Link Where ObjCommon.CodeName128 = @MaleItem) Set @FemaleData = (Select Dur_L From [SRO_VT_SHARD].[dbo].[_RefObjItem] AS ObjItem Inner join [SRO_VT_SHARD].[dbo].[_RefObjCommon] AS ObjCommon ON ObjItem.ID = ObjCommon.Link Where ObjCommon.CodeName128 = @FemaleItem) End ELSE IF @Data > 1 Begin Set @MaleData = @Data Set @FemaleData = @Data End --------------------------------------------------------------------------------------------------------------- -- IF Char Gender = [M] IF (@RefObjID between 1907 and 1919) or (@RefObjID between 14875 and 14887) Begin Set @RefItemID = (Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommon] Where CodeName128 = @MaleItem) IF (@FreeItemID IS NOT NULL) Begin -- Update the free item to our new item values. Update [SRO_VT_SHARD].[dbo].[_Items] Set RefItemID=@RefItemID , OptLevel=@OptLevel , Variance='0' , Data=@MaleData , CreaterName='Lazcano' , MagParamNum='0' , MagParam1=NULL , MagParam2=NULL , MagParam3=NULL , MagParam4=NULL , MagParam5=NULL , MagParam6=NULL , MagParam7=NULL , MagParam8=NULL , MagParam9=NULL , MagParam10=NULL , MagParam11=NULL , MagParam12 = NULL Where ID64 = @FreeItemID -- Update _ItemPool to make the new item inuse. Update [SRO_VT_SHARD].[dbo].[_ItemPool] Set InUse = 1 Where ItemID = @FreeItemID -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @FreeItemID Where CharID = @CharID and Slot = @Empty_Slot End ELSE IF (@FreeItemID IS NULL) Begin -- Insert new row in _Items SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] ON Insert InTo [SRO_VT_SHARD].[dbo].[_Items] (ID64,RefItemID,OptLevel,Variance,Data,CreaterName,MagParamNum,MagParam1,MagParam2,MagParam3,MagParam4,MagParam5,MagParam6,MagParam7,MagParam8,MagParam9,MagParam10,MagParam11,MagParam12,Serial64) Values (@ID64,@RefItemID,@OptLevel,0,@MaleData,'Lazcano',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@SN) SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] OFF -- Insert row in _ItemPool to make the new item inuse. Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPool] Values (@ID64,1) -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @ID64 Where CharID = @CharID and Slot = @Empty_Slot End End
-- IF Char Gender = [F] Else IF (@RefObjID Between 1920 and 1932) Or (@RefObjID Between 14888 and 14900) Begin Set @RefItemID = (Select ID From [SRO_VT_SHARD].[dbo].[_RefObjCommon] Where CodeName128 = @FemaleItem) IF (@FreeItemID IS NOT NULL) Begin -- Update the free item to our new item values. Update [SRO_VT_SHARD].[dbo].[_Items] Set RefItemID=@RefItemID , OptLevel=@OptLevel , Variance='0' , Data=@FemaleData , CreaterName='Lazcano' , MagParamNum='0' , MagParam1=NULL , MagParam2=NULL , MagParam3=NULL , MagParam4=NULL , MagParam5=NULL , MagParam6=NULL , MagParam7=NULL , MagParam8=NULL , MagParam9=NULL , MagParam10=NULL , MagParam11=NULL , MagParam12 = NULL Where ID64 = @FreeItemID -- Update _ItemPool to make the new item inuse. Update [SRO_VT_SHARD].[dbo].[_ItemPool] Set InUse = 1 Where ItemID = @FreeItemID -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @FreeItemID Where CharID = @CharID and Slot = @Empty_Slot End ELSE IF (@FreeItemID IS NULL) Begin -- Insert new row in _Items SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] ON Insert InTo [SRO_VT_SHARD].[dbo].[_Items] (ID64,RefItemID,OptLevel,Variance,Data,CreaterName,MagParamNum,MagParam1,MagParam2,MagParam3,MagParam4,MagParam5,MagParam6,MagParam7,MagParam8,MagParam9,MagParam10,MagParam11,MagParam12,Serial64) Values (@ID64,@RefItemID,@OptLevel,0,@FemaleData,'Lazcano',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,@SN) SET IDENTITY_INSERT [SRO_VT_SHARD].[dbo].[_Items] OFF -- Insert row in _ItemPool to make the new item inuse. Insert InTo [SRO_VT_SHARD].[dbo].[_ItemPool] Values (@ID64,1) -- add the new item to char inventory. Update [SRO_VT_SHARD].[dbo].[_Inventory] Set ItemID = @ID64 Where CharID = @CharID and Slot = @Empty_Slot End End
|