Kayıt Ol
[-]
monetization_on Reklam Alanı
Reklam vermek istiyorum?

GM'ler için Auto-Equipment Sistemi


view_headline Konu
12.06.2016, Saat: 13:00
#1
by_hero
by_hero
Konuları:
4
Yorumları:
22
Kayıt Tarihi:
10.06.2016
Rep Puanı:
0
verified_user Acemi Üye
GM'ler için Auto-Equipment Sistemi
Prosedür ; 

Kod:
USE [SRO_VT_SHARD]
GO
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_GM_GEAR')
    EXEC('CREATE PROCEDURE [SRO_VT_SHARD].[dbo].[_ADD_GM_GEAR] AS BEGIN SET NOCOUNT ON; END')
GO

CREATE PROCEDURE [dbo].[_ADD_GM_GEAR]
    @CharName AS VARCHAR(64),
    @EQClass AS VARCHAR(16),
    @EQDegree AS VARCHAR(2),
    @EQPlus AS tinyINT
AS
    /* Update 2013/11/05 */
    -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    -- @@@ BEGIN: SETTINGS
    
    -- CHANGE THIS! -- CHANGE THIS! -- CHANGE THIS! (if needed)

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

    -- (Represent ITEM_ETC_AVATAR_W_GM_UNIFORM), change as you need it
    DECLARE @uniSuffix VARCHAR(16) = 'GM_UNIFORM'

    -- (Represent ITEM_MALL_AVATAR_W_NASRUN_S_BLUE), change as you need it
    DECLARE @DSSuffix VARCHAR(16) = 'NASRUN_S_BLUE'

    -- Represent custom title, change as you need it
    DECLARE @HwanLevel TINYINT = 9

    -- Change these if you want
    DECLARE @Strength INT = 10000
    DECLARE @Intellect INT = 10000
    DECLARE @RemainGold INT = 1000000000
    DECLARE @RemainSkillPoint INT = 15000000
    DECLARE @InventorySize INT = 93

    -- Gift Silk
    DECLARE @GiftSilk INT = 1000

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

    SET NOCOUNT ON

    -- Check if character exist
    DECLARE    @isCharExist TINYINT

    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
    DECLARE @RefCharID INT
    DECLARE @UserJID INT
    DECLARE @GMLevel INT
    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 GM levels (CHANGE THIS CONDITION if needed)
    PRINT 'Validating GM Level...'
    SELECT @GMLevel = sec_primary, @AccountName = StrUserID FROM [SRO_VT_ACCOUNT].[dbo].[TB_User] WHERE JID = @UserJID
    IF (@GMLevel IS NULL OR (@GMLevel > 6 AND @GMLevel < 10))
    BEGIN
        RAISERROR('Account ID associated with this char: %s, does not have GM prvileges. Sequence canceled!', 1, 16, @AccountName)
        RETURN -3
    END

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

    PRINT 'Validating race and gender...'
    IF (@RefCharID BETWEEN 1907 AND 1919) -- Chinesse Male
    BEGIN
        SET @CharRace = 'CH'
        SET @CharGender = 'M'
    END
    IF (@RefCharID BETWEEN 1920 AND 1932) -- Chinesse Female
    BEGIN
        SET @CharRace = 'CH'
        SET @CharGender = 'W'
    END
    IF (@RefCharID BETWEEN 14875 AND 14887) -- European Male
    BEGIN
        SET @CharRace = 'EU'
        SET @CharGender = 'M'
    END
    IF (@RefCharID BETWEEN 14888 AND 14900) -- European Female
    BEGIN
        SET @CharRace = 'EU'
        SET @CharGender = 'W'
    END
    PRINT 'Race code is: ' + @CharRace + ', gender code is: ' + @CharGender + '.'

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

    -- Accessories
    DECLARE @CodeNameEarring    VARCHAR(256)
    DECLARE @CodeNameNecklace    VARCHAR(256)
    DECLARE @CodeNameRing        VARCHAR(256)
    DECLARE @RefEarringID        INT
    DECLARE @RefNecklaceID        INT
    DECLARE @RefRingID        INT
    DECLARE @RefEarringLinkID    INT
    DECLARE @RefNecklaceLinkID    INT
    DECLARE @RefRingLinkID        INT

    -- Weapon and Shield
    DECLARE @CodeNameWeapon        VARCHAR(256)
    DECLARE @CodeNameShield        VARCHAR(256)
    DECLARE @RefWeaponID        INT
    DECLARE @RefShieldID        INT
    DECLARE @RefWeaponLinkID    INT
    DECLARE @RefShieldLinkID    INT

    -- GM Uniform + Devil Spirit
    DECLARE @CodeNameUniform    VARCHAR(256)
    DECLARE @CodeNameDS        VARCHAR(256)
    DECLARE @RefUniformID        INT
    DECLARE @RefDSID        INT
    DECLARE @RefUniformLinkID    INT
    DECLARE @RefDSLinkID        INT

    /* Update 2013/11/05 */
    -- Check for current equipped weapon/shield
    PRINT 'Validating equipped weapon...'
    DECLARE @OldWeaponID INT = (SELECT ItemID FROM [_Inventory] WHERE CharID=(SELECT CharID FROM [_Char] 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 TypeID4 = 2 THEN 'SWORD'
            WHEN TypeID4 = 3 THEN 'BLADE'
            WHEN TypeID4 = 4 THEN 'SPEAR'
            WHEN TypeID4 = 5 THEN 'TBLADE'
            WHEN TypeID4 = 6 THEN 'BOW'
            WHEN TypeID4 = 7 THEN 'SWORD'
            WHEN TypeID4 = 8 THEN 'TSWORD'
            WHEN TypeID4 = 9 THEN 'AXE'
            WHEN TypeID4 = 10 THEN 'DARKSTAFF'
            WHEN TypeID4 = 11 THEN 'TSTAFF'
            WHEN TypeID4 = 12 THEN 'CROSSBOW'
            WHEN TypeID4 = 13 THEN 'DAGGER'
            WHEN TypeID4 = 14 THEN 'HARP'
            WHEN TypeID4 = 15 THEN 'STAFF'
        END
    FROM [_RefObjCommon] WHERE [Service] = 1 AND ID = @RefOldWeaponID ORDER BY TypeID4 ASC

    /* Update 2013/11/05 */
    -- 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')
    BEGIN
        PRINT '- 1H weapon is used, new shield will be added.'
        SET @useShield = 1
    END    

    /* Update 2013/11/05 */
    -- Item codes (trailing codes are from itemSuffix settings above)
    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

    -- GM Uniform + Devil Spirit
    SET @CodeNameUniform    = 'ITEM_ETC_AVATAR_' + @CharGender + '_' + @uniSuffix
    SET @CodeNameDS        = 'ITEM_MALL_AVATAR_' + @CharGender + '_' + @DSSuffix

    -- 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

    -- GM Uniform + Devil Spirit
    SELECT @RefUniformID = ID, @RefUniformLinkID = link FROM [_RefObjCommon] WHERE [Service] = 1 AND CodeName128 = @CodeNameUniform
    SELECT @RefDSID    = ID, @RefDSLinkID = link FROM [_RefObjCommon] WHERE [Service] = 1 AND CodeName128 = @CodeNameDS

    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 OR
        @RefUniformID IS NULL OR @RefUniformID = 0 OR
        @RefDSID IS NULL OR @RefDSID = 0
    )
    BEGIN
        RAISERROR('Invalid item reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
        RETURN -5
    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 OR
        @RefUniformLinkID IS NULL OR @RefUniformLinkID = 0 OR
        @RefDSLinkID IS NULL OR @RefDSLinkID = 0
    )
    BEGIN
        RAISERROR('Invalid link reference ID, check item codename (degree parameter or item suffix setting). Sequence canceled!', 1, 16)
        RETURN -6
    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)

    /* Update 2013/11/05 */
    -- Clear inventory (Just equipped items) ;)
    PRINT 'Removing equipped items...'
    DECLARE @TSlots INT
    DECLARE @CharSlot INT
    SET @CharSlot = 0
    SELECT @TSlots = COUNT(Slot) from _Inventory WHERE CharID = @CharID
    WHILE @CharSlot <= @TSlots
    BEGIN
        -- IF (@CharSlot < 6 OR (@CharSlot > 7 AND @CharSlot < 13))
        -- IF (@CharSlot < 13)
        -- BEGIN
            EXEC [_STRG_DEL_ITEM_NoTX] 1, @CharID, @CharSlot
        -- END
        SET @CharSlot = @CharSlot + 1
    END

    -- Sequence begin
    BEGIN TRANSACTION
        PRINT 'Adding new items...'

        -- Add other stuff (make sure they\'re exist in database and Media)
        EXEC [_ADD_ITEM_EXTERN] @CharName, 'ITEM_MALL_MOVE_SPEED_UP_50', 50, 0
        EXEC [_ADD_ITEM_EXTERN] @CharName, 'ITEM_MALL_REVERSE_RETURN_SCROLL', 50, 0
        EXEC [_ADD_ITEM_EXTERN] @CharName, 'ITEM_MALL_RETURN_SCROLL_HIGH_SPEED', 50, 0
        EXEC [_ADD_ITEM_EXTERN] @CharName, 'ITEM_COS_P_GGLIDER_SCROLL', 1, 0
        PRINT '- Cool stuff added to inventory.'

        -- Add new equipment to equipment slots
        DECLARE @HelmItemID64 BIGINT
        DECLARE @MailItemID64 BIGINT
        DECLARE @ShoulderItemID64 BIGINT
        DECLARE @GauntletItemID64 BIGINT
        DECLARE @PantsItemID64 BIGINT
        DECLARE @BootsItemID64 BIGINT

        DECLARE @EarringItemID64 BIGINT
        DECLARE @NecklaceItemID64 BIGINT
        DECLARE @RingLItemID64 BIGINT
        DECLARE @RingRItemID64 BIGINT

        DECLARE @WeaponItemID64 BIGINT
        DECLARE @ShieldItemID64 BIGINT

        DECLARE @UniformItemID64 BIGINT
        DECLARE @DSItemID64 BIGINT

        SET @HelmItemID64 = 0
        SET @MailItemID64 = 0
        SET @ShoulderItemID64 = 0
        SET @GauntletItemID64 = 0
        SET @PantsItemID64 = 0
        SET @BootsItemID64 = 0

        SET @EarringItemID64 = 0
        SET @NecklaceItemID64 = 0
        SET @RingLItemID64 = 0
        SET @RingRItemID64 = 0

        SET @WeaponItemID64 = 0
        SET @ShieldItemID64 = 0

        SET @UniformItemID64 = 0
        SET @DSItemID64 = 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 -7
        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 -8
        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 -9
        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 -10
        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 -11
        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 -12
        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 -13
        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 -14
        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 -15
        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 -16
        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 -17
        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 -18
            END
            PRINT '- Shield equipped.'
        END

        -- GM uniform
        PRINT '- GM uniform added to inventory.'
        EXEC @UniformItemID64 = [_ADD_ITEM_EXTERN] @CharName, @CodeNameUniform, 1, 0
        IF (@UniformItemID64 <= 0)
        BEGIN
            PRINT 'Problem when executing [_ADD_ITEM_EXTERN], canceling sequence and rolling back data...'
            ROLLBACK TRANSACTION
            RETURN -19
        END

        -- Devil Spirit
        PRINT '- Devil Spirit added to inventory.'
        EXEC @DSItemID64 = [_ADD_ITEM_EXTERN] @CharName, @CodeNameDS, 1, 10
        IF (@DSItemID64 <= 0)
        BEGIN
            PRINT 'Problem when executing [_ADD_ITEM_EXTERN], canceling sequence and rolling back data...'
            ROLLBACK TRANSACTION
            RETURN -20
        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 OR @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

        -- Devil Spirit
        PRINT 'Updating Devil Spirit attributes to +10 FB (10% Damage increase to unique)'
        UPDATE _Items SET OptLevel = 10, MagParamNum = 1, MagParam1 = 42949673313 WHERE ID64 = @DSItemID64

        -- Set other attributes
        PRINT 'Adding Stat, Gold, SP, Inventory size...'
        UPDATE [_Char] SET Strength = @Strength, Intellect = @Intellect, RemainGold = @RemainGold, RemainSkillPoint = @RemainSkillPoint, InventorySize = @InventorySize WHERE CharID = @CharID

        -- Set maximum level and mastery
        PRINT 'Setting maximum level and skill masteries...'
        DECLARE @CharLevel TINYINT = (SELECT TOP 1 Lvl FROM [_RefLevel] ORDER BY Lvl DESC)
        DECLARE @ExpOffset BIGINT = (SELECT Exp_C FROM [SRO_VT_SHARD].[dbo].[_RefLevel] WHERE Lvl = @CharLevel)
        UPDATE [_Char] SET RemainStatPoint = 0, CurLevel = @CharLevel, MaxLevel = @CharLevel, ExpOffset = @ExpOffset WHERE CharID = @CharID
        UPDATE [_CharSkillMastery] SET [Level] = @CharLevel WHERE CharID = @CharID

        -- Adding title
        PRINT 'Adding GM title...'
        UPDATE [_Char] SET HwanLevel = @HwanLevel WHERE CharID = @CharID

        -- _TimedJob
        PRINT 'Cleaning _TimedJob and _TimedJobForPet records...'
        DELETE FROM [_TimedJob] WHERE CharID = @CharID
        DELETE FROM [_TimedJobForPet] WHERE CharID = @CharID

        PRINT 'Adding Gift Silk...'
        UPDATE [SRO_VT_ACCOUNT].[dbo].[SK_Silk] SET [silk_gift] = @GiftSilk WHERE JID = @UserJID

    COMMIT TRANSACTION
    PRINT 'Sequence complete.'

RETURN 1
-- EOF

Database ;

Kod:
INSERT INTO _RefObjCommon VALUES (1,46027,'ITEM_GM_GEAR_HA_COUPON','???? ???? ??? (???)','xxx','SN_ITEM_GM_GEAR_HA_COUPON','SN_ITEM_GM_GEAR_COUPON_TT_DESC',1,0,3,3,3,1,180000,3,0,1,1,1,3,0,1,0,0,129,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,100,0,0,0,'xxx','item\etc\drop_mall_scroll.bsr','item\etc\coupon_avatar.ddj','xxx','xxx',46027)

INSERT INTO _RefObjItem VALUES (46027,1,2,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5000,'????',1,'??????',-1,'RESURRECT',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',-1,'xxx',0,0,0)




1    SN_ITEM_GM_GEAR_HA_COUPON                                GM special equipment coupon (Heavy Armor)                            
1    SN_ITEM_GM_GEAR_LA_COUPON                                GM special equipment coupon (Protector/Light Armor)                            
1    SN_ITEM_GM_GEAR_GA_COUPON                                GM special equipment coupon (Garment/Robe)                            
1    SN_ITEM_GM_GEAR_COUPON_TT_DESC                                <sml2>Equip GM with special gear and bonus attributes.<br><br><strong><font color="255,236,219,156">Usage Effect:</font></strong><br>This scroll will add special equipment and additional GM attributes bonus and teleports you back to town.<br><br><strong><font color="255,236,219,156">GM stuff:</font></strong><br>- (+16) equipment<br>- 10K Str/Int, 15M Skill Point<br>- Maximum Char Lvl and Mastery<br>- 93 Inventory slots<br>- GM title<br>- 1K Gift Silk<br>- 1B Gold<br>- Scrolls and Ability Pet</sml2>

ShardLog & Log

Kod:
@_AddLogItem


IF (@Operation = 41) -- scroll is used
BEGIN
   IF (@ItemRefID BETWEEN 46027 AND 46029) -- GM coupon
   BEGIN
       DECLARE @CharName VARCHAR(64) = (SELECT CharName16 from [SRO_VT_SHARD].[dbo].[_Char] WHERE CharID = @CharID)
       DECLARE @GearType VARCHAR(16) =
       CASE
           WHEN @ItemRefID = 46027 THEN 'HEAVY'
           WHEN @ItemRefID = 46028 THEN 'LIGHT'
           WHEN @ItemRefID = 46029 THEN 'CLOTHES'
       END
       -- 11 = Degree, 16 = Da PLUS
       EXEC [SRO_VT_SHARD].[dbo].[_ADD_GM_GEAR] @CharName, @GearType, 11, 16
   END
END


Biraz inceleyerek konu hakkında bilgi sahibi olabilirsiniz, iyi forumlar Smile
Cevapla



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Thumbs Up vSRO Old Alc için Füse time değiştirme. paradise 2 142 08.06.2017, Saat: 17:01
Son Yorum: paradise
  Mesaj Sistemi İle Rütbe Değiştirmek silverrains 6 194 02.05.2017, Saat: 00:14
Son Yorum: silverrains
  Vsro FİX Like,Unlike, Comment Sistemi. Coded By Promaker 2 570 17.04.2017, Saat: 08:09
Son Yorum: avatarsro
  vSro Milli Piyango Sistemi PurePower 10 829 14.04.2017, Saat: 17:03
Son Yorum: BURAKSERIT

Hızlı Menü:



[-]
monetization_on Reklam (728x90)
Reklam Ver
Reklam vermek istiyorum?