GTAMulti.com - Türkiye'nin Türkçe GTA Sitesi

Auto-Aim Dedektör (alt+1)

Başlatan Krips Je, 10 Şubat 2025, 21:17:08

« önceki - sonraki »

0 Üye ve 4 Ziyaretçi konuyu incelemekte.

Krips Je

Merhaba, bugün sizlere geliştirmekte olduğum oyun moduna yapmışım olduğum küçük bir anti-hile eklentisini paylaşmak isterim. Sistem, oyuncuların otomatik aim hileleriyle belirli bir bölgeye sürekli ateş edip etmediğini tespit ederek önlem alıyor.

Sistem onplayerdamage callback ini kullanarak oyuncuların vurduğu bölgeyi ve tekrar eden atışları analiz eder. Performans açısından optimize edilmiştir. Gereksiz log yazmaz ve sistem kaynaklarını minimum seviyede kullanır.

Sistem üç değişken üzerinden çalışmakta;

1 - BolgeHesapla değişkeni oyuncunun kaç kez aynı bölgeye hasar verdiğini hesaplar.
2 - SonHasar değişkeni en son hangi bolgeye hasar verdiğini çekiyor.
3 - UyariSayi tespit edilen oyuncuya toplam sistem tarafından kaç uyarı yapıldığını hesap eder ve ona göre kick işlemini uygular.

PAWN Kodu: Seç
#include <a_samp>

new BolgeHesapla[MAX_PLAYERS];
new SonHasar[MAX_PLAYERS];
new UyariSayi[MAX_PLAYERS];

stock LogAutoAim(playerid, const message[], ...) {
    new logString[128], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(logString, sizeof(logString), "%s (ID: %d) - %s\n", pName, playerid, message);
    new File:log = fopen("aimlog.txt", io_append);
    if (log) {
        fwrite(log, logString);
        fclose(log);
    }
}
forward OnPlayerDamage(playerid, damagedid, Float:amount, weaponid, vucutbolge);
public OnPlayerDamage(playerid, damagedid, Float:amount, weaponid, vucutbolge) {
    if (vucutbolge >= 0 && vucutbolge <= 9) {
        if (SonHasar[playerid] == vucutbolge) {
            BolgeHesapla[playerid]++;
        } else {
            BolgeHesapla[playerid] = 1;
            SonHasar[playerid] = vucutbolge;
        }
        if (BolgeHesapla[playerid] >= 4) {
            if (UyariSayi[playerid] == 0) {
                SendClientMessage(playerid, 0xFF0000FF, "[Uyari] Mermi hizi asildi!");
                LogAutoAim(playerid, "Mermi engellendi - Bölge: %d", vucutbolge);
                UyariSayi[playerid]++;
                return 0;
            } else if (UyariSayi[playerid] == 1) {
                SendClientMessage(playerid, 0xFF0000FF, "[Anti-Krips] Tekrar tespit edildi, kick atiliyor!");
                LogAutoAim(playerid, "Kick atildi - Bölge: %d", vucutbolge);
                Kick(playerid);
                return 0;
            }
        }
    }
    return 1;
}


Sistem filterscript üzerinden yapıldı, kodu oyunmodunuzada entegre edebilirsiniz. Kod temel kod. aynı bölgeye atıyorum 10 kez hasar verildi bunu config şeklinde bir sabit değer girersiniz ona uygun şekilde işlem yaptırırsınız.

Kod test edilmedi ancak bir sorun çıkaracağınıda sanmıyorum compile ettim hiçbir sorun çıkarmadı. Bir sorun oluşursa bu ileti üzerinden bildirmeniz yeterli olur sorunu. Şimdiden kullananlar için iyi kullanımlar dilerim  :oku2:


> Güncelleme [11/02/2025 03:49]

Oyunmodunuz onplayerkeystatechange callback ine aşağıda vereceğim eklentiyi yazarak hem loglama hemde ateş açarken kullanımın önüne geçebilirsiniz.

