İçeriğe geç
Türkiye'nin SRO tanıtım & topluluk platformu

vSro Paylaşım vSRO Durability (Dayanıklılık) Reset & Repair Scroll Sistemi

Cevaplar0
Görüntüleme7
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[REHBER & QUERY] vSRO Durability (Dayanıklılık) Reset & Repair Scroll Sistemi
Slot 13'teki Eşyanın Statlarına Dokunmadan Dayanıklılığını (Data) Maksimuma Eşitleme



Merhaba değerli forum sakinleri,

Sunucunuzda dayanıklılığı (Durability) sıfırlanmış, yıpranmış veya tamir edilmesi gereken eşyalar için özel bir **Durability Reset Scroll** tasarlamak isteyebilirsiniz.

İnternette dolaşan eski paylaşımlarda MagParamNum = 0, MagParam1 = NULL şeklinde kodlar bulunmaktadır; BU KODLARI KESİNLİKLE KULLANMAYINIZ! Çünkü o kodlar durability düzeltmez; eşyanın üzerindeki STR, INT, HP, MP, Critical gibi **tüm blue statlarını tamamen siler ve itemi çöp eder!**

Silkroad veritabanında eşyanın mevcut dayanıklılığı `_Items` tablosundaki Data sütununda tutulur. Aşağıda eşyanın hiçbir statına dokunmadan sadece dayanıklılığını maksimum değere eşitleyen ve senkronizasyon için oyuncuyu güvenle DC eden hatasız prosedürü paylaşıyoruz.

Önemli Uyarı' Alıntı:
DİKKAT (Kullanım Kuralı):
  • Oyuncu tamir etmek istediği eşyayı çantasının **ilk yuvasına (Slot 13)** koymalıdır.
  • Scroll basıldığında sunucu belleğindeki eşya verisinin veritabanıyla çakışmaması için oyuncu anında oyundan düşürülür (DC edilir). Tekrar girdiğinde eşyası %100 tamir edilmiş olur.
  • İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeğinizi almayı unutmayınız.



Hatasız & Güvenli _AddLogItem Kodu

SRO_VT_LOG
veritabanını açın, **Programmability -> Stored Procedures -> _AddLogItem** prosedürüne sağ tıklayıp **Modify** deyin. AS bloğunun uygun bir yerine aşağıdaki kodu ekleyin:

SQL:
-- ===================================================================
-- DURABILITY RESET / REPAIR SCROLL SİSTEMİ
-- @Operation = 41 (Eşya Sağ Tıklanarak Tüketildiğinde Tetiklenir)
-- @ItemRefID = 78343 (Kullandığınız Scroll'un RefItemID Değeri)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 78343)
BEGIN
    -- 1. Çantanın ilk yuvasındaki (Slot 13) eşyanın ID64 ve Maksimum Durability bilgisini al
    DECLARE @TargetItemID BIGINT
    DECLARE @MaxDurability INT

    SELECT 
        @TargetItemID = I.ID64,
        @MaxDurability = ROI.Durability
    FROM SRO_VT_SHARD.dbo._Inventory INV
    INNER JOIN SRO_VT_SHARD.dbo._Items I ON I.ID64 = INV.ItemID
    INNER JOIN SRO_VT_SHARD.dbo._RefObjCommon ROC ON ROC.ID = I.RefItemID
    INNER JOIN SRO_VT_SHARD.dbo._RefObjItem ROI ON ROI.ID = ROC.Link
    WHERE INV.CharID = @CharID 
      AND INV.Slot = 13
      AND INV.ItemID > 0

    -- 2. Eğer Slot 13'te geçerli bir eşya varsa dayanıklılığı fulle
    IF (@TargetItemID IS NOT NULL AND @MaxDurability > 0)
    BEGIN
        -- Sadece eşyanın mevcut dayanıklılığını (Data) maksimum değere eşitle:
        UPDATE SRO_VT_SHARD.dbo._Items
        SET Data = @MaxDurability
        WHERE ID64 = @TargetItemID

        -- 3. KRİTİK ADIM: Karakteri anında DC et (Bellek çakışmasını engeller, tamir kalıcı olur)
        UPDATE SRO_VT_SHARD.dbo._User
        SET Sec_Primary = 1
        WHERE CharID = @CharID
    END
END



Neden Bu Yöntem Doğru?

  1. Stat Güvenliği: MagParam sütunlarına dokunulmadığı için silah veya zırhın üzerindeki hiçbir Blue, White veya Advanced Elixir özelliği kaybolmaz.
  2. Dinamik Dayanıklılık: Eşyanın orijinal maksimum dayanıklılığı _RefObjItem tablosundan çekilerek yazılır; böylece ister kalkan ister silah olsun her eşya kendi orijinal kapasitesine göre tamir edilir.
  3. Bellek Koruması (Sec_Primary = 1): Karakter anında oyundan düşürülerek GameServer'ın bozuk dayanıklılık verisini veritabanının üzerine tekrar yazması (Rollback bugu) kesin olarak engellenir.



Nasıl Test Edilir?

  1. SQL kodunu `_AddLogItem` prosedürüne kaydedin (F5 / Execute).
  2. Dayanıklılığı azalmış veya kırılmış bir eşyayı envanterin **en sol üst köşesine (1. Slot - Sistemdeki Slot 13)** yerleştirin.
  3. 78343 numaralı parşömene sağ tıklayarak basın.
  4. Karakteriniz oyundan düşecektir (Disconnect).
  5. Oyuna tekrar girdiğinizde eşyanın dayanıklılığının hiçbir stat kaybı olmadan %100 tamir olduğunu göreceksiniz.

Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Etiketler
Etiketler Etiketler
database durability item sql vsro
Şu anda sitemizde 40,454 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,311
Mesajlar 4,191
Kullanıcılar 1,624
Son üye mrt
Geri
Üst