Exemplo n.º 1
0
        //发放每日奖励
        public void SendReward()
        {
            var item = new ItemBaseData();

            item.ItemId = -1;
            var args = new StringArray();

            foreach (var server in ServerAllianceManager.Servers.Values)
            {
                foreach (var data in server.mDBData.Values)
                {
                    var alliance = ServerAllianceManager.GetAllianceById(data.Occupant);
                    if (alliance == null)
                    {
                        continue;
                    }
                    var serverAlliance = alliance.Dad;
                    foreach (var id in alliance.mDBData.Members)
                    {
                        var member = serverAlliance.GetCharacterData(id);
                        if (member == null)
                        {
                            continue;
                        }
                        var tbGA = Table.GetGuildAccess(member.Ladder);
                        if (tbGA == null)
                        {
                            Logger.Error("In SendReward().tbGA == null");
                            continue;
                        }
                        SendMailToCharacter(id, tbGA.MailId, item, args);
                    }
                }
            }
        }
Exemplo n.º 2
0
        // 按对应轮次的比赛积分进行排名,积分相同时则比较战力
        private IOrderedEnumerable <KeyValuePair <int, long> > GetSortScore(DBUnionBattleData dbData)
        {
            if (dbData == null)
            {
                return(null);
            }

            var fpDict = new Dictionary <int, long>();

            foreach (var allianceId in dbData.EnrollList)
            {
                long w = 0L;
                int  score;
                if (dbData.Scores.TryGetValue(allianceId, out score))
                {
                    w += (score * 1000000000L);
                }

                var alliance = ServerAllianceManager.GetAllianceById(allianceId);
                if (alliance != null)
                {
                    w += alliance.GetTotleFightPoint();
                }
                fpDict[allianceId] = w;
            }
            var sortList = fpDict.OrderBy(s => s.Value);

            return(sortList);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 报名成功
        /// </summary>
        private void OnEnrollSuccess(int allianceId)
        {
            var alliance = ServerAllianceManager.GetAllianceById(allianceId);

            if (alliance == null)
            {
                return;
            }

            var tbMail  = Table.GetMail(5001);
            var message = Utils.WrapDictionaryId(50001020);

            foreach (var memId in alliance.mDBData.Members)
            {
                if (tbMail != null)
                {
                    Utility.SendMail(memId, tbMail.Title, tbMail.Text, new Dict_int_int_Data());
                }

                TeamCharacterProxy toCharacterProxy;
                if (TeamServer.Instance.ServerControl.Proxys.TryGetValue(memId, out toCharacterProxy))
                {
                    var chattoCharacterProxy = toCharacterProxy as TeamProxy;
                    if (chattoCharacterProxy != null)
                    {
                        chattoCharacterProxy.SyncAllianceChatMessage((int)eChatChannel.Guild, 0, string.Empty,
                                                                     new ChatMessageContent {
                            Content = message
                        });
                    }
                }
            }
        }
Exemplo n.º 4
0
        public void OnAllianceEvent(LodeManager _this, int allianceId, int EventType, int param = 1)
        {
            if (_this.mDbData.ActivityInfo.ActivityStatus == 0)
            {
                return;
            }
            var alliance = ServerAllianceManager.GetAllianceById(allianceId);

            if (alliance == null)
            {
                return;
            }
            bool bSend            = false;
            DBAllianceTaskList db = GetAllianceActive(_this, alliance);

            for (int i = 0; i < _this.mDbData.ActivityInfo.aTaskIDs.Count; i++)
            {
                int            id = _this.mDbData.ActivityInfo.aTaskIDs[i];
                DBAllianceTask t;
                if (db.TaskList.TryGetValue(id, out t) == false)
                {
                    continue;
                }
                if (t.Type == EventType && t.Count < t.Need)
                {
                    t.Count += param;
                    if (t.Count > t.Need)
                    {
                        t.Count = t.Need;
                    }
                }
                if (t.Count >= t.Need)
                {
                    bSend = true;
                }
            }
            if (EventType == eHoldFlag)
            {
                db.Flags++;
            }

            if (bSend == true)
            {
                foreach (var id in alliance.mDBData.Members)
                {
                    TeamCharacterProxy Proxy;
                    if (TeamServer.Instance.ServerControl.Proxys.TryGetValue(id, out Proxy))
                    {
                        if (null != Proxy)
                        {
                            Proxy.SCNotifyAllianceActiveTask(_this.mDbData.ActivityInfo);
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        public void AllianceWarBegin(int serverId, DateTime time)
        {
            var allianceManager = ServerAllianceManager.GetAllianceByServer(serverId);

            if (allianceManager == null)
            {
                return;
            }
            DBServerAllianceData data;

            if (allianceManager.mDBData.TryGetValue(serverId, out data))
            {
                data.Challengers.Clear();
                //排序整理出前两名
                var datas = data.BidDatas;
                var order = datas.OrderByDescending(o => o.Value);
                var e     = order.GetEnumerator();
                for (var i = 0; e.MoveNext(); i++)
                {
                    var cur = e.Current;
                    var a   = ServerAllianceManager.GetAllianceById(cur.Key);
                    if (a == null)
                    {
                        Logger.Error("In BidOver().alliance == null! id = {0}", cur.Key);
                        continue;
                    }
                    if (i < 2)
                    {
                        data.Challengers.Add(cur.Key);
                    }
                }
                allianceManager.GetServerData(data.ServerId).LastBattleTime = 0;
                allianceManager.SetFlag(data.ServerId);

                var war = AllianceWarManager.WarDatas[serverId];
                war.BidOver();
                war.BattleFieldGuid = 0;

                if (GameMaster.StartActivityTrigger != null)
                {
                    TeamServerControl.tm.DeleteTrigger(GameMaster.StartActivityTrigger);
                }
                GameMaster.StartActivityTrigger = TeamServerControl.tm.CreateTrigger(time, war.StartActivity);
                if (GameMaster.StartFightTrigger != null)
                {
                    TeamServerControl.tm.DeleteTrigger(GameMaster.StartFightTrigger);
                }
                GameMaster.StartFightTrigger = TeamServerControl.tm.CreateTrigger(time.AddMinutes(10),
                                                                                  war.StartActivity);
            }
        }
Exemplo n.º 6
0
        public void OnAllianceAddScore(LodeManager _this, int allianceId, int add)
        {
            var alliance = ServerAllianceManager.GetAllianceById(allianceId);

            if (alliance == null)
            {
                return;
            }
            if (_this.mDbData.ActivityInfo.ActivityStatus == 1)
            {//活动数据
                DBAllianceTaskList db = GetAllianceActive(_this, alliance);
                if (db == null)
                {
                    return;
                }
                db.Score += add;
            }
        }
Exemplo n.º 7
0
        //
        public void BidOver(AllianceWar _this)
        {
            var am = ServerAllianceManager.GetAllianceByServer(_this.ServerId);

            if (am == null)
            {
                Logger.Error("StartActivity not find GetAllianceByServer!server={0},", _this.ServerId);
                return;
            }
            DBServerAllianceData data;

            if (!am.mDBData.TryGetValue(_this.ServerId, out data))
            {
                Logger.Error("In BidOver() can't find data!");
                return;
            }
            am.BidOver();
            var msgData = new AllianceWarChallengerData();

            foreach (var id in data.Challengers)
            {
                var allliance = ServerAllianceManager.GetAllianceById(id);
                if (allliance == null)
                {
                    Logger.Error("In BidOver(). alliance == null!! id = {0}", id);
                    continue;
                }
                msgData.ChallengerId.Add(id);
                msgData.ChallengerName.Add(allliance.Name);
            }
            _this.SetStatus((int)eAllianceWarState.WaitEnter);

            var sId = SceneExtension.GetServerLogicId(_this.ServerId);

            TeamServer.Instance.TeamAgent.NotifyAllianceWarChallengerData((uint)sId, msgData);
            PlayerLog.WriteLog((ulong)LogType.AllianceWar, "BidOver(), ServerId = {0}, Challengers = {1}",
                               _this.ServerId, data.Challengers.GetDataString());
        }
Exemplo n.º 8
0
        public ErrorCodes OnPlayerApplyMissionReward(LodeManager _this, int allianceId, ulong charId, int missionId, int meritPoint, int add, FieldRankBaseData data)
        {
            if (_this.mDbData.ActivityInfo.ActivityStatus == 0)
            {
                return(ErrorCodes.Error_ActivityOver);
            }
            var tb = Table.GetObjectTable(missionId);

            if (allianceId > 0)
            {
                var alliance = ServerAllianceManager.GetAllianceById(allianceId);
                if (alliance == null)
                {
                    return(ErrorCodes.Error_CharacterNoAlliance);
                }
                if (tb.TaskType == 1)
                {
                    ErrorCodes err = CheckAllianceMission(_this, alliance, missionId);
                    if (err != ErrorCodes.OK)
                    {
                        return(err);
                    }
                }

                //if (meritPoint > 0)
                //{
                //    var member = alliance.Dad.GetCharacterData(charId);
                //    if (member != null)
                //    {
                //        member.MeritPoint += meritPoint;
                //    }
                //}
            }

            OnPlayerAddScore(_this, charId, allianceId, add, data);

            return(ErrorCodes.OK);
        }
Exemplo n.º 9
0
        //战斗结束
        public void BattleOver(AllianceWar _this, int occupantId)
        {
            _this.SetStatus((int)eAllianceWarState.WaitBid);

            var allianceManager = ServerAllianceManager.GetAllianceByServer(_this.ServerId);
            var dbData          = allianceManager.GetServerData(_this.ServerId);
            var oldOccupant     = dbData.Occupant;

            dbData.Challengers.Clear();
            dbData.LastBattleTime = DateTime.Now.ToBinary();
            allianceManager.SetFlag(_this.ServerId);

            PlayerLog.WriteLog((ulong)LogType.AllianceWar,
                               "BattleOver(), ServerId = {0}, occupantId = {1}, old occupantId = {2}", _this.ServerId, occupantId,
                               dbData.Occupant);

            //如果城主没变就返回
            if (dbData.Occupant == occupantId)
            {
                return;
            }

            dbData.Occupant = occupantId;
            var alliance = ServerAllianceManager.GetAllianceById(occupantId);

            if (alliance != null)
            {
                //通知全服,城主变了
                var data = new AllianceWarOccupantData();
                data.OccupantId   = occupantId;
                data.OccupantName = alliance.Name;
                TeamServer.Instance.TeamAgent.NotifyAllianceWarOccupantData((uint)_this.ServerId, data);

                //修改玩家的称号
                var change0 = new Dict_int_int_Data();
                var tbTitle = Table.GetNameTitle(5000);
                change0.Data.Add(tbTitle.FlagId, 1);

                var change1 = new Dict_int_int_Data();
                tbTitle = Table.GetNameTitle(5001);
                change1.Data.Add(tbTitle.FlagId, 1);

                var dad = alliance.Dad;
                foreach (var id in alliance.mDBData.Members)
                {
                    var m = dad.GetCharacterData(id);
                    if (m == null)
                    {
                        continue;
                    }
                    if (m.Ladder == (int)eAllianceLadder.Chairman)
                    {
                        ChangeNameTitle(id, change0);
                    }
                    else
                    {
                        ChangeNameTitle(id, change1);
                    }
                }
            }

            //修改玩家的称号
            alliance = ServerAllianceManager.GetAllianceById(oldOccupant);
            if (alliance != null)
            {
                var change  = new Dict_int_int_Data();
                var tbTitle = Table.GetNameTitle(5000);
                change.Data.Add(tbTitle.FlagId, 0);
                tbTitle = Table.GetNameTitle(5001);
                change.Data.Add(tbTitle.FlagId, 0);
                foreach (var id in alliance.mDBData.Members)
                {
                    ChangeNameTitle(id, change);
                }
            }

            //通知logic,本服的王城占领者变了
            NotifyAllianceWarInfo(_this, occupantId);
            Init(_this);
        }
Exemplo n.º 10
0
        /// <summary>
        /// 发奖
        /// </summary>
        private void Award()
        {
            var dbData = UnionBattleManager.mDBData;

            // 参与奖
            for (var i = 1; i < dbData.Group4.Count; ++i)
            {
                var groupData = dbData.Group4[i];
                //foreach (var allianceId in groupData.Ids)
                //{
                //    var alliance = ServerAllianceManager.GetAllianceById(allianceId);
                //    if (alliance != null)
                //    {
                //        foreach (var member in alliance.mDBData.Members)
                //        {
                //            TeamServer.Instance.LogicAgent.SSSendMailById(member, 999,
                //                (int)SendToCharacterMailType.Normal, string.Empty, string.Empty);
                //        }
                //    }
                //}
            }

            var finalRank = new List <int>();

            finalRank.Add(dbData.FinalVictory);
            foreach (var i in dbData.SemiVictory)
            {
                if (!finalRank.Contains(i))
                {
                    finalRank.Add(i);
                }
            }

            foreach (var i in dbData.QuarterVictory)
            {
                if (!finalRank.Contains(i))
                {
                    finalRank.Add(i);
                }
            }

            //foreach (var i in dbData.FinalGroup[0].Ids)
            //{
            //    if (!finalRank.Contains(i))
            //        finalRank.Add(i);
            //}

            foreach (var allianceId in finalRank)
            {
                var alliance = ServerAllianceManager.GetAllianceById(allianceId);
                if (alliance != null)
                {
                    foreach (var member in alliance.mDBData.Members)
                    {
                        TeamServer.Instance.LogicAgent.SSSendMailById(member, 999,
                                                                      (int)SendToCharacterMailType.Normal, string.Empty, string.Empty);
                    }
                }
            }
            UnionBattleManager.Dirty = true;
        }
Exemplo n.º 11
0
        public void FinalLogic(LodeManager _this)
        {
            #region 给排行前的玩家添加称号
            //给排行前的玩家添加称号
            do
            {
                List <DBAllianceTaskList> l = new List <DBAllianceTaskList>();
                List <int> lName            = new List <int>();
                foreach (var v in _this.mDbData.ActivityInfo.AllianceTaskList)
                {
                    lName.Add(v.Key);
                }
                for (int i = 0; i < lName.Count; i++)
                {
                    l.Add(_this.mDbData.ActivityInfo.AllianceTaskList[lName[i]]);
                }
                l.Sort((a, b) =>
                {
                    if (b.Flags > a.Flags)
                    {
                        return(1);
                    }
                    if (b.Flags < a.Flags)
                    {
                        return(-1);
                    }
                    return(b.Score - a.Score);
                });
                if (l.Count == 0)
                {
                    break;
                }
                var al = l[0];

                var alliance = ServerAllianceManager.GetAllianceById(al.Id);
                if (alliance == null)
                {
                    break;
                }
                {
                    Dictionary <int, Dict_int_int_Data> title = new Dictionary <int, Dict_int_int_Data>();
                    {
                        var tb = Table.GetNameTitle(8000);
                        if (tb == null)
                        {
                            break;
                        }
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add((int)eAllianceLadder.Chairman, tmp);
                    }
                    {
                        var tb = Table.GetNameTitle(8001);
                        if (tb == null)
                        {
                            break;
                        }
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add((int)eAllianceLadder.ViceChairman, tmp);
                    }
                    {
                        var tb = Table.GetNameTitle(8002);
                        if (tb == null)
                        {
                            break;
                        }
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add((int)eAllianceLadder.Elder, tmp);
                    }
                    {
                        var tb = Table.GetNameTitle(8003);
                        if (tb == null)
                        {
                            break;
                        }
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add((int)eAllianceLadder.Member, tmp);
                    }

                    var dad = alliance.Dad;
                    foreach (var id in alliance.mDBData.Members)
                    {
                        var m = dad.GetCharacterData(id);
                        if (m == null)
                        {
                            continue;
                        }
                        if (title.ContainsKey(m.Ladder) == true)
                        {
                            ChangeNameTitle(id, title[m.Ladder]);
                        }
                    }
                }
            } while (false);

            #endregion
            #region 给排行前的工会中的玩家添加称号
            //给排行前的工会中的玩家添加称号
            {
                Dictionary <int, Dict_int_int_Data> title = new Dictionary <int, Dict_int_int_Data>();
                {
                    var tb = Table.GetNameTitle(9000);
                    if (tb != null)
                    {
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add(0, tmp);
                    }
                }
                {
                    var tb = Table.GetNameTitle(9001);
                    if (tb != null)
                    {
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add(1, tmp);
                    }
                }
                {
                    var tb = Table.GetNameTitle(9002);
                    if (tb != null)
                    {
                        Dict_int_int_Data tmp = new Dict_int_int_Data();
                        tmp.Data.Add(tb.FlagId, 1);
                        title.Add(2, tmp);
                    }
                }

                for (int i = 0; i < 3 && i < _this.mDbData.ActivityInfo.PlayerTaskList.Count; i++)
                {
                    var id = _this.mDbData.ActivityInfo.PlayerTaskList[i].guid;
                    if (title.ContainsKey(i) == true)
                    {
                        ChangeNameTitle(id, title[i]);
                    }
                }
            }
            #endregion
        }