1299 Private Serverlarda, genellikle +8 ve üstü itemler
tercih ediliyor.. Fakat DB'nizde +9 ve +10 itemler olup bunların +'sını
8'e çekmek istiyorsanız.. Aşağıda tam size göre bir paylaşım var .
Aşağıdaki Kodlar Tamamen AKUMA'ya aittir. Kodların amacı;
İlk Once ITEM Tablomuzda biraz değişiklik yapalım , +10 itemler +0 yazıyor , Onları +10 olarak değiştirelim.
Bu kodu Query'den çalıstırın ve bekleyin ... 5- 10 Dakika ve daha fazla sürebilir ...
Eklenecek tablolarımız :
Userdata'yı Desing Table diyerek açın ve , En Son'a bir Satır Ekleyin , İsmi UserStatus olsun , int Olacak ... Nulls İşaretsiz olacak ! ve Default değeri 0 olacak !
Eklenecek Prosedürler :
Eğer +4 +5 Takıların , +1 Olmasını istiyorsanız Bunu Ekleyin ! Bir Alttakini eklemeyin !
tercih ediliyor.. Fakat DB'nizde +9 ve +10 itemler olup bunların +'sını
8'e çekmek istiyorsanız.. Aşağıda tam size göre bir paylaşım var .
Aşağıdaki Kodlar Tamamen AKUMA'ya aittir. Kodların amacı;
- Bu Procedur +10 İtemleri +8 / +5 Uniqueleri +3 e veya +1 e Çekmenize yarar Girişte Tarama Yapar.
İlk Once ITEM Tablomuzda biraz değişiklik yapalım , +10 itemler +0 yazıyor , Onları +10 olarak değiştirelim.
- Kod:
DECLARE @Num int,@strName varchar(100),@ProcessCount int
/*
Author : Ceribrio
*/
DECLARE CRS_ITEM_TABLE CURSOR FOR
SELECT Num,strName FROM ITEM WHERE strName LIKE '%(+0)%' AND Kind <> 91 AND Kind <> 92 AND Kind <> 93 AND Kind <> 94
SET @ProcessCount = 0
OPEN CRS_ITEM_TABLE
FETCH NEXT FROM CRS_ITEM_TABLE INTO @Num,@strName
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @ItemName varchar(100),@ItemNum int,@RealItemName varchar(100),@CheckItemName varchar(100),@NewItemName varchar(100),@FindCount int
SELECT @ItemNum = Num, @ItemName = strName FROM ITEM WHERE Num = @Num - 2
SELECT @FindCount = Count(Num) FROM ITEM WHERE Num = @ItemNum
IF @FindCount <> 0
BEGIN
SET @RealItemName = RTRIM(LTRIM(REPLACE(@strName,'(+0)','')))
SET @CheckItemName = RTRIM(LTRIM(REPLACE(@ItemName,'(+8)','')))
IF @RealItemName = @CheckItemName
BEGIN
SET @NewItemName = @RealItemName + ' (+10)'
UPDATE ITEM SET strName = @NewItemName WHERE Num = @Num
SET @ProcessCount = @ProcessCount + 1
END
END
FETCH NEXT FROM CRS_ITEM_TABLE INTO @Num,@strName
END
CLOSE CRS_ITEM_TABLE
DEALLOCATE CRS_ITEM_TABLE
PRINT 'Değiştirilen İtem Sayısı : ' + RTRIM(LTRIM(STR(@ProcessCount)))
Bu kodu Query'den çalıstırın ve bekleyin ... 5- 10 Dakika ve daha fazla sürebilir ...
Eklenecek tablolarımız :
- Kod:
/****** Object: Table [dbo].[RESULT_CHECK_USER_ITEMS] Script Date: 07/12/2008 14:12:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[RESULT_CHECK_USER_ITEMS](
[Num] [int] NULL,
[stacksize] [smallint] NULL,
[Durability] [smallint] NULL,
[strUserId] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[InventorySlot] [int] NULL,
[ItemName] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[extname] [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
- Kod:
/****** Object: Table [dbo].[RESULT_CHECK_USER_ITEMS_LOGS] Script Date: 07/12/2008 14:13:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[RESULT_CHECK_USER_ITEMS_LOGS](
[strUserId] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[OldItemNum] [int] NULL,
[OldItemName] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[OptimizedItemNum] [int] NULL,
[OptimizedItemName] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
Userdata'yı Desing Table diyerek açın ve , En Son'a bir Satır Ekleyin , İsmi UserStatus olsun , int Olacak ... Nulls İşaretsiz olacak ! ve Default değeri 0 olacak !
Eklenecek Prosedürler :
Eğer +4 +5 Takıların , +1 Olmasını istiyorsanız Bunu Ekleyin ! Bir Alttakini eklemeyin !
- Kod:
CREATE PROCEDURE [dbo].[CHECK_USER_ITEMS]
(@strUserID varchar(50))
AS
/*
Author : Ceribrio
*/
BEGIN
DECLARE @Authority int,@UserStatus int
SELECT @Authority = Authority,@UserStatus = UserStatus FROM USERDATA WHERE strUserID = @strUserID
IF (@Authority <> 0) OR (@UserStatus <> 1)
BEGIN
TRUNCATE TABLE RESULT_CHECK_USER_ITEMS
EXEC CHECK_FIND_USER_ITEMS @strUserID
DECLARE @Num int,@ItemName varchar(100),@InventorySlotNumber int
DECLARE CRS_RESULT_CHECK_USER_ITEMS CURSOR FOR
SELECT Num,ItemName,InventorySlot FROM RESULT_CHECK_USER_ITEMS WHERE strUserID = @strUserID AND ItemName <> 'Free Slot'
OPEN CRS_RESULT_CHECK_USER_ITEMS
FETCH NEXT FROM CRS_RESULT_CHECK_USER_ITEMS INTO @Num, @ItemName, @InventorySlotNumber
WHILE (@@FETCH_STATUS = 0)
BEGIN
DECLARE @ItemStrName varchar(100),@ItemNum int,@NewItemNum int,@Kind tinyint,@ItemType int,@CheckNum int
SET @ItemStrName = ''
SET @ItemNum = 0
SET @NewItemNum = 0
SET @Kind = 0
SET @ItemType = 0
SET @CheckNum = 0
IF CHARINDEX('+10',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind FROM ITEM WHERE Num = @Num
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 2
IF (@Kind != 91) OR (@Kind != 92) OR (@Kind != 93) OR (@Kind != 94)
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum,ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
ELSE IF CHARINDEX('+9',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind FROM ITEM WHERE Num = @Num
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 1
IF (@Kind != 91) OR (@Kind != 92) OR (@Kind != 93) OR (@Kind != 94)
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum,ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
ELSE IF CHARINDEX('+5',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind,@ItemType = ItemType FROM ITEM WHERE Num = @Num
IF @Kind = 91 OR @Kind = 92 OR @Kind = 93 OR @Kind = 94
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
IF @ItemType = 4
BEGIN
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 4
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum, ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
END
ELSE IF CHARINDEX('+4',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind,@ItemType = ItemType FROM ITEM WHERE Num = @Num
IF @Kind = 91 OR @Kind = 92 OR @Kind = 93 OR @Kind = 94
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
IF @ItemType = 4
BEGIN
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 3
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum, ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
END
ELSE IF CHARINDEX('+3',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind,@ItemType = ItemType FROM ITEM WHERE Num = @Num
IF @Kind = 91 OR @Kind = 92 OR @Kind = 93 OR @Kind = 94
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
IF @ItemType = 4
BEGIN
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 2
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum, ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
END
ELSE IF CHARINDEX('+2',@ItemName) <> 0
BEGIN
SELECT @ItemNum = Num,@Kind = Kind,@ItemType = ItemType FROM ITEM WHERE Num = @Num
IF @Kind = 91 OR @Kind = 92 OR @Kind = 93 OR @Kind = 94
BEGIN
SELECT @CheckNum = COUNT(Num) FROM ITEM WHERE Num = @NewItemNum
IF @CheckNum <> 0
BEGIN
IF @ItemType = 4
BEGIN
SELECT @ItemStrName = strName,@NewItemNum = Num FROM ITEM WHERE Num = @ItemNum - 1
UPDATE RESULT_CHECK_USER_ITEMS SET Num = @NewItemNum, ItemName = '# DÜZELTİLDİ : ' + RTRIM(LTRIM(@ItemStrName)) + ' #' WHERE ItemName = @ItemName AND InventorySlot = @InventorySlotNumber
INSERT INTO RESULT_CHECK_USER_ITEMS_LOGS VALUES (@strUserID,@Num,@ItemName,@NewItemNum,@ItemStrName)
END
END
END
END
FETCH NEXT FROM CRS_RESULT_CHECK_USER_ITEMS INTO @Num, @ItemName, @InventorySlotNumber
END
CLOSE CRS_RESULT_CHECK_USER_ITEMS
DEALLOCATE CRS_RESULT_CHECK_USER_ITEMS
EXEC CHECK_ENCODE_USER_ITEMS @strUserID
END
END