Owsap filesini birçoğunuz biliyorsunuzdur level aralıklı olarak drop düşmekte ancak bunu nasıl düzeltebilirim mesela level aralıklı değilde benim istediğim eşyaları atsın. “Mob_drop_item” boş bir kaç satırdan başka birşey yok.
Selam
Owsap file’lerinde gördüğün o
“level aralıklı drop” olayı normal Metin2’den farklı bir sistemden geliyor;
o yüzden mob_drop_item boş olsa bile drop çalışıyor. Yani sorun sende değil, sistem öyle kurulmuş.
Kısaca:
Owsap’ta drop’lar genelde DB’deki item_drop (veya level_item_drop) tablosundan geliyor

mob_drop_item neredeyse hiç kullanılmıyor / devre dışı

Bu yüzden oraya ne yazsan da oyunda etkisi olmuyor
Senin istediğin ise:
“Level aralığına göre değil de, benim istediğim eşyaları atsın.”
Bunu yapmanın iki yolu var:

Owsap’in level-drop sistemini kullanmaya devam edip DB’den itemleri değiştirmek

O sistemi kapatıp klasik mob_drop_item sistemine dönmek
İkisini de anlatayım.
Mevcut Owsap level-drop sistemini düzenlemek (en pratik yol)
① Navicat / HeidiSQL ile DB’ye bağlan
- player veritabanını aç
- Tablo isimlerine bak: genelde şunlardan biri olur:
- item_drop
- level_item_drop
- item_drop_mob tarzı bir şey
İçeriğinde şöyle sütunlar görürsün (örnek):
- id
- item_vnum (düşecek eşya)
- count (adet)
- prob (ihtimal)
- level_min / level_max (bu level aralığındaki moblardan düşer)
- mob_vnum / mob_race / map_index vs. (sende olmayabilir, sistemin tipine göre değişir)
② Buradaki satırları değiştirerek ne düşeceğini ayarlıyorsun
Örnek satır:
id: 1
item_vnum: 27987 -- (Örnek; Exp Yüzüğü vs.)
count: 1
prob: 500 -- 500 = %5 gibi düşün
level_min: 1
level_max: 30
Bu ne demek?
Level 1–30 aralığındaki moblardan şu item %5 ihtimalle düşüyor.
Sen mesela:
- Farklı item VNUM yazarsın (ör: 13000 zırh, 11299 kılıç vs.)
- Level aralıklarını kendine göre düzenlersin
- İster her levelden düşsün diye level_min = 1, level_max = 120 yaparsın
Böylece:

Level aralıklı drop sistemi bozulmadan,

İçindeki eşyaları tamamen kendine göre değiştirmiş olursun.
Mob_drop_item’ın boş olmasının sebebi: Sistem orayı hiç kullanmıyor; drop tamamen bu DB tablosundan geliyor.
Level bazlı drop sistemini kapatıp klasik mob_drop_item kullanmak (biraz uğraştırır)
Daha klasik, “şu mob şu itemi atsın” mantığı istiyorsan:
① Önce game/src tarafını düzeltmen gerekiyor
Owsap’ta genelde game içinde şöyle bir yerde (örn. item_drop.cpp, char.cpp, config.cpp)
DB’den item_drop tablosunu okuyup oradan drop hesaplıyor.
Bunu devre dışı bırakıp:
- Ya tamamen silip
- Ya da config’e bağlıyorsun (ör. USE_LEVEL_ITEM_DROP gibi bir define ile)
Böylece
drop hesabı tekrar mob_drop_item’a döner.
② Sonra mob_drop_item dosyasını dolduruyorsun
share/locale/turkey/mob_drop_item.txt (yol sende farklı olabilir) içine klasik satırlar yazılır:
MOBVNUM ITEMVNUM MİN MAX İHTİMAL
101 13000 1 1 500 -- %5 ihtimalle 13000 düşsün
101 11299 1 1 1000 -- %10
veya dosyanın formatına göre (yapıya göre değişebiliyor).
Bu yöntem:
Çok esnek
Game src derleme ve sistem değiştirme gerektiriyor, biraz ileri seviye
Büyük ihtimalle senin için en kolayı:
1. yöntemi kullanmak, yani:
- DB’deki item_drop/level_item_drop tablosunu bul
- İçindeki item_vnum ve level aralıklarını kendi istediğine göre değiştir
- Drop sistemi zaten oradan işliyor, direkt etkisini görürsün
İstersen tablo çıktısını yapıştır, birlikte dizayn edelim.