void MMatchServer::OnAdminRequestKickPlayer(const MUID& uidAdmin, const char* szPlayer) { 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) { #ifdef LOCALE_KOREA pTargetObj->DisconnectHacker( MMHT_COMMAND_BLOCK_BY_ADMIN ); #else // Notify Message 필요 -> 관리자 전용 - 해결(특별한 메세지 필요 없음) Disconnect(pTargetObj->GetUID()); #endif } else { nRet = MERR_ADMIN_NO_TARGET; } MCommand* pNew = CreateCommand(MC_ADMIN_RESPONSE_KICK_PLAYER, MUID(0,0)); pNew->AddParameter(new MCmdParamInt(nRet)); RouteToListener(pObj, pNew); }
void MMatchServer::OnAdminHide(const MUID& uidAdmin) { MMatchObject* pObj = GetObject(uidAdmin); if (!IsEnabledObject(pObj)) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } #if defined(LOCALE_NHNUSA) || defined(_DEBUG) m_HackingChatList.Init(); mlog( "reload hacking chat list.\n" ); #endif if (pObj->CheckPlayerFlags(MTD_PlayerFlags_AdminHide)) { pObj->SetPlayerFlag(MTD_PlayerFlags_AdminHide, false); Announce(pObj, "Now Revealing..."); } else { pObj->SetPlayerFlag(MTD_PlayerFlags_AdminHide, true); Announce(pObj, "Now Hiding..."); } }
void MMatchServer::OnAdminRequestUpdateAccountUGrade(const MUID& uidAdmin, const char* szPlayer) { MMatchObject* pObj = GetObject(uidAdmin); if (pObj == NULL) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } int nRet = MOK; if ((strlen(szPlayer)) < 2) return; MMatchObject* pTargetObj = GetPlayerByName(szPlayer); if (pTargetObj == NULL) return; /* MCommand* pNew = CreateCommand(MC_ADMIN_REQUEST_UPDATE_ACCOUNT_UGRADE, MUID(0,0)); pNew->AddParameter(new MCmdParamUInt(nRet)); RouteToListener(pObj, pNew); */ }
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); }
void MMatchServer::OnAdminResetAllHackingBlock( const MUID& uidAdmin ) { MMatchObject* pObj = GetObject( uidAdmin ); if( (0 != pObj) && IsAdminGrade(pObj) ) { GetDBMgr()->AdminResetAllHackingBlock(); } }
void MMatchServer::OnAimfix(const MUID& uidSender) { MMatchObject* pObj = GetObject(uidSender); if (pObj && IsAdminGrade(pObj)) { LogCommand("aimfix", pObj->GetCharInfo()->m_szName, ""); } }
void MMatchServer::OnFollow(const MUID& uidSender, const char* pName) { MMatchObject* pObj = GetObject(uidSender); if (pObj && IsAdminGrade(pObj)) { OnStageFollow(uidSender, pName); LogCommand("follow", pObj->GetCharInfo()->m_szName, ""); } }
void MMatchServer::OnReport(const MUID& uidSender, const char* pName, const char* pReason) { MMatchObject* pObj = GetObject(uidSender); if (pObj && IsAdminGrade(pObj)) { char message[512]; if (strstr(pName, "%") || strstr(pReason, "%")) return; sprintf(message, "[REPORT]<%s> - %s : %s", pObj->GetCharInfo()->m_szName, pName, pReason); MCommand* pCmd = CreateCommand(MC_MATCH_ANNOUNCE, MUID(0,0)); pCmd->AddParameter(new MCommandParameterUInt(0)); pCmd->AddParameter(new MCommandParameterString(message)); } }
void CCQuestPlayerManager::Create(CCMatchStage* pStage) { m_pStage = pStage; for (CCUIDRefCache::iterator itorObj = pStage->GetObjBegin(); itorObj != pStage->GetObjEnd(); ++itorObj) { CCUID uidChar = (*itorObj).first; CCMatchObject* pObj = CCMatchServer::GetInstance()->GetObject(uidChar); if (IsAdminGrade(pObj) && pObj->CheckPlayerFlags(CCTD_PlayerFlags_AdminHide)) continue; AddPlayer(uidChar); } }
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); } }
void MMatchServer::OnAdminPingToAll(const MUID& uidAdmin) { MMatchObject* pObj = GetObject(uidAdmin); if (pObj == NULL) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } MCommand* pNew = CreateCommand(MC_NET_PING, MUID(0,0)); pNew->AddParameter(new MCmdParamUInt(GetGlobalClockCount())); RouteToAllConnection(pNew); }
void MMatchServer::OnStop(const MUID& uidSender, const char* pName) { MMatchObject* pObj = GetObject(uidSender); if (pObj && IsAdminGrade(pObj)) { MMatchObject* pTarget = GetPlayerByName(pName); if (pTarget) { MCommand* pCmd = CreateCommand(MC_ADMIN_STOP, MUID(0,0)); pCmd->AddParameter(new MCmdParamStr(pName)); RouteToListener(pTarget, pCmd); } LogCommand("stop", pObj->GetCharInfo()->m_szName, ""); } }
bool ZChatCmdManager::DoCommand(char* szLine, ZChatCmdFlag nCurrFlag, unsigned long nInputFlag) { if ((szLine == 0) || (szLine[0] == 0)) return false; ZChatCmdArgvInfo ai; memset(&ai, 0, sizeof(ZChatCmdArgvInfo)); ZChatCmd* pCmd = MakeArgv(szLine, &ai); if (pCmd != NULL) { // 관리자 명령어일때 처리 if (pCmd->GetFlag() & CCF_ADMIN) { if ((nInputFlag & CIF_ADMIN) == false) return false; } // 테스트 명령어일때 처리 else if (pCmd->GetFlag() & CCF_TEST) { if ((nInputFlag & CIF_TESTER) == false) return false; } // Common if ( pCmd->GetFlag() & nCurrFlag) { pCmd->OnProc(szLine, ai.cargc, ai.cargv); return true; } // Admin else if ( (CIF_ADMIN & nInputFlag) && (pCmd->GetFlag() & CCF_ADMIN)) { if ( IsAdminGrade(ZGetMyInfo()->GetUGradeID()) ) { pCmd->OnProc(szLine, ai.cargc, ai.cargv); return true; } } // Test else if ( (CIF_TESTER & nInputFlag) && (pCmd->GetFlag() & CCF_TEST)) { pCmd->OnProc(szLine, ai.cargc, ai.cargv); return true; } } return false; }
void MMatchServer::OnAdminRequestSwitchLadderGame(const MUID& uidAdmin, const bool bEnabled) { MMatchObject* pObj = GetObject(uidAdmin); if (!IsEnabledObject(pObj)) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } MGetServerConfig()->SetEnabledCreateLadderGame(bEnabled); char szMsg[256] = "설정되었습니다."; Announce(pObj, szMsg); }
void MMatchServer::OnAdminRequestServerInfo(const MUID& uidAdmin) { MMatchObject* pObj = GetObject(uidAdmin); if (pObj == NULL) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } // 서버 정보 보여주는것 아직 안넣었음 /* MCommand* pNew = CreateCommand(MC_MATCH_ANNOUNCE, MUID(0,0)); pNew->AddParameter(new MCmdParamUInt(0)); RouteToListener(pObj, pNew); */ }
void MMatchServer::OnAdminForumAnnounce(const MUID& uidAdmin, const char* szChat) { MMatchObject* pObj = GetObject(uidAdmin); if (pObj == NULL) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } char szMsg[256]; strcpy(szMsg, szChat); MCommand* pCmd = CreateCommand(MC_ADMIN_FORUM_ANNOUNCE, MUID(0,0)); pCmd->AddParameter(new MCmdParamUID(uidAdmin)); pCmd->AddParameter(new MCmdParamStr(szMsg)); RouteToAllClient(pCmd); }
void MMatchServer::OnAdminTerminal(const MUID& uidAdmin, const char* szText) { MMatchObject* pObj = GetObject(uidAdmin); if (pObj == NULL) return; // 관리자 권한을 가진 사람이 아니면 연결을 끊는다. if (!IsAdminGrade(pObj)) { // DisconnectObject(uidAdmin); return; } char szOut[32768]; szOut[0] = 0; if (m_Admin.Execute(uidAdmin, szText)) { MCommand* pNew = CreateCommand(MC_ADMIN_TERMINAL, MUID(0,0)); pNew->AddParameter(new MCmdParamUID(MUID(0,0))); pNew->AddParameter(new MCmdParamStr(szOut)); RouteToListener(pObj, pNew); } }
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); } } }