#include "stdafx.h" #include "Commend.h" #include #include #include "AttemperEngineSink.h" #include //头文件 #include "ShowTime.h" #include "..\..\..\Games\Normal\松滋晃晃血流\消息定义\CMD_Sparrow.h" #ifdef _DEBUG int Commend::m_iLogLevel = Commend::ENUM_LOG_LEVEL_DEBUG; #else int Commend::m_iLogLevel = Commend::ENUM_LOG_LEVEL_RUN; #endif CString Commend::m_Patch; HANDLE Commend::m_hThread = NULL; unsigned Commend::m_uiThreadID = 0; bool Commend::m_bRun = true;// 关闭日志写入 Commend::enLogStatus Commend::m_enStatus = Commend::ENUM_LOG_INIT; std::unordered_map Commend::Log; Commend::Commend(void) { //程序目录 TCHAR szPath[MAX_PATH]; HMODULE hModule = NULL; GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (TCHAR*)&LogRuns,//可以是任何函数,全局变量等的地址 &hModule); if (!GetModuleFileName(hModule, szPath, MAX_PATH)) { //OutputDebugString(_T("【进程】GetModuleFileName失败")); return; } CString strDir = szPath; CString strLog; int nPos = strDir.ReverseFind(_T('\\')); if (nPos == -1) { //OutputDebugString(_T("【进程】GetModuleFileName取得信息异常。")); return; } strDir = strDir.Mid(0, nPos); m_Patch.Format(_T("%s\\%s"), strDir, _T("log\\")); if (m_hThread != NULL) return; m_hThread = (HANDLE)_beginthreadex(NULL, 0, &Commend::LogRuns, NULL, 0, &m_uiThreadID); } Commend::~Commend(void) { m_bRun = false; m_enStatus = ENUM_LOG_EXITING; for (int i = 0; i < 50; i++) { Sleep(3000); if (m_enStatus == ENUM_LOG_EXITED) { return; } } } CCriticalSection Commend::m_CriticalSection; //添加日志 void Commend::AddLog(DWORD dPriateTable, CString LogText) { CWHDataLocker lock(m_CriticalSection);// if (Log.find(dPriateTable) == Log.end()) { Log[dPriateTable] = LogText; } else { CString csTest = Log[dPriateTable]; Log[dPriateTable] = csTest + LogText; } } //获取日志 std::unordered_map Commend::GetLog() { CWHDataLocker lock(m_CriticalSection);// std::unordered_map Ret = Log; Log.clear(); return Ret; } //参数转成字符串 CString Commend::ToString(WORD wMainCmdID, WORD wCmdTable, const void* pBuffer) { CString csRet = _T(""); csRet = ToName(wMainCmdID, wCmdTable); if (csRet == _T("")) return csRet; switch (wMainCmdID) { case MDM_GR_USER: //用户命令 { switch (wCmdTable) { case SUB_GR_USER_GET_BANGDING: //绑定代理 { return CString(_TEXT("绑定代理")); } case SUB_GR_USER_GET_DINGDAN: //请求订单 { return CString(_TEXT("请求订单")); } case SUB_GR_USER_GET_DINGDAN_NEW: //请求订单 { return CString(_TEXT("新方式请求订单")); } case SUB_GR_USER_GET_DINGDANLIST: //获取购买记录 { return CString(_TEXT("获取购买记录")); } case SUB_GR_USER_GETADD_INFO: //获取加入房间的信息 { return CString(_TEXT("获取加入房间的信息")); } case SUB_GR_USER_RULE: //用户规则 { return CString(_TEXT("")); } case SUB_GR_USER_STATUS: //用户状态 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_LogonMobile*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_LOOKON: //用户旁观 { return CString(_TEXT("用户命令->用户旁观")); } case SUB_GR_USER_SEAT_ACK: { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_UserSitAck*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_SITDOWN: //用户坐下 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserSitDown*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_STANDUP: //用户起立 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserStandUp*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_CHAT: //用户聊天 { return CString(_TEXT("用户命令->用户聊天")); } case SUB_GR_USER_EXPRESSION: //用户表情 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_C_UserExpression*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_WISPER_CHAT: //用户私聊 { return CString(_TEXT("用户命令->用户私聊")); } case SUB_GR_WISPER_EXPRESSION: //私聊表情 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_C_WisperExpression*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } //case SUB_GR_PROPERTY_BUY: //购买道具 //{ // return CString(_TEXT("用户命令->购买道具")); //} case SUB_GR_PROPERTY_TRUMPET: //喇叭道具 { return CString(_TEXT("用户命令->喇叭道具")); } //case SUB_GR_USER_INVITE_REQ: //邀请用户 //{ // return CString(_TEXT("用户命令->邀请用户")); //} //case SUB_GR_USER_REPULSE_SIT: //拒绝厌友 //{ // return CString(_TEXT("用户命令->拒绝厌友")); //} //case SUB_GR_USER_KICK_USER: //踢出用户 //{ // return CString(_TEXT("用户命令->踢出用户")); //} case SUB_GR_USER_INFO_REQ: //请求用户信息 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserInfoReq*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_CHAIR_REQ: //请求更换位置 { return CString(_TEXT("用户命令->请求更换位置")); } case SUB_GR_USER_CHAIR_INFO_REQ: //请求椅子用户信息 { return CString(_TEXT("用户命令->请求椅子用户信息")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST: { //OnTCPSocketGetUserGameTempScoreRankList(pData, wDataSize, dwSocketID); return CString(_TEXT("用户命令->获取战绩列表")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY: { return CString(_TEXT("用户命令->获取回放记录")); } case SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST: { return CString(_TEXT("用户命令->获取临时积分排行榜")); } case SUB_GR_USER_CHECK_NAME: { return CString(_TEXT("用户命令->实名认证")); } case SUB_GR_USER_CHECK_NAME_QUERY: { return CString(_TEXT("用户命令->实名认证查询")); } case SUB_GR_USER_CREATE://创建房间 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserSitDown*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_ADD: //加入房间 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserJoin*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_SEAT: //玩家坐下请求 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); ((CMD_GR_UserSeat*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_ENTER://用户进入 { TCHAR szTemp[BUFFERLEN * 3]; ZeroMemory(szTemp, BUFFERLEN * 3 * sizeof(TCHAR)); if (pBuffer) ((tagMobileUserInfoHead*)pBuffer)->ToString(szTemp, BUFFERLEN * 3, 0); return CString(szTemp); } case SUB_GR_USER_MYROOM_UPDATA: { //TCHAR szTemp[BUFFERLEN]; //ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); //if (pBuffer) ((JN_GR_RoomListEx*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); //return CString(szTemp); } case SUB_GR_USER_ADDCREATE_TABLE_ALL: { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((JN_GR_RoomListGroupEx*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_ADDCREATE_TABLE_ID: { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_UserSitDownAckEx*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_USER_BEAN: { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_UserBean*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_LOGON: //登录命令 { switch (wCmdTable) { case SUB_GR_LOGON_USERID: //I D 登录 { return CString(_TEXT("登录命令->I D 登录")); } case SUB_GR_LOGON_MOBILE: //手机登录 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_LogonMobile*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_LOGON_ACCOUNTS: //帐号登录 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_LogonAccounts*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_LOGON_FINISH://登陆完成 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_LogonFinish*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("登陆命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GF_GAME: //游戏命令 { //return CString(_T("游戏内部指令")); TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } case MDM_GF_FRAME: //框架命令 { switch (wCmdTable) { case SUB_GF_GAME_OPTION: //游戏配置 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GF_GameOption*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GF_USER_READY: //用户准备 { return CString(_TEXT("框架命令->用户准备")); } case SUB_GF_USER_CHAT: //用户聊天 { return CString(_TEXT("框架命令->用户聊天")); } case SUB_GF_USER_EXPRESSION: //用户表情 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_S_UserExpression*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GF_LOOKON_CONFIG: //旁观配置 { return CString(_TEXT("框架命令->旁观配置")); } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } //case MDM_GR_INSURE: //银行命令 //case MDM_GR_TASK: //任务命令 //case MDM_GR_EXCHANGE: //兑换命令 case MDM_GR_MANAGE: //管理命令 { switch (wCmdTable) { case SUB_GR_QUERY_OPTION: //查询设置 { return CString(_TEXT("管理命令->查询设置")); } case SUB_GR_OPTION_SERVER: //房间设置 { return CString(_TEXT("管理命令->房间设置")); } case SUB_GR_KILL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;// OnTCPNetworkSubManagerKickUser(pData, wDataSize, dwSocketID); } case SUB_GR_LIMIT_USER_CHAT: //限制聊天 { return CString(_TEXT("管理命令->限制聊天"));;//OnTCPNetworkSubLimitUserChat(pData, wDataSize, dwSocketID); } case SUB_GR_KICK_ALL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;//OnTCPNetworkSubKickAllUser(pData, wDataSize, dwSocketID); } case SUB_GR_SEND_MESSAGE: //发布消息 { return CString(_TEXT("管理命令->发布消息")); } case SUB_GR_DISMISSGAME: //管理员强制解散游戏 { return CString(_TEXT("管理命令->管理员强制解散游戏")); } case SUB_GR_DELETE_PRIVATE_TABLE_REQ: //请求删除私有房间 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_DELETE_PRIVATE_ROOM_REQ*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_DELETE_PRIVATE_TABLE_RESP://请求删除私有房间响应消息 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_DELETE_PRIVATE_ROOM_RESP*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } case SUB_GR_SEND_WARNING: //警告用户 { TCHAR szTemp[BUFFERLEN]; ZeroMemory(szTemp, BUFFERLEN*sizeof(TCHAR)); if (pBuffer) ((CMD_GR_SendWarning*)pBuffer)->ToString(szTemp, BUFFERLEN, 0); return CString(szTemp); } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_MATCH: //比赛命令 { } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } return csRet; } //名字 CString Commend::ToName(WORD wMainCmdID, WORD wCmdTable, void* pGetGameString) { CString csRet = _T(""); switch (wMainCmdID) { case MDM_GR_USER: //用户命令 { switch (wCmdTable) { case SUB_GR_USER_GET_BANGDING: //绑定代理 { return CString(_TEXT("绑定代理")); } case SUB_GR_USER_QINGQIUJIESAN: { return CString(_TEXT("用户命令->房主请求解散")); } case SUB_GR_USER_GET_BEAN: { return CString(_TEXT("用户命令->请求元宝")); } case SUB_GR_USER_RULE: //用户规则 { return CString(_TEXT("用户命令->用户规则")); } case SUB_GR_USER_SEAT_ACK: { return CString(_TEXT("用户命令->玩家坐下请求应答")); } case SUB_GR_USER_STATUS: //用户状态 { return CString(_TEXT("用户命令->用户状态")); } case SUB_GR_USER_LOOKON: //用户旁观 { return CString(_TEXT("用户命令->用户旁观")); } case SUB_GR_USER_SITDOWN: //用户坐下 { return CString(_TEXT("用户命令->用户坐下")); } case SUB_GR_USER_STANDUP: //用户起立 { return CString(_TEXT("用户命令->用户起立")); } case SUB_GR_USER_CHAT: //用户聊天 { return CString(_TEXT("用户命令->用户聊天")); } case SUB_GR_USER_EXPRESSION: //用户表情 { return CString(_TEXT("用户命令->用户表情")); } case SUB_GR_WISPER_CHAT: //用户私聊 { return CString(_TEXT("用户命令->用户私聊")); } case SUB_GR_WISPER_EXPRESSION: //私聊表情 { return CString(_TEXT("用户命令->私聊表情")); } //case SUB_GR_PROPERTY_BUY: //购买道具 //{ // return CString(_TEXT("用户命令->购买道具")); //} case SUB_GR_PROPERTY_TRUMPET: //喇叭道具 { return CString(_TEXT("用户命令->喇叭道具")); } //case SUB_GR_USER_INVITE_REQ: //邀请用户 //{ // return CString(_TEXT("用户命令->邀请用户")); //} //case SUB_GR_USER_REPULSE_SIT: //拒绝厌友 //{ // return CString(_TEXT("用户命令->拒绝厌友")); //} //case SUB_GR_USER_KICK_USER: //踢出用户 //{ // return CString(_TEXT("用户命令->踢出用户")); //} case SUB_GR_USER_INFO_REQ: //请求用户信息 { return CString(_TEXT("用户命令->请求用户信息")); } case SUB_GR_USER_CHAIR_REQ: //请求更换位置 { return CString(_TEXT("用户命令->请求更换位置")); } case SUB_GR_USER_CHAIR_INFO_REQ: //请求椅子用户信息 { return CString(_TEXT("用户命令->请求椅子用户信息")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST: { //OnTCPSocketGetUserGameTempScoreRankList(pData, wDataSize, dwSocketID); return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY")); } case SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST")); } case SUB_GR_USER_CREATE://创建房间 { return CString(_TEXT("用户命令->创建房间")); } case SUB_GR_USER_ADD: //加入房间 { return CString(_TEXT("用户命令->加入房间")); } case SUB_GR_USER_SEAT: //玩家坐下请求 { return CString(_TEXT("用户命令->玩家坐下请求")); } case SUB_GR_USER_MYROOM_UPDATA: //玩家坐下请求 { return CString(_TEXT("用户命令->玩家拥有的房间状态更新")); } case SUB_GR_USER_ADDCREATE_TABLE_ALL: { return CString(_TEXT("用户命令->通知创建的所有房间列表")); } case SUB_GR_USER_ADDCREATE_TABLE_ID: { return CString(_TEXT("用户命令->创建加入房间应答")); } case SUB_GR_USER_BEAN: { return CString(_TEXT("用户命令->元宝信息")); } //default: // return CString(_TEXT("用户命令->未知协议")); default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_CONFIG : //配置信息 { switch (wCmdTable) { case SUB_GR_CONFIG_COLUMN: //列表配置 { return CString(_TEXT("配置信息->列表配置")); } case SUB_GR_CONFIG_SERVER: //房间配置 { return CString(_TEXT("配置信息->房间配置")); } case SUB_GR_CONFIG_PROPERTY: //道具配置 { return CString(_TEXT("配置信息->道具配置")); } case SUB_GR_CONFIG_FINISH://配置完成 { return CString(_TEXT("配置信息->配置完成")); } //default: // return CString(_TEXT("配置信息->未知协议")); default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_LOGON: //登录命令 { switch (wCmdTable) { case SUB_GR_LOGON_USERID: //I D 登录 { return CString(_TEXT("登录命令->I D 登录")); } case SUB_GR_LOGON_MOBILE: //手机登录 { return CString(_TEXT("登录命令->手机登录")); } case SUB_GR_LOGON_ACCOUNTS: //帐号登录 { return CString(_TEXT("登录命令->帐号登录")); } case SUB_GR_LOGON_FINISH://登陆完成 { return CString(_TEXT("登录命令->登陆完成")); } case SUB_GR_USER_ENTER://用户进入 { return CString(_TEXT("登录命令->用户进入")); } //default: // return CString(_TEXT("登录命令->未知协议")); default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GF_GAME: //游戏命令 { TCHAR szBuffer[BUFFERLEN * 3]; ZeroMemory(szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); typedef bool(__stdcall*SubGetStringType)(WORD, const void*, int, void*, int); if (pGetGameString) { SubGetStringType pFuntion = (SubGetStringType)pGetGameString; pFuntion(wCmdTable, 0, 0, szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); } else { StringCchCopy(szBuffer, BUFFERLEN, _T("游戏内部指令")); } return CString(szBuffer); } case MDM_GF_FRAME: //框架命令 { switch (wCmdTable) { case SUB_GF_GAME_OPTION: //游戏配置 { return CString(_TEXT("框架命令->游戏配置")); } case SUB_GF_USER_READY: //用户准备 { return CString(_TEXT("框架命令->用户准备")); } case SUB_GF_USER_CHAT: //用户聊天 { return CString(_TEXT("框架命令->用户聊天")); } case SUB_GF_USER_EXPRESSION: //用户表情 { return CString(_TEXT("框架命令->用户表情")); } case SUB_GF_LOOKON_CONFIG: //旁观配置 { return CString(_TEXT("框架命令->旁观配置")); } //default: // return CString(_TEXT("框架命令->未知协议")); default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } //case MDM_GR_INSURE: //银行命令 //case MDM_GR_TASK: //任务命令 //case MDM_GR_EXCHANGE: //兑换命令 case MDM_GR_MANAGE: //管理命令 { switch (wCmdTable) { case SUB_GR_QUERY_OPTION: //查询设置 { return CString(_TEXT("管理命令->查询设置")); } case SUB_GR_OPTION_SERVER: //房间设置 { return CString(_TEXT("管理命令->房间设置")); } case SUB_GR_KILL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;// OnTCPNetworkSubManagerKickUser(pData, wDataSize, dwSocketID); } case SUB_GR_LIMIT_USER_CHAT: //限制聊天 { return CString(_TEXT("管理命令->限制聊天"));;//OnTCPNetworkSubLimitUserChat(pData, wDataSize, dwSocketID); } case SUB_GR_KICK_ALL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;//OnTCPNetworkSubKickAllUser(pData, wDataSize, dwSocketID); } case SUB_GR_SEND_MESSAGE: //发布消息 { return CString(_TEXT("管理命令->发布消息")); } case SUB_GR_DISMISSGAME: //管理员强制解散游戏 { return CString(_TEXT("管理命令->管理员强制解散游戏")); } case SUB_GR_DELETE_PRIVATE_TABLE_REQ: //请求删除私有房间 { return CString(_TEXT("管理命令->请求删除私有房间")); } case SUB_GR_DELETE_PRIVATE_TABLE_RESP://请求删除私有房间响应消息 { return CString(_TEXT("管理命令->请求删除私有房间响应消息")); } case SUB_GR_SEND_WARNING: //警告用户 { return CString(_TEXT("管理命令->警告用户")); } //default: // return CString(_TEXT("管理命令->未知协议")); default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_MATCH: //比赛命令 { } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } return csRet; } CString Commend::ToNameEx(WORD wMainCmdID, WORD wCmdTable, const void* pBuffer, int iLen, void* pGetGameString) { CString csRet = _T(""); switch (wMainCmdID) { case MDM_GR_USER: //用户命令 { switch (wCmdTable) { case SUB_GR_USER_GET_BANGDING://用户进入 { return CString(_TEXT("用户命令->绑定代理")); } case SUB_GR_USER_GET_BANGDINGACK://用户进入 { return CString(_TEXT("用户命令->绑定代理应答")); } case SUB_GR_USER_ENTER://用户进入 { return CString(_TEXT("登录命令->用户进入")); } case SUB_GR_USER_GET_DINGDAN: { return CString(_TEXT("用户命令->获取微信订单")); } case SUB_GR_USER_GET_DINGDAN_NEW: { return CString(_TEXT("用户命令->其他通道获取微信订单")); } case SUB_GR_USER_GET_DINGDANACK: { return CString(_TEXT("用户命令->获取微信订单应答")); } case SUB_GR_USER_QINGQIUJIESAN: { return CString(_TEXT("用户命令->房主请求解散")); } case SUB_GR_USER_GET_BEAN: { return CString(_TEXT("用户命令->请求元宝")); } case SUB_GR_USER_RULE: //用户规则 { return CString(_TEXT("用户命令->用户规则")); } case SUB_GR_USER_SEAT_ACK: { return CString(_TEXT("用户命令->玩家坐下请求应答")); } case SUB_GR_USER_STATUS: //用户状态 { return CString(_TEXT("用户命令->用户状态")); } case SUB_GR_USER_LOOKON: //用户旁观 { return CString(_TEXT("用户命令->用户旁观")); } case SUB_GR_USER_SITDOWN: //用户坐下 { return CString(_TEXT("用户命令->用户坐下")); } case SUB_GR_USER_STANDUP: //用户起立 { return CString(_TEXT("用户命令->用户起立")); } case SUB_GR_USER_CHAT: //用户聊天 { return CString(_TEXT("用户命令->用户聊天")); } case SUB_GR_USER_EXPRESSION: //用户表情 { return CString(_TEXT("用户命令->用户表情")); } case SUB_GR_WISPER_CHAT: //用户私聊 { return CString(_TEXT("用户命令->用户私聊")); } case SUB_GR_WISPER_EXPRESSION: //私聊表情 { return CString(_TEXT("用户命令->私聊表情")); } //case SUB_GR_PROPERTY_BUY: //购买道具 //{ // return CString(_TEXT("用户命令->购买道具")); //} case SUB_GR_PROPERTY_TRUMPET: //喇叭道具 { return CString(_TEXT("用户命令->喇叭道具")); } //case SUB_GR_USER_INVITE_REQ: //邀请用户 //{ // return CString(_TEXT("用户命令->邀请用户")); //} //case SUB_GR_USER_REPULSE_SIT: //拒绝厌友 //{ // return CString(_TEXT("用户命令->拒绝厌友")); //} //case SUB_GR_USER_KICK_USER: //踢出用户 //{ // return CString(_TEXT("用户命令->踢出用户")); //} case SUB_GR_USER_INFO_REQ: //请求用户信息 { return CString(_TEXT("用户命令->请求用户信息")); } case SUB_GR_USER_CHAIR_REQ: //请求更换位置 { return CString(_TEXT("用户命令->请求更换位置")); } case SUB_GR_USER_CHAIR_INFO_REQ: //请求椅子用户信息 { return CString(_TEXT("用户命令->请求椅子用户信息")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST: { //OnTCPSocketGetUserGameTempScoreRankList(pData, wDataSize, dwSocketID); return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO")); } case SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY")); } case SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST: { return CString(_TEXT("用户命令->SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST")); } case SUB_GR_USER_CREATE://创建房间 { return CString(_TEXT("用户命令->创建房间")); } case SUB_GR_USER_ADD: //加入房间 { return CString(_TEXT("用户命令->加入房间")); } case SUB_GR_USER_SEAT: //玩家坐下请求 { return CString(_TEXT("用户命令->玩家坐下请求")); } case SUB_GR_USER_MYROOM_UPDATA: //玩家坐下请求 { return CString(_TEXT("用户命令->玩家拥有的房间状态更新")); } case SUB_GR_USER_ADDCREATE_TABLE_ALL: { return CString(_TEXT("用户命令->通知创建的所有房间列表")); } case SUB_GR_USER_ADDCREATE_TABLE_ID: { return CString(_TEXT("用户命令->创建加入房间应答")); } case SUB_GR_USER_BEAN: { return CString(_TEXT("用户命令->元宝信息")); } case SUB_GR_USER_CHECK_NAME: { return CString(_TEXT("用户命令->实名认证")); } case SUB_GR_USER_CHECK_NAME_QUERY: { return CString(_TEXT("用户命令->实名认证查询")); } //default: //{ // CString csTest; // csTest.Format(L"用户命令->未知协议%d", wCmdTable); // return CString(csTest); //} default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_CONFIG: //配置信息 { switch (wCmdTable) { case SUB_GR_CONFIG_COLUMN: //列表配置 { return CString(_TEXT("配置信息->列表配置")); } case SUB_GR_CONFIG_SERVER: //房间配置 { return CString(_TEXT("配置信息->房间配置")); } case SUB_GR_CONFIG_PROPERTY: //道具配置 { return CString(_TEXT("配置信息->道具配置")); } case SUB_GR_CONFIG_FINISH://配置完成 { return CString(_TEXT("配置信息->配置完成")); } //default: //{ // CString csTest; // csTest.Format(L"配置信息->未知协议%d", wCmdTable); // return CString(csTest); //} default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_LOGON: //登录命令 { switch (wCmdTable) { case SUB_GR_LOGON_USERID: //I D 登录 { return CString(_TEXT("登录命令->I D 登录")); } case SUB_GR_LOGON_MOBILE: //手机登录 { return CString(_TEXT("登录命令->手机登录")); } case SUB_GR_LOGON_ACCOUNTS: //帐号登录 { return CString(_TEXT("登录命令->帐号登录")); } case SUB_GR_LOGON_FINISH://登陆完成 { return CString(_TEXT("登录命令->游戏登陆完成")); } //default: //{ // CString csTest; // csTest.Format(L"登录命令->未知协议%d", wCmdTable); // return CString(csTest); //} default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GF_GAME: //游戏命令 { TCHAR szBuffer[BUFFERLEN * 3]; ZeroMemory(szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); typedef bool(__stdcall*SubGetStringType)(WORD, const void*, int, void*, int); if (pGetGameString) { SubGetStringType pFuntion = (SubGetStringType)pGetGameString; pFuntion(wCmdTable, pBuffer, iLen, szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); } else { StringCchCopy(szBuffer, BUFFERLEN, _T("游戏内部指令")); } return CString(szBuffer); } case MDM_GF_FRAME: //框架命令 { switch (wCmdTable) { case SUB_GF_SYSTEM_MESSAGE: //游戏配置 { return CString(_TEXT("框架命令->系统消息")); } case SUB_GF_GAME_OPTION: //游戏配置 { return CString(_TEXT("框架命令->游戏配置")); } case SUB_GF_USER_READY: //用户准备 { return CString(_TEXT("框架命令->用户准备")); } case SUB_GF_USER_CHAT: //用户聊天 { return CString(_TEXT("框架命令->用户聊天")); } case SUB_GF_USER_EXPRESSION: //用户表情 { return CString(_TEXT("框架命令->用户表情")); } case SUB_GF_LOOKON_CONFIG: //旁观配置 { return CString(_TEXT("框架命令->旁观配置")); } //default: //{ // CString csTest; // csTest.Format(L"框架命令->未知协议%d", wCmdTable); // return CString(csTest); //} default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } //case MDM_GR_INSURE: //银行命令 //case MDM_GR_TASK: //任务命令 //case MDM_GR_EXCHANGE: //兑换命令 case MDM_GR_MANAGE: //管理命令 { switch (wCmdTable) { case SUB_GR_QUERY_OPTION: //查询设置 { return CString(_TEXT("管理命令->查询设置")); } case SUB_GR_OPTION_SERVER: //房间设置 { return CString(_TEXT("管理命令->房间设置")); } case SUB_GR_KILL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;// OnTCPNetworkSubManagerKickUser(pData, wDataSize, dwSocketID); } case SUB_GR_LIMIT_USER_CHAT: //限制聊天 { return CString(_TEXT("管理命令->限制聊天"));;//OnTCPNetworkSubLimitUserChat(pData, wDataSize, dwSocketID); } case SUB_GR_KICK_ALL_USER: //踢出用户 { return CString(_TEXT("管理命令->踢出用户"));;//OnTCPNetworkSubKickAllUser(pData, wDataSize, dwSocketID); } case SUB_GR_SEND_MESSAGE: //发布消息 { return CString(_TEXT("管理命令->发布消息")); } case SUB_GR_DISMISSGAME: //管理员强制解散游戏 { return CString(_TEXT("管理命令->管理员强制解散游戏")); } case SUB_GR_DELETE_PRIVATE_TABLE_REQ: //请求删除私有房间 { return CString(_TEXT("管理命令->请求删除私有房间")); } case SUB_GR_DELETE_PRIVATE_TABLE_RESP://请求删除私有房间响应消息 { return CString(_TEXT("管理命令->请求删除私有房间响应消息")); } case SUB_GR_SEND_WARNING: //警告用户 { return CString(_TEXT("管理命令->警告用户")); } //default: //{ // CString csTest; // csTest.Format(L"管理命令->未知协议%d", wCmdTable); // return CString(csTest); //} default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } } case MDM_GR_MATCH: //比赛命令 { } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, 0); return CString(szBuffer); } } return csRet; } //打印通讯日志 void Commend::ToShow(VOID* Frame, WORD wMainCmdID, WORD wCmdTable, const void* pBuffer, int iLen, DWORD dTablePrivate, DWORD dUserID, PVOID pGetGameString, bool bSend) { CAttemperEngineSink* pCAttemperEngineSink = (CAttemperEngineSink*)Frame; if (dUserID != 0 && pCAttemperEngineSink->IsJC(dUserID)) { CString csFunName = ToNameEx(wMainCmdID, wCmdTable, pBuffer, iLen, pGetGameString); CShowTime Show(csFunName, bSend, wMainCmdID, wCmdTable); } switch (wMainCmdID) { case MDM_GR_CONFIG: //配置信息 { switch (wCmdTable) { case SUB_GR_CONFIG_COLUMN: //列表配置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("列表配置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_CONFIG_SERVER: //房间配置 { if (pBuffer) ((CMD_GR_ConfigServer*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("房间配置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_CONFIG_PROPERTY: //道具配置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("道具配置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_CONFIG_FINISH://配置完成 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("配置完成")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } default: TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("配置信息->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } case MDM_GR_USER: //用户命令 { switch (wCmdTable) { case SUB_GR_USER_RULE: //用户规则 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户规则")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_STATUS: //用户状态 { if (pBuffer) ((CMD_GR_UserStatus*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户状态")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_LOOKON: //用户旁观 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户旁观")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_SITDOWN: //用户坐下 { if (pBuffer) ((CMD_GR_UserSitDown*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户坐下")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_STANDUP: //用户起立 { if (pBuffer) ((CMD_GR_UserStandUp*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户起立")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_CHAT: //用户聊天 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户聊天")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_EXPRESSION: //用户表情 { if (pBuffer) ((CMD_GR_C_UserExpression*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } case SUB_GR_WISPER_CHAT: //用户私聊 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户私聊")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_WISPER_EXPRESSION: //私聊表情 { if (pBuffer) ((CMD_GR_C_WisperExpression*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("私聊表情")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } //case SUB_GR_PROPERTY_BUY: //购买道具 //{ // TCHAR szBuffer[BUFFERLEN]; // ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); // StringCchCopy(szBuffer, BUFFERLEN, _T("购买道具")); // mylog::ToSet(szBuffer, BUFFERLEN, dUserID); // mylog::OutputString(szBuffer, dTablePrivate); // return; //} case SUB_GR_PROPERTY_TRUMPET: //喇叭道具 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("喇叭道具")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } //case SUB_GR_USER_INVITE_REQ: //邀请用户 //{ // TCHAR szBuffer[BUFFERLEN]; // ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); // StringCchCopy(szBuffer, BUFFERLEN, _T("邀请用户")); // mylog::ToSet(szBuffer, BUFFERLEN, dUserID); // mylog::OutputString(szBuffer, dTablePrivate); // return; //} //case SUB_GR_USER_REPULSE_SIT: //拒绝厌友 //{ // TCHAR szBuffer[BUFFERLEN]; // ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); // StringCchCopy(szBuffer, BUFFERLEN, _T("拒绝厌友")); // mylog::ToSet(szBuffer, BUFFERLEN, dUserID); // mylog::OutputString(szBuffer, dTablePrivate); // return; //} //case SUB_GR_USER_KICK_USER: //踢出用户 //{ // TCHAR szBuffer[BUFFERLEN]; // ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); // StringCchCopy(szBuffer, BUFFERLEN, _T("踢出用户")); // mylog::ToSet(szBuffer, BUFFERLEN, dUserID); // mylog::OutputString(szBuffer, dTablePrivate); // return; //} case SUB_GR_USER_INFO_REQ: //请求用户信息 { if (pBuffer) ((CMD_GR_UserInfoReq*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("请求用户信息")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_CHAIR_REQ: //请求更换位置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("请求更换位置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_CHAIR_INFO_REQ: //请求椅子用户信息 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("请求椅子用户信息")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_GET_GAME_SCORE_RECORD_LIST: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("获取牌桌游戏数据简要列表")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_GET_GAME_SCORE_RECORD_DETAIL_INFO: { return; } case SUB_GR_USER_GET_GAME_SCORE_RECORD_REPLAY: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("获取回放记录")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_GET_GAME_TEMP_SCORE_RANKLIST: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("获取临时积分排行榜")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_USER_CREATE://创建房间 { if (pBuffer) ((CMD_GR_UserSitDown*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("创建房间")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_ADD: //加入房间 { if (pBuffer) ((CMD_GR_UserJoin*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("加入房间")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_SEAT: //玩家坐下请求 { if (pBuffer) ((CMD_GR_UserSeat*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("玩家坐下请求")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_SEAT_ACK: { if (pBuffer) ((CMD_GR_UserSitAck*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("玩家坐下请求应答")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_ENTER://登陆完成 { if (pBuffer) ((tagMobileUserInfoHead*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户进入")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_MYROOM_UPDATA: { if (pBuffer) ((JN_GR_RoomListEx*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("玩家拥有的房间状态更新")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_ADDCREATE_TABLE_ALL: { if (pBuffer) ((JN_GR_RoomListGroupEx*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("通知创建的所有房间列表")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_ADDCREATE_TABLE_ID: { if (pBuffer) ((CMD_GR_UserSitDownAckEx*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("创建加入房间应答")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_GET_BANGDING://绑定代理 { if (pBuffer) ((CMD_GR_BangDing*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->绑定代理")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_GET_BANGDINGACK://绑定代理应答 { if (pBuffer) ((CMD_GR_BangDingACK*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->绑定代理应答")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_GET_DINGDAN: //获取微信订单 { if (pBuffer) ((CMD_GR_GetDingDan*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->获取微信订单")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_GET_DINGDAN_NEW: //新方式获取微信订单 { if (pBuffer) ((CMD_GR_GetDingDanNEW*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->获取微信订单")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_CHECK_NAME: //实名认证 { if (pBuffer) ((CMD_GR_CheckName*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->实名认证")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_CHECK_NAME_QUERY: //实名认证 { if (pBuffer) ((CMD_GR_CheckName*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->实名认证查询")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_USER_GET_DINGDANACK: //获取微信订单应答 { if (pBuffer) ((CMD_GR_ZFXC*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->获取微信订单应答")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } } case SUB_GR_USER_BEAN: { if (pBuffer) ((CMD_GR_UserBean*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户游戏豆")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("用户命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } } case MDM_GR_LOGON: //登录命令 { switch (wCmdTable) { case SUB_GR_LOGON_USERID: //I D 登录 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("I D 登录")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_LOGON_MOBILE: //手机登录 { if (pBuffer) { CMD_GR_LogonMobile * pLogonMobile = (CMD_GR_LogonMobile *)pBuffer; ((CMD_GR_LogonMobile*)pBuffer)->ToShow(dTablePrivate, pLogonMobile->dwUserID); } else { CMD_GR_LogonMobile * pLogonMobile = (CMD_GR_LogonMobile *)pBuffer; TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("手机登录")); mylog::ToSet(szBuffer, BUFFERLEN, pLogonMobile->dwUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_LOGON_ACCOUNTS: //帐号登录 { if (pBuffer) ((CMD_GR_LogonAccounts*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("帐号登录")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_LOGON_FINISH://登陆完成 { if (pBuffer) ((CMD_GR_LogonFinish*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("登陆完成")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("登陆命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } } case MDM_GF_GAME: //游戏命令 { TCHAR szBuffer[BUFFERLEN*3]; ZeroMemory(szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); typedef bool(__stdcall*SubGetStringType)(WORD, const void*, int, void*, int); if (pGetGameString) { SubGetStringType pFuntion = (SubGetStringType)pGetGameString; pFuntion(wCmdTable, pBuffer, iLen, szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); } mylog::ToSet(szBuffer, BUFFERLEN * 3, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case MDM_GF_FRAME: //框架命令 { switch (wCmdTable) { case SUB_GF_GAME_SCENE: //游戏中等待场景 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("游戏中等待场景")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GF_GAME_SCENEING: //游戏中场景 { TCHAR szBuffer[BUFFERLEN * 3]; ZeroMemory(szBuffer, BUFFERLEN * 3 * sizeof(TCHAR)); typedef bool(__stdcall*SubGetStringType)(WORD, const void*, int, void*, int); if (pGetGameString) { SubGetStringType pFuntion = (SubGetStringType)pGetGameString; if (pFuntion(wCmdTable, pBuffer, iLen, szBuffer, BUFFERLEN * 3 * sizeof(TCHAR))) { mylog::ToSet(szBuffer, BUFFERLEN * 3, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } else { StringCchCopy(szBuffer, BUFFERLEN, _T("游戏场景")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } } return; } case SUB_GF_GAME_USER_DISTANCE: //玩家距离 @yuajing { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("玩家距离")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GF_GAME_OPTION: //游戏配置 { if (pBuffer) ((CMD_GF_GameOption*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } case SUB_GF_USER_READY: //用户准备 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户准备")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GF_USER_CHAT: //用户聊天 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("用户聊天")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GF_USER_EXPRESSION: //用户表情 { if (pBuffer) ((CMD_GR_S_UserExpression*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } case SUB_GF_LOOKON_CONFIG: //旁观配置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("旁观配置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } } case MDM_GR_CLUB: { switch (wCmdTable) { case SUB_GR_USER_DISSOLVE_ROOM: { if (pBuffer) { ((CMD_GR_ClubDissolveRoom*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("群主管理员强制解散游戏")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } case SUB_GR_USER_GET_SAVE_MORE_WANFA: case SUB_GR_USER_GET_MORE_WANFA: { if (pBuffer) { ((CMD_S_ClubAutoAddInfo*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("俱乐部额外玩法自动开房请求")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } case SUB_GR_USER_GET_MORE_WANFA_ACK: { if (pBuffer) { ((CMD_GR_Club_Action_Ack1Add*)pBuffer)->ToShow(dTablePrivate, dUserID); return; } else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("俱乐部额外玩法自动开房响应")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } default: return; } } //case MDM_GR_INSURE: //银行命令 //case MDM_GR_TASK: //任务命令 //case MDM_GR_EXCHANGE: //兑换命令 case MDM_GR_MANAGE: //管理命令 { switch (wCmdTable) { case SUB_GR_QUERY_OPTION: //查询设置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("查询设置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_OPTION_SERVER: //房间设置 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("房间设置")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_KILL_USER: //踢出用户 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("踢出用户")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return;// } case SUB_GR_LIMIT_USER_CHAT: //限制聊天 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("限制聊天")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return;// } case SUB_GR_KICK_ALL_USER: //踢出用户 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("踢出用户")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return;// } case SUB_GR_SEND_MESSAGE: //发布消息 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("发布消息")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_DISMISSGAME: //管理员强制解散游戏 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("管理员强制解散游戏")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } case SUB_GR_DELETE_PRIVATE_TABLE_REQ: //请求删除私有房间 { if (pBuffer) ((CMD_GR_DELETE_PRIVATE_ROOM_REQ*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("请求删除私有房间")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_DELETE_PRIVATE_TABLE_RESP://请求删除私有房间响应消息 { if (pBuffer) ((CMD_GR_DELETE_PRIVATE_ROOM_RESP*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("请求删除私有房间响应消息")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } case SUB_GR_SEND_WARNING: //警告用户 { if (pBuffer) ((CMD_GR_SendWarning*)pBuffer)->ToShow(dTablePrivate, dUserID); else { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("警告用户")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } return; } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("登陆命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } } case MDM_GR_MATCH: //比赛命令 { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); StringCchCopy(szBuffer, BUFFERLEN, _T("比赛命令")); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); } default: { TCHAR szBuffer[BUFFERLEN]; ZeroMemory(szBuffer, BUFFERLEN * sizeof(TCHAR)); //StringCchCopy(szBuffer, BUFFERLEN, _T("登陆命令->未知协议")); _snwprintf(szBuffer, BUFFERLEN, _T("[%d:%d]"), wMainCmdID, wCmdTable); mylog::ToSet(szBuffer, BUFFERLEN, dUserID); mylog::OutputString(szBuffer, dTablePrivate); return; } } } //运行 unsigned __stdcall Commend::LogRuns(void* pParam) { int nCount = 1; // 线程开始 do { Sleep(30000);// 每隔30秒写一次日志 //检测目录是否存在 CString strLog = m_Patch; if (!PathIsDirectory(strLog)) { CreateDirectory(strLog, NULL); } CTime csData = CTime::GetCurrentTime(); CString csNow; csNow.Format(_T("%2d月%2d日-%2d时"), csData.GetMonth(), csData.GetDay(), csData.GetHour()); strLog = strLog + csNow + _T("\\"); if (!PathIsDirectory(strLog)) { CreateDirectory(strLog, NULL); } //获取日志 std::unordered_map Ret = GetLog(); for (std::unordered_map::iterator iter = Ret.begin(); iter != Ret.end(); iter++) { DWORD dTable = iter->first; CString csText = iter->second; if (csText.GetLength() == 0 && csText.IsEmpty()) continue; CString csTable; csTable.Format(_T("table%ld"), dTable); CString strLogTempPath = strLog + csTable + _T(".html"); CStdioFile* m_pFile = new CStdioFile; if (m_pFile == NULL) { m_enStatus = ENUM_LOG_INVALID; break; } BOOL bRet = m_pFile->Open( strLogTempPath, CFile::modeWrite | CFile::modeCreate | CFile::typeBinary | CFile::shareDenyNone | CFile::modeNoTruncate); if (bRet) { m_enStatus = ENUM_LOG_RUN; WriteUnicodeHeadToFile(m_pFile); try { char* old_locale = _strdup(setlocale(LC_CTYPE, NULL)); setlocale(LC_CTYPE, "chs");//设定 m_pFile->SeekToEnd(); m_pFile->WriteString(_T("日志查询")); m_pFile->Flush(); setlocale(LC_CTYPE, old_locale); free(old_locale);//还原区域设定 } catch (...) { m_enStatus = ENUM_LOG_INVALID; } } else { delete m_pFile; m_pFile = NULL; m_enStatus = ENUM_LOG_INVALID; break; } //写数据 if (m_enStatus == ENUM_LOG_INIT || m_enStatus == ENUM_LOG_EXITED || m_enStatus == ENUM_LOG_INVALID ) { delete m_pFile; m_pFile = NULL; m_enStatus = ENUM_LOG_INVALID; break; } try { char* old_locale = _strdup(setlocale(LC_CTYPE, NULL)); setlocale(LC_CTYPE, "chs");//设定 m_pFile->SeekToEnd(); m_pFile->WriteString(csText); m_pFile->Flush(); setlocale(LC_CTYPE, old_locale); free(old_locale);//还原区域设定 } catch (...) { m_enStatus = ENUM_LOG_INVALID; } csText.Empty(); // 此次写结束 if (m_pFile != NULL) { m_pFile->Close(); delete m_pFile; m_pFile = NULL; } } Ret.clear(); } while (m_bRun); std::unordered_map Ret = GetLog(); Ret.clear(); m_enStatus = ENUM_LOG_EXITED; _endthreadex(0); return 0; } int Commend::WriteUnicodeHeadToFile(CStdioFile* pFile) { if (pFile == NULL) { return -1; } try { if (pFile->GetLength() == 0) { pFile->Write("\377\376", 2); pFile->Flush(); } } catch (...) { return -1; } return 0; } CString& Commend::GetCurTimeStr() { CTime g_tmCurTime = CTime::GetCurrentTime();// time(NULL); CString g_strTime = g_tmCurTime.Format(_T("%Y-%m-%d %H:%M:%S ")); return g_strTime; }