تسجيل الدخول دائمآ
ط·آ§ط¸â€‍ط·آ¥ط·آ¹ط¸â€‍ط·آ§ط¸â€ ط·آ§ط·ع¾

الـجـروب الـخـاص بـالـمـنـتـدي Silkroad4arab Facebook | Official Group 



قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة [ قسم خاص لأسئلة واستفسارات عمل السيرفرات الخاصة ] [ يرجى الالتزام بقوانين قسم الأسئلة والاستفسارات ]

 
 
أدوات الموضوع انواع عرض الموضوع
قديم 31-12-2016, 01:43 PM   #1

Dev.Myth
عضو فضى



الصورة الرمزية Dev.Myth

مشرف قسم CrossFire

• الانـتـسـاب » May 2010
• رقـم العـضـويـة » 70996
• المشـــاركـات » 3,554
• الـدولـة » مــصــر
• الـهـوايـة » Silkroad Service
• اسـم الـسـيـرفـر » Private Server
• الـجـنـس » Male
• نقـاط التقييم » 15
Dev.Myth صـاعـد

Dev.Myth غير متواجد حالياً


إرسال رسالة عبر Yahoo إلى Dev.Myth

افتراضي C-Sro Upgrade items



السلام عليكم
مشكله مع الـ Upgrade Items بعد الإستخدام بتجيب DC لكن العمليه بتتنفذ والجيم سيرفر طبعاً بيجيب كده :
كود PHP:
AQ succeeded but AsyncQueryCompleted() error occurred [AQType: 40] 
حاولت اعمل حاجات كتيره علشان احاول احلها بس مش عارف اصلاً انا بقيت ماشى صح ولا غلط ولا انا بقيت بعمل ايه وديه اخر حاجه وصلت ليها
ده البروسيدور

كود PHP:
USE [Test]
GO
/****** Object:  StoredProcedure [dbo].[_STRG_EQUIP_ITEM_UPGRADE]    Script Date: 31/12/2016 11:51:19 ص ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE 
[dbo].[_STRG_EQUIP_ITEM_UPGRADE]
@
CharID            INT,
@
UgdSuccess        TINYINT,
@
UgdEquipSlot        TINYINT,
@
UgdStoneSlot        TINYINT,
@
UgdRefItemID        INT    = 0,
@
UgdOptLevel        TINYINT    = 0,
@
UgdVariance        BIGINT    = 0,
@
UgdData        INT    = 0,
@
UgdCreateName    VARCHAR(64)    = '',
@
UgdMagParamNum    TINYINT        = 0,
@
UgdMagParam1        BIGINT    = 0,
@
UgdMagParam2        BIGINT    = 0,
@
UgdMagParam3        BIGINT    = 0,
@
UgdMagParam4        BIGINT    = 0,
@
UgdMagParam5        BIGINT    = 0,
@
UgdMagParam6        BIGINT    = 0,
@
UgdMagParam7        BIGINT    = 0,
@
UgdMagParam8        BIGINT    = 0,
@
UgdMagParam9        BIGINT    = 0,
@
UgdMagParam10        BIGINT    = 0,
@
UgdMagParam11        BIGINT    = 0,
@
UgdMagParam12        BIGINT    = 0
AS
DECLARE @
UgdEquipID64        BIGINT
    
DECLARE @UgdEquipRefID        INT
    
DECLARE @UgdEquipSerial64    BIGINT
    
DECLARE @UgdEquipTID2        TINYINT
    
DECLARE @UgdEquipTID3        TINYINT
    
DECLARE @UgdEquipItemClass    TINYINT

    
DECLARE @UgdStoneID64        BIGINT
    
DECLARE @UgdStoneRefID        INT
    
DECLARE @UgdStoneSerial64    BIGINT
    
DECLARE @UgdStoneCount    INT
    
DECLARE @CheckTID3_1        INT
    
DECLARE @CheckTID3_2        INT

    SET 
@UgdEquipID64    = 0
    SET 
@UgdEquipRefID    = 0
    SET 
@UgdEquipSerial64    = 0
    SET 
@UgdEquipTID2    = 0
    SET 
@UgdEquipTID3    = 0
    SET 
@UgdEquipItemClass    = 0

    SET 
@UgdStoneRefID    = 0
    SET 
@UgdStoneID64    = 0
    SET 
@UgdStoneSerial64    = 0
    SET 
@UgdStoneCount    = 0
    SET 
@CheckTID3_1    = 0
    SET 
@CheckTID3_2    = 0

    
-- ى—…ê·¸ë*ˆى‌´ë“œ ى„±ê³µ / ى‹¤يŒ¨ى—گ ëŒ€ي•œ ê²°ê³¼ê°’ ى*€ى‍¥
    
    
DECLARE @UpgradeResult     TABLE
    
(
        
Type        TINYINT,
        
RefItemID    INT,
        
Slot        TINYINT,
        [
Count]        INT,
        
ID64        BIGINT,
        
Serial64        BIGINT        
    
)

    -- 
ي•´ë‹¹ ى؛گë¦*ي„°ê°€ ى،´ى‍¬ي•کëٹ”ى§€ ي™•ى‌¸
    
IF  NOT EXISTS ( SELECT * FROM _Char WITH (NOLOCK) WHERE CharID = @CharID )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -1, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN
    
END

    
-- ى—…ê·¸ë*ˆى‌´ë“œي•* ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک ItemID를 ي™•ى‌¸
    SELECT 
@UgdEquipID64 = ISNULL( MAX(ItemID), 0 ) FROM _Inventory WITH (NOLOCK) WHERE CharID = @CharID AND Slot = @UgdEquipSlot
    SELECT 
@UgdStoneID64 = ISNULL( MAX(ItemID), 0 ) FROM _Inventory WITH (NOLOCK) WHERE CharID = @CharID AND  Slot = @UgdStoneSlot

    
IF( @UgdEquipID64 = 0 OR @UgdStoneID64 = 0 )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -2, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN
    
END

    
-- ى—…ê·¸ë*ˆى‌´ë“œي•* ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک ëچ°ى‌´ي„°ë¥¼ ى–»ى–´ىک¨ë‹¤!!!
    
SELECT @UgdEquipRefID = ISNULL( MAX(RefItemID), 0 ), @UgdEquipSerial64 = ISNULL( MAX(Serial64), 0 )
    
FROM _Items  AS I WITH (NOLOCK)
    
JOIN _ItemPool AS IP WITH (NOLOCK) ON I.ID64 = IP.ItemID
    WHERE ID64 
= @UgdEquipID64 AND IP.InUse = 1

    
IF( @UgdEquipRefID = 0 OR @UgdEquipSerial64 = 0 )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -3, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN
    
END

     
-- ي•´ë‹¹ ى—…ê·¸ë*ˆى‌´ë“œي•* ى•„ى‌´ي…œى‌´ ى‍¥ë¹„ ى•„ى‌´ي…œى‌´ê³* 11ى°¨ ى‌´ىƒپ, Rarityê°€ 2(ë*ˆى–´) OR 6(ë*ˆى–´ى…‹يٹ¸)ى‌¸ى§€ ي™•ى‌¸ (11ى°¨ ى‌´ىƒپë§Œ ى—…ê·¸ë*ˆى‌´ë“œ ê°€ëٹ¥!!!)  
     
SELECT @UgdEquipTID2 = ISNULL( MAX(ROC.TypeID2), 0 ), @UgdEquipTID3 = ISNULL( MAX(ROC.TypeID3), 0 ),  @UgdEquipItemClass = ( ( ISNULL( MAX(ROI.ItemClass), 0 ) + 2 ) / 3 )   
     
FROM _RefObjCommon AS ROC JOIN _RefObjItem AS ROI ON ROC.Link = ROI.ID   
     WHERE ROC
.ID = @UgdEquipRefID AND ROC.TypeID1= 3 AND ROC.TypeID2 = 1 AND  ROI.ItemClass > 30
      
     
IF( @UgdEquipTID2 = 0 OR @UgdEquipTID3 = 0 OR @UgdEquipItemClass = 0 )  
     
BEGIN  
      INSERT 
@UpgradeResult VALUES( 0, -4, 0, 0, 0, 0 )  
      
SELECT * FROM @UpgradeResult   
      
RETURN    
     
END  
    
-- ى„±ى‍¥ى„‌ ى•„ى‌´ي…œى—گ ëŒ€ي•œ ëچ°ى‌´ي„°ë¥¼ ى–»ى–´ىک¨ë‹¤.
    
SELECT @UgdStoneRefID = ISNULL( MAX(RefItemID), 0 ), @UgdStoneCount = ISNULL( MAX(Data), 0 ), @UgdStoneSerial64= ISNULL( MAX(Serial64), 0 )
    
FROM _Items  AS I WITH (NOLOCK)
    
JOIN _ItemPool AS IP WITH (NOLOCK) ON I.ID64 = IP.ItemID
    WHERE ID64 
= @UgdStoneID64 AND IP.InUse = 1

    
IF( @UgdStoneRefID = 0 OR @UgdStoneSerial64 = 0 OR @UgdStoneCount = 0 )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -5, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN
    
END

    
-- ى„±ى‍¥ى„‌ ى•„ى‌´ي…œى‌´ ى‹¤ى*œ ى„±ى‍¥ى„‌ ى•„ى‌´ي…œ يƒ€ى‍…ى‌¸ى§€ ي™•ى‌¸ي•کى‍گ!!!
    -- 
ى„±ى‍¥ى„‌ى‌ک FreeParam1 : ëŒ€ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک ى°¨ىˆک
    
-- ى„±ى‍¥ى„‌ى‌ک FreeParam2 : ëŒ€ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID2
    
-- ى„±ى‍¥ى„‌ى‌ک FreeParam3 : ëŒ€ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID3(비يٹ¸ë§ˆىٹ¤ي‚¹)
    -- 
ى„±ى‍¥ى„‌ى‌ک FreeParam4 : ëŒ€ىƒپ ى‍¥ë¹„ ى•„ى‌´ي…œى‌ک TypeID3(비يٹ¸ë§ˆىٹ¤ي‚¹)
    
SELECT @CheckTID3_1 = ISNULL( MAX(ROI.Param3), 0 ), @CheckTID3_2 = ISNULL( MAX(ROI.Param4), 0 )  
    
FROM _RefObjCommon AS ROC JOIN _RefObjItem AS ROI ON ROC.Link = ROI.ID
    WHERE ROC
.ID = @UgdStoneRefID AND ROI.Param1 = @UgdEquipItemClass AND ROI.Param2 = @UgdEquipTID2

    
IF ( @CheckTID3_1 = 0 AND @CheckTID3_2 = 0 )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -6, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN        
    
END
    
    
DECLARE @Cnt        TINYINT
    
DECLARE @TID3_1    TINYINT
    
DECLARE @TID3_2    TINYINT
    
DECLARE @IsEqualTID3    TINYINT

    SET 
@Cnt        = 0
    SET 
@TID3_1        = 0
    SET 
@TID3_2        = 0
    SET 
@IsEqualTID3    = 0
    
    
WHILE( @Cnt <= 3 )
    
BEGIN
        SET 
@TID3_1  = ( @CheckTID3_1 / POWER( 2 , 8 * @Cnt ) ) & 0xFF
        SET 
@TID3_2  = ( @CheckTID3_2 / POWER( 2 , 8 * @Cnt ) ) & 0xFF

        
IF( @UgdEquipTID3 IN ( @TID3_1, @TID3_2) )
        
BEGIN
            
-- ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک  ëŒ€ىƒپ TID3ى‌´ ëڈ™ى‌¼ي•ک구ë‚ک!!!
            
SET @IsEqualTID3 = 1
            
BREAK
        
END

        SET 
@Cnt = @Cnt + 1
    END

    
-- ى‍¥ë¹„ ى•„ى‌´ي…œê³¼ ى„±ى‍¥ى„‌ى‌ک  ëŒ€ىƒپ TID3ى‌´ ëڈ™ى‌¼ي•کى§€ ى•ٹ구ë‚ک!!!    
    IF( @
IsEqualTID3 = 0 )
    
BEGIN
        INSERT 
@UpgradeResult VALUES( 0, -7, 0, 0, 0, 0 )
        
SELECT * FROM @UpgradeResult 
        
RETURN        
    
END

    
DECLARE @ErrorCode INT
    SET 
@ErrorCode = 0
    
    BEGIN TRANSACTION

    
-- ى‌¼ë‹¨ ى—…ê·¸ë*ˆى‌´ë“œ ى„±ê³µ/ى‹¤يŒ¨ ى—¬ë¶€ë¥¼ ë–*ë‚کى„œ ى„±ى‍¥ى„‌ى‌€ ى‚*ى*œي•´ى£¼ى‍گ!!!
    IF( @
UgdStoneCount > 1 )
    
BEGIN
        
-- ى„±ى‍¥ى„‌ى‌ک ê°¯ىˆکê°€ 1ى‌´ىƒپى‌´ë‹¤;;; 
        
UPDATE _Items Set Data = @UgdStoneCount - 1 WHERE ID64 = @UgdStoneID64
        
IF( @@ERROR <> 0 )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -8, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN        
        
END

        SET 
@UgdStoneCount = @UgdStoneCount  -1
    END
    
ELSE
    
BEGIN
        EXEC 
@ErrorCode =  _STRG_DEL_ITEM_NoTX 1, @CharID, @UgdStoneSlot
        
IF( @ErrorCode < 0 )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -9, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN        
        
END

        SET 
@UgdStoneCount = 0
    END

    SET 
@UgdStoneCount = @UgdStoneCount - 1
    
    
IF( @UgdSuccess = 1 )
    
BEGIN
        
-- ي•´ë‹¹ ى‍¥ë¹„ ى•„ى‌´ي…œى‌„ ى—…ê·¸ë*ˆى‌´ë“œ ي•کى‍گ!!!
        IF 
NOT EXISTS ( SELECT * FROM _RefObjCommon WHERE ID = @UgdRefItemID )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -10, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN            
        
END
        
        
-- ىٹ¹ê³„ي•œ ىکµë*ˆë²¨ى‌€ 12ى‌´ي•کى‌´ë‹¤!!! (12ى°¨ ى‌´ىƒپى‌€ ىکµë*ˆë²¨ 15ê°€ ىµ‌ىک¤!!!)
        DECLARE @
MAX_OPT_LEVEL TINYINT
        SET 
@MAX_OPT_LEVEL = 15
        
IF( @UgdOptLevel > @MAX_OPT_LEVEL )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -11, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN        
        
END

        
-- ë§¤ى§پىکµى…ک ê°¯ىˆکëٹ” 12개를 ى´ˆê³¼ي•* ىˆک ى—†ë‹¤!!!
        DECLARE @
MAX_MGC_OPT_NUM TINYINT
        SET 
@MAX_OPT_LEVEL = 12
        
IF( @UgdMagParamNum > @MAX_MGC_OPT_NUM )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -12, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN        
        
END

        
-- ë¬¸ى*œê°€ ى—†ë‹¤ë©´ ي•´ë‹¹ ى•„ى‌´ي…œى‌„ ى—…ê·¸ë*ˆى‌´ë“œ ي•کى‍گ!!!
        
UPDATE _Items SET RefItemID = @UgdRefItemID, OptLevel =  @UgdOptLevel, Variance = @UgdVariance, Data = @UgdData, CreaterName = @UgdCreateName,
            
MagParamNum = @UgdMagParamNum, MagParam1 = @UgdMagParam1, MagParam2 = @UgdMagParam2, MagParam3 = @UgdMagParam3,
            
MagParam4 = @UgdMagParam4, MagParam5 = @UgdMagParam5, MagParam6 = @UgdMagParam6, MagParam7 = @UgdMagParam7, MagParam8 = @UgdMagParam8,
            
MagParam9 = @UgdMagParam9, MagParam10 = @UgdMagParam10, MagParam11 = @UgdMagParam11, MagParam12 = @UgdMagParam12
            WHERE ID64 
= @UgdEquipID64
        
IF( @@ROWCOUNT = 0 OR @@ERROR <> 0 )
        
BEGIN
            ROLLBACK TRANSACTION
            INSERT 
@UpgradeResult VALUES( 0, -13, 0, 0, 0, 0 )
            
SELECT * FROM @UpgradeResult 
            
RETURN        
        
END

        
-- يٹ¹ىˆک ى—کë¦*ى‹œë¥´ى—گ ى‌کي•´ ى¦‌ê°€ëگœ ىکµë*ˆë²¨ى‌´ ى‍ˆىœ¼ë©´ ى‚*ى*œي•´ى£¼ى‍گ!!!
        IF 
EXISTS (SELECT * FROM sysobjects WHERE Name = '_BindingOptionWithItem' AND Type = 'U' )
        
BEGIN
            DELETE _BindingOptionWithItem WHERE nItemDBID 
= @UgdEquipID64 AND bOptType = 2
        END

        
-- Type : 1 (ى•„ى‌´ي…œ ى—…ê·¸ë*ˆى‌´ë“œ), TypeID : 2 ( ى•„ى‌´ي…œ ى‚*ى*œ )
        
INSERT @UpgradeResult VALUES( 1, @UgdRefItemID, @UgdEquipSlot, 0, @UgdEquipID64, @UgdEquipSerial64 )

    
END

    
-- Type : 1 (ى•„ى‌´ي…œ ى—…ê·¸ë*ˆى‌´ë“œ), TypeID : 2 ( ى•„ى‌´ي…œ ى‚*ى*œ )
    -- 
ى„±ى‍¥ى„‌ ى‚*ى*œى—گ ëŒ€ي•œ ë،œê·¸ë¥¼ ê¸°ë،‌ي•کى‍گ!!!
    
INSERT @UpgradeResult VALUES( 2, @UgdStoneRefID, @UgdStoneSlot, @UgdStoneCount, @UgdStoneID64, @UgdStoneSerial64 )

    
COMMIT TRANSACTION

    SELECT 
* FROM @UpgradeResult 
التابل
كود PHP:
nItemDBID  bOptType  nSlot  nOptID  nOptLvl  nOptValue    nParam1  nParam2  
174    1    0    31734    1    0    32166    0
174    1    1    0    0    0    0    0
174    1    2    0    0    0    0    0
189    1    0    31738    2    0    32161    0
189    1    1    31743    1    0    32163    0
189    1    2    31755    2    0    32167    0
468    1    0    31734    1    0    32166    0
468    1    1    0    0    0    0    0
468    1    2    0    0    0    0    0
832    1    0    60046    2    0    101626    0
832    1    1    0    0    0    0    0
832    1    2    0    0    0    0    0
1171    1    0    0    0    0    0    0
1171    1    1    60045    1    0    101626    0
1171    1    2    0    0    0    0    0
1182    1    0    0    0    0    0    0
1182    1    1    0    0    0    0    0
1182    1    2    60047    3    0    101626    0
1724    1    0    31756    3    0    32167    0
1724    1    1    31751    1    0    32165    0
1724    1    2    0    0    0    0    0
1732    1    0    0    0    0    0    0
1732    1    1    31730    3    0    32159    0
1732    1    2    0    0    0    0    0
1826    1    0    31753    3    0    32165    0
1826    1    1    31755    2    0    32167    0
2556    1    0    0    0    0    0    0
2556    1    1    31739    3    0    32161    0
2556    1    2    31747    5    0    32163    0
2803    1    0    31753    3    0    32165    0
2803    1    1    31756    3    0    32167    0
2803    1    2    31739    3    0    32161    0
3088    1    0    31739    3    0    32161    0
3088    1    1    31756    3    0    32167    0
3088    1    2    31753    3    0    32165    0
3283    1    0    0    0    0    0    0
3283    1    1    0    0    0    0    0
3283    1    2    0    0    0    0    0
3725    1    0    31737    1    0    32161    0
3725    1    1    0    0    0    0    0
3725    1    2    0    0    0    0    0
4090    1    0    60046    2    0    101626    0
4090    1    1    0    0    0    0    0
4090    1    2    0    0    0    0    0
4864    1    0    31738    2    0    32161    0
4864    1    1    0    0    0    0    0
4864    1    2    0    0    0    0    0
4872    1    0    31751    1    0    32165    0
4872    1    1    0    0    0    0    0
4872    1    2    31754    1    0    32167    0
4873    1    0    0    0    0    0    0
4873    1    1    31738    2    0    32161    0
4873    1    2    31743    1    0    32163    0
4874    1    0    31737    1    0    32161    0
4874    1    1    0    0    0    0    0
4874    1    2    0    0    0    0    0
4931    1    0    0    0    0    0    0
5039    1    0    60096    1    0    101636    0
5039    1    1    0    0    0    0    0
5039    1    2    0    0    0    0    0
5394    1    2    60085    5    0    101633    0
5403    1    2    60126    1    0    101642    0
5489    1    0    0    0    0    0    0
5489    1    1    60091    1    0    101635    0
5503    1    0    60090    5    0    101634    0
5503    1    1    0    0    0    0    0
5503    1    2    0    0    0    0    0
5563    1    0    0    0    0    0    0
5563    1    1    0    0    0    0    0
5563    1    2    60123    3    0    101641    0
5775    1    0    0    0    0    0    0
5775    1    1    60097    2    0    101636    0
5775    1    2    0    0    0    0    0
103428    1    0    33061    1    0    35027    0
103428    1    1    33053    1    0    35025    0
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL 
وده التصميم بتاعه :

كود PHP:
nItemDBID    bigint    Unchecked 
bOptType    tinyint    Unchecked 
nSlot    tinyint    Unchecked 
nOptID    int    Unchecked 
nOptLvl    tinyint    Unchecked 
nOptValue    int    Unchecked 
nParam1    int    Checked 
nParam2    int    Checked 
وده كمان له علاقه بالموضوع وحاسس ان المشكله فيه مش عارف ليه :D

كود PHP:
USE [test]
GO
/****** Object:  StoredProcedure [dbo].[_STRG_DEL_ITEM_NoTX]    Script Date: 31/12/2016 12:48:10 م ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER   procedure 
[dbo].[_STRG_DEL_ITEM_NoTX]
@
DelFromPC_Inv    AS TINYINT,
@
CharID            AS BIGINT,  -- &#47588;직 큐브 추가로 인해 확장
@Slot            AS TINYINT

as
    declare @
Rvalue int
    
declare @ItemToDel bigint
    
     
if (@DelFromPC_Inv = 1)    
        
select @ItemToDel = ItemID FROM _Inventory WHERE CharID = @CharID AND Slot = @Slot    
    
else if ( @DelFromPC_Inv = 2 )  
        
select @itemToDel = ItemID FROM _InventoryForLinkedStorage WHERE LinkedItemID = @CharID AND Slot = @Slot  
    
else if ( @DelFromPC_Inv = 3 ) -- #ifdef ADD_TRADE_BAG_INVENTORY 
        
select @itemToDel = ItemID FROM _TradeBagInventory WHERE CharID = @CharID AND Slot = @Slot
    
else if ( @DelFromPC_Inv = 4 ) -- #ifdef ADD_TRADE_EQUIP_INVENTORY 
        
select @itemToDel = ItemID FROM _TradeEquipInventory WHERE CharID = @CharID AND Slot = @Slot
    
--#ifdef PET_SYSTEM_RENEWAL
    
else if(  @DelFromPC_Inv = 5 ) 
        
select @ItemToDel = ItemID FROM _EquipInvCos WHERE NewCOSID = @CharID AND Slot = @Slot        
    
--#endif // PET_SYSTEM_RENEWAL
    
else    
        
select @ItemToDel = ItemID FROM _InvCOS WHERE COSID = @CharID AND Slot = @Slot
    
    
if (@ItemToDel IS NULL or @ItemToDel = 0)
        return -
1

    
----------------------------------------
    -- &
#51320;라 이 아래쪽 순전히 펫 소환아이템 때문에 
    
-- &#46308;어간 코드이다. 분명 overhead이긴 하지만
    
-- _STRG_DEL_ITEM &#51032; 신뢰도와 게임서버 코드 복잡도
    
-- &#51613;가를 유발하지 않기 위해 어쩔 수 없는 판단이었다. T_T
    
----------------------------------------
    declare @
BoundCOS int
    
declare @RefItemID int
    select 
@RefItemID = RefItemID, @BoundCOS = Data from _Items where ID64 = @ItemToDel
    
if (@@ROWCOUNT = 0)
        return -
2

    
----------------------------------------
    -- &
#54841;시 이눔 PET 소환아이템인가?
    
----------------------------------------
    declare @
TypeID1 tinyint
    
declare @TypeID2 tinyint
    
declare @TypeID3 tinyint
    select 
@TypeID1 = TypeID1, @TypeID2 = TypeID2, @TypeID3 = TypeID3 from _RefObjCommon where ID = @RefItemID
    
if (@TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 1 )
    
begin
        
----------------------------------------
        -- &
#50670;여있는 PET 이 있으면 그넘 삭제
        
----------------------------------------
        if (@
BoundCOS <> 0)    
        
begin
            exec 
@Rvalue = _DeleteCharCOS_NoTX @BoundCOS
            
if (@Rvalue < 0)
                return @
Rvalue
        end
    end

    
----------------------------------------          
    -- &
#54841;시 이눔 LinkedStorage아이템인가?          
    
----------------------------------------          
    else if( @
TypeID1 = 3 and @TypeID2 = 2 and @TypeID3 = 3 )          
    
begin        
        
----------------------------------------          
        -- &
#50670;여있는 Storage 있으면 그넘 삭제          
        
----------------------------------------          
        if (@
BoundCOS <> 0)           
        
begin          
            
IF( NOT EXISTS( select LinkedItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel ) )        
            
BEGIN return -1000 END        
            
IF( EXISTS( select top 1 ItemID from _InventoryForLinkedStorage where LinkedItemID = @ItemToDel and ItemID <> 0 and ItemID IS NOT NULL  ) )        
            
BEGIN        
                update _ItemPool Set InUse 
= 0 from _ItemPool as IP join _InventoryForLinkedStorage as IFLS on IP.ItemID = IFLS.ItemID        
                where IFLS
.LinkedItemID = @ItemToDel AND IFLS.ItemID <> 0        
            END        
            DELETE FROM _InventoryForLinkedStorage where LinkedItemID 
= @ItemToDel        
            
IF( @@ERROR <> 0 )        
            
BEGIN return -2 END         
        end          
    end


    
-- ADD_BINDING_OPTION_INSTANCE_TABLE
     
----------------------------------------------------------  
     -- &
#49325;제 대상 아이템에 묶인 바인드 옵션 삭제
     
----------------------------------------------------------  
    if 
exists (select 1 from _BindingOptionWithItem with (nolock) where nItemDBID = @ItemToDel)
    
begin -- &#45936;이터가 들어 있다면..
        
delete from _BindingOptionWithItem where nItemDBID = @ItemToDel
        
if (@@ERROR <> 0 OR @@ROWCOUNT = 0)
        
begin
            rollback transaction
            
return -5
        end
    end
    
-- ADD_BINDING_OPTION_INSTANCE_TABLE

     
----------------------------------------------------------    
     -- &
#49836;롯 비우기    
     
----------------------------------------------------------     
     if (@
DelFromPC_Inv = 1 )    
         
update _Inventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot    
     
else if (@DelFromPC_Inv = 2 )  
         
update _InventoryForLinkedStorage SET ItemID = 0 WHERE LinkedItemID = @CharID AND Slot = @Slot   
     
else if (@DelFromPC_Inv = 3 ) -- #ifdef ADD_TRADE_BAG_INVENTORY     
         
update _TradeBagInventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot    
     
else if (@DelFromPC_Inv = 4 ) -- #ifdef ADD_TRADE_EQUIP_INVENTORY     
         
update _TradeEquipInventory SET ItemID = 0 WHERE CharID = @CharID AND Slot = @Slot
     
-- #ifdef PET_SYSTEM_RENEWAL
    
else if(  @DelFromPC_Inv = 5 )  
        
update _EquipInvCos SET ItemID = 0 WHERE NEWCOSID = @CharID AND Slot = @Slot      
    
--#endif // PET_SYSTEM_RENEWAL 
     
else  
         
update _InvCOS SET ItemID = 0 WHERE COSID = @CharID AND Slot = @Slot 

    
if (@@error <> 0 OR @@rowcount = 0)
        return -
3
    
-- SYSTEM_RENT_ITEM
    
----------------------------------------------------------  
    -- &
#49325;제 대상 아이템에 묶인 임대 정보 삭제
    
----------------------------------------------------------  
        if 
exists (select 1 from _RentItemInfo with (nolock) where nItemDBID = @ItemToDel)
        
begin
            delete from _RentItemInfo where nItemDBID 
= @ItemToDel
            
if (@@ERROR <> 0 OR @@ROWCOUNT = 0)
            
begin
                rollback transaction
                
return -6
            end
        end
    
-- SYSTEM_RENT_ITEM
    
----------------------------------------------------------
    -- &
#54644;당 아이템 삭제 
    
----------------------------------------------------------
    
exec @Rvalue = _STRG_FREE_ITEM_NoTX  @ItemToDel
    
if (@Rvalue < 0)

        return -
4

    
return 1 

_InventoryForLinkedStorage
Invalid Object Name
و
ItemID
LinkedItemID
Slot
Invaild Culmn name


كود PHP:
        IF EXISTS (SELECT * FROM sysobjects WHERE Name = '_BindingOptionWithItem' AND Type = 'U' )
        
BEGIN
            DELETE _BindingOptionWithItem WHERE nItemDBID 
= @UgdEquipID64 AND bOptType = 2
        END 
دلوقتى انا عاوز افهم انا ماشى صح ولا ده اصلاً ملهوش علاقه بالموضوع ولا في ايه بالظبط واحل المشكله ديه ازاى :D ؟
ولو حد عنده حل للمشكله يقول عليه بصرف النظر اذا كان يخص Vsro أو C-sro المهم نعرف ايه اللى بيعمل المشكله ديه البروسيدور سليم ومفهوش مشاكل وانا مش عارف صراحه ممكن تكون فين


طبعاً عارف ان معظم اللى اشتغلو على الملفات ديه عارفين الموضوع ده فقولت أعمل بيه موضوع واجيبه هنا علشان كلنا نبص بصه سوا :D واى حد عنده رأى او جرب حاجه ونفعت معاه يقولنا :)


توقيع Dev.Myth :

التعديل الأخير تم بواسطة Dev.Myth ; 31-12-2016 الساعة 02:09 PM

إعلانات google

 


يتصفح الموضوع حالياً : 1 (0 عضو و 1 زائر)
 

ضوابط المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى الردود آخر مشاركة
upgrade hodamoseba قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة 4 10-01-2017 03:49 PM
set & acc upgrade hodamoseba قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة 2 02-01-2017 04:24 AM
بخصوص Upgrade To D13 Items! shireeee قـسـم الاسـئـلـه و الاسـتـفـسـارات حـول الـلـعـبـة 6 12-09-2014 07:06 AM


الساعة الآن 03:03 AM.