Skip to main content
Merhaba, Ziyaretçi!

Bizi ziyaret ettiğiniz için teşekkür ederiz!

Sitemizden daha iyi yararlanabilmek için "Giriş" yapmalı ya da "Kayıt" olmalısınız ;)

("vSro Forum - vSro Rehberi" ayrıcalıktır!)

vSro Forum - vSro Rehberi ve Paylaşımları
f8 filter
Sun World
Raymond

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5

GM'ler için Auto-Equipment Sistemi
GM'ler için Auto-Equipment Sistemi
#1
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
  CS-Go Rank Sistemi VsroEdit 6 753 19.11.2017, Saat: 03:20
Son Yorum: Silkroad
  Model Switcher Sistemi VsroEdit 5 622 16.11.2017, Saat: 23:18
Son Yorum: sonerefe
Thumbs Up vSRO Old Alc için Füse time değiştirme. paradise 2 431 08.06.2017, Saat: 17:01
Son Yorum: paradise
  Mesaj Sistemi İle Rütbe Değiştirmek silverrains 6 416 02.05.2017, Saat: 00:14
Son Yorum: silverrains

Hızlı Menü:


Konuyu Okuyanlar: 1 Ziyaretçi