PVPKO +10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 Çekme. - 1299 Private Server Tanıtım,Database,Client ve Procedure Paylaşım Blogu
KnightOnline PVP Server Tanıtımı
Metin2 PVP Server Tanıtım

16 Haziran 2009 Salı

+10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 Çekme.


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ı;

  • Bu Procedur +10 İtemleri +8 / +5 Uniqueleri +3 e veya +1 e Çekmenize yarar Girişte Tarama Yapar.
Denenmiştir , Hiçbir Sakıncası , Hiçbir BUGU Yoktur!

İ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
Editlenecek Tablo ;
Kod:
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
Eğer +4 +5 takıların , +3 olmasını istiyorsanız Bunu Ekleyin Bir Üsttekini 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
                    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
        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
                    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
 
 
    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
Kod:
CREATE procedure [dbo].[CHECK_ENCODE_USER_ITEMS]
@StrUserID varchar(30)
AS
DECLARE
@length int,
@row int,
@i int,
@Num int,
@pos int,
@dur int,
@dur1 int,
@ext int,
@StackSize1 int,
@strName varchar(30),
@strExtName varchar(30),
@CNum varbinary(4),
@cdur varchar(2),
@Source tinyint,
@NEWNum int,
@StackSize int,
@cstack varchar(2),
@InventorySlot int
 
    set @InventorySlot=0
    set @i = 14*0
    set @length = 401
 
select @row=count( * ) from userdata where struserid=@StrUserID
 
if @row>0 
  begin
 
 
Select @Num=Num,
@dur = Durability,
@StackSize1 = stacksize,
        @StrUserID = strUserID
        From RESULT_CHECK_USER_ITEMS
        Where strUserID = @StrUserID and InventorySlot=@InventorySlot
 
    Set @CNum = Substring(cast(@Num as varbinary(4)), 4, 1) + Substring(cast(@Num as varbinary(4)), 3, 1) + Substring(cast(@Num as varbinary(4)), 2, 1) + Substring(cast(@Num as varbinary(4)), 1, 1)
    Set @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))
    Set @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))
 
 
    update UserData set strItem = cast(cast(cast(@CNum as varchar(4)) + @Cdur + @Cstack as varchar(8))   as binary(400)) where strUserID = @strUserID
 
 
set @i=@i+8
set @InventorySlot=@InventorySlot+1
 
 
 
WHILE @InventorySlot < 50
Begin
 
Select @Num=Num,
@dur = Durability,
@StackSize1 = stacksize,
        @StrUserID = strUserID
        From RESULT_CHECK_USER_ITEMS
        Where strUserID = @StrUserID and InventorySlot=@InventorySlot
 
    Set @CNum = Substring(cast(@Num as varbinary(4)), 4, 1) + Substring(cast(@Num as varbinary(4)), 3, 1) + Substring(cast(@Num as varbinary(4)), 2, 1) + Substring(cast(@Num as varbinary(4)), 1, 1)
    Set @Cdur = cast(Substring(cast(@dur as varbinary(2)), 2, 1)+Substring(cast(@dur as varbinary(2)), 1, 1) as varchar(2))
    Set @Cstack = cast(Substring(cast(@StackSize1 as varbinary(2)), 2, 1)+Substring(cast(@StackSize1 as varbinary(2)), 1, 1) as varchar(2))
 
 
    update UserData set strItem = cast( substring(strItem, 1, @i) + cast(cast(@CNum as varchar(4)) + @Cdur + @Cstack as varchar(8)) + substring(strItem, @i+8, 401-@i) as binary(400)) where strUserID = @strUserID
 
 
set @i=@i+8
set @InventorySlot=@InventorySlot+1
 
end
end
Kod:
CREATE procedure [dbo].[CHECK_FIND_USER_ITEMS] 
@StrUserID varchar(30)
AS
DECLARE
@length int,
@i int,
@Num int, 
@dur int,
@duar int,
@StackSize1 int,
@InventorySlot int,
@Row int,
@name varchar(100),
@extname varchar(100),
@ext int
 
 
    set @i = 14*0+1
    set @length = 401
 
select @row=count(*) from userdata where struserid=@StrUserID
 
delete from RESULT_CHECK_USER_ITEMS where struserid=@StrUserID
 
if @row>0 
  begin
 
WHILE @i < @length
Begin
 
Select @Num=cast(cast(substring(cast(substring(strItem, @i,4) as varbinary(4)), 4, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 3, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 2, 1)+substring(cast(substring(strItem, @i,4) as varbinary(4)), 1, 1) as varbinary(4)) as int),
@dur = cast(cast(cast( substring(strItem, @i+5, 1) as varbinary(1))+cast(substring(strItem, @i+4, 1) as varbinary(1)) as varbinary(2)) as int),
@StackSize1 = cast(cast(cast( substring(strItem, @i+7, 1) as varbinary(1))+cast(substring(strItem, @i+6, 1) as varbinary(1)) as varbinary(2)) as int),
        @StrUserID = strUserID
        From UserData
        Where strUserID = @StrUserID
 
 
