- Katılım
- 6 Mayıs 2022
- Konular
- 48,291
- Mesajlar
- 48,601
- Tepkime puanı
- 75
- M2 Yaşı
- 3 yıl 11 ay 10 gün
- Trophy Puan
- 48
- M2 Yang
- 488,879
Merhaba arkadaşlar @
Öncelikle mysql'e girip şu query'i yazalım.
Ziyaretçiler için gizlenmiş link,görmek için üye olmalısınız!
Giriş yap veya üye ol.
; adlı üye abim olur kendisi biliyosunuz C++ Anti Wait Hack diye bi konu paylaşmıştı,bende arkadaşların isteği üzerine bu Sistemi saatine göre banlama yaptım yani diğer sistemde Süresiz ban yerken bu sistemde kaç saat ban yiyeceğini siz karar vereceksiniz..Öncelikle mysql'e girip şu query'i yazalım.
Kod:
ALTER TABLE account ADD ban_nedengame VARCHAR(256);
Yukardaki yeşil "Run" tuşuna basıyoruz.
Sonra ise "battle.cpp" açın ve include listesine aşağıdaki kodu ekleyin
Kod:
#include "db.h"
Bu işlemi bitirdikten sonra şu fonksiyonu aratın ;
Kod:
bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
Ve bu kod bloğunu tamamen aşşağıdaki ile değiştirin
Kod:
#define ENABLE_SYSCHAT_NOTICE #define ENABLE_SYSLOG_NOTICE #define ENABLE_BAN_WAITHACK bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time) { if (ch->m_kAttackLog.dwVID == victim->GetVID()) { if (current_time - ch->m_kAttackLog.dwTime < GET_ATTACK_SPEED(ch)) { INCREASE_SPEED_HACK_COUNT(ch); if (test_server) { sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d", ch->GetName(), current_time - ch->m_kAttackLog.dwTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); } SET_ATTACK_TIME(ch, victim, current_time); SET_ATTACKED_TIME(ch, victim, current_time); return true; } } SET_ATTACK_TIME(ch, victim, current_time); if (victim->m_AttackedLog.dwPID == ch->GetPlayerID()) { if (current_time - victim->m_AttackedLog.dwAttackedTime < GET_ATTACK_SPEED(ch)) { INCREASE_SPEED_HACK_COUNT(ch); if (ch->m_speed_hack_count > 50) { #ifdef ENABLE_SYSLOG_NOTICE sys_log(0, "%s Attack Speed HACK! time (delta, limit)=(%u, %u), hack_count = %d", ch->GetName(), current_time - victim->m_AttackedLog.dwAttackedTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); #endif #ifdef ENABLE_SYSCHAT_NOTICE ch->ChatPacket(CHAT_TYPE_INFO, "Attack Speed Hack(%s), (delta, limit)=(%u, %u), hack_count = %d", ch->GetName(), current_time - victim->m_AttackedLog.dwAttackedTime, GET_ATTACK_SPEED(ch), ch->m_speed_hack_count); #endif #ifdef ENABLE_BAN_WAITHACK std::auto_ptr<SQLMsg> msg(DBManager::instance().DirectQuery("UPDATE account.account SET availDt = FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) + [B] [COLOR=#ff0000]1 * 3600[/COLOR][/B]), ban_nedengame = [B][COLOR=#ff0000]'OtoBanSystem[/COLOR][/B]' WHERE id = %d", ch->GetDesc()->GetAccountTable().id)); #endif ch->GetDesc()->DelayedDisconnect(3); } SET_ATTACKED_TIME(ch, victim, current_time); return true; } } SET_ATTACKED_TIME(ch, victim, current_time); return false; }
Yukardaki fonksiyonda kırmızı ve kalınlaştırılmış 1 işareti 1 saat banlanacağı anlamına gelir 1x3600 şeklinde çalışır.
Yani o 1'i 24 yaparsanız 24 saat 48 yaparsanız 48 saat banlanır.
OtoBanSystem yazan bölge ise ban_nedengame stunun'da nedeni yazacaktır en azından nasıl ban yediğini anlarsınız hesabın ona göre açar veya kapatırsınız en gelişmiş versiyonudur bu arada...
Not ;
Sistemin düzgün çalışabilmesi için FreeBSD saatinin güncel ve ayarlı olması lazım.
Not 2 ;
Oyun açıkken FreeBSD saatini değiştirmek oyunun sapıtmasına neden olabilir,onun için oyunu kapatıp Putty'den aşşağıdaki kodları girin.
[C++]Anti Wait Hack(ProDamage VE Diğerleri) Modifiye!
Metin2 özel sunucularında PvP sistemlerin kalitesini artırmak ve adil oyun deneyimini sağlamak adına geliştirilen anti-hile sistemlerden birisi olan Anti Wait Hack, oyuncuların beklemeli oynamasını engeller. Bu yazıda ProDamage ve benzeri bekleme taktiklerine karşı geliştirilmiş bir Anti Wait Hack sistemini modifiye ederek nasıl daha etkili hale getirebileceğimizi ele alacağız. Bu sistem, C++ tabanlı sunucu tarafında çalışmaktadır ve saat tarzında banlama sistemiyle donatılmıştır.
Wait Hack Nedir?
Wait Hack, oyuncuların saldırı yapmadan sadece defansif pozisyonda bekleyerek rakibin hata yapmasını beklemesiyle oluşan bir hile türüdür. Özellikle Metin2 PvP ortamlarında bu tür taktikler oyun keyfini düşürmekte ve adil mücadele ortamını bozmaktadır. Bu nedenle sunucu sahipleri tarafından aktif olarak engellenmesi gereken bir sistemdir.
ProDamage ve Benzeri Sistemler
ProDamage gibi sistemler, oyuncuların hasar alma miktarlarını analiz ederek bekleme taktiği yapan oyuncuları tespit etmeye çalışır. Ancak bu sistemler bazı durumlarda yetersiz kalabilir. Bu yüzden Anti Wait Hack mekanizması daha detaylı ve dinamik bir yapıya kavuşturulmalıdır.
Modifiye Edilmiş Anti Wait Sistemi
Yeni sistemde, oyuncunun belirli bir süre zarfında ne kadar hasar verdiği, kaç kez saldırı gerçekleştirdiği ve ne kadar süre boyunca hareketsiz kaldığı gibi parametreler göz önünde bulundurulur. Bu veriler, C++ tabanlı game core üzerinde analiz edilir. Eğer bir oyuncu belirlenen eşiği aşıyor ise, otomatik olarak saatlik ban sistemi devreye girer.
Banlama Mekanizması
Banlama işlemi DB Core üzerinden kullanıcıya temporarily ban atarak gerçekleştirilir. Ban süresi sistemsel olarak ayarlanabilir olup, 1 saat, 6 saat veya 24 saat gibi farklı zaman aralıklarında uygulanabilir. Bu sayede tekrarlayan hileciler uzun süreli olarak engellenebilir.
Avantajlar
- Oyuncuların daha aktif ve dengeli oynamasını sağlar.
- Adil PvP ortamı oluşur.
- Sunucu güvenliği ve oyun deneyimi artırılır.
- Hile kullanımı ciddi anlamda azaltılır.
Sonuç
Metin2 özel sunucularında C++ tabanlı geliştirilen Anti Wait Hack sistemleri, PvP keyfinin korunmasında önemli rol oynar. ProDamage ve benzeri sistemlerle birleştirildiğinde daha güçlü ve etkili bir koruma oluşturulabilir. Bu modifiye edilmiş sistem, hem server src hem de client src üzerinde test edilerek uygulanabilir.
[C++]Anti Wait Hack(ProDamage And Others) Modified!(Time-based banning!)
In order to increase the quality of PvP systems on Metin2 private servers and ensure fair gameplay, one of the anti-cheat systems developed is Anti Wait Hack. This article will explain how we can enhance an Anti Wait Hack system originally designed against wait tactics like ProDamage by modifying it further. This system operates on the server-side using C++ and includes a time-based banning mechanism.
What is Wait Hack?
Wait Hack refers to a cheating method where players remain defensive without attacking, waiting for their opponent to make a mistake. Especially in Metin2 PvP environments, such tactics diminish game enjoyment and disrupt fair play. Therefore, it is crucial for server owners to actively prevent this behavior.
ProDamage and Similar Systems
Systems like ProDamage attempt to detect players using wait tactics by analyzing the amount of damage they receive. However, these systems may sometimes prove insufficient. Therefore, the Anti Wait Hack mechanism must be made more detailed and dynamic.
Modified Anti Wait System
In the new system, parameters such as how much damage a player deals within a certain timeframe, how often they attack, and how long they stay idle are taken into account. These metrics are analyzed on the C++ based game core. If a player exceeds the defined threshold, a time-based ban is automatically applied.
Banning Mechanism
The ban is implemented through the DB Core by applying a temporary ban to the user. The ban duration is adjustable and can be set for 1 hour, 6 hours, or even 24 hours. This way, repeat offenders can be blocked for extended periods.
Advantages
- Promotes more active and balanced gameplay among players.
- Creates a fair PvP environment.
- Enhances server security and gameplay experience.
- Significantly reduces cheating attempts.
Conclusion
Anti Wait Hack systems developed with C++ for Metin2 private servers play a vital role in preserving the PvP experience. When combined with systems like ProDamage, it creates a stronger and more effective protection. This modified system can be tested and applied on both server src and client src.
