İçeriğe geç
Türkiye'nin SRO tanıtım & topluluk platformu

vSro Paylaşım vSRO Son Seviyeye (Max Level) Ulaşana Otomatik Sandık Ödülü Sistemi

Cevaplar1
Görüntüleme12
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
145
Tepkime puanı
24
Puanları
0
Mevcut Bakiye
3975 ₺
[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​



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_CHEST prosedü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 CharID birincil 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:





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:





Neden Bu Optimize Versiyon Kullanılmalı?

  1. Yüksek Performans & Hızlı Arama: VARCHAR(MAX) yerine CharID 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.
  2. Hafif JOIN Mimarisi: Gereksiz `_AccountJID` tablosu devreden çıkarılmış, doğrudan `_Char` ve `_User` tablolarından güvenle `UserJID` çekilmiştir.
  3. 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?

  1. SQL Server Management Studio (SSMS) programını açın.
  2. 1. Adımdaki tablo oluşturma scriptini SRO_VT_LOG altında çalıştırın.
  3. 2. Adımdaki prosedür güncellemesini _AddLogChar içerisine ekleyip F5 yapın.
  4. Oyunda bir test karakterini 99 Level %99.99 yapın.
  5. Bir canavar keserek 100 Level olun.
  6. 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.
  7. SRO_VT_LOG.dbo._MaxLevelRewardLog tablosunu 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!
 

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 28,914 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,373
Mesajlar 4,353
Kullanıcılar 1,670
Son üye Canbey
Geri
Üst