الموقع العربي الاول للعبة Silkroad Online

الموقع العربي الاول للعبة Silkroad Online (https://silkroad4arab.com/vb/index.php)
-   قسم الاسئلة و الاستفسارات لعمل السيرفرات الخاصة (https://silkroad4arab.com/vb/forumdisplay.php?f=226)
-   -   ممكن مساعدة عاوز اعمل Auto EquipMent (https://silkroad4arab.com/vb/showthread.php?t=606396)

ابو ليلى 22-10-2016 09:46 PM

ممكن مساعدة عاوز اعمل Auto EquipMent
 
عاوز اعمل عندى فى السيرفر Auto EquipMent
من ديجرى 1 الى ديجرى 9 .
يدى مع كل لفل اب Full Set +5 Full Blue
استيت 40%
ممكن مساعدة

ابو ليلى 24-10-2016 03:00 AM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
محدش من المشرفين عارف الطريقة دى ولا اية؟

™ EgY_KhaN ™ 25-10-2016 04:25 PM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
أتفضل هنا http://www.silkroad4arab.com/vb/showthread.php?t=541313

اما بالنسبة للينك الي محطوط للتحميل وممسوح اتفضل ادي الكواري الي هوا حاططها في التحميل
كود:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_ADD_AUTOEQUIP_GEAR]    Script Date: 11/30/2013 23:44:41 ******/
/*
 * Purpose: Add equipment to character
 * Auto check: Will auto detect character existence, race, gender, degree, current equipment.
 * Initial release: 2013/11/30
 * How to use:
 * -
 * USE [SRO_VT_SHARD]
 * GO
 * EXEC [_ADD_AUTOEQUIP_GEAR] '<character_name>', <plus>
 * -
 * Parameters:
 *  <character_name>: duh?
 *  <plus>: duh?
 *
 * Example: EXEC [_ADD_AUTOEQUIP_GEAR] 'Mulan', 12
 * Will give: 'Mulan' (+12 100% FB) weapon/shield, equipment, and accessories
 *
 * Notes:
 * - Feel free to change anything ;)
 * - I put Nova/Star (A_RARE) suffix as default. (@GearSuffix settings, CHANGE IT)
 *
 * Important stuff:
 * - Dependecies SP (make sure they are exist): _FN_ADD_INITIAL_EQUIP, _ADD_ITEM_EXTERN, _IsExistingCharName, _STRG_DEL_ITEM_NoTX
 * - This will put new equipment to equipment slots, even if they're empty.
 * - The character MUST wear a weapon and gear (just a weapon and 1 gear, no need complete set) (to trigger detection)
 * - Shield will automatically added if the character is using 1H weapon.
 *
 * -- Witchy (Mulan)
 *
 */
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

-- Check if SP exist, if not, auto create the SP
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = '_ADD_AUTOEQUIP_GEAR')
        EXEC('CREATE PROCEDURE [dbo].[_ADD_AUTOEQUIP_GEAR] AS BEGIN SET NOCOUNT ON; END')
GO

ALTER PROCEDURE [dbo].[_ADD_AUTOEQUIP_GEAR]
        @CharName AS VARCHAR(64),
        @EQPlus AS TINYINT
AS       
        -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        -- @@@ BEGIN: SETTINGS
       
        -- CHANGE THIS! -- CHANGE THIS! -- CHANGE THIS! (if needed)

        -- (Represent ITEM_CH_BOW_9_A_RARE), change as you need it
        DECLARE @GearSuffix VARCHAR(16) = 'C_RARE'

        -- @@@ END: SETTINGS
        -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        SET NOCOUNT ON

        -- Check if character exist
        DECLARE        @isCharExist TINYINT = 0

        PRINT 'Validating Character...'
        EXEC @isCharExist = [_IsExistingCharName] @CharNameToCheck = @CharName
        IF (@isCharExist = 0)
        BEGIN
                RAISERROR('Character: %s does not exist. Sequence canceled!', 1, 16, @CharName)
                RETURN -1
        END

        -- Check character and account related information (In relation with SRO_VT_ACCOUNT)
        DECLARE @CharID INT = 0
        DECLARE @RefCharID INT = 0
        DECLARE @UserJID INT = 0
        DECLARE @GMLevel INT = 0
        DECLARE @AccountName VARCHAR(32) = ''

        -- Check if character assigned to Account ID
        PRINT 'Validating Account ID...'
        SELECT @CharID = CharID, @RefCharID = RefObjID FROM _Char WHERE CharName16 = @CharName
        SELECT @UserJID = UserJID FROM _User WHERE CharID = @CharID
        IF (@UserJID IS NULL OR @UserJID = 0)
        BEGIN
                RAISERROR('Account ID does not exist, or character: %s is not assigned to any user accounts. Sequence canceled!', 1, 16, @CharName)
                RETURN -2
        END

        -- Check character gender and race
        DECLARE @CharGender VARCHAR(1) = ''
        DECLARE @CharRace VARCHAR(2) = ''

        PRINT 'Validating race and gender...'
        SET @CharRace = CASE
                WHEN (@RefCharID BETWEEN 1907 AND 1919) OR (@RefCharID BETWEEN 1920 AND 1932) THEN 'CH'        -- Chinese (vSRO/BR110)
                WHEN (@RefCharID BETWEEN 14875 AND 14887) OR (@RefCharID BETWEEN 14888 AND 14900) THEN 'EU'        -- Euro (vSRO)
                WHEN (@RefCharID BETWEEN 14717 AND 14729) OR (@RefCharID BETWEEN 14730 AND 14742) THEN 'EU'        -- Euro (BR110)
                ELSE NULL END
        SET @CharGender = CASE
                WHEN (@RefCharID BETWEEN 1907 AND 1919) OR (@RefCharID BETWEEN 14875 AND 14887) OR (@RefCharID BETWEEN 14717 AND 14729) THEN 'M'
                WHEN (@RefCharID BETWEEN 1920 AND 1932) OR (@RefCharID BETWEEN 14888 AND 14900) OR (@RefCharID BETWEEN 14730 AND 14742) THEN 'W'
                ELSE NULL END
        PRINT 'Race code is: ' + @CharRace + ', gender code is: ' + @CharGender + '.'
        IF (@CharRace IS NULL OR @CharGender IS NULL)
        BEGIN
                RAISERROR('Invalid character race and gender info. Sequence canceled!', 1, 16, @CharName)
                RETURN -3
        END

        -- Check character level for item degree
        DECLARE @EQDegree VARCHAR(2) = ''
        DECLARE @CurLevel TINYINT = 0

        SET @CurLevel = CASE
                WHEN @CharRace = 'CH' THEN (SELECT CurLevel FROM _Char WHERE CharID = @CharID) + 1
                WHEN @CharRace = 'EU' THEN (SELECT TOP (1) [Level] FROM _CharSkillMastery WHERE CharID = @CharID ORDER BY [Level] DESC) + 1
                ELSE 0 END
        SET @EQDegree = CASE
                WHEN @CurLevel < 13 THEN '01'
                WHEN @CurLevel < 21 THEN '02'
                WHEN @CurLevel < 29 THEN '03'
                WHEN @CurLevel < 37 THEN '04'
                WHEN @CurLevel < 47 THEN '05'
                WHEN @CurLevel < 57 THEN '06'
                WHEN @CurLevel < 69 THEN '07'
                WHEN @CurLevel < 81 THEN '08'
                ELSE '09' END
        PRINT 'Character/Mastery Level: ' + CAST(@CurLevel AS VARCHAR(3)) + ', degree: ' + @EQDegree + '. (Level are current +1)'

        -- Setting up equipment
        -- Gears
        DECLARE @CodeNameHelm                VARCHAR(64) = ''
        DECLARE @CodeNameMail                VARCHAR(64) = ''
        DECLARE @CodeNameShoulder        VARCHAR(64) = ''
        DECLARE @CodeNameGauntlet        VARCHAR(64) = ''
        DECLARE @CodeNamePants                VARCHAR(64) = ''
        DECLARE @CodeNameBoots                VARCHAR(64) = ''
        DECLARE @RefHelmID                INT = 0
        DECLARE @RefMailID                INT = 0
        DECLARE @RefShoulderID                INT = 0
        DECLARE @RefGauntletID                INT = 0
        DECLARE @RefPantsID                INT = 0
        DECLARE @RefBootsID                INT = 0
        DECLARE @RefHelmLinkID                INT = 0
        DECLARE @RefMailLinkID                INT = 0
        DECLARE @RefShoulderLinkID        INT = 0
        DECLARE @RefGauntletLinkID        INT = 0
        DECLARE @RefPantsLinkID                INT = 0
        DECLARE @RefBootsLinkID                INT = 0

        -- Accessories
        DECLARE @CodeNameEarring        VARCHAR(64) = ''
        DECLARE @CodeNameNecklace        VARCHAR(64) = ''
        DECLARE @CodeNameRing                VARCHAR(64) = ''
        DECLARE @RefEarringID                INT = 0
        DECLARE @RefNecklaceID                INT = 0
        DECLARE @RefRingID                INT = 0
        DECLARE @RefEarringLinkID        INT = 0
        DECLARE @RefNecklaceLinkID        INT = 0
        DECLARE @RefRingLinkID                INT = 0

        -- Weapon and Shield
        DECLARE @CodeNameWeapon                VARCHAR(64) = ''
        DECLARE @CodeNameShield                VARCHAR(64) = ''
        DECLARE @RefWeaponID                INT = 0
        DECLARE @RefShieldID                INT = 0
        DECLARE @RefWeaponLinkID        INT = 0
        DECLARE @RefShieldLinkID        INT = 0

        -- Check for current equipped weapon/shield
        PRINT 'Validating equipped weapon...'
        DECLARE @OldWeaponID INT = (SELECT ItemID FROM _Inventory WHERE CharID = @CharID AND Slot ='6')
        IF (@OldWeaponID IS NULL OR @OldWeaponID = 0)
        BEGIN
                RAISERROR('Character: %s is not wearing any weapon. Sequence canceled!', 10, 1, @CharName)
                RETURN -4
        END
        DECLARE @RefOldWeaponID INT = (SELECT RefItemID FROM _Items WHERE ID64 = @OldWeaponID)
        DECLARE @WPClass VARCHAR(16) = ''
        SELECT @WPClass =
                CASE
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 2 THEN 'SWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 3 THEN 'BLADE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 4 THEN 'SPEAR'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 5 THEN 'TBLADE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 6 THEN 'BOW'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 7 THEN 'SWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 8 THEN 'TSWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 9 THEN 'AXE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 10 THEN 'DARKSTAFF'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 11 THEN 'TSTAFF'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 12 THEN 'CROSSBOW'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 13 THEN 'DAGGER'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 14 THEN 'HARP'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 15 THEN 'STAFF'
                END
        FROM _RefObjCommon WHERE [Service] = 1 AND ID = @RefOldWeaponID ORDER BY TypeID4 ASC
        PRINT 'Weapon is: ' + @WPClass + '.'

        -- Set no shield by default, if the weapon used is 1H, then add shield automatically.
        PRINT 'Checking if character is using shield...'
        DECLARE @useShield TINYINT = 0
        IF (@WPClass = 'SWORD' OR @WPClass = 'BLADE' OR @WPClass = 'STAFF' OR @WPClass = 'DARKSTAFF')
        BEGIN
                PRINT '- 1H weapon is used, new shield will be added.'
                SET @useShield = 1
        END       

        -- Item codes (trailing codes are from itemSuffix settings above)
        PRINT 'Validating current gear...'
        DECLARE @OldGearID INT = (SELECT TOP (1) ItemID FROM _Inventory WHERE CharID = @CharID AND ItemID > 0 AND Slot BETWEEN 0 AND 5)
        IF (@OldGearID IS NULL OR @OldGearID = 0)
        BEGIN
                RAISERROR('Character: %s is not wearing any armor. Sequence canceled!', 10, 1, @CharName)
                RETURN -5
        END
        DECLARE @RefOldGearID INT = (SELECT RefItemID FROM _Items WHERE ID64 = @OldGearID)
        DECLARE @EQClass VARCHAR(10)
        SELECT @EQClass =
                CASE
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 1 OR TypeID3 = 9) THEN 'CLOTHES'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 2 OR TypeID3 = 10) THEN 'LIGHT'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 3 OR TypeID3 = 11) THEN 'HEAVY'
                END
        FROM _RefObjCommon WHERE [Service] = 1 AND ID = @RefOldGearID ORDER BY TypeID4 ASC
        PRINT 'Gear type is: ' + @EQClass + '.'

        PRINT 'Setting up item codenames...'
        -- Gears
        SET @CodeNameHelm        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_HA_' + @GearSuffix
        SET @CodeNameMail        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_BA_' + @GearSuffix
        SET @CodeNameShoulder        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_SA_' + @GearSuffix
        SET @CodeNameGauntlet        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_AA_' + @GearSuffix
        SET @CodeNamePants        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_LA_' + @GearSuffix
        SET @CodeNameBoots        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_FA_' + @GearSuffix

        -- Accessories
        SET @CodeNameEarring        = 'ITEM_' + @CharRace + '_EARRING_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameNecklace        = 'ITEM_' + @CharRace + '_NECKLACE_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameRing        = 'ITEM_' + @CharRace + '_RING_' + @EQDegree + '_' + @GearSuffix

        -- Weapon and Shield
        SET @CodeNameWeapon        = 'ITEM_' + @CharRace + '_' + @WPClass + '_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameShield        = 'ITEM_' + @CharRace + '_SHIELD_' + @EQDegree + '_' + @GearSuffix

        -- Get Reference ID and Link ID
        PRINT 'Getting item reference ID and link...'
        -- Gears
        SELECT @RefHelmID = ID, @RefHelmLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameHelm
        SELECT @RefMailID = ID, @RefMailLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameMail
        SELECT @RefShoulderID = ID, @RefShoulderLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameShoulder
        SELECT @RefGauntletID = ID, @RefGauntletLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameGauntlet
        SELECT @RefPantsID = ID, @RefPantsLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNamePants
        SELECT @RefBootsID = ID, @RefBootsLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameBoots

        -- Accessories
        SELECT @RefEarringID = ID, @RefEarringLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameEarring
        SELECT @RefNecklaceID = ID, @RefNecklaceLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameNecklace
        SELECT @RefRingID = ID, @RefRingLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameRing

        -- Weapon and Shield
        SELECT @RefWeaponID = ID, @RefWeaponLinkID = Link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameWeapon
        SELECT @RefShieldID = ID, @RefShieldLinkID = Link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameShield

        IF (
                @RefHelmID IS NULL OR @RefHelmID = 0 OR
                @RefMailID IS NULL OR @RefMailID = 0 OR
                @RefShoulderID IS NULL OR @RefShoulderID = 0 OR
                @RefGauntletID IS NULL OR @RefGauntletID = 0 OR
                @RefPantsID IS NULL OR @RefPantsID = 0 OR
                @RefBootsID IS NULL OR @RefBootsID = 0 OR
                @RefEarringID IS NULL OR @RefEarringID = 0 OR
                @RefNecklaceID IS NULL OR @RefNecklaceID = 0 OR
                @RefRingID IS NULL OR @RefRingID = 0 OR
                @RefWeaponID IS NULL OR @RefWeaponID = 0 OR
                @RefShieldID IS NULL OR @RefShieldID = 0
        )
        BEGIN
                RAISERROR('Invalid item reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
                RETURN -6
        END
        IF (
                @RefHelmLinkID IS NULL OR @RefHelmLinkID = 0 OR
                @RefMailLinkID IS NULL OR @RefMailLinkID = 0 OR
                @RefShoulderLinkID IS NULL OR @RefShoulderLinkID = 0 OR
                @RefGauntletLinkID IS NULL OR @RefGauntletLinkID = 0 OR
                @RefPantsLinkID IS NULL OR @RefPantsLinkID = 0 OR
                @RefBootsLinkID IS NULL OR @RefBootsLinkID = 0 OR
                @RefEarringLinkID IS NULL OR @RefEarringLinkID = 0 OR
                @RefNecklaceLinkID IS NULL OR @RefNecklaceLinkID = 0 OR
                @RefRingLinkID IS NULL OR @RefRingLinkID = 0 OR
                @RefWeaponLinkID IS NULL OR @RefWeaponLinkID = 0 OR
                @RefShieldLinkID IS NULL OR @RefShieldLinkID = 0
        )
        BEGIN
                RAISERROR('Invalid link reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
                RETURN -7
        END

        -- Get durability for 'Data'
        PRINT 'Getting items durability information...'
        DECLARE @DuraHelm INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefHelmLinkID)
        DECLARE @DuraMail INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefMailLinkID)
        DECLARE @DuraShoulder INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefShoulderLinkID)
        DECLARE @DuraGauntlet INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefGauntletLinkID)
        DECLARE @DuraPants INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefPantsLinkID)
        DECLARE @DuraBoots INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefBootsLinkID)
        DECLARE @DuraWeapon INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefWeaponLinkID)
        DECLARE @DuraShield INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefShieldLinkID)

        -- Sequence begin
        BEGIN TRANSACTION

                -- Clear inventory (Just equipped items) ;)
                PRINT 'Removing equipped items...'
                DECLARE @TSlots INT = 0
                DECLARE @CharSlot INT = 0
                SELECT @TSlots = COUNT(Slot) from _Inventory WHERE CharID = @CharID
                WHILE @CharSlot <= @TSlots
                BEGIN
                        IF (@CharSlot < 13)
                        BEGIN
                                EXEC [_STRG_DEL_ITEM_NoTX] 1, @CharID, @CharSlot
                        END
                        SET @CharSlot = @CharSlot + 1
                END

                -- Add new equipment to equipment slots
                PRINT 'Adding new items...'
                DECLARE @HelmItemID64 BIGINT = 0
                DECLARE @MailItemID64 BIGINT = 0
                DECLARE @ShoulderItemID64 BIGINT = 0
                DECLARE @GauntletItemID64 BIGINT = 0
                DECLARE @PantsItemID64 BIGINT = 0
                DECLARE @BootsItemID64 BIGINT = 0

                DECLARE @EarringItemID64 BIGINT = 0
                DECLARE @NecklaceItemID64 BIGINT = 0
                DECLARE @RingLItemID64 BIGINT = 0
                DECLARE @RingRItemID64 BIGINT = 0

                DECLARE @WeaponItemID64 BIGINT = 0
                DECLARE @ShieldItemID64 BIGINT = 0

                -- Helm
                EXEC @HelmItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 0, @RefHelmID, @DuraHelm
                IF (@HelmItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -8
                END
                PRINT '- Helm equipped.'

                -- Chest
                EXEC @MailItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 1, @RefMailID, @DuraMail
                IF (@MailItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -9
                END
                PRINT '- Chest equipped.'

                -- Shoulder
                EXEC @ShoulderItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 2, @RefShoulderID, @DuraShoulder
                IF (@ShoulderItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -10
                END
                PRINT '- Shoulder equipped.'

                -- Gauntlet
                EXEC @GauntletItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 3, @RefGauntletID, @DuraGauntlet
                IF (@GauntletItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -11
                END
                PRINT '- Gauntlet equipped.'

                -- Pants
                EXEC @PantsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 4, @RefPantsID, @DuraPants
                IF (@PantsItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -12
                END
                PRINT '- Pants equipped.'

                -- Boots
                EXEC @BootsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 5, @RefBootsID, @DuraBoots
                IF (@BootsItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -13
                END
                PRINT '- Boots equipped.'

                -- Earring
                EXEC @EarringItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 9, @RefEarringID, 0
                IF (@EarringItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -14
                END
                PRINT '- Earring equipped.'

                -- Necklace
                EXEC @NecklaceItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 10, @RefNecklaceID, 0
                IF (@NecklaceItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -15
                END
                PRINT '- Necklace equipped.'

                -- Left Ring
                EXEC @RingLItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 11, @RefRingID, 0
                IF (@RingLItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -16
                END
                PRINT '- Left Ring equipped.'

                -- Right Ring
                EXEC @RingRItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 12, @RefRingID, 0
                IF (@RingRItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -17
                END
                PRINT '- Right Ring equipped.'

                -- Weapon
                EXEC @WeaponItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 6, @RefWeaponID, @DuraWeapon
                IF (@WeaponItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -18
                END
                PRINT '- Weapon equipped.'

                -- Shield
                IF (@useShield = 1)
                BEGIN
                        EXEC @ShieldItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 7, @RefShieldID, @DuraShield
                        IF (@ShieldItemID64 <= 0)
                        BEGIN
                                PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                                ROLLBACK TRANSACTION
                                RETURN -19
                        END
                        PRINT '- Shield equipped.'
                END

                -- Make 100% and FB
                -- Gears
                PRINT 'Updating gear attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Parry 60%, Durability 200%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 4, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 257698037898, MagParam5 = NULL, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @HelmItemID64 OR ID64 = @MailItemID64 OR ID64 = @ShoulderItemID64 OR ID64 = @GauntletItemID64 OR ID64 = @PantsItemID64 OR ID64 = @BootsItemID64
                PRINT '- Adding extra blue attributes to Chest: HP recovery/MP recovery 210%'
                UPDATE _Items SET MagParamNum = 5, MagParam5 = 901943132463 WHERE ID64 = @MailItemID64

                -- Accessories
                PRINT 'Updating accessory attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Freeze 20%, Electric Shock 20%, Burn 20%, Poison 20%, Zombie 20%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 1073741823, MagParamNum = 7, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 85899346100, MagParam4 = 85899346094, MagParam5 = 85899346088, MagParam6 = 85899346106, MagParam7 = 85899346112, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @EarringItemID64 OR ID64 = @NecklaceItemID64 OR ID64 = @RingLItemID64 OR ID64 = @RingRItemID64
                PRINT '- Adding extra blue attributes to Earring: CombustionProbability 50% Reduce, SleepProbability 50% Reduce'
                UPDATE _Items SET MagParamNum = 9, MagParam8 = 214748365115, MagParam9 = 214748365139 WHERE ID64 = @EarringItemID64
                PRINT '- Adding extra blue attributes to Necklace: StunProbability 50% Reduce'
                UPDATE _Items SET MagParamNum = 8, MagParam8 = 47244640547 WHERE ID64 = @NecklaceItemID64
                PRINT '- Adding extra blue attributes to Rings: DiseaseProbability 25% Reduce, FearProbability 25% Reduce'
                UPDATE _Items SET MagParamNum = 9, MagParam8 = 107374182751, MagParam9 = 107374182727  WHERE ID64 = @RingLItemID64 OR ID64 = @RingRItemID64

                -- Weapon
                PRINT 'Updating weapon attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Block 100, Attack Rate 60%, Durability 200%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 5, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 429496729714, MagParam5 = 257698037862, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @WeaponItemID64
                PRINT '- Adding extra blue attributes to Weapon: Critical 3'
                UPDATE _Items SET MagParamNum = 6, MagParam6 = 12884902155 WHERE ID64 = @WeaponItemID64

                -- Shield
                IF (@ShieldItemID64 IS NOT NULL AND @ShieldItemID64 > 0)
                BEGIN
                        PRINT 'Updating shield attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Critical 100, Durability 200%)'
                        UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 4, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 429496729726, MagParam5 = NULL, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @ShieldItemID64
                END

        COMMIT TRANSACTION
        PRINT 'Sequence complete.'

RETURN 1
-- EOF


ابو ليلى 26-10-2016 12:39 AM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
اقتباس:

المشاركة الأصلية كتبت بواسطة elmagico123 (المشاركة 5282495)
أتفضل هنا http://www.silkroad4arab.com/vb/showthread.php?t=541313

اما بالنسبة للينك الي محطوط للتحميل وممسوح اتفضل ادي الكواري الي هوا حاططها في التحميل
كود:

USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[_ADD_AUTOEQUIP_GEAR]    Script Date: 11/30/2013 23:44:41 ******/
/*
 * Purpose: Add equipment to character
 * Auto check: Will auto detect character existence, race, gender, degree, current equipment.
 * Initial release: 2013/11/30
 * How to use:
 * -
 * USE [SRO_VT_SHARD]
 * GO
 * EXEC [_ADD_AUTOEQUIP_GEAR] '<character_name>', <plus>
 * -
 * Parameters:
 *  <character_name>: duh?
 *  <plus>: duh?
 *
 * Example: EXEC [_ADD_AUTOEQUIP_GEAR] 'Mulan', 12
 * Will give: 'Mulan' (+12 100% FB) weapon/shield, equipment, and accessories
 *
 * Notes:
 * - Feel free to change anything ;)
 * - I put Nova/Star (A_RARE) suffix as default. (@GearSuffix settings, CHANGE IT)
 *
 * Important stuff:
 * - Dependecies SP (make sure they are exist): _FN_ADD_INITIAL_EQUIP, _ADD_ITEM_EXTERN, _IsExistingCharName, _STRG_DEL_ITEM_NoTX
 * - This will put new equipment to equipment slots, even if they're empty.
 * - The character MUST wear a weapon and gear (just a weapon and 1 gear, no need complete set) (to trigger detection)
 * - Shield will automatically added if the character is using 1H weapon.
 *
 * -- Witchy (Mulan)
 *
 */
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO

-- Check if SP exist, if not, auto create the SP
IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = '_ADD_AUTOEQUIP_GEAR')
        EXEC('CREATE PROCEDURE [dbo].[_ADD_AUTOEQUIP_GEAR] AS BEGIN SET NOCOUNT ON; END')
GO

ALTER PROCEDURE [dbo].[_ADD_AUTOEQUIP_GEAR]
        @CharName AS VARCHAR(64),
        @EQPlus AS TINYINT
AS       
        -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
        -- @@@ BEGIN: SETTINGS
       
        -- CHANGE THIS! -- CHANGE THIS! -- CHANGE THIS! (if needed)

        -- (Represent ITEM_CH_BOW_9_A_RARE), change as you need it
        DECLARE @GearSuffix VARCHAR(16) = 'C_RARE'

        -- @@@ END: SETTINGS
        -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

        SET NOCOUNT ON

        -- Check if character exist
        DECLARE        @isCharExist TINYINT = 0

        PRINT 'Validating Character...'
        EXEC @isCharExist = [_IsExistingCharName] @CharNameToCheck = @CharName
        IF (@isCharExist = 0)
        BEGIN
                RAISERROR('Character: %s does not exist. Sequence canceled!', 1, 16, @CharName)
                RETURN -1
        END

        -- Check character and account related information (In relation with SRO_VT_ACCOUNT)
        DECLARE @CharID INT = 0
        DECLARE @RefCharID INT = 0
        DECLARE @UserJID INT = 0
        DECLARE @GMLevel INT = 0
        DECLARE @AccountName VARCHAR(32) = ''

        -- Check if character assigned to Account ID
        PRINT 'Validating Account ID...'
        SELECT @CharID = CharID, @RefCharID = RefObjID FROM _Char WHERE CharName16 = @CharName
        SELECT @UserJID = UserJID FROM _User WHERE CharID = @CharID
        IF (@UserJID IS NULL OR @UserJID = 0)
        BEGIN
                RAISERROR('Account ID does not exist, or character: %s is not assigned to any user accounts. Sequence canceled!', 1, 16, @CharName)
                RETURN -2
        END

        -- Check character gender and race
        DECLARE @CharGender VARCHAR(1) = ''
        DECLARE @CharRace VARCHAR(2) = ''

        PRINT 'Validating race and gender...'
        SET @CharRace = CASE
                WHEN (@RefCharID BETWEEN 1907 AND 1919) OR (@RefCharID BETWEEN 1920 AND 1932) THEN 'CH'        -- Chinese (vSRO/BR110)
                WHEN (@RefCharID BETWEEN 14875 AND 14887) OR (@RefCharID BETWEEN 14888 AND 14900) THEN 'EU'        -- Euro (vSRO)
                WHEN (@RefCharID BETWEEN 14717 AND 14729) OR (@RefCharID BETWEEN 14730 AND 14742) THEN 'EU'        -- Euro (BR110)
                ELSE NULL END
        SET @CharGender = CASE
                WHEN (@RefCharID BETWEEN 1907 AND 1919) OR (@RefCharID BETWEEN 14875 AND 14887) OR (@RefCharID BETWEEN 14717 AND 14729) THEN 'M'
                WHEN (@RefCharID BETWEEN 1920 AND 1932) OR (@RefCharID BETWEEN 14888 AND 14900) OR (@RefCharID BETWEEN 14730 AND 14742) THEN 'W'
                ELSE NULL END
        PRINT 'Race code is: ' + @CharRace + ', gender code is: ' + @CharGender + '.'
        IF (@CharRace IS NULL OR @CharGender IS NULL)
        BEGIN
                RAISERROR('Invalid character race and gender info. Sequence canceled!', 1, 16, @CharName)
                RETURN -3
        END

        -- Check character level for item degree
        DECLARE @EQDegree VARCHAR(2) = ''
        DECLARE @CurLevel TINYINT = 0

        SET @CurLevel = CASE
                WHEN @CharRace = 'CH' THEN (SELECT CurLevel FROM _Char WHERE CharID = @CharID) + 1
                WHEN @CharRace = 'EU' THEN (SELECT TOP (1) [Level] FROM _CharSkillMastery WHERE CharID = @CharID ORDER BY [Level] DESC) + 1
                ELSE 0 END
        SET @EQDegree = CASE
                WHEN @CurLevel < 13 THEN '01'
                WHEN @CurLevel < 21 THEN '02'
                WHEN @CurLevel < 29 THEN '03'
                WHEN @CurLevel < 37 THEN '04'
                WHEN @CurLevel < 47 THEN '05'
                WHEN @CurLevel < 57 THEN '06'
                WHEN @CurLevel < 69 THEN '07'
                WHEN @CurLevel < 81 THEN '08'
                ELSE '09' END
        PRINT 'Character/Mastery Level: ' + CAST(@CurLevel AS VARCHAR(3)) + ', degree: ' + @EQDegree + '. (Level are current +1)'

        -- Setting up equipment
        -- Gears
        DECLARE @CodeNameHelm                VARCHAR(64) = ''
        DECLARE @CodeNameMail                VARCHAR(64) = ''
        DECLARE @CodeNameShoulder        VARCHAR(64) = ''
        DECLARE @CodeNameGauntlet        VARCHAR(64) = ''
        DECLARE @CodeNamePants                VARCHAR(64) = ''
        DECLARE @CodeNameBoots                VARCHAR(64) = ''
        DECLARE @RefHelmID                INT = 0
        DECLARE @RefMailID                INT = 0
        DECLARE @RefShoulderID                INT = 0
        DECLARE @RefGauntletID                INT = 0
        DECLARE @RefPantsID                INT = 0
        DECLARE @RefBootsID                INT = 0
        DECLARE @RefHelmLinkID                INT = 0
        DECLARE @RefMailLinkID                INT = 0
        DECLARE @RefShoulderLinkID        INT = 0
        DECLARE @RefGauntletLinkID        INT = 0
        DECLARE @RefPantsLinkID                INT = 0
        DECLARE @RefBootsLinkID                INT = 0

        -- Accessories
        DECLARE @CodeNameEarring        VARCHAR(64) = ''
        DECLARE @CodeNameNecklace        VARCHAR(64) = ''
        DECLARE @CodeNameRing                VARCHAR(64) = ''
        DECLARE @RefEarringID                INT = 0
        DECLARE @RefNecklaceID                INT = 0
        DECLARE @RefRingID                INT = 0
        DECLARE @RefEarringLinkID        INT = 0
        DECLARE @RefNecklaceLinkID        INT = 0
        DECLARE @RefRingLinkID                INT = 0

        -- Weapon and Shield
        DECLARE @CodeNameWeapon                VARCHAR(64) = ''
        DECLARE @CodeNameShield                VARCHAR(64) = ''
        DECLARE @RefWeaponID                INT = 0
        DECLARE @RefShieldID                INT = 0
        DECLARE @RefWeaponLinkID        INT = 0
        DECLARE @RefShieldLinkID        INT = 0

        -- Check for current equipped weapon/shield
        PRINT 'Validating equipped weapon...'
        DECLARE @OldWeaponID INT = (SELECT ItemID FROM _Inventory WHERE CharID = @CharID AND Slot ='6')
        IF (@OldWeaponID IS NULL OR @OldWeaponID = 0)
        BEGIN
                RAISERROR('Character: %s is not wearing any weapon. Sequence canceled!', 10, 1, @CharName)
                RETURN -4
        END
        DECLARE @RefOldWeaponID INT = (SELECT RefItemID FROM _Items WHERE ID64 = @OldWeaponID)
        DECLARE @WPClass VARCHAR(16) = ''
        SELECT @WPClass =
                CASE
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 2 THEN 'SWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 3 THEN 'BLADE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 4 THEN 'SPEAR'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 5 THEN 'TBLADE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 6 THEN 'BOW'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 7 THEN 'SWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 8 THEN 'TSWORD'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 9 THEN 'AXE'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 10 THEN 'DARKSTAFF'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 11 THEN 'TSTAFF'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 12 THEN 'CROSSBOW'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 13 THEN 'DAGGER'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 14 THEN 'HARP'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND TypeID3 = 6 AND TypeID4 = 15 THEN 'STAFF'
                END
        FROM _RefObjCommon WHERE [Service] = 1 AND ID = @RefOldWeaponID ORDER BY TypeID4 ASC
        PRINT 'Weapon is: ' + @WPClass + '.'

        -- Set no shield by default, if the weapon used is 1H, then add shield automatically.
        PRINT 'Checking if character is using shield...'
        DECLARE @useShield TINYINT = 0
        IF (@WPClass = 'SWORD' OR @WPClass = 'BLADE' OR @WPClass = 'STAFF' OR @WPClass = 'DARKSTAFF')
        BEGIN
                PRINT '- 1H weapon is used, new shield will be added.'
                SET @useShield = 1
        END       

        -- Item codes (trailing codes are from itemSuffix settings above)
        PRINT 'Validating current gear...'
        DECLARE @OldGearID INT = (SELECT TOP (1) ItemID FROM _Inventory WHERE CharID = @CharID AND ItemID > 0 AND Slot BETWEEN 0 AND 5)
        IF (@OldGearID IS NULL OR @OldGearID = 0)
        BEGIN
                RAISERROR('Character: %s is not wearing any armor. Sequence canceled!', 10, 1, @CharName)
                RETURN -5
        END
        DECLARE @RefOldGearID INT = (SELECT RefItemID FROM _Items WHERE ID64 = @OldGearID)
        DECLARE @EQClass VARCHAR(10)
        SELECT @EQClass =
                CASE
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 1 OR TypeID3 = 9) THEN 'CLOTHES'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 2 OR TypeID3 = 10) THEN 'LIGHT'
                        WHEN TypeID1 = 3 AND TypeID2 = 1 AND (TypeID3 = 3 OR TypeID3 = 11) THEN 'HEAVY'
                END
        FROM _RefObjCommon WHERE [Service] = 1 AND ID = @RefOldGearID ORDER BY TypeID4 ASC
        PRINT 'Gear type is: ' + @EQClass + '.'

        PRINT 'Setting up item codenames...'
        -- Gears
        SET @CodeNameHelm        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_HA_' + @GearSuffix
        SET @CodeNameMail        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_BA_' + @GearSuffix
        SET @CodeNameShoulder        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_SA_' + @GearSuffix
        SET @CodeNameGauntlet        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_AA_' + @GearSuffix
        SET @CodeNamePants        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_LA_' + @GearSuffix
        SET @CodeNameBoots        = 'ITEM_' + @CharRace + '_' + @CharGender + '_' + @EQClass + '_' + @EQDegree + '_FA_' + @GearSuffix

        -- Accessories
        SET @CodeNameEarring        = 'ITEM_' + @CharRace + '_EARRING_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameNecklace        = 'ITEM_' + @CharRace + '_NECKLACE_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameRing        = 'ITEM_' + @CharRace + '_RING_' + @EQDegree + '_' + @GearSuffix

        -- Weapon and Shield
        SET @CodeNameWeapon        = 'ITEM_' + @CharRace + '_' + @WPClass + '_' + @EQDegree + '_' + @GearSuffix
        SET @CodeNameShield        = 'ITEM_' + @CharRace + '_SHIELD_' + @EQDegree + '_' + @GearSuffix

        -- Get Reference ID and Link ID
        PRINT 'Getting item reference ID and link...'
        -- Gears
        SELECT @RefHelmID = ID, @RefHelmLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameHelm
        SELECT @RefMailID = ID, @RefMailLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameMail
        SELECT @RefShoulderID = ID, @RefShoulderLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameShoulder
        SELECT @RefGauntletID = ID, @RefGauntletLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameGauntlet
        SELECT @RefPantsID = ID, @RefPantsLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNamePants
        SELECT @RefBootsID = ID, @RefBootsLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameBoots

        -- Accessories
        SELECT @RefEarringID = ID, @RefEarringLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameEarring
        SELECT @RefNecklaceID = ID, @RefNecklaceLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameNecklace
        SELECT @RefRingID = ID, @RefRingLinkID = link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameRing

        -- Weapon and Shield
        SELECT @RefWeaponID = ID, @RefWeaponLinkID = Link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameWeapon
        SELECT @RefShieldID = ID, @RefShieldLinkID = Link FROM _RefObjCommon WHERE [Service] = 1 AND CodeName128 = @CodeNameShield

        IF (
                @RefHelmID IS NULL OR @RefHelmID = 0 OR
                @RefMailID IS NULL OR @RefMailID = 0 OR
                @RefShoulderID IS NULL OR @RefShoulderID = 0 OR
                @RefGauntletID IS NULL OR @RefGauntletID = 0 OR
                @RefPantsID IS NULL OR @RefPantsID = 0 OR
                @RefBootsID IS NULL OR @RefBootsID = 0 OR
                @RefEarringID IS NULL OR @RefEarringID = 0 OR
                @RefNecklaceID IS NULL OR @RefNecklaceID = 0 OR
                @RefRingID IS NULL OR @RefRingID = 0 OR
                @RefWeaponID IS NULL OR @RefWeaponID = 0 OR
                @RefShieldID IS NULL OR @RefShieldID = 0
        )
        BEGIN
                RAISERROR('Invalid item reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
                RETURN -6
        END
        IF (
                @RefHelmLinkID IS NULL OR @RefHelmLinkID = 0 OR
                @RefMailLinkID IS NULL OR @RefMailLinkID = 0 OR
                @RefShoulderLinkID IS NULL OR @RefShoulderLinkID = 0 OR
                @RefGauntletLinkID IS NULL OR @RefGauntletLinkID = 0 OR
                @RefPantsLinkID IS NULL OR @RefPantsLinkID = 0 OR
                @RefBootsLinkID IS NULL OR @RefBootsLinkID = 0 OR
                @RefEarringLinkID IS NULL OR @RefEarringLinkID = 0 OR
                @RefNecklaceLinkID IS NULL OR @RefNecklaceLinkID = 0 OR
                @RefRingLinkID IS NULL OR @RefRingLinkID = 0 OR
                @RefWeaponLinkID IS NULL OR @RefWeaponLinkID = 0 OR
                @RefShieldLinkID IS NULL OR @RefShieldLinkID = 0
        )
        BEGIN
                RAISERROR('Invalid link reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
                RETURN -7
        END

        -- Get durability for 'Data'
        PRINT 'Getting items durability information...'
        DECLARE @DuraHelm INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefHelmLinkID)
        DECLARE @DuraMail INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefMailLinkID)
        DECLARE @DuraShoulder INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefShoulderLinkID)
        DECLARE @DuraGauntlet INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefGauntletLinkID)
        DECLARE @DuraPants INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefPantsLinkID)
        DECLARE @DuraBoots INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefBootsLinkID)
        DECLARE @DuraWeapon INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefWeaponLinkID)
        DECLARE @DuraShield INT = (SELECT Dur_L FROM _RefObjItem WHERE ID = @RefShieldLinkID)

        -- Sequence begin
        BEGIN TRANSACTION

                -- Clear inventory (Just equipped items) ;)
                PRINT 'Removing equipped items...'
                DECLARE @TSlots INT = 0
                DECLARE @CharSlot INT = 0
                SELECT @TSlots = COUNT(Slot) from _Inventory WHERE CharID = @CharID
                WHILE @CharSlot <= @TSlots
                BEGIN
                        IF (@CharSlot < 13)
                        BEGIN
                                EXEC [_STRG_DEL_ITEM_NoTX] 1, @CharID, @CharSlot
                        END
                        SET @CharSlot = @CharSlot + 1
                END

                -- Add new equipment to equipment slots
                PRINT 'Adding new items...'
                DECLARE @HelmItemID64 BIGINT = 0
                DECLARE @MailItemID64 BIGINT = 0
                DECLARE @ShoulderItemID64 BIGINT = 0
                DECLARE @GauntletItemID64 BIGINT = 0
                DECLARE @PantsItemID64 BIGINT = 0
                DECLARE @BootsItemID64 BIGINT = 0

                DECLARE @EarringItemID64 BIGINT = 0
                DECLARE @NecklaceItemID64 BIGINT = 0
                DECLARE @RingLItemID64 BIGINT = 0
                DECLARE @RingRItemID64 BIGINT = 0

                DECLARE @WeaponItemID64 BIGINT = 0
                DECLARE @ShieldItemID64 BIGINT = 0

                -- Helm
                EXEC @HelmItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 0, @RefHelmID, @DuraHelm
                IF (@HelmItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -8
                END
                PRINT '- Helm equipped.'

                -- Chest
                EXEC @MailItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 1, @RefMailID, @DuraMail
                IF (@MailItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -9
                END
                PRINT '- Chest equipped.'

                -- Shoulder
                EXEC @ShoulderItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 2, @RefShoulderID, @DuraShoulder
                IF (@ShoulderItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -10
                END
                PRINT '- Shoulder equipped.'

                -- Gauntlet
                EXEC @GauntletItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 3, @RefGauntletID, @DuraGauntlet
                IF (@GauntletItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -11
                END
                PRINT '- Gauntlet equipped.'

                -- Pants
                EXEC @PantsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 4, @RefPantsID, @DuraPants
                IF (@PantsItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -12
                END
                PRINT '- Pants equipped.'

                -- Boots
                EXEC @BootsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 5, @RefBootsID, @DuraBoots
                IF (@BootsItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -13
                END
                PRINT '- Boots equipped.'

                -- Earring
                EXEC @EarringItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 9, @RefEarringID, 0
                IF (@EarringItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -14
                END
                PRINT '- Earring equipped.'

                -- Necklace
                EXEC @NecklaceItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 10, @RefNecklaceID, 0
                IF (@NecklaceItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -15
                END
                PRINT '- Necklace equipped.'

                -- Left Ring
                EXEC @RingLItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 11, @RefRingID, 0
                IF (@RingLItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -16
                END
                PRINT '- Left Ring equipped.'

                -- Right Ring
                EXEC @RingRItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 12, @RefRingID, 0
                IF (@RingRItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -17
                END
                PRINT '- Right Ring equipped.'

                -- Weapon
                EXEC @WeaponItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 6, @RefWeaponID, @DuraWeapon
                IF (@WeaponItemID64 <= 0)
                BEGIN
                        PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                        ROLLBACK TRANSACTION
                        RETURN -18
                END
                PRINT '- Weapon equipped.'

                -- Shield
                IF (@useShield = 1)
                BEGIN
                        EXEC @ShieldItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 7, @RefShieldID, @DuraShield
                        IF (@ShieldItemID64 <= 0)
                        BEGIN
                                PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                                ROLLBACK TRANSACTION
                                RETURN -19
                        END
                        PRINT '- Shield equipped.'
                END

                -- Make 100% and FB
                -- Gears
                PRINT 'Updating gear attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Parry 60%, Durability 200%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 4, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 257698037898, MagParam5 = NULL, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @HelmItemID64 OR ID64 = @MailItemID64 OR ID64 = @ShoulderItemID64 OR ID64 = @GauntletItemID64 OR ID64 = @PantsItemID64 OR ID64 = @BootsItemID64
                PRINT '- Adding extra blue attributes to Chest: HP recovery/MP recovery 210%'
                UPDATE _Items SET MagParamNum = 5, MagParam5 = 901943132463 WHERE ID64 = @MailItemID64

                -- Accessories
                PRINT 'Updating accessory attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Freeze 20%, Electric Shock 20%, Burn 20%, Poison 20%, Zombie 20%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 1073741823, MagParamNum = 7, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 85899346100, MagParam4 = 85899346094, MagParam5 = 85899346088, MagParam6 = 85899346106, MagParam7 = 85899346112, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @EarringItemID64 OR ID64 = @NecklaceItemID64 OR ID64 = @RingLItemID64 OR ID64 = @RingRItemID64
                PRINT '- Adding extra blue attributes to Earring: CombustionProbability 50% Reduce, SleepProbability 50% Reduce'
                UPDATE _Items SET MagParamNum = 9, MagParam8 = 214748365115, MagParam9 = 214748365139 WHERE ID64 = @EarringItemID64
                PRINT '- Adding extra blue attributes to Necklace: StunProbability 50% Reduce'
                UPDATE _Items SET MagParamNum = 8, MagParam8 = 47244640547 WHERE ID64 = @NecklaceItemID64
                PRINT '- Adding extra blue attributes to Rings: DiseaseProbability 25% Reduce, FearProbability 25% Reduce'
                UPDATE _Items SET MagParamNum = 9, MagParam8 = 107374182751, MagParam9 = 107374182727  WHERE ID64 = @RingLItemID64 OR ID64 = @RingRItemID64

                -- Weapon
                PRINT 'Updating weapon attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Block 100, Attack Rate 60%, Durability 200%)'
                UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 5, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 429496729714, MagParam5 = 257698037862, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @WeaponItemID64
                PRINT '- Adding extra blue attributes to Weapon: Critical 3'
                UPDATE _Items SET MagParamNum = 6, MagParam6 = 12884902155 WHERE ID64 = @WeaponItemID64

                -- Shield
                IF (@ShieldItemID64 IS NOT NULL AND @ShieldItemID64 > 0)
                BEGIN
                        PRINT 'Updating shield attributes to +' + CAST(@EQPlus AS VARCHAR(2)) + ' FB (Str/Int 7, Critical 100, Durability 200%)'
                        UPDATE _Items SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 4, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 429496729726, MagParam5 = NULL, MagParam6 = NULL, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = @ShieldItemID64
                END

        COMMIT TRANSACTION
        PRINT 'Sequence complete.'

RETURN 1
-- EOF



اولا شكرا حضرتك تعبتك معاية
ثانيا فى جزء اانا مش فاهمو فين الاكواد اللى بيقول عليها عشان احطها فى الميديا
دة الجزء اللى نش فهمو
http://b.top4top.net/p_298j90e21.png

™ EgY_KhaN ™ 26-10-2016 11:45 PM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
دي اسكرول الابجريد ودول السطرين بتوعها في الداتابيز هتضيفهم في الداتا والميديا زيها زي اي اسكرول تانية

ابو ليلى 02-11-2016 01:34 AM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
حضرتك انا عملت زى الشرح وخد الاكواد وعملت نيو كويرى ودوست f5ادانى الايرور دة المفروض انو يضاف فى ال refobjcomman & refobjitme

http://www5.0zz0.com/2016/11/02/01/578336591.png


http://www5.0zz0.com/2016/11/02/01/578336591.png

Dev.Ri3o 02-11-2016 01:53 AM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
دوس Click يمين على ال RefObjCommon وبعد كدة Design واعمل Identity ON للعمود بتاع ال ID

ابو ليلى 02-11-2016 11:07 PM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
تمام حليت المشكلة بس دلوقتى انا لما عملت اللى فى الموضوع وكلو تمام ومفيش اى مشكلة جيت بفتح وبجرب مفيش اى حاجة حصلت معاية


Dev.Ri3o 02-11-2016 11:18 PM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
اعمل ال Procedures اللى موجودة فى الموضع و ال Queries وبالنسبة لل Scroll ضيف سطر ال Itemdata_xxxx الاول وبعد كدة اضرب ال Scroll هتلاقى ال Equipment جالك واتأكد انك كاتب ID ال Scroll الصح فى ال Procedure

Dev.Ri3o 04-11-2016 09:12 PM

رد: ممكن مساعدة عاوز اعمل Auto EquipMent
 
##


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

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.