noisiv 1
noisiv
Manwe Work 1
Manwe Work
Vahsi Uzman 1
Vahsi Uzman
Bvural41 1
Bvural41
Hikaye Ekle

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 376

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. 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.
 

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

Geri
Üst