Metin2 Private Serverler, Metin2 Private Serverlar
Would you like to react to this message? Create an account in a few clicks or log in to continue.



 
AnasayfaLatest imagesGiriş yapKayıt Ol

 

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

Aşağa gitmek 
YazarMesaj
WepMasteR
3.Seviye Üye
3.Seviye Üye
WepMasteR


Cinsiyet : Erkek
Nerden : İzmir
Yaş : 35
Mesaj Sayısı : 56
Başarı : 57000
Rep Gücü : 0

+10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 çekme Empty
MesajKonu: +10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 çekme   +10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 çekme I_icon_minitime20/9/2010, 17:09

Selamlar,

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!


Başlayalım ;

İ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 : AKUMA
*/
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 : AKUMA
*/
 
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 : AKUMA
*/
 
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.
Sayfa başına dön Aşağa gitmek
 
+10,+9 İtemleri +8'e ve +5,+4 Uniqueleri +3 veya +1 çekme
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» VIDEO CEKME-OYUNDA DANS VIDEOLARINIZI GUZEL KARELERI CEKMEK ICIN OYUN VIDEOSU CEKME PROGRAMI.CxSerkan--CSerkan farkiyla.

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
Metin2 Private Serverler, Metin2 Private Serverlar :: Knight Private Serverler :: Prosedür / Kod Paylasımı-
Buraya geçin: