Hikayeler

Reklam vermek için turkmmo@gmail.com

Menzilli kükreme

mertcanayhan0606

"Yarın ölecekmiş gibi yaşa."
Telefon Numarası Onaylanmış Üye
Paylaşım
TM Üye
Üye
Katılım
22 Mar 2024
Konular
42
Mesajlar
345
Online süresi
22g 57941s
Reaksiyon Skoru
161
Altın Konu
0
Başarım Puanı
81
Yaş
28
TM Yaşı
2 Yıl 28 Gün
MmoLira
8,005
DevLira
9

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. 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...
Animasyonun msasında düzenleme yaptınız mı hocam bir de öyle deneyin derim 😊
 
Birazdan inşallah onu denicem banada çözüm o gibi geliyor haber dâr edeceğim hocam
 
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 : 1, Üye: 0, Misafir: 1)

Geri
Üst