- #1
Konu Sahibi
: serkankacan
[GÜVENLİK & BUG FİX] vSRO İki El Silahlarda Kalkan Takma (2H Shield Bug) Fix
_RefObjItem Tablosu Üzerinden Tüm İki El Silahların TwoHanded Parametresini Güncelleme
_RefObjItem Tablosu Üzerinden Tüm İki El Silahların TwoHanded Parametresini Güncelleme
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında özellikle Warrior (Two-Handed Sword, Dual Axe), Wizard (Staff), Rogue (Crossbow) ve Çin sınıflarında (Bow, Glavie, Spear) oyuncuların iki el ile taşınması gereken silahların yanına makro, hızlı slot değişimi veya paket gönderimiyle **Kalkan (Shield)** takabilmesi ciddi bir PvP dengesizliği yaratır. Karakter hem iki el silahın yüksek hasarını vurur hem de kalkanın block/defans avantajından faydalanır.
Eski paylaşımlarda tek bir eşya ID'si (`20029`) verilip geçildiği için diğer silahlarda açık devam eder. Aşağıdaki sorgu sunucunuzdaki **istisnasız tüm iki el silahları** tespit ederek tek seferde koruma altına alır.
Teknik Bilgilendirme & İki El Silah Tipleri' Alıntı:
- Çin (CH) İki El Silahlar: Spear, Glavie, Bow
- Avrupa (EU) İki El Silahlar: Two-Handed Sword (2H), Dual Axe, Crossbow, Staff
- TwoHanded = 1: Bu parametre 1 olduğunda sunucu sol el slotuna (Shield/Arrow) ikinci bir ana eşya takılmasına izin vermez.
- İşlem öncesinde SRO_VT_SHARD yedeğinizi almayı unutmayınız.
Hatasız & Tüm Silahları Kapsayan SQL Fix Sorgusu
SRO_VT_SHARD veritabanını seçip aşağıdaki optimize bloğu çalıştırın:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- TÜM İKİ EL SİLAHLARDA KALKAN BUGUNU FİXLEME (TwoHanded = 1)
-- ===================================================================
UPDATE ROI
SET ROI.TwoHanded = 1
FROM dbo._RefObjItem ROI
INNER JOIN dbo._RefObjCommon ROC ON ROC.Link = ROI.ID
WHERE ROC.Service = 1
AND (
-- ÇİN İKİ EL SİLAHLAR
ROC.CodeName128 LIKE 'ITEM_CH_SPEAR%' -- Mızrak (Spear)
OR ROC.CodeName128 LIKE 'ITEM_CH_BLUNT%' -- Glavie
OR ROC.CodeName128 LIKE 'ITEM_CH_BOW%' -- Yay (Bow)
-- AVRUPA İKİ EL SİLAHLAR
OR ROC.CodeName128 LIKE 'ITEM_EU_2HSWORD%' -- Two-Handed Sword
OR ROC.CodeName128 LIKE 'ITEM_EU_AXE%' -- Dual Axe (Çift Balta)
OR ROC.CodeName128 LIKE 'ITEM_EU_CROSSBOW%' -- Crossbow
OR ROC.CodeName128 LIKE 'ITEM_EU_STAFF%' -- Wizard Asası (Staff)
)
AND ROI.TwoHanded <> 1
PRINT '====================================================='
PRINT 'BAŞARILI: İki el silahların TwoHanded parametresi 1 olarak güncellendi!'
PRINT 'Değişikliklerin aktif olması için GameServer yeniden başlatılmalıdır.'
PRINT '====================================================='
Client (Media.pk2) Senkronizasyonu
Sunucu tarafında kalkan takılması engellense de, oyuncuların arayüzde görsel çakışma (desync) yaşamaması için istemci dosyasını güncellemeniz tavsiye edilir:
- PK2 editörü ile Media.pk2 dosyanızı açın.
server_dep\silkroad\textdata\dizininden silahların bulunduğuitemdata_xxx.txtdosyalarını dışarı aktarın.- Yukarıdaki iki el silahların
TwoHandedsütunundaki değerlerin1olduğundan emin olun. - Dosyayı kaydedip tekrar Media.pk2 içine import edin ve oyuncularınıza patch olarak iletin.
Nasıl Test Edilir?
- SQL Server Management Studio (SSMS) üzerinde sorguyu çalıştırın.
- Sunucudaki GameServer modüllerini yeniden başlatın.
- Oyuna 2H Sword, Glavie veya Staff kullanan bir karakterle giriş yapın.
- Silah takılıyken kalkanı sağ tıklayarak veya sürükleyerek takmayı deneyin.
- Sunucunun kalkan takılmasına izin vermediğini ve karakterin iki el silahla kalkanı aynı anda kullanamadığını doğrulayın.
Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli ve adil geliştirmeler!

