public TCPProcessCmdResults ProcessChangeBangHuiName(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]); string newName = 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 (client.ClientSocket.IsKuaFuLogin) { return(TCPProcessCmdResults.RESULT_OK); } if (client.ClientData.Faction <= 0) { return(TCPProcessCmdResults.RESULT_OK); } EChangeGuildNameError ne = this.HandleChangeBangHuiName(client, newName); string rsp = string.Format("{0}:{1}:{2}", (int)ne, client.ClientData.Faction, newName); tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(TCPOutPacketPool.getInstance(), rsp, nID); return(TCPProcessCmdResults.RESULT_DATA); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, "", false, false); } tcpOutPacket = TCPOutPacket.MakeTCPOutPacket(pool, "0", 30767); return(TCPProcessCmdResults.RESULT_DATA); }
private EChangeGuildNameError HandleChangeBangHuiName(GameClient client, string newName) { EChangeGuildNameError ne = EChangeGuildNameError.OperatorDenied; // 非法字符 if (string.IsNullOrEmpty(newName) || NameServerNamager.CheckInvalidCharacters(newName) <= 0) { ne = EChangeGuildNameError.InvalidName; } else if (!IsNameLengthOK(newName)) // 检测长度 { ne = EChangeGuildNameError.LengthError; } else { string[] result = Global.ExecuteDBCmd((int)TCPGameServerCmds.CMD_SPR_CHANGE_BANGHUI_NAME, string.Format("{0}:{1}:{2}", client.ClientData.RoleID, client.ClientData.Faction, newName), client.ServerId); if (result == null || result.Length < 1) { ne = EChangeGuildNameError.DBFailed; } else { ne = (EChangeGuildNameError)Convert.ToInt32(result[0]); } } if (ne == EChangeGuildNameError.Success) { client.ClientData.BHName = newName; //通知所有指定帮会的在线用户帮会已经改名 GameManager.ClientMgr.NotifyBangHuiChangeName(client.ClientData.Faction, newName); //通知GameServer同步领地帮会分布 JunQiManager.NotifySyncBangHuiLingDiItemsDict(); //更新缓存项 Global.UpdateBangHuiMiniDataName(client.ClientData.Faction, newName); //罗兰城主 LuoLanChengZhanManager.getInstance().ReShowLuolanKing(); // pk之王 if (GameManager.ArenaBattleMgr.GetPKKingRoleID() == client.ClientData.RoleID) { GameManager.ArenaBattleMgr.ReShowPKKing(); } AllyManager.getInstance().UnionDataChange(client.ClientData.Faction, client.ServerId); } return(ne); }
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); }