Merhaba, ben Krips.
Bu konuda sizlerle uzun süredir üzerinde çalıştığım ve aktif projelerde uyguladığım gelişmiş anti-cheat stratejilerini paylaşmak istiyorum. Sadece speed hack veya teleport engellemekle bitmeyen, davranış temelli ve sistematik bir yaklaşımla RAGE:MP projelerinizi daha güvenli hale getirebileceğiniz yöntemleri anlatacağım.
Konuyu tamamen geliştirici perspektifiyle, mantıksal temelleriyle ve pratik örneklerle sunuyorum. Bu sayede sadece 'nasıl yapılır' değil, 'neden yapılmalı' kısmını da anlayacaksınız.
Hazırsanız Başlayalım.. :oku2:
1. Sunucu-Temelli Kontrolün Önemi
Client tarafı her zaman manipülasyona açıktır. Bu yüzden kontrollerin çoğunu sunucu tarafında yapmalısınız. İdeal sistemde client sadece kullanıcı arayüzü ve animasyon gibi işlemler için çalışır.
Örnekler:
Oyuncunun hızını sadece client üzerinden takip etmek yerine, sunucuda her 500ms'de pozisyon farkı kontrol edilerek gerçek hız ölçülmeli.
Araç spawn işlemleri sadece sunucu yetkilendirmesiyle yapılmalı.
function isSpeedHack(player) {
const now = Date.now();
const elapsed = (now - player.lastCheck) / 1000;
const distance = player.position.distanceTo(player.lastPos);
const speed = distance / elapsed;
player.lastCheck = now;
player.lastPos = player.position;
return speed > 10;
}
2. Hız Hilesine Karşı İzleme Sistemi
Speed hackler genellikle oyuncunun pozisyonunu hızlıca değiştirmeye çalışır. Bunu fark etmek için sunucuda belirli zaman aralıklarında oyuncunun gerçek pozisyonunu kontrol ederek bir karşılaştırma yapabilirsiniz.
Uygulama:
Oyuncunun pozisyonları cache'lenir.
Her 1 saniyede bir mesafe ölçülür.
Araç içindeyse daha yüksek eşik değeri belirlenir.
if (isSpeedHack(player)) {
player.kick("Speed Hack Tespit Edildi");
}
3. Teleport Koruması
Teleport hacklerde oyuncu bir anda uzak bir koordinata ışınlanır. Bu da pozisyon farkının anormal büyümesine neden olur. Sistemde belirli bölgelerde hızlı pozisyon değişimi izinli olabilir (örneğin iç mekan geçişleri), ama onun dışında kontrol şart.
if (player.position.distanceTo(player.lastPos) > 100 && !player.justTeleported)
{
logSuspicious(player, "Teleport Hack");
}
4. Envanter Manipülasyonuna Karşı Sunucu Doğrulaması
Bazı client-side exploitler, oyuncunun item eklemesini, silmesini ya da sayısını değiştirmesini sağlar. Bu yüzden tüm envanter işlemleri sadece sunucu onayıyla yapılmalıdır.
mp.events.add("inventory:useItem", (player, itemId) => {
if (!playerHasItem(player, itemId)) return;
// geriye kalan islemin devamini burdan yazin.
});
5. Ani Para Artışı Algılayıcısı
Hilelerin önemli hedeflerinden biri de ekonomi manipülasyonudur. Oyuncunun birden fazla yolla para kazanabileceği oyunlarda, bunları analiz etmek gerekir.
Öneri:
Her oyuncunun para kazanma kaynakları loglanmalı.
Belirli süre içinde belirli eşiğin üstü kontrol edilmeli.
function checkSuspiciousMoney(player) {
if ((player.money - player.lastMoney) > 50000)
{
logSuspicious(player, "Ani Para Artışı Algılandı !");
}
player.lastMoney = player.money;
}
6. Tick Bazlı Hareket Analizi
Tick bazlı takip, oyuncunun her tickte yaptığı hareketleri kaydederek, şüpheli aktiviteleri filtreleme imkanı sunar. Özellikle silent aim, noclip, speed gibi hackler tickte tutarsızlık yaratır.
Analiz edilecek parametreler:
1 - Hareket yönü
2 - Hız
3 - Pos/Heading/Quat farkı
4 - Aim/Fire/HitEvent tutarlılığı
7. Anti-Cheat Loglama Sistemi Kurun
Hile tespiti yapıldığında sadece oyuncuyu kicklemek yetmez. O anki konum, action, ping, tick süresi, oyuncunun client verisi gibi tüm detaylar loglanmalı.
function logSuspicious(player, reason) {
console.log([K-AC] ${player.name} (${player.id}) -> ${reason});
}
8. Command Abuse Karşı Rate Limiter
Bazı oyuncular komutlara spam atarak sistemleri suistimal edebilir. Örneğin /pay, /heal, /spawn gibi komutlar rate limit ile korunmalıdır. (sunucu freeroam olsun ve ya roleplay olsun farketmez verdiğim komutlar örnek komutlar. sizin için hangi komut spama girebilir şüphesindeyse ona (onlara) rate limit ekleyebilirsiniz)
const cooldown = {};
mp.events.addCommand("pay", (player, targetId, amount) => {
if (cooldown[player.id] && Date.now() - cooldown[player.id] < 2000) return; cooldown[player.id] = Date.now();
// işlem devam
});
9. Client Request Güvenliği
Client üzerinden sunucuya gelen her isteği doğrulamak gerekir. Oyuncunun UI üzerinden gerçekleştirdiği her eylem, sunucuda kontrol edilmeden işleme alınmamalıdır.
mp.events.add("client:buyItem", (player, itemId) => {
if (!isInShop(player)) return;
if (!itemExists(itemId)) return;
// satın alma devam
});
10. Hilecileri Sessizce Takip Etme Taktiği
Bazı durumlarda oyuncuyu doğrudan kicklemek yerine sessizce izlemek daha fazla bilgi sağlar. Özellikle exploit türünü öğrenmek, açıkları tam anlamak için kullanılır.
Nasıl yapılır:
1 - Hile şüphesi olan oyuncu gizli loglanır.
2 - Şüpheli komutlar/devranışlar ayrı log dosyasına yazılır.
3 - Gerekirse admin özel olarak izler (spectate).
Sonuç ve Son Söz
Hile önlemek bir seferlik değil, sürekli gelişen bir süreçtir. Geliştiriciler olarak sistemin hem güvenliğini hem de performansını düşünmek zorundayız. Yukarıdaki yöntemler, sadece basit kontroller değil, aynı zamanda uzun vadeli bir yapı oluşturmanın temelidir. Günümüzde RAGE:MP sunucularına yönelik yapılan exploitler çok çeşitli. Sadece teleport, speed gibi klasik hilelere değiller bunlar item duplication, para exploitleri, command abuse gibi davranış tabanlı hilelere de karşı hazırlıklı olmalıyız.
Konu zamanla güncellenmeye devam edecektir aklıma geldiği sürece RageMP işlemcisi adı altında konular oluşturacağım ve oluşturduğum konulara devamlı güncelleme getireceğim. Siz de farklı yöntemler, örnekler veya gözlemlerinizi paylaşmak isterseniz yorum kısmında belirtebilirsiniz.
Hasım olmak yerine birlikte daha sağlam sistemler kurabiliriz. :serefe: