public int SetLingZhu(int roleId, int lingDiType, int junTuanId, string junTuanName, int zhiWu, byte[] roledata) { try { int oldRid = 0; LingDiData data = new LingDiData(); lock (this.Mutex) { if (this.LingDiDataList.Count < 2 || this.LingDiDataList[0] == null || null == this.LingDiDataList[1]) { return(0); } oldRid = this.LingDiDataList[lingDiType].RoleId; this.LingDiDataList[lingDiType].RoleId = roleId; this.LingDiDataList[lingDiType].OpenCount = 0; this.LingDiDataList[lingDiType].BeginTime = DateTime.MaxValue; this.LingDiDataList[lingDiType].EndTime = DateTime.MinValue; foreach (LingDiShouWei item in this.LingDiDataList[lingDiType].ShouWeiList) { item.State = 0; item.FreeBuShuTime = DateTime.MinValue; } this.LingDiDataList[lingDiType].JunTuanId = junTuanId; this.LingDiDataList[lingDiType].RoleData = roledata; this.LingDiDataList[lingDiType].JunTuanName = junTuanName; data = this.LingDiDataList[lingDiType]; } string optTime = TimeUtil.NowDateTime().ToString(); string sql = string.Format("update t_lingditequan set lingzhu=0,opttime='{2}' where rid={0} and lingditype={1};", oldRid, lingDiType, optTime); sql += string.Format("replace into t_lingditequan(rid,lingditype,juntuanid,juntuanname,lingzhu,roledata,opttime) values ({0},{1},{2},'{3}',{4},@roledata,'{5}');", new object[] { roleId, lingDiType, junTuanId, junTuanName, zhiWu, optTime }); int ret = DbHelperMySQL.ExecuteSqlInsertImg(sql, new List <Tuple <string, byte[]> > { new Tuple <string, byte[]>("roledata", roledata) }); if (ret > 0) { ClientAgentManager.Instance().BroadCastAsyncEvent(GameTypes.JunTuan, new AsyncDataItem(KuaFuEventTypes.SyncLingDiData, new object[] { data }), 0); return(1); } return(ret); } catch { } return(0); }
public int SetShouWeiTime(int roleId, int lingDiType, DateTime openTime, int index) { int ret = 0; try { LingDiData data = new LingDiData(); string shouWei = ""; lock (this.Mutex) { if (this.LingDiDataList[lingDiType] == null) { return(-8); } data = this.LingDiDataList[lingDiType]; if (this.LingDiDataList[lingDiType].ShouWeiList.Count < index + 1) { return(-8); } data.ShouWeiList[index].State = 2; data.ShouWeiList[index].FreeBuShuTime = DateTime.MaxValue; shouWei = data.ShouWeiList[0].State + "," + data.ShouWeiList[0].FreeBuShuTime.ToString(); for (int i = 1; i < data.ShouWeiList.Count; i++) { object obj = shouWei; shouWei = string.Concat(new object[] { obj, "|", data.ShouWeiList[i].State, ",", data.ShouWeiList[i].FreeBuShuTime.ToString() }); } } string upd = string.Format("update t_lingditequan set shouwei='{0}' where rid={1} and lingditype={2}", shouWei, roleId, lingDiType); ret = DbHelperMySQL.ExecuteSql(upd); if (ret > 0) { return(1); } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, string.Format("初始化跨服地图{0}时出错!!!", "领地采集"), null, true); return(-7); } return(ret); }
public int SetDoubleOpenTime(int roleId, int lingDiType, DateTime openTime, int openSeconds) { LingDiData data = null; lock (this.Mutex) { if (this.LingDiDataList[lingDiType] == null) { return(-8); } this.LingDiDataList[lingDiType].BeginTime = openTime; this.LingDiDataList[lingDiType].EndTime = openTime.AddSeconds((double)openSeconds); this.LingDiDataList[lingDiType].OpenCount++; data = this.LingDiDataList[lingDiType]; } int ret = 0; try { string upd = string.Format("update t_lingditequan set begintime='{0}',endtime='{1}',opencount={2},opttime='{5}' where rid={3} and lingditype={4}", new object[] { data.BeginTime, data.EndTime, data.OpenCount, roleId, lingDiType, TimeUtil.NowDateTime().ToString() }); ret = DbHelperMySQL.ExecuteSql(upd); if (ret > 0) { ClientAgentManager.Instance().BroadCastAsyncEvent(GameTypes.JunTuan, new AsyncDataItem(KuaFuEventTypes.SyncLingDiDoubleOpenData, new object[] { data }), 0); return(1); } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, string.Format("初始化跨服地图{0}时出错!!!", "领地采集"), null, true); return(-7); } return(ret); }
public void InitConfig() { try { this.RoleNumMax = (int)KuaFuServerManager.systemParamsList.GetParamValueIntByName("ManorMaxPlayer", -1); LingDiData diGong = new LingDiData { RoleId = 0, LingDiType = 0, JunTuanId = -1, JunTuanName = "", BeginTime = DateTime.MaxValue, EndTime = DateTime.MinValue, OpenCount = 0, ShouWeiList = new List <LingDiShouWei>(), RoleData = null }; MySqlDataReader sdr = DbHelperMySQL.ExecuteReader(string.Format("select * from t_lingditequan where lingzhu=1 and lingditype=0", new object[0]), false); if (sdr.Read()) { diGong.RoleId = Convert.ToInt32(sdr["rid"].ToString()); diGong.LingDiType = 0; diGong.JunTuanId = Convert.ToInt32(sdr["juntuanid"].ToString()); diGong.JunTuanName = sdr["juntuanname"].ToString(); diGong.BeginTime = DateTime.Parse(sdr["begintime"].ToString()); diGong.EndTime = DateTime.Parse(sdr["endtime"].ToString()); diGong.OpenCount = Convert.ToInt32(sdr["opencount"].ToString()); string[] shouwei = sdr["shouwei"].ToString().Split(new char[] { '|' }); foreach (string shouWeiItem in shouwei) { string[] item = shouWeiItem.Split(new char[] { ',' }); if (item.Length >= 2) { diGong.ShouWeiList.Add(new LingDiShouWei { State = Convert.ToInt32(item[0]), FreeBuShuTime = DateTime.Parse(item[1]) }); } } if (!sdr.IsDBNull(sdr.GetOrdinal("roledata"))) { diGong.RoleData = (byte[])sdr["roledata"]; } } else { diGong.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); diGong.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); diGong.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); diGong.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); } LingDiData huangMo = new LingDiData { RoleId = 0, LingDiType = 1, JunTuanId = -1, JunTuanName = "", BeginTime = DateTime.MaxValue, EndTime = DateTime.MinValue, OpenCount = 0, ShouWeiList = new List <LingDiShouWei>(), RoleData = null }; MySqlDataReader sdr2 = DbHelperMySQL.ExecuteReader(string.Format("select * from t_lingditequan where lingzhu=1 and lingditype=1", new object[0]), false); if (sdr2.Read()) { huangMo.RoleId = Convert.ToInt32(sdr2["rid"].ToString()); huangMo.LingDiType = 1; huangMo.JunTuanId = Convert.ToInt32(sdr2["juntuanid"].ToString()); huangMo.JunTuanName = sdr2["juntuanname"].ToString(); huangMo.BeginTime = DateTime.Parse(sdr2["begintime"].ToString()); huangMo.EndTime = DateTime.Parse(sdr2["endtime"].ToString()); huangMo.OpenCount = Convert.ToInt32(sdr2["opencount"].ToString()); string[] shouwei = sdr2["shouwei"].ToString().Split(new char[] { '|' }); foreach (string shouWeiItem in shouwei) { string[] item = shouWeiItem.Split(new char[] { ',' }); if (item.Length >= 2) { huangMo.ShouWeiList.Add(new LingDiShouWei { State = Convert.ToInt32(item[0]), FreeBuShuTime = DateTime.Parse(item[1]) }); } } if (!sdr2.IsDBNull(sdr2.GetOrdinal("roledata"))) { huangMo.RoleData = (byte[])sdr2["roledata"]; } } else { huangMo.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); huangMo.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); huangMo.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); huangMo.ShouWeiList.Add(new LingDiShouWei { State = 0, FreeBuShuTime = DateTime.MaxValue }); } lock (this.Mutex) { this.LingDiDataList = new List <LingDiData>(); this.LingDiDataList.Add(diGong); this.LingDiDataList.Add(huangMo); this.Initialized = true; } } catch (Exception ex) { LogManager.WriteLog(LogTypes.Error, string.Format("LingDiCaiJiServer 初始化地图信息出错 ex:{0}", ex.Message.ToString()), null, true); } }
public void PushGameResultData(KarenBattleScene scene) { JunTuanRankData rankData = this.GetJunTuanRankDataBySide(scene.SuccessSide); if (null != rankData) { JunTuanBaseData baseData = JunTuanManager.getInstance().GetJunTuanBaseDataByJunTuanID(rankData.JunTuanId); if (null == baseData) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取军团基本信息 JunTuanId={0}", rankData.JunTuanId), null, true); } else if (baseData.BhList == null || baseData.BhList.Count == 0) { LogManager.WriteLog(LogTypes.Fatal, string.Format("军团基本信息BhList为空 JunTuanId={0}", rankData.JunTuanId), null, true); } else { int leaderBangHui = baseData.BhList[0]; int leaderServerID = 0; SceneUIClasses mapType = Global.GetMapSceneType(scene.m_nMapCode); int lingDiType = this.ConvertMapSceneTypeToCaiJiLingDiType(mapType); LingDiData oldLingDiData = null; List <LingDiData> LingDiList = JunTuanClient.getInstance().GetLingDiData(); if (null != LingDiList) { oldLingDiData = LingDiList.Find((LingDiData x) => x.LingDiType == lingDiType); } RoleData4Selector oldLeader = (oldLingDiData != null && oldLingDiData.RoleData != null) ? DataHelper.BytesToObject <RoleData4Selector>(oldLingDiData.RoleData, 0, oldLingDiData.RoleData.Length) : null; lock (this.Mutex) { if (!this.FactionIDVsServerIDDict.TryGetValue(leaderBangHui, out leaderServerID)) { JunTuanData data = JunTuanClient.getInstance().GetJunTuanData(leaderBangHui, rankData.JunTuanId, true); if (null == data) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取JunTuanData BangHuiID={0} JunTuanId={1}", leaderBangHui, rankData.JunTuanId), null, true); return; } LingDiCaiJiManager.getInstance().SetLingZhu(lingDiType, data.LeaderRoleId, rankData.JunTuanId, rankData.JunTuanName, null); EventLogManager.AddKarenBattleEvent(lingDiType, oldLeader, data.LeaderZoneId, rankData.JunTuanId, data.LeaderRoleId); return; } } BangHuiDetailData bhData = Global.GetBangHuiDetailData(-1, leaderBangHui, leaderServerID); if (null == bhData) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取帮会详细信息 BangHuiID={0} ServerID={1}", leaderBangHui, leaderServerID), null, true); } else { RoleDataEx dbRd = Global.sendToDB <RoleDataEx, string>(275, string.Format("{0}:{1}", -1, bhData.BZRoleID), leaderServerID); if (dbRd == null || dbRd.RoleID <= 0) { LogManager.WriteLog(LogTypes.Fatal, string.Format("无法获取帮主详细信息 BangHuiID={0} BZRoleID={1} ServerID={2}", leaderBangHui, bhData.BZRoleID, leaderServerID), null, true); } else { JunTuanManager.getInstance().OnInitGame(dbRd); RoleData4Selector leaderShowInfo = Global.RoleDataEx2RoleData4Selector(dbRd); LingDiCaiJiManager.getInstance().SetLingZhu(lingDiType, dbRd.RoleID, rankData.JunTuanId, rankData.JunTuanName, leaderShowInfo); EventLogManager.AddKarenBattleEvent(lingDiType, oldLeader, dbRd.ZoneID, rankData.JunTuanId, dbRd.RoleID); } } } } }
private void TimerProc(object sender, EventArgs e) { bool notifyPrepareGame = false; bool notifyEnterGame = false; bool notifyEndGame = false; DateTime now = TimeUtil.NowDateTime(); lock (this.Mutex) { KarenBattleSceneInfo sceneItem = this.SceneDataDict.Values.FirstOrDefault <KarenBattleSceneInfo>(); for (int i = 0; i < sceneItem.TimePoints.Count - 1; i += 2) { if (now.DayOfWeek == (DayOfWeek)sceneItem.TimePoints[i].Days && now.TimeOfDay.TotalSeconds >= sceneItem.SecondsOfDay[i] - 120.0 && now.TimeOfDay.TotalSeconds <= sceneItem.SecondsOfDay[i + 1] + 120.0) { double secsPrepare = sceneItem.SecondsOfDay[i] - now.TimeOfDay.TotalSeconds; double secsEnd = sceneItem.SecondsOfDay[i + 1] + 120.0 - now.TimeOfDay.TotalSeconds; if (!this.PrepareGame) { if (secsPrepare > 0.0 && secsPrepare < 120.0) { this.PrepareGame = true; notifyPrepareGame = true; break; } } else if (secsPrepare < 0.0) { notifyEnterGame = true; this.PrepareGame = false; break; } if (!this.EndGame) { if (secsEnd > 0.0 && secsEnd < 120.0) { this.EndGame = true; notifyEndGame = true; break; } } else if (secsEnd < 0.0) { this.EndGame = false; break; } } } } if (notifyPrepareGame) { LogManager.WriteLog(LogTypes.Error, "阿卡伦战场活动即将开始,准备通知军团角色进入!", null, true); lock (this.Mutex) { this.FactionIDVsServerIDDict.Clear(); } } if (notifyEnterGame) { int westcount = 0; int eastcount = 0; lock (this.Mutex) { LogManager.WriteLog(LogTypes.Error, "阿卡伦战场开启,可以通知已分配到场次的玩家进入游戏了", null, true); KarenBattleSceneInfo sceneItem = this.SceneDataDict.Values.FirstOrDefault <KarenBattleSceneInfo>(); foreach (GameClient client in GameManager.ClientMgr.GetAllClients(true)) { if (this.CheckCanEnterKarenBattle(client) && this.CheckMap(client) && this.IsGongNengOpened(client, false)) { if (null != client) { client.sendCmd(1210, string.Format("{0}:{1}:{2}:{3}", new object[] { 1, 1, westcount, eastcount }), false); } } } } } if (notifyEndGame) { lock (this.Mutex) { foreach (KarenBattleSceneInfo item in this.SceneDataDict.Values) { KarenFuBenData fubenData = JunTuanClient.getInstance().GetKarenKuaFuFuBenData(item.MapCode); if (fubenData != null && fubenData.ServerId == GameManager.ServerId) { SceneUIClasses mapType = Global.GetMapSceneType(item.MapCode); if (mapType != SceneUIClasses.KarenEast || KarenBattleManager_MapEast.getInstance().SceneDict.Count == 0) { if (mapType != SceneUIClasses.KarenWest || KarenBattleManager_MapWest.getInstance().SceneDict.Count == 0) { int lingDiType = this.ConvertMapSceneTypeToCaiJiLingDiType(mapType); LingDiData oldLingDiData = null; List <LingDiData> LingDiList = JunTuanClient.getInstance().GetLingDiData(); if (null != LingDiList) { oldLingDiData = LingDiList.Find((LingDiData x) => x.LingDiType == lingDiType); } RoleData4Selector oldLeader = (oldLingDiData != null && oldLingDiData.RoleData != null) ? DataHelper.BytesToObject <RoleData4Selector>(oldLingDiData.RoleData, 0, oldLingDiData.RoleData.Length) : null; LingDiCaiJiManager.getInstance().SetLingZhu(lingDiType, 0, 0, "", null); EventLogManager.AddKarenBattleEvent(lingDiType, oldLeader, 0, 0, 0); } } } } } } this.UpdateKuaFuMapClientCount(KarenBattleManager_MapWest.getInstance().SceneDict.Values.FirstOrDefault <KarenBattleScene>()); this.UpdateKuaFuMapClientCount(KarenBattleManager_MapEast.getInstance().SceneDict.Values.FirstOrDefault <KarenBattleScene>()); }