Çözüldü Point attbonus boss damage işlememe sorunu

Bu konu çözüme ulaştırılmıştır. Çözüm için konuya yazılan tüm yorumları okumayı unutmayın. Eğer konudaki yorumlar sorununuzu çözmediyse yeni bir konu açabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

damador

MT Üye
MT Üye
Merhaba arkadaşlar Boss lara karşı güç bonusu ekledim ama hasar sadece tek moba işliyor

alttaki 2 kodda aynı sadece 2493 Beran-Setaou'ya karşı damage etkiliyor denediğim tüm mobların rank'ı 5 diğer tum slotlar vs bosslara damage etkılemıyor

bu kodu ( && !pkVictim->IsStone ) kaldırdığım vakit metinlere etki ediyor ama bosslara yine işlemiyor bu sorunu yaşıyan yada bilen varsa yardımcı olabilirmi?

1:
        else if (pkVictim->GetRaceNum() == 1093 || pkVictim->GetRaceNum() == 2598 || pkVictim->GetRaceNum() == 2092 || pkVictim->GetRaceNum() == 2493 || pkVictim->GetRaceNum() == 6091 || pkVictim->GetRaceNum() == 6191 || pkVictim->GetRaceNum() == 6408 || pkVictim->GetRaceNum() == 6192)
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;

2:
        else if (pkVictim->GetMobRank() >= MOB_RANK_BOSS && !pkVictim->IsStone())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;[

        else if (pkVictim->GetMobRank() >= MOB_RANK_KING && !pkVictim->IsStone())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;[
 
Çözüm
tek tek mob kodunu yazmaktansa IsBoss() sorgunu kullan . Yoksa ekle öyle kullan.

IsBoss() sorgusunu ekleme game tarafı;
char.h:
//Arat;
IsStone()

// Altına ekle;
        bool            IsBoss()    const    { return GetMobRank() >= MOB_RANK_BOSS; }

IsBoss() sorgusunu ekleme client tarafı;
C++:
// InstanceBase.h arat;
BOOL                    IsStone();
// Altına ekle;
BOOL                    IsBoss();
// InstanceBase.cpp arat;
BOOL CInstanceBase::IsStone()
{
    return m_GraphicThingInstance.IsStone();
}
// Altına ekle;
BOOL CInstanceBase::IsBoss()
{
    const CPythonNonPlayer::TMobTable *pkTab = CPythonNonPlayer::Instance().GetTable(GetRace());
    if(pkTab != nullptr)
    {
        if (pkTab->bRank >= 4 && !IsStone() && pkTab->bType ==...
tek tek mob kodunu yazmaktansa IsBoss() sorgunu kullan . Yoksa ekle öyle kullan.

IsBoss() sorgusunu ekleme game tarafı;
char.h:
//Arat;
IsStone()

// Altına ekle;
        bool            IsBoss()    const    { return GetMobRank() >= MOB_RANK_BOSS; }

IsBoss() sorgusunu ekleme client tarafı;
C++:
// InstanceBase.h arat;
BOOL                    IsStone();
// Altına ekle;
BOOL                    IsBoss();
// InstanceBase.cpp arat;
BOOL CInstanceBase::IsStone()
{
    return m_GraphicThingInstance.IsStone();
}
// Altına ekle;
BOOL CInstanceBase::IsBoss()
{
    const CPythonNonPlayer::TMobTable *pkTab = CPythonNonPlayer::Instance().GetTable(GetRace());
    if(pkTab != nullptr)
    {
        if (pkTab->bRank >= 4 && !IsStone() && pkTab->bType == 0)
            return TRUE;
    }
    return FALSE;
}

battle.cpp:
#ifdef ENABLE_BONUS_BOSS
        if (pkVictim->IsBoss())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;
#endif
#ifdef ENABLE_BONUS_METIN
        if (pkVictim->IsStone())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;
#endif
 
Son düzenleme:
Çözüm
tek tek mob kodunu yazmaktansa IsBoss() sorgunu kullan . Yoksa ekle öyle kullan.

IsBoss() sorgusunu ekleme game tarafı;
char.h:
//Arat;
IsStone()

// Altına ekle;
        bool            IsBoss()    const    { return GetMobRank() >= MOB_RANK_BOSS; }

IsBoss() sorgusunu ekleme client tarafı;
C++:
// InstanceBase.h arat;
BOOL                    IsStone();
// Altına ekle;
BOOL                    IsBoss();
// InstanceBase.cpp arat;
BOOL CInstanceBase::IsStone()
{
    return m_GraphicThingInstance.IsStone();
}
// Altına ekle;
BOOL CInstanceBase::IsBoss()
{
    const CPythonNonPlayer::TMobTable *pkTab = CPythonNonPlayer::Instance().GetTable(GetRace());
    if(pkTab != nullptr)
    {
        if (pkTab->bRank >= 4 && !IsStone() && pkTab->bType == 0)
            return TRUE;
    }
    return FALSE;
}

battle.cpp:
#ifdef ENABLE_BONUS_BOSS
        if (pkVictim->IsBoss())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_BOSS)) / 100;
#endif
#ifdef ENABLE_BONUS_METIN
        if (pkVictim->IsStone())
            iAtk += (iAtk * pkAttacker->GetPoint(POINT_ATTBONUS_METIN)) / 100;
#endif
teşekkürler
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri