Server taraflı hile tespit

  • Konuyu açan Konuyu açan martysama
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 10
  • Gösterim Gösterim 286

martysama

Yasaklanmış Üye
Cezalı
Mesaj
250
Beğeni
109
Puan
466
Ticaret Puanı
0
aslında oyunda bunun syseri veriyordu fakat oyundan çıkar gibi bi kod yoktu yapay zeka yardımıyla güncellendi.

neden syser olarak düzenlemişler çünkü durduk yere oyundan atıyor hilesiz oyuncuları.

örneğin a oyuncusu b oyuncusuna saldırınca b oyuncusu kordinat değişiyor.
hile algılıyor.

konuyu geliştirlmesi açısından açık bırakıyorum belki birileri stabil sürümünü bulur





char.cpp

Kod:
Genişlet Daralt Kopyala
bool CHARACTER::Sync(long x, long y)
{
    if (!GetSectree())
        return false;

    LPSECTREE new_tree = SECTREE_MANAGER::instance().Get(GetMapIndex(), x, y);

    if (!new_tree)
    {
        if (GetDesc())
        {
            sys_err("cannot find tree at %d %d (name: %s)", x, y, GetName());
            // @fixme313 BEGIN
            new_tree = GetSectree();
            x = GetX();
            y = GetY();
            if (!new_tree)
            {
                GetDesc()->SetPhase(PHASE_CLOSE);
                sys_err("cannot find old tree at %d %d (name: %s)", x, y, GetName());
            }
            // @fixme313 END
        }
        else
        {
            sys_err("no tree: %s %d %d %d", GetName(), x, y, GetMapIndex());
            Dead();
        }

        return false;
    }

    SetRotationToXY(x, y);
    SetXYZ(x, y, 0);

    if (GetDungeon())
    {
        int iLastEventAttr = m_iEventAttr;
        m_iEventAttr = new_tree->GetEventAttribute(x, y);

        if (m_iEventAttr != iLastEventAttr)
        {
            if (GetParty())
            {
                quest::CQuestManager::instance().AttrOut(GetParty()->GetLeaderPID(), this, iLastEventAttr);
                quest::CQuestManager::instance().AttrIn(GetParty()->GetLeaderPID(), this, m_iEventAttr);
            }
            else
            {
                quest::CQuestManager::instance().AttrOut(GetPlayerID(), this, iLastEventAttr);
                quest::CQuestManager::instance().AttrIn(GetPlayerID(), this, m_iEventAttr);
            }
        }
    }
//duzenlenen yer
if (GetSectree() != new_tree)
{
    if (!IsNPC())
    {
        SECTREEID id = new_tree->GetID();
        SECTREEID old_id = GetSectree()->GetID();

        // Mevcut ve onceki pozisyon arasİndaki mesafeyi hesapla
        const float fDist = DISTANCE_SQRT(id.coord.x - old_id.coord.x, id.coord.y - old_id.coord.y);

        // Zaman farkİnİ kontrol et
        static DWORD lastMoveTime = get_global_time();
        DWORD currentMoveTime = get_global_time();
        DWORD timeDiff = currentMoveTime - lastMoveTime;

        // Hİz hesaplama
        float speed = (timeDiff > 0) ? (fDist / (timeDiff / 1000.0f)) : 0.0f; // m/s cinsinden

        // Oyuncu hİzİnİ al ve kar?İla?tİr
        const float playerSpeed = GetLimitPoint(POINT_MOV_SPEED);
        const float maxAllowableSpeed = playerSpeed * 1.5f; // Bir tolerans ekliyoruz

if (speed > maxAllowableSpeed)
{
    // Loglama: Detaylı bilgi verir
    sys_log(0,
            "POTANSİYEL HİLE ALGILANDI: %s | SECTREE FARKI: %dx%d -> %dx%d | MESAFE: %.1fm | HIZ: %.2fm/s (İZİN VERİLEN: %.2fm/s)",
            GetName(),
            id.coord.x, id.coord.y,
            old_id.coord.x, old_id.coord.y,
            fDist, speed, maxAllowableSpeed);

    // Hız sınırı ihlali yapan karakter için ceza
    LPCHARACTER ch = static_cast<LPCHARACTER>(this);
    if (ch)
    {
        // Oyuncuya bilgilendirme mesajı
        ch->ChatPacket(CHAT_TYPE_INFO,
                       "Hız sınırını aştığınız tespit edildi! Lütfen oyun istemcisi dışında müdahale yapmayın.");

        // Eğer oyuncunun bağlantısı varsa
        if (GetDesc())
        {
            // 2-7 saniye arasında rastgele bir gecikmeyle bağlantıyı kes
            int delay = number(2, 7);
            GetDesc()->DelayedDisconnect(delay);

            sys_log(0,
                    "HİLEYE BAĞLANTI KESİLDİ: %s (İsim: %s, Saniye: %d)",
                    GetName(), ch->GetName(), delay);

            // Hile log kaydı ekleniyor
            LogManager::instance().HackLog("SpeedHack", this);
        }
    }
}



        // Zaman ve konumu guncelle
        lastMoveTime = currentMoveTime;
    }
//duzenlenen yer
    new_tree->InsertEntity(this);
}

ymirin
beceremediğniide yapay zeka becerdi


update şimdilik stabil


Kod:
Genişlet Daralt Kopyala
bool CHARACTER::Attack(LPCHARACTER pkVictim, BYTE bType)
{
    if (test_server)
        sys_log(0, "[TEST_SERVER] Attack : %s type %d, MobBattleType %d", GetName(), bType, !GetMobBattleType() ? 0 : GetMobAttackRange());

    if (!CanMove())
        return false;

    // CASTLE
    if (IS_CASTLE_MAP(GetMapIndex()) && false == castle_can_attack(this, pkVictim))
        return false;
    // CASTLE

    // Savaşta saldırılabilirlik kontrolü
    if (!battle_is_attackable(this, pkVictim))
        return false;

    // Duel veya GM kontrolü
    if (CPVPManager::instance().IsFighting(this) == false && CPVPManager::instance().IsFighting(pkVictim) == true)
        return false;
    if (IsPC() && pkVictim->IsGM())
        return false;

    DWORD dwCurrentTime = get_dword_time();

    if (IsPC())
    {
        // Hız hilesi kontrolü
        if (IS_SPEED_HACK(this, pkVictim, dwCurrentTime))
            return false;

        // Yetenek kullanımı arasındaki süre kontrolü
        if (bType == 0 && dwCurrentTime < GetSkipComboAttackByTime())
            return false;

        // Yumrukla saldırı engelleme
        if (!GetWear(WEAR_WEAPON))
            return false;
    }
    else
    {
        MonsterChat(MONSTER_CHAT_ATTACK);
    }

    pkVictim->SetSyncOwner(this);

    if (pkVictim->CanBeginFight())
        pkVictim->BeginFight(this);

    int iRet;

    // Saldırı türüne göre işlem yapılır
    if (bType == 0)
    {
        switch (GetMobBattleType())
        {
            case BATTLE_TYPE_MELEE:
            case BATTLE_TYPE_POWER:
            case BATTLE_TYPE_TANKER:
            case BATTLE_TYPE_SUPER_POWER:
            case BATTLE_TYPE_SUPER_TANKER:
                iRet = battle_melee_attack(this, pkVictim);
                break;

            case BATTLE_TYPE_RANGE:
                FlyTarget(pkVictim->GetVID(), pkVictim->GetX(), pkVictim->GetY(), HEADER_CG_FLY_TARGETING);
                iRet = Shoot(0) ? BATTLE_DAMAGE : BATTLE_NONE;
                break;

            case BATTLE_TYPE_MAGIC:
                FlyTarget(pkVictim->GetVID(), pkVictim->GetX(), pkVictim->GetY(), HEADER_CG_FLY_TARGETING);
                iRet = Shoot(1) ? BATTLE_DAMAGE : BATTLE_NONE;
                break;

            default:
                sys_err("Unhandled battle type %d", GetMobBattleType());
                iRet = BATTLE_NONE;
                break;
        }
    }
    else
    {
        if (IsPC() == true)
        {
            if (dwCurrentTime - m_dwLastSkillTime > 1500)
            {
                sys_log(1, "HACK: Too long skill using term. Name(%s) PID(%u) delta(%u)",
                        GetName(), GetPlayerID(), (dwCurrentTime - m_dwLastSkillTime));
                return false;
            }
        }

        sys_log(1, "Attack call ComputeSkill %d %s", bType, pkVictim?pkVictim->GetName():"");
        iRet = ComputeSkill(bType, pkVictim);
    }

    if (iRet == BATTLE_DAMAGE || iRet == BATTLE_DEAD)
    {
        OnMove(true);
        pkVictim->OnMove();

        // Yalnızca PC, düşmanı null yapar. NPC için, durum makinesi bunu sıfırlar.
        if (BATTLE_DEAD == iRet && IsPC())
            SetVictim(NULL);

        // **Sectree Güncellemesi**
        if (GetX() != pkVictim->GetX() || GetY() != pkVictim->GetY())  // Koordinatlar değiştiyse
        {
            // Oyuncu veya hedef, sektördeki yeni yerini alacak.
            LPSECTREE newSectree = pkVictim->GetSectree();
            if (newSectree)
            {
                newSectree->InsertEntity(pkVictim);
                sys_log(0, "Sektör güncellendi: (%f, %f) -> (%f, %f)", pkVictim->GetX(), pkVictim->GetY(), GetX(), GetY());
            }
        }

        return true;
    }

    return false;
}
hareket hızını hile yapmıyım saldırı hızını hile yapayım onuda tespit edip disconnect veriyor


@hasanmacit
Biz seni çok sevdik
 
En son bir moderatör tarafından düzenlenmiş:
ea gibi koca yazılım devleri bile henüz hileyi engelleyemedi ama bizim forumdaki türkçe yazmayı doğru düzgün beceremeyen martysama chat gpt yardımıyla hileyi bitirecek he :D hadi bakalım. ea şirketine de söyle onlarda bir chat gptye danışsınlar :D
 
ea gibi koca yazılım devleri bile henüz hileyi engelleyemedi ama bizim forumdaki türkçe yazmayı doğru düzgün beceremeyen martysama chat gpt yardımıyla hileyi bitirecek he :D hadi bakalım. ea şirketine de söyle onlarda bir chat gptye danışsınlar :D
aslında her bf oyununda biraz daha azalıyor hile işi, 3-4’te uçan karakterler vardı, 1 de bu bitti fakat hala exploitler vardı 5’te 1 e göre daha az, 2042’de neredeyse yok denecek kadar az wallhack aimbot falan basit hareketleri clientta yapacak hareketler kaldı

keza cs için de aynı, karakterleri view matrix’e yakın değilse clientlara broadcast bile etmiyor, böylelikle map wide wallhacklerim önüne geçiyorlar

kaçma kovalama işi tamamen clientta yapılabilecekleri client tarafında kernel driver ile geçiyorlar zamanla bunun da önüne geçilir, sonrasında hile yapan artık fiziksel ramden mi okur araya ram’i okuyacak yada paketleri sniff edecek bir şey mi koyar bilemiyoruz
 
senin etrafındaki insanların bi gelişimi olmaz.
@hasanmacit
senin sattığın files
1733616817167.webp

1733609518456.webp


paylaşmış hee victor hugo paylaşmış hee
görende değerli birşey paylaşmış
 
Son düzenleme:
senin etrafındaki insanların bi gelişimi olmaz.
@hasanmacit
senin sattığın files
20489 eklentisini görüntüle
Dostum çok fazla random bilgi veriyorsun, senin paylaştığın şeyleri bir kaç gpt promtu ile herkes elde edebilir. Birşeyleri araştırıyor olman güzel bir şey ve yapan olmadığından güzel bir fikir veren kaynak olabilir ama şu an ilerlediğin paylaşım şeklin aşırı derecede amatör ve cidden çok random. Tek bir konu üzerinden her denemeni güncelleme olarak konuya dahil etsen çok daha temiz görüntü olur hem konu kendi içinde büyür. Ayrıca gpt her zaman doğru kod vermiyor bunu test etmedim diye yazıyorsun yani çalışmama ihtimali çok yüksek. Bunu forumda paylaşarak ne tür bir etkileşim veya cevap bekliyorsun merak ettim.
 
Dostum çok fazla random bilgi veriyorsun, senin paylaştığın şeyleri bir kaç gpt promtu ile herkes elde edebilir. Birşeyleri araştırıyor olman güzel bir şey ve yapan olmadığından güzel bir fikir veren kaynak olabilir ama şu an ilerlediğin paylaşım şeklin aşırı derecede amatör ve cidden çok random. Tek bir konu üzerinden her denemeni güncelleme olarak konuya dahil etsen çok daha temiz görüntü olur hem konu kendi içinde büyür. Ayrıca gpt her zaman doğru kod vermiyor bunu test etmedim diye yazıyorsun yani çalışmama ihtimali çok yüksek. Bunu forumda paylaşarak ne tür bir etkileşim veya cevap bekliyorsun merak ettim.
hepsi test edildi şuana kadar paylaşılanlar.
çoğunuzunda caps lock açık konuşuyor
yani %10 luk açıklar aranıp vurmaya çalışılıyor bence ilk kendinize bakın yukardaki mesajda yeterli sanırım.
şöyle bir şey vardır.

birileri temele kum atar daha sonrakiler kuma beton atar o yapı gelişir.

bu anti cheat konusunda bırak kumu ot bile yok.

burda birşeyler paylaşıyorum kimine göre ot kimine göre çakıl.

ama türemeler gelip laf atıp gidiyor.

he o laf atanlarda bu yapıya benzer bi katkıları bile yok.

herkes bilmiş icraata gelince ortalıkta bir şey yok.

hiçliğin ortasında birşeyler oluyor bundada açık aranıyor yuh bu kadar mı yuh


bi icraatları var mı yok

piyasda var mı buna benzer konular yok yoku biraz da olsa var eden şeyler nedir değerldiir.
neden çünkü yoooooooooooook.

tm siz gidin herkesin elde edemediği şeylerin olduğu foruma gidin.


tabi şuan hareket hızı engelleyebilen bi kod parçacığı bile yok hiç bi forumda yok.
hepsi ücretli hemde aylık.
forum kurallar altında paylaşım yapılabilir.
sanki babanız eray.
 
En son bir moderatör tarafından düzenlenmiş:
türkçe yazmayı öğren. kodum bozuk değil. yaptığım işlerden de herkes memnun. satış konuma gelen yorumları okusaydın önce. chat gptye kod yazdırıp yazdırıp forumda paylaşan biri değilim :D
 
Paylaşımların için teşekkür ederiz kardeşim arkadaşların senden ricası sadece attığın paylaşımları düzgün bir hale getirip yapman başka bir dertleri yok diye düşünüyorum.
 
Araştırmak, öğrenmeye çalışmak güzel şey. Bu konuda seni takdir ediyorum.
Naçizane önerim; bu işin içinde olan veya olmayanlara karşı biraz daha ılımlı olman.
Başarılar.
 
Araştırmak, öğrenmeye çalışmak güzel şey. Bu konuda seni takdir ediyorum.
Naçizane önerim; bu işin içinde olan veya olmayanlara karşı biraz daha ılımlı olman.
Başarılar.
burda şu yöntemle aşılır gibi yorumlar oldu.

özet konunun gelişimiyle alakalı katkı sunulacak yorum yapılır.
baltalamak nedir.
 
En son bir moderatör tarafından düzenlenmiş:
Geri
Üst