if @Num=0 
begin
set @extname='Free Slot'
set @name='Free Slot'
end
else
begin
set @extname='Not Find'
set @name='Not Using'
 
select @extname=strName from item where Num=@Num
 
if @extname='Not Find' 
begin
 
set @ext=-1
set @name='Not Find'
 
select @extname=strName,@ext=Slot from item where Num= cast(substring(cast(@Num as varchar(9)), 1, 6)+'000' as int) --cast(substring(cast(@Num as varbinary(4)),0,5) as int)*1000
if @ext>-1
begin
set @duar=-1
    If @ext = 0
        select @duar = Duration,@name=strName  From item where Num = cast(substring(cast(@Num as varchar(9)), 7, 9) as int)
end
end
end
 
insert into RESULT_CHECK_USER_ITEMS (Num,stacksize,Durability,struserid,InventorySlot,ItemName,extname) values(@Num,@stacksize1,@dur,@StrUserID,(@i-1) / 8,@extname,@name )
 
set @i=@i+8
 
end
end
ve Queryden ÇalıstıRınız ;
Kod:
update userdata set UserStatus = '0'
Burada Her hangi bir charın UserStatus'u 1 yaparsanız, o charı kontrol etmeyecektir !
GM'leri zaten kontrol etmez ...

ve En SOn Olarak ,

LOAD_USER_DATA proc'unu açarak ,

Oto Master varsa Hemen Altına yok İse ,
Kod:
SELECT Nation, Race, Class, HairColor, Rank, Title, [Level], [Exp], Loyalty, Face, City, Knights, Fame, 
     Hp, Mp, Sp, Strong, Sta, Dex, Intel, Cha, Authority, Points, Gold, [Zone], Bind, PX, PZ, PY, dwTime, strSkill, strItem,strSerial, sQuestCount, strQuest, MannerPoint, LoyaltyMonthly
    FROM    USERDATA WHERE strUserId = @id
SET @nRet = @@RowCount
Bu Kodun hemen üstüne , Ekliyoruz !


Değiştirilen itemleri ; "RESULT_CHECK_USER_ITEMS_LOGS" Tablosundan gorebiliriz


Dipnot
Bu yazı 16 Haziran 2009 Salı günü yazılmıştır. Bulunduğu kategori : . Yazdığım yazıları RSS 2.0 sistemini kullanarak takip edebilir, dilerseniz yorum yapabilirsiniz.
16 Haziran 2009 Salı by d0FuTr[!] · 0

“+10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 Çekme.” Konusunda 0 Tane Yorum Var

Yorum Gönder

* Cümle büyük harfle başlar, nokta ile biter.
* Noktadan sonra boşluk bırakılır, yeni cümle başlar.
* "gelcem, gitcem, gidiyom" denmez "geleceğim, gideceğim, gidiyorum" denir.
* Herkez" denmez "herkes" denir.
* "Yaaaa" çok laubali bir sözdür.
* "bU şEkiLDE" yazmak sadece okuyanı yorar.
* "Yanlız" değil "Yalnız" denir.
* "ğ" harfi "g" şeklinde yazılamaz.
* "Bende, sende" denmez, "Ben de, sen de" denir.
* "Dahi" anlamındaki "de" ayrı yazılır.
* "Geldimi?" yazılmaz "Geldi mi?" yazılır. Soru takıları ayrı yazılır. "OKmi?" değil, "Tamam mı?" denir.
* "ahmet, belgin, duru" denmez. "Ahmet, Belgin, Duru" denir. Özel isimlerin, illerin, ülkelerin ilk harfleri büyük yazılır.
* "ki" eki, bağlaç olarak kullanılıyorsa ayrı, iyelik eki olarak kullanıyorsa birleşik yazılır.
* "v" yerine "w" yazılmaz...<
* "Evet" Yerine "ewt" yazılmaz.

YASAL UYARI !! Sitemiz, hukuka, yasalara, telif haklarına ve kişilik haklarına saygılı olmayı amaç edinmiştir. Sitemiz, 5651 sayılı yasada tanımlanan yer sağlayıcı olarak hizmet vermektedir. İlgili yasaya göre, site yönetiminin hukuka aykırı içerikleri kontrol etme yükümlülüğü yoktur. Bu nedenle, sitemiz uyar ve kaldır prensibini benimsemiştir. Telif hakkına konu olan eserlerin yasal olmayan bir biçimde paylaşıldığını ve yasal haklarının çiğnendiğini düşünen hak sahipleri veya meslek birlikleri, s.gezer92[at]gmail.com mail adresinden bize ulaşabilirler. Şikayet yerinde görüldüğü takdirde ihlal olduğu düşünülen içerikler sitemizden kaldırılacaktır.
Arkasında Google Var! | Bu site Google Adsense ile gelir sağlamaktadır.