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

vSro Paylaşım vSRO F1 Tuşu (Help / Tutorial) Donma & Crash Bug Fix

Cevaplar0
Görüntüleme3
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[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



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 = 5 değ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?

  1. Sorguyu çalıştırdıktan sonra GameServer pencerelerini yeniden başlatın.
  2. Oyuna herhangi bir karakterle giriş yapın.
  3. Klavyeden **F1** tuşuna birkaç kez art arda basın.
  4. İstemcinin donmadığını, çökmediğini ve oyunun akıcı şekilde devam ettiğini doğrulayın.
  5. 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!
 

Konuyu görüntüleyenler

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