FiveM anticheat temelleri: ne yapılacağı ve anticheat'in ne yapamayacağı
FiveM anticheat temelleri: sunucuda önce doğrulayın, OneSync varlık sınırları, patlamaları iptal edin, Discord webhook günlükleri, txAdmin yasaklamaları ve anticheat'in ne yapamayacağı.
Hileciler halka açık bir sunucu çalıştırmanın bir parçasıdır. Araçları spawn ederler, haritayı patlatırlar, kendilerine para ve silah verirler ve dürüst oyuncularınızı kaçırırlar. Tek "anticheat" kaynağı bunu düzeltmez. Çalışan şey birkaç katmandır, en önemli olanla başlayarak: istemciye güvenmeyin.
Katman 1: sunucuda doğrulayın
Bir rol yapma sunucusundaki çoğu hile motor hackı değildir. Birisi kendi olaylarınızı seçtikleri değerlerle tetikliyordur. Bunu önce düzeltin ve sorunun büyük bir kısmı kaybolur.
- Fiyatları, ödülleri ve tutarları sunucuda hesaplayın.
sourcekullanın, hiçbir zaman istemci tarafından gönderilen oyuncu kimliği değil.- Eyleme geçmeden önce işi, mesafeyi ve soğuma sürelerini kontrol edin.
Kodla tam yöntem sunucu olaylarını güvenli hale getirme kısmında. Eğer bu makaleden sadece bir şey yaparsanız, bunu yapın.
Katman 2: OneSync ile varlık kontrolü
OneSync ile sunucu varlıklar (araçlar, pedlar, nesneler) hakkında bilir ve kimlerin onları oluşturacağını kontrol edebilir. Bu hilecilerin şeyler spawn etmesini durdurmak sağlar.
- Varlık kilidi. OneSync'in istemciden oluşturulan varlıkların bloke edildiği veya sınırlandırıldığı bir kilit modu var. Güçlü, ancak istemciden araçları veya nesneleri spawn eden herhangi bir betiği bozar. Açmadan önce yapılarınızda tam ayarı okumak için OneSync belgelerine bakın ve spawnı önce sunucuya taşıyın. Bkz. araçları sunucu tarafında spawn etme.
entityCreatingolayı. Sunucu varlıkları oluşturuldukça inceleyebilir ve istememek olanları iptal edebilir.
AddEventHandler('entityCreating', function(entity)
local model = GetEntityModel(entity)
if model == `jet` then
CancelEvent()
end
end)Bu örnek bir jeti herhangi bir yerden oluşturmayı reddeder. Sunucunuzda kimsenin oluşturmaması gereken modellerin kendi listenizi oluşturun ve dikkat edin: çok geniş bir kural kendi betiklerinizin varlıklarını iptal eder.
OneSync bunu etkinleştirmek için etkinleştirilmelidir. Bkz. OneSync ve oyuncu sınırları.
Katman 3: oyun olaylarını işleyin
FiveM bazı oyun eylemlerini sunucuya olay olarak gönderir ve sunucu bunları iptal edebilir. İki yaygın:
Patlamalar
AddEventHandler('explosionEvent', function(sender, ev)
-- sender is the player who caused the explosion
-- ev holds the explosion type and position
CancelEvent()
end)Her patlamayı iptal etmek el bombaları ve kendi yazılı patlamalarınızı da durduracaktır. ev içindeki verilerle dar tutun. Örneğin ev.explosionType bakın ve sunucunuzda hiçbir zaman olmaması gereken türleri iptal edin veya önce günlüğe normal oynanışın ne ürettiğini görün.
local blocked = { [1] = true } -- example: replace with the types you decide to block
AddEventHandler('explosionEvent', function(sender, ev)
if blocked[ev.explosionType] then
CancelEvent()
print(('Blocked explosion from player %s'):format(sender))
end
end)Silahlar
Sunucu ayrıca silahları verme, kaldırma ve ateş etme gibi olaylar alır, giveWeaponEvent gibi. Kendilerine silah veren hileciler bunları tetiklerler. Envanteriniz silahları işlerse, olayın vermeyi istediğini oyuncunun sahip olduğu şeyse karşılaştırın ve eşleşmemişse iptal edin. Önce günlüğe kaydedin, daha sonra zorlayın, böylece istemli oyuncuları engellemeyin.
Ateş, projektil ve silah hasarı için başka oyun olayları vardır. Bir tane kullanmadan önce Cfx belgelerinde arayın ve bir geliştirme sunucusunda test edin.
Dikkat: çok sıkı bir oyun olayı işleyici dürüst oyuncuları cezalandırır. Birkaç gün boyunca sadece günlük modu ile başlayın, günlükleri okuyun ve ardından zorlayın.
Katman 4: şüpheli davranışı günlüğe kaydedin
Tek bir sinyal üzerinden yasaklamayın. Günlüğe kaydedin, okuyun, ardından hareket edin. Discord webhook personel görebilecekleri günlükleri göndermek için kolay bir yerdir.
local WEBHOOK = GetConvar('anticheat_webhook', '')
local function logToDiscord(text)
if WEBHOOK == '' then return end
PerformHttpRequest(WEBHOOK, function() end, 'POST',
json.encode({ username = 'Anticheat', content = text }),
{ ['Content-Type'] = 'application/json' })
end
AddEventHandler('explosionEvent', function(sender, ev)
logToDiscord(('Explosion from %s (%s), type %s'):format(GetPlayerName(sender), sender, ev.explosionType))
end)Webhook URL'sini server.cfg içinde set anticheat_webhook "https://..." ile ayarlayın, betikte değil ve özel tutun. URL'ye sahip olan herkes kanalınıza gönderi yapabilir.
Günlüğe ne kaydedilecek: başarısız sunucu tarafı kontrolleri (imkansız tutarlar, yanlış mesafe), engellenen patlamalar, iptal ettiğiniz varlık spawnları, tekrarlanan olay spam'ı. Oyuncu adını, sunucu kimliğini ve lisans gibi bir tanımlayıcı ekleyin, böylece onları yasaklayabilirsiniz.
Katman 5: txAdmin ile hareket edin
Günlükler hileci gösterdiğinde, kaldırın. txAdmin kullanarak uyarı verin veya yasaklayın, böylece eylem kaydedilir ve yeniden başlatmalardan sağ kalır. Bkz. txAdmin ile moderasyon. Bir betikte, DropPlayer(source, 'reason') bir oyuncuyu tekmelemiyor, ancak bir yasak tanımlayıcılar kaydedilecek şekilde moderasyon araçlarınız aracılığıyla gitmelidir.
Anticheat'in ne yapamayacağı
Sınırlar hakkında dürüst olun.
- İstemci hileciye aittir. Yalnızca istemcide kontrol edilen her şey kapatılabilir. Yalnızca sunucu kontrolleri güvenilirdir.
- Hiçbir araç her şeyi yakalamaz. Yeni hiler ortaya çıkar ve algılama her zaman adım geridedir.
- Obfüskasyon güvenlik değildir. Gizli olay adları ve istemci kodundaki "gizli" jetonlar okunabilir.
- Ücretsiz veya sızan anticheat kodu bir riskdir. Hile geliştiriciler onu da okur ve bazıları backdoor'lar içerir. Bilinmeyen kaynaklardan kaynak alırken dikkatli olun.
- İnsanlar hala önemlidir. Aktif personel, açık bir rapor sistemi ve hızlı yasaklamalar herhangi bir betikten daha fazla yapar.
Katmanları birleştirin, kaynakları güncel tutun ve günlüklerinizi gözden geçirin. Bu, sunucunuzu diğerlerine kıyasla zor hedefler yapar.
Kontrol Listesi
| Belirtisi | Düzeltme |
|---|---|
| Oyuncular ücretsiz para veya öğe alırlar | Sunucuda olayları doğrulayın, olaylar kılavuzuna bakın |
| Hileciler araçları ve nesneleri spawn ettirler | OneSync varlık kontrolleri ve entityCreating; spawnı sunucuya taşıyın |
| Haritada patlama | explosionEvent işleyicisi CancelEvent ile, tür tarafından daraltan |
| Silah verme hileleri | Silah olaylarını envanterinizle karşılaştırın, önce günlüğe kaydedin |
| Hilecilerin ne yaptığı hakkında hiçbir fikir | Günlükleri convar'da tutulan Discord webhook'a gönderin |
| Hileci bulundu | txAdmin'den kaydedilen tanımlayıcılarla yasaklayın |
| Kural dürüst oyuncuları engeller | Sadece günlük moda geçin ve durumu daraltın |
Kısa yanıtlar
Bir anticheat kaynağına ihtiyacım var mı?
Önce kendi betiklerinizi güvenli hale getirin, çünkü bu en yaygın istismarı durdurur. Anticheat kaynağı algılamayı üstüne ekleyebilir, ancak sunucu tarafı doğrulamanın yerini almaz.
Anticheat her hileci durdurabilir mi?
Hayır. Hileciler uyum sağlar ve oyun istemcisi onların makinesindedir. Hedef hileciliği zorlaştırmak, belirgin olanı algılamak ve suçluları hızlı çıkarmaktır.
Sunucuda oyun olaylarını iptal etmek güvenli mi?
Evet, dikkatli bir şekilde. Bir olayı iptal etmek herkes için durmuyor, bu nedenle kendi betikleriniz gibi normal oynanışın patlamaları oluşturmaya devam ettiğini test edin canlı sunucuda kural çalıştırmadan önce.
Bu sorunu yaşatmayan scriptler
CCTV Security CamerasYerleştirilebilir kameralar, canlı çoklu görüntü tableti ve basılı delil fotoğrafları.Scripti gör →
Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →
Tebex TemplateTebex mağazanız için kod gerektirmeyen premium tema; tamamen Tebex panelinden düzenlenir.Scripti gör →