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

vSro Paylaşım vSRO NPC'deki Sun / Moon / SOS Eşyaları Normale Çevirme

Cevaplar0
Görüntüleme4
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[REHBER] vSRO NPC'deki Sun / Moon / SOS Eşyaları Normale Çevirme
_RefScrapOfPackageItem ve _RefObjCommon Eşitlemesi ile NPC Rare İtemlerini Sıfırlama



Merhaba değerli forum sakinleri,

Daha önceden NPC'lere eklenmiş olan SOS (_A_RARE), Moon (_B_RARE) veya Sun (_C_RARE) eşyaları kaldırıp yerlerine orijinal normal (_A, _B vb.) eşyaları geri getirmek isteyebilirsiniz.

Sadece string değiştirmek yerine, referans ID (RefItemID) değerini de `_RefObjCommon` ile eşitleyerek sunucu crash riskini tamamen ortadan kaldıran güvenli sorgu aşağıdadır.

Önemli Uyarı' Alıntı:
DİKKAT (Referans Bütünlüğü):
  • Sadece RefItemCodeName metnini değiştirmek yetersizdir; eşyanın RefItemID değeri de güncellenmelidir. Aşağıdaki sorgu her iki sütunu da otomatik olarak senkronize eder.
  • İşlem öncesinde SRO_VT_SHARD yedeğinizi almayı unutmayınız.
  • Değişikliklerin oyuna yansıması için GameServer modüllerinin yeniden başlatılması (Restart) gerekmektedir.



Kullanılan Kod Mantığı

  • _C_RARE : Sun eşyaların kod son ekidir (Örn: SOS için _A_RARE, Moon için _B_RARE).
  • _A : Normal eşyaların standart suffix (son ek) değeridir.
  • REPLACE fonksiyonu eşya kodundaki Rare ibaresini silip yerine normal eşya kodunu yazar.



1. YÖNTEM: Güvenli ve Tam Senkronize SQL Sorgusu (Önerilen)

Bu sorgu hem `RefItemCodeName` metnini düzeltir hem de `_RefObjCommon` tablosuna bağlanarak doğru `RefItemID` değerini atar:

SQL:
USE [SRO_VT_SHARD]
GO

-- 1. ADIM: Eşya Kod Adlarını Normale Çevir (_C_RARE -> _A)
UPDATE dbo._RefScrapOfPackageItem
SET RefItemCodeName = REPLACE(RefItemCodeName, '_C_RARE', '_A')
WHERE RefItemCodeName LIKE 'ITEM_EU_%_%_C_RARE'
   OR RefItemCodeName LIKE 'ITEM_CH_%_%_C_RARE'

-- 2. ADIM: RefItemID Değerlerini _RefObjCommon ile Eşitle (Kritik Güvenlik Adımı)
UPDATE SPI
SET SPI.RefItemID = ROC.ID
FROM dbo._RefScrapOfPackageItem SPI
JOIN dbo._RefObjCommon ROC ON ROC.CodeName128 = SPI.RefItemCodeName
WHERE SPI.RefItemCodeName LIKE 'ITEM_EU_%_%_A'
   OR SPI.RefItemCodeName LIKE 'ITEM_CH_%_%_A'



2. YÖNTEM: SOS ve Moon İtemler İçin Uyarlama

Eğer NPC'lerinizde **SOS (Seal of Star)** veya **Moon (Seal of Moon)** eşyalar varsa, aynı mantıkla aşağıdaki blokları kullanabilirsiniz:

SOS (_A_RARE) Eşyaları Normale Çevirmek İçin:
SQL:
USE [SRO_VT_SHARD]
GO

UPDATE dbo._RefScrapOfPackageItem
SET RefItemCodeName = REPLACE(RefItemCodeName, '_A_RARE', '_A')
WHERE RefItemCodeName LIKE '%_A_RARE'

UPDATE SPI
SET SPI.RefItemID = ROC.ID
FROM dbo._RefScrapOfPackageItem SPI
JOIN dbo._RefObjCommon ROC ON ROC.CodeName128 = SPI.RefItemCodeName

Moon (_B_RARE) Eşyaları Normale Çevirmek İçin:
SQL:
USE [SRO_VT_SHARD]
GO

UPDATE dbo._RefScrapOfPackageItem
SET RefItemCodeName = REPLACE(RefItemCodeName, '_B_RARE', '_A')
WHERE RefItemCodeName LIKE '%_B_RARE'

UPDATE SPI
SET SPI.RefItemID = ROC.ID
FROM dbo._RefScrapOfPackageItem SPI
JOIN dbo._RefObjCommon ROC ON ROC.CodeName128 = SPI.RefItemCodeName



Nasıl Uygulanır?

  1. SQL Server Management Studio (SSMS) programını açın.
  2. Üst kısımdan New Query penceresi açın.
  3. Yukarıdaki 1. Yöntemdeki SQL kodunu yapıştırıp F5 (Execute) ile çalıştırın.
  4. Sunucunuzdaki GameServer modüllerini yeniden başlatın.
  5. Oyuna giriş yapıp NPC'leri kontrol edin.

Sorularınızı ve takıldığınız yerleri bu konu altından paylaşabilirsiniz. Herkese iyi forumlar!
 

Konuyu görüntüleyenler

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