- Katılım
- 6 Kas 2021
- Mesajlar
- 4,066
- Tepkime puanı
- 5,491
- Puanları
- 113
- Yaş
- 32
- Konum
- Türkiye
- Dc
- fatihbulut
Kod:
MULTI-ACCOUNT / FARM HİLESİ
❌ Sorun
Aynı kişi:
2 hesap açar
Sürekli birbirini keser
Lonca puanı kasar
✅ ÇÖZÜM (CORE)
🔒 IP + HWID + Account kontrolü
bool CHARACTER::IsFarmAbuse(CHARACTER* victim)
{
if (GetIP() == victim->GetIP())
return true;
if (GetAccountID() == victim->GetAccountID())
return true;
return false;
}
if (IsFarmAbuse(victim))
return;
Not:
HWID sistemi varsa en güçlü çözüm.
AYNI OYUNCUYU TEKRAR TEKRAR KESME
❌ Sorun
10 dk beklemeden aynı oyuncuyu kesme
✅ ÇÖZÜM (Cooldown)
#define PK_COOLDOWN 600
bool CHARACTE[HASH=1]#define[/HASH]kPKCooldown(DWORD victimID)
{
time_t now = time(nullptr);
auto it = m_pkCooldown.find(victimID);
if (it != m_pkCooldown.end() && now - it->second < PK_COOLDOWN)
return false;
m_pkCooldown[victimID] = now;
return true;
}
✔ Oyuncu bazlı
✔ Core seviyesinde
✔ Resetlenemez
AFK KILL / BOT FARM
❌ Sorun
AFK char bırakıp kestirme
✅ ÇÖZÜM
if (victim->IsAFK())
return;
AFK algılama:
Son hareket zamanı
Son skill / saldırı zamanı
DÜŞÜK SEVİYE FARM (TWINK)
❌ Sorun
Level 1–30 char keserek puan kasma
✅ ÇÖZÜM
#define MIN_PK_LEVEL 55
if (victim->GetLevel() < MIN_PK_LEVEL)
retu#defineRTY / LONCA İÇİ FARM
❌ Sorun
Aynı lonca veya party içinde farm
✅ ÇÖZÜM
if (GetGuild() && victim->GetGuild() &&
GetGuild()->GetID() == victim->GetGuild()->GetID())
return;
if (IsInSameParty(victim))
return;
MAP ABUSE (SAFE ZONE BUG)
❌ Sorun
Koruma alanlarında kesme
✅ ÇÖZÜM
if (GetMapIndex() == MAP_TOWN || IsSafeZone())
return;
LOGOUT / LOGIN RESET BUG
❌ Sorun
Çık-gir yaparak cooldown sıfırlama
✅ ÇÖZÜM
Cooldown’u:
CHARACTER değil
ACCOUNT bazlı tut
std::map<DWORD, time_t> g_mapPKCooldownAccount;
8️⃣ SERVER CRASH → ÇİFT ÖDÜL
❌ Sorun
Sezon bitişinde crash → tekrar ödül
✅ ÇÖZÜM (DB FLAG)
ALTER TABLE season ADD COLUMN rewarded TINYINT DEFAULT 0;
if (season.rewarded)
return;
season.rewarded = 1;
SaveSeason();
FAKE DAMAGE / TEK VURUŞ HİLESİ
❌ Sorun
Tek vuruş hilesiyle farm
✅ ÇÖZÜM
if (GetLastDamageTime(victim) < 3)
return;
CLIENT PACKET MANIPULATION
❌ Sorun
Client packet göndererek bağış artırma
✅ ÇÖZÜM
✔ Bağış SADECE SERVER TARAFINDA
✔ Client sadece request
✔ Tüm hesaplama server’da
void HandleGuildDonatePacket(CHARACTER* ch)
{
if (ch->GetPKPoint() < amount)
return;
ch->RemovePKPoint(amount);
ch->GetGuild()->AddGuildPoint(amount);
}
RATE LIMIT (SPAM KORUMA)
if (!CheckActionDelay("GUILD_DONATE", 3))
return;
GM / LOG SİSTEMİ
📜 LOG AT
sys_log(0, "[GUILD_POINT] %s -> %d",
ch->GetName(), amount);
Gizli içerik
Bu içeriği görmek için cevap yazmalısınız.
