c++ okçu anticheat geliştirilebilir

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 48

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
1. atakdan sonraki atağı limitliyor.
örneğin silahla vurdunuz 2. vuruş için geçen süre için limit koyuyor.
hileler art arada damage attığı için böyle bi sınır yapılmış

örneğin 5 saniye limit koydunuz 5 saniyede bir silahla damage atabilirisiniz.

milisaniye olduğu için ayarlamanız güzel olacaktır.
güncel ayarlı yorum oalrak paylaşabilirsiniz

şöyle bi güncelleme yaptım tüm silahları ekledim.


her silaha ayrı limit yapıcaksınız.

constant.cpp
Kod:
//martysama0134's 2022 #ifdef ENABLE_HIT_LIMITER const WORD wHitLimiterBow = 2550; const WORD wHitLimiterSWORD = 2450; // const WORD wHitLimiterHANDED const WORD wHitLimiterHANDED = 2450; const WORD wHitLimiterDAGGER = 2450; const WORD wHitLimiterBELL = 2450; const WORD wHitLimiterFAN = 2450; const WORD wHitLimiterCLAW = 2450; // const WORD wHitLimiterSWORD = 2550; const WORD wHitLimiterPoly = 2450; const long lMaxDistanceDiff = 60; const DWORD dwMinBlockedHitsToLog = 3500; // race, min time (milisec) to next hit std::map<BYTE, WORD> m_hit_limiter = {                                             { MAIN_RACE_WARRIOR_M, 200 },                                             { MAIN_RACE_ASSASSIN_M, 200 },                                             { MAIN_RACE_SURA_M, 200 },                                             { MAIN_RACE_SHAMAN_M, 200 },                                             //                                             { MAIN_RACE_WARRIOR_W, 200 },                                             { MAIN_RACE_ASSASSIN_W, 200 },                                             { MAIN_RACE_SURA_W, 200 },                                             { MAIN_RACE_SHAMAN_W, 200 },                                             #ifdef ENABLE_WOLFMAN_CHARACTER                                             { MAIN_RACE_WOLFMAN_M, 200 },                                             #endif                                         }; #endif

constant.h
Kod:
//martysama0134's 2022 #ifdef ENABLE_HIT_LIMITER extern std::map<BYTE, WORD> m_hit_limiter; extern const WORD wHitLimiterPoly; extern const WORD wHitLimiterBow; extern const WORD wHitLimiterSWORD; extern const WORD wHitLimiterHANDED; extern const WORD wHitLimiterDAGGER; extern const WORD wHitLimiterBELL; extern const WORD wHitLimiterFAN; extern const WORD wHitLimiterCLAW; extern const long lMaxDistanceDiff; extern const DWORD dwMinBlockedHitsToLog; #endif

char_battle.cpp

Kod:
#ifdef ENABLE_HIT_LIMITER void CHARACTER::SetLastTimeAttack(LPCHARACTER victim) {     if (!victim)         return;     DWORD dwVID = victim->GetVID();     unsigned long long currentMillis = static_cast<unsigned long long>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());     if (um_Enemy_VIDs.find(dwVID) == um_Enemy_VIDs.end())         um_Enemy_VIDs.insert(std::make_pair(dwVID, currentMillis));     else         um_Enemy_VIDs[dwVID] = currentMillis;     m_lLastAttackTime = currentMillis;     SetLastPosAttack(GetXYZ()); } unsigned long long CHARACTER::GetHitLimiterTimeLimit() const {     LPITEM pkBow = GetWear(WEAR_WEAPON);     if (pkBow && pkBow->GetProto()->bSubType == WEAPON_BOW)         return wHitLimiterBow;       LPITEM pkWeapon = GetWear(WEAR_WEAPON);       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_SWORD)         return wHitLimiterSWORD;       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_TWO_HANDED)         return wHitLimiterHANDED;       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_DAGGER)         return wHitLimiterDAGGER;       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_BELL)         return wHitLimiterBELL;       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_FAN)         return wHitLimiterFAN;       if (pkWeapon && pkWeapon->GetProto()->bSubType == WEAPON_CLAW)         return wHitLimiterCLAW;         return IsPolymorphed() ? wHitLimiterPoly : m_hit_limiter[GetRaceNum()]; } bool CHARACTER::CanAttackVID(DWORD dwVID) {     unsigned long long currentMillis = static_cast<unsigned long long>(std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count());     const unsigned long long lMaxTimeDiff = GetHitLimiterTimeLimit();       if (um_Enemy_VIDs.find(dwVID) != um_Enemy_VIDs.end())     {         if (currentMillis - um_Enemy_VIDs[dwVID] < lMaxTimeDiff)         {             m_dwBlockedHits++;             return false;         }     }       PIXEL_POSITION pos = GetXYZ();     const long distance = DISTANCE_APPROX(m_posLastAttack.x - pos.x, m_posLastAttack.y - pos.y);     const unsigned long long lLastAttackLimitTime = lMaxTimeDiff == wHitLimiterBow ? wHitLimiterBow : 100 || wHitLimiterSWORD ? wHitLimiterSWORD : 100 || wHitLimiterHANDED ? wHitLimiterHANDED : 100 || wHitLimiterDAGGER ? wHitLimiterDAGGER : 100 || wHitLimiterBELL ? wHitLimiterBELL : 100 || wHitLimiterFAN ? wHitLimiterFAN : 100|| wHitLimiterCLAW ? wHitLimiterCLAW : 100;       if ((distance > lMaxDistanceDiff) && (currentMillis - m_lLastAttackTime <= lLastAttackLimitTime))     {         m_dwBlockedHits++;         return false;     }       return true; } #endif