PAWN Kodu: Seç
if((newkeys & KEY_FIRE) && (newkeys & KEY_WALK))
    {
        new playerName[MAX_PLAYER_NAME];
        GetPlayerName(playerid, playerName, sizeof(playerName));

        SendAdminAlert(COLOR_LIGHTRED, "[ADM]: %s, Alt+1 silenti kullanmaya calisiyor.", playerName);
        new logStr[128];
        format(logStr, sizeof(logStr), "[Klog] %s (ID: %d) Alt + 1 kombinasyonunu kullandi!", playerName, playerid);
        print(logStr);

        SendServerMessage(playerid, "[Anti-Krips] ALT + 1 kombinasyonu tespit edildi!");
        Kick(playerid);
    }

Verdiğim bu kodu kendi oyunmodunuza uyumlu şekilde entegre ederek kullanabilirsiniz. tekrardan iyi kullanımlar dilerim :)
Son düzenlenme: 11 Şubat 2025, 02:50:11 Krips Je
2012 - 2025

Feovac

Side roleplayde geliştirdiğin ve güzel çalışan bir sistem. ref+

Türkiye'nin En Büyük Mobil/PC Discord Topluluğu
Samp Media : discord.gg/sampmedia
Side Roleplay : discord.gg/siderpg

bloodsucker


laéx

Güzel bir sistem olmuş, özellikle performans optimizasyonuna önem verilmesi iyi düşünülmüş. Ancak belirli bir bölgeye 4 kez art arda her zaman hile olduğunu garantilemez. Bu yüzden uyarı mekanizmasının biraz daha esnek hale getirilmesi veya farklı değişkenlerle desteklenmesi faydalı olabilir. Belirli bir zaman dilimi içinde aynı bölgeye atış sayısını ölçerek daha sağlıklı bir tespit yapılabilir mi? Bu konu hakkında fikrini merak ediyorum. SA-MP için etkili bir çözüm olmuş, elinize sağlık.  :helal:
Son düzenlenme: 10 Şubat 2025, 21:42:54 laéx

Krips Je

Alıntı yapılan: laéx - 10 Şubat 2025, 21:41:06
Güzel bir sistem olmuş, özellikle performansın optimizasyonuna önem verilmesi iyi düşünülmüş. Ancak belirli bir bölgeye 4 kez art arda her zaman hile olduğunu garantilemez. Bu yüzden uyarı mekanizmasının biraz daha esnek hale getirilmesi veya farklı değişkenlerle desteklenmesi faydalı olabilir. Belirli bir zaman dilimi içinde aynı bölgeye atış sayısını ölçerek daha sağlıklı bir tespit yapılabilir mi? Bu konu hakkında fikrini merak ediyorum. SA-MP için etkili bir çözüm olmuş, elinize sağlık.  :helal:

iletin için teşekkür ederim. konuda dediğim gibi daha esnek hale getirilebilir, ağacı ben çizdim dallarını ve meyvelerinide siz çizin. belirli bir limit ekleyerek zaten dediğin yapılabilir.

2012 - 2025

L0fty

Leroux Roleplay Founder - LX:RP Mapper

Talha?

Alıntı yapılan: Krips Je - 10 Şubat 2025, 21:17:08
Merhaba, bugün sizlere geliştirmekte olduğum oyun moduna yapmışım olduğum küçük bir anti-hile eklentisini paylaşmak isterim. Sistem, oyuncuların otomatik aim hileleriyle belirli bir bölgeye sürekli ateş edip etmediğini tespit ederek önlem alıyor.

Sistem onplayerdamage callback ini kullanarak oyuncuların vurduğu bölgeyi ve tekrar eden atışları analiz eder. Performans açısından optimize edilmiştir. Gereksiz log yazmaz ve sistem kaynaklarını minimum seviyede kullanır.

Sistem üç değişken üzerinden çalışmakta;

1 - BolgeHesapla değişkeni oyuncunun kaç kez aynı bölgeye hasar verdiğini hesaplar.
2 - SonHasar değişkeni en son hangi bolgeye hasar verdiğini çekiyor.
3 - UyariSayi tespit edilen oyuncuya toplam sistem tarafından kaç uyarı yapıldığını hesap eder ve ona göre kick işlemini uygular.

