- #1
Konu Sahibi
: serkankacan
[REHBER & EKONOMİ] vSRO Kervan Gelirlerini Arttırma (Trader, Hunter, Thief Kazanç Ayarı)
_ItemQuotation, _RefPricePolicyOfItem ve _RefObjItem Üzerinden Kervan Kâr Yüzdesini, Mal Fiyatını ve Stack Limitini Optimize Etme
_ItemQuotation, _RefPricePolicyOfItem ve _RefObjItem Üzerinden Kervan Kâr Yüzdesini, Mal Fiyatını ve Stack Limitini Optimize Etme
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında Job aktivitesini ve şehirler arası ticareti canlandırmanın en temel yolu kervan kazançlarını (Trader net kârı, Hunter koruma payı ve Thief kaçak mal satış gelirini) sunucunun Gold dengesine göre ayarlamaktır.
Kervan gelirleri 3 ana sütun üzerinden belirlenir:
- Kâr Yüzdesi / Borsa Çarpanı (_ItemQuotation): Malın teslim edildiği şehirdeki taban kâr oranını (
BaseQuot, Quot_LB, Quot_UB) belirler. - Alış Maliyeti (_RefPricePolicyOfItem): Trader'ın NPC'den mal çekerken ödediği birim fiyattır.
- Maksimum Stack (_RefObjItem.MaxStack): Kervan petinin her bir slotuna kaç adet mal istiflenebileceğini belirler.
İnternetteki eski paylaşımlarda çarpan
99.9 gibi kontrolsüz verildiği için tek kervanda trilyonlarca Gold basılıp ekonomi buga girmektedir. Aşağıda dengeli, kontrollü ve ID aramadan dinamik çalışan optimize sorguyu paylaşıyoruz.Teknik Bilgilendirme (Kâr Çarpanı Mantığı)' Alıntı:
- Kâr Çarpanı (@ProfitMultiplier): Örneğin
2.0yaparsanız orijinal kâr %100 (2 kat) artar.3.0yaparsanız 3 katına çıkar.- MaxStack (@NewStack): Standartta
40'tır. Yüksek kapasiteli taşımalar için250,1000veya5000yapabilirsiniz.- İşlem öncesinde SRO_VT_SHARD yedeğinizi almayı unutmayınız.
Hatasız & Dinamik Kervan Gelir Arttırma SQL Kodu
SRO_VT_SHARD veritabanını seçip aşağıdaki optimize bloğu çalıştırın:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- 1. ADIM: AYARLAR VE ÇARPANLAR
-- ===================================================================
DECLARE @ProfitMultiplier FLOAT = 2.5 -- Kâr Katsayısı (Örn: 2.5 katına çıkarır)
DECLARE @UnitCost BIGINT = 5000 -- NPC Mal Alış Birim Bedeli
DECLARE @UnitSellPrice BIGINT = 150 -- Mal Taban Satış Değeri (_RefObjItem.SellPrice)
DECLARE @ThiefSellPrice BIGINT = 5000 -- Kaçak Mal (Thief) Satış Tabanı (_RefObjItem.Price)
DECLARE @NewStack INT = 1000 -- Slot Başı Maksimum Mal Kapasitesi (Stack)
-- ===================================================================
-- 2. ADIM: BORSA KÂR ORANLARINI ARTIRMA (_ItemQuotation)
-- Jangan, Donwhang, Hotan, Alex vb. tüm kervan mallarını otomatik bulur
-- ===================================================================
UPDATE IQ
SET
IQ.BaseQuot = ROUND(IQ.BaseQuot * @ProfitMultiplier, 2),
IQ.Quot_LB = ROUND(IQ.Quot_LB * @ProfitMultiplier, 2),
IQ.Quot_UB = ROUND(IQ.Quot_UB * @ProfitMultiplier, 2)
FROM dbo._ItemQuotation IQ
INNER JOIN dbo._RefObjCommon ROC ON IQ.RefItemID = ROC.ID
WHERE ROC.CodeName128 LIKE 'ITEM_ETC_TRADE_%'
AND ROC.Service = 1
-- ===================================================================
-- 3. ADIM: NPC SATIN ALMA MALİYETİ (_RefPricePolicyOfItem)
-- ===================================================================
UPDATE dbo._RefPricePolicyOfItem
SET Cost = @UnitCost
WHERE Service = 1
AND RefPackageItemCodeName LIKE 'PACKAGE_ITEM_ETC_TRADE_%'
-- ===================================================================
-- 4. ADIM: TABAN SATIŞ, THIEF FİYATI VE STACK GÜNCELLEME (_RefObjItem)
-- ===================================================================
UPDATE ROI
SET
ROI.Price = @ThiefSellPrice, -- Thief Kazanç Tabanı
ROI.SellPrice = @UnitSellPrice, -- Trader Satış Referansı
ROI.MaxStack = @NewStack -- Çanta / Pet İstif Miktarı
FROM dbo._RefObjItem ROI
INNER JOIN dbo._RefObjCommon ROC ON ROC.Link = ROI.ID
WHERE ROC.CodeName128 LIKE 'ITEM_ETC_TRADE_%'
AND ROC.Service = 1
PRINT '====================================================='
PRINT 'BAŞARILI: Kervan kâr oranları ve gelirleri güncellendi!'
PRINT 'Kâr Çarpanı: ' + CAST(@ProfitMultiplier AS VARCHAR(10)) + 'x'
PRINT 'Yeni Stack Limiti: ' + CAST(@NewStack AS VARCHAR(10))
PRINT 'Değişikliklerin aktif olması için GameServer yeniden başlatılmalıdır.'
PRINT '====================================================='
Neden Bu Optimize Versiyon Kullanılmalı?
- Ekonomiyi Korur: Orijinal koddaki devasa
99.9çarpanı yerine kontrollü oran (@ProfitMultiplier) kullanılarak sunucudaki Gold enflasyonu ve olası negatif Gold (taşma) bugları önlenmiştir. - Sıfır ID Bağımlılığı:
BETWEENkomutlarıyla tek tek ID aramak yerineITEM_ETC_TRADE_%koduyla veritabanınızdaki Jangan, Hotan, Dowhang ve Alexandria mallarının tümü otomatik tespit edilir. - Doğru Tablo Eşleştirmesi: Fiyatlar
_RefObjCommonyerine oyun motorunun asıl okuduğu_RefObjItemtablosuna işlenir.
Nasıl Uygulanır & Senkronize Edilir?
- SQL Server Management Studio (SSMS) programını açın.
- Üst menüden New Query penceresi açıp yukarıdaki SQL kodunu yapıştırın.
- Sunucunuzun Gold dengesine göre en üstteki değişkenleri (
@ProfitMultiplier,@NewStackvb.) belirleyin. - F5 tuşuna basarak sorguyu yalnızca 1 defa çalıştırın.
- Media.pk2 dosyanızı açıp
itemdata_xxx.txtdosyalarında ilgili kervan mallarınınMaxStackdeğerlerini de@NewStackile aynı sayıya getirerek patch atın (Stack sınırının istemcide düzgün görünmesi için şarttır). - Sunucudaki GameServer pencerelerini yeniden başlatın.
- Oyuna girip 5★ kervan çekerek alış maliyetini ve hedef şehirdeki kârı test edin.
Sorularınızı ve rotasyonel kâr hesaplama taleplerinizi konu altından iletebilirsiniz. Herkese bol kazançlı kervanlar!

