- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,141
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,170
- DevLira
- 381
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
Server taraflı hareket hızı anti cheat
Öğeyi görmek için üye olmalısınız. v1- sürüm. lalaker ve cheat engine test edildi. normal yürürken hareket hilesini yakalıyor. ws sırasında yakalayamıyor. lalakeri yakalıyor. cheat engineyi hemen yakalamıyor belki 1 2 saniye sonra.(belki cheat engine teleport gibi çalışıyordur. başka...
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
araştırmakopyala yapıştır
Linkleri görebilmek için Turkmmo Forumuna ÜYE olmanız gerekmektedir.
koddan örnek.
C++:
bool CHARACTER::CheckInstantSpeedHack(long x, long y)
{
// GM'leri kontrol etme
if (IsGM())
return true;
// Ölü veya savaşta olmayan karakterleri kontrol et
if (IsDead() || IsStun())
return true;
DWORD dwCurrentTime = get_dword_time();
// Hareket geçmişini güncelle (son 10 hareket)
m_qMovementHistory.push(std::make_pair(dwCurrentTime, std::make_pair(x, y)));
// Sadece son 10 hareketi tut
while (m_qMovementHistory.size() > 10)
m_qMovementHistory.pop();
// En az 2 hareket kaydı yoksa kontrol yapma
if (m_qMovementHistory.size() < 2)
return true;
// Son 2 hareketi al
auto last1 = m_qMovementHistory.back();
auto last2 = m_qMovementHistory.front(); // ikinci son hareket
// Zaman farkını hesapla
DWORD dwDeltaTime = last1.first - last2.first;
// Minimum zaman (10ms'den az ise hack olabilir)
if (dwDeltaTime < 10)
{
m_iSpeedHackCount += 3;
sys_err("INSTANT_SPEED_HACK: %s - Extremely fast movement packets (%dms)",
GetName(), dwDeltaTime);
return false;
}
// Mesafe hesaplama
long dx = last1.second.first - last2.second.first;
long dy = last1.second.second - last2.second.second;
double fDistance = sqrt(static_cast<double>(dx*dx + dy*dy));
// Çok kısa mesafe kontrolü
if (fDistance < 10.0)
return true;
// Anlık hız hesaplama
double fSpeed = fDistance / (dwDeltaTime / 1000.0);
// WS durumunda daha yüksek hız limiti
float fMaxSpeed = GetMoveSpeed();
if (IsInWarState())
fMaxSpeed *= 1.5f; // WS'de %50 daha hızlı
else
fMaxSpeed *= 1.2f; // Normalde %20 tolerans
// Eğer hız limitini aşarsa
if (fSpeed > fMaxSpeed)
{
m_iSpeedHackCount++;
m_iConsecutiveSpeedViolations++;
sys_err("INSTANT_SPEED_HACK: %s - Speed: %.2f > Max: %.2f, Distance: %.2f, Time: %dms",
GetName(), fSpeed, fMaxSpeed, fDistance, dwDeltaTime);
// Ardışık 3 ihlal varsa hile kabul et
if (m_iConsecutiveSpeedViolations >= 3)
{
LogManager::instance().HackLog("Instant_SpeedHack", this);
return false;
}
return true; // İlk ihlallerde affet
}
else
{
// Normal hızda ise ardışık ihlal sayacını sıfırla
if (m_iConsecutiveSpeedViolations > 0)
m_iConsecutiveSpeedViolations--;
}
return true;
}
void CHARACTER::ResetSpeedHack()
{
m_dwLastMoveCheckTime = 0;
m_lLastMoveCheckX = 0;
m_lLastMoveCheckY = 0;
m_iSpeedHackCount = 0;
}
bool CHARACTER::__CheckSpeedHackFrequency()
{
DWORD dwCurrentTime = get_dword_time();
if (m_dwLastMoveCheckTime == 0)
{
m_dwLastMoveCheckTime = dwCurrentTime;
return true;
}
DWORD dwDeltaTime = dwCurrentTime - m_dwLastMoveCheckTime;
// 50ms'den daha sık hareket paketi kontrolu
if (dwDeltaTime < 50)
{
m_iSpeedHackCount++;
// 5 kez ardı?ık hızlı paket tespiti
if (m_iSpeedHackCount > 5)
{
sys_err("SPEED_HACK_FREQUENCY: %s (PID: %d) - Too frequent movement packets (%dms interval)",
GetName(), GetPlayerID(), dwDeltaTime);
return false;
}
}
else
{
// Normal aralıkta ise sayacı sıfırla
if (m_iSpeedHackCount > 0)
m_iSpeedHackCount--;
}
return true;
}
bool CHARACTER::__CheckSpeedHackDistance(long x, long y)
{
DWORD dwCurrentTime = get_dword_time();
if (m_dwLastMoveCheckTime == 0 || m_lLastMoveCheckX == 0 || m_lLastMoveCheckY == 0)
{
m_dwLastMoveCheckTime = dwCurrentTime;
m_lLastMoveCheckX = x;
m_lLastMoveCheckY = y;
return true;
}
DWORD dwDeltaTime = dwCurrentTime - m_dwLastMoveCheckTime;
// Minimum zaman kontrolu (50ms'den az ise gecerli de?il)
if (dwDeltaTime < 50)
return true;
// Mesafe hesaplama
long dx = x - m_lLastMoveCheckX;
long dy = y - m_lLastMoveCheckY;
double fDistance = sqrt(static_cast<double>(dx*dx + dy*dy));
// Zamanı saniyeye cevir
double fTimeInSec = dwDeltaTime / 1000.0;
// Hız hesaplama (birim/saniye)
double fSpeed = fDistance / fTimeInSec;
// Maksimum izin verilen hız (karakterin mevcut move_speed de?eri + %20 tolerans)
float fMaxSpeed = GetMoveSpeed() * 1.2f;
// E?er hız limitini a?arsa
if (fSpeed > fMaxSpeed)
{
m_iSpeedHackCount += 2; // Mesafe hack'i daha ciddi
sys_err("SPEED_HACK_DISTANCE: %s (PID: %d) - Speed: %.2f > Max: %.2f, Distance: %.2f, Time: %dms",
GetName(), GetPlayerID(), fSpeed, fMaxSpeed, fDistance, dwDeltaTime);
// 3 kez mesafe hack'i tespiti
if (m_iSpeedHackCount > 3)
{
return false;
}
}
else
{
// Normal hızda ise sayacı azalt
if (m_iSpeedHackCount > 0)
m_iSpeedHackCount--;
}
return true;
}
bool CHARACTER::CheckSpeedHack(long x, long y)
{
// GM'leri kontrol etme
if (IsGM())
return true;
// Olu veya sava?ta olmayan karakterleri kontrol et
if (IsDead())
return true;
// Frekans kontrolu
if (!__CheckSpeedHackFrequency())
return false;
// Mesafe kontrolu
if (!__CheckSpeedHackDistance(x, y))
return false;
// Zaman ve pozisyonu guncelle
m_dwLastMoveCheckTime = get_dword_time();
m_lLastMoveCheckX = x;
m_lLastMoveCheckY = y;
return true;
}
bool CHARACTER::Move(long x, long y)
{
// Hareket hızı anti-cheat kontrolu
if (!CheckSpeedHack(x, y))
{
sys_err("SPEED_HACK_BLOCKED: %s (PID: %d) - Movement blocked due to speed hack detection",
GetName(), GetPlayerID());
// Hile tespit edildi?inde karakteri sync et
Sync(x, y);
// Gerekirse ceza uygula (orne?in: 10 saniye donma)
if (m_iSpeedHackCount > 10)
{
AddAffect(AFFECT_SPEED_HACK_PENALTY, APPLY_NONE, 0, AFF_STUN, 10, 0, true);
ChatPacket(CHAT_TYPE_INFO, "Speed hack detected! You have been frozen for 10 seconds.");
}
return false;
}
if (GetX() == x && GetY() == y)
return true;
if (test_server)
if (m_bDetailLog)
sys_log(0, "%s position %u %u", GetName(), x, y);
OnMove();
return Sync(x, y);
}
günün sözleri
- "En büyük hakikat, imandır. İmandan sonra en büyük hakikat namazdır." – İmanı hayatın merkezine alan bir yaklaşım.
- "Kâinatı bize tanıttıran, Kendini bize sevdiren, Kur'an'dır." – Evren kitabı (kâinat) ile vahiy kitabı (Kur'an) arasındaki uyuma dikkat çeker.
- "Her şey Allah'ı gösteriyor, her şey Allah'ı bildiriyor, her şey Allah'a şehadet ediyor." – Onun tevhid anlayışının özü.
- "Marifetullah (Allah'ı tanımak), en büyük saadettir. Şükür ise, o saadetin anahtarıdır."
Ekli dosyalar
Son düzenleme:
- Katılım
- 10 Ara 2011
- Konular
- 51
- Mesajlar
- 1,224
- Çözüm
- 3
- Online süresi
- 4mo 25d
- Reaksiyon Skoru
- 502
- Altın Konu
- 1
- Başarım Puanı
- 229
- MmoLira
- 1,957
- DevLira
- 16
Paylaşım için teşekkürler ama bu şekilde bineğe bindiğinde veya indiğindede sürekli hata verecekdir. binek kontrolü yapılmamış yani normal yürüyüş hızıyla binek üzerindeki yürüyüş hızı bir değil. svside bunun için debugmode ile yapıyor binek için ayrı değer alıyor onunda maksatı normal bineklerden ziyade birde hızlı binekler var bunlarda bu kodu tetikliyor. bunlarıda geliştirmen gerekli bence.
- Katılım
- 11 May 2023
- Konular
- 270
- Mesajlar
- 1,141
- Çözüm
- 2
- Online süresi
- 1mo 25d
- Reaksiyon Skoru
- 744
- Altın Konu
- 1
- Başarım Puanı
- 199
- MmoLira
- 1,170
- DevLira
- 381
şuan test ettim binekde ynalış hile algılama olmuyorPaylaşım için teşekkürler ama bu şekilde bineğe bindiğinde veya indiğindede sürekli hata verecekdir. binek kontrolü yapılmamış yani normal yürüyüş hızıyla binek üzerindeki yürüyüş hızı bir değil. svside bunun için debugmode ile yapıyor binek için ayrı değer alıyor onunda maksatı normal bineklerden ziyade birde hızlı binekler var bunlarda bu kodu tetikliyor. bunlarıda geliştirmen gerekli bence.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 8
- Görüntüleme
- 296
- Cevaplar
- 0
- Görüntüleme
- 265
- Cevaplar
- 12
- Görüntüleme
- 551
- Cevaplar
- 9
- Görüntüleme
- 430
- Cevaplar
- 9
- Görüntüleme
- 527











