Ağalar bu şamanın kükreme skilini menzili hale nasıl getiriz istediği yere kükreme atıyor ya
Şamanın Kükreme (Roar) skillinin “istediği yere atma” (free target) özelliğini kapatarak sadece menzili kadar, ileri doğru çalışmasını istiyorsan, bunu sadece skill_proto ile değil, server source (game/src) tarafında düzeltmen gerekiyor.Ağalar bu şamanın kükreme skilini menzili hale nasıl getiriz istediği yere kükreme atıyor ya
1) Amaç Ne?
Şamanın Kükreme (Roar) skillinin “istediği yere atma” (free target) özelliğini kapatarak sadece menzili kadar, ileri doğru çalışmasını istiyorsan, bunu sadece skill_proto ile değil, server source (game/src) tarafında düzeltmen gerekiyor.Ağalar bu şamanın kükreme skilini menzili hale nasıl getiriz istediği yere kükreme atıyor ya
1) Amaç Ne?
2) Yapılması Gereken (Temel Mantık)
TARGET_DIRECTION veya TARGET_RANGE tipi olsun.
3) Skill Proto Düzenlemesi (Ama YETERLİ DEĞİL)
Şu anki hatalı yapı:
5) Eğer sadece CLIENT tarafını kapatmak istersen
6) Sana birebir tam çözümü verebilmem için:Hocam sen bir kralsınŞamanın Kükreme (Roar) skillinin “istediği yere atma” (free target) özelliğini kapatarak sadece menzili kadar, ileri doğru çalışmasını istiyorsan, bunu sadece skill_proto ile değil, server source (game/src) tarafında düzeltmen gerekiyor.
Bu durum PVP kaynaklarında çok sık görülür.
✔ Çünkü Roar, “area (alan)” tipi skildir ve client tarafından “free target” gibi kullanılabilir.
Aşağıda tamamen net çözümü veriyorum.
1) Amaç Ne?
Kükreme skili şöyle çalışsın:
- Oyuncu sadece menzil içinde kükreme atsın
- Fare ile istediği uzak noktaya tıklayıp atamasın
- Şamanın önündeki koni/ dairesel alana etki etsin
Yani tam olarak Charge / Ara saldırı gibi çalışacak.
2) Yapılması Gereken (Temel Mantık)
Metin2’de skilin hedef tipi skill_proto üzerinden gelir,
ama davranış game/src/char_skill.cpp içinde belirlenir.
Kükreme şu şekilde işlenir:
SKILL_TONGUE_STRIKE (şaman kükreme)
kodda ismi genelde:
SKILL_TONGUE_STRIKE // roar
veya:
SKILL_DRAGON_ROAR
Kaynaklarda değişik olabilir.
Bu skil çoğunlukla TARGET_LOCATION (konum hedefli) çalışır.
Senin istediğin ise:
TARGET_DIRECTION veya TARGET_RANGE tipi olsun.
Yani oyuncu tıklamasın → karakterin yönüne göre vursun.
3) Skill Proto Düzenlemesi (Ama YETERLİ DEĞİL)
skill_proto.txt veya skill_proto SQL'de:
- type veya target_type değerini kontrol et.
Muhtemelen şu şekildedir:
target_type : 4 (location / ground)
Bunu şu türlerden birine çekebilirsin:
1 = target (karakter)
2 = self (kendine)
3 = forward (yön alanı)
Roar için genelde 3 forward area en uygunudur.
Ama TEK BAŞINA YETMEZ.
⚠ 4) Asıl Çözüm: game/src/char_skill.cpp düzenleme
Şamanın kükremesi şu fonksiyonda işlenir:
bool CHARACTER::UseSkill(...)
veya:
int CSkillManager::ApplySkill(...)
Kükreme skill ID'sini bulup şunu değiştiriyoruz:
// Konum hedefli kullanım
Şu anki hatalı yapı:
GetTargetPosition(...)
Hasar hesapla...
✔ Olması gereken:
// Yön + menzil alanı hesaplama
GetMultiTargetVictim(CHARACTER, direction, range);
Yani kod yaklaşık şu hale getirilir:
if (skill_id == SKILL_TONGUE_STRIKE)
{
int range = GetSkillRange(skill_id);
float rot = GetRotation(); // karakterin baktığı yön
std::vector<LPCHARACTER> targets;
FetchAttackTargets(targets, this, range, rot);
for (auto & ch : targets)
Hit(ch); // normal skill damage hesaplama
return true;
}
Böylece:
✔ İleri doğru menzil alanına vurur
✔ Tıklanan yere gitmez
✔ Free-target kalkar
✔ Gerçek koni veya dairesel alan gibi etkiler
5) Eğer sadece CLIENT tarafını kapatmak istersen
client/UI tarafında şunu kapatabilirsin:
root/uiSkill.py → skill target tipi UI’ı.
Ama bu tek başına yetmez, çünkü server hala skill’i location olarak işleyebilir.
Yani “skill görünüşü” düzelir, ama arka planda yine hedef noktaya gider.
Doğru çözüm = server + proto.
6) Sana birebir tam çözümü verebilmem için:
Şunlardan birini gönderirsen tam kod yamasını hazırlayabilirim:
- skill_proto.txt içinde Kükreme satırı
- skill ID’si (ör: 131, 132 vs. kaynaklara göre değişir)
- char_skill.cpp içindeki ilgili bölüm
- veya sadece kullandığın source sürümünü söyle (Martysama 40k? Mainline? Daroo? Wolfman dahil mi?)
İstersen dosyaları at, düzenleyip en kısa haliyle göndereyim.
