public void UpdateGVoicePriority(GMCmdData cmdData, bool force = true) { if (cmdData.Fields.Length >= 4) { if (!(cmdData.Fields[0] != "-gvoicepriority")) { int type = Global.SafeConvertToInt32(cmdData.Fields[1]); int unitID = Global.SafeConvertToInt32(cmdData.Fields[2]); string prioritys = cmdData.Fields[3]; lock (this.RuntimeData.Mutex) { if (type == 1) { this.RuntimeData.ZhanMengGVoiceDict[unitID] = prioritys; } else if (type == 2) { this.RuntimeData.JunTuanGVoiceDict[unitID] = prioritys; } } GVoicePriorityData data = new GVoicePriorityData { ID = unitID, Type = type, RoleIdList = prioritys }; if (type == 1) { foreach (GameClient client in GameManager.ClientMgr.GetAllClients(true)) { if (force || client.ClientData.GVoiceType == GVoiceTypes.ZhanMeng) { if (client.ClientData.Faction == unitID && client.ClientData.GVoicePrioritys != prioritys) { client.ClientData.GVoicePrioritys = prioritys; client.sendCmd <GVoicePriorityData>(1112, data, false); } } } } else if (type == 2) { foreach (GameClient client in GameManager.ClientMgr.GetAllClients(true)) { if (force || client.ClientData.GVoiceType == GVoiceTypes.JunTuan) { if (client.ClientData.JunTuanId == unitID && client.ClientData.GVoicePrioritys != prioritys) { client.ClientData.GVoicePrioritys = prioritys; client.sendCmd <GVoicePriorityData>(1112, data, false); } } } } } } }
public bool ProcessGVoiceGetRoleListCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { int type = Global.SafeConvertToInt32(cmdParams[1]); int bhid = client.ClientData.Faction; int junTuanId = client.ClientData.JunTuanId; int rid = client.ClientData.RoleID; GVoicePriorityData resultData = new GVoicePriorityData(); resultData.Type = type; string priority = ""; lock (this.RuntimeData.Mutex) { if (type == 1) { resultData.ID = bhid; if (bhid > 0) { if (!this.RuntimeData.ZhanMengGVoiceDict.TryGetValue(bhid, out priority)) { priority = Global.sendToDB <string, int>(1112, bhid, client.ServerId); this.RuntimeData.ZhanMengGVoiceDict[bhid] = priority; } client.ClientData.GVoicePrioritys = priority; } } else if (type == 2) { resultData.ID = client.ClientData.JunTuanId; if (client.ClientData.JunTuanId > 0) { if (!this.RuntimeData.JunTuanGVoiceDict.TryGetValue(junTuanId, out priority)) { priority = JunTuanClient.getInstance().GetJunTuanGVoicePrioritys(bhid); this.RuntimeData.JunTuanGVoiceDict[junTuanId] = priority; } client.ClientData.GVoicePrioritys = priority; } } } resultData.RoleIdList = priority; client.sendCmd <GVoicePriorityData>(nID, resultData, false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public bool ProcessGetGVoiceSceneDataCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { GVoiceSceneData result = new GVoiceSceneData(); GVoicePriorityData priorityData = null; int bhid = client.ClientData.Faction; int junTuanId = client.ClientData.JunTuanId; int mapCode = client.ClientData.MapCode; MapTypes mapType = Global.GetMapType(mapCode); lock (this.RuntimeData.Mutex) { int type; if (this.RuntimeData.MapCode2GVoiceTypeDict.TryGetValue(mapCode, out type)) { string priority = null; if (type == 1) { if (!this.RuntimeData.ZhanMengGVoiceDict.TryGetValue(bhid, out priority)) { string[] ret = Global.SendToDB <int>(1112, bhid, client.ServerId); if (ret != null && ret.Length >= 1) { priority = ret[0]; this.RuntimeData.ZhanMengGVoiceDict[bhid] = priority; } } client.ClientData.GVoicePrioritys = priority; priorityData = new GVoicePriorityData { ID = bhid, Type = type, RoleIdList = priority }; } else if (type == 2) { if (!this.RuntimeData.JunTuanGVoiceDict.TryGetValue(junTuanId, out priority)) { priority = JunTuanClient.getInstance().GetJunTuanGVoicePrioritys(bhid); this.RuntimeData.JunTuanGVoiceDict[junTuanId] = priority; } client.ClientData.GVoicePrioritys = priority; priorityData = new GVoicePriorityData { ID = junTuanId, Type = type, RoleIdList = priority }; } int group; this.RuntimeData.MapCode2GVoiceGroupDict.TryGetValue(mapCode, out group); string id; if (mapType == MapTypes.Normal) { id = string.Format("{0}_{1}_{2}", GameManager.ServerId, group, priorityData.ID); } else { id = string.Format("{0}_{1}_{2}_{3}", new object[] { GameManager.ServerId, group, client.ClientData.FuBenSeqID, priorityData.ID }); } GVoiceSceneData data; if (!this.RuntimeData.FuBenSeqID2RoomName.TryGetValue(id, out data)) { data = new GVoiceSceneData(); data.RoomName = Guid.NewGuid().ToString("N"); this.RuntimeData.FuBenSeqID2RoomName[id] = data; } result.RoomName = data.RoomName; result.SDKGameID = this.RuntimeData.SDKGameID; result.SDKKey = this.RuntimeData.SDKKey; } } if (priorityData != null) { client.sendCmd <GVoicePriorityData>(1112, priorityData, false); } client.sendCmd <GVoiceSceneData>(nID, result, false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }