本文整理汇总了C++中MMatchObject::GetAccountInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ MMatchObject::GetAccountInfo方法的具体用法?C++ MMatchObject::GetAccountInfo怎么用?C++ MMatchObject::GetAccountInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MMatchObject
的用法示例。
在下文中一共展示了MMatchObject::GetAccountInfo方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnAdminRequestBlockPlayer
void MMatchServer::OnAdminRequestBlockPlayer(const MUID& uidAdmin, const char* szPlayer, const int nPenaltyHour)
{
MMatchObject* pObj = GetObject(uidAdmin);
if (pObj == NULL) return;
if (!IsAdminGrade(pObj)) return;
if ((strlen(szPlayer)) < 2) return;
int nRet = MOK;
MMatchObject* pTargetObj = GetPlayerByName(szPlayer);
if (pTargetObj != NULL)
{
pTargetObj->GetAccountPenaltyInfo()->SetPenaltyInfo(MPC_CONNECT_BLOCK, nPenaltyHour);
const MPenaltyInfo* pPenaltyInfo = pTargetObj->GetAccountPenaltyInfo()->GetPenaltyInfo(MPC_CONNECT_BLOCK);
if( m_MatchDBMgr.InsertAccountPenaltyInfo(pTargetObj->GetAccountInfo()->m_nAID
, pPenaltyInfo->nPenaltyCode, nPenaltyHour, pObj->GetAccountName()) == false )
{
pTargetObj->GetAccountPenaltyInfo()->ClearPenaltyInfo(MPC_CONNECT_BLOCK);
nRet = MERR_ADNIN_CANNOT_PENALTY_ON_DB;
}
}
else
{
nRet = MERR_ADMIN_NO_TARGET;
}
MCommand* pNew = CreateCommand(MC_ADMIN_RESPONSE_BLOCK_PLAYER, MUID(0,0));
pNew->AddParameter(new MCmdParamInt(nRet));
if( nRet == MOK ) {
Disconnect(pTargetObj->GetUID());
}
RouteToListener(pObj, pNew);
}
示例2: ChooseCommander
const MUID MMatchRuleAssassinate::ChooseCommander(int nTeam)
{
MMatchStage* pStage = GetStage();
if (pStage == NULL) return MUID(0,0);
int nRedAliveCount, nBlueAliveCount, nChooseTeamCount;
if (GetAliveCount(&nRedAliveCount, &nBlueAliveCount) == false) return MUID(0,0);
if (nTeam == MMT_RED) {
if (nRedAliveCount <= 0) return MUID(0,0);
nChooseTeamCount = nRedAliveCount;
}
if (nTeam == MMT_BLUE) {
if (nBlueAliveCount <= 0) return MUID(0,0);
nChooseTeamCount = nBlueAliveCount;
}
if( m_bIsAdminCommander == true )
{
for(MUIDRefCache::iterator itor=pStage->GetObjBegin(); itor!=pStage->GetObjEnd(); itor++) {
MMatchObject* pObj = (MMatchObject*)(*itor).second;
if (pObj->GetEnterBattle() == false)
continue; // 배틀참가하고 있는 플레이어만 체크
if (pObj->GetTeam() == nTeam && pObj->GetAccountInfo()->m_nUGrade == MMUG_ADMIN)
{
return pObj->GetUID();
}
}
}
MTime time;
int nChoose = time.MakeNumber(1, nChooseTeamCount);
int nCount = 0;
for(MUIDRefCache::iterator itor=pStage->GetObjBegin(); itor!=pStage->GetObjEnd(); itor++) {
MMatchObject* pObj = (MMatchObject*)(*itor).second;
if (pObj->GetEnterBattle() == false) continue; // 배틀참가하고 있는 플레이어만 체크
if (pObj->GetTeam() == nTeam) {
nCount++;
if (nCount == nChoose) {
return pObj->GetUID();
}
}
}
return MUID(0,0);
}
示例3: OnChatBan
void MMatchServer::OnChatBan(const MUID& uidSender, const char* pName, const char* pReason)
{
MMatchObject* pObj = GetObject(uidSender);
if (pObj && IsAdminGrade(pObj))
{
MMatchObject* pTarget = GetPlayerByName(pName);
if (pTarget)
{
m_MatchDBMgr.EventJjangUpdate(pTarget->GetAccountInfo()->m_nAID, false, MMUG_CHAT_LIMITED);
Disconnect(pTarget->GetUID());
}
LogCommand("cban", pObj->GetCharInfo()->m_szName, pReason);
}
}
示例4: OnAdminServerHalt
void MMatchServer::OnAdminServerHalt(const MUID& uidAdmin)
{
LOG(LOG_PROG, "OnAdminServerHalt(...) Called");
MMatchObject* pObj = GetObject(uidAdmin);
if (pObj == NULL) return;
MMatchUserGradeID nGrade = pObj->GetAccountInfo()->m_nUGrade;
// 관리자 권한을 가진 사람이 아니면 무시.
if ((nGrade != MMUG_ADMIN) && (nGrade != MMUG_DEVELOPER)) return;
// Shutdown 시작
m_MatchShutdown.Start(GetGlobalClockCount());
}
示例5: AdminTerminalOutput
void MMatchServer::AdminTerminalOutput(const MUID& uidAdmin, const char* szText)
{
MMatchObject* pObj = GetObject(uidAdmin);
if (pObj == NULL) return;
// 관리자 권한을 가진 사람이 아니면 연결을 끊는다.
if (pObj->GetAccountInfo()->m_nUGrade != MMUG_ADMIN)
{
// DisconnectObject(uidAdmin);
return;
}
char szMsg[65535];
strcpy_safe(szMsg, szText);
MCommand* pCmd = CreateCommand(MC_ADMIN_TERMINAL, MUID(0,0));
pCmd->AddParameter(new MCmdParamUID(uidAdmin));
pCmd->AddParameter(new MCmdParamStr(szMsg));
RouteToListener(pObj, pCmd);
}
示例6: OnHwBan
void MMatchServer::OnHwBan(const MUID& uidSender, const char* pName, const char* pReason)
{
MMatchObject* pObj = GetObject(uidSender);
if (pObj && IsAdminGrade(pObj))
{
char message[512];
char razon[500];
if (strstr(pName, "%") || strstr(pReason, "%")) return;
if(strlen(pReason) > 500)
strcpy_s(razon, 500, pReason);
else
strcpy(razon, pReason);
MMatchObject* pTarget = GetPlayerByName(pName);
if(pTarget)
{
m_MatchDBMgr.spBanPC(pTarget->GetAccountInfo()->m_nAID, razon);
Disconnect(pTarget->GetUID());
sprintf(message, "%s - %s", pTarget->GetAccountName(), pReason);
LogCommand("banpc", pObj->GetCharInfo()->m_szName, message);
}
}
}
示例7: AddObjectOnMatchLogin
bool MMatchServer::AddObjectOnMatchLogin(const MUID& uidComm,
const MMatchAccountInfo* pSrcAccountInfo,
const MMatchAccountPenaltyInfo* pSrcAccountPenaltyInfo,
bool bFreeLoginIP, string strCountryCode3, unsigned long nChecksumPack)
{
MCommObject* pCommObj = (MCommObject*)m_CommRefCache.GetRef(uidComm);
if (pCommObj == NULL) return false;
MUID AllocUID = uidComm;
int nErrCode = ObjectAdd(uidComm);
if(nErrCode!=MOK) {
LOG(LOG_DEBUG, MErrStr(nErrCode) );
}
MMatchObject* pObj = GetObject(AllocUID);
if (pObj == NULL) {
// Notify Message 필요 -> 로그인 관련 - 해결(Login Fail 메세지 이용)
// Disconnect(uidComm);
MCommand* pCmd = CreateCmdMatchResponseLoginFailed(AllocUID, MERR_FAILED_LOGIN_RETRY);
Post(pCmd);
return false;
}
pObj->AddCommListener(uidComm);
pObj->SetObjectType(MOT_PC);
memcpy(pObj->GetAccountInfo(), pSrcAccountInfo, sizeof(MMatchAccountInfo));
memcpy(pObj->GetAccountPenaltyInfo(), pSrcAccountPenaltyInfo, sizeof(MMatchAccountPenaltyInfo));
pObj->SetFreeLoginIP(bFreeLoginIP);
pObj->SetCountryCode3( strCountryCode3 );
pObj->UpdateTickLastPacketRecved();
pObj->UpdateLastHShieldMsgRecved();
if (pCommObj != NULL)
{
pObj->SetPeerAddr(pCommObj->GetIP(), pCommObj->GetIPString(), pCommObj->GetPort());
}
SetClientClockSynchronize(uidComm);
// 프리미엄 IP를 체크한다.
if (MGetServerConfig()->CheckPremiumIP())
{
if (pCommObj)
{
bool bIsPremiumIP = false;
bool bExistPremiumIPCache = false;
bExistPremiumIPCache = MPremiumIPCache()->CheckPremiumIP(pCommObj->GetIP(), bIsPremiumIP);
// 만약 캐쉬에 없으면 직접 DB에서 찾도록 한다.
if (!bExistPremiumIPCache)
{
if (m_MatchDBMgr.CheckPremiumIP(pCommObj->GetIPString(), bIsPremiumIP))
{
// 결과를 캐쉬에 저장
MPremiumIPCache()->AddIP(pCommObj->GetIP(), bIsPremiumIP);
}
else
{
MPremiumIPCache()->OnDBFailed();
}
}
//if (bIsPremiumIP) pObj->GetAccountInfo()->m_nPGrade = MMPG_PREMIUM_IP;
}
}
if (!PreCheckAddObj(uidComm))
{
// 보안 관련 초기화 서버 설정에 문제가 생겼다고 로그인 실패를 리턴한다. //
MCommand* pCmd = CreateCmdMatchResponseLoginFailed(uidComm, MERR_FAILED_AUTHENTICATION);
Post(pCmd);
return false;
}
MCommand* pCmd = CreateCmdMatchResponseLoginOK(uidComm,
AllocUID,
pObj->GetAccountInfo()->m_szUserID,
pObj->GetAccountInfo()->m_nUGrade,
pObj->GetAccountInfo()->m_nPGrade,
pObj->GetAccountInfo()->m_nECoins,
// pObj->GetAntiHackInfo()->m_szRandomValue,
pObj->GetHShieldInfo()->m_pbyGuidReqMsg);
Post(pCmd);
// 접속 로그를 남긴다.
//m_MatchDBMgr.InsertConnLog(pObj->GetAccountInfo()->m_nAID, pObj->GetIPString(), pObj->GetCountryCode3() );
// 접속 로그
MAsyncDBJob_InsertConnLog* pNewJob = new MAsyncDBJob_InsertConnLog(uidComm);
pNewJob->Input(pObj->GetAccountInfo()->m_nAID, pObj->GetIPString(), pObj->GetCountryCode3() );
PostAsyncJob(pNewJob);
// Client DataFile Checksum을 검사한다.
// 2006.2.20 dubble. filelist checksum으로 변경
//.........这里部分代码省略.........