- #1
Konu Sahibi
: serkankacan
[REHBER] vSRO NPC'deki Sun / Moon / SOS Eşyaları Normale Çevirme
_RefScrapOfPackageItem ve _RefObjCommon Eşitlemesi ile NPC Rare İtemlerini Sıfırlama
_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
RefItemCodeNamemetnini değiştirmek yetersizdir; eşyanınRefItemIDdeğ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.REPLACEfonksiyonu 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?
- SQL Server Management Studio (SSMS) programını açın.
- Üst kısımdan New Query penceresi açın.
- Yukarıdaki 1. Yöntemdeki SQL kodunu yapıştırıp F5 (Execute) ile çalıştırın.
- Sunucunuzdaki GameServer modüllerini yeniden başlatın.
- 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!

