- #1
Konu Sahibi
: serkankacan
[REHBER & QUERY] vSRO Tek Kodla Karakter Full Ayarlama & İtem Verme
Seviye, Stat, SP, Gold, Rütbe, Konum ve Otomatik İtem Tanımlama Query'si
Seviye, Stat, SP, Gold, Rütbe, Konum ve Otomatik İtem Tanımlama Query'si
Merhaba değerli forum sakinleri,
Test sunucularında veya GM karakterleri hazırlarken tek tek karakterle oyuna girip level kasmak, stat vermek ve item aramak yerine; tek bir SQL sorgusuyla karakterin seviyesini, stat puanlarını, altınını, SP'sini, rütbesini (Title) ve çantasını fulleyip üstüne istediğiniz eşyayı gönderebilirsiniz.
Kritik Güvenlik Uyarısı' Alıntı:DİKKAT:
- Orijinal paylaşımlarda
WHEREşartı unutulduğu için sorgu çalıştırıldığında sunucudaki tüm oyuncuların verileri değişmekteydi. Aşağıdaki optimize sorguya tekil karakter filtresi (@CharName) eklenmiştir.- Karakterin bu güncellemeleri hatasız alabilmesi için kesinlikle oyunda olmaması (Offline/Exit) gerekir. Karakter oyundayken çalıştırırsanız GameServer bellek verisini tekrar DB'ye yazarak işlemi bozar.
- İşlem öncesinde SRO_VT_SHARD yedeğinizi almayı unutmayınız.
Hatasız & Güvenli SQL Query Kodu
SQL:
USE [SRO_VT_SHARD]
GO
-- ===================================================================
-- 1. ADIM: AYARLAR (Hedef Karakter ve Değerler)
-- ===================================================================
DECLARE @CharName VARCHAR(16) = 'CharNickYazin' -- Güncellenecek Karakter Adı
-- Karakterin var olup olmadığını kontrol et
IF NOT EXISTS (SELECT 1 FROM dbo._Char WHERE CharName16 = @CharName)
BEGIN
RAISERROR('HATA: Belirtilen karakter veritabanında bulunamadı!', 16, 1)
RETURN
END
-- ===================================================================
-- 2. ADIM: KARAKTER TABLOSUNU GÜNCELLE (_Char)
-- ===================================================================
UPDATE dbo._Char
SET
CurLevel = 90, -- Karakter Seviyesi
MaxLevel = 90, -- Ulaşılan Maksimum Seviye
Strength = 300, -- STR Değeri
Intellect = 300, -- INT Değeri
RemainGold = 2000000000, -- 2B Gold (Maksimum sınır güvenliği)
RemainSkillPoint= 5000000, -- 5M SP
RemainStatPoint = 0, -- Boştaki Stat Puanı
HwanLevel = 5, -- Rütbe (Title Seviyesi)
InventorySize = 108, -- Maksimum Çanta Kapasitesi (3 Sayfa Tam Açık)
LatestRegion = 25000, -- Jangan Şehir İçi Bölge Kodu
PosX = 969.0, -- Jangan X Koordinatı
PosY = 0.0, -- Jangan Y Koordinatı
PosZ = 1369.0, -- Jangan Z Koordinatı
AppointedTeleport = 2094 -- Spawn Noktası Referansı
WHERE CharName16 = @CharName;
-- ===================================================================
-- 3. ADIM: KARAKTERE EŞYA GÖNDERME (_ADD_ITEM_EXTERN)
-- Kullanım: EXEC _ADD_ITEM_EXTERN 'KarakterNick', 'ItemKodu', Adet, Artı(+)
-- ===================================================================
-- Örnek 1: +12 Sun 11 Dg Spear
EXEC dbo._ADD_ITEM_EXTERN @CharName, 'ITEM_CH_SPEAR_11_A_RARE', 1, 12;
-- Örnek 2: 11 Adet Global Chatting
EXEC dbo._ADD_ITEM_EXTERN @CharName, 'ITEM_MALL_GLOBAL_CHATTING', 11, 0;
-- Örnek 3: 50 Adet Reverse Return Scroll
EXEC dbo._ADD_ITEM_EXTERN @CharName, 'ITEM_MALL_REVERSE_RETURN_SCROLL', 50, 0;
PRINT '====================================================='
PRINT 'BAŞARILI: ' + @CharName + ' adlı karakter başarıyla fullendi ve eşyaları teslim edildi!'
PRINT '====================================================='
Yapılan İyileştirmeler Nelerdir?
- Karakter Güvenliği (WHERE Şartı): Sorgunun tüm veritabanındaki oyuncuları bozması engellendi; işlem yalnızca en başta tanımladığınız
@CharNamekarakterine uygulanır. - Envanter Sınırı (108 Slot): Silkroad çanta yuvası sınırı 108'dir. 109 değeri istemcide slot taşmalarına ve eşyaların kaybolmasına yol açabildiği için stabil limit olan 108'e çekildi.
- Gold Taşma Koruması: Silkroad motorunda maksimum taşınabilir altın miktarı integer sınırına tabidir. Taşma (overflow) yaşanmaması için 2 Milyar Gold olarak sabitlendi.
- Dinamik Eşya Dağıtımı:
_ADD_ITEM_EXTERNfonksiyonuna doğrudan üstteki değişken bağlanarak tek tek isim yazma zahmeti ortadan kaldırıldı.
Nasıl Uygulanır?
- Hedef karakterin oyundan tamamen çıkış yaptığından emin olun (Offline).
- SQL Server Management Studio (SSMS) programını açıp New Query deyin.
- Yukarıdaki SQL kodunu yapıştırın.
- En üstteki
@CharName = 'CharNickYazin'kısmına karakterinizin tam adını yazın. - F5 tuşuna basarak sorguyu çalıştırın.
- Karakterle oyuna giriş yaptığınızda Jangan'da ful özellikleri ve çantasındaki eşyalarıyla hazır olduğunu göreceksiniz.
Sorularınızı ve takıldığınız yerleri bu konu altından paylaşabilirsiniz. Herkese keyifli geliştirmeler!

