Reklam
Dediğin gibi olmadı abi fakat alttaki gibi yaptığımda hem botlara hem userlere atak yapmıyor. Bot için ayırmak için 5000 den büyük olanları diye yaptığımda da bir değişiklik olmadı.
C++:bool __fastcall IsAntiAFK(DWORD mobBase) { if (!mobBase) return false; uint16 protoID = *(uint16*)(mobBase + KO_SSID); if (std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end()) return true; uint16 protoID2 = *(uint16*)(mobBase + KO_OFF_ID); if (g_pMain->m_isGenieStatus && isLeaderAttack && g_pMain->isInParty()) { if (g_pMain->GetPartyLeaderTarget() == protoID2) return false; return true; } if (protoID <...
Merhaba arkadaşlar Genie açıkken cz town önlerine genie koyup bot kesmelerine engel olmak için genie açıkken botlara atak yapılmasını engellemek istiyorum.
Bir kaç deneme yaptım fakat doğru yeri bulamadım sanırım.
void CUser::Attack(Packet & pkt) paketinin içinde
if (isInGenie() && pTarget->isBot())
return;
eklememe rağmen yine atak yapıyor.
bool __fastcall IsAntiAFK(DWORD mobBase)
{
if (!mobBase) return false;
uint16 m_sProtoID = *(uint16*)(mobBase + KO_SSID);
if (std::find(antiAFKProto.begin(), antiAFKProto.end(), m_sProtoID) != antiAFKProto.end())
return true;
int16 m_sMonsterID = *(int16*)(mobBase + KO_OFF_ID);
if (g_pMain->isInGenie())
{
/*Genie Aktifken Botların z almasını engelleme*/
if (m_sMonsterID > 5000 && m_sMonsterID < NPC_BAND)
return false;
if (isLeaderAttack)
{
if (g_pMain->isInParty())
{
if (g_pMain->GetPartyLeaderTarget() == m_sMonsterID)
return false;
return true;
}
}
}
return std::find(antiAFKProto.begin(), antiAFKProto.end(), m_sProtoID) != antiAFKProto.end();
}
Dediğin gibi olmadı abi fakat alttaki gibi yaptığımda hem botlara hem userlere atak yapmıyor. Bot için ayırmak için 5000 den büyük olanları diye yaptığımda da bir değişiklik olmadı.hkGenieSelect
guraya gel
sonrada buraya
bool __fastcall IsAntiAFK(DWORD mobBase)
C++:bool __fastcall IsAntiAFK(DWORD mobBase) { if (!mobBase) return false; uint16 m_sProtoID = *(uiDnt16*)(mobBase + KO_SSID); if (std::find(antiAFKProto.begin(), antiAFKProto.end(), m_sProtoID) != antiAFKProto.end()) return true; int16 m_sMonsterID = *(int16*)(mobBase + KO_OFF_ID); if (g_pMain->isInGenie()) { /*Genie Aktifken Botların z almasını engelleme*/ if (m_sMonsterID > 5000 && m_sMonsterID < NPC_BAND) return false; if (isLeaderAttack) { if (g_pMain->isInParty()) { if (g_pMain->GetPartyLeaderTarget() == m_sMonsterID) return false; return true; } } } return std::find(antiAFKProto.begin(), antiAFKProto.end(), m_sProtoID) != antiAFKProto.end(); }
Değiştir.
bool __fastcall IsAntiAFK(DWORD mobBase)
{
if (!mobBase) return false;
uint16 protoID = *(uint16*)(mobBase + KO_SSID);
if (std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end())
return true;
uint16 protoID2 = *(uint16*)(mobBase + KO_OFF_ID);
if (g_pMain->m_isGenieStatus && isLeaderAttack && g_pMain->isInParty())
{
if (g_pMain->GetPartyLeaderTarget() == protoID2)
return false;
return true;
}
if (protoID < NPC_BAND) // oyuncuysa seçme
return true;
return std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end();
}
if (5000 < protoID < NPC_BAND)
return true;
Senin kodunda mantık hatası vardıDediğin gibi olmadı abi fakat alttaki gibi yaptığımda hem botlara hem userlere atak yapmıyor. Bot için ayırmak için 5000 den büyük olanları diye yaptığımda da bir değişiklik olmadı.
C++:bool __fastcall IsAntiAFK(DWORD mobBase) { if (!mobBase) return false; uint16 protoID = *(uint16*)(mobBase + KO_SSID); if (std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end()) return true; uint16 protoID2 = *(uint16*)(mobBase + KO_OFF_ID); if (g_pMain->m_isGenieStatus && isLeaderAttack && g_pMain->isInParty()) { if (g_pMain->GetPartyLeaderTarget() == protoID2) return false; return true; } if (protoID < NPC_BAND) // oyuncuysa seçme return true; return std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end(); }
Alttaki gibi yapsam da yine bot ve userlere atak yapmıyor. ayrım yapamadım henüz
C++:if (5000 < protoID < NPC_BAND) return true;
bool __fastcall IsAntiAFK(DWORD mobBase)
{
if (!mobBase) return false;
uint16 protoID = *(uint16*)(mobBase + KO_SSID);
if (std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end())
return true;
uint16 protoID2 = *(uint16*)(mobBase + KO_OFF_ID);
if (g_pMain->m_isgenieStatus)
{
if (protoID2 > 4999 && protoID2 < 10000)
return true;
}
if (g_pMain->m_isGenieStatus && isLeaderAttack && g_pMain->isInParty())
{
if (g_pMain->GetPartyLeaderTarget() == protoID2)
return false;
return true;
}
return std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end();
}
Bu sorunu çözdü abi.Senin kodunda mantık hatası vardı
C++:bool __fastcall IsAntiAFK(DWORD mobBase) { if (!mobBase) return false; uint16 protoID = *(uint16*)(mobBase + KO_SSID); if (std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end()) return true; uint16 protoID2 = *(uint16*)(mobBase + KO_OFF_ID); if (g_pMain->m_isgenieStatus) { if (protoID2 > 4999 && protoID2 < 10000) return true; } if (g_pMain->m_isGenieStatus && isLeaderAttack && g_pMain->isInParty()) { if (g_pMain->GetPartyLeaderTarget() == protoID2) return false; return true; } return std::find(antiAFKProto.begin(), antiAFKProto.end(), protoID) != antiAFKProto.end(); }