- #1
Konu Sahibi
: serkankacan
[REHBER & SİSTEM] vSRO Job Penalty Remover (Meslek Cezası Silici) Scroll
_AddLogItem Tetikleyicisi ve _TimedJob Tablosu Üzerinden Meslek Ayrılma Cezasını Anında Kaldırma
_AddLogItem Tetikleyicisi ve _TimedJob Tablosu Üzerinden Meslek Ayrılma Cezasını Anında Kaldırma
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncular mevcut mesleklerinden (Hunter, Trader veya Thief) ayrıldıklarında NPC tarafından standart olarak **7 günlük (veya sunucu ayarına göre belirli bir sürelik)** meslek değiştirme cezası (Job Penalty) alırlar.
Aşağıda paylaşılan sistem; oyuncu ceza silici parşömene sağ tıkladığında
_TimedJob tablosundaki ceza kaydını güvenli şekilde temizler, oyuncunun Premium buff'ına zarar vermez ve sunucu belleğinin yenilenmesi için karakteri güvenle oyundan düşürür (DC eder).Önemli Güvenlik Uyarısı' Alıntı:DİKKAT (Premium Güvenliği & DC Şartı):
- Eski paylaşımlardaki
Category = 2şartı meslek cezasını değil oyuncunun aktif Premium'unu silme riski taşır. Doğru ceza kategorisiCategory = 0'dır.- Ceza tablodan silindikten sonra NPC'nin karakteri cezasız olarak kabul etmesi için oyuncu scroll basıldığı an otomatik olarak DC edilir.
- İşlem öncesinde SRO_VT_LOG ve SRO_VT_SHARD yedeklerinizi almayı unutmayınız.
1. ADIM: _JOB_PENALTY_REMOVE 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._JOB_PENALTY_REMOVE
@CharID INT
AS
BEGIN
SET NOCOUNT ON;
-- 1. _TimedJob tablosundaki Meslek Cezası Kayıtlarını Sil
-- vSRO'da Job cezası Category = 0 ve JobID IN (1, 2) altında tutulur.
DELETE FROM SRO_VT_SHARD.dbo._TimedJob
WHERE CharID = @CharID
AND Category = 0
AND JobID IN (1, 2)
-- 2. KRİTİK: NPC'nin cezayı kalkmış görmesi için karakteri anında 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 şu optimize bloğu ekleyin:
SQL:
-- ===================================================================
-- JOB PENALTY REMOVER SCROLL TETİKLEYİCİSİ
-- @Operation = 41 (Eşya Tüketimi)
-- 78016 (Job Ceza Silici Scroll RefItemID Değeri)
-- ===================================================================
IF (@Operation = 41 AND @ItemRefID = 78016)
BEGIN
EXEC SRO_VT_LOG.dbo._JOB_PENALTY_REMOVE @CharID
END
Nasıl Test Edilir?
- SQL prosedürünü Management Studio üzerinde derleyin (F5 / Execute).
- Mevcut bir mesleğinizden (Örn: Hunter) ayrılarak ceza alın (NPC'ye tıkladığınızda cezanızın olduğunu doğrulayın).
78016ID'li Job Ceza Silici parşömene sağ tıklayarak kullanın.- Karakteriniz anında oyundan düşecektir (Disconnect).
- Oyuna tekrar girdiğinizde meslek NPC'sine gidin; cezanızın kalktığını ve anında yeni bir meslek seçebildiğinizi göreceksiniz.
Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli oyunlar ve iyi forumlar!

