public TCPProcessCmdResults AttchFun(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { TCPProcessCmdResults result = TCPProcessCmdResults.RESULT_FAILED; tcpOutPacket = null; try { if (m_FunInsinuate.ContainsKey(nID)) { result = m_FunInsinuate[nID](tcpMgr, socket, tcpClientPool, tcpRandKey, pool, nID, data, count, out tcpOutPacket); } else { SysConOut.WriteLine("收到APP数据,但没找到隐射函数"); } GameClient client = GameManager.ClientMgr.FindClient(socket); if (null != client) { client.ClientData.LastClientHeartTicks = TimeUtil.NOW(); } } catch (Exception ex) { SysConOut.WriteLine("AttchFun****************" + ex.ToString()); } return(result); }
public void ExecuteDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool) { lock (this._DBCmdQueue) { if (this._DBCmdQueue.Count <= 0) { return; } } List <DBCommand> dbCmdList = new List <DBCommand>(); lock (this._DBCmdQueue) { while (this._DBCmdQueue.Count > 0) { dbCmdList.Add(this._DBCmdQueue.Dequeue()); } } byte[] bytesData = null; for (int i = 0; i < dbCmdList.Count; i++) { TCPProcessCmdResults result = this.DoDBCmd(tcpClientPool, pool, dbCmdList[i], out bytesData); if (result == TCPProcessCmdResults.RESULT_FAILED) { LogManager.WriteLog(LogTypes.Error, string.Format("向LogDBServer请求执行命令失败, CMD={0}", (TCPGameServerCmds)dbCmdList[i].DBCommandID), null, true); } this._DBCmdPool.Push(dbCmdList[i]); } }
/// <summary> /// 执行数据库命令 /// </summary> public void ExecuteDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool) { lock (_DBCmdQueue) { if (_DBCmdQueue.Count <= 0) { return; } } List <DBCommand> dbCmdList = new List <DBCommand>(); lock (_DBCmdQueue) { while (_DBCmdQueue.Count > 0) { dbCmdList.Add(_DBCmdQueue.Dequeue()); } } Int32 length = 0; Int16 cmd = 0; string strData = null; string[] fieldsData = null; byte[] bytesData = null; TCPProcessCmdResults result; for (int i = 0; i < dbCmdList.Count; i++) { result = DoDBCmd(tcpClientPool, pool, dbCmdList[i], out bytesData); if (result == TCPProcessCmdResults.RESULT_FAILED) { //写日志 LogManager.WriteLog(LogTypes.Error, string.Format("向DBServer请求执行命令失败, CMD={0}", (TCPGameServerCmds)dbCmdList[i].DBCommandID)); } else { //解析返回值 length = BitConverter.ToInt32(bytesData, 0); cmd = BitConverter.ToInt16(bytesData, 4); strData = new UTF8Encoding().GetString(bytesData, 6, length - 2); //解析客户端的指令 fieldsData = strData.Split(':'); } //执行事件 dbCmdList[i].DoDBCommandEvent(new DBCommandEventArgs() { Result = result, fields = fieldsData }); //还回队列 _DBCmdPool.Push(dbCmdList[i]); } }
/// <summary> /// 执行数据库命令 /// </summary> /// <param name="tcpClientPool"></param> /// <param name="pool"></param> /// <param name="dbCmd"></param> /// <returns></returns> private TCPProcessCmdResults DoDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool, DBCommand dbCmd, out byte[] bytesData) { bytesData = Global.SendAndRecvData(dbCmd.DBCommandID, dbCmd.DBCommandText, dbCmd.ServerId, 1); if (null == bytesData || bytesData.Length <= 0) { return(TCPProcessCmdResults.RESULT_FAILED); } return(TCPProcessCmdResults.RESULT_OK); }
public TCPProcessCmdResults ProcessMsg(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; try { if (!this.CmdRegisteredFlags[nID]) { return(TCPProcessCmdResults.RESUTL_CONTINUE); } List <MethodConfig> methodList = null; if (!this.patchCfgDict.TryGetValue(EventTypes.BeforeProcessMsg, out methodList)) { return(TCPProcessCmdResults.RESUTL_CONTINUE); } if (methodList == null || methodList.Count <= 0) { return(TCPProcessCmdResults.RESUTL_CONTINUE); } foreach (MethodConfig item in methodList) { if (item.cmdID == nID) { AssemblyLoader loader = this.GetAssemblyLoader(item.assemblyName); if (null != loader) { int index = 8; object[] paramarray = new object[item.methodParams.Length + index]; paramarray[0] = tcpMgr; paramarray[1] = socket; paramarray[2] = tcpClientPool; paramarray[3] = tcpRandKey; paramarray[4] = pool; paramarray[5] = nID; paramarray[6] = data; paramarray[7] = count; for (int i = 0; i < item.methodParams.Length; i++) { paramarray[i + index] = item.methodParams[i]; } TcpResult result = (TcpResult)loader.Invoke(item.fullClassName, item.methodName, paramarray); tcpOutPacket = result.outPacket; return(result.cmdResult); } } } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, string.Format("AssemblyPatchMgr::ProcessMsg Error nID={0}", nID), null, true); } return(TCPProcessCmdResults.RESUTL_CONTINUE); }
private TCPProcessCmdResults DoDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool, DBCommand dbCmd, out byte[] bytesData) { bytesData = Global.SendAndRecvData <string>(dbCmd.DBCommandID, dbCmd.DBCommandText, dbCmd.ServerId, 0); TCPProcessCmdResults result; if (bytesData == null || bytesData.Length <= 0) { result = TCPProcessCmdResults.RESULT_FAILED; } else { result = TCPProcessCmdResults.RESULT_OK; } return(result); }
public static TCPProcessCmdResults ProcessGetLingYuList( TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; string[] fields = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { fields = cmdData.Split(':'); if (1 != fields.Length) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } List <LingYuData> dataList = LingYuManager.GetLingYuList(client); byte[] bytesData = DataHelper.ObjectToBytes <List <LingYuData> >(dataList); GameManager.ClientMgr.SendToClient(client, bytesData, nID); return(TCPProcessCmdResults.RESULT_OK); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessGetLingYuList", false); } return(TCPProcessCmdResults.RESULT_DATA); }
public static TCPProcessCmdResults ProcessReqZhuHun( TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; string[] fields = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { fields = cmdData.Split(':'); if (1 != fields.Length) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } ZhuLingZhuHunError e = ZhuLingZhuHunManager.ReqZhuHun(client); string strcmd = string.Format("{0}:{1}:{2}", roleID, (int)e, client.ClientData.MyWingData.ZhuHunNum); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessReqZhuHun", false); } return(TCPProcessCmdResults.RESULT_DATA); }
/// <summary> /// 执行数据库命令 /// </summary> public void ExecuteDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool) { //int nTestCount = 2000; //for (int i = 0; i < nTestCount; i++) //{ // AddDBLogInfo(123, "0000000", "111111111", "22222222222222", "增加", 1, 1); //} lock (_DBCmdQueue) { if (_DBCmdQueue.Count <= 0) { return; } } List <DBCommand> dbCmdList = new List <DBCommand>(); lock (_DBCmdQueue) { while (_DBCmdQueue.Count > 0) { dbCmdList.Add(_DBCmdQueue.Dequeue()); } } byte[] bytesData = null; TCPProcessCmdResults result; //long ticks = TimeUtil.NOW(); for (int i = 0; i < dbCmdList.Count; i++) { result = DoDBCmd(tcpClientPool, pool, dbCmdList[i], out bytesData); if (result == TCPProcessCmdResults.RESULT_FAILED) { //写日志 LogManager.WriteLog(LogTypes.Error, string.Format("向LogDBServer请求执行命令失败, CMD={0}", (TCPGameServerCmds)dbCmdList[i].DBCommandID)); } //还回队列 _DBCmdPool.Push(dbCmdList[i]); } //SysConOut.WriteLine(string.Format("发送{0}条日志到数据库耗时 {1}", nTestCount, TimeUtil.NOW() - ticks)); }
public TCPProcessCmdResults OnResponse(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; try { string[] fields = new UTF8Encoding().GetString(data, 0, count).Split(new char[] { ':' }); if (fields == null || fields.Length <= 2) { return(TCPProcessCmdResults.RESULT_FAILED); } int roleId = Convert.ToInt32(fields[0]); int index = Convert.ToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleId)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleId), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } if (index < 0 || index >= 2) { LogManager.WriteLog(LogTypes.Error, string.Format("角色返回敏感数据索引错误,roleid={0}, rolename={1}, index={2}", roleId, client.ClientData.RoleName, index), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } lock (client.InterestingData) { InterestingData.Item item = client.InterestingData.itemArray[index]; if (item != null) { item.LastResponseMs = TimeUtil.NOW(); item.ResponseCount++; if (index == 0) { this._CheckSpeed(client, item, fields); } } } } catch { } return(TCPProcessCmdResults.RESULT_OK); }
public void ExecuteDBCmd(TCPClientPool tcpClientPool, TCPOutPacketPool pool) { lock (this._DBCmdQueue) { if (this._DBCmdQueue.Count <= 0) { return; } } List <DBCommand> dbCmdList = new List <DBCommand>(); lock (this._DBCmdQueue) { while (this._DBCmdQueue.Count > 0) { dbCmdList.Add(this._DBCmdQueue.Dequeue()); } } string[] fieldsData = null; byte[] bytesData = null; for (int i = 0; i < dbCmdList.Count; i++) { TCPProcessCmdResults result = this.DoDBCmd(tcpClientPool, pool, dbCmdList[i], out bytesData); if (result == TCPProcessCmdResults.RESULT_FAILED) { LogManager.WriteLog(LogTypes.Error, string.Format("向DBServer请求执行命令失败, CMD={0}", (TCPGameServerCmds)dbCmdList[i].DBCommandID), null, true); } else { int length = BitConverter.ToInt32(bytesData, 0); string strData = new UTF8Encoding().GetString(bytesData, 6, length - 2); fieldsData = strData.Split(new char[] { ':' }); } dbCmdList[i].DoDBCommandEvent(new DBCommandEventArgs { Result = result, fields = fieldsData }); this._DBCmdPool.Push(dbCmdList[i]); } }
public static void CCProcessCmd(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count) { //接收到了完整的命令包 //TCPOutPacket tcpOutPacket = null; //TCPProcessCmdResults result = TCPProcessCmdResults.RESULT_FAILED; //result = TCPCmdHandler.ProcessCmd(tcpMgr, socket, tcpClientPool, tcpRandKey, pool, nID, data, count, out tcpOutPacket); //if (result == TCPProcessCmdResults.RESULT_DATA && null != tcpOutPacket) //{ // //向登陆客户端返回数据 // tcpMgr.MySocketListener.SendData(socket, tcpOutPacket); //} //else if (result == TCPProcessCmdResults.RESULT_FAILED)//解析失败, 直接关闭连接 //{ // if (nID != (int)TCPGameServerCmds.CMD_LOG_OUT) // { // LogManager.WriteLog(LogTypes.Error, string.Format("解析并执行命令失败: {0},{1}, 关闭连接", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); // } // //这儿需要关闭链接--->这样关闭对吗? // tcpMgr.MySocketListener.CloseSocket(socket); //} }
/// <summary> /// 申请当前是否庆功宴已经开启了 /// </summary> public TCPProcessCmdResults ProcessCMD_SPR_QueryQingGongYanOpenCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { int result = (QingGongYanNpc == null) ? 0 : 1; string strcmd = string.Format("{0}", result); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessJoinQingGongYanCMD", false); } return(TCPProcessCmdResults.RESULT_FAILED); }
/// <summary> /// 申请信息 /// </summary> public TCPProcessCmdResults ProcessQueryQingGongYanCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(':'); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } int DBGrade = Convert.ToInt32(GameManager.GameConfigMgr.GetGameConfigItemStr("qinggongyan_grade", "0")); int TotalCount = Convert.ToInt32(GameManager.GameConfigMgr.GetGameConfigItemStr("qinggongyan_joincount", "0")); int JoinMoney = Convert.ToInt32(GameManager.GameConfigMgr.GetGameConfigItemStr("qinggongyan_joinmoney", "0")); String QingGongYanJoinFlag = Global.GetRoleParamByName(client, RoleParamName.QingGongYanJoinFlag); int currDay = Global.GetOffsetDay(TimeUtil.NowDateTime()); int lastJoinDay = 0; int joinCount = 0; // day:count if (null != QingGongYanJoinFlag) { string[] strTemp = QingGongYanJoinFlag.Split(','); if (2 == strTemp.Length) { lastJoinDay = Convert.ToInt32(strTemp[0]); joinCount = Convert.ToInt32(strTemp[1]); } } if (currDay != lastJoinDay) { joinCount = 0; } string strcmd = ""; strcmd = string.Format("{0}:{1}:{2}:{3}:{4}", roleID, DBGrade, joinCount, TotalCount, JoinMoney); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessHoldQingGongYanCMD", false); } return(TCPProcessCmdResults.RESULT_FAILED); }
/// <summary> /// 申请举办 /// </summary> public TCPProcessCmdResults ProcessHoldQingGongYanCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(':'); if (fields.Length != 3) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); int Index = Convert.ToInt32(fields[1]); int OnlyCheck = Convert.ToInt32(fields[2]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } QingGongYanResult result = HoldQingGongYan(client, Index, OnlyCheck); string strcmd = ""; if (result != QingGongYanResult.Success) { strcmd = string.Format("{0}:{1}:{2}", (int)result, roleID, OnlyCheck); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } strcmd = string.Format("{0}:{1}:{2}", (int)QingGongYanResult.Success, roleID, OnlyCheck); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessHoldQingGongYanCMD", false); } return(TCPProcessCmdResults.RESULT_FAILED); }
public TCPProcessCmdResults HandleClientQueryPlatChargeKing(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID)); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN); return(TCPProcessCmdResults.RESULT_DATA); } try { string[] fields = cmdData.Split(':'); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData)); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN); return(TCPProcessCmdResults.RESULT_DATA); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } JieriPlatChargeKing act = HuodongCachingMgr.GetJieriPlatChargeKingActivity(); if (act != null) { tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, DataHelper.ObjectToBytes <List <InputKingPaiHangData> >(act.RealRankList), nID); } return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN); return(TCPProcessCmdResults.RESULT_DATA); }
public static TCPProcessCmdResults ProcessResetPetBagCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } CallPetManager.ResetPetBagAllGoods(client); return(TCPProcessCmdResults.RESULT_OK); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessResetPetBagCMD", false, false); } return(TCPProcessCmdResults.RESULT_FAILED); }
public static TCPProcessCmdResults ProcessMovePetCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; return(TCPProcessCmdResults.RESULT_OK); }
public static TCPProcessCmdResults ProcessCallPetCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); int times = Convert.ToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } string strGetGoods = ""; CallSpriteResult result = CallPetManager.CallPet(client, times, out strGetGoods); string strcmd; if (result != CallSpriteResult.Success) { strcmd = string.Format("{0}:{1}:{2}:{3}", new object[] { (int)result, roleID, 0, 0 }); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } strcmd = string.Format("{0}:{1}:{2}:{3}", new object[] { 0, times, strGetGoods, CallPetManager.getFreeSec(client) }); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessCallPetCMD", false, false); } return(TCPProcessCmdResults.RESULT_FAILED); }
public static TCPProcessCmdResults ProcessMarryAutoReject(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); int autoReject = Convert.ToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } MarryResult result = MarryLogic.MarryAutoReject(client, autoReject); string strcmd = string.Format("{0}:{1}", (int)result, client.ClientData.MyMarriageData.byAutoReject); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessMarryPartyCancel", false, false); } return(TCPProcessCmdResults.RESULT_FAILED); }
/// <summary> /// 新服活动 冲级狂人 gwz /// </summary> /// <param name="tcpMgr"></param> /// <param name="socket"></param> /// <param name="tcpClientPool"></param> /// <param name="tcpRandKey"></param> /// <param name="pool"></param> /// <param name="nID"></param> /// <param name="data"></param> /// <param name="count"></param> /// <param name="tcpOutPacket"></param> /// <returns></returns> public static TCPProcessCmdResults ProcessQueryLevelUpMadmanCmd(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { //解析用户名称和用户密码 string[] fields = cmdData.Split(':'); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } if (NewZoneActiveManager.QueryLevelUpMadman(client, pool, nID, out tcpOutPacket)) { return(TCPProcessCmdResults.RESULT_DATA); } } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessQueryLevelUpMadmanCmd", false); } return(TCPProcessCmdResults.RESULT_FAILED); }
public static TCPProcessCmdResults CCProcessCmd(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { //if (nID > 30000) // SysConOut.WriteLine("接收:" + nID + "|" + ConvertEnumToString<CC.CommandID>(nID)); //测试用 //System.Diagnostics.Debug.WriteLine("ProcessCmd: {0}", (TCPGameServerCmds)nID); long startTicks = TimeUtil.NOW(); //加入统计 lock (HandlingCmdDict) { HandlingCmdDict[socket] = 1; } TCPProcessCmdResults result = TCPProcessCmdResults.RESULT_FAILED; tcpOutPacket = null; //记录最后一次消息id,事件,总消息数量 socket.session.CmdID = nID; socket.session.CmdTime = startTicks; #region 指令处理 result = TCPCmdDispatcher.getInstance().dispathProcessor(socket, nID, data, count); if (result == TCPProcessCmdResults.RESULT_UNREGISTERED) { result = CMDProcess.GetInstance.AttchFun(tcpMgr, socket, tcpClientPool, tcpRandKey, pool, nID, data, count, out tcpOutPacket); } #endregion /// 总共处理的指令个数 TotalHandledCmdsNum++; //测试用 long nowTicks = TimeUtil.NOW(); long usedTicks = nowTicks - startTicks; // SysConOut.WriteLine(string.Format("ProcessCmd: {0}, ticks: {1}", (TCPGameServerCmds)nID, usedTicks)); if (usedTicks > 0) { //LogManager.WriteLog(LogTypes.Error, string.Format("指令处理时间, CMD={0}, Client={1}, Ticks={2}", //(TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), nowTicks - startTicks)); if (usedTicks > MaxUsedTicksByCmdID) { MaxUsedTicksCmdID = nID; MaxUsedTicksByCmdID = usedTicks; } } //删除统计 lock (HandlingCmdDict) { HandlingCmdDict.Remove(socket); } //Thread.Sleep((int)Global.GetRandomNumber(100, 250)); ///模拟卡顿的操作 return(result); }
public static TCPProcessCmdResults ProcessGetYueKaAward(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, global::Server.Protocol.TCPOutPacketPool pool, int nID, byte[] data, int count, out global::Server.Protocol.TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; string[] fields = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket))); return(TCPProcessCmdResults.RESULT_FAILED); } try { fields = cmdData.Split(':'); if (2 != fields.Length) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), fields.Length)); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); int day = Convert.ToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } YueKaError err = _GetYueKaAward(client, day); string cmd = string.Format("{0}:{1}:{2}", roleID, (int)err, day); GameManager.ClientMgr.SendToClient(client, cmd, nID); return(TCPProcessCmdResults.RESULT_OK); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessGetYueKaData", false); } return(TCPProcessCmdResults.RESULT_DATA); }
public static void AddOldPaiZhuDamonGoodsData(GameClient client) { if (null != client.ClientData.GoodsDataList) { List <GoodsData> listDamon = new List <GoodsData>(); int i = 0; while (i < client.ClientData.GoodsDataList.Count) { int nCategories = Global.GetGoodsCatetoriy(client.ClientData.GoodsDataList[i].GoodsID); if (nCategories >= 9 && nCategories <= 10) { if (client.ClientData.GoodsDataList[i].Using > 0 && client.ClientData.GoodsDataList[i].Site == 0) { int nBagIndex = JingLingYaoSaiManager.GetIdleSlotOfPaiZhuDamonGoods(client); string[] dbFields = null; string strcmd = Global.FormatUpdateDBGoodsStr(new object[] { client.ClientData.RoleID, client.ClientData.GoodsDataList[i].Id, client.ClientData.GoodsDataList[i].Using, "*", "*", "*", 10000, "*", "*", client.ClientData.GoodsDataList[i].GCount, "*", nBagIndex, "*", "*", "*", "*", "*", "*", "*", "*", "*", "*", "*" }); TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer(TCPClientPool.getInstance(), TCPOutPacketPool.getInstance(), 10006, strcmd, out dbFields, client.ServerId); if (dbRequestResult != TCPProcessCmdResults.RESULT_FAILED) { if (dbFields.Length > 0 && Convert.ToInt32(dbFields[1]) >= 0) { JingLingYaoSaiManager.AddPaiZhuDamonGoodsData(client, client.ClientData.GoodsDataList[i], false); client.ClientData.GoodsDataList[i].Site = 10000; client.ClientData.GoodsDataList[i].BagIndex = nBagIndex; listDamon.Add(client.ClientData.GoodsDataList[i]); } } } } IL_2AC: i++; continue; goto IL_2AC; } for (i = 0; i < listDamon.Count; i++) { Global.RemoveGoodsData(client, listDamon[i]); } } }
public TCPProcessCmdResults ProcessExecuteJieRiMeiRiPlatChargeKingCmd(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); } int roleID = Convert.ToInt32(fields[0]); int extTag = Global.SafeConvertToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } Activity instActivity = Global.GetActivity(ActivityTypes.JieriPCKingEveryDay); string strcmd; if (null == instActivity) { strcmd = string.Format("{0}:{1}:{2}", -1, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } if (!instActivity.CanGiveAward()) { strcmd = string.Format("{0}:{1}:{2}", -2, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } if (!instActivity.CheckCondition(client, extTag)) { strcmd = string.Format("{0}:{1}:{2}", -10007, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } if (!instActivity.HasEnoughBagSpaceForAwardGoods(client, extTag)) { strcmd = string.Format("{0}:{1}:{2}", -3, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } if (!instActivity.GiveAward(client, extTag)) { strcmd = string.Format("{0}:{1}:{2}", -7, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } strcmd = string.Format("{0}:{1}:{2}", 1, roleID, extTag); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); }
public TCPProcessCmdResults ProcessQueryJieRiMeiRiPlatChargeKingCmd(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID), null, true); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (fields.Length != 1) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData), null, true); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } JieriPlatChargeKingEverydayData myData = null; JieriPlatChargeKingEveryDay act = HuodongCachingMgr.GetJieriPCKingEveryDayActivity(); if (act != null) { myData = act.BuildQueryDataForClient(client); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, DataHelper.ObjectToBytes <JieriPlatChargeKingEverydayData>(myData), nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); }
public static TCPProcessCmdResults ProcessShareCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int resoult = 0; int extdata = 0; switch (nID) { case 663: ShareManager.UpdateRoleShareState(client); if (ShareManager.HasDoneShare(client)) { if (ShareManager.CanGetShareAward(client)) { extdata = 1; } else { extdata = 2; } } else { extdata = 0; } break; case 664: resoult = ShareManager.GiveRoleShareAward(client); if (resoult == 0 || resoult == -2) { extdata = 2; } else if (resoult == -1) { extdata = 0; } else { extdata = 1; } break; case 665: if (ShareManager.HasDoneShare(client)) { if (ShareManager.CanGetShareAward(client)) { extdata = 1; } else { extdata = 2; } } else { extdata = 0; } break; } string strcmd = string.Format("{0}:{1}", resoult, extdata); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessShareCMD", false, false); } return(TCPProcessCmdResults.RESULT_DATA); }
public TCPProcessCmdResults ProcessGetFirstChargeInfoCMD(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } string[] dbFields = null; Global.RequestToDBServer(Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, 671, client.strUserID, out dbFields, client.ServerId); if (null == dbFields) { return(TCPProcessCmdResults.RESULT_FAILED); } string returndata = dbFields[0]; if (returndata == "-1") { returndata = ""; } string strcmd = string.Format("{0}", returndata); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, strcmd, nID); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessGetFirstChargeInfoCMD", false, false); } return(TCPProcessCmdResults.RESULT_DATA); }
public static TCPProcessCmdResults ProcessGetYueKaData(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPRandKey tcpRandKey, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}, Client={1}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false)), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } try { string[] fields = cmdData.Split(new char[] { ':' }); if (1 != fields.Length) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Client={1}, Recv={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), fields.Length), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } int roleID = Convert.ToInt32(fields[0]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (KuaFuManager.getInstance().ClientCmdCheckFaild(nID, client, ref roleID)) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket, false), roleID), null, true); return(TCPProcessCmdResults.RESULT_FAILED); } YueKaData ykData = null; lock (client.ClientData.YKDetail) { ykData = client.ClientData.YKDetail.ToYueKaData(); } GameManager.ClientMgr.SendToClient(client, DataHelper.ObjectToBytes <YueKaData>(ykData), nID); return(TCPProcessCmdResults.RESULT_OK); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "ProcessGetYueKaData", false, false); } return(TCPProcessCmdResults.RESULT_DATA); }
/// <summary> /// 获得活动信息,根据活动type,角色id /// </summary> /// <param name="tcpMgr"></param> /// <param name="socket"></param> /// <param name="tcpClientPool"></param> /// <param name="tcpRandKey"></param> /// <param name="pool"></param> /// <param name="nID"></param> /// <param name="data"></param> /// <param name="count"></param> /// <param name="tcpOutPacket"></param> /// <returns></returns> public static TCPProcessCmdResults ProcessGetActiveInfo(TCPManager tcpMgr, TMSKSocket socket, TCPClientPool tcpClientPool, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; try { cmdData = new UTF8Encoding().GetString(data, 0, count); } catch (Exception) //解析错误 { LogManager.WriteLog(LogTypes.Error, string.Format("解析指令字符串错误, CMD={0}", (TCPGameServerCmds)nID)); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN); return(TCPProcessCmdResults.RESULT_DATA); } try { string[] fields = cmdData.Split(':'); if (fields.Length != 2) { LogManager.WriteLog(LogTypes.Error, string.Format("指令参数个数错误, CMD={0}, Recv={1}, CmdData={2}", (TCPGameServerCmds)nID, fields.Length, cmdData)); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", (int)TCPGameServerCmds.CMD_DB_ERR_RETURN); return(TCPProcessCmdResults.RESULT_DATA); } //角色id int roleID = Convert.ToInt32(fields[0]); //活动类型 int activetype = Convert.ToInt32(fields[1]); GameClient client = GameManager.ClientMgr.FindClient(socket); if (null == client || client.ClientData.RoleID != roleID) { LogManager.WriteLog(LogTypes.Error, string.Format("根据RoleID定位GameClient对象失败, CMD={0}, Client={1}, RoleID={2}", (TCPGameServerCmds)nID, Global.GetSocketRemoteEndPoint(socket), roleID)); return(TCPProcessCmdResults.RESULT_FAILED); } //定位角色成功之后将命令转发给gamedbserver TCPProcessCmdResults ret = Global.RequestToDBServer2(tcpClientPool, pool, nID, Global.GetActivityRequestCmdString((ActivityTypes)activetype, client), out tcpOutPacket); return(ret); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false); } return(TCPProcessCmdResults.RESULT_FAILED); }