Demirci Alnını Silerken + Basma Şansını Yükselt

Aethre

www.pvpers.gg
Katılım
19 Haz 2024
Konular
384
Mesajlar
481
Beğeniler
814
GG Coin
14,682
Ticaret Değeri - 0%
0   0   0
Discord
pvpers.gg
Metin2 oyuncuları arasında yıllardır konuşulan ve bir nevi uğur haline gelen bir totem vardır: "Demirci alnını silerken + basarsan geçer!"

Kimileri bu anı şansın dönüm noktası saydı, kimileri ise sadece eğlenceli bir efsane olarak gördü. Ama artık bu gelenek kodlara işlendi! Yeni sistem sayesinde demircinin alnını sildiği o kısa zaman dilimi gerçekten de geliştirme ihtimalinizi artırıyor.

Şimdi gelin, bu totemin nasıl gerçeğe dönüştüğüne ve oyuna nasıl entegre edildiğine birlikte bakalım...

game/src/packet.h

Arat:
Kod:
} TPacketCGRefine;

Üzerine ekle:
Kod:
    bool extra_luck;


game/src/input_main.cpp[B]

Arat:
Kod:
        ch->DoRefine(item);

Değiştir:
Kod:
        ch->DoRefine(item, false, p->extra_luck);

game/src/char.h

Arat:
Kod:
        bool            DoRefine(LPITEM item, bool bMoneyOnly = false);

Değiştir:
Kod:
        bool            DoRefine(LPITEM item, bool bMoneyOnly = false, bool bExtraLuck = false);

game/src/char_item.cpp

Arat:
Kod:
bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly)

Değiştir:
Kod:
bool CHARACTER::DoRefine(LPITEM item, bool bMoneyOnly, bool bExtraLuck)

Arat:
Kod:
    if (IsRefineThroughGuild() || bMoneyOnly)
        prob -= 10;

Altına ekle:
Kod:
    if (bExtraLuck)
        prob -= 10;

client/UserInterface/PythonNetworkStreamModule.cpp

Gizlenmiş içeriği görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.

client/gamelib/ActorInstanceMotion.cpp

Arat:
Kod:
DWORD CActorInstance::__GetCurrentMotionKey()
{
    return m_kCurMotNode.dwMotionKey;
}

Altına ekle:
Kod:
bool CActorInstance::IsMotionInMidFrame() const
{
    if (!m_pkCurRaceMotionData)
        return false;

    static constexpr size_t FRAME_GAP = 20;
    if (m_kCurMotNode.dwcurFrame > FRAME_GAP &&
        m_kCurMotNode.dwcurFrame < m_kCurMotNode.dwFrameCount &&
        (m_kCurMotNode.dwFrameCount - m_kCurMotNode.dwcurFrame) > FRAME_GAP)
    {
        return true;
    }
    return false;
}

std::string CActorInstance::GetCurrentMotionFilename() const
{
    if (!m_pkCurRaceMotionData)
        return {};

    return m_pkCurRaceMotionData->GetMotionFileName();
}

client/gamelib/ActorInstance.h

Gizlenmiş içeriği görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.

client/UserInterface/InstanceBaseMotion.cpp

Arat:
Kod:
void CInstanceBase::SetLoopMotion(WORD wMotion, float fBlendTime/* =0.1f */, float fSpeedRatio)
{
    m_GraphicThingInstance.SetLoopMotion(wMotion, fBlendTime, fSpeedRatio);
}

Altına ekle:
Kod:
bool CInstanceBase::IsMotionInMidFrame() const
{
    return m_GraphicThingInstance.IsMotionInMidFrame();
}

std::string CInstanceBase::GetCurrentMotionName() const
{
    return m_GraphicThingInstance.GetCurrentMotionFilename();
}

client/UserInterface/InstanceBase.h

Arat:
Kod:
        void                    SetEndStopMotion();

Altına ekle:
Kod:
        bool IsMotionInMidFrame() const;
        std::string GetCurrentMotionName() const;

client/UserInterface/PythonNetworkStreamPhaseGame.cpp

Arat:
Kod:
bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType)

Değiştir:
Kod:
bool CPythonNetworkStream::SendRefinePacket(BYTE byPos, BYTE byType, bool bExtraLuck)

Arat:
Kod:
    kRefinePacket.type = byType;

Altına ekle:
Kod:
    kRefinePacket.extra_luck = bExtraLuck;

client/UserInterface/Packet.h

Gizlenmiş içeriği görüntüleyebilmek için Giriş Yap ya da Kayıt Ol
Bu işlem, 15 saniyeden az sürer.

Yıllardır oyuncuların sezgileriyle yönettiği bir alışkanlık artık somut bir oyun mekaniğine dönüştü.

Demircinin alnını sildiği o anı yakalayarak + basmak, sadece nostaljik bir refleks değil; başarı oranınızı doğrudan etkileyen stratejik bir hamle haline geldi.

Şimdi tek yapmanız gereken gözlerinizi dört açmak ve o kısa “an”ı kaçırmamak. Unutmayın, bazen bir yükseltme, yalnızca doğru zamanda basılan bir tuşla olur! 🎯
 
Geri
Üst Alt