الموضوع: start itmes
عرض مشاركة واحدة
قديم 07-11-2018, 12:55 PM   #11

stafherp
عضو مميز



الصورة الرمزية stafherp


• الانـتـسـاب » Oct 2012
• رقـم العـضـويـة » 106331
• المشـــاركـات » 957
• الـدولـة » GIZZA
• الـهـوايـة » Babel.SRO only
• اسـم الـسـيـرفـر » Lepus
• الـجـنـس » Male
• نقـاط التقييم » 13
stafherp صـاعـد

stafherp غير متواجد حالياً



افتراضي رد: start itmes



انا فعلا ضفت ف addlogitem+addlogchar
كود PHP:
USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_AddLogItem]    Script Date: 11/7/2018 10:56:31 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO


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)
        as
            declare @
len_pos int
            
declare @len_desc int
            set 
@len_pos len(@EventPos)
            
set @len_desc len(@strDesc)
            if (@
len_pos and @len_desc 0)
            
begin
                insert _LogEventItem 
(EventTimeCharIDItemRefIDdwDataTargetStorageOperationSlot_FromSlot_ToEventPosstrDescSerial64)
                
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @strDesc, @ItemSerial)
            
end
            
else if (@len_pos and @len_desc 0)
            
begin
                insert _LogEventItem 
(EventTimeCharIDItemRefIDdwDataTargetStorageOperationSlot_FromSlot_ToEventPosSerial64)
                
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @EventPos, @ItemSerial)
            
end
            
else if (@len_pos and @len_desc 0)
            
begin
                insert _LogEventItem 
(EventTimeCharIDItemRefIDdwDataTargetStorageOperationSlot_FromSlot_TostrDescSerial64)
                
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @strDesc, @ItemSerial)
            
end
            
else if (@len_pos and @len_desc 0)
            
begin
                insert _LogEventItem 
(EventTimeCharIDItemRefIDdwDataTargetStorageOperationSlot_FromSlot_ToSerial64)
                
values(GetDate(), @CharID, @ItemRefID, @dwData, @TargetStorage, @Operation, @Slot_From, @Slot_To, @ItemSerial)
            
end
            
-- ىœ*료 ى•„ى‌´ي…œ êµ¬ى‍…ى‌´ë©´!
            -- 
#define LOG_ITEMEVENT_BUY_CASHITEM        (BYTE)35
            
if (@Operation 35)
            
begin
                insert _LogCashItem 
(RefItemIDCharIDCntEventTimeSerial64)
                
values(@ItemRefID, @CharID, @dwDataGetDate(), @ItemSerial)
            
