Katılım
31 Mar 2019
Mesajlar
660
Tepkime puanı
445
Puanları
63
Konum
Mersin
Kredi
0.00[TL]
vsro
Merhaba arkadaşlar, biraz araştırmam sonucunda paylaşılmış düzgün bir upgrade scroll prosedürü göremedim.
Bende @Yuppi 'nin paylaşmış olduğu model switcher yapımı'nı nasıl upgrade scroll haline getiririm diye düşünmeye başladım. Sonuç başarılı oldu.
Umarım faydasını görürsünüz.

1. Mevcut itemlerimizi excel'e çekelim;
Excell'i açın ve 1A- ID, 1B- OldItemCodeName, 1C- ID_OldItem, 1D- NewItemCodeName, 1E- ID_NewItem olacak şekilde hazırlıyoruz.
Aşağıdaki query kodumuzu kullanarak öncelikle yükseltmek istediğimiz silahın codename128 ve ID değerlerini alıyoruz. Excel'e yerleştiriyoruz.
SQL:
USE SRO_VT_SHARD
Select Codename128,ID FROM _RefObjCommon WHERE Codename128 like '%RARE%'
and TypeID3 like '6'
and Codename128 not like '%EVENT%'
and CodeName128 not like '%HONOR%'
and CodeName128 not like '%TRADE%'
and Codename128 not like '%11_B%'
and Codename128 not like '%11_C%'
and CodeName128 not like '%12%'
and CodeName128 not like '%13%'
and CodeName128 not like '%14%'
and CodeName128 not like '%15%'
and CodeName128 not like '%16%'
and CodeName128 not like '%17%'
and CodeName128 not like '%18%'
and CodeName128 not like '%19%'
and CodeName128 not like '%20%'
Ardından hangi item hangisine yükseltilecekse ona göre tablomuzu hazırlıyoruz.
Bütün itemlere aynısını yaptıktan sonra excel'deki verileri bekletiyoruz. Aralarda boş satırlar varsa silmeyi unutmayın.

2. Tablomuzu oluşturalım;
Aşağıdaki queryi okutarak tablomuzu oluşturuyoruz ardından excelde hazırladığımız verileri bu tablomuza yerleştiriyoruz.
SQL:
USE [SRO_VT_LOG]
GO

/****** Object:  Table [dbo].[PICK_UpgradeItem]    Script Date: 13.02.2019 13:18:52 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[PICK_UpgradeItem](
    [ID] [int] IDENTITY(0,1) NOT NULL,
    [OldItemCodeName] [varchar](max) NOT NULL,
    [ID_OldItem] [int] NOT NULL,
    [NewItemCodeName] [varchar](max) NOT NULL,
    [ID_NewItem] [int] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

3. Prosedürümüzü yazalım;
_AddLogItem için gerekli kod satırı
SQL:
IF(@Operation=41 AND @slot_To=255 AND (@ItemRefID=42323)) --ID'yi kendi oluşturduğunuz scroll ID sine göre düzenleyiniz. (Scroll'un stack satısını 1 olarak ayarlayınız !!!)
    BEGIN
        EXEC SRO_VT_LOG.dbo.Awaken_Upgrade_Scroll @CharID
    END
New Query açıp excute edeceğimiz prosedür;
Prosedürde "I.OptLevel>=" kısımları var bunların ikisi dönüştürmek için istenen + değeri, biride dönüştürdükten sonra verilecek olan yeni + değeri. Bu değerleri istediğiniz şekilde düzenleyebilirsiniz. Eğer olağan + değeriyle dönüştürsün istiyorsanız bu kısımları silebilirsiniz.
SQL:
USE [SRO_VT_LOG]
GO
/****** Object:  StoredProcedure [dbo].[Awaken_Upgrade_Scroll]    Script Date: 3/3/2021 9:04:18 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Awaken_Upgrade_Scroll]
@CharID INT
AS
BEGIN TRY
    BEGIN TRANSACTION TRAN_Awaken_Upgrade_Scroll
      
        DECLARE @OldItemCodeName VARCHAR(129)=
        (SELECT ROC.CodeName128 FROM SRO_VT_SHARD.._Inventory AS INV
        INNER JOIN SRO_VT_SHARD.._Items AS I ON I.ID64=INV.ItemID AND INV.Slot=6 AND INV.ItemID<>0 AND INV.CharID=@CharID AND I.OptLevel>=+7 --- Dönüştürmek için gereken + ve üzeri değer ---
        INNER JOIN SRO_VT_SHARD.._RefObjCommon AS ROC ON I.RefItemID=ROC.ID AND ROC.TypeID1=3 AND ROC.TypeID2=1 AND ROC.TypeID3=6 AND ROC.Service=1)
        DECLARE @NewItemID INT

        SET @NewItemID=(SELECT ID_NewItem FROM PICK_UpgradeItem WHERE OldItemCodeName=@OldItemCodeName)

        IF (@NewItemID IS NOT NULL AND @NewItemID<>0)
        BEGIN
            UPDATE I SET I.RefItemID=@NewItemID, I.OptLevel=0 ---Dönüştürdükten sonraki verilecek + değeri---
            FROM SRO_VT_SHARD.._Inventory AS INV
            INNER JOIN SRO_VT_SHARD.._Items AS I ON I.ID64=INV.ItemID AND INV.Slot=6 AND INV.ItemID<>0 AND INV.CharID=@CharID AND I.OptLevel>=+7 --- Dönüştürmek için gereken + ve üzeri değer ---
        END

    COMMIT TRANSACTION TRAN_Awaken_Upgrade_Scroll
END TRY
BEGIN CATCH
    ROLLBACK TRANSACTION TRAN_Awaken_Upgrade_Scroll
    PRINT 'Error has been occured while updating process for NewItem'
END CATCH
 
Üst