PAWN Kodu: Seç
#include <a_samp>

new BolgeHesapla[MAX_PLAYERS];
new SonHasar[MAX_PLAYERS];
new UyariSayi[MAX_PLAYERS];

stock LogAutoAim(playerid, const message[], ...) {
    new logString[128], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(logString, sizeof(logString), "%s (ID: %d) - %s\n", pName, playerid, message);
    new File:log = fopen("aimlog.txt", io_append);
    if (log) {
        fwrite(log, logString);
        fclose(log);
    }
}
forward OnPlayerDamage(playerid, damagedid, Float:amount, weaponid, vucutbolge);
public OnPlayerDamage(playerid, damagedid, Float:amount, weaponid, vucutbolge) {
    if (vucutbolge >= 0 && vucutbolge <= 9) {
        if (SonHasar[playerid] == vucutbolge) {
            BolgeHesapla[playerid]++;
        } else {
            BolgeHesapla[playerid] = 1;
            SonHasar[playerid] = vucutbolge;
        }
        if (BolgeHesapla[playerid] >= 4) {
            if (UyariSayi[playerid] == 0) {
                SendClientMessage(playerid, 0xFF0000FF, "[Uyari] Mermi hizi asildi!");
                LogAutoAim(playerid, "Mermi engellendi - Bölge: %d", vucutbolge);
                UyariSayi[playerid]++;
                return 0;
            } else if (UyariSayi[playerid] == 1) {
                SendClientMessage(playerid, 0xFF0000FF, "[Anti-Krips] Tekrar tespit edildi, kick atiliyor!");
                LogAutoAim(playerid, "Kick atildi - Bölge: %d", vucutbolge);
                Kick(playerid);
                return 0;
            }
        }
    }
    return 1;
}

Sistem filterscript üzerinden yapıldı, kodu oyunmodunuzada entegre edebilirsiniz. Kod temel kod. aynı bölgeye atıyorum 10 kez hasar verildi bunu config şeklinde bir sabit değer girersiniz ona uygun şekilde işlem yaptırırsınız.

Kod test edilmedi ancak bir sorun çıkaracağınıda sanmıyorum compile ettim hiçbir sorun çıkarmadı. Bir sorun oluşursa bu ileti üzerinden bildirmeniz yeterli olur sorunu. Şimdiden kullananlar için iyi kullanımlar dilerim  :oku2:

Ögrettigim gibi yapmış aslanım
eline saglıkk


deksdeveloper

Paylaşım için teşekkürler fakat bir işlevi olacağını düşünmüyorum, legit bir oyuncu art arda 10 kerede aynı bölgeye vurabilir. Kod dallanıp budaklandırılamaz çünkü işlevi kısıtlı. Geliştirecek insan direkt sıfırdan yazmalı çünkü işlevi kısıtlı ve biraz gereksiz.
Auto-aim & aimbot gibi hilelerin tespiti için daha farklı yöntemler kullanmalısın, ekteki include'da bulunan OnPlayerTargetPlayer callbacki işine yarayabilir. Örneğin bir oyuncunun aimi sürekli olarak oyuncuyu takip ediyorsa işlem yaptırabilirsin, daha net sonuçlar alınabilir.
https://github.com/emmet-jones/New-SA-MP-callbacks
Son düzenlenme: 10 Şubat 2025, 23:03:33 deksdeveloper

Krips Je

Alıntı yapılan: deksdeveloper - 10 Şubat 2025, 23:01:14
Paylaşım için teşekkürler fakat bir işlevi olacağını düşünmüyorum, legit bir oyuncu art arda 10 kerede aynı bölgeye vurabilir. Kod dallanıp budaklandırılamaz çünkü işlevi kısıtlı. Geliştirecek insan direkt sıfırdan yazmalı çünkü işlevi kısıtlı ve biraz gereksiz.
Auto-aim & aimbot gibi hilelerin tespiti için daha farklı yöntemler kullanmalısın, ekteki include'da bulunan OnPlayerTargetPlayer callbacki işine yarayabilir. Örneğin bir oyuncunun aimi sürekli olarak oyuncuyu takip ediyorsa işlem yaptırabilirsin, daha net sonuçlar alınabilir.
https://github.com/emmet-jones/New-SA-MP-callbacks

iletin ve fikrin için teşekkürler. attığını inceleyeceğim daha güzel birşey ortaya çıkarsa güncel kodu paylaşacağım sizlerle. :)

2012 - 2025

HKI

Kaliteli bir çalışma olmuş. Ellerine sağlık 🫰🏻

¡La vida es una sola!

Krips Je

konu güncellendi, onplayerdamage den farklı olarak onplayerkeystatechange callbackinden tuş engelide yapmak istedim. tekrardan iyi kullanımlar dilerim  :serefe:

2012 - 2025

Amper

Sadece body part tekrarına bakmak çok yüzeysel bir yaklaşım gerçek oyuncular da belirli bölgelere vurmayı tercih edecektir, eminim bir metrik çıkarsak kimler üst üste aynı noktalara ateş ediyor diye çok yüksek çıkacaktır aynı body partlar. False positive (yanlış tespit) oranı çok yüksek olacaktır.

Peki doğru yaklaşım ne olmalı?
Her silahın kendine özgü recoil (geri tepme) patterni var.
Mermi yayılması (bullet spread) hesaba katılmalı
Mesafeye göre de kontrol eklemeliyiz etki çok değişir.
Merminin geldiği body part değil net vector3 pozisyonu.

Aşağıdaki metriklerin hepsini birleştirerek kontrol sağlamadığın sürece bu bir anti hile değil, çim biçiçi.

Metrikler:
Vuruş hızı ve zamanlaması
Oyuncunun hareket paterni
Mouse hareketlerinin doğallığı
Sağ tık içerisindeki aksiyonları
Reaksiyon süreleri

Ayrıca *gereksiz loglar* yazılmış. Bu diğer anti-hile'lerin çok log attığı için yazılma gereksinimi duydu sanırım fakat onların bunu yapmasının bir amacı var. Bir audit log olmazsa hata çözümleri yapamazsınız ve doğru hesaplamayı yapacak oranı iyileştiremezsiniz farazi çözümler peşinde koşarsınız datanız olmadığı için.

Audit ve Logging:

Her şüpheli durum için detaylı metrikler tutulmalı
False positive analizi yapılabilmeli
Sistem performansı ölçülebilmeli
Pattern analizleri arşivlenmeli

Anti-hile dediğimiz sadece olasılıklar üzerine kuruludur ve birçok metrik ile hesaplanmalıdır. Tek ihtimal bir olasılık değildir diye düşünüyorum. Bu bir anti hile sayılır mı emin değilim.

Forumda gezinip bir örnek aradım ve şuradaki gayet iyi bir örnek: https://www.gtamulti.com/forum/mod-galerisi/(antycheat)-yenilikci-ve-surekli-gelistirilen-anti-hile-eklentisi/

Git line link: https://github.com/sicariodll/open.mp-anticheat/blob/f089e3cd753acb0b611880953df655cf2e2b896e/qawno/include/antycheat.inc#L253 (basit bir örnek burada yapılanda ama daha az false postivie olacaktır.)
Son düzenlenme: 11 Şubat 2025, 12:25:17 Amper

Krips Je

Alıntı yapılan: Amper - 11 Şubat 2025, 12:20:31
Sadece body part tekrarına bakmak çok yüzeysel bir yaklaşım gerçek oyuncular da belirli bölgelere vurmayı tercih edecektir, eminim bir metrik çıkarsak kimler üst üste aynı noktalara ateş ediyor diye çok yüksek çıkacaktır aynı body partlar. False positive (yanlış tespit) oranı çok yüksek olacaktır.

Peki doğru yaklaşım ne olmalı?
Her silahın kendine özgü recoil (geri tepme) patterni var.
Mermi yayılması (bullet spread) hesaba katılmalı
Mesafeye göre de kontrol eklemeliyiz etki çok değişir.
Merminin geldiği body part değil net vector3 pozisyonu.

Aşağıdaki metriklerin hepsini birleştirerek kontrol sağlamadığın sürece bu bir anti hile değil, çim biçiçi.

