المشاركة الأصلية كتبت بواسطة Neoon
(المشاركة 5333781)
كود PHP:
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
|