- #1
Konu Sahibi
: serkankacan
[REHBER & SİSTEM] vSRO Snow Shield Açıcı & Stat Recall (Stat Sıfırlama) Scrolları
_AddLogItem Tetikleyicisi Üzerinden INT Sınırı Olmadan Snow Shield Verme ve Kusursuz Stat Puanı İadesi
_AddLogItem Tetikleyicisi Üzerinden INT Sınırı Olmadan Snow Shield Verme ve Kusursuz Stat Puanı İadesi
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncuların build yapılandırmalarını özelleştirmeleri için iki popüler scroll sistemi kullanılır:
- Snow Shield Açıcı Scroll: Pure STR veya Hybrid karakterlerin INT sınırı yüzünden açamadığı Snow Shield yeteneğini karaktere doğrudan kazandırır.
- Stat Recall Scroll: Karakterin dağıttığı tüm STR ve INT puanlarını başlangıç seviyesine (20 / 20) çeker ve karakterin seviyesine göre hak ettiği tüm stat puanlarını
RemainStatPointhavuzuna eksiksiz iade eder.
Önemli Güvenlik Kuralları' Alıntı:DİKKAT:
- Stat ve yetenek güncellemelerinde GameServer bellek çakışmalarını ve geri sarma (rollback) sorunlarını önlemek için oyuncu scroll'a bastığı an otomatik olarak oyundan düşürülür (DC edilir).
- Stat Recall işleminde karakterin formülü (Level - 1) * 3 kuralına göre hesaplanır; eksik veya fazla stat verilmesi imkansızdır.
- İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.
1. BÖLÜM: Arka Plan Prosedürleri (SRO_VT_LOG)
SRO_VT_LOG veritabanını seçip aşağıdaki prosedürleri okutun:
SQL:
USE [SRO_VT_LOG]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ===================================================================
-- 1. SNOW SHIELD AÇICI PROSEDÜRÜ
-- ===================================================================
CREATE OR ALTER PROCEDURE dbo._SNOW_SHIELD_UNLOCK
@CharID INT
AS
BEGIN
SET NOCOUNT ON;
-- Hedef Snow Shield Skill ID (Örnek: Cold Mastery Snow Shield Seviye 1 veya Seviye 4)
-- Kendi DB'nizdeki açılmasını istediğiniz Snow Shield ID'sini yazın:
DECLARE @SnowSkillID INT = 1116 -- SKILL_CH_COLD_SHIELD_A
-- Karakterde bu skill zaten yoksa doğrudan ekle
IF NOT EXISTS (SELECT 1 FROM SRO_VT_SHARD.dbo._CharSkill WHERE CharID = @CharID AND SkillID = @SnowSkillID)
BEGIN
INSERT INTO SRO_VT_SHARD.dbo._CharSkill (CharID, SkillID, Enable)
VALUES (@CharID, @SnowSkillID, 1)
-- Değişikliğin işlenmesi için karakteri DC et
UPDATE SRO_VT_SHARD.dbo._User
SET Sec_Primary = 1
WHERE CharID = @CharID
END
END
GO
-- ===================================================================
-- 2. STAT RECALL (STAT SIFIRLAMA & İADE) PROSEDÜRÜ
-- ===================================================================
CREATE OR ALTER PROCEDURE dbo._STAT_RECALL
@CharID INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CurLevel INT
-- Karakterin mevcut seviyesini al
SELECT @CurLevel = CurLevel
FROM SRO_VT_SHARD.dbo._Char WITH (NOLOCK)
WHERE CharID = @CharID
IF (@CurLevel IS NULL OR @CurLevel <= 0)
RETURN;
-- Karakterin seviyesine göre kazanılan toplam stat puanı hesabı: (Level - 1) * 3
DECLARE @TotalStatPoints INT = (@CurLevel - 1) * 3
-- STR ve INT değerlerini taban seviyeye (20) çek ve hak ettiği puanları iade et
UPDATE SRO_VT_SHARD.dbo._Char
SET
Strength = 20,
Intellect = 20,
RemainStatPoint = @TotalStatPoints
WHERE CharID = @CharID
-- Bellek senkronizasyonu için karakteri DC et
UPDATE SRO_VT_SHARD.dbo._User
SET Sec_Primary = 1
WHERE CharID = @CharID
END
GO
2. BÖLÜM: _AddLogItem Tetikleyicilerine Bağlama
SRO_VT_LOG içerisindeki **_AddLogItem** prosedürünü açarak (
Modify) AS satırının hemen altına ekleyin:
SQL:
-- ===================================================================
-- ÖZEL SCROLL TETİKLEYİCİLERİ (@Operation = 41 Eşya Kullanımı)
-- ===================================================================
IF (@Operation = 41)
BEGIN
-- 1. SNOW SHIELD AÇICI SCROLL (ID: 78014)
IF (@ItemRefID = 78014)
BEGIN
EXEC SRO_VT_LOG.dbo._SNOW_SHIELD_UNLOCK @CharID
END
-- 2. STAT RECALL SCROLL (ID: 70001)
ELSE IF (@ItemRefID = 70001)
BEGIN
EXEC SRO_VT_LOG.dbo._STAT_RECALL @CharID
END
END
Nasıl Test Edilir?
- SQL prosedürlerini Management Studio üzerinde derleyin (F5 / Execute).
78014veya70001ID'li eşyayı karakterinize aktarın.- Oyuna girip scroll'a sağ tıklayarak kullanın.
- Karakteriniz anında oyundan düşecektir (Disconnect).
- Tekrar giriş yaptığınızda;
- Snow Shield kullandıysanız yetenek penceresinde skill'in açık olduğunu,
- Stat Recall kullandıysanız STR/INT değerinizin 20'ye indiğini ve tüm stat puanlarınızın dağıtılmak üzere
RemainStatPointhanesinde hazır beklediğini göreceksiniz.
Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!

