Пример #1
0
 public static void Invoke(this VoteRequestEventArgs e)
 {
     if (OnVoteRequest != null && e != null)
     {
         OnVoteRequest(e);
     }
 }
Пример #2
0
        public virtual bool Vote(PlayerMobile voter, bool message = true)
        {
            if (voter == null || voter.Deleted || !CanVote(voter, message))
            {
                return(false);
            }

            var p = Voting.EnsureProfile(voter);

            if (p == null || p.Deleted)
            {
                if (message)
                {
                    voter.SendMessage("Your vote profile can't be accessed right now.");
                }

                return(false);
            }

            if (message)
            {
                voter.SendMessage("Thanks for voting, {0}! Every vote counts!", voter.RawName);
            }

            var tokens = Tokens;

            if (Voting.CMOptions.GiveBonusTokens && BonusTokens > 0 && Utility.RandomMinMax(0, 100) <= BonusTokensChance)
            {
                tokens += BonusTokens;

                if (message)
                {
                    voter.SendMessage("You've just earned {0} bonus tokens!", BonusTokens);
                }
            }

            var e = new VoteRequestEventArgs(voter, this, tokens, message);

            VitaNexCore.TryCatch(e.Invoke, Voting.CMOptions.ToConsole);

            if (tokens != e.Tokens)
            {
                tokens = Math.Max(0, e.Tokens);
            }

            message = e.Message;

            if (!e.HandledTokens)
            {
                p.TransferTokens(this, tokens, message);
            }
            else
            {
                p.RegisterTokens(this, tokens);
            }

            Timer.DelayCall(Voting.CMOptions.BrowserDelay, () => voter.LaunchBrowser(Link));
            return(true);
        }