- #1
Konu Sahibi
: serkankacan
[SİSTEM & ETKİNLİK] vSRO Son Seviyeye (Max Level) Ulaşana Otomatik Sandık Ödülü Sistemi
_AddLogChar ve _ADD_ITEM_EXTERN_CHEST Üzerinden Maksimum Seviyeye Ulaşan Her Oyuncuya Otomatik Paket Ödülü Gönderme
_AddLogChar ve _ADD_ITEM_EXTERN_CHEST Üzerinden Maksimum Seviyeye Ulaşan Her Oyuncuya Otomatik Paket Ödülü Gönderme
Merhaba değerli forum sakinleri,
Silkroad Online sunucularında oyuncuların kasmaya devam etmesini teşvik etmek ve son seviyeye ulaştıklarında onları ödüllendirmek amacıyla **Max Level Bonus Sistemi** sıklıkla kullanılır.
Bu sistem ile oyuncu sunucunun belirlediği maksimum seviyeye (Örn: 80, 90, 100, 110 veya 120 Cap) ulaştığında;
- Karakterin daha önce bu ödülü alıp almadığı kontrol edilir.
- Ödül almadıysa log tablosuna işlenir.
_ADD_ITEM_EXTERN_CHESTprosedürü ile oyuncunun Item Mall Deposu / Web Sandığına (Chest) Global Chatting, Reverse Scroll, Berserker Potion, Resurrect Scroll ve Damage Scroll gibi başlangıç hediyeleri **otomatik ve anında** yüklenir.
İnternette paylaşılan eski kodlardaki `VARCHAR(MAX)` indeksleme hatası giderilmiş, performanslı ve hatasız optimize hali aşağıdadır.
Teknik Bilgilendirme' Alıntı:
- Kullanılan Tetikleyici:
SRO_VT_LOG.dbo._AddLogChar(Oyun içi seviye atlama logu:@EventID = 22).- Kullanılan Depo Prosedürü:
SRO_VT_SHARD.dbo._ADD_ITEM_EXTERN_CHEST(Oyuncunun F10 / Depo sandığına eşya gönderir; oyuncunun çantası dolu olsa bile eşyalar kaybolmaz).- İndeks Koruması: Kontrol tablosundaki
CharIDbirincil anahtar (Primary Key) yapılarak sorgunun mikrosaniyeler içinde çalışması sağlanmıştır.- İşlem öncesinde SRO_VT_LOG yedeğinizi almayı unutmayınız.
1. ADIM: Kontrol Tablosunu Oluşturma (SRO_VT_LOG)
Ödül alan karakterlerin kaydedileceği ve bir karakterin sadece bir kez ödül almasını sağlayan optimize tabloyu açın:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
2. ADIM: _AddLogChar Prosedürüne Eklenecek Kod
SRO_VT_LOG veritabanındaki **[dbo].[_AddLogChar]** prosedürünü Modify edin ve en altındaki
END satırının hemen öncesine aşağıdaki optimize bloğu yapıştırın:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
Neden Bu Optimize Versiyon Kullanılmalı?
- Yüksek Performans & Hızlı Arama:
VARCHAR(MAX)yerineCharID INT PRIMARY KEYüzerinden arama yapıldığı için sunucuda yüzlerce kişi aynı anda seviye atlasa bile veritabanında CPU ve Disk I/O darboğazı yaşanmaz. - Hafif JOIN Mimarisi: Gereksiz `_AccountJID` tablosu devreden çıkarılmış, doğrudan `_Char` ve `_User` tablolarından güvenle `UserJID` çekilmiştir.
- Sıfır Çökme Riski: Sayısal değerler doğru veri tipleriyle eşleştirilmiş ve tarih alanı otomatik standart formatta saklanmıştır.
Nasıl Test Edilir?
- SQL Server Management Studio (SSMS) programını açın.
- 1. Adımdaki tablo oluşturma scriptini SRO_VT_LOG altında çalıştırın.
- 2. Adımdaki prosedür güncellemesini
_AddLogChariçerisine ekleyip F5 yapın. - Oyunda bir test karakterini 99 Level %99.99 yapın.
- Bir canavar keserek 100 Level olun.
- Karakterin klavyeden F10 (Item Mall) tuşuna basıp sağ alttaki Depo / Sandık (Chest) ikonuna tıklayın; 5 farklı ödülün sandığa eksiksiz yüklendiğini doğrulayın.
SRO_VT_LOG.dbo._MaxLevelRewardLogtablosunu kontrol ederek mükerrer kayıt oluşmadığını teyit edin.
Sorularınızı ve eklemek istediğiniz farklı ödül eşyalarını konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!

