Boss Deprem Efekti Sistemi

lmaohw

https://valoduo.com.tr/
Gold Üye
Yardımsever Üye
Usta Üye
Mesaj
683
Çözümler
37
Beğeni
888
Puan
919
Ticaret Puanı
0
Başlıktaki gibidir başka forumlardada mevcuttur bizim forumda göremediğimden paylaşıyorum. Bir filestan sökmüştüm sizinlede paylaşmak istedim. Eğer daha önce paylaşıldıysa kapatılabilir.

Client/Eterlib/GrpBase.cpp:
Genişlet Daralt Kopyala
//bul

void CGraphicBase::SetScreenEffectWaving(float fDuringTime, int iPower)
{
    ms_dwWavingEndTime = CTimer::Instance().GetCurrentMillisecond() + long(fDuringTime * 1000.0f);
    ms_iWavingPower = iPower;
}

// altına ekle

#ifdef ENABLE_EARTHQUAKE_SYSTEM
void CGraphicBase::SetScreenEffectWavingEnd()
{
    ms_dwWavingEndTime = 0;
    ms_iWavingPower = 0;
}
#endif

Client/EterLib/GrpBase.h:
Genişlet Daralt Kopyala
//Bul

        // Special Routine
        void        GetSphereMatrix(D3DXMATRIX * pMatrix, float fValue = 0.1f);

        ////////////////////////////////////////////////////////////////////////
        void        InitScreenEffect();
        void        SetScreenEffectWaving(float fDuringTime, int iPower);

// Altına ekle

#ifdef ENABLE_EARTHQUAKE_SYSTEM
        void        SetScreenEffectWavingEnd();
#endif


Client/GameLib/ActorInstanceMotion.cpp:
Genişlet Daralt Kopyala
//Bul


DWORD CActorInstance::__SetMotion(const SSetMotionData& c_rkSetMotData, DWORD dwRandMotKey)
{
    DWORD dwMotKey = dwRandMotKey;

    if (dwMotKey == 0)
        dwMotKey = GetRandomMotionKey(c_rkSetMotData.dwMotKey);

    UINT uNextMot = GET_MOTION_INDEX(c_rkSetMotData.dwMotKey);

    if (IsDead())
    {
        if (uNextMot!=CRaceMotionData::NAME_DAMAGE_FLYING && uNextMot!=CRaceMotionData::NAME_DAMAGE_FLYING_BACK && uNextMot!=CRaceMotionData::NAME_DEAD && uNextMot!=CRaceMotionData::NAME_DEAD_BACK)
            return 0;
    }
    if (IsUsingSkill())
    {
        __OnStop();
    }


// Altına ekle NOT : BURADA İSTEDİĞİNİZ BOSS VNUMLARINI YAZIN
    
#ifdef ENABLE_EARTHQUAKE_SYSTEM
    if (GetRace() == 18040)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 800);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18041)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 400);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18042)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18043)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18044)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18045)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18046)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18047)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18048)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18049)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18050)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18051)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18052)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18053)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18054)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18055)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18056)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18057)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18058)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18059)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18060)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18061)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18062)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18063)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18064)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18065)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18066)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18067)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18068)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
    else if (GetRace() == 18069)
    {
        if (uNextMot == CRaceMotionData::NAME_RUN)
        {
            SetScreenEffectWaving(50.00f, 100);
        }
        else
        {
            SetScreenEffectWavingEnd();
        }
    }
#endif

Client/UserInterface/Locale_inc.h:
Genişlet Daralt Kopyala
// UYGUN YERE EKLE

#define ENABLE_EARTHQUAKE_SYSTEM                                                    // Boss Titretme Dalgası
 
Birşeye değineceğim şu vnum ekleme kısmı kod bloğunu çok uzatıyo unordered map kullanılabilir.

örnek:

#ifdef ENABLE_EARTHQUAKE_SYSTEM
#include <unordered_map>
void ApplyScreenEffect()
{
static const std::unordered_map<int, int> raceWaveDurations = {
{18040, 800},
{18041, 400}
};
if (uNextMot == CRaceMotionData::NAME_RUN)
{
auto it = raceWaveDurations.find(GetRace());
if (it != raceWaveDurations.end())
{
SetScreenEffectWaving(50.00f, it->second);
}
else if (GetRace() >= 18042 && GetRace() <= 18069)
{
SetScreenEffectWaving(50.00f, 100);
}
}
else
{
SetScreenEffectWavingEnd();
}
}
#endif
 
Birşeye değineceğim şu vnum ekleme kısmı kod bloğunu çok uzatıyo unordered map kullanılabilir.

örnek:

#ifdef ENABLE_EARTHQUAKE_SYSTEM
#include <unordered_map>
void ApplyScreenEffect()
{
static const std::unordered_map<int, int> raceWaveDurations = {
{18040, 800},
{18041, 400}
};
if (uNextMot == CRaceMotionData::NAME_RUN)
{
auto it = raceWaveDurations.find(GetRace());
if (it != raceWaveDurations.end())
{
SetScreenEffectWaving(50.00f, it->second);
}
else if (GetRace() >= 18042 && GetRace() <= 18069)
{
SetScreenEffectWaving(50.00f, 100);
}
}
else
{
SetScreenEffectWavingEnd();
}
}
#endif
Teşekkürler mantıklı bahsettiğiniz uygulanabilir.
 
Son düzenleme:
Uyarı: Bu konu açıldığından bu yana baya zaman geçmiş.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.
Geri
Üst