Beispiel #1
0
    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);
    }
Beispiel #2
0
    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);
        }
    }