[C++] Official Otomatik Avcılık (Canlandırma)

  • Konuyu açan Konuyu açan okan4141
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 8
  • Gösterim Gösterim 328

okan4141

D E L I
Geliştirici
MT Üye
Mesaj
632
Çözümler
23
Beğeni
1.317
Puan
1.029
Ticaret Puanı
0
Elle Tutulur Bir Otomatik Av Çözdüm. Canlandırma Muhabbeti İçin 40 Dereden Su Getirmiş Yok Onun İçin Yeni EventHandle'ler Yok Command'lar Falan Filan Karman Çorman Aslında Bu Çok Basit.

Metin2 Diyor Ki;



2.webp


3 Dakika = 180 Saniye

Char_Battle.cpp Açın ve Bakın:


3.webp


Siz Bu Adamların Oraya 3 Dakika Yazmasını Boşuna Mı Zannediyorsunuz? Bu Sistemin Canlandırma Eklentisini Bu Event'e Uyarladılar Mantıken Ben Öyle Düşünüyorum.

Eğer Ölürseniz ve Burada veya Şehirde Başla Tıklamazsanız 180 saniye Sonra town.txt koordinatlarına yoksa EMPIRE_X EMPIRE_Y gibi başlangıç koordinatlarında başlıyor.

Adamlar Küçük Bir Extra Sorguyla Bunu Tamamladılar. Ben Bu Sistem İçin Yeni Fonksiyon Oluşturdum. Dileyen Bu Event'in İçinde Sadece

Otomatik Av Açık Mı ve Premium Etkisi Var mı ve Canlandırma Açık Mı Koşuluyla RestartAtSamePos'u kullanır warp'ları bu koşulun dışına atar bitti.

Bendeki Otomatik Avı Revize Ettim Ama Siz Yine Kendiniz Uyarlayabilirsiniz.

Arat:


