Sosyal açıldı! Bir göz at → Hemen gir →

ÇÖZÜLDÜ Group Heal Hk.

1910

KY Kıdemli Üye
KAYIT
11 Şub 2024
Mesajlar
402
Çözümler
2
Tepki puanı
80
Arkadaşlar merhaba

Grup heal attığım zaman alandaki herkese heal gidiyor.

Karus human farketmiyor sağ altta da isimleri geçiyor.

Partide olan olmayan alandaki herkese heal atıyor. Nereyi kontrol etmemiz gerekiyor
 

izwein

Moderatör
KAYIT
21 Ağu 2025
Mesajlar
191
Çözümler
1
Tepki puanı
583
Gameserver
 

izwein

Moderatör
KAYIT
21 Ağu 2025
Mesajlar
191
Çözümler
1
Tepki puanı
583
MagicProcess.cpp de hangi gameserver kullanıyorsunuz bilmiyorum fakat mantık şudur;

MagicProcess.cpp'deki MORAL_PARTY_ALL casesinde parti kontrolü var ama o sadece yüksek ihtimal sende tek hedef için çalışıyor.

UserRegionCheck sonrasında, casted_member.push_back öncesinde parti kontrolü eklenmeli:


C++:
if (CMagicProcess::UserRegionCheck(pSkillCaster, pTarget, pSkill, pType->bRadius + added, sData[0], sData[2]))
{
    // MORAL_PARTY_ALL ise sadece parti üyelerini ekle
    if (pSkill.bMoral == MORAL_PARTY_ALL && pTarget != pSkillCaster)
    {
        if (!pSkillCaster->isPlayer() || !pTarget->isPlayer())
            continue;
            
        CUser* pCaster = TO_USER(pSkillCaster);
        CUser* pTUser = TO_USER(pTarget);
        
        // Caster partide değilse sadece kendine at
        if (!pCaster->isInParty())
            continue;
            
        // Hedef partide değilse veya farklı partideyse atla
        if (!pTUser->isInParty() || pCaster->GetPartyID() != pTUser->GetPartyID())
            continue;
    }
    
    casted_member.push_back(pTarget);
    if (pTarget->isPlayer() && pSkillCaster->GetNation() != pTarget->GetNation())
        TO_USER(pTarget)->RemoveStealth();
}


Yine söylüyorum kodunu görmedim sıkıntıyı tahminen çözmeye çalışıyoruz kimse burda kesin şudur diyemez deneme yanılma yapman lazım.
 

1910

KY Kıdemli Üye
KAYIT
11 Şub 2024
Mesajlar
402
Çözümler
2
Tepki puanı
80
MagicProcess.cpp de hangi gameserver kullanıyorsunuz bilmiyorum fakat mantık şudur;

MagicProcess.cpp'deki MORAL_PARTY_ALL casesinde parti kontrolü var ama o sadece yüksek ihtimal sende tek hedef için çalışıyor.

UserRegionCheck sonrasında, casted_member.push_back öncesinde parti kontrolü eklenmeli:


C++:
if (CMagicProcess::UserRegionCheck(pSkillCaster, pTarget, pSkill, pType->bRadius + added, sData[0], sData[2]))
{
    // MORAL_PARTY_ALL ise sadece parti üyelerini ekle
    if (pSkill.bMoral == MORAL_PARTY_ALL && pTarget != pSkillCaster)
    {
        if (!pSkillCaster->isPlayer() || !pTarget->isPlayer())
            continue;
           
        CUser* pCaster = TO_USER(pSkillCaster);
        CUser* pTUser = TO_USER(pTarget);
       
        // Caster partide değilse sadece kendine at
        if (!pCaster->isInParty())
            continue;
           
        // Hedef partide değilse veya farklı partideyse atla
        if (!pTUser->isInParty() || pCaster->GetPartyID() != pTUser->GetPartyID())
            continue;
    }
   
    casted_member.push_back(pTarget);
    if (pTarget->isPlayer() && pSkillCaster->GetNation() != pTarget->GetNation())
        TO_USER(pTarget)->RemoveStealth();
}


Yine söylüyorum kodunu görmedim sıkıntıyı tahminen çözmeye çalışıyoruz kimse burda kesin şudur diyemez deneme yanılma yapman lazım.
hocam teşekkür ederim sorun moral_party_all kısmındaymış yapı biraz farklıydı fakat hallettim.

aynı party de değilse self-cast çalıştırarak çözüm buldum
 
Anasayfa Kayıt ol Giriş yap
Üst Alt