Mt2Hizmet 1
Mt2Hizmet
Sevdamsın 1
Sevdamsın
Nedved35 1
Nedved35
Bvural41 1
Bvural41
-TuRKuaZ- 1
-TuRKuaZ-
farkmt2official 1
farkmt2official
Hikaye Ekle

Cevaplandı Menzilli kükreme

  • Konuyu başlatan Konuyu başlatan mertcanayhan0606
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 13
  • Görüntüleme Görüntüleme 334

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

Ağalar bu şamanın kükreme skilini menzili hale nasıl getiriz istediği yere kükreme atıyor ya
 
Çözüm
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.


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...
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.


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:


❌ Şu anki hatalı yapı:​

// Konum hedefli kullanım
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.
 
Çözüm
Ş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:


❌ Şu anki hatalı yapı:​

// Konum hedefli kullanım
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.
Hocam sen bir kralsın 🥰
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst