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

vSro Paylaşım vSRO NPC Eşya Alış ve Satış Fiyatlarını Toplu Değiştirme

Cevaplar0
Görüntüleme3
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[REHBER & QUERY] vSRO NPC Eşya Alış ve Satış Fiyatlarını Toplu Değiştirme
_RefPricePolicyOfItem ve _RefObjItem Üzerinden NPC Satın Alma Maliyeti ile Geri Satış Fiyatını Güncelleme



Merhaba değerli forum sakinleri,

Silkroad Online sunucularında NPC'de satılan eşyaların (Avatar, Elixir, Stone, Kervan Malları, Potlar vb.) fiyatlarını tek tek düzenlemek yerine tek bir SQL sorgusuyla topluca güncellemek isteyebilirsiniz.

Silkroad fiyatlandırma mimarisinde iki ayrı mekanizma çalışır:
  • NPC'den Satın Alma Bedeli (_RefPricePolicyOfItem): Oyuncunun NPC'deki paketi alırken ödediği tutar (Cost) ve para birimidir (PaymentDevice).
  • NPC'ye Geri Satış Fiyatı (_RefObjItem): Oyuncunun eşyayı NPC penceresine sürükleyip sattığında kazandığı Gold miktarıdır (SellPrice).

Aşağıda hem paket alış bedellerini (Gold, Silk, Coin) hem de geri satış fiyatlarını güvenle güncelleyebileceğiniz optimize sorguları paylaşıyoruz.

Teknik Bilgilendirme (PaymentDevice Kodları)' Alıntı:
_RefPricePolicyOfItem.PaymentDevice sütunundaki değerlerin karşılıkları:
  • 1: Normal Oyun Altını (Gold)
  • 2: Normal Silk
  • 4: Hediye / Point Silk (Gift Silk)
  • 16 - 32 - 64: Arena Coin, Copper/Silver/Gold/Iron Coin kombinasyonları (Özel Coin Sistemleri)



1. ADIM: Mevcut Fiyatları Kontrol Etme (Analiz Sorgusu)

Düzenleme yapmadan önce belirlediğiniz eşya grubunun güncel fiyatlarını listelemek için:

SQL:
USE [SRO_VT_SHARD]
GO

-- ===================================================================
-- MEVCUT ALIŞ VE SATIŞ FİYATLARINI LİSTELEME
-- ===================================================================
SELECT 
    PPI.RefPackageItemCodeName AS [Paket Kodu],
    PPI.PaymentDevice           AS [Para Birimi (1: Gold, 2: Silk)],
    PPI.Cost                    AS [NPC Alis Fiyati (Maliyet)],
    ROI.Price                   AS [Item Taban Fiyati],
    ROI.SellPrice               AS [NPC'ye Geri Satis Fiyati]
FROM dbo._RefPricePolicyOfItem PPI WITH (NOLOCK)
INNER JOIN dbo._RefPackageItem PI WITH (NOLOCK) 
    ON PPI.RefPackageItemCodeName = PI.CodeName128
INNER JOIN dbo._RefObjCommon ROC WITH (NOLOCK) 
    ON PI.RefItemCodeName = ROC.CodeName128
INNER JOIN dbo._RefObjItem ROI WITH (NOLOCK) 
    ON ROC.Link = ROI.ID
WHERE PPI.Service = 1 
  AND PPI.RefPackageItemCodeName LIKE 'PACKAGE_ITEM_MALL_AVATAR%' -- Hedef Paket Grubu



2. ADIM: NPC Alış Fiyatını (Maliyet) Toplu Güncelleme

Aşağıdaki sorgu ile seçtiğiniz grubun satın alma para birimini (Örn: Gold) ve maliyetini (Örn: 50.000.000 Gold) güncelleyebilirsiniz:

SQL:
USE [SRO_VT_SHARD]
GO

-- ===================================================================
-- NPC ALIŞ BEDELİ GÜNCELLEME (_RefPricePolicyOfItem)
-- ===================================================================
DECLARE @NewCost BIGINT = 50000000 -- Yeni Alış Fiyatı (Örn: 50M Gold)
DECLARE @CurrencyType INT = 1      -- Para Birimi (1: Gold, 2: Silk)

UPDATE dbo._RefPricePolicyOfItem
SET 
    PaymentDevice = @CurrencyType,
    Cost = @NewCost
WHERE Service = 1
  AND RefPackageItemCodeName LIKE 'PACKAGE_ITEM_MALL_AVATAR%'

PRINT '====================================================='
PRINT 'BAŞARILI: Seçilen paketlerin NPC alış bedeli ' + CAST(@NewCost AS VARCHAR(20)) + ' olarak güncellendi!'
PRINT '====================================================='



3. ADIM: NPC'ye Geri Satış (SellPrice) Fiyatını Toplu Güncelleme

Oyuncuların eşyayı NPC'ye geri sattıklarında alacakları Gold miktarını belirlemek için:

SQL:
USE [SRO_VT_SHARD]
GO

-- ===================================================================
-- NPC'YE GERİ SATIŞ FİYATI GÜNCELLEME (_RefObjItem.SellPrice)
-- ===================================================================
DECLARE @NewSellPrice BIGINT = 1 -- Eşya geri satıldığında verilecek Gold (Örn: 1 Gold)

UPDATE ROI
SET ROI.SellPrice = @NewSellPrice
FROM dbo._RefObjItem ROI
INNER JOIN dbo._RefObjCommon ROC ON ROC.Link = ROI.ID
INNER JOIN dbo._RefPackageItem PI ON PI.RefItemCodeName = ROC.CodeName128
WHERE PI.CodeName128 LIKE 'PACKAGE_ITEM_MALL_AVATAR%'

PRINT 'Seçilen eşyaların NPC geri satış bedeli ' + CAST(@NewSellPrice AS VARCHAR(20)) + ' Gold yapıldı.'



Nasıl Uygulanır & Senkronize Edilir?

  1. SQL Server Management Studio (SSMS) programını açıp yukarıdaki sorguları çalıştırın.
  2. NPC paket fiyatları (_RefPricePolicyOfItem) sunucu taraflıdır; anında geçerli olması için GameServer pencerelerini yeniden başlatmanız gerekir.
  3. Eğer SellPrice (Geri Satış) değerini güncellediyseniz, oyuncuların eşyayı çantalarından incelerken doğru satış bedelini görebilmeleri için Media.pk2 içerisindeki server_dep\itemdata_xxx.txt dosyasında ilgili eşyanın SellPrice sütununu da aynı rakama eşitleyip patch atmanız önerilir.

Sorularınızı ve özel coin fiyatlandırma taleplerinizi konu altından paylaşabilirsiniz. Herkese keyifli geliştirmeler!
 

Konuyu görüntüleyenler

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