end 
كود PHP:
USE [SRO_VT_SHARDLOG]
GO
/****** Object:  StoredProcedure [dbo].[_AddLogChar]    Script Date: 11/7/2018 11:53:42 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER   procedure 
[dbo].[_AddLogChar
@
CharID        int,
@
EventID        tinyint,
@
Data1        int,
@
Data2        int,
@
strPos        varchar(64),
@
Desc        varchar(128)
as
 IF (@
EventID 22) -- Character level up 
               BEGIN 
                EXEC SRO_VT_SHARDLOG
.dbo._AutoEquipmentTEST  @CharID,@Data2 
               END  

IF    ( -- Skips over the unnecessary Records
        
(@EventID != 11) AND 
        (@
EventID NOT BETWEEN 21 AND 27) AND
        (@
EventID NOT BETWEEN 200 AND 202) AND
        (@
EventID NOT BETWEEN 204 AND 206) AND 
        (@
EventID != 210) AND (@EventID != 214) AND (@EventID != 244)
    )
BEGIN

    
declare @len_pos     int
    
declare @len_desc    int
    set 
@len_pos len(@strPos)
    
set @len_desc len(@Desc)
    if (@
len_pos and @len_desc 0)
    
begin    
        insert _LogEventChar values
(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos, @Desc)    
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2EventPosvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos)
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2strDescvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @Desc)
    
end
    
else
    
begin
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2values(@CharIDGetDate(), @EventID, @Data1, @Data2)
    
end
    
 
IF (@CharID IN (select charid from SRO_VT_SHARD.dbo._User with (nolockwhere UserJID in (select JID from SRO_VT_ACCOUNT.dbo.TB_User with (nolockwhere sec_content 3))
    and 
exists (Select from SRO_VT_SHARD.dbo._Char where CurLevel '110' and CharID = @charid)
    and 
not exists (SELECT CharID FROM _OnlineOffline WHERE CharID = @CharID) )
     
BEGIN

        INSERT INTO _OnlineOffline 
(CharIDCharname, [Status], [Date], [Minutes], [tMinutes], eSilkmOnline, [Silk/Hour], [stillOnline@])
        
VALUES (
                @
CharID,
                (
SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID),
                
'OnHold',
                
GETDATE(),
                
0,0,0,
                
NULL,(SELECT DefaultSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates'),
                
NULL
                
);
    
END

IF (@EventID OR @EventID 6)
    
BEGIN

    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike 'OnHold'))
        
BEGIN
            UPDATE _OnlineOffline
            SET 
[Status] = 'Offline'
            
WHERE CharID = @CharID
        END
        
    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike 'Online'))
        
BEGIN
            UPDATE _OnlineOffline
            SET
                
[Status] = 'Offline',
                [
Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
                [
tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
                [
mOnline] = NULL,
                [
stillOnline@] = NULL
            WHERE CharID 
= @CharID    
        END
        
    
IF (@EventID 4)
        
BEGIN
            UPDATE _OnlineOffline
            SET 
                
[Status] = 'Online',
                [
Date] = GETDATE(),
                [
stillOnline@] = GETDATE()
            
WHERE CharID = @CharID
        END
    END

    
UPDATE _OnlineOffline
SET 
    
[mOnline] = CAST((DATEDIFF(MINUTE,[Date],GETDATE()))as varchar(max)) + ' minute(s) Online',
    [
Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
    [
tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
    [
stillOnline@] = GETDATE()
WHERE [Statuslike 'Online'

/*Silk/Hour basic calc*/
IF ((SELECT [tMinutesfrom _OnlineOffline WHERE CharID = @CharID) >= (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'))
    
BEGIN
        
Declare @sph int;
        
exec @sph = [_GetSilkperHour] @CharID
        UPDATE _OnlineOffline SET 
[Silk/Hour] = @sph WHERE CharID = @CharID
    END
/*!Silk/Hour basic calc*/

IF (((SELECT NextDate FROM [_RandomPlayer&DateWHERE [Desclike 'Next'IS NULL))
    
BEGIN
        
DECLARE @FirstDate datetime, @Today datetime GETDATE(), @FirstCharID int;

        
exec @FirstCharID SRO_VT_SHARD.dbo._RandomPlayerID
        exec SRO_VT_SHARD
.dbo._GetRandomTime @Today, @FirstDate OUTPUT
        
        UPDATE 
[_RandomPlayer&Date
            
SET 
                NextDate 
= @FirstDate,
                
RefreshedDate GETDATE(),
                
CharID = @FirstCharID,
                
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @FirstCharID)
            
WHERE [Desclike 'Next';
    
END
    
IF ((SELECT NextDate FROM [_RandomPlayer&DateWHERE [Desclike 'Next') <= GETDATE())
    
BEGIN
        UPDATE _OnlineOffline
            SET 
[Silk/Hour] = (SELECT RewardSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
            
WHERE CharID = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike 'Next');
        Declare
                @
CurSilkperHour int
                @
OldCharID int = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike 'Current');
        IF (@
OldCharID IS NOT NULL)
            
BEGIN
                exec 
@CurSilkperHour _GetSilkperHour @OldCharID
                UPDATE _OnlineOffline
                    SET 
[Silk/Hour] = @CurSilkperHour
                    WHERE CharID 
= @OldCharID;
            
END
        UPDATE 
[_RandomPlayer&Date]
            
SET
                NextDate 
NULL,
                
RefreshedDate GETDATE(),
                
CharID = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike 'Next'),
                
Charname = (SELECT Charname FROM [_RandomPlayer&DateWHERE [Desclike 'Next')
            
WHERE [Desclike 'Current'
        
        
/*new Random Time of Today+1*/
        
DECLARE @NextDate datetime, @Tomorrow datetime GETDATE()+1, @NewCharID int;
        
        
exec @NewCharID SRO_VT_SHARD.dbo._RandomPlayerID
        exec SRO_VT_SHARD
.dbo._GetRandomTime @Tomorrow, @NextDate OUTPUT
        
        UPDATE 
[_RandomPlayer&Date
            
SET 
                NextDate 
= @NextDate,
                
RefreshedDate GETDATE(),
                
CharID = @NewCharID,
                
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @NewCharID)
            
WHERE [Desclike 'Next'
        
/*!new Random...*/
    
END
    
    
/*Calculation of the silk amount*/
    
Declare @tMinutes bigint = (SELECT [Minutesfrom _OnlineOffline WHERE CharID = @CharID), @Silk int;
    
        IF (@
tMinutes >= 60)
            
BEGIN
                SET 
@Silk CAST(((SELECT [MinutesFROM _OnlineOffline WHERE CharID = @CharID) / 60) as int)
                
UPDATE _OnlineOffline
                SET 
[Minutes] = [Minutes] % 60
                WHERE CharID 
= @CharID
                
            
IF exists (SELECT [WEEKDAYSFROM [_Silk/Hour-ConfigWHERE [WEEKDAYSlike DATENAME(WEEKDAYGETDATE()))
                
BEGIN
                    UPDATE _OnlineOffline
                    SET 
[eSilk] = [eSilk] + (@Silk*[Silk/Hour])
                    
WHERE CharID = @CharID
                    
                    exec SRO_VT_ACCOUNT
.dbo._extraSilk @CharID, @Silk
                END
          
  END  

  END 
-- !Skipping  
  
IF (@EventID 22) -- Character level up
BEGIN
    
-- Character reached certain level
    
IF (@Data2 13 OR @Data2 21 OR @Data2 29 OR @Data2 37 OR @Data2 47 OR @Data2 57 OR @Data2 69 OR @Data2 81)
    
BEGIN
        
DECLARE @CharNameEQ VARCHAR(64) = (SELECT CharName16 from [SRO_VT_SHARD].[dbo].[_CharWHERE CharID = @CharID)

        -- 
Set Method (inventoryauto) (CHANGE THIS IF YOU WANT)
        DECLARE @
AEMethod INT 2
        
-- ID in _RefObjCommon for this Auto-Equipment Coupon (CHANGE THIS IF YOU HAVE DIFFERENT ID)
        DECLARE @
RefItemID INT 46030

        
-- Method 1deliver inventory
        
IF (@AEMethod 1)
        
BEGIN
            
-- Check if coupon exist
            
-- (so character won't get multiple coupon) ;)
            DECLARE @isCouponExist INT = 0
            DECLARE @TSlots INT = 0
            DECLARE @CharSlot INT = 0
            DECLARE @CouponItemID INT = 0
            SELECT @TSlots = COUNT(Slot) from [SRO_VT_SHARD].[dbo].[_Inventory] WHERE CharID = @CharID
            WHILE @CharSlot <= @TSlots
            BEGIN
                IF (@CharSlot > 13)
                BEGIN
                    SELECT @CouponItemID = ItemID FROM [SRO_VT_SHARD].[dbo].[_Inventory] WHERE CharID = @CharID AND Slot = @CharSlot
                    IF EXISTS (SELECT RefItemID FROM [SRO_VT_SHARD].[dbo].[_Items] WHERE RefItemID = @RefItemID AND ID64 = @CouponItemID)
                    BEGIN
                        SET @isCouponExist = 1
                        SET @CharSlot = @TSlots
                    END
                END
                SET @CharSlot = @CharSlot + 1
            END
            -- If previous coupon not exist, deliver to inventory
            IF (@isCouponExist = 0)
            BEGIN
                EXEC [SRO_VT_SHARD].[dbo].[_ADD_ITEM_EXTERN] @CharNameEQ, '
ITEM_EVENT_AUTOEQUIP_COUPON', 1, 0
            END
        END
        -- Method 2: automatic equip
        ELSE IF (@AEMethod = 2)
        BEGIN
            EXEC [SRO_VT_SHARD].[dbo].[_ADD_AUTOEQUIP_GEAR] @CharNameEQ, 7
        END
    END
END 
اهم بس مش عارف فين +12 بظبط