本文整理汇总了C++中CAccount::GetClient方法的典型用法代码示例。如果您正苦于以下问题:C++ CAccount::GetClient方法的具体用法?C++ CAccount::GetClient怎么用?C++ CAccount::GetClient使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAccount
的用法示例。
在下文中一共展示了CAccount::GetClient方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RemoveAccount
int CLuaFunctionDefs::RemoveAccount ( lua_State* luaVM )
{
// bool removeAccount ( account theAccount )
CAccount* pAccount;
CScriptArgReader argStream ( luaVM );
argStream.ReadUserData ( pAccount );
if ( !argStream.HasErrors () )
{
if ( CStaticFunctionDefinitions::RemoveAccount ( pAccount ) )
{
lua_pushboolean ( luaVM, true );
return 1;
}
CClient* pClient = pAccount->GetClient ();
if ( pClient )
argStream.SetCustomError ( "Unable to remove account as unable to log out client. (Maybe onPlayerLogout is cancelled)" );
}
if ( argStream.HasErrors () )
m_pScriptDebugging->LogCustom ( luaVM, argStream.GetFullErrorMessage () );
lua_pushboolean ( luaVM, false );
return 1;
}
示例2: LogIn
bool CAccountManager::LogIn ( CClient* pClient, CClient* pEchoClient, const char* szNick, const char* szPassword )
{
// Is he already logged in?
if ( pClient->IsRegistered () )
{
if ( pEchoClient ) pEchoClient->SendEcho ( "login: You are already logged in" );
return false;
}
// Get the players details if relevant
string strPlayerName, strPlayerIP, strPlayerSerial;
if ( pClient->GetClientType () == CClient::CLIENT_PLAYER )
{
CPlayer* pPlayer = static_cast < CPlayer* > ( pClient );
strPlayerIP = pPlayer->GetSourceIP ();
strPlayerName = pPlayer->GetNick ();
strPlayerSerial = pPlayer->GetSerial ();
}
if ( m_AccountProtect.IsFlooding ( strPlayerIP.c_str () ) )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account locked", szNick ).c_str() );
CLogger::AuthPrintf ( "LOGIN: Ignoring %s trying to log in as '%s' (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () );
return false;
}
// Grab the account on his nick if any
CAccount* pAccount = g_pGame->GetAccountManager ()->Get ( szNick );
if ( !pAccount )
{
if ( pEchoClient ) pEchoClient->SendEcho( SString( "login: No known account for '%s'", szNick ).c_str() );
CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' (Unknown account) (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () );
return false;
}
if ( pAccount->GetClient () )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account for '%s' is already in use", szNick ).c_str() );
return false;
}
if ( !IsValidPassword( szPassword ) || !pAccount->IsPassword ( szPassword ) )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Invalid password for account '%s'", szNick ).c_str() );
CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' with an invalid password (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () );
m_AccountProtect.AddConnect ( strPlayerIP.c_str () );
return false;
}
// Try to log him in
return LogIn ( pClient, pEchoClient, pAccount );
}
示例3: LogIn
bool CAccountManager::LogIn ( CClient* pClient, CClient* pEchoClient, const char* szAccountName, const char* szPassword )
{
// Is he already logged in?
if ( pClient->IsRegistered () )
{
if ( pEchoClient ) pEchoClient->SendEcho ( "login: You are already logged in" );
return false;
}
if ( pClient->GetClientType () != CClient::CLIENT_PLAYER )
{
if ( pEchoClient ) pEchoClient->SendEcho ( "login: Only players can log in" );
return false;
}
// Get the players details
CPlayer* pPlayer = static_cast < CPlayer* > ( pClient );
SString strPlayerName = pPlayer->GetNick ();
SString strPlayerIP = pPlayer->GetSourceIP ();
SString strPlayerSerial = pPlayer->GetSerial ();
if ( m_AccountProtect.IsFlooding ( strPlayerIP.c_str () ) )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account locked", szAccountName ).c_str() );
CLogger::AuthPrintf ( "LOGIN: Ignoring %s trying to log in as '%s' (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () );
return false;
}
// Grab the account on his nick if any
CAccount* pAccount = g_pGame->GetAccountManager ()->Get ( szAccountName );
if ( !pAccount )
{
if ( pEchoClient ) pEchoClient->SendEcho( SString( "login: No known account for '%s'", szAccountName ).c_str() );
CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' (Unknown account) (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () );
return false;
}
if ( pAccount->GetClient () )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account for '%s' is already in use", szAccountName ).c_str() );
return false;
}
if ( !IsValidPassword( szPassword ) || !pAccount->IsPassword ( szPassword ) )
{
if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Invalid password for account '%s'", szAccountName ).c_str() );
CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' with an invalid password (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () );
m_AccountProtect.AddConnect ( strPlayerIP.c_str () );
return false;
}
// Check serial authorization
if ( IsAuthorizedSerialRequired( pAccount ) )
{
pAccount->AddSerialForAuthorization( strPlayerSerial, strPlayerIP );
if ( !pAccount->IsSerialAuthorized( strPlayerSerial ) )
{
if ( pEchoClient )
pEchoClient->SendEcho( SString( "login: Serial pending authorization for account '%s' - See https:""//mtasa.com/authserial", szAccountName ) );
CLogger::AuthPrintf( "LOGIN: %s tried to log in as '%s' with an unauthorized serial (IP: %s Serial: %s)\n", *strPlayerName, szAccountName, *strPlayerIP, *strPlayerSerial );
CLogger::AuthPrintf( "LOGIN: See https:""//mtasa.com/authserial\n" );
return false;
}
}
// Log him in
CAccount* pCurrentAccount = pClient->GetAccount ();
pClient->SetAccount ( pAccount );
pAccount->SetClient ( pClient );
// Call the onPlayerLogin script event
CLuaArguments Arguments;
Arguments.PushAccount ( pCurrentAccount );
Arguments.PushAccount ( pAccount );
Arguments.PushBoolean ( false ); // was bAutoLogin
if ( !pPlayer->CallEvent ( "onPlayerLogin", Arguments ) )
{
// DENIED!
pClient->SetAccount ( pCurrentAccount );
pAccount->SetClient ( NULL );
return false;
}
// Success is here
pAccount->OnLoginSuccess ( strPlayerSerial, strPlayerIP );
SString strGroupList = SString::Join ( ", ", g_pGame->GetACLManager ()->GetObjectGroupNames ( pAccount->GetName (), CAccessControlListGroupObject::OBJECT_TYPE_USER ) );
CLogger::AuthPrintf ( "LOGIN: (%s) %s successfully logged in as '%s' (IP: %s Serial: %s)\n", strGroupList.c_str (), pClient->GetNick (), pAccount->GetName ().c_str (), strPlayerIP.c_str (), strPlayerSerial.c_str () );
// Tell the player
if ( pEchoClient )
{
pEchoClient->SendEcho ( "login: You successfully logged in" );
}
// Update who was info
if ( pClient->GetClientType () == CClient::CLIENT_PLAYER )
g_pGame->GetConsole ()->GetWhoWas ()->OnPlayerLogin ( static_cast < CPlayer* > ( pClient ) );
// Delete the old account if it was a guest account
if ( !pCurrentAccount->IsRegistered () )
//.........这里部分代码省略.........