/// <summary> /// 消息处理:更新 /// </summary> /// <param name="type">消息类型</param> /// <param name="reader">读取器</param> private static void ProcessUpdate(ushort type, BinaryReader reader) { lock (PVPReward.dataList) { PVPReward.dataList.Clear(); ushort count = reader.ReadUInt16(); for (int i = 0; i < count; ++i) { PVPRewardData data = new PVPRewardData(); data.Address = reader.ReadString(); data.ServerId = reader.ReadString(); data.UpdateTime = new DateTime(reader.ReadUInt16(), reader.ReadByte(), reader.ReadByte()); data.gift = reader.ReadInt32(); PVPReward.dataList.Add(data); } } PVPReward.hasInitialize = true; }
/// <summary> /// 定时器计时 /// </summary> private static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { if (!PVPReward.hasInitialize) { return; } bool hasSend = false; lock (PVPReward.dataList) { for (int i = 0; i < PVPReward.dataList.Count; ++i) { PVPRewardData data = PVPReward.dataList[i]; if (data.gift != 0 && (DateTime.Now - data.UpdateTime).TotalDays >= 7) { data.gift = 0; hasSend = true; Log.AddLog(data.ServerId + " PVP奖励更新时间太早 " + data.UpdateTime.ToShortDateString()); continue; } if (data.gift != 0 && DateTime.Now >= data.UpdateTime && GMCommand.Execute(data.Address, data.ServerId, "0", string.Format("RPVP({0})", data.gift), "")) { data.gift = 0; hasSend = true; } } if (hasSend) { PVPReward.SendUpdate(); } } }