- #1
Konu Sahibi
: serkankacan
[SORUN & ÇÖZÜM] vSRO Yeni Skill Eklerken Alınan Hatalar ve Çözüm Rehberi
Client Loading Crash, Karakter Ekranında Kapanma (Start Crash) ve Skill Ağacı Çakışmaları
Client Loading Crash, Karakter Ekranında Kapanma (Start Crash) ve Skill Ağacı Çakışmaları
Merhaba değerli forum sakinleri,
Silkroad Online sunucu geliştirme sürecinde yeni veya modifiye edilmiş bir yetenek (skill) eklerken en sık karşılaşılan sorunlar; istemcinin açılış yükleme ekranında (loading bar) çökmesi veya karaktere giriş yapıp "Start" butonuna tıklandığında oyunun uyarı vermeden kapanmasıdır (Direct Desktop Crash).
Aşağıda bu hataların temel nedenlerini, doğrudan çözüm yollarını ve yeni skill eklerken dikkat etmeniz gereken altın kuralları bulabilirsiniz.
Önemli Hatırlatma' Alıntı:DbToMedia & PK2 Uyumu:
Veritabanınız (DB) ile istemciniz (Client) birebir senkronize olduğu sürece güncel DbToMedia araçlarıskilldata_xxxenc.txtdosyalarını kesinlikle bozmaz. Hata alıyorsanız sorun dosya şifrelemesinde değil, SQL tablolarındaki hiyerarşik bağlardadır.
HATA 1: Yeni Skill Ekledim, Client Loading Ekranında Kapanıyor?
Neden Olur?
İstemci yükleme aşamasında
_RefSkill ve _RefSkillGroup tablolarını hafızaya alır. Burada oluşan bir mükerrer (duplicate) ID, yanlış grup eşleşmesi veya eksik referans istemcinin donup çökmesine yol açar.Çözüm Yolları:
- _RefSkillGroup Kontrolü: Eklediğiniz yeteneğin grup adının (
Basic_Group) başka bir yetenekle hatalı çakışmadığından emin olun. - ReqLearn_Skill Zinciri: Eğer
_RefSkilltablosuna yeni bir ID ile ekleme yaptıysanız, satırı sağa kaydırarakReqLearn_Skill1,ReqLearn_Skill2,ReqLearn_Skill3veReqLearn_Skill4sütunlarını kontrol edin. Kopyaladığınız eski yeteneğin ID'si kalmışsa, istemci mantıksal zinciri kuramaz. Buradaki eski ID değerlerini yeni hiyerarşinize göre güncelleyin.
HATA 2: Karakter Seçiminde "Start"a Basınca Şehir Yüklenmeden Client Kapanıyor?
Neden Olur?
Bu çökmenin ana sebebi de ReqLearn_Skill bağımlılık zincirinin kopmasıdır. Karakter oyuna giriş yaparken mevcut açık yetenekleri kontrol edilir. Eğer eklediğiniz skill bir serinin devamıysa (Level 2, Level 3 veya bir önceki skilli şart koşan bir ağaç) ve önceki skill ID'si yanlış/eski tanımlandıysa istemci bellek hatası vererek kapanır.
Çözüm Yolları:
_RefSkilltablosunda ilgili yeteneği bulun.ReqLearn_Skill1alanının, o yeteneğin açılması için gereken bir önceki seviye skill ID'si ile birebir eşleştiğini doğrulayın.- Yeteneğin seri başı (Level 1 / İlk Seri) ise ve ön koşulu yoksa bu alanın
0olduğundan emin olun.
Yeni Skill Eklerken Dikkat Edilmesi Gereken Kritik Hususlar
Hatasız bir ekleme süreci için şu 3 adımı mutlaka uygulayın:
- ID Çakışmalarını Önleyin: Hem
_RefSkillhem de_RefSkillGrouptablosunda mevcut olmayan, boşta bir ID aralığı kullanın. - SkillGroup Bütünlüğü:
_RefSkillGrouptablosuna kayıt girerken;Skill_IDalanına yeteneğin_RefSkill.IDnumarasını, karşısındaki alana ise_RefSkill.Basic_Groupdeğerini eksiksiz yazın. - DbToMedia Eşitlemesi: SQL tarafındaki düzenlemeler bittiğinde DbToMedia ile güncel txt dosyalarını çıkartıp Media.pk2 içerisine hatasız aktardığınızdan emin olun.
Hızlı Teşhis İçin Yardımcı SQL Sorguları
1. ID Çakışması Kontrolü:
SQL:
USE SRO_VT_SHARD
GO
-- _RefSkill tablosunda mükerrer ID var mı?
SELECT ID, COUNT(ID) AS TekrarSayisi
FROM dbo._RefSkill
GROUP BY ID
HAVING COUNT(ID) > 1
2. Ön Koşul (ReqLearn) ve Grup Doğrulaması:
SQL:
USE SRO_VT_SHARD
GO
-- Eklediğiniz skillin bağlantılarını kontrol edin
SELECT ID, CodeName128, Basic_Group, ReqLearn_Skill1, ReqLearn_Skill2
FROM dbo._RefSkill
WHERE CodeName128 = 'SKILL_KODUNUZU_YAZINIZ'
Sonuç:
Yukarıdaki maddeler bizzat test edilmiş ve karşılaşılan açılış/giriş çökmelerini kesin olarak çözen adımlardır. Zincirdeki ID doğrulamalarını eksiksiz yaptığınızda client sorunsuz açılacaktır.
Takıldığınız yerleri ve aldığınız hata detaylarını konu altından iletebilirsiniz. Herkese iyi geliştirmeler!

