//发放每日奖励 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); } } } }
// 按对应轮次的比赛积分进行排名,积分相同时则比较战力 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); }
/// <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 }); } } } }
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); } } } } }
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); } }
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; } }
// 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()); }
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); }
//战斗结束 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); }
/// <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; }
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 }