C++:
Genişlet Daralt Kopyala
    LPCHARACTER ch = nullptr;

    if (true == info->isPC)
    {
        ch = CHARACTER_MANAGER::instance().FindByPID( info->dwID );
    }
    else
    {
        ch = CHARACTER_MANAGER::instance().Find( info->dwID );
    }

    if (nullptr == ch)
    {
        sys_err("DEAD_EVENT: cannot find char pointer with %s id(%d)", info->isPC ? "PC" : "MOB", info->dwID );
        return 0;
    }

    ch->m_pkDeadEvent = nullptr;

    if (ch->GetDesc())
    {

Altına Ekle:

C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
        if (ch->IsAutoHunt() && ch->IsAutoHuntAffect() && ch->IsAutoHuntRevive())
        {
            ch->AutoHuntRevive();
            return 0;
        }
#endif

Char.cpp Ekle:

C++:
Genişlet Daralt Kopyala
#ifdef ENABLE_AUTO_SYSTEM
void CHARACTER::AutoHuntRevive()
{
    if (!GetDesc())
        return;

    ChatPacket(CHAT_TYPE_COMMAND, "CloseRestartWindow");
    GetDesc()->SetPhase(PHASE_GAME);
    SetPosition(POS_STANDING);
    StartRecoveryEvent();
    RestartAtSamePos();
    PointChange(POINT_HP, 50 - GetHP());
    DeathPenalty(0);
    ReviveInvisible(5);
}
#endif

Kanıt:


 
Otomatik avıda paylaşırmısın Okan hocam?
 
Char.h den hata verdi bu sekilde çözdüm

public:
bool IsAutoHuntRevive();
bool IsAutoHuntAffect();
void AutoHuntRevive();
bool IsAutoHunt();


fakat build hata devam ediyor

r/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHunt()'
/usr/local/bin/ld: /usr/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHuntAffect()'
/usr/local/bin/ld: /usr/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHuntRevive()'
collect2: error: ld returned 1 exit status
 
Son düzenleme:
Char.h den hata verdi bu sekilde çözdüm

public:
bool IsAutoHuntRevive();
bool IsAutoHuntAffect();
void AutoHuntRevive();
bool IsAutoHunt();


fakat build hata devam ediyor

r/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHunt()'
/usr/local/bin/ld: /usr/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHuntAffect()'
/usr/local/bin/ld: /usr/src/snay/Server/game/src/char_battle.cpp:552: undefined reference to `CHARACTER::IsAutoHuntRevive()'
collect2: error: ld returned 1 exit status
Ben Otomatik avı revize ettim. cmd_general'den yapılmış işte revize ettiklerimden bazıları.

char.cpp (Initialize)


C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
    m_isAuto_hunt             = false;
    m_isAuto_hunt_premium     = false;
    m_isAuto_hunt_revive     = false;
#endif

char.cpp


C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
void CHARACTER::SendAutoHunt(const uint8_t iState)
{
    if (GetDesc() == nullptr || !IsPC())
        return;

    if (iState > EPacketAutoHunt::AUTO_HUNT_STOP)
        return;

    const LPDESC d = GetDesc();
    if (!d)
        return;

    TPacketGCAutoHunt p { HEADER_GC_AUTO_HUNT, iState };

    d->Packet(&p, sizeof(p));

    SetAutoHunt(iState);
}

void CHARACTER::AutoHuntRevive()
{
    if (!GetDesc())
        return;

    ChatPacket(CHAT_TYPE_COMMAND, "CloseRestartWindow");
    GetDesc()->SetPhase(PHASE_GAME);
    SetPosition(POS_STANDING);
    StartRecoveryEvent();
    RestartAtSamePos();
    PointChange(POINT_HP, 50 - GetHP());
    DeathPenalty(0);
    ReviveInvisible(5);
}
#endif

input_main.cpp


C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
void CInputMain::AutoHunt(const LPCHARACTER ch, const char* c_pData)
{
    if (ch == nullptr || !ch->GetDesc())
        return;

    const TPacketCGAutoHunt* p = reinterpret_cast<const TPacketCGAutoHunt*>(c_pData);
    if (p == nullptr)
        return;

    ch->SendAutoHunt(p->bState);
}

void CInputMain::AutoHuntRevive(const LPCHARACTER ch, const char* c_pData)
{
    if (ch == nullptr || !ch->GetDesc())
        return;

    //NOTE: If the person dies, I have no idea whether they should use the button or not.
    /* if (ch->IsDead())
    {
        ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot change your revive position while dead."));
        return;
    } */

    const TPacketCGAutoHuntRevive* p = reinterpret_cast<const TPacketCGAutoHuntRevive*>(c_pData);
    if (p == nullptr)
        return;

    ch->SetAutoHuntRevive(p->bState);
}
#endif

char.h


C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
    public:
        void                SendAutoHunt(const uint8_t iState);
        void                SetAutoHunt(const bool bAutoHunt) { m_isAuto_hunt = bAutoHunt; }
        bool                IsAutoHunt() const { return m_isAuto_hunt; }

        void                SetAutoHuntPremium(const bool bPremium) { m_isAuto_hunt_premium = bPremium; }
        bool                IsAutoHuntPremium() const { return m_isAuto_hunt_premium; }

        void                AutoHuntRevive();
        void                SetAutoHuntRevive(const bool bRevive) { m_isAuto_hunt_revive = bRevive; }
        bool                IsAutoHuntRevive() const { return m_isAuto_hunt_revive; }

    protected:
        bool                m_isAuto_hunt;
        bool                m_isAuto_hunt_premium;
        bool                m_isAuto_hunt_revive;
#endif

char_affect.cpp (bu dosyada sadece 1 tanesi / Remove ve Load içinde eklenecek.)


C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
        if (pElements->dwType == AFFECT_AUTO)
        {
            SetAutoHuntPremium(true);
        }
#endif

Clear için eklemeyi unutma

C++:
Genişlet Daralt Kopyala
#if defined(ENABLE_AUTO_SYSTEM)
            if (pkAff->dwType == AFFECT_AUTO)
            {
                ++it;
                continue;
            }
#endif
 
Geri
Üst