- #1
Konu Sahibi
: serkankacan
[GÜVENLİK & SİSTEM] vSRO Otomatik Artı (+) Sınırlama (Max Plus Limiter)
_AddLogItem (@Operation = 90) Üzerinden Belirlenen Limitin Üzerine Çıkan Eşyaları Otomatik Geri Çekme
_AddLogItem (@Operation = 90) Üzerinden Belirlenen Limitin Üzerine Çıkan Eşyaları Otomatik Geri Çekme
Merhaba değerli forum sakinleri,
Silkroad Online sunucularınızda oyun dengesini korumak ve simya (alchemy) sınırını belirli bir seviyede (örneğin maksimum **+12**) tutmak isteyebilirsiniz.
İnternette dolaşan satır satır `LIKE '%Opt: +13%'` yazılmış eski sorgular hem sunucuda gereksiz gecikme (lag) yaratır hem de `+20`'nin üzerindeki basımları yakalayamaz. Ayrıca oyuncu DC edilmediği takdirde `GameServer` belleği eşyayı hala yüksek artı seviyesinde tutmaya devam eder.
Aşağıda paylaşılan optimize sistem; simya işlemi başarılı olduğunda eşyanın artı seviyesini anlık olarak kontrol eder, sınırın üstündeyse belirlenen maksimum değere geri sabitler ve bellek senkronizasyonu için oyuncuyu oyundan düşürür (DC eder).
Önemli Güvenlik Kuralları' Alıntı:DİKKAT:
- Bu kontrol SRO_VT_LOG içerisindeki **_AddLogItem** prosedürüne eklenir.
@Operation = 90, simya (Elixir / Alchemy) sonucunda eşyanın seviye atladığı log tipidir.- Eşyanın veritabanındaki yeni artısının istemciye ve GameServer'a tam yansıması için kuralı aşan oyuncu anında DC edilir.
- İşlem öncesinde SRO_VT_LOG yedeğinizi almayı unutmayınız.
Hatasız & Optimize Edilmiş _AddLogItem Kodu
SRO_VT_LOG veritabanındaki **_AddLogItem** prosedürünü açın (
Modify) ve AS satırının altına şu optimize bloğu ekleyin:
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
Neden Bu Yöntem Tercih Edilmeli?
- Tekil ve Sayısal Denetim: String aramaları (`LIKE`) yerine doğrudan tamsayı karşılaştırması (`> @MaxPlusLimit`) kullanılır; işlemciyi yormaz ve kilitlenme (deadlock) oluşturmaz.
- Sınırsız Kapsam: Oyuncu +13, +20 veya exploit ile +50 dahi bassa tek satırlık büyüktür şartı tüm sınır aşımlarını eksiksiz yakalar.
- Bellek Eşitliği (Anti-Rollback):
Sec_Primary = 1komutu sayesinde oyuncunun istemcisi anında kapatılarak sunucu belleğindeki sahte güç değeri silinir.
Nasıl Uygulanır?
- SQL Server Management Studio (SSMS) üzerinden `_AddLogItem` prosedürünü açın.
- Yukarıdaki kodu ekleyip en üstteki
@MaxPlusLimit = 12değerini kendi sunucu politikanıza göre ayarlayın. - F5 tuşuna basarak prosedürü derleyin.
- Sunucu restartı gerektirmez, hemen o saniye devreye girer.
Sorularınızı ve takıldığınız yerleri bu konu altından iletebilirsiniz. Herkese keyifli geliştirmeler!
Moderatör tarafında düzenlendi:

