Combo hilesi fix

  • Konuyu başlatan Konuyu başlatan apikomt2
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 371

apikomt2

Level 6
Katılım
11 May 2023
Konular
270
Mesajlar
1,142
Çözüm
2
Online süresi
1mo 25d
Reaksiyon Skoru
745
Altın Konu
1
Başarım Puanı
199
MmoLira
1,200
DevLira
381
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

sistem şöyle çalışıyor.

örneğin lalakerati

comboları iptal edip ikinci comboyu çalıştırıyor.

sistem aynı combo tekrar edildiğini fark edince

clienti kapatıyor.

şöyle hile yapılabilir.

1 2 1 2 12

yani combo 1 combo2 combo 1 combo2 combo1 combo 2 döngüsünde bunun için çözüm bimliyorum çünkü hilsini bulamadım.



3 ayrı
kapatma metedu ekledim

zorla kapatma
TerminateProcess(GetCurrentProcess(), 0);
std::abort();
_exit(0);


actorinsantancebattle.cpp

ilgili yeri burayı kopyala aynı yerle değiştir.
yeni kod bloğunuda ekliyon direk altına yani bunu CanDoCombo

Kod:
void CActorInstance::__OnEndCombo()
{
    m_wLastSentCombo = 0xFFFF;
    m_bySameComboCount = 0;
    m_wNextExpectedCombo = 0; // Kombo bittiğinde beklentiyi sıfırla

    if (__IsMountingHorse())
    {
        m_dwcurComboIndex = 1;
    }
}

void CActorInstance::__ClearCombo()
{
    m_dwcurComboIndex = 0;
    m_isPreInput = FALSE;
    m_pkCurRaceMotionData = NULL;
    m_wcurComboType = 0;
 
    m_dwLastComboTime = 0;
    m_wLastSentCombo = 0xFFFF;
    m_bySameComboCount = 0;
    m_wNextExpectedCombo = 0;
}

bool CActorInstance::CanDoCombo(WORD wComboIndex)
{
    DWORD dwCurTime = ELTimer_GetMSec();
 
    // 1. HIZ KONTROLÜ
    if (dwCurTime - m_dwLastComboTime < 70)
    {
        return false;
    }

    // 2. SIRALI KOMBO KONTROLÜ (Sequence Check)
    // Eğer bir kombo zinciri içindeysek (m_wNextExpectedCombo > 0),
    // gelen index beklenen değer olmalı veya kombo başa dönmeli (0).
    /*
    if (m_wNextExpectedCombo > 0 && wComboIndex != 0 && wComboIndex != m_wNextExpectedCombo)
    {
        TraceError("COMBO_SEQUENCE_HACK: VID [%d] Beklenen: %d, Gelen: %d. Oyun kapatiliyor.",
            GetVirtualID(), m_wNextExpectedCombo, wComboIndex);
  
        TerminateProcess(GetCurrentProcess(), 0);
        std::abort();
        _exit(0);
        return false;
    }
*/
    // 3. TEKRAR KONTROLÜ
    if (wComboIndex != 0 && wComboIndex == m_wLastSentCombo)
    {
        m_bySameComboCount++;

        if (m_bySameComboCount > 6)
        {
            TerminateProcess(GetCurrentProcess(), 0);
            std::abort();
            _exit(0);
            return false;
        }
  
        return false;
    }
    else
    {
        m_bySameComboCount = 0;
    }

    return true;
}

actorisntance.h

herhangi bir public bloğunnu altına ekle

aşağıya in daha iyi
Kod:
public:

// WORD m_wNextExpectedCombo;
// DWORD m_dwLastComboTime;
// bool CanDoCombo(WORD wComboIndex);
// bool OnComboAttack(WORD wComboIndex);

// WORD    m_wNextExpectedCombo;
// DWORD   m_dwLastComboTime;

// Fonksiyon prototipi (sonunda ; olmasına dikkat et):
bool    CanDoCombo(WORD wComboIndex);
void    OnComboAttack(WORD wComboIndex);
// CanDoCombo(WORD wComboIndex)
// m_wLastSentCombo
    protected:
   WORD  m_wNextExpectedCombo;
   WORD  m_wLastSentCombo;
   DWORD m_dwLastComboTime;
   BYTE  m_bySameComboCount; // Yeni: Aynı kombo tekrar sayacı
        // m_wLastSentCombo

// CActorInstance::OnComboAttack(WORD wComboIndex)

komple değiştir

Kod:
void CActorInstance::__OnAttack(WORD wMotionIndex)

{

    // Hile kontrolü

    if (!CanDoCombo(wMotionIndex))

    {

        return;

    }



    // Kayıtları Güncelle

    m_wLastSentCombo = wMotionIndex;

    m_dwLastComboTime = ELTimer_GetMSec();

 

    // Bir sonraki beklenen kombo indexini ayarla (Örn: 1 ise 2 bekle)

    m_wNextExpectedCombo = wMotionIndex + 1;



    // --- ORİJİNAL SALDIRI AKIŞI ---

    IEventHandler& rkEventHandler = __GetEventHandlerRef();



    IEventHandler::SState kState;

    kState.kPPosSelf = NEW_GetCurPixelPositionRef();

    kState.fAdvRotSelf = GetTargetRotation();

    rkEventHandler.OnAttack(kState, wMotionIndex);

}
 
Son düzenleme:
bide not düşeyim.
yürüme aniamsyonu
func_move
kısmından yürürken log gönderiyor yani server taraflı çalışıyor.
ama
func_attack gibi bir fonskiyon yok server tarafında.

attack olan kod bloklarındanda sys log denedim

combo atıcna log gelmiyor.

yani bu comboyu komple client tarafına almışlar. gibi.
 
eline sağlık paylaşm için teşekkürler.
 
Eline sağlık, paylaşım için teşekkürler.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)