Exemplo n.º 1
0
 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;
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
 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);
                     }
                 }
             }
         }
     }
 }
Exemplo n.º 7
0
        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));
                }
            }
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
 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);
 }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }