private string CalcJieRiLv() { string jieRiLvType = ""; int offsetDay = TimeUtil.GetOffsetDay(Global.GetJieriStartDay()); if (this.JieRiStartDay != offsetDay) { ServerDayData serverDayData = Global.sendToDB <ServerDayData, int>(11004, offsetDay, GameManager.ServerId); lock (this.Mutex) { if (serverDayData != null && serverDayData.Dayid == offsetDay) { this.JieRiWorldLevel = serverDayData.WorldLevel; this.JieRiStartDay = offsetDay; } } } lock (this.Mutex) { if (this.JieRiWorldLevel > 0) { foreach (KeyValuePair <string, Tuple <int, int> > kv in this.JieRiLvTypeDict) { if (this.JieRiWorldLevel >= kv.Value.Item1 && this.JieRiWorldLevel <= kv.Value.Item2) { jieRiLvType = kv.Key; break; } } } } return(jieRiLvType); }
public void ResetWorldLevel() { int dayID = TimeUtil.NowDateTime().DayOfYear; if (this.m_nResetWorldLevelDayID != dayID) { int offsetDay = TimeUtil.GetOffsetDayNow(); string cDate = TimeUtil.GetRealDate(offsetDay).Date.ToString("yyyy-MM-dd"); ServerDayData serverDayData = Global.sendToDB <ServerDayData, int>(11004, offsetDay, GameManager.ServerId); if (serverDayData != null && serverDayData.Dayid == offsetDay) { LogManager.WriteLog(LogTypes.Info, string.Format("从数据加载世界等级:day={0},worldlevel={1}", serverDayData.CDate, serverDayData.WorldLevel), null, true); this.m_nWorldLevel = serverDayData.WorldLevel; this.m_nResetWorldLevelDayID = dayID; } else { TCPOutPacket tcpOutPacket = null; string strcmd = string.Format("{0}:{1}", 0, 5); TCPProcessCmdResults dbRequestResult = Global.RequestToDBServer2(Global._TCPManager.tcpClientPool, TCPOutPacketPool.getInstance(), 269, strcmd, out tcpOutPacket, 0); if (dbRequestResult == TCPProcessCmdResults.RESULT_FAILED) { LogManager.WriteLog(LogTypes.Error, "世界等级装入异常", null, true); } else { int nBakResetWorldLevelDayID = this.m_nResetWorldLevelDayID; this.m_nResetWorldLevelDayID = dayID; PaiHangData paiHangData = DataHelper.BytesToObject <PaiHangData>(tcpOutPacket.GetPacketBytes(), 6, tcpOutPacket.PacketDataSize - 6); if (null != paiHangData) { int nLevelCount = 0; int roleCount = 0; if (null != paiHangData.PaiHangList) { int i = 0; while (i < 100 && i < paiHangData.PaiHangList.Count) { roleCount++; nLevelCount += paiHangData.PaiHangList[i].Val2 * 100 + paiHangData.PaiHangList[i].Val1; i++; } } this.m_nWorldLevel = ((roleCount > 0) ? (nLevelCount / roleCount) : 1); serverDayData = new ServerDayData { Dayid = offsetDay, CDate = cDate, WorldLevel = this.m_nWorldLevel }; for (;;) { int dbRet = Global.sendToDB <int, ServerDayData>(11003, serverDayData, GameManager.ServerId); if (dbRet >= 0) { break; } Thread.Sleep(1000); } if (0 != nBakResetWorldLevelDayID) { int count = GameManager.ClientMgr.GetMaxClientCount(); for (int i = 0; i < count; i++) { GameClient client = GameManager.ClientMgr.FindClientByNid(i); if (null != client) { this.UpddateWorldLevelBuff(client); } } } } else { LogManager.WriteLog(LogTypes.Error, "世界等级装入时,获取等级排行榜失败", null, true); } } } } }