|
USE [SRO_VT_SHARDLOG] GO /****** Object: StoredProcedure [dbo].[_AddLogItem] Script Date: 10/30/2017 2:55:41 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
------------------------------------------------------------------------------------------------------------------- -- Step 2 -- ±âأپ¸ ¾أ†أ€أŒأ…أ› ·أژ±× أ€أ”·أ‚ Stored procedure ¼أ¶أپ¤ -- DataBase : Shard Log ALTER procedure [dbo].[_AddLogItem] @CharID int, @ItemRefID int, @ItemSerial bigint, @dwData int, @TargetStorage tinyint, @Operation tinyint, @Slot_From tinyint, @Slot_To tinyint, @EventPos varchar(64), @strDesc varchar(128), @Gold bigint -- #ifdef EXTEND_GOLD_TYPE »أ°أ€أ” as declare @len_pos int declare @len_desc int set @len_pos = len(@EventPos) set @len_desc = len(@strDesc) if (@len_pos > 0 and @len_desc > 0) begin insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ end else if (@len_pos > 0 and @len_desc = 0) begin insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, EventPos, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ end else if (@len_pos = 0 and @len_desc > 0) begin insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, strDesc, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @strDesc, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ end else if (@len_pos = 0 and @len_desc = 0) begin insert _LogEventItem (EventTime, CharID, ItemRefID, dwData, TargetStorage, Operation, Slot_From, Slot_To, Serial64, Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @ItemSerial, @Gold) -- #ifdef EXTEND_GOLD_TYPE ±³أƒ¼ end -- أ€¯·أ، ¾أ†أ€أŒأ…أ› ±¸أ€أ”أ€أŒ¸é! -- #define LOG_ITEMEVENT_BUY_CASHITEM (BYTE)35 IF (@Operation = 41) BEGIN IF (@ItemRefID = 2128) -- Bandit den return scroll (ITEM_ETC_SCROLL_RETURN_THIEFDEN_01), will work only when MaxStack is 1 BEGIN /* * Get latest region of character */ DECLARE @IsBattleField BIT SELECT @IsBattleField = IsBattleField FROM [SRO_VT_SHARD].[dbo].[_Char] INNER JOIN [SRO_VT_SHARD].[dbo].[_RefRegion] ON [SRO_VT_SHARD].[dbo].[_Char].LatestRegion = [SRO_VT_SHARD].[dbo].[_RefRegion].wRegionID WHERE [SRO_VT_SHARD].[dbo].[_Char].CharID = @CharID /* * Scroll is used inside town */ IF (@IsBattleField = 0) BEGIN DECLARE @COSID BIGINT DECLARE @ReFCharID INT DECLARE @TypeID4 INT /* * Get any summoned COS by current character * * It's actually fine not to use CURSOR, so far I noticed that any summoned COS * won't set "OwnerCharID", except for transport COS. * But just to be sure, I put CURSOR in use. */ SET NOCOUNT ON; DECLARE CurCOS CURSOR FOR SELECT ID, RefCharID FROM [SRO_VT_SHARD].[dbo].[_CharCOS] WHERE OwnerCharID = @CharID ORDER BY ID ASC; OPEN CurCOS; FETCH NEXT FROM CurCOS INTO @COSID, @ReFCharID; WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TypeID4 = TypeID4 FROM [SRO_VT_SHARD].[dbo].[_RefObjCommon] WHERE ID = @ReFCharID /* * If current COS is a transport COS, erase all items * TypeID4 = 2 = Transport COS */ IF (@TypeID4 = 2) BEGIN UPDATE [SRO_VT_SHARD].[dbo].[_InvCOS] SET ItemID = 0 WHERE COSID = @COSID END FETCH NEXT FROM CurCOS INTO @COSID, @ReFCharID; END; CLOSE CurCOS; DEALLOCATE CurCOS; END END END
if (@Operation = 35) begin insert _LogCashItem (RefItemID, CharID, Cnt, EventTime, Serial64) values(@ItemRefID, @CharID, @dwData, GetDate(), @ItemSerial) end declare @CharName varchar(64) set @CharName = (select CharName16 from [SRO_VT_SHARD].dbo._Char where CharID = @CharID ) declare @CharType int set @CharType = (select RefObjID from [SRO_VT_SHARD].dbo._Char where CharID = @CharID )
/*Mod Switcher*/ IF @ItemRefID BETWEEN '63630' and '63641' AND @Operation = '41' BEGIN EXEC [SRO_VT_SHARDLOG].dbo._ModelSwitcher @CharId, @ItemRefID END
|