Metrikler:
Vuruş hızı ve zamanlaması
Oyuncunun hareket paterni
Mouse hareketlerinin doğallığı
Sağ tık içerisindeki aksiyonları
Reaksiyon süreleri

Ayrıca *gereksiz loglar* yazılmış. Bu diğer anti-hile'lerin çok log attığı için yazılma gereksinimi duydu sanırım fakat onların bunu yapmasının bir amacı var. Bir audit log olmazsa hata çözümleri yapamazsınız ve doğru hesaplamayı yapacak oranı iyileştiremezsiniz farazi çözümler peşinde koşarsınız datanız olmadığı için.

Audit ve Logging:

Her şüpheli durum için detaylı metrikler tutulmalı
False positive analizi yapılabilmeli
Sistem performansı ölçülebilmeli
Pattern analizleri arşivlenmeli

Anti-hile dediğimiz sadece olasılıklar üzerine kuruludur ve birçok metrik ile hesaplanmalıdır. Tek ihtimal bir olasılık değildir diye düşünüyorum. Bu bir anti hile sayılır mı emin değilim.

Forumda gezinip bir örnek aradım ve şuradaki gayet iyi bir örnek: https://www.gtamulti.com/forum/mod-galerisi/(antycheat)-yenilikci-ve-surekli-gelistirilen-anti-hile-eklentisi/

Git line link: https://github.com/sicariodll/open.mp-anticheat/blob/f089e3cd753acb0b611880953df655cf2e2b896e/qawno/include/antycheat.inc#L253 (basit bir örnek burada yapılanda ama daha az false postivie olacaktır.)

İlk önce iletin ve uzun açıklaman için teşekkür ederim işten yeni geldiğim için yeni gördüm, detaylı bir şekilde açıklamışsın. güzel bir bakış açısı getirmişsin, özellikle de sadece body part kontrolüne odaklanmanın yeterli olmayacağı konusunda kesinlikle haklısın.

Benim amacım hızlı bir tespit mekanizması oluşturmak olduğu için belli başlı metriklere yoğunlaştım ama söylediğin gibi, olayın daha güzel bir analize ihtiyacı var. benim amacım da tam olarak buydu aslında, ama eksik kalan noktaları da toparlayıp daha iyi bir hale getirebilirim diye umuyorum. Audit log kısmında ise dediğin gibi tek tek log atırıp denemek, yapılan sistemin testi için daha iyi bir yöntem ben bunu her zaman ilk yapıyorum daha sonra çalıştığını gördüğümde gereksiz dediğim bu logları silip öyle paylaşım yapıyorum ama dediğin gibi "Bir audit log olmazsa hata çözümleri yapamazsınız ve doğru hesaplamayı yapacak oranı iyileştiremezsiniz".


Bullet spread ve recoil konusuna gelirsek, spread kontrolünü hesaba katmak mantıklı olabilir ama burada şöyle bir durum var sampda silahların spread mekaniği çok da kompleks çalışmıyor diye düşüünyorum yani merminin yayılması sabit olduğu için bunu tespit ederken ekstra hesaplamalar gerektirir. Ancak mesafe faktörünü hesaba katmak, örneğin belirli bir uzaklıktan itibaren vuruş tutarlılığını analiz etmek, gerçekten işe yarar bir geliştirme olabilir.

Ayrıca mouse hareket doğallığı ve sağ tık içeren aksiyonların kombinasyonunu ölçmek de mantıklı bir öneri bbu tarz bir sistem oluşturulursa sadece vuruş istatistiklerine değil oyuncunun genel hareket dinamiklerine bakarak daha sağlam bir tespit yapılabilir.


Bu konuda söylenen fikirleri toplayıp daha güzel bir anti aimbot ortaya çıkaracağımı yakın zamanda düşünüyorum, senin önerilerini ekleyerek sistemi daha sağlam bir hale getirmek mümkün. güzel yorumun için teşekkürler!  :serefe:
Son düzenlenme: 11 Şubat 2025, 20:06:32 Krips Je
2012 - 2025