Metin2 Fake Metin Taşı

Doğukan Taydaş

Moderatör
Moderatör
Premium Üye
Geliştirici
Yardımsever Üye
Mesaj
737
Çözümler
55
Beğeni
1.568
Puan
1.179
Ticaret Puanı
0
:mmt-hakkinda:
Yabancı forumda bulduğum konuyu paylaşmak istedim sizinle.
Mainline serverinde daha önceden kullanmıştım hata ile karşılaşmadım şuana kadar. Bu sistem tüm metinler için geçerli değildir, ben sadece ''8001'' kodlu olan metine ayarladım, sizler kodlar üzerinden değişiklikler yapabilirsiniz. Metine 50 kere vurunca oyun atıcaktır.

Server/common/service.h:
Genişlet Daralt Kopyala
#define ENABLE_FAKE_STONE                    // Sahte metin taşı
Server/game/char.cpp:
Genişlet Daralt Kopyala
// Arat

    ResetStopTime();

// Ekle

#ifdef ENABLE_FAKE_STONE
    m_bFakeStoneCounter = 0;
#endif

// Arat

    bool CHARACTER::IsRiding() const
    {
        return IsHorseRiding() || GetMountVnum();
    }

// Üstüne Ekle

#ifdef ENABLE_FAKE_STONE
    void CHARACTER::ResetFakeStoneCounter()
    {
        m_bFakeStoneCounter = 0;
    }

    BYTE CHARACTER::IncreaseFakeStoneCounter()
    {
        return ++m_bFakeStoneCounter;
    }

    BYTE CHARACTER::GetFakeStoneCounter() const
    {
        return m_bFakeStoneCounter;
    }
#endif
Server/game/char.h:
Genişlet Daralt Kopyala
// Arat

        BYTE            IncreaseMountCounter();
        BYTE            GetMountCounter() const;

// Ekle

#ifdef ENABLE_FAKE_STONE
        void            ResetFakeStoneCounter();
        BYTE            IncreaseFakeStoneCounter();
        BYTE            GetFakeStoneCounter() const;
#endif

// Arat

        std::string        m_stMobile;
        char            m_szMobileAuth[5];
        BYTE            m_bChatCounter;

// Ekle

#ifdef ENABLE_FAKE_STONE
        BYTE            m_bFakeStoneCounter;
#endif
Server/game/char_battle.cpp:
Genişlet Daralt Kopyala
// Arat

bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type)
{

// Ekle

bool CHARACTER::Damage(LPCHARACTER pAttacker, int dam, EDamageType type) // returns true if dead
{
#ifdef ENABLE_FAKE_STONE
    if (GetRaceNum() == 8001)// Metin Taşı vnum
    {
        if (pAttacker->GetFakeStoneCounter() >= 50)// Metine 50 kere vurunca oyundan atıcak.
        {
            pAttacker->ChatPacket(CHAT_TYPE_INFO, "[%s] Bot şüphesi sebebi ile oyundan atildiniz.", pAttacker->GetName());
            pAttacker->GetDesc()->DelayedDisconnect(0);
            return false;
        }
        else
        {
            pAttacker->ChatPacket(CHAT_TYPE_INFO, "[%s] Bu bir sahte metindir! %d saldırı sonra oyundan atılacaksınız!", pAttacker->GetName(), 1 - pAttacker->GetFakeStoneCounter());

            pAttacker->IncreaseFakeStoneCounter();
            return false;
        }
    }
#endif
 
Son düzenleme:
@Quaftar

sistemi ekledim build aldım sorunsuz oyuna girdim fakat 8001 metini ne kadar kesersem keseyim bir uyarı vb sistem yazısı çıkmıyor.
 
@hackerfwm akşam müsait zamanda sizinle ilgileneceğim.
 
Geri
Üst