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);
 }