2024-12-21 10:04:04 +08:00
|
|
|
#include "StdAfx.h"
|
|
|
|
|
#include "DnPlayerSkillChecker.h"
|
|
|
|
|
#include "DnDropItem.h"
|
|
|
|
|
#include "DnPlayerActor.h"
|
|
|
|
|
#include "DNUserSession.h"
|
|
|
|
|
|
|
|
|
|
CDnPlayerSkillChecker::CDnPlayerSkillChecker( CDnPlayerActor *pPlayer )
|
|
|
|
|
: IDnPlayerChecker( pPlayer )
|
|
|
|
|
{
|
|
|
|
|
m_nInvalidCount = 0;
|
|
|
|
|
m_LastCheckTime = 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CDnPlayerSkillChecker::~CDnPlayerSkillChecker()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool CDnPlayerSkillChecker::IsInvalidPlayer()
|
|
|
|
|
{
|
|
|
|
|
return ( m_nInvalidCount >= 3 ) ? true : false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CDnPlayerSkillChecker::Process( LOCAL_TIME LocalTime, float fDelta )
|
|
|
|
|
{
|
|
|
|
|
if( m_nInvalidCount <= 0 ) return;
|
|
|
|
|
if( timeGetTime() - m_LastCheckTime > 10000 ) {
|
|
|
|
|
m_nInvalidCount = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CDnPlayerSkillChecker::OnInvalidUseSkill( int nSkillID, CDnSkill::UsingResult Result )
|
|
|
|
|
{
|
|
|
|
|
int nInvalidValue = 0;
|
|
|
|
|
switch( Result ) {
|
|
|
|
|
case CDnSkill::UsingResult::FailedByCooltime:
|
|
|
|
|
nInvalidValue = 1;
|
|
|
|
|
break;
|
|
|
|
|
case CDnSkill::UsingResult::NoExistSkill:
|
|
|
|
|
nInvalidValue = 2;
|
|
|
|
|
break;
|
|
|
|
|
case CDnSkill::UsingResult::Hack:
|
|
|
|
|
nInvalidValue = 5;
|
|
|
|
|
break;
|
|
|
|
|
case CDnSkill::UsingResult::FailedByUsableChecker:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
m_nInvalidCount += nInvalidValue;
|
|
|
|
|
m_LastCheckTime = timeGetTime();
|
|
|
|
|
|
|
|
|
|
if( m_pActor && m_pActor->GetUserSession() ) {
|
|
|
|
|
if( m_nInvalidCount >= 10 )
|
|
|
|
|
{
|
|
|
|
|
g_Log.Log( LogType::_HACK, m_pActor->GetUserSession(), L"HackChecker(Skill) : CharName=%s InvalidCount=%d, SkillID=%d, Result=%d\n", m_pActor->GetUserSession()->GetCharacterName(), m_nInvalidCount, nSkillID, Result );
|
|
|
|
|
// m_pActor->OnInvalidPlayerChecker( 1 );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|