- #1
Konu Sahibi
: serkankacan
[GÜVENLİK & BUG FİX] vSRO F1 Tuşu (Help / Tutorial) Donma & Crash Bug Fix
_CharQuest ve _RefCharDefault_Quest Üzerinden Başlangıç Rehber Görevini (QuestID = 1) Tamamlandı Olarak Tanımlama
_CharQuest ve _RefCharDefault_Quest Üzerinden Başlangıç Rehber Görevini (QuestID = 1) Tamamlandı Olarak Tanımlama
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncuların oyuna ilk girdiğinde veya yanlışlıkla klavyeden **F1** tuşuna bastığında istemcinin (Client) kilitlenmesi, yanıt vermemesi veya doğrudan masaüstüne çökmesi (Crash) en sık karşılaşılan can sıkıcı sorunlardan biridir.
Sorunun Nedeni:
Orijinal Silkroad istemcisi F1 tuşuna basıldığında başlangıç rehber görevini (
QuestID = 1 - Help/Tutorial) tetiklemeye çalışır. Eğer karakterin veritabanında bu görevin tamamlandığına dair geçerli bir bitiş bayrağı (Status = 5) yoksa, istemci arayüzü çizemez ve kilitlenir.Aşağıda hem sunucudaki **tüm mevcut karakterlerin** F1 bugunu anında çözen güvenli sorguyu hem de **yeni açılacak karakterlerde** sorunun tekrarlanmasını önleyen başlangıç ayarlarını bulabilirsiniz.
Kritik Bilgilendirme & Hazırlık' Alıntı:DİKKAT:
- Bu sorgu
Status = 5değeri ile rehber görevini tamamlandı olarak kaydeder; böylece F1 tetikleyicisi donma yapmadan sessizce kapanır.- İşlem öncesinde GameServer modüllerinizin kapalı olması (veya bakım modunda olmanız) veri kilitlenmelerini önlemek adına önerilir.
- İşlem öncesinde SRO_VT_SHARD yedeğinizi almayı unutmayınız.
1. ADIM: Mevcut Karakterlerin F1 Bugunu Düzeltme (ÖNERİLEN)
SRO_VT_SHARD veritabanını seçip aşağıdaki optimize bloğu çalıştırın. Bu sorgu silinmiş karakterleri atlar ve mevcut kayıtları güvenle günceller:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- 1. ADIM: VARSAYILAN GÖREV SERVİSİNİ AKTİF ET
-- ===================================================================
UPDATE dbo._RefCharDefault_Quest
SET Service = 1
WHERE QuestID = 1
-- ===================================================================
-- 2. ADIM: MEVCUT KARAKTERLERDEKİ HATALI/EKSİK REHBER GÖREVİNİ TEMİZLE
-- ===================================================================
DELETE FROM dbo._CharQuest
WHERE QuestID = 1
-- ===================================================================
-- 3. ADIM: TÜM AKTİF KARAKTERLERE TAMAMLANMIŞ GÖREV KAYDI EKLE
-- Status = 5 (Completed / Tamamlandı)
-- QuestData1 = 31458135 (Tüm rehber adımlarının bittiğini belirten bayrak)
-- ===================================================================
INSERT INTO dbo._CharQuest (
CharID,
QuestID,
[Status],
AchievementCount,
StartTime,
EndTime,
QuestData1,
QuestData2
)
SELECT
C.CharID,
1,
5,
0,
GETDATE(),
GETDATE(),
31458135,
0
FROM dbo._Char C WITH (NOLOCK)
WHERE C.CharID > 0
PRINT '====================================================='
PRINT 'BAŞARILI: Mevcut tüm karakterlerin F1 Help bugu çözüldü!'
PRINT '====================================================='
2. ADIM: Yeni Açılacak Karakterler İçin Kalıcı Çözüm
Sadece mevcut karakterleri düzeltmek yetmez; yarın oyuna kayıt olup yeni karakter açan bir oyuncunun da aynı kilitlenmeyi yaşamaması için **_AddNewChar** prosedürüne şu kontrolü ekleyebilirsiniz.
SRO_VT_SHARD.._AddNewChar prosedürünü açın (
Modify) ve COMMIT TRANSACTION satırının hemen üstüne şu bloğu yapıştırın:
SQL:
-- ===============================================================
-- YENİ KARAKTER İÇİN F1 HELP GÖREVİNİ OTOMATİK TAMAMLA
-- ===============================================================
IF NOT EXISTS (SELECT 1 FROM dbo._CharQuest WHERE CharID = @NewCharID AND QuestID = 1)
BEGIN
INSERT INTO dbo._CharQuest (
CharID, QuestID, [Status], AchievementCount, StartTime, EndTime, QuestData1, QuestData2
)
VALUES (
@NewCharID, 1, 5, 0, GETDATE(), GETDATE(), 31458135, 0
)
END
Nasıl Test Edilir?
- Sorguyu çalıştırdıktan sonra GameServer pencerelerini yeniden başlatın.
- Oyuna herhangi bir karakterle giriş yapın.
- Klavyeden **F1** tuşuna birkaç kez art arda basın.
- İstemcinin donmadığını, çökmediğini ve oyunun akıcı şekilde devam ettiğini doğrulayın.
- Yeni sıfır bir karakter açıp oyuna girerek aynı tuşu onda da test edin.
Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli ve sorunsuz geliştirmeler!

