Sosyal açıldı! Bir göz at → Hemen gir →

ÇÖZÜLDÜ VIP KEY İTEM LİSTELEME (Procedure)

Azak

C# .NET Full Stack Developer
Moderatör
Coder
Yardımsever
KAYIT
2 Şub 2021
Mesajlar
121
Çözümler
3
Tepki puanı
1,169
Yaş
30
Konum
Balıkesir
Web
www.gsmteknikdestek.com
Merhaba kolay gelsin cümleten;

VIP_KEY DEKİ İTEMLERİ ÇEKTİRMEK
Procedure Hazırladım test de edemiyorum server falan kurulu değil 2 isteğim var
(1) kodu Denemek
(2) Eğer çalışmıyorsa elinde olan biri Procedure varsa paylaşırsa sevinirim.





SQL:
USE [KO_DATABASE_SERVER_001]
GO
/****** Object:  StoredProcedure [dbo].[VIP_WAREHOUSE_Coz]    Script Date: 5.12.2024 23:36:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[VIP_WAREHOUSE_Coz]
    @strAccountID NVARCHAR(50)
AS
BEGIN
    DECLARE @dwid INT,
            @dur INT,
            @stacksize1 INT,
            @Sira INT,
            @Time DATETIME,
            @Serial BIGINT;

    -- Çözümleme için geçici bir değişken ve başlangıç pozisyonu
    DECLARE @i INT = 1,
            @length INT;

    SELECT @length = DATALENGTH(VIPWarehouseData)
    FROM VIP_WAREHOUSE
    WHERE strAccountID = @strAccountID;

    -- Eğer kullanıcı yoksa işlem sonlanır
    IF @length IS NULL
    BEGIN
        PRINT 'Kullanıcı bulunamadı.';
        RETURN;
    END

    WHILE @i <= @length
    BEGIN
        SELECT
            @dwid = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 4, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 3, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 2, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 1, 1)
            AS INT),
            @dur = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT),
            @stacksize1 = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Zaman ve serial çözümleme
        SELECT
            @Time = CAST(SUBSTRING(CAST(VIPWarehouseDataTime AS VARBINARY), @i, 8) AS DATETIME),
            @Serial = CAST(SUBSTRING(CAST(strSerial AS VARBINARY), @i, 8) AS BIGINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        PRINT 'Eşya ID: ' + CAST(@dwid AS NVARCHAR) +
              ', Durability: ' + CAST(@dur AS NVARCHAR) +
              ', Miktar: ' + CAST(@stacksize1 AS NVARCHAR) +
              --', Zaman: ' + CAST(@Time AS NVARCHAR) +
              ', Seri: ' + CAST(@Serial AS NVARCHAR);

        -- Bir sonraki eşya için adım
        SET @i = @i + 8;
    END
END
 
Çözüm
SQL:
USE [KO_DATABASE_SERVER_001]
GO

ALTER PROCEDURE [dbo].[VIP_WAREHOUSE_Coz]
    @strAccountID NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @dwid INT,
            @dur INT,
            @stacksize1 INT,
            @ItemPos INT = 0, -- Slot ID başlangıç noktası
            @Time DATETIME,
            @Serial BIGINT,
            @ItemName NVARCHAR(100);

    -- Çözümleme için geçici bir değişken ve başlangıç pozisyonu
    DECLARE @i INT = 1,
            @length INT;

    -- VIPWarehouseData uzunluğunu al
    SELECT @length = DATALENGTH(VIPWarehouseData)
    FROM VIP_WAREHOUSE
    WHERE strAccountID = @strAccountID;

    -- Eğer kullanıcı yoksa işlem sonlanır
    IF @length IS NULL
    BEGIN
        PRINT 'Kullanıcı...

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
675
Çözümler
107
Tepki puanı
3,538
Konum
Adana
Kod:
Esya ID: 389072000, Durability: 162, Miktar: 152, Seri: 3891170611368237057
Esya ID: 389071000, Durability: 189, Miktar: 232, Seri: 5332317028928395265
Esya ID: 810305000, Durability: 1, Miktar: 0, Seri: 1873546983206754305
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 48, Seri: 0
Esya ID: 379006000, Durability: 200, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 240, Seri: 0
Esya ID: 800022000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 112, Seri: 0
Esya ID: 810950000, Durability: 24, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 104, Seri: 0
Esya ID: 610001000, Durability: 1, Miktar: 88, Seri: 0
Esya ID: 389191000, Durability: 8, Miktar: 168, Seri: 0
Esya ID: 399129000, Durability: 10, Miktar: 192, Seri: 0
Esya ID: 399128000, Durability: 10, Miktar: 208, Seri: 0
Esya ID: 700002000, Durability: 1, Miktar: 152, Seri: 0
Esya ID: 800079000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 144, Seri: 0
Esya ID: 379258000, Durability: 1, Miktar: 144, Seri: 0
Esya ID: 508122000, Durability: 1, Miktar: 152, Seri: 0
Esya ID: 800015000, Durability: 1, Miktar: 176, Seri: 0
Esya ID: 800014000, Durability: 1, Miktar: 200, Seri: 0
Esya ID: 800077000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0

Bu şekilde listelemeyi yapıyor çalışıyor kod hocam.
 

Azak

C# .NET Full Stack Developer
Moderatör
Coder
Yardımsever
KAYIT
2 Şub 2021
Mesajlar
121
Çözümler
3
Tepki puanı
1,169
Yaş
30
Konum
Balıkesir
Web
www.gsmteknikdestek.com
Kod:
Esya ID: 389072000, Durability: 162, Miktar: 152, Seri: 3891170611368237057
Esya ID: 389071000, Durability: 189, Miktar: 232, Seri: 5332317028928395265
Esya ID: 810305000, Durability: 1, Miktar: 0, Seri: 1873546983206754305
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 48, Seri: 0
Esya ID: 379006000, Durability: 200, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 240, Seri: 0
Esya ID: 800022000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 112, Seri: 0
Esya ID: 810950000, Durability: 24, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 104, Seri: 0
Esya ID: 610001000, Durability: 1, Miktar: 88, Seri: 0
Esya ID: 389191000, Durability: 8, Miktar: 168, Seri: 0
Esya ID: 399129000, Durability: 10, Miktar: 192, Seri: 0
Esya ID: 399128000, Durability: 10, Miktar: 208, Seri: 0
Esya ID: 700002000, Durability: 1, Miktar: 152, Seri: 0
Esya ID: 800079000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 144, Seri: 0
Esya ID: 379258000, Durability: 1, Miktar: 144, Seri: 0
Esya ID: 508122000, Durability: 1, Miktar: 152, Seri: 0
Esya ID: 800015000, Durability: 1, Miktar: 176, Seri: 0
Esya ID: 800014000, Durability: 1, Miktar: 200, Seri: 0
Esya ID: 800077000, Durability: 1, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0
Esya ID: 0, Durability: 0, Miktar: 0, Seri: 0

Bu şekilde listelemeyi yapıyor çalışıyor kod hocam.
TEŞEKKÜR EDERİM EKSİKLERİ GÖRDÜM DÜZETEBİLİRİM İNŞALLAH :)
 

Azak

C# .NET Full Stack Developer
Moderatör
Coder
Yardımsever
KAYIT
2 Şub 2021
Mesajlar
121
Çözümler
3
Tepki puanı
1,169
Yaş
30
Konum
Balıkesir
Web
www.gsmteknikdestek.com
SQL:
USE [KO_DATABASE_SERVER_001]
GO
/****** Object:  StoredProcedure [dbo].[VIP_WAREHOUSE_Coz]    Script Date: 6.12.2024 00:28:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[VIP_WAREHOUSE_Coz]
    @strAccountID NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @dwid INT,
            @dur INT,
            @stacksize1 INT,
            @Sira INT = 0, -- Slot ID başlangıç noktası
            @Time DATETIME,
            @Serial BIGINT,
            @ItemName NVARCHAR(100);

    -- Çözümleme için geçici bir değişken ve başlangıç pozisyonu
    DECLARE @i INT = 1,
            @length INT;

    -- VIPWarehouseData uzunluğunu al
    SELECT @length = DATALENGTH(VIPWarehouseData)
    FROM VIP_WAREHOUSE
    WHERE strAccountID = @strAccountID;

    -- Eğer kullanıcı yoksa işlem sonlanır
    IF @length IS NULL
    BEGIN
        PRINT 'Kullanıcı bulunamadı.';
        RETURN;
    END

    WHILE @i <= @length
    BEGIN
        SELECT
            @dwid = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 4, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 3, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 2, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 1, 1)
            AS INT),
            @dur = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT),
            @stacksize1 = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Eşya adı çözümlemesi (ITEM tablosuna göre)
        SELECT @ItemName = strName
        FROM ITEM
        WHERE Num = @dwid;

        -- Slot ID hesapla (Sıra numarası olarak)
        SET @Sira = @i / 8;

        SELECT
            @Time = CAST(SUBSTRING(CAST(VIPWarehouseDataTime AS VARBINARY), @i, 8) AS DATETIME),
            @Serial = CAST(SUBSTRING(CAST(strSerial AS VARBINARY), @i, 8) AS BIGINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Sonuçları yazdır
        PRINT 'Slot ID: ' + CAST(@Sira AS NVARCHAR) +
              ', Eşya ID: ' + CAST(@dwid AS NVARCHAR) +
              ', Eşya Adı: ' + ISNULL(@ItemName, 'Bilinmiyor') +
              ', Durability: ' + CAST(@dur AS NVARCHAR) +
              ', Miktar: ' + CAST(@stacksize1 AS NVARCHAR) +
              --', Zaman: ' + CAST(@Time AS NVARCHAR) +
              ', Seri: ' + CAST(@Serial AS NVARCHAR);

        -- Bir sonraki eşya için adım
        SET @i = @i + 8;
    END
END

deneyebilen varsa deneyip sonuçu bildirise sevinirim
 

CMDK

Admin
KY Saygın Üye
KY Uzman Üye
KY Kıdemli Üye
Coder
Yardımsever
Bağımlı Üye
KY Editörü
KAYIT
3 Mar 2021
Mesajlar
675
Çözümler
107
Tepki puanı
3,538
Konum
Adana
Kod:
Slot ID: 0, Esya ID: 389072000, Esya Adi: Crisis potion [Limited], Durability: 162, Miktar: 152, Seri: 3891170611368237057
Slot ID: 1, Esya ID: 389071000, Esya Adi: Ibex potion [Limited], Durability: 189, Miktar: 232, Seri: 5332317028928395265
Slot ID: 2, Esya ID: 810305000, Esya Adi: Spirit of Genie, Durability: 1, Miktar: 0, Seri: 1873546983206754305
Slot ID: 3, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 4, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 5, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 6, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 7, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 8, Esya ID: 0, Esya Adi: Spirit of Genie, Durability: 0, Miktar: 48, Seri: 0
Slot ID: 9, Esya ID: 379006000, Esya Adi: Stone of life, Durability: 200, Miktar: 0, Seri: 0
Slot ID: 10, Esya ID: 0, Esya Adi: Stone of life, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 11, Esya ID: 0, Esya Adi: Stone of life, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 12, Esya ID: 0, Esya Adi: Stone of life, Durability: 0, Miktar: 240, Seri: 0
Slot ID: 13, Esya ID: 800022000, Esya Adi: Duration Item, Durability: 1, Miktar: 0, Seri: 0
Slot ID: 14, Esya ID: 0, Esya Adi: Duration Item, Durability: 0, Miktar: 112, Seri: 0
Slot ID: 15, Esya ID: 810950000, Esya Adi: Dark Fragment of Lust, Durability: 24, Miktar: 0, Seri: 0
Slot ID: 16, Esya ID: 0, Esya Adi: Dark Fragment of Lust, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 17, Esya ID: 0, Esya Adi: Dark Fragment of Lust, Durability: 0, Miktar: 104, Seri: 0
Slot ID: 18, Esya ID: 610001000, Esya Adi: Kaul, Durability: 1, Miktar: 88, Seri: 0
Slot ID: 19, Esya ID: 389191000, Esya Adi: Familiar Summon, Durability: 8, Miktar: 168, Seri: 0
Slot ID: 20, Esya ID: 399129000, Esya Adi: War Flash, Durability: 10, Miktar: 192, Seri: 0
Slot ID: 21, Esya ID: 399128000, Esya Adi: DC Flash, Durability: 10, Miktar: 208, Seri: 0
Slot ID: 22, Esya ID: 700002000, Esya Adi: Trina's Piece, Durability: 1, Miktar: 152, Seri: 0
Slot ID: 23, Esya ID: 800079000, Esya Adi: HP Scroll 60%, Durability: 1, Miktar: 0, Seri: 0
Slot ID: 24, Esya ID: 0, Esya Adi: HP Scroll 60%, Durability: 0, Miktar: 144, Seri: 0
Slot ID: 25, Esya ID: 379258000, Esya Adi: Tears of Karivdis, Durability: 1, Miktar: 144, Seri: 0
Slot ID: 26, Esya ID: 508122000, Esya Adi: Golden Mattock voucher, Durability: 1, Miktar: 152, Seri: 0
Slot ID: 27, Esya ID: 800015000, Esya Adi: Speed-Up Potion, Durability: 1, Miktar: 176, Seri: 0
Slot ID: 28, Esya ID: 800014000, Esya Adi: Scroll of Attack, Durability: 1, Miktar: 200, Seri: 0
Slot ID: 29, Esya ID: 800077000, Esya Adi: Scroll of Armor 400, Durability: 1, Miktar: 0, Seri: 0
Slot ID: 30, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 31, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 32, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 33, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 34, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 35, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 36, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 37, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 38, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 39, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 40, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 41, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 42, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 43, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 44, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 45, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 46, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Slot ID: 47, Esya ID: 0, Esya Adi: Scroll of Armor 400, Durability: 0, Miktar: 0, Seri: 0
Gönderi otomatik olarak birleştirildi:

olan eşyadan sonra altta boş olan eşya adlarına aynı ismi ekliyor orayı'da düzenlemen lazım
 

Azak

C# .NET Full Stack Developer
Moderatör
Coder
Yardımsever
KAYIT
2 Şub 2021
Mesajlar
121
Çözümler
3
Tepki puanı
1,169
Yaş
30
Konum
Balıkesir
Web
www.gsmteknikdestek.com
SQL:
USE [KO_DATABASE_SERVER_001]
GO

ALTER PROCEDURE [dbo].[VIP_WAREHOUSE_Coz]
    @strAccountID NVARCHAR(50)
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @dwid INT,
            @dur INT,
            @stacksize1 INT,
            @ItemPos INT = 0, -- Slot ID başlangıç noktası
            @Time DATETIME,
            @Serial BIGINT,
            @ItemName NVARCHAR(100);

    -- Çözümleme için geçici bir değişken ve başlangıç pozisyonu
    DECLARE @i INT = 1,
            @length INT;

    -- VIPWarehouseData uzunluğunu al
    SELECT @length = DATALENGTH(VIPWarehouseData)
    FROM VIP_WAREHOUSE
    WHERE strAccountID = @strAccountID;

    -- Eğer kullanıcı yoksa işlem sonlanır
    IF @length IS NULL
    BEGIN
        PRINT 'Kullanıcı bulunamadı.';
        RETURN;
    END

    WHILE @i <= @length
    BEGIN
        -- VIPWarehouseData içindeki eşya ID, dayanıklılık ve miktarı çöz
        SELECT
            @dwid = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 4, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 3, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 2, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 1, 1)
            AS INT),
            @dur = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT),
            @stacksize1 = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 1) AS VARBINARY(1)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 6, 1) AS VARBINARY(1)), 1, 1)
            AS SMALLINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Miktar null ise sıfır olarak ayarla
        IF @stacksize1 IS NULL
        BEGIN
            SET @stacksize1 = 0;
        END

        -- Eğer eşya ID sıfır veya boş ise eşya adı NULL yap ve miktarı sıfır yap
        IF (@dwid = 0 OR @dwid IS NULL)
        BEGIN
            SET @ItemName = 'Boş Slot';
            SET @stacksize1 = 0;  -- Boş slot ise miktarı sıfır yap
        END
        ELSE
        BEGIN
            -- Eşya adı çözümlemesi (ITEM tablosuna göre)
            SELECT @ItemName = strName
            FROM ITEM
            WHERE Num = @dwid;

            -- Eğer eşya adı bulunamazsa "Bilinmiyor" yap
            SET @ItemName = ISNULL(@ItemName, 'Bilinmiyor');
        END

        -- Slot ID hesapla (Slot sırasını belirlemek için)
        SET @ItemPos = (@i - 1) / 8;

        -- Zaman ve serial çözümleme
        SELECT
            @Time = CAST(SUBSTRING(CAST(VIPWarehouseDataTime AS VARBINARY), @i, 8) AS DATETIME),
            @Serial = CAST(SUBSTRING(CAST(strSerial AS VARBINARY), @i, 8) AS BIGINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Sonuçları yazdır
        PRINT 'Slot ID: ' + CAST(@ItemPos AS NVARCHAR) +
              ', Eşya ID: ' + CAST(@dwid AS NVARCHAR) +
              ', Eşya Adı: ' + @ItemName +
              ', Durability: ' + CAST(@dur AS NVARCHAR) +
              ', Miktar: ' + CAST(@stacksize1 AS NVARCHAR) +
              ', Seri: ' + CAST(@Serial AS NVARCHAR);

        -- Bir sonraki eşya için adım
        SET @i = @i + 8;
    END
END
GO

DÜZELNENMİŞ HALİ FİX.
 
Çözüm

Repub

KY Cezalı Üye
KAYIT
28 Kas 2024
Mesajlar
219
Çözümler
3
Tepki puanı
385
Konum
Güney Afrika
Web
ko-yardim.com
kodta leght sorunu var gördüğüm kadarıyla kesiyor. aynı sorun ben ınventory editor yaparken vardı php pack() functionunu kullanarak aşabildim.
 

Repub

KY Cezalı Üye
KAYIT
28 Kas 2024
Mesajlar
219
Çözümler
3
Tepki puanı
385
Konum
Güney Afrika
Web
ko-yardim.com
PHP:
    if ($user_fetchdata) {
        $strItem = $user_fetchdata['strItem'];
        $itemPosition_inv = 0;
        $invbinarylength = 600;
       
        $deleteSqlinv = "DELETE FROM itemler WHERE strUserID = ?";
        $deleteStmtinv = odbc_prepare($conn, $deleteSqlinv);
        odbc_execute($deleteStmtinv, array($userID));

        while ($itemPosition_inv < $invbinarylength) {
            $itemData_f = substr($strItem, $itemPosition_inv, 8);
           
            $itemID_f = unpack('V', substr($itemData_f, 0, 4))[1];
            $durability_f = unpack('v', substr($itemData_f, 4, 2))[1];
            $stackSize_f = unpack('v', substr($itemData_f, 6, 2))[1];

            // İtem bilgilerini almak için SQL sorgusu
            $itemSql_f = "SELECT Num, Extension FROM ITEM WHERE Num = ?";
            $itemStmt_f = odbc_prepare($conn, $itemSql_f);
            odbc_execute($itemStmt_f, array($itemID_f));
            $itemInfo_f = odbc_fetch_array($itemStmt_f);

            $itemName_f = $itemInfo_f ? $itemInfo_f['Num'] : '';
            $extendedName_f = $itemInfo_f ? $itemInfo_f['Extension'] : '';

            // Veriyi yeni tabloya ekleme
            $insertSql_f = "INSERT INTO itemler (dwid, stacksize, durability, strUserID, sira, itembasicname, extname)
                          VALUES (?, ?, ?, ?, ?, ?, ?)";
            $insertStmt_f = odbc_prepare($conn, $insertSql_f);
            odbc_execute($insertStmt_f, array($itemID_f, $stackSize_f, $durability_f, $userID, $itemPosition_inv / 8, $itemName_f, $extendedName_f));

            $itemPosition_inv += 8;
        }
    }

ben prosedürsüz çalışıyorum yukarıdaki kodu C# işleyiş bicimine çekerseniz editör içine de alabilirsiniz.
istirap'ın paylaşılan sql tarzına göre iş yapar
 
Son düzenleme:

Azak

C# .NET Full Stack Developer
Moderatör
Coder
Yardımsever
KAYIT
2 Şub 2021
Mesajlar
121
Çözümler
3
Tepki puanı
1,169
Yaş
30
Konum
Balıkesir
Web
www.gsmteknikdestek.com
PHP:
    if ($user_fetchdata) {
        $strItem = $user_fetchdata['strItem'];
        $itemPosition_inv = 0;
        $invbinarylength = 600;
       
        $deleteSqlinv = "DELETE FROM itemler WHERE strUserID = ?";
        $deleteStmtinv = odbc_prepare($conn, $deleteSqlinv);
        odbc_execute($deleteStmtinv, array($userID));

        while ($itemPosition_inv < $invbinarylength) {
            $itemData_f = substr($strItem, $itemPosition_inv, 8);
           
            $itemID_f = unpack('V', substr($itemData_f, 0, 4))[1];
            $durability_f = unpack('v', substr($itemData_f, 4, 2))[1];
            $stackSize_f = unpack('v', substr($itemData_f, 6, 2))[1];

            // İtem bilgilerini almak için SQL sorgusu
            $itemSql_f = "SELECT Num, Extension FROM ITEM WHERE Num = ?";
            $itemStmt_f = odbc_prepare($conn, $itemSql_f);
            odbc_execute($itemStmt_f, array($itemID_f));
            $itemInfo_f = odbc_fetch_array($itemStmt_f);

            $itemName_f = $itemInfo_f ? $itemInfo_f['Num'] : '';
            $extendedName_f = $itemInfo_f ? $itemInfo_f['Extension'] : '';

            // Veriyi yeni tabloya ekleme
            $insertSql_f = "INSERT INTO itemler (dwid, stacksize, durability, strUserID, sira, itembasicname, extname)
                          VALUES (?, ?, ?, ?, ?, ?, ?)";
            $insertStmt_f = odbc_prepare($conn, $insertSql_f);
            odbc_execute($insertStmt_f, array($itemID_f, $stackSize_f, $durability_f, $userID, $itemPosition_inv / 8, $itemName_f, $extendedName_f));

            $itemPosition_inv += 8;
        }
    }

ben prosedürsüz çalışıyorum yukarıdaki kodu C# işleyiş bicimine çekerseniz editör içine de alabilirsiniz.
TEŞEKKÜRLER
 

mckarma

KY Kıdemli Üye
KAYIT
6 Ağu 2025
Mesajlar
158
Tepki puanı
12
Merhaba kolay gelsin cümleten;

VIP_KEY DEKİ İTEMLERİ ÇEKTİRMEK
Procedure Hazırladım test de edemiyorum server falan kurulu değil 2 isteğim var
(1) kodu Denemek
(2) Eğer çalışmıyorsa elinde olan biri Procedure varsa paylaşırsa sevinirim.





SQL:
USE [KO_DATABASE_SERVER_001]
GO
/****** Object:  StoredProcedure [dbo].[VIP_WAREHOUSE_Coz]    Script Date: 5.12.2024 23:36:33 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[VIP_WAREHOUSE_Coz]
    @strAccountID NVARCHAR(50)
AS
BEGIN
    DECLARE @dwid INT,
            @dur INT,
            @stacksize1 INT,
            @Sira INT,
            @Time DATETIME,
            @Serial BIGINT;

    -- Çözümleme için geçici bir değişken ve başlangıç pozisyonu
    DECLARE @i INT = 1,
            @length INT;

    SELECT @length = DATALENGTH(VIPWarehouseData)
    FROM VIP_WAREHOUSE
    WHERE strAccountID = @strAccountID;

    -- Eğer kullanıcı yoksa işlem sonlanır
    IF @length IS NULL
    BEGIN
        PRINT 'Kullanıcı bulunamadı.';
        RETURN;
    END

    WHILE @i <= @length
    BEGIN
        SELECT
            @dwid = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 4, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 3, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 2, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i, 4) AS VARBINARY(4)), 1, 1)
            AS INT),
            @dur = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 5, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT),
            @stacksize1 = CAST(
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 1, 1) +
                SUBSTRING(CAST(SUBSTRING(VIPWarehouseData, @i + 7, 2) AS VARBINARY(2)), 2, 1)
            AS SMALLINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        -- Zaman ve serial çözümleme
        SELECT
            @Time = CAST(SUBSTRING(CAST(VIPWarehouseDataTime AS VARBINARY), @i, 8) AS DATETIME),
            @Serial = CAST(SUBSTRING(CAST(strSerial AS VARBINARY), @i, 8) AS BIGINT)
        FROM VIP_WAREHOUSE
        WHERE strAccountID = @strAccountID;

        PRINT 'Eşya ID: ' + CAST(@dwid AS NVARCHAR) +
              ', Durability: ' + CAST(@dur AS NVARCHAR) +
              ', Miktar: ' + CAST(@stacksize1 AS NVARCHAR) +
              --', Zaman: ' + CAST(@Time AS NVARCHAR) +
              ', Seri: ' + CAST(@Serial AS NVARCHAR);

        -- Bir sonraki eşya için adım
        SET @i = @i + 8;
    END
END
HOCAM OZELDEN BI NUMARA ATARMISN EDİTÖRLE ILGILI SENIN EDİTORLE
 
Anasayfa Kayıt ol Giriş yap
Üst Alt