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

vSro Paylaşım vSRO Skill & Mastery Recall (Skill Sıfırlama) Scroll Sistemi

Cevaplar0
Görüntüleme9
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
88
Tepkime puanı
1
Puanları
0
Mevcut Bakiye
2960 ₺
[REHBER & SİSTEM] vSRO Skill & Mastery Recall (Skill Sıfırlama) Scroll Sistemi
_AddLogItem Tetikleyicisi Üzerinden Hotbar Temizleme, Mastery Sıfırlama ve Otomatik SP İadesi



Merhaba değerli forum sakinleri,

Silkroad Online sunucularında oyuncuların build (yapılandırma) değiştirebilmeleri için kullanılan en popüler eşyalardan biri **Skill Recall Scroll** (Yetenek Sıfırlama Parşömeni)'dur.

Aşağıdaki prosedür; oyuncu parşömene sağ tıkladığında karakterin **tüm mastery ağaçlarını 0'a çeker**, temel vuruş haricindeki **tüm yetenekleri temizler**, yetenek çubuğundaki (Hotbar - _ClientConfig) kısayolları sıfırlar, karaktere belirlediğiniz miktarda **Skill Point (SP) iadesi** yapar ve bellek çakışmasını önlemek için karakteri güvenle oyundan düşürür (DC eder).

Önemli Güvenlik Kuralları' Alıntı:
DİKKAT:
  • Karakter oyundayken yetenek tabloları güncellendiğinde `GameServer` hafızası ile DB senkronizasyonunun kopmaması ve eski skillerin geri gelmemesi için karakter scroll basıldığı anda otomatik DC edilir.
  • Temel yumruk/saldırı ID'leri (SkillID IN (1, 2)) silinmez; böylece karakterin temel animasyonları ve normal vuruşu korunur.
  • İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.



1. ADIM: _SKILL_RECALL Prosedürünü Oluşturma

SRO_VT_LOG
veritabanını seçip aşağıdaki ana motor prosedürünü derleyin:

SQL:
USE [SRO_VT_LOG]
GO

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE OR ALTER PROCEDURE dbo._SKILL_RECALL
    @CharID INT
AS
BEGIN
    SET NOCOUNT ON;

    -- Kontrol: Karakter geçerli mi?
    IF NOT EXISTS (SELECT 1 FROM SRO_VT_SHARD.dbo._Char WHERE CharID = @CharID)
        RETURN;

    -- İade edilecek Skill Point (SP) miktarı (Örn: 5.000.000 SP)
    DECLARE @RefundSP INT = 5000000

    -- 1. Hotbar / Yetenek Çubuğundaki kısayolları sıfırla (Görsel bugları önler)
    UPDATE SRO_VT_SHARD.dbo._ClientConfig
    SET Data = 0
    WHERE CharID = @CharID

    -- 2. Öğrenilmiş tüm skilleri sil (Temel vuruşlar 1 ve 2 hariç)
    DELETE FROM SRO_VT_SHARD.dbo._CharSkill
    WHERE CharID = @CharID 
      AND SkillID NOT IN (1, 2)

    -- 3. Mastery seviyelerini 0'a çek
    UPDATE SRO_VT_SHARD.dbo._CharSkillMastery
    SET Level = 0
    WHERE CharID = @CharID

    -- 4. SP İadesini karaktere tanımla
    UPDATE SRO_VT_SHARD.dbo._Char
    SET RemainSkillPoint = RemainSkillPoint + @RefundSP
    WHERE CharID = @CharID

    -- 5. KRİTİK: GameServer bellek eşitliği için karakteri güvenle oyundan düşür (DC)
    UPDATE SRO_VT_SHARD.dbo._User 
    SET Sec_Primary = 1 
    WHERE CharID = @CharID
END
GO



2. ADIM: _AddLogItem Tetikleyicisine Bağlama

SRO_VT_LOG
içerisindeki **_AddLogItem** prosedürünü açarak (Modify) AS satırının altına tetikleyiciyi ekleyin:

SQL:
-- ===================================================================
-- SKILL RECALL SCROLL TETİKLEYİCİSİ
-- @Operation = 41 (Eşya Kullanımı)
-- 70002 (Skill Recall Scroll RefItemID Değeri)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 70002)
BEGIN
    EXEC SRO_VT_LOG.dbo._SKILL_RECALL @CharID
END



Nasıl Test Edilir?

  1. SQL prosedürünü Management Studio üzerinde çalıştırarak derleyin (F5 / Execute).
  2. 70002 kodlu Skill Recall parşömenini karakterinize aktarın.
  3. Oyunda parşömene sağ tıklayarak kullanın.
  4. Karakteriniz anında oyundan düşecektir (Disconnect).
  5. Oyuna tekrar girdiğinizde;
    • Tüm mastery ve skillerinizin sıfırlandığını,
    • Skill barınızın temizlendiğini,
    • Tanımlanan SP miktarının çantanızdaki SP hanesine eklendiğini göreceksiniz.

Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli oyunlar ve iyi forumlar!
 

Konuyu görüntüleyenler

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