C++ ile Metin2 Okçu Anti-Cheat Sistemi Geliştirilebilir mi?

Metin2 özel sunucularında, özellikle PVP odaklı sistemlerde anti-cheat (anti hile) mekanizmaları kritik öneme sahiptir. Özellikle okçu sınıflar gibi yüksek hasar potansiyeline sahip karakterlerde hile kullanımı, oyun deneyimini ciddi anlamda bozabilir. Bu yazıda, C++ tabanlı bir Metin2 anti-cheat sisteminin okçu sınıfı için nasıl geliştirilebileceğini detaylıca inceleyeceğiz.

Anti-Cheat Nedir ve Neden Gereklidir?

Anti-cheat sistemleri, oyuncuların oyun içi hileli davranışlarını tespit edip engellemek amacıyla geliştirilen yazılımlardır. Metin2 özel sunucularında hileler genellikle hasar çarpanları, hız artırıcılar, duvar geçişleri veya özel skill atlamaları gibi yöntemlerle yapılır. Özellikle okçu sınıflarında skill hasarını artırmak için yapılan modifikasyonlar, oyun içi dengeleri altüst edebilir.

C++ ile Anti-Cheat Geliştirme Avantajları

C++ dilinin performans ve kontrol açısından sunduğu avantajlar, anti-cheat sistemleri için idealdir. C++ ile yazılmış bir Metin2 server src üzerinde, paket analizi, skill doğrulama, oyun içi hareket izleme gibi işlemler doğrudan kernel seviyesinde kontrol edilebilir. Bu sayede hile yazılımlarının bypass yapması zorlaşır.

Okçu Anti-Cheat Mekanizması Nasıl Çalışır?

Metin2'de okçu sınıflarının kullandığı skill set, diğer sınıflardan farklıdır. Uzaktan saldırı, skill aralığı, hasar hesaplamaları gibi özel durumlar göz önünde bulundurularak anti-cheat algoritmaları geliştirilmelidir. Örneğin, bir okçu karakterin normalde 3000 hasar vermesi bekleniyorken, birdenbire 20000 hasar vermesi şüpheli kabul edilir. Bu durumda sistem, oynatılan skill verilerini ve paket içeriğini karşılaştırarak hile olasılığını değerlendirir.

C++ Kaynak Kod ile Hile Tespiti

C++ ile yazılmış bir server side anti-cheat modülü, gelen paketleri filtreleyerek anomali tespiti yapabilir. Paket boyutu, gönderim frekansı, koordinat geçişleri gibi parametreler analiz edilir. Okçu sınıflarında skill kullanım sıklığı ve hasar oranları karşılaştırılarak hileli davranışlar tespit edilebilir. Bu işlemler, gerçek zamanlı olarak yapılır ve sunucu tarafında loglanır.

Python Entegrasyonu ile Geliştirilmiş Güvenlik

C++ sistem üzerine Python GUI tabanlı bir yönetim paneli entegre edilerek, hile raporları daha kullanıcı dostu bir arayüzle sunulabilir. Py Root ile yapılandırılmış sistemlerde, adminler anlık olarak şüpheli olayları takip edebilir, belirli IP adreslerini otomatik olarak banlayabilirler. Bu sayede hem manuel hem de otomatik koruma sağlanır.

Skill Doğrulama ve Hasar Kontrolü

Okçu sınıflarında skill doğrulama işlemi, DB Core üzerinden karakterin leveline, ekipmanlarına ve skill seviyesine göre yapılır. Eğer bir karakterin skill hasarı, hesaplanan maksimum değerden fazla ise, bu durum hile olarak işaretlenebilir. Bu doğrulama işlemleri C++ kodları ile server side yapılır ve her skill atışında kontrol edilir.

Sunucu Tarafında Paket Filtreleme

C++ tabanlı bir sistemde, gelen network paketleri doğrudan analiz edilerek, standart dışı veriler filtrelenir. Örneğin, bir okçu karakterin skill ID'si yanlışsa veya paket içeriği manipüle edilmişse, bu durum anti-cheat tarafından yakalanır. Bu tür kontroller, Martysama SRC veya diğer C++ based Metin2 server kaynak kodlarında implement edilebilir.

Otomatik Ban ve Loglama Sistemi

Anti-cheat sistemi, hile tespit ettiğinde otomatik olarak kullanıcıyı banlayabilir veya log dosyasına yazarak adminlere bildirebilir. Bu loglar, oyun içi dengeleri analiz etmek için de kullanılabilir. Loglama işlemleri C++ ile optimize edilerek sunucu performansını etkilemeyecek şekilde tasarlanmalıdır.

Sonuç

C++ ile geliştirilen anti-cheat sistemleri, Metin2 özel sunucularında güvenliği ciddi anlamda artırabilir. Özellikle okçu sınıflar gibi özel skill sete sahip karakterler için özelleştirilmiş koruma mekanizmaları, oyun içi hileleri minimuma indirebilir. Bu tür sistemlerin doğru şekilde implement edilmesi için server src, game core ve DB core bilgisine sahip geliştiricilerin katkısı büyük önem taşır.


Is it Possible to Develop an Archer Anti-Cheat System with C++?

In Metin2 private servers, especially in PvP-oriented systems, anti-cheat mechanisms are of critical importance. In classes like archers, which possess high damage potential, cheat usage can severely disrupt the gaming experience. This article will thoroughly examine how an anti-cheat system for the archer class can be developed using C++ on Metin2 private servers.

What is Anti-Cheat and Why is it Necessary?

Anti-cheat systems are software developed to detect and prevent cheating behaviors by players within the game. In Metin2 private servers, cheats often involve damage multipliers, speed hacks, wall-passing, or special skill skips. Particularly in archer classes, modifications made to increase skill damage can completely upset in-game balances.

Advantages of Developing Anti-Cheat with C++

The performance and control advantages offered by the C++ language make it ideal for anti-cheat systems. On a Metin2 server src written in C++, processes such as packet analysis, skill validation, and in-game movement tracking can be controlled directly at the kernel level. This makes it difficult for cheat software to bypass these measures.

How Does an Archer Anti-Cheat Mechanism Work?

The skillset used by archer classes in Metin2 differs from other classes. Anti-cheat algorithms must be developed considering special conditions such as ranged attacks, skill range, and damage calculations. For example, if an archer character normally deals 3000 damage but suddenly starts dealing 20000 damage, this is considered suspicious. The system evaluates cheat possibilities by comparing played skill data and packet content.

Cheat Detection with C++ Source Code

An anti-cheat module written in C++ can filter incoming packets and detect anomalies. Parameters such as packet size, transmission frequency, and coordinate transitions are analyzed. In archer classes, damage ratios and skill usage frequency are compared to detect cheating behavior. These operations are performed in real-time and logged on the server-side.

Enhanced Security with Python Integration

By integrating a Python-based GUI management panel onto a C++ system, cheat reports can be presented through a more user-friendly interface. In systems configured with Py Root, admins can monitor suspicious events in real-time and automatically ban certain IP addresses. This provides both manual and automatic protection.

Skill Validation and Damage Control

In archer classes, skill validation is done via DB Core according to the character’s level, equipment, and skill level. If a character’s skill damage exceeds the calculated maximum value, it is flagged as a cheat. Such validations are performed server-side in C++ code and checked with every skill cast.

Packet Filtering on Server-Side

In a C++-based system, incoming network packets are directly analyzed to filter out non-standard data. For instance, if an archer character has an incorrect skill ID or if the packet content has been manipulated, the anti-cheat system detects it. Such checks can be implemented in Martysama SRC or other C++-based Metin2 server source codes.

Automatic Ban and Logging System

When the anti-cheat system detects cheating, it can automatically ban the user or log the event to notify admins. These logs can also be used to analyze in-game balances. Logging operations should be optimized with C++ to avoid affecting server performance.

Conclusion

Anti-cheat systems developed with C++ can significantly enhance security in Metin2 private servers. Customized protection mechanisms tailored specifically for classes like archers, which have unique skill sets, can minimize in-game cheating. Developers with knowledge of server src, game core, and DB core are essential for correctly implementing such systems.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt