Register for your free account! | Forgot your password?

You last visited: Today at 04:27

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Some Questions

Discussion on Some Questions within the SRO Private Server forum part of the Silkroad Online category.

Reply
 
Old   #1
 
Cript_1337's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 219
Received Thanks: 71
Some Questions

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+
Cript_1337 is offline  
Old 05/26/2016, 18:35   #2
 
Cript_1337's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 219
Received Thanks: 71
up
Cript_1337 is offline  
Old 05/27/2016, 15:13   #3


 
​Exo's Avatar
 
elite*gold: 28
Join Date: Aug 2014
Posts: 4,096
Received Thanks: 2,653
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.
​Exo is offline  
Old 05/27/2016, 16:04   #4
 
Cript_1337's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 219
Received Thanks: 71
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
Cript_1337 is offline  
Old 05/28/2016, 03:30   #5
 
elite*gold: 0
Join Date: Sep 2015
Posts: 150
Received Thanks: 6
Show procedures there are many auto equipment / silk per hour systems
Kardil is offline  
Old 05/28/2016, 04:38   #6
 
SilkroadBase's Avatar
 
elite*gold: 0
Join Date: May 2016
Posts: 168
Received Thanks: 34
you have to add in addlogchar when level up (operation id)
SilkroadBase is offline  
Old 05/28/2016, 13:37   #7
 
Cript_1337's Avatar
 
elite*gold: 0
Join Date: Jan 2015
Posts: 219
Received Thanks: 71
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 notauto 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    
    -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    -- @@@ 
BEGINSETTINGS
    
    
-- 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'

    
-- @@@ ENDSETTINGS
    
-- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    
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(CharIDFROM [_CharWITH (NOLOCKWHERE CharName16 = @CharName
    
IF (@isCharExist 0)
    
BEGIN
        RAISERROR
('Character: %s does not exist. Sequence canceled!'116, @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 [_CharWITH (NOLOCKWHERE CharName16 = @CharName
    SELECT 
[MENTION=292919]user[/MENTION]JID UserJID FROM [_UserWITH (NOLOCKWHERE 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!'116, @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 1932THEN 'CH'    -- Chinese (vSRO/BR110)
        
WHEN (@RefCharID BETWEEN 14875 AND 14887) OR (@RefCharID BETWEEN 14888 AND 14900THEN 'EU'    -- Euro (vSRO)
        
WHEN (@RefCharID BETWEEN 14717 AND 14729) OR (@RefCharID BETWEEN 14730 AND 14742THEN '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 14729THEN 'M'
        
WHEN (@RefCharID BETWEEN 1920 AND 1932) OR (@RefCharID BETWEEN 14888 AND 14900) OR (@RefCharID BETWEEN 14730 AND 14742THEN '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!'116, @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 [_CharWITH (NOLOCKWHERE CharID = @CharID) + 1
        WHEN 
@CharRace 'EU' THEN (SELECT TOP (1) [LevelFROM [_CharSkillMasteryWITH (NOLOCKWHERE CharID = @CharID ORDER BY [LevelDESC) + 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 [_InventoryWITH (NOLOCKWHERE CharID = @CharID AND Slot =6)
    IF (@
OldWeaponID IS NULL OR @OldWeaponID 0)
    
BEGIN
        RAISERROR
('Character: %s is not wearing any weapon. Sequence canceled!'101, @CharName)
        RETURN -
4
    END
    
DECLARE @RefOldWeaponID INT = (SELECT RefItemID FROM [_ItemsWITH (NOLOCKWHERE ID64 = @OldWeaponID)
    DECLARE [
MENTION=6691283]WPC[/MENTION]lass VARCHAR(16) = ''
    
SELECT [MENTION=6691283]WPC[/MENTION]lass 
        CASE
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 2 THEN 'SWORD'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 3 THEN 'BLADE'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 4 THEN 'SPEAR'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 5 THEN 'TBLADE'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 6 THEN 'BOW'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 7 THEN 'SWORD'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 8 THEN 'TSWORD'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 9 THEN 'AXE'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 10 THEN 'DARKSTAFF'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 11 THEN 'TSTAFF'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 12 THEN 'CROSSBOW'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 13 THEN 'DAGGER'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 14 THEN 'HARP'
            
WHEN TypeID1 AND TypeID2 AND TypeID3 AND TypeID4 15 THEN 'STAFF'
        
END
    FROM 
[_RefObjCommonWITH (NOLOCKWHERE [Service] = 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 1Hthen 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 (1ItemID FROM [_InventoryWITH (NOLOCKWHERE CharID = @CharID AND ItemID AND Slot BETWEEN 0 AND 5)
    IF (@
OldGearID IS NULL OR @OldGearID 0)
    
BEGIN
        RAISERROR
('Character: %s is not wearing any armor. Sequence canceled!'101, @CharName)
        RETURN -
5
    END
    
DECLARE @RefOldGearID INT = (SELECT RefItemID FROM [_ItemsWITH (NOLOCKWHERE ID64 = @OldGearID)
    DECLARE @
EQClass VARCHAR(10)
    
SELECT @EQClass 
        CASE
            
WHEN TypeID1 AND TypeID2 AND (TypeID3 OR TypeID3 9THEN 'CLOTHES'
            
WHEN TypeID1 AND TypeID2 AND (TypeID3 OR TypeID3 10THEN 'LIGHT'
            
WHEN TypeID1 AND TypeID2 AND (TypeID3 OR TypeID3 11THEN 'HEAVY'
        
END
    FROM 
[_RefObjCommonWITH (NOLOCKWHERE [Service] = AND ID = @RefOldGearID ORDER BY TypeID4 ASC
    
PRINT 'Gear type is: ' + @EQClass '.'

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

    -- 
Check if old equipment are Egy or Roc set
    
DECLARE @useHelm TINYINT = CASE WHEN EXISTS(SELECT ID FROM [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE 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 [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameHelm
    SELECT 
@RefMailID ID, @RefMailLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameMail
    SELECT 
@RefShoulderID ID, @RefShoulderLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameShoulder
    SELECT 
@RefGauntletID ID, @RefGauntletLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameGauntlet
    SELECT 
@RefPantsID ID, @RefPantsLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNamePants
    SELECT 
@RefBootsID ID, @RefBootsLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameBoots

    
-- Accessories
    SELECT 
@RefEarringID ID, @RefEarringLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameEarring
    SELECT 
@RefNecklaceID ID, @RefNecklaceLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameNecklace
    SELECT 
@RefRingID ID, @RefRingLinkID link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameRing

    
-- Weapon and Shield
    SELECT 
@RefWeaponID ID, @RefWeaponLinkID Link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameWeapon
    SELECT 
@RefShieldID ID, @RefShieldLinkID Link FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 = @CodeNameShield

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

    
-- Get durability for 'Data'
    
PRINT 'Getting items durability information...'
    
DECLARE @DuraHelm INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefHelmLinkID)
    DECLARE @
DuraMail INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefMailLinkID)
    DECLARE @
DuraShoulder INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefShoulderLinkID)
    DECLARE @
DuraGauntlet INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefGauntletLinkID)
    DECLARE @
DuraPants INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefPantsLinkID)
    DECLARE @
DuraBoots INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefBootsLinkID)
    DECLARE @
DuraWeapon INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE ID = @RefWeaponLinkID)
    DECLARE @
DuraShield INT = (SELECT Dur_L FROM _RefObjItem WITH (NOLOCKWHERE 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_NoTX1, @CharID0
            EXEC 
@HelmItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID0, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @HelmItemID64
            
PRINT '- Helm equipped.'
        
END

        
-- Chest
        
IF (@useMail 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID1
            EXEC 
@MailItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID1, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @MailItemID64
            UPDATE 
[_ItemsSET MagParamNum 5MagParam5 901943132463 WHERE ID64 = @MailItemID64
            
PRINT '- Chest equipped.'
        
END

        
-- Shoulder
        
IF  [MENTION=2402791]uses[/MENTION]houlder 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID2
            EXEC 
@ShoulderItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID2, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @ShoulderItemID64
            
PRINT '- Shoulder equipped.'
        
END

        
-- Gauntlet
        
IF (@useGauntlet 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID3
            EXEC 
@GauntletItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID3, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @GauntletItemID64
            
PRINT '- Gauntlet equipped.'
        
END

        
-- Pants
        
IF (@usePants 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID4
            EXEC 
@PantsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID4, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @PantsItemID64
            
PRINT '- Pants equipped.'
        
END

        
-- Boots
        
IF (@useBoots 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID5
            EXEC 
@BootsItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID5, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 257698037898MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @BootsItemID64
            
PRINT '- Boots equipped.'
        
END

        
-- Earring
        
IF (@useEarring 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID9
            EXEC 
@EarringItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID9, @RefEarringID0
            
IF (@EarringItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -14
            END
            UPDATE 
[_ItemsSET OptLevel = @EQPlusVariance 1073741823MagParamNum 7MagParam1 30064771144MagParam2 30064771150MagParam3 85899346100MagParam4 85899346094MagParam5 85899346088MagParam6 85899346106MagParam7 85899346112MagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @EarringItemID64
            UPDATE 
[_ItemsSET MagParamNum 9MagParam8 214748365115MagParam9 214748365139 WHERE ID64 = @EarringItemID64
            
PRINT '- Earring equipped.'
        
END

        
-- Necklace
        
IF (@useNecklace 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID10
            EXEC 
@NecklaceItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID10, @RefNecklaceID0
            
IF (@NecklaceItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -15
            END
            UPDATE 
[_ItemsSET OptLevel = @EQPlusVariance 1073741823MagParamNum 7MagParam1 30064771144MagParam2 30064771150MagParam3 85899346100MagParam4 85899346094MagParam5 85899346088MagParam6 85899346106MagParam7 85899346112MagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @NecklaceItemID64
            UPDATE 
[_ItemsSET MagParamNum 8MagParam8 47244640547 WHERE ID64 = @NecklaceItemID64
            
PRINT '- Necklace equipped.'
        
END

        
-- Left Ring
        
IF (@useLRing 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID11
            EXEC 
@RingLItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID11, @RefRingID0
            
IF (@RingLItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -16
            END
            UPDATE 
[_ItemsSET OptLevel = @EQPlusVariance 1073741823MagParamNum 7MagParam1 30064771144MagParam2 30064771150MagParam3 85899346100MagParam4 85899346094MagParam5 85899346088MagParam6 85899346106MagParam7 85899346112MagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @RingLItemID64
            UPDATE 
[_ItemsSET MagParamNum 9MagParam8 107374182751MagParam9 107374182727  WHERE ID64 = @RingLItemID64
            
PRINT '- Left Ring equipped.'
        
END

        
-- Right Ring
        
IF  [MENTION=662595]userr[/MENTION]ing 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID12
            EXEC 
@RingRItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID12, @RefRingID0
            
IF (@RingRItemID64 <= 0)
            
BEGIN
                
PRINT 'Problem when executing [_FN_ADD_INITIAL_EQUIP], canceling sequence and rolling back data...'
                
ROLLBACK TRANSACTION
                
RETURN -17
            END
            UPDATE 
[_ItemsSET OptLevel = @EQPlusVariance 1073741823MagParamNum 7MagParam1 30064771144MagParam2 30064771150MagParam3 85899346100MagParam4 85899346094MagParam5 85899346088MagParam6 85899346106MagParam7 85899346112MagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 NULL WHERE ID64 = @RingRItemID64
            UPDATE 
[_ItemsSET MagParamNum 9MagParam8 107374182751MagParam9 107374182727  WHERE ID64 = @RingRItemID64
            
PRINT '- Right Ring equipped.'
        
END

        
-- Weapon
        
IF (@useWeapon 1)
        
BEGIN
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID6
            EXEC 
[MENTION=289336]weapon[/MENTION]ItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID6, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 6MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 429496729714MagParam5 257698037862MagParam6 12884902155MagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 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_NoTX1, @CharID7
            EXEC 
@ShieldItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID7, @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 
[_ItemsSET OptLevel = @EQPlusVariance 34359738336MagParamNum 4MagParam1 30064771144MagParam2 30064771150MagParam3 858993459290MagParam4 429496729726MagParam5 NULLMagParam6 NULLMagParam7 NULLMagParam8 NULLMagParam9 NULLMagParam10 NULLMagParam11 NULLMagParam12 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 [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 'ITEM_MALL_QUIVER')
                
WHEN [MENTION=6691283]WPC[/MENTION]lass 'CROSSBOW' THEN (SELECT ID FROM [_RefObjCommonWITH (NOLOCKWHERE [Service] = AND CodeName128 'ITEM_MALL_BOLT')
            
END
        
            EXEC 
[_STRG_DEL_ITEM_NoTX1, @CharID7
            EXEC 
@ArrowItemID64 = [_FN_ADD_INITIAL_EQUIP] @CharID7, @RefArrowID10000
            
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].[_CharWHERE CharID = @CharID)
        
EXEC [SRO_VT_SHARD].[dbo].[_ADD_AUTOEQUIP_GEAR] @CharNameEQ7
    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] (
    [
Descvarchar(maxNULL,
    [
DefaultSilkint NOT NULL,
    [
Step1Silkint NOT NULL,
    [
Step2Silkint NOT NULL,
    [
Step3Silkint NOT NULL,
    [
RewardSilkint NOT NULL,
    [
WEEKDAYSvarchar(15NULL
    
    CHECK 
(
            [
WEEKDAYSlike 'Monday' OR
            [
WEEKDAYSlike 'Tuesday' OR
            [
WEEKDAYSlike 'Wednesday' OR
            [
WEEKDAYSlike 'Thursday' OR
            [
WEEKDAYSlike 'Friday' OR
            [
WEEKDAYSlike 'Saturday' OR
            [
WEEKDAYSlike 'Sunday'
            
)
);

INSERT INTO [_Silk/Hour-ConfigSELECT 'Rates'12345NULL
INSERT INTO 
[_Silk/Hour-ConfigSELECT 'Requirements'0, (60*24*7), (60*24*30), (60*24*365), 0NULL
INSERT INTO 
[_Silk/Hour-ConfigSELECT 'allowed Day #1'00000'Monday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #2'00000'Tuesday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #3'00000'Wednesday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #4'00000'Thursday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #5'00000'Friday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #6'00000'Saturday'
INSERT INTO [_Silk/Hour-ConfigSELECT 'allowed Day #7'00000'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),
[
CharIDint NOT NULL,
[
Charnamevarchar(64NOT NULL,
[
Statusvarchar(20NOT NULL,
[
Datedatetime NOT NULL,
[
Minutesbigint,
[
tMinutesbigint,
[
eSilkint,
[
mOnlinevarchar(maxNULL,
[
Silk/Hourint NOT NULL,
[
stillOnline@] datetime NULL
);

INSERT INTO _OnlineOffline 
    SELECT CharID
CharName16'OnHold'GETDATE(), 000'0 minute(s)', (SELECT DefaultSilk FROM [_Silk/Hour-ConfigWHERE [Desclike '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] (
    [
NextDatedatetime DEFAULT NULL,
    [
RefreshedDatedatetime,
    [
CharIDint,
    [
Charnamevarchar(64),
    [
Descvarchar(20NULL
);

INSERT INTO [_RandomPlayer&DateSELECT NULL,NULL,NULL,NULL,'Current'
INSERT INTO [_RandomPlayer&DateSELECT 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), @TodaysDate120),
                @
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(CharIDFROM SRO_VT_SHARD.dbo._Char),0)
        IF 
exists (SELECT CharID FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @Random)
            
BEGIN
                SET 
@Bool /*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/HourFROM 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 
@JID000
        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 [Step3SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step3SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step2SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step2SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    
WHEN @totalMinutes >= (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Requirements'
        
THEN (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
    ELSE (
SELECT DefaultSilk FROM [_Silk/Hour-ConfigWHERE [Desclike '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 and @len_desc 0)
    
begin    
        insert _LogEventChar values
(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos, @Desc)    
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2EventPosvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @strPos)
    
end
    
else if (@len_pos and @len_desc 0)
    
begin     
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2strDescvalues(@CharIDGetDate(), @EventID, @Data1, @Data2, @Desc)
    
end
    
else
    
begin
        insert _LogEventChar 
(CharIDEventTimeEventIDData1Data2values(@CharIDGetDate(), @EventID, @Data1, @Data2)
    
end
    
/*Extension*/--> by Caipi

IF not exists (SELECT CharID FROM _OnlineOffline WHERE CharID = @CharID)
    
BEGIN
        INSERT INTO _OnlineOffline 
(CharIDCharname, [Status], [Date], [Minutes], [tMinutes], eSilkmOnline, [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-ConfigWHERE [Desclike 'Rates'),
                
NULL
                
);
    
END

IF (@EventID OR @EventID 6)
    
BEGIN

    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike 'OnHold'))
        
BEGIN
            UPDATE _OnlineOffline
            SET 
[Status] = 'Offline'
            
WHERE CharID = @CharID
        END
        
    
IF (@EventID AND ((SELECT [StatusFROM _OnlineOffline WHERE CharID = @CharIDlike '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 [Statuslike 'Online'

/*Silk/Hour basic calc*/
IF ((SELECT [tMinutesfrom _OnlineOffline WHERE CharID = @CharID) >= (SELECT [Step1SilkFROM [_Silk/Hour-ConfigWHERE [Desclike '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&DateWHERE [Desclike '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 [Desclike 'Next';
    
END
    
IF ((SELECT NextDate FROM [_RandomPlayer&DateWHERE [Desclike 'Next') <= GETDATE())
    
BEGIN
        UPDATE _OnlineOffline
            SET 
[Silk/Hour] = (SELECT RewardSilk FROM [_Silk/Hour-ConfigWHERE [Desclike 'Rates')
            
WHERE CharID = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike 'Next');
        Declare
                @
CurSilkperHour int
                @
OldCharID int = (SELECT CharID FROM [_RandomPlayer&DateWHERE [Desclike '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&DateWHERE [Desclike 'Next'),
                
Charname = (SELECT Charname FROM [_RandomPlayer&DateWHERE [Desclike 'Next')
            
WHERE [Desclike '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 [Desclike 'Next'
        
/*!new Random...*/
    
END
    
    
/*Calculation of the silk amount*/
    
Declare @tMinutes bigint = (SELECT [Minutesfrom _OnlineOffline WHERE CharID = @CharID), @Silk int;
    
        IF (@
tMinutes >= 60)
            
BEGIN
                SET 
@Silk CAST(((SELECT [MinutesFROM _OnlineOffline WHERE CharID = @CharID) / 60) as int)
                
UPDATE _OnlineOffline
                SET 
[Minutes] = [Minutes] % 60
                WHERE CharID 
= @CharID
                
            
IF exists (SELECT [WEEKDAYSFROM [_Silk/Hour-ConfigWHERE [WEEKDAYSlike DATENAME(WEEKDAYGETDATE()))
                
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 
Cript_1337 is offline  
Reply




All times are GMT +1. The time now is 04:28.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.