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.
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.
3. Prosedürümüzü yazalım;
_AddLogItem için gerekli kod satırı
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.
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%'
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
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