Some Questions

05/25/2016 04:57 Astro1337#1
Hello guys ;)
I Have some problems in my p-servers
and it's in the Auto Equipment system
the system don't work correctly ,and when the characters level up no thing happen even after teleport , although the Procedures are correct in the database

And the second problem with the Auto Silk per hour system:
players doesn't recive any silk per hour , however they online for more than 10 hours+
05/26/2016 18:35 Astro1337#2
up
05/27/2016 15:13 ​Exo#3
Dude, I really didn't understand a thing. I doubt anyone did.

Try to fix the grammar a little bit (so we can understand man) and maybe attach your procedures or something.
05/27/2016 16:04 Astro1337#4
Quote:
Originally Posted by Cript_1337 View Post
Hello guys ;)
I Have some problems in my p-servers
and it's in the Auto Equipment system
the system don't work correctly ,and when the characters level up no thing happen even after teleport , although the Procedures are correct in the database

And the second problem with the Auto Silk per hour system:
players doesn't recive any silk per hour , however they online for more than 10 hours+
sorry for my bad english , you may understand now
05/28/2016 03:30 Kardil#5
Show procedures there are many auto equipment / silk per hour systems
05/28/2016 04:38 SilkroadBase#6
you have to add in addlogchar when level up (operation id)
05/28/2016 13:37 Astro1337#7
here is the autoequipment procedure which i have used
PHP Code:
USE [SRO_VT_SHARD]
GO
/****** Object:  StoredProcedure [dbo].[__AUTO_EQUIP_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 [__AUTO_EQUIP_GEAR] '<character_name>', <plus>
 * -
 * Parameters:
 *   <character_name>: duh?
 *   <plus>: duh?
 *
 * Example: EXEC [__AUTO_EQUIP_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 (must have 'sa' access)
IF 
NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = '__AUTO_EQUIP_GEAR')
    
EXEC('CREATE PROCEDURE [dbo].[__AUTO_EQUIP_GEAR] AS BEGIN SET NOCOUNT ON; END')
GO

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

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

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

    
SET XACT_ABORT ON
    SET NOCOUNT ON

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

    
PRINT 'Validating Character...'
    
-- EXEC @isCharExist = [_IsExistingCharName] @CharNameToCheck = @CharName
    SELECT 
@isCharExist = COUNT(CharID) FROM [_Char] WITH (NOLOCK) WHERE CharName16 = @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 [MENTION=292919]user[/MENTION]JID INT = 0
    
DECLARE @AccountName VARCHAR(32) = ''

    
-- Check if character assigned to Account ID
    
PRINT 'Validating Account ID...'
    
SELECT @CharID = CharID, @RefCharID = RefObjID FROM [_Char] WITH (NOLOCK) WHERE CharName16 = @CharName
    SELECT 
[MENTION=292919]user[/MENTION]JID = UserJID FROM [_User] WITH (NOLOCK) WHERE CharID = @CharID
    
IF  [MENTION=292919]user[/MENTION]JID IS NULL OR [MENTION=292919]user[/MENTION]JID = 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] WITH (NOLOCK) WHERE CharID = @CharID) + 1
        WHEN 
@CharRace = 'EU' THEN (SELECT TOP (1) [Level] FROM [_CharSkillMastery] WITH (NOLOCK) 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'
        
WHEN @CurLevel < 92 THEN '09'
        
WHEN @CurLevel < 101 THEN '10'
        
ELSE '11' 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] WITH (NOLOCK) 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] WITH (NOLOCK) WHERE ID64 = @OldWeaponID)
    DECLARE [
MENTION=6691283]WPC[/MENTION]lass VARCHAR(16) = ''
    
SELECT [MENTION=6691283]WPC[/MENTION]lass = 
        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] WITH (NOLOCK) WHERE [Service] = 1 AND ID = @RefOldWeaponID ORDER BY TypeID4 ASC
    
PRINT 'Weapon is: ' + [MENTION=6691283]WPC[/MENTION]lass + '.'

    
-- Set no shield by default, if the weapon used is 1H, then add shield automatically.
    PRINT 
'Checking if character is using shield...'
    
DECLARE [MENTION=2402791]uses[/MENTION]hield TINYINT = 0
    
IF  [MENTION=6691283]WPC[/MENTION]lass = 'SWORD' OR [MENTION=6691283]WPC[/MENTION]lass = 'BLADE' OR [MENTION=6691283]WPC[/MENTION]lass = 'STAFF' OR [MENTION=6691283]WPC[/MENTION]lass = 'DARKSTAFF')
    
BEGIN
        
PRINT '- 1H weapon is used, new shield will be added.'
        
SET [MENTION=2402791]uses[/MENTION]hield = 1
    END

    
-- Item codes (trailing codes are from itemSuffix settings above)
    PRINT 
'Validating current gear...'
    
DECLARE @OldGearID INT = (SELECT TOP (1) ItemID FROM [_Inventory] WITH (NOLOCK) 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] WITH (NOLOCK) 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] WITH (NOLOCK) WHERE [Service] = 1 AND ID = @RefOldGearID ORDER BY TypeID4 ASC
    
PRINT 'Gear type is: ' + @EQClass + '.'

    
PRINT 'Validating current equipment type...'
    
DECLARE @OldHelmID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 0)
    DECLARE @
RefOldHelmID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldHelmID)
    DECLARE @
OldMailID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 1)
    DECLARE @
RefOldMailID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldMailID)
    DECLARE @
OldShoulderID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 2)
    DECLARE @
RefOldShoulderID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldShoulderID)
    DECLARE @
OldGauntletID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 3)
    DECLARE @
RefOldGauntletID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldGauntletID)
    DECLARE @
OldPantsID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 4 )
    DECLARE @
RefOldPantsID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldPantsID)
    DECLARE @
OldBootsID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 5)
    DECLARE @
RefOldBootsID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldBootsID)
    DECLARE @
OldShieldID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 7)
    DECLARE @
RefOldShieldID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldShieldID)
    DECLARE @
OldEarringID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 9)
    DECLARE @
RefOldEarringID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldEarringID)
    DECLARE @
OldNecklaceID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 10)
    DECLARE @
RefOldNecklaceID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldNecklaceID)
    DECLARE @
OldLRingID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 11)
    DECLARE @
RefOldLRingID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldLRingID)
    DECLARE @
OldRRingID INT = (SELECT ItemID FROM [_Inventory] WITH (NOLOCK) WHERE CharID = @CharID AND Slot = 12)
    DECLARE @
RefOldRRingID INT = (SELECT RefItemID FROM [_Items] WITH (NOLOCK) WHERE ID64 = @OldRRingID)

    -- 
Check if old equipment are Egy or Roc set
    
DECLARE @useHelm TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldHelmID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useMail TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldMailID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE [MENTION=2402791]uses[/MENTION]houlder TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldShoulderID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useGauntlet TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldGauntletID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @usePants TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldPantsID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useBoots TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldBootsID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useWeapon TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldWeaponID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
IF  [MENTION=2402791]uses[/MENTION]hield = 1)
    
BEGIN
        SET 
[MENTION=2402791]uses[/MENTION]hield = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldShieldID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    END
    
DECLARE @useEarring TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldEarringID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useNecklace TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldNecklaceID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE @useLRing TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldLRingID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END
    
DECLARE [MENTION=662595]userr[/MENTION]ing TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE ID = @RefOldRRingID AND (CodeName128 LIKE 'ITEM_ROC_%' OR CodeName128 LIKE '%_SET_A_RARE' OR CodeName128 LIKE '%_SET_B_RARE' OR CodeName128 LIKE '%_TOURNAMENT_SET' OR CodeName128 LIKE '%_SCHOLAR_SET' OR CodeName128 LIKE '%_GM_SET')) THEN 0 ELSE 1 END

    
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 + '_' + [MENTION=6691283]WPC[/MENTION]lass + '_' + @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] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameHelm
    SELECT 
@RefMailID = ID, @RefMailLinkID = link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameMail
    SELECT 
@RefShoulderID = ID, @RefShoulderLinkID = link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameShoulder
    SELECT 
@RefGauntletID = ID, @RefGauntletLinkID = link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameGauntlet
    SELECT 
@RefPantsID = ID, @RefPantsLinkID = link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNamePants
    SELECT 
@RefBootsID = ID, @RefBootsLinkID = link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameBoots

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

    
-- Weapon and Shield
    SELECT 
@RefWeaponID = ID, @RefWeaponLinkID = Link FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = @CodeNameWeapon
    SELECT 
@RefShieldID = ID, @RefShieldLinkID = Link FROM [_RefObjCommon] WITH (NOLOCK) 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 WITH (NOLOCK) WHERE ID = @RefHelmLinkID)
    DECLARE @
DuraMail INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefMailLinkID)
    DECLARE @
DuraShoulder INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefShoulderLinkID)
    DECLARE @
DuraGauntlet INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefGauntletLinkID)
    DECLARE @
DuraPants INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefPantsLinkID)
    DECLARE @
DuraBoots INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefBootsLinkID)
    DECLARE @
DuraWeapon INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefWeaponLinkID)
    DECLARE @
DuraShield INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCK) WHERE ID = @RefShieldLinkID)

    -- 
Sequence begin
    BEGIN TRANSACTION

        
-- 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 [MENTION=289336]weapon[/MENTION]ItemID64 BIGINT = 0
        
DECLARE @ShieldItemID64 BIGINT = 0

        
-- Helm
        
IF (@useHelm = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 0
            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
            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
            
PRINT '- Helm equipped.'
        
END

        
-- Chest
        
IF (@useMail = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 1
            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
            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 = @MailItemID64
            UPDATE 
[_Items] SET MagParamNum = 5, MagParam5 = 901943132463 WHERE ID64 = @MailItemID64
            
PRINT '- Chest equipped.'
        
END

        
-- Shoulder
        
IF  [MENTION=2402791]uses[/MENTION]houlder = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 2
            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
            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 = @ShoulderItemID64
            
PRINT '- Shoulder equipped.'
        
END

        
-- Gauntlet
        
IF (@useGauntlet = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 3
            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
            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 = @GauntletItemID64
            
PRINT '- Gauntlet equipped.'
        
END

        
-- Pants
        
IF (@usePants = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 4
            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
            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 = @PantsItemID64
            
PRINT '- Pants equipped.'
        
END

        
-- Boots
        
IF (@useBoots = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 5
            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
            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 = @BootsItemID64
            
PRINT '- Boots equipped.'
        
END

        
-- Earring
        
IF (@useEarring = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 9
            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
            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
            UPDATE 
[_Items] SET MagParamNum = 9, MagParam8 = 214748365115, MagParam9 = 214748365139 WHERE ID64 = @EarringItemID64
            
PRINT '- Earring equipped.'
        
END

        
-- Necklace
        
IF (@useNecklace = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 10
            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
            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 = @NecklaceItemID64
            UPDATE 
[_Items] SET MagParamNum = 8, MagParam8 = 47244640547 WHERE ID64 = @NecklaceItemID64
            
PRINT '- Necklace equipped.'
        
END

        
-- Left Ring
        
IF (@useLRing = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 11
            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
            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 = @RingLItemID64
            UPDATE 
[_Items] SET MagParamNum = 9, MagParam8 = 107374182751, MagParam9 = 107374182727  WHERE ID64 = @RingLItemID64
            
PRINT '- Left Ring equipped.'
        
END

        
-- Right Ring
        
IF  [MENTION=662595]userr[/MENTION]ing = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 12
            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
            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 = @RingRItemID64
            UPDATE 
[_Items] SET MagParamNum = 9, MagParam8 = 107374182751, MagParam9 = 107374182727  WHERE ID64 = @RingRItemID64
            
PRINT '- Right Ring equipped.'
        
END

        
-- Weapon
        
IF (@useWeapon = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 6
            EXEC 
[MENTION=289336]weapon[/MENTION]ItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 6, @RefWeaponID, @DuraWeapon
            
IF  [MENTION=289336]weapon[/MENTION]ItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -18
            END
            UPDATE 
[_Items] SET OptLevel = @EQPlus, Variance = 34359738336, MagParamNum = 6, MagParam1 = 30064771144, MagParam2 = 30064771150, MagParam3 = 858993459290, MagParam4 = 429496729714, MagParam5 = 257698037862, MagParam6 = 12884902155, MagParam7 = NULL, MagParam8 = NULL, MagParam9 = NULL, MagParam10 = NULL, MagParam11 = NULL, MagParam12 = NULL WHERE ID64 = [MENTION=289336]weapon[/MENTION]ItemID64
            
PRINT '- Weapon equipped.'
        
END

        
-- Shield
        
IF  [MENTION=2402791]uses[/MENTION]hield = 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 7
            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
            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
            
PRINT '- Shield equipped.'
        
END

        
-- Arrow/Bolt
        
IF  [MENTION=6691283]WPC[/MENTION]lass = 'BOW' OR [MENTION=6691283]WPC[/MENTION]lass = 'CROSSBOW')
        
BEGIN
            
DECLARE @ArrowItemID64 BIGINT
            
DECLARE @RefArrowID INT = CASE
                
WHEN [MENTION=6691283]WPC[/MENTION]lass = 'BOW' THEN (SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = 'ITEM_MALL_QUIVER')
                
WHEN [MENTION=6691283]WPC[/MENTION]lass = 'CROSSBOW' THEN (SELECT ID FROM [_RefObjCommon] WITH (NOLOCK) WHERE [Service] = 1 AND CodeName128 = 'ITEM_MALL_BOLT')
            
END
        
            EXEC 
[_STRG_DEL_ITEM_NoTX] 1, @CharID, 7
            EXEC 
@ArrowItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID, 7, @RefArrowID, 10000
            
IF (@ArrowItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP] (Arrow/Bolt), canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -19
            END
            
PRINT '- Arrow/Bolt equipped.'
        
END

    COMMIT TRANSACTION
    
PRINT 'Sequence complete.'

RETURN -1
-- EOF 
and i add this to _AddLogItem and _AddLogChar
PHP Code:
IF (@Operation = 41) -- scroll is used
BEGIN
    
IF (@ItemRefID = 41798) -- Auto-equipment Coupon "RefID is correct"
    
BEGIN
        
DECLARE @CharNameEQ VARCHAR(64) = (SELECT CharName16 from [SRO_VT_SHARD].[dbo].[_Char] WHERE CharID = @CharID)
        
EXEC [SRO_VT_SHARD].[dbo].[_ADD_AUTOEQUIP_GEAR] @CharNameEQ, 7
    END
END 
and silk per hour system procedure is

PHP Code:
USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE [_Silk/Hour-Config]
END TRY
BEGIN CATCH END CATCH;

CREATE TABLE [_Silk/Hour-Config] (
    [
Desc] varchar(max) NULL,
    [
DefaultSilk] int NOT NULL,
    [
Step1Silk] int NOT NULL,
    [
Step2Silk] int NOT NULL,
    [
Step3Silk] int NOT NULL,
    [
RewardSilk] int NOT NULL,
    [
WEEKDAYS] varchar(15) NULL
    
    CHECK 
(
            [
WEEKDAYS] like 'Monday' OR
            [
WEEKDAYS] like 'Tuesday' OR
            [
WEEKDAYS] like 'Wednesday' OR
            [
WEEKDAYS] like 'Thursday' OR
            [
WEEKDAYS] like 'Friday' OR
            [
WEEKDAYS] like 'Saturday' OR
            [
WEEKDAYS] like 'Sunday'
            
)
);

INSERT INTO [_Silk/Hour-Config] SELECT 'Rates', 1, 2, 3, 4, 5, NULL
INSERT INTO 
[_Silk/Hour-Config] SELECT 'Requirements', 0, (60*24*7), (60*24*30), (60*24*365), 0, NULL
INSERT INTO 
[_Silk/Hour-Config] SELECT 'allowed Day #1', 0, 0, 0, 0, 0, 'Monday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #2', 0, 0, 0, 0, 0, 'Tuesday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #3', 0, 0, 0, 0, 0, 'Wednesday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #4', 0, 0, 0, 0, 0, 'Thursday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #5', 0, 0, 0, 0, 0, 'Friday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #6', 0, 0, 0, 0, 0, 'Saturday'
INSERT INTO [_Silk/Hour-Config] SELECT 'allowed Day #7', 0, 0, 0, 0, 0, 'Sunday' 
PHP Code:
USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE _OnlineOffline
END 
TRY
BEGIN CATCH END CATCH;

CREATE TABLE _OnlineOffline
(
[
No.] int PRIMARY KEY IDENTITY (1,1),
[
CharID] int NOT NULL,
[
Charname] varchar(64) NOT NULL,
[
Status] varchar(20) NOT NULL,
[
Date] datetime NOT NULL,
[
Minutes] bigint,
[
tMinutes] bigint,
[
eSilk] int,
[
mOnline] varchar(max) NULL,
[
Silk/Hour] int NOT NULL,
[
stillOnline@] datetime NULL
);

INSERT INTO _OnlineOffline 
    SELECT CharID
, CharName16, 'OnHold', GETDATE(), 0, 0, 0, '0 minute(s)', (SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates'), NULL
    FROM SRO_VT_SHARD
.dbo._Char ORDER BY CharID 
PHP Code:
USE SRO_VT_SHARDLOG

BEGIN 
TRY
    
DROP TABLE [_RandomPlayer&Date]
END TRY
BEGIN CATCH END CATCH;

CREATE TABLE [_RandomPlayer&Date] (
    [
NextDate] datetime DEFAULT NULL,
    [
RefreshedDate] datetime,
    [
CharID] int,
    [
Charname] varchar(64),
    [
Desc] varchar(20) NULL
);

INSERT INTO [_RandomPlayer&Date] SELECT NULL,NULL,NULL,NULL,'Current'
INSERT INTO [_RandomPlayer&Date] SELECT NULL,NULL,NULL,NULL,'Next' 
PHP Code:
USE SRO_VT_SHARD
GO

CREATE PROCEDURE _GetRandomTime 
/*by Caipi*/

@TodaysDate datetime,
@
EndDate datetime OUTPUT

AS BEGIN

SET 
@EndDate = GETDATE();

WHILE (@
EndDate <= GETDATE())
    
BEGIN
        
DECLARE 
                @
BasicDate    varchar(12) = CONVERT(VARCHAR(10), @TodaysDate, 120),
                @
Hour        varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*23,0))),
                @
Minutes    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0))),
                @
Seconds    varchar(2) = CONVERT(varchar(2),(ROUND(RAND()*59,0)))

        
SET @EndDate = CONVERT(DATETIME,@BasicDate + ' ' + @Hour + ':' + @Minutes + ':' + @Seconds)
    
END

END 
PHP Code:
USE [SRO_VT_SHARD]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_RandomPlayerID] /*by Caipi*/

as

Declare @
Random int = 1, @Bool bit = 0;

WHILE (@
Bool = 0)
    
BEGIN
        SET 
@Random = ROUND(RAND()*(SELECT MAX(CharID) FROM SRO_VT_SHARD.dbo._Char),0)
        IF 
exists (SELECT CharID FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @Random)
            
BEGIN
                SET 
@Bool = 1 /*true*/
            
END
    END
    
return @Random 
PHP Code:
USE [SRO_VT_ACCOUNT]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_extraSilk] /*by Caipi*/

    
@CharID int,
    @
