public bool RemainLimit(string UsedName, bool DefaultTrue = false) { PUsedTag UsedTag = Tags.FindPeekTag <PUsedTag>(PUsedTag.TagNamePrefix + UsedName); if (UsedTag == null) { if (DefaultTrue) { return(true); } Tags.CreateTag(UsedTag = new PUsedTag(UsedName, 1)); } return(UsedTag != null && UsedTag.Count < UsedTag.Limit); }
public void Injure(PPlayer FromPlayer, PPlayer ToPlayer, int Count, PObject InjureSource) { PNetworkManager.NetworkServer.TellClients(new PShowInformationOrder((FromPlayer == null ? "null" : FromPlayer.Name) + "对" + ToPlayer.Name + "造成" + Count + "点伤害")); PInjureTag InjureTag = Monitor.CallTime(PTime.Injure.StartSettle, new PInjureTag(FromPlayer, ToPlayer, Count, InjureSource)); foreach (PTime InjureTime in new PTime[] { PTime.Injure.BeforeEmitInjure, PTime.Injure.BeforeAcceptInjure, PTime.Injure.EmitInjure, PTime.Injure.AcceptInjure, PTime.Injure.AfterEmitInjure, PTime.Injure.AfterAcceptInjure }) { if (InjureTag.ToPlayer != null && InjureTag.Injure > 0) { if (InjureTime.Equals(PTime.Injure.AfterEmitInjure)) { if (InjureTag.FromPlayer != null && InjureTag.FromPlayer.IsAlive) { TagManager.CreateTag(InjureTag); GetMoney(InjureTag.FromPlayer, InjureTag.Injure); InjureTag = TagManager.PopTag <PInjureTag>(PInjureTag.TagName); } } else if (InjureTime.Equals(PTime.Injure.AfterAcceptInjure)) { if (InjureTag.ToPlayer.IsAlive) { TagManager.CreateTag(InjureTag); LoseMoney(InjureTag.ToPlayer, InjureTag.Injure, true); InjureTag = TagManager.PopTag <PInjureTag>(PInjureTag.TagName); } } InjureTag = Monitor.CallTime(InjureTime, InjureTag); } else { break; } } if (InjureTag.ToPlayer != null && InjureTag.Injure > 0) { Monitor.CallTime(PTime.Injure.EndSettle, InjureTag); } }