- #1
Konu Sahibi
: serkankacan
[REHBER & SİSTEM] vSRO Godbless Silme (Buff Remover) Scroll Sistemi
_AddLogItem ve _TimedJob Tablosu Üzerinden Aktif Godbless Buff'ını Anında ve Güvenle Kaldırma
_AddLogItem ve _TimedJob Tablosu Üzerinden Aktif Godbless Buff'ını Anında ve Güvenle Kaldırma
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncular mevcut **Godbless** buff'ını süresi bitmeden önce değiştirmek, kaldırmak veya farklı bir renkteki/türdeki Godbless buff'ını basabilmek isteyebilirler.
İnternette paylaşılan ham kodlarda sadece tablo silinip bırakıldığı için `GameServer` belleği yenilenmez, oyuncunun üzerindeki efekt kaybolmaz ve relog atıldığında buff geri gelebilir.
Aşağıda paylaşılan rehber sayesinde; önce karakter üzerindeki Godbless JobID değerini doğru tespit edebilir, ardından scroll kullanıldığında kaydı temizleyip karakteri otomatik DC ederek buff'ı eksiksiz şekilde kaldırabilirsiniz.
Önemli Sistem Uyarısı' Alıntı:DİKKAT (Bellek Eşitlemesi & İşlem Kodu):
- Eşyanın çanta içinde yere atılırken veya depoya konurken değil, yalnızca sağ tıklanarak tüketildiğinde çalışması için
@Operation = 41şartı zorunludur.- Veritabanından buff kaydı silindikten sonra sunucu belleğinin (RAM) sıfırlanması için oyuncu scroll'u bastığı an otomatik olarak oyundan düşürülür (DC edilir).
- İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.
1. ADIM: Karakterdeki Godbless JobID Değerini Tespit Etme
Karakterin üzerinde aktif olan süreli buff ve servislerin listesini görmek için öncelikle şu analiz sorgusunu çalıştırın:
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- AKTİF SÜRELİ BUFF VE SERVİSLERİ SORGULAMA
-- ===================================================================
DECLARE @CharName VARCHAR(16) = 'KarakterNick' -- Üzerinde Godbless açık olan karakter
SELECT
TJ.CharID,
TJ.Category,
TJ.JobID,
TJ.TimeToKeep,
TJ.Data
FROM dbo._TimedJob TJ WITH (NOLOCK)
INNER JOIN dbo._Char C WITH (NOLOCK) ON C.CharID = TJ.CharID
WHERE C.CharName16 = @CharName
Gelen sonuçlar içerisindeki Godbless'a ait olan
JobID değerini (Örn: 45017) not edin.2. ADIM: _AddLogItem Tetikleyicisine Bağlama
SRO_VT_LOG veritabanındaki **_AddLogItem** prosedürünü açın (
Modify) ve AS satırının hemen altına aşağıdaki optimize bloğu ekleyin:
SQL:
-- ===================================================================
-- GODBLESS SİLME (BUFF REMOVER) SCROLL TETİKLEYİCİSİ
-- @Operation = 41 (Eşya Tüketimi)
-- 451224: Godbless Silici Parşömen RefItemID Değeri (Örnek)
-- 45017: _TimedJob Tablosundaki Godbless JobID Değeri (Örnek)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 451224)
BEGIN
-- 1. _TimedJob tablosundaki Godbless kaydını sil
DELETE FROM SRO_VT_SHARD.dbo._TimedJob
WHERE CharID = @CharID
AND JobID = 45017
-- 2. KRİTİK: GameServer belleğindeki buff efektinin anında kalkması için DC et
UPDATE SRO_VT_SHARD.dbo._User
SET Sec_Primary = 1
WHERE CharID = @CharID
END
Nasıl Test Edilir?
- SQL kodundaki
@ItemRefID(Scroll ID) veJobIDdeğerlerini kendi veritabanınıza göre düzenleyip prosedürü derleyin (F5 / Execute). - Karakterinizle oyuna girip Godbless buff'ını açın (karakterin parıldadığını doğrulayın).
- Hazırladığınız
451224ID'li silici parşömene sağ tıklayarak kullanın. - Karakteriniz anında oyundan düşecektir (Disconnect).
- Oyuna tekrar bağlandığınızda Godbless efektinin ve ek özelliklerinin karakterden başarıyla silindiğini göreceksiniz.
Sorularınızı ve takıldığınız noktaları konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!