Silk int

as

Declare @
JID int, @Multiplier int = (SELECT [Silk/Hour] FROM SRO_VT_SHARDLOG.dbo._OnlineOffline WHERE CharID = @CharID);

SET @JID = (
            
SELECT usert.UserJID FROM SRO_VT_SHARD.dbo._User as usert
            JOIN SRO_VT_SHARD
.dbo._Char as chart on usert.CharID = chart.CharID
            WHERE chart
.CharID = @CharID
            
);
            
    IF 
not exists (SELECT JID FROM SK_Silk WHERE JID = @JID)
        
BEGIN
            INSERT INTO SK_Silk SELECT 
@JID, 0, 0, 0
        END
            
    UPDATE SK_Silk
    SET silk_own 
= silk_own + (@Silk*@Multiplier)
    
WHERE JID = @JID 
PHP Code:
USE [SRO_VT_SHARDLOG]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE 
[dbo].[_GetSilkperHour] /*by Caipi*/

@CharID int

as

Declare @
totalMinutes bigint = (SELECT tMinutes FROM _OnlineOffline WHERE CharID = @CharID), @Silkoutput int;

/*Calculating the Silk/Hour-Amount related to the Online Time*/
SET @Silkoutput = 
CASE
    
WHEN @totalMinutes >= (SELECT [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step3Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step2Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements') 
        
THEN (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
    ELSE (
SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
END

RETURN @Silkoutput 
and this
PHP Code:
USE [SRO_VT_SHARDLOG]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER   procedure 
[dbo].[_AddLogChar] 
@
CharID        int,
@
EventID        tinyint,
@
Data1        int,
@
Data2        int,
@
strPos        varchar(64),
@
Desc        varchar(128)
as

IF    ( -- 
Skips over the unnecessary Records
        
(@EventID != 11) AND 
        (@
EventID NOT BETWEEN 21 AND 27) AND
        (@
EventID NOT BETWEEN 200 AND 202) AND
        (@
EventID NOT BETWEEN 204 AND 206) AND 
        (@
EventID != 210) AND (@EventID != 214) AND (@EventID != 244)
    )
BEGIN

    
declare @len_pos     int
    
declare @len_desc    int
    set 
@len_pos = len(@strPos)
    
set @len_desc = len(@Desc)
    if (@
len_pos > 0 and @len_desc > 0)
    
begin    
        insert _LogEventChar values
(@CharID, GetDate(), @EventID, @Data1, @Data2, @strPos, @Desc)    
    
end
    
else if (@len_pos > 0 and @len_desc = 0)
    
begin     
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2, EventPos) values(@CharID, GetDate(), @EventID, @Data1, @Data2, @strPos)
    
end
    
else if (@len_pos = 0 and @len_desc > 0)
    
begin     
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2, strDesc) values(@CharID, GetDate(), @EventID, @Data1, @Data2, @Desc)
    
end
    
else
    
begin
        insert _LogEventChar 
(CharID, EventTime, EventID, Data1, Data2) values(@CharID, GetDate(), @EventID, @Data1, @Data2)
    
end
    
/*Extension*/--> by Caipi

IF not exists (SELECT CharID FROM _OnlineOffline WHERE CharID = @CharID)
    
BEGIN
        INSERT INTO _OnlineOffline 
(CharID, Charname, [Status], [Date], [Minutes], [tMinutes], eSilk, mOnline, [Silk/Hour], [stillOnline@])
        
VALUES (
                @
CharID,
                (
SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID),
                
'OnHold',
                
GETDATE(),
                
0,0,0,
                
NULL,(SELECT DefaultSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates'),
                
NULL
                
);
    
END

IF (@EventID = 4 OR @EventID = 6)
    
BEGIN

    
IF (@EventID = 6 AND ((SELECT [Status] FROM _OnlineOffline WHERE CharID = @CharID) like 'OnHold'))
        
BEGIN
            UPDATE _OnlineOffline
            SET 
[Status] = 'Offline'
            
WHERE CharID = @CharID
        END
        
    
IF (@EventID = 6 AND ((SELECT [Status] FROM _OnlineOffline WHERE CharID = @CharID) like 'Online'))
        
BEGIN
            UPDATE _OnlineOffline
            SET
                
[Status] = 'Offline',
                [
Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
                [
tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
                [
mOnline] = NULL,
                [
stillOnline@] = NULL
            WHERE CharID 
= @CharID    
        END
        
    
IF (@EventID = 4)
        
BEGIN
            UPDATE _OnlineOffline
            SET 
                
[Status] = 'Online',
                [
Date] = GETDATE(),
                [
stillOnline@] = GETDATE()
            
WHERE CharID = @CharID
        END
    END

    
UPDATE _OnlineOffline
SET 
    
[mOnline] = CAST((DATEDIFF(MINUTE,[Date],GETDATE()))as varchar(max)) + ' minute(s) Online',
    [
Minutes] = [Minutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
    [
tMinutes] = [tMinutes] + (DATEDIFF(MINUTE,[stillOnline@],GETDATE())),
    [
stillOnline@] = GETDATE()
WHERE [Status] like 'Online'

/*Silk/Hour basic calc*/
IF ((SELECT [tMinutes] from _OnlineOffline WHERE CharID = @CharID) >= (SELECT [Step1Silk] FROM [_Silk/Hour-Config] WHERE [Desc] like 'Requirements'))
    
BEGIN
        
Declare @sph int;
        
exec @sph = [_GetSilkperHour] @CharID
        UPDATE _OnlineOffline SET 
[Silk/Hour] = @sph WHERE CharID = @CharID
    END
/*!Silk/Hour basic calc*/

IF (((SELECT NextDate FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next') IS NULL))
    
BEGIN
        
DECLARE @FirstDate datetime, @Today datetime = GETDATE(), @FirstCharID int;

        
exec @FirstCharID = SRO_VT_SHARD.dbo._RandomPlayerID
        exec SRO_VT_SHARD
.dbo._GetRandomTime @Today, @FirstDate OUTPUT
        
        UPDATE 
[_RandomPlayer&Date] 
            
SET 
                NextDate 
= @FirstDate,
                
RefreshedDate = GETDATE(),
                
CharID = @FirstCharID,
                
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @FirstCharID)
            
WHERE [Desc] like 'Next';
    
END
    
IF ((SELECT NextDate FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next') <= GETDATE())
    
BEGIN
        UPDATE _OnlineOffline
            SET 
[Silk/Hour] = (SELECT RewardSilk FROM [_Silk/Hour-Config] WHERE [Desc] like 'Rates')
            
WHERE CharID = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next');
        Declare
                @
CurSilkperHour int, 
                @
OldCharID int = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Current');
        IF (@
OldCharID IS NOT NULL)
            
BEGIN
                exec 
@CurSilkperHour = _GetSilkperHour @OldCharID
                UPDATE _OnlineOffline
                    SET 
[Silk/Hour] = @CurSilkperHour
                    WHERE CharID 
= @OldCharID;
            
END
        UPDATE 
[_RandomPlayer&Date]
            
SET
                NextDate 
= NULL,
                
RefreshedDate = GETDATE(),
                
CharID = (SELECT CharID FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next'),
                
Charname = (SELECT Charname FROM [_RandomPlayer&Date] WHERE [Desc] like 'Next')
            
WHERE [Desc] like 'Current'
        
        
/*new Random Time of Today+1*/
        
DECLARE @NextDate datetime, @Tomorrow datetime = GETDATE()+1, @NewCharID int;
        
        
exec @NewCharID = SRO_VT_SHARD.dbo._RandomPlayerID
        exec SRO_VT_SHARD
.dbo._GetRandomTime @Tomorrow, @NextDate OUTPUT
        
        UPDATE 
[_RandomPlayer&Date] 
            
SET 
                NextDate 
= @NextDate,
                
RefreshedDate = GETDATE(),
                
CharID = @NewCharID,
                
Charname = (SELECT CharName16 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @NewCharID)
            
WHERE [Desc] like 'Next'
        
/*!new Random...*/
    
END
    
    
/*Calculation of the silk amount*/
    
Declare @tMinutes bigint = (SELECT [Minutes] from _OnlineOffline WHERE CharID = @CharID), @Silk int;
    
        IF (@
tMinutes >= 60)
            
BEGIN
                SET 
@Silk = CAST(((SELECT [Minutes] FROM _OnlineOffline WHERE CharID = @CharID) / 60) as int)
                
UPDATE _OnlineOffline
                SET 
[Minutes] = [Minutes] % 60
                WHERE CharID 
= @CharID
                
            
IF exists (SELECT [WEEKDAYS] FROM [_Silk/Hour-Config] WHERE [WEEKDAYS] like DATENAME(WEEKDAY, GETDATE()))
                
BEGIN
                    UPDATE _OnlineOffline
                    SET 
[eSilk] = [eSilk] + (@Silk*[Silk/Hour])
                    
WHERE CharID = @CharID
                    
                    exec SRO_VT_ACCOUNT
.dbo._extraSilk @CharID, @Silk
                END
            END
    
/*!Calc*/
    
/*!Extension*/

END -- !Skipping