public void processCmd(GameServerClient client, byte[] cmdParams, int count) { string cmd = new UTF8Encoding().GetString(cmdParams, 0, count); string[] param = cmd.Split(':'); ZhanMengShiJianData data = new ZhanMengShiJianData(); data.BHID = Convert.ToInt32(param[0]); data.RoleName = Convert.ToString(param[1]); data.ShiJianType = Convert.ToInt32(param[2]); data.SubValue1 = Convert.ToInt32(param[3]); data.SubValue2 = Convert.ToInt32(param[4]); data.SubValue3 = Convert.ToInt32(param[5]); data.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); //需要特殊处理的战盟事件类型: 职务改变 if (data.ShiJianType == ZhanMengShiJianConstants.ChangeZhiWu) { string otherRoleName; string otherUserID; Global.GetRoleNameAndUserID(DBManager.getInstance(), data.SubValue3, out otherRoleName, out otherUserID); data.RoleName = otherRoleName; } ZhanMengShiJianManager.getInstance().onAddZhanMengShiJian(data); byte[] arrSendData = DataHelper.ObjectToBytes <string>(string.Format("{0}", 1)); client.sendCmd((int)TCPGameServerCmds.CMD_DB_ADD_ZHANMENGSHIJIAN, arrSendData); }
/// <summary> /// 战盟事件触发处理 /// </summary> /// <param name="bhId"></param> /// <param name="roleName"></param> /// <param name="shijianType"></param> /// <param name="param1"></param> /// <param name="param2"></param> /// <param name="param3"></param> public void onAddZhanMengShiJian(ZhanMengShiJianData data) { List <ZhanMengShiJianData> _dataList = null; lock (dataCache) { if (!dataCache.TryGetValue(data.BHID, out _dataList)) { _dataList = new List <ZhanMengShiJianData>(); dataCache.Add(data.BHID, _dataList); } } lock (_dataList) { //将最新的数据插入到最前面 _dataList.Insert(0, data); //超过规定容量,删除最后一个 if (_dataList.Count > MaxCacheNum) { _dataList.RemoveAt(_dataList.Count - 1); } } ZhanMengShiJianDBController.getInstance().insert(data); }
public void onAddZhanMengShiJian(ZhanMengShiJianData data) { List <ZhanMengShiJianData> _dataList = null; lock (this.dataCache) { if (!this.dataCache.TryGetValue(data.BHID, out _dataList)) { _dataList = new List <ZhanMengShiJianData>(); this.dataCache.Add(data.BHID, _dataList); } } lock (_dataList) { _dataList.Insert(0, data); if (_dataList.Count > ZhanMengShiJianConstants.MaxCacheNum) { _dataList.RemoveAt(_dataList.Count - 1); } } ZhanMengShiJianDBController.getInstance().insert(data); }
public TCPProcessCmdResults ProcChangeBangHuiName(DBManager dbMgr, TCPOutPacketPool pool, int nID, byte[] data, int count, out TCPOutPacket tcpOutPacket) { tcpOutPacket = null; string cmdData = null; string bhOldName = ""; 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 != 3) { 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 factionId = Convert.ToInt32(fields[1]); string newName = fields[2]; EChangeGuildNameError ne = EChangeGuildNameError.DBFailed; DBRoleInfo roleInfo = dbMgr.GetDBRoleInfo(ref roleId); if (null == roleInfo) { ne = EChangeGuildNameError.DBFailed; } else { lock (roleInfo) { if (roleInfo.Faction != factionId || roleInfo.BHZhiWu != 1) { ne = EChangeGuildNameError.OperatorDenied; goto IL_381; } } if (!this.IsNameCanUseInDb(dbMgr, newName)) { ne = EChangeGuildNameError.InvalidName; } else { BangHuiDetailData detail = DBQuery.QueryBangHuiInfoByID(dbMgr, factionId); if (detail == null || detail.CanModNameTimes <= 0 || detail.BZRoleID != roleId) { ne = EChangeGuildNameError.OperatorDenied; } else { bhOldName = detail.BHName; SingletonTemplate <NameUsedMgr> .Instance().AddCannotUse_BangHui_Ex(detail.BHName); if (!SingletonTemplate <NameUsedMgr> .Instance().AddCannotUse_BangHui_Ex(newName) || dbMgr.IsBangHuiNameExist(newName)) { ne = EChangeGuildNameError.NameAlreadyUsed; } else { string sql = string.Format("UPDATE t_banghui SET bhname='{0}', can_mod_name_times={1} WHERE bhid={2}", newName, detail.CanModNameTimes - 1, factionId); if (!this._Util_ExecNonQuery(dbMgr, sql)) { ne = EChangeGuildNameError.DBFailed; } else { lock (roleInfo) { roleInfo.BHName = newName; } if (!DBWriter.UpdateAllRoleBangHuiName(dbMgr, factionId, newName)) { LogManager.WriteLog(LogTypes.Error, string.Format("更新帮会id={0}的名字 {1} => {2},更新t_roles未(全部)成功", factionId, detail.BHName, newName), null, true); } List <DBRoleInfo> dbRoleInfoList = dbMgr.DBRoleMgr.GetCachingDBRoleInfoListByFaction(factionId); if (null != dbRoleInfoList) { for (int i = 0; i < dbRoleInfoList.Count; i++) { dbRoleInfoList[i].BHName = newName; } } ZhanMengShiJianData eventData = new ZhanMengShiJianData(); eventData.BHID = factionId; eventData.ShiJianType = ZhanMengShiJianConstants.ChangeName; eventData.RoleName = roleInfo.RoleName; eventData.SubSzValue1 = newName; eventData.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); ZhanMengShiJianManager.getInstance().onAddZhanMengShiJian(eventData); string recordSql = string.Format("INSERT INTO t_change_name_banghui(bhid,by_role,old_name,new_name,time) VALUES({0},{1},'{2}','{3}','{4}')", new object[] { factionId, roleId, bhOldName, newName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }); this._Util_ExecNonQuery(dbMgr, recordSql); ne = EChangeGuildNameError.Success; } } } } } IL_381: if (ne == EChangeGuildNameError.Success) { GameDBManager.BangHuiLingDiMgr.OnChangeBangHuiName(factionId, bhOldName, newName); string gmCmdData = string.Format("-synclingdi", new object[0]); ChatMsgManager.AddGMCmdChatMsg(-1, gmCmdData); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, string.Format("{0}", (int)ne), nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); }