- #1
Konu Sahibi
: serkankacan
[REHBER & SİSTEM] vSRO Forgotten World (FGW) Bekleme Süresi Sıfırlama Scroll'u
_AddLogItem Tetikleyicisi ve _TimedJob Tablosu Üzerinden FGW Cooldown Resetleme
_AddLogItem Tetikleyicisi ve _TimedJob Tablosu Üzerinden FGW Cooldown Resetleme
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncuların **Forgotten World (FGW - Kayıp Dünya)** zindanlarına girdikten sonra standart olarak beklemek zorunda kaldıkları 5 veya 24 saatlik giriş bekleme süresini (Cooldown) sıfırlayabilmeleri için **FGW Time Reset Scroll** sistemi kullanılır.
Aşağıda paylaşılan prosedür; oyuncu parşömene sağ tıkladığında
_TimedJob tablosundaki FGW zindan kısıtlama sayacını temizler ve `GameServer` belleğini sıfırlamak için karakteri güvenle oyundan düşürür (DC eder).Önemli Uyarı' Alıntı:DİKKAT (Bellek Eşitlemesi):
- FGW bekleme süreleri `GameServer` hafızasında anlık tutulur. Veritabanından kayıt silindikten sonra sayacın sıfırlandığını sunucunun algılaması için karakter anında DC edilir.
- İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.
1. ADIM: _FGW_TIME_RESET Prosedürünü Oluşturma
SRO_VT_LOG veritabanını seçip aşağıdaki temizleme 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._FGW_TIME_RESET
@CharID INT
AS
BEGIN
SET NOCOUNT ON;
-- 1. _TimedJob tablosundaki FGW Zindan Kısıtlama Kayıtlarını Sil
-- vSRO'da FGW Cooldown işi genellikle Category = 5 veya JobID referansıyla tutulur.
DELETE FROM SRO_VT_SHARD.dbo._TimedJob
WHERE CharID = @CharID
AND Category = 5 -- FGW World Cooldown Kategorisi
-- 2. KRİTİK: Sayacın GameServer belleğinde sıfırlanması için karakteri DC et
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 tetikleyici bloğunu ekleyin:
SQL:
-- ===================================================================
-- FGW TIME RESET SCROLL TETİKLEYİCİSİ
-- @Operation = 41 (Eşya Tüketimi)
-- 70004 (FGW Time Reset Scroll RefItemID Değeri)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 70004)
BEGIN
EXEC SRO_VT_LOG.dbo._FGW_TIME_RESET @CharID
END
Nasıl Test Edilir?
- SQL prosedürünü Management Studio üzerinden derleyin (F5 / Execute).
- Herhangi bir FGW boyut taşı (Dimension Hole) kullanarak bir zindana girip çıkın (Karakterinizde bekleme süresi oluşsun).
70004ID'li parşömene sağ tıklayarak kullanın.- Karakteriniz anında oyundan düşecektir (Disconnect).
- Oyuna tekrar giriş yaptığınızda bekleme süresinin kalktığını ve anında yeni bir FGW taşı basabildiğinizi göreceksiniz.
Sorularınızı ve takıldığınız yerleri bu konu altından paylaşabilirsiniz. Herkese iyi forumlar ve keyifli geliştirmeler!

