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

vSro Paylaşım vSRO KGuardEDGE Chaos Bölgesine Girişte Eşya Verme ve Çıkışta Temizlem

Cevaplar0
Görüntüleme460
serkankacan paylaşımı beğendiysen ona bir kahve ısmarlayabilirsin
Kahve ısmarla
Ticaret Puanı
0
Katılım
8 Eyl 2026
Mesajlar
200
Tepkime puanı
33
Puanları
0
Mevcut Bakiye
290 ₺
[REHBER & SİSTEM] vSRO KGuardEDGE Chaos Bölgesine Girişte Eşya Verme ve Çıkışta Temizleme
Log_Teleport ve _AddLogChar Üzerinden Otomatik Chaos Balyozu (Hammer) Tanımlama ve Güvenli Silme Prosedürü​



Merhaba değerli forum sakinleri,

Silkroad Online sunucularında özel etkinlik alanlarında (Chaos Arena, Survival Arena, PvP Event vb.) oyuncular içeri girdiği anda geçici bir etkinlik eşyası (örneğin **Chaos Hammer / Balyoz**) almasını; etkinlik bittiğinde veya oyuncu arenadan çıktığında bu eşyanın envanterinden **arkasında yetim kayıt bırakmadan** silinmesini isteyebilirsiniz.

İnternette paylaşılan eski kodlarda `else` şartı hatalı kurgulandığı için oyuncu her teleport olduğunda sorgu çalışır, ayrıca `_Items` tablosundan silme yapılmadığı için veritabanında gereksiz şişme yaşanır.

Aşağıda paylaşılan optimize sistem sayesinde;
  • Oyuncu Chaos bölgesine girdiği an envanterine balyoz tanımlanır ve ekrana bildirim mesajı iletilir.
  • Oyuncu bölgeden ayrıldığında veya etkinlik sonlandığında (EventID = 5) balyoz hem `_Inventory` hem de `_Items` tablosundan eksiksiz temizlenir.

Kritik Envanter & Bölge Uyarısı' Alıntı:
DİKKAT:
  • Kodlardaki 25580 değeri Chaos Arena'nın örnek RegionID değeridir. Kendi sunucunuzdaki arena bölgesinin ID'siyle değiştirmeyi unutmayınız.
  • ITEM_SILKROADPVP_HAMMER alanına sunucunuzdaki özel etkinliğin eşya kodunu yazınız.
  • _Items Tablosu Temizliği: Eşya silinirken sadece slot 0 yapılmaz, `_Items` tablosundaki `ID64` satırı da temizlenir; böylece veritabanınız gereksiz şişmez.
  • İşlem öncesinde KGuardEDGE ve SRO_VT_SHARD yedeklerinizi alınız.



1. ADIM: Log_Teleport Prosedürüne Eklenecek Kod

KGuardEDGE
veritabanındaki **[Log_Teleport]** prosedürünü açın (Modify) ve en altına (END satırının hemen önüne) aşağıdaki bloğu ekleyin:





2. ADIM: _AddLogChar Prosedürüne Eklenecek Kod (Etkinlik Bitişi)

Etkinlik süresi bittiğinde (EventID tetiklendiğinde) arenadaki karakterlerin çantasında balyoz kalmaması için SRO_VT_LOG.._AddLogChar prosedürüne aşağıdaki bloğu ekleyin:





Nasıl Test Edilir?

  1. Yukarıdaki kod bloklarını ilgili prosedürlere (Log_Teleport ve _AddLogChar) ekleyip F5 (Execute) ile derleyin.
  2. Oyuna bir test karakteriyle girip belirlenen Region'a (25580) ışınlanın.
  3. Çantanıza balyozun geldiğini ve ekranda yeşil renkle bildirim mesajının belirdiğini doğrulayın.
  4. Şehre geri ışınlanın; çantanızdaki balyozun silindiğini ve SQL'de _Items tablosunda yetim satır bırakmadığını kontrol edin.

Sorularınızı ve farklı etkinlik mekaniği taleplerinizi konu altından paylaşabilirsiniz. Herkese keyifli geliştirmeler!
 
Moderatör tarafında düzenlendi:

Konuyu görüntüleyenler

Yükleniyor...
Yükleniyor...
Şu anda sitemizde 159 Aktif Kullanıcı
Çevrimiçi üyeler
Konular 1,170
Mesajlar 4,301
Kullanıcılar 1,858
Son üye Dilara Baydemir
Geri
Üst