public void UnionAllyInit(GameClient client) { if (!KuaFuManager.KuaFuWorldKuaFuGameServer) { lock (AllyClient.getInstance()._Mutex) { int unionID = client.ClientData.Faction; int serverID = client.ServerId; bool isKF = client.ClientSocket.IsKuaFuLogin; if (unionID > 0) { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, serverID); if (unionData != null && this.IsAllyOpen(unionData.QiLevel)) { EAlly result = AllyClient.getInstance().HUnionAllyInit(unionID, isKF); if (result == EAlly.EAddUnion) { this.UnionDataChange(unionID, serverID, false, 0); } else if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:数据初始化失败 id={0}", result), null, true); } List <AllyData> list = AllyClient.getInstance().HAllyDataList(unionID, EAllyDataType.Ally); if (list != null && list.Count > 0) { client.ClientData.AllyList = list; } } } } } }
public bool ProcessAllyAgreeCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { bool isCheck = CheckHelper.CheckCmdLength(client, nID, cmdParams, 2); if (!isCheck) { return(false); } int unionID = Convert.ToInt32(cmdParams[0]); EAllyOperate operateType = (EAllyOperate)Convert.ToInt32(cmdParams[1]); EAlly state = AllyOperate(client, unionID, operateType); client.sendCmd(nID, ((int)state).ToString()); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false); } return(false); }
private EAlly AllyOperate(GameClient client, int targetID, EAllyOperate operateType) { EAlly result2; if (targetID <= 0) { result2 = EAlly.ENoTargetUnion; } else { int unionID = client.ClientData.Faction; if (unionID <= 0) { result2 = EAlly.EUnionJoin; } else { BangHuiDetailData myUnion = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (myUnion == null) { result2 = EAlly.EUnionJoin; } else if (!this.IsAllyOpen(myUnion.QiLevel)) { result2 = EAlly.EUnionLevel; } else if (myUnion.BZRoleID != client.ClientData.RoleID) { result2 = EAlly.ENotLeader; } else { int countSum = 0; if (operateType == EAllyOperate.Agree) { int countAlly = AllyClient.getInstance().AllyCount(unionID); int countRequest = AllyClient.getInstance().AllyRequestCount(unionID); if (countAlly > 0 && this.IsAllyMax(countAlly)) { return(EAlly.EAllyMax); } countSum = countAlly + countRequest; if (countSum > 0 && this.IsAllyMax(countSum)) { return(EAlly.EAllyMax); } } EAlly result = AllyClient.getInstance().HAllyOperate(unionID, targetID, operateType); if (result == EAlly.AllyAgree) { client.sendCmd(1048, (countSum + 1).ToString(), false); } result2 = result; } } } return(result2); }
private EAlly AllyOperate(GameClient client, int targetID, EAllyOperate operateType) { if (targetID <= 0) { return(EAlly.ENoTargetUnion); } int unionID = client.ClientData.Faction; if (unionID <= 0) { return(EAlly.EUnionJoin); } BangHuiDetailData myUnion = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (myUnion == null) { return(EAlly.EUnionJoin); } if (!IsAllyOpen(myUnion.QiLevel)) { return(EAlly.EUnionLevel); } if (myUnion.BZRoleID != client.ClientData.RoleID) { return(EAlly.ENotLeader); } int countSum = 0; if (operateType == EAllyOperate.Agree) { int countAlly = AllyClient.getInstance().AllyCount(unionID); int countRequest = AllyClient.getInstance().AllyRequestCount(unionID); if (countAlly > 0 && IsAllyMax(countAlly)) { return(EAlly.EAllyMax); } countSum = countAlly + countRequest; if (countSum > 0 && IsAllyMax(countSum)) { return(EAlly.EAllyMax); } } EAlly result = (EAlly)AllyClient.getInstance().HAllyOperate(unionID, targetID, operateType); if (result == EAlly.AllyAgree) { countSum++; client.sendCmd((int)TCPGameServerCmds.CMD_SPR_UNION_ALLY_NUM, countSum.ToString()); } return(result); }
public EAlly HUnionDataChange(AllyData unionData) { EAlly result = EAlly.EFail; try { lock (_Mutex) { IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(result); } try { result = (EAlly)kuaFuService.UnionDataChange(_ClientInfo.ServerId, unionData); if (result == EAlly.Succ) { int unionID = unionData.UnionID; DateTime oldTime; if (_unionDic.TryGetValue(unionID, out oldTime)) { _unionDic[unionID] = DateTime.Now; return(EAlly.Succ); } else { _unionDic.TryAdd(unionID, DateTime.Now); HAllyDataList(unionID, EAllyDataType.Ally); HAllyDataList(unionID, EAllyDataType.Request); HAllyDataList(unionID, EAllyDataType.Accept); } } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public void UnionDataChange(int unionID, int serverID, bool isDel = false, int unionLevel = 0) { if (!KuaFuManager.KuaFuWorldKuaFuGameServer) { if (unionID > 0) { if (isDel) { if (this.IsAllyOpen(unionLevel)) { EAlly result = AllyClient.getInstance().HUnionDel(unionID); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟{0}解散失败 id={1}", unionID, result), null, true); } } } else { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, serverID); if (unionData != null && this.IsAllyOpen(unionData.QiLevel)) { AllyData data = new AllyData(); data.UnionID = unionData.BHID; data.UnionZoneID = unionData.ZoneID; data.UnionName = unionData.BHName; data.UnionLevel = unionData.QiLevel; data.UnionNum = unionData.TotalNum; data.LeaderID = unionData.BZRoleID; data.LeaderName = unionData.BZRoleName; SafeClientData clientData = Global.GetSafeClientDataFromLocalOrDB(data.LeaderID); if (null != clientData) { data.LeaderZoneID = clientData.ZoneID; } else { data.LeaderZoneID = unionData.ZoneID; } EAlly result = AllyClient.getInstance().HUnionDataChange(data); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟数据变更失败 id={0}", result), null, true); } } } } } }
public void UnionDataChange(int unionID, int serverID, bool isDel = false, int unionLevel = 0) { if (unionID <= 0) { return; } if (isDel) { if (!IsAllyOpen(unionLevel)) { return; } EAlly result = AllyClient.getInstance().HUnionDel(unionID); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟{0}解散失败 id={1}", unionID, result)); } } else { BangHuiDetailData unionData = Global.GetBangHuiDetailData(-1, unionID, serverID); if (unionData == null || !IsAllyOpen(unionData.QiLevel)) { return; } AllyData data = new AllyData(); data.UnionID = unionData.BHID; data.UnionZoneID = unionData.ZoneID; data.UnionName = unionData.BHName; data.UnionLevel = unionData.QiLevel; data.UnionNum = unionData.TotalNum; data.LeaderID = unionData.BZRoleID; data.LeaderName = unionData.BZRoleName; var clientData = Global.GetSafeClientDataFromLocalOrDB(data.LeaderID); data.LeaderZoneID = clientData.ZoneID; EAlly result = AllyClient.getInstance().HUnionDataChange(data); if (result != EAlly.Succ) { LogManager.WriteLog(LogTypes.Error, string.Format("战盟结盟:战盟数据变更失败 id={0}", result)); } } }
public EAlly HUnionDataChange(AllyData unionData) { EAlly result = EAlly.EFail; try { lock (this._Mutex) { IAllyService kuaFuService = this.GetKuaFuService(false); if (null == kuaFuService) { return(result); } try { result = (EAlly)kuaFuService.UnionDataChange(this._ClientInfo.ServerId, unionData); if (result == EAlly.Succ) { int unionID = unionData.UnionID; DateTime oldTime; if (this._unionDic.TryGetValue(unionID, out oldTime)) { this._unionDic[unionID] = TimeUtil.NowDateTime(); return(EAlly.Succ); } this._unionDic.TryAdd(unionID, TimeUtil.NowDateTime()); this.HAllyDataList(unionID, EAllyDataType.Ally); this.HAllyDataList(unionID, EAllyDataType.Request); this.HAllyDataList(unionID, EAllyDataType.Accept); } } catch (Exception ex) { this.ResetKuaFuService(); } } } catch (Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public bool ProcessAllyRemoveCmd(GameClient client, int nID, byte[] bytes, string[] cmdParams) { try { if (!CheckHelper.CheckCmdLength(client, nID, cmdParams, 1)) { return(false); } int unionID = Convert.ToInt32(cmdParams[0]); EAlly state = this.AllyOperate(client, unionID, EAllyOperate.Remove); int num = (int)state; client.sendCmd(nID, num.ToString(), false); return(true); } catch (Exception ex) { DataHelper.WriteFormatExceptionLog(ex, Global.GetDebugHelperInfo(client.ClientSocket), false, false); } return(false); }
public EAlly HUnionDel(int unionID) { EAlly result = EAlly.EFail; try { lock (_Mutex) { IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(result); } try { result = (EAlly)kuaFuService.UnionDel(_ClientInfo.ServerId, unionID); if (result == EAlly.Succ) { DateTime oldTime; List <AllyData> list; _unionDic.TryRemove(unionID, out oldTime); _allyDic.TryRemove(unionID, out list); _requestDic.TryRemove(unionID, out list); _acceptDic.TryRemove(unionID, out list); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
public EAlly HAllyOperate(int unionID, int targetID, EAllyOperate operateType) { EAlly result = EAlly.EFail; try { lock (_Mutex) { if (!VersionIsEqual()) { _unionDic.Clear(); _allyDic.Clear(); _requestDic.Clear(); _acceptDic.Clear(); _CoreInterface.GetEventSourceInterface().fireEvent(new KFNotifyAllyStartGameEvent(), (int)_sceneType); return(result); } ConcurrentDictionary <int, List <AllyData> > dic = null; switch (operateType) { case EAllyOperate.Agree: case EAllyOperate.Refuse: dic = _acceptDic; break; case EAllyOperate.Cancel: dic = _requestDic; break; case EAllyOperate.Remove: dic = _allyDic; break; } List <AllyData> list = null; if (!dic.TryGetValue(unionID, out list)) { return(EAlly.ENoTargetUnion); } AllyData targetData = dic[unionID].Find( delegate(AllyData data) { return(data.UnionID == targetID); }); if (targetData == null) { return(EAlly.ENoTargetUnion); } IAllyService kuaFuService = GetKuaFuService(); if (null == kuaFuService) { return(EAlly.EServer); } try { result = (EAlly)kuaFuService.AllyOperate(_ClientInfo.ServerId, unionID, targetID, (int)operateType); if (result == EAlly.AllyAgree || result == EAlly.AllyRefuse || result == EAlly.AllyCancelSucc || result == EAlly.AllyRemoveSucc) { dic[unionID].Remove(targetData); } } catch (System.Exception ex) { ResetKuaFuService(); } } } catch (System.Exception ex) { LogManager.WriteExceptionUseCache(ex.ToString()); } return(result); }
private EAlly AllyRequest(GameClient client, int zoneID, string unionName) { EAlly result2; if (zoneID <= 0) { result2 = EAlly.EZoneID; } else if (string.IsNullOrEmpty(unionName)) { result2 = EAlly.EName; } else { int unionID = client.ClientData.Faction; if (unionID <= 0) { result2 = EAlly.EUnionJoin; } else { BangHuiDetailData myUnion = Global.GetBangHuiDetailData(-1, unionID, client.ServerId); if (myUnion == null) { result2 = EAlly.EUnionJoin; } else if (!this.IsAllyOpen(myUnion.QiLevel)) { result2 = EAlly.EUnionLevel; } else if (myUnion.ZoneID == zoneID && myUnion.BHName == unionName) { result2 = EAlly.EIsSelf; } else if (myUnion.BZRoleID != client.ClientData.RoleID) { result2 = EAlly.ENotLeader; } else if (!this.UnionMoneyIsMore(myUnion.TotalMoney)) { result2 = EAlly.EMoney; } else if (AllyClient.getInstance().UnionIsAlly(unionID, zoneID, unionName)) { result2 = EAlly.EIsAlly; } else if (AllyClient.getInstance().UnionIsRequest(unionID, zoneID, unionName)) { result2 = EAlly.EMore; } else if (AllyClient.getInstance().UnionIsAccept(unionID, zoneID, unionName)) { result2 = EAlly.EMore; } else { int countAlly = AllyClient.getInstance().AllyCount(unionID); int countRequest = AllyClient.getInstance().AllyRequestCount(unionID); if (countAlly > 0 && this.IsAllyMax(countAlly)) { result2 = EAlly.EAllyMax; } else { int countSum = countAlly + countRequest; if (countSum > 0 && this.IsAllyMax(countSum)) { result2 = EAlly.EAllyRequestMax; } else { EAlly result = AllyClient.getInstance().HAllyRequest(unionID, zoneID, unionName); if (result == EAlly.AllyRequestSucc) { int bhZoneID = 0; if (!GameManager.ClientMgr.SubBangHuiTongQian(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, this.AllyCostMoney, out bhZoneID)) { LogManager.WriteLog(LogTypes.Error, "战盟结盟 申请 扣除战盟资金失败", null, true); } } result2 = result; } } } } } return(result2); }