- Mesaj
- 285
- Çözümler
- 6
- Beğeni
- 348
- Puan
- 829
- Ticaret Puanı
- 0
Herkese selamlar,
Başımı ağrıtan ve beni rahatsız eden herhangi bir forumdada paylaşıldığını görmediğim bir sorunun çözümünü paylaşmak istiyorum. Şaman karakterin Şimşek Çağırma (vnum 107) skilli bazen hasar vermiyor, özellikle kalabalık mob gruplarında bu sorun daha sık yaşanıyordu. Skill efekti görünüyor ama hasar işlemiyordu.
Aşağıdaki şekilde ekleme yaparsanız sorun çözülecektir:
Bu sorun muhtemelen orijinal kaynak kodunda bir unutma/eksiklik sonucu oluşmuş. Diğer şaman skilleri (SKILL_NOEJEON = 106, SKILL_CHAIN = 108) düzgün tanımlanmışken, aradaki SKILL_BYEURAK = 107 atlanmış.
Başımı ağrıtan ve beni rahatsız eden herhangi bir forumdada paylaşıldığını görmediğim bir sorunun çözümünü paylaşmak istiyorum. Şaman karakterin Şimşek Çağırma (vnum 107) skilli bazen hasar vermiyor, özellikle kalabalık mob gruplarında bu sorun daha sık yaşanıyordu. Skill efekti görünüyor ama hasar işlemiyordu.
Sorunun Teknik sebebi:
Metin2 sunucusunda uzak menzilli skiller (ranged skills) iki farklı mekanizma ile tetiklenebilir:- USE_SKILL paketi → Doğrudan UseSkill() fonksiyonu çağrılır
- SHOOT paketi → Shoot() → CFuncShoot sınıfı üzerinden işlenir
Aşağıdaki şekilde ekleme yaparsanız sorun çözülecektir:
char_battle.cpp:
// CFuncShoot struct'ı içindeki operator() fonksiyonunda switch-case bloğunu bul
case SKILL_NOEJEON:
// altına ekle
case SKILL_BYEURAK:
input_main.cpp:
// CInputMain::Attack fonksiyonu içindeki switch-case bloğunu bul
case SKILL_NOEJEON:
// altına ekle
case SKILL_BYEURAK:
char_skill.cpp:
// FuncSplashDamage struct'ı içindeki operator() fonksiyonunda
if (!m_bDisableCooltime && m_pInfo && !m_pInfo->HitOnce(m_pkSk->dwVnum) && m_pkSk->dwVnum != SKILL_MUYEONG)
// değiştir
if (!m_bDisableCooltime && m_pInfo && !m_pInfo->HitOnce(m_pkSk->dwVnum) && m_pkSk->dwVnum != SKILL_MUYEONG && m_pkSk->dwVnum != SKILL_BYEURAK)
// CHARACTER::ComputeSkillAtPosition fonksiyonu içinde
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
// değiştir
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG && dwVnum != SKILL_BYEURAK)
// CHARACTER::ComputeSkill fonksiyonu içinde
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG)
// değiştir
if (!m_bDisableCooltime && !m_SkillUseInfo[dwVnum].HitOnce(dwVnum) && dwVnum != SKILL_MUYEONG && dwVnum != SKILL_BYEURAK)
Bu sorun muhtemelen orijinal kaynak kodunda bir unutma/eksiklik sonucu oluşmuş. Diğer şaman skilleri (SKILL_NOEJEON = 106, SKILL_CHAIN = 108) düzgün tanımlanmışken, aradaki SKILL_BYEURAK = 107 atlanmış.