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 LoseMoney(PPlayer Player, int Money, bool IsInjure = false)
    {
        PLoseMoneyTag LoseMoneyTag    = Monitor.CallTime(PTime.LoseMoneyTime, new PLoseMoneyTag(Player, Money, IsInjure));
        PPlayer       LoseMoneyPlayer = LoseMoneyTag.Player;
        int           MoneyCount      = LoseMoneyTag.Money;

        if (LoseMoneyPlayer != null && LoseMoneyPlayer.IsAlive && MoneyCount > 0)
        {
            LoseMoneyPlayer.Money -= MoneyCount;
            PNetworkManager.NetworkServer.TellClients(new PPushTextOrder(LoseMoneyPlayer.Index.ToString(), "-" + MoneyCount.ToString(), LoseMoneyTag.IsInjure ? PPushType.Injure.Name : PPushType.Throw.Name));
            PNetworkManager.NetworkServer.TellClients(new PShowInformationOrder(LoseMoneyPlayer.Name + "失去金钱" + MoneyCount.ToString()));
            PNetworkManager.NetworkServer.TellClients(new PRefreshMoneyOrder(LoseMoneyPlayer));
            if (LoseMoneyPlayer.Money <= 0)
            {
                if (IsInjure)
                {
                    PInjureTag InjureTag = TagManager.FindPeekTag <PInjureTag>(PInjureTag.TagName);
                    Dying(LoseMoneyPlayer, InjureTag.FromPlayer, InjureTag.InjureSource);
                }
                else
                {
                    Dying(LoseMoneyPlayer, null, null);
                }
            }
        }
    }