Silkroad Online

Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   (https://silkroad4arab.com/vb/forumdisplay.php?f=226)
-   -   Bug with ShardManager (https://silkroad4arab.com/vb/showthread.php?t=607849)

Chinaya 26-11-2016 03:53 PM

Bug with ShardManager
 
http://i.epvpimg.com/v0R7d.jpg

Vsro Ver .193

l 1.88

Chinaya 26-11-2016 03:54 PM

: Bug with ShardManager
 
1.93
1.88

Helper4You 26-11-2016 08:05 PM

: Bug with ShardManager
 

Chinaya 27-11-2016 01:40 AM

: Bug with ShardManager
 
SR_ShardManager
[

1.93
1.88

Helper4You 28-11-2016 04:39 PM

: Bug with ShardManager
 
... .

Setup Server ...




Dev.Ri3o 28-11-2016 08:10 PM

: Bug with ShardManager
 

:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_DeleteCharPermanently]    Script Date: 02/14/2012 12:54:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO


--!!!CHECK!!!
ALTER              PROCEDURE [dbo].[_DeleteCharPermanently]
@CharID        as int
as
        ------------------------------------
        -- 일단 **된 캐*인지 부터 검사!
        ------------------------------------
        if (not exists(select charid from _deletedchar where charid = @CharID))
        begin
                return -1
        end
        ------------------------------------
        -- **후 경과된 시간이 대략 7일이 맞는가 확인 (샤드에 혹시 버그가 있을지 모르니깐...)
        ------------------------------------
        declare @deleted_date datetime
        declare @cur_date          datetime
        declare @elapsed_min int
        declare @UserJID                int
--        declare @deleted_slot  int
        set @cur_date = getdate()
        select @UserJID = UserJID, /*@deleted_slot = CharSlot,*/ @deleted_date = deleteddate  from _deletedchar with (nolock) where charid = @CharID
       
        -- **시킨지 6일 + 23시간 이상이 지난 캐*인가? (1시간 *도의 오차라면 인*해 준다 냐하~)
        set @elapsed_min = datediff(minute, @deleted_date, @cur_date)
        if (@elapsed_min < ((60 * 24 * 6) + (60 * 23)))
        begin
                return -2
        end
        ------------------------------------
        -- **된 캐*이 맞는지 다시한번 확인
        ------------------------------------
        declare @is_deleted tinyint
        select @is_deleted = deleted from _Char where CharID = @CharID
        if (@is_deleted <> 1)
        begin
                return -3
        end

        ------------------------------------
        -- 지울 캐*이 _User 에 있는 CharID와 일치하는가 검사
        ------------------------------------
        declare @char_id_to_check                int
        set @char_id_to_check = 0

/*        -- commented by novice. for server integration.
        if (@deleted_slot = 0)
                begin        select @char_id_to_check = CharID1 from _User where UserJID = @UserJID end
        else if (@deleted_slot = 1)
                begin        select @char_id_to_check = CharID2 from _User where UserJID = @UserJID end
        else if (@deleted_slot = 2)
                begin        select @char_id_to_check = CharID3 from _User where UserJID = @UserJID end
        else
                begin
                        return -4
                end
        -- 켁! 어떻게 된거야?  이상한 넘이 자리를 차지하* 있다!
        if (@char_id_to_check <> @CharID)
        begin
                return -5
        end
*/
        -- start by novice.
        select @char_id_to_check = CharID from _User where UserJID = @UserJID and CharID = @CharID
       
        if (@char_id_to_check = 0)
        begin
                -- 지울 캐*터가 _User 에 없어?
                return -5
        end
        -- finish by novice.
       
begin transaction
       
        declare @GuildID int
        exec @GuildID = _DeleteCharPermanently_NoTX  @UserJID, @CharID --, @deleted_slot
        if (@GuildID is null)
                set @GuildID = -10000       
        if (@GuildID < 0)
        begin
                rollback transaction
                return @GuildID
        end       
commit transaction
       
        return @GuildID

:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_DeleteCharPermanently_NoTX]    Script Date: 02/14/2012 12:54:27 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER OFF
GO

ALTER PROCEDURE [dbo].[_DeleteCharPermanently_NoTX]
        @UserJID        INT
,        @CharID                INT
AS
        ------------------------------------
        -- Inventory ׾È¿¡ ¡Áö* ÀÖø ÆÀÌÅÛ ÁöÀÚ...
        ------------------------------------
        -------------- Æ ÒÈ ÆÀÌÅÛºÎÅÍ ÀÏÜ Á ----------------
        declare @result int
        declare @Slot tinyint
        declare @RefItemID int
       
        declare pc_inv_cursor cursor fast_forward for
        select inv.slot
        from _Inventory as inv join _Items as it on inv.ItemID = it.ID64
        where
        (inv.CharID = @CharID and inv.Slot >= 13 and inv.ItemID > 0) and        -- Àåºñà Á¿ÜÇÏ* ÆÀÌÅÛ ÀÖ øö ÀκÅä È¿¡ ÀÖÀ
        (it.Data <> 0)                                                                                          and        -- ÒÈö ¡Áö* ÀÖÂ
        (exists (select top 1 ID from _RefObjCommon where ID = it.RefItemID and TypeID1 = 3 and TypeID2 = 2)) -- ÆÒÈ ÆÀÌÅÛ ÃÆÁ~
       
        open pc_inv_cursor
        fetch next from pc_inv_cursor  into @slot
        while @@fetch_status = 0
        begin
                        exec @result = _STRG_DEL_ITEM_NoTX 1, @CharID, @Slot       
                        if (@result < 0)
                        begin
                                close pc_inv_cursor
                                deallocate pc_inv_cursor
                                return @result
                        end
                                               
                        fetch next from pc_inv_cursor  into @Slot
        end
       
        close pc_inv_cursor
        deallocate pc_inv_cursor
        ------------------- Àº ÆÀÌÅÛ Ã Á  -------------------
        -- ÆÀÌÅÛÀÌ ÇϪó ÀÖÙ...
        if (exists (select top 1 itemID from _Inventory where CharID = @CharID AND ItemID <> 0))
        begin
                update _ItemPool Set InUse = 0
                from _ItemPool as pool join _Inventory as inv on pool.ItemID = Inv.ItemID
                where Inv.CharID = @CharID and Inv.ItemID <> 0
        end
        ----------- ÆÀÌÅÛ ÈÀÏ ÃÖÁÀÀ ÀκÅä Á  ------------
        delete from _Inventory where CharID = @CharID
        if (@@error <> 0)
        begin
                return -10001
        end

        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        --                APPLY_AVATAR_SYSTEM (Çã¿*)
        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        ------------------- Àº ÆÙÅ ÀκÅä ÆÀÌÅÛ Ã Á  -------------------
        -- ÆÀÌÅÛÀÌ ÇϪó ÀÖÙ...
        if (exists (select top 1 itemID from _InventoryForAvatar where CharID = @CharID AND ItemID <> 0))
        begin
                update _ItemPool Set InUse = 0
                from _ItemPool as pool join _InventoryForAvatar as InvAva on pool.ItemID = InvAva.ItemID
                where InvAva.CharID = @CharID and InvAva.ItemID <> 0
        end
        ----------- ÆÀÌÅÛ ÈÀÏ ÃÖÁÀÀ ÆÙÅ ÀκÅä Á  ------------
        delete from _InventoryForAvatar where CharID = @CharID
        if (@@error <> 0)
        begin
                return -10008
        end

        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        --                APPLY_AVATAR_SYSTEM (Çã¿*)
        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        ------------------------------------
        -- COS Á
        ------------------------------------
/*
        declare @engaged_cos int
        set @engaged_cos = 0
        select @engaged_cos = EngagedCOS from _char with (nolock) where CharID = @CharID
       
        if (@engaged_cos = 0)
        begin
                -- ¿Ö ßýÇÏ Áö Àß ðÚÁö... ÆÁÖ åÔ COS ÆÀÖ æ¿ì¡ ÀÖõó*... -_-;
                select @engaged_cos = ID from _CharCOS with (nolock) where OwnerCharID = @CharID
                if (@engaged_cos is null)
                        set @engaged_cos = 0
        end
        if (@engaged_cos is not null and @engaged_cos <> 0)
        begin
                declare @Return_Del_COS int
                exec @Return_Del_COS = _DeleteCharCOS_NoTX  @CharID, @engaged_cos
                if (@Return_Del_COS < 0)
                begin
                        return -10002
                end
        end
*/
        ------------------------------------
        -- Trijob ÀÌÅÍ Á
        ------------------------------------
        delete from _CharTrijob where CharID = @CharID
        ------------------------------------
        -- ºÅ Á
        ------------------------------------
        delete _CharSkill where CharId = @CharID
        delete _CharSkillMastery where charId = @CharID
        ------------------------------------
        -- ÄºÆ Á
        ------------------------------------
        delete _CharQuest where CharID = @CharID
        ------------------------------------
        -- æå ö Á
        ------------------------------------
        -- !!! ¿* Guild ö Á¡ ÀϪÁö ÊÀ ShardManager ¿¡*
        -- _Guild_DelMember ÈÃÇØ ÁÖÏ öÁÇØß ÇÑÙ! ÁöÝÀº úÁÀº SkipÇÏ*
        -- Þð¿¡* Á ÀÏªÔ Ç ÀÖÅ...
        declare @GuildID int
        set @GuildID = 0
        select @GuildID = GuildID from _char where charid = @CharID
        if (@GuildID is not null and @GuildID <> 0)
        begin
                if (not exists (select ID from _Guild where ID = @GuildID))
                begin
                        update _Char set GuildID = 0 where CharID = @CharID
                end
                else
                begin
                        declare @Return_Del_GuildMember int
                        exec @Return_Del_GuildMember = _Guild_DelMember_NoTX @GuildID, @CharID
                        if (@Return_Del_GuildMember < 0)
                                return -10003
                end
        end

        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        --                APPLY_MENTOR_SYSTEM (ÃÖÀÎÈ)
        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        DECLARE @CampID INT
        SET @CampID = 0
        SELECT @CampID = CampID FROM _TrainingCampMember WHERE CharID = @CharID
        IF (@CampID IS NOT NULL AND @CampID <> 0)
        BEGIN
                DECLARE @Ret_DelCampMember INT
                EXEC @Ret_DelCampMember = _TRAINING_CAMP_DELMEMBER @CampID, @CharID, 0
                IF (@Ret_DelCampMember < 0)
                        RETURN -10007
        END

        -- ÀÖÀ Áö¿ööÀÚ~ .
        DELETE FROM _TrainingCampSubMentorHonorPoint WHERE CharID = @CharID

        -- æÇÄ¡ öÇÁ ÄÚå~~
        DELETE FROM _TrainingCampBuffStatus WHERE CampID = @CampID

        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        --                APPLY_MENTOR_SYSTEM (ÃÖÀÎÈ)
        --@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        -----------------------------------
        -- Ä ºÆ Á ( ªÀÇ Ä ºÆ + ÄÀÇ Ä ºÆÁß ª )
        -----------------------------------
        -- Ä..
        declare @FriendCharID        int
        declare @cursor_var        cursor
       
        set @cursor_var = cursor fast_forward
        for
        select FriendCharID
        from _Friend
        where CharID = @CharID
       
        open @cursor_var
       
        fetch next from @cursor_var into @FriendCharID
       
        while( @@FETCH_STATUS = 0 )
        begin
                delete _Friend where CharID = @FriendCharID and FriendCharID = @CharID
       
                fetch next from @cursor_var into @FriendCharID
        end
        close @cursor_var
        deallocate @cursor_var
        -- ª..
        delete _Friend where CharID = @CharID
        -----------------------------------
        -----------------------------------
        -- ÂÊÁö Á
        -----------------------------------
        delete _Memo where CharID = @CharID
        ------------------------------------
        -- TimedJob ÁÇÏ
        ------------------------------------
        delete _TimedJob where CharID = @CharID
        ------------------------------------
        -- Static Avatar Áº Á
        ------------------------------------       
        delete from _staticavatar where charid = @charid
        ------------------------------------
        -- Ó º* Áº Á
        ------------------------------------       
        delete from _BlockedWhisperers where OwnerID = @charid       
        ------------------------------------
        -- ÆÄÆÃÊ º* Áº Á 10.06.07
        ------------------------------------
        DELETE FROM _BlockedPartyInviter WHERE CharID = @charid       
        ------------------------------------
        -- _DeletedChar Entry Á
        ------------------------------------
        delete from _DeletedChar where CharID = @CharID
        if (@@error <> 0)
        begin
                return -10004
        end
        -- start by novice.
        DELETE FROM _User WHERE UserJID = @UserJID and CharID = @CharID
        -- finish by novice.

        ------------------------------------
        -- commit !!!
        ------------------------------------
       
        -- ÅóÀÌðÆ¿ ÄÔ Áº ÀúÀå ÅÀ̺* !!!
        exec _RemoveClientConfig @CharID                -- by novice...... for saving client configurations...
        return @GuildID


Dev.Ri3o 29-11-2016 11:04 PM

: Bug with ShardManager
 
##


06:27 PM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.