コード例 #1
0
        /// <summary>
        /// Base constructor.
        /// </summary>
        /// <param name="messager"></param>
        public BaseExecutor(BotMessager messager)
        {
            // Set the message relayer.
            Bot = messager;

            // Get the name of the class from the Class Name Attribute.
            var nameAttr = GetType().GetCustomAttributes(typeof(ClassNameAttribute), true).FirstOrDefault() as ClassNameAttribute;

            if (nameAttr != null)
            {
                // Set class name based on the attribute.
                className = nameAttr.Name;

                // Set the publicly visible identifier of this instance.
                Identifier = className.ToLower();

                // Set the description of the executor.
                Description = nameAttr.Description;
            }
            else
            {
                // If attribute not found, set the name to the last part of this object's namespace.
                string[] classNameParts = this.ToString().Split('.');
                className = classNameParts[classNameParts.Length - 1];
            }

            // All instances of BaseExecutor can report their available commands.
            // The command itself for doing so is not logged.
            CmdActions = new Dictionary <string, CommandAction>();
            Add(LogCommands,
                "komennot", "commands");
            Add(ComponentCall,
                Identifier);
        }
コード例 #2
0
ファイル: CmdStatistics.cs プロジェクト: Royathe/CIRCB
        public CmdStatistics(BotMessager messager) : base(messager)
        {
            // Get the properties of a StatisticRow for ORDER BY logging.
            string orderPropertyNameList = StatisticsRow.GetOrderProperties().ToConcatString();

            // Get the properties of a StatisticRow for EXTRAS logging.
            string extraPropertyNameList = StatisticsRow.GetExtraProperties().ToConcatString();

            Add("Tulostaa pelaajan tournament voitot.",
                cmd_Saldo,
                "saldo", "score", "pisteet");

            Add("Tulostaa kuittaamattomat kausivoitot.",
                cmd_Unsettled,
                "loans", "velat", "unsettled", "joni", "vittujoni");

            Add("Statistiikka. FILTERÖINTI: Kauden ID, Pelin nimi, Käyttäjän nimi. ORDER BY: " + orderPropertyNameList + " | EXTRA: " + extraPropertyNameList,
                cmd_Stats,
                "stats").TimerLocked(2);

            Add("Tulostaa kuluvan kauden ID:n.",
                cmd_Season,
                "season", "kausi").TimerLocked(2);

            Add("Tulostaa kaudet ja niiden ajanjaksot.",
                cmd_Seasons,
                "seasons", "kaudet").TimerLocked(2);

            Add("Tulostaa pelin voitot",
                cmd_Scoreboard,
                "scoreboard", "scorebard", "scöörebörd", "scoorebord", "sköörebörd", "skoorebord", "skuurbuurd", "skoorboord", "sköörböörd").TimerLocked(2);
        }
コード例 #3
0
        public BlindHoldem(BotMessager messager) : base(messager)
        {
            CurrentPhase = Phase.Join;
            CurrentBet   = Holdem.MaximumBet;
            Players      = new List <HoldemPlayer>();
            Deck         = new Deck();

            Bot.Say("Sokko allin holdemi aloitettu.");
        }
コード例 #4
0
ファイル: CmdGeneral.cs プロジェクト: Royathe/CIRCB
        public CmdGeneral(BotMessager messager) : base(messager)
        {
            rnd = new Random();

            Add("Satunnainen riemurasia media", cmd_rr, "rr");
            Add("Satunnainen naurunappula media", cmd_nn, "nn");
            Add("Satunnaista tekstiä", cmd_eijasa, "eijasa");
            Add("Satunnainen Overwatch kirjaston teksti", cmd_ow, "overwatch", "ow");
            Add("Haistata vitut", cmd_hv, "hv");
            Add("Lenny face", cmd_lenny, "lenny", "lennyface", "lf");
        }
コード例 #5
0
ファイル: Holdem.cs プロジェクト: Royathe/CIRCB
        public Holdem(BotMessager messager) : base(messager)
        {
            CurrentPhase = Phase.Join;
            Players      = new List <HoldemPlayer>();
            Deck         = new Deck();
            River        = new List <Card>();
            CurrentBet   = MinimumBet;
            Pot          = 0;

            Bot.Say("Holdem peli aloitettu. Aloituspanos " + EntryFee + ". Peliin voi liittyä komennolla !holdem. Aloituksen voi perua komennolla !cancel. Peli vaatii vähintään 2 pelaajaa.");
        }
コード例 #6
0
 public CmdRandom(BotMessager messager) : base(messager)
 {
     Add("Satunnainen runo", cmd_poem, "runo", "poem").TimerLocked(2);
     Add("Satunnainen wiki-linkki", cmd_wiki, "wiki");
     Add("Satunnainen wictionary-linkki", cmd_wictionary, "sana", "wictionary", "wiktionary");
     Add("Päivän sana", cmd_dailyWord, "päivänsana");
     Add("Satunnainen paskanhauska kuva", cmd_funnyShit, "topkek").TimerLocked(2);
     Add("Satunnainen paskanhauska gif", cmd_funnyGif, "gif").TimerLocked(2);
     Add("Satunnainen urbaanin sanakirjan-linkki", cmd_urbanDictionary, "urbaanisanakirja", "urbandictionary", "urban");
     Add("Satunnainen hikipedia-linkki", cmd_hikipedia, "hiki", "hikipedia");
     Add("Satunnainen sub-reddit", cmd_reddit, "reddit", "r");
 }
コード例 #7
0
ファイル: CmdGames.cs プロジェクト: Royathe/CIRCB
 public CmdGames(BotMessager messager) : base(messager)
 {
     Add("Kuittaa pelaajan valmiiksi. Ei enää odoteta komentoja tältä pelaajalta.", CmdCheck, "check", "c", "jää");
     Add("Poistaa pelaajan pelistä. Pelaajalta peritään sen hetkinen betti.", CmdFold, "fold", "föld", "fould", "fouldem", "f");
     Add("Peruu pelin aloituksen.", CmdCancel, "cancel", "peru", "lopeta");
     Add("Nostaa betin joko pelin maksimiin, tai pelaajan maksimiin jos pelaajalla rahaa alle pelin maksimin.", CmdAllin, "allin", "allesin", "allesineen", "kaikki", "syteentaisaveen");
     Add("Ottaa seuraavan kortin.", CmdHit, "hit", "lyö", "turpaan", "hittiä", "hitteä");
     Add("Nostaa pelin bettia annetulla määrällä.", CmdBet, "bet", "raise");
     Add("Aloittaa Blackjack pelin", CmdBlackjack, "blackjack", "niggagiggel", "mustajaakko");
     Add("Aloittaa Holdem pelin", CmdHoldem, "holdem");
     Add("Aloittaa Holdem turnauksen", CmdTournament, "tournament", "turnaus");
     Admin(CmdStopCurrentGame, "stopgame");
 }
コード例 #8
0
        public MasterExecutor(BotMessager messager) : base(messager)
        {
            Comparator = new MasterComparator();

            Add("Kirjaa botin eri komentokäsittelykomponentit.", LogComponents, "komponentit", "components", "käsittelijät");

            Executors = new IExecutor[]
            {
                new CmdAdmin(Bot),
                new CmdStatistics(Bot),
                new CmdLink(Bot),
                new CmdGames(Bot),
                new CmdGeneral(Bot),
                new CmdRandom(Bot)
            };
        }
コード例 #9
0
 public GameBase(BotMessager messager)
 {
     Bot   = messager;
     Timer = new SoloTimer();
 }
コード例 #10
0
ファイル: CmdLink.cs プロジェクト: Royathe/CIRCB
 public CmdLink(BotMessager messager) : base(messager)
 {
     rnd = new Random();
 }
コード例 #11
0
ファイル: Blackjack.cs プロジェクト: Royathe/CIRCB
 public Blackjack(BotMessager messager) : base(messager)
 {
     currentPhase = Phase.Join;
     Players      = new List <BlackjackPlayer>();
     Decks        = new Deck(3);
 }
コード例 #12
0
ファイル: CmdAdmin.cs プロジェクト: Royathe/CIRCB
        public CmdAdmin(BotMessager messager) : base(messager)
        {
            // Get the properties of a StatisticRow for ORDER BY logging.
            //string orderPropertyNameList = StatisticsRow.GetOrderProperties().ToConcatString();

            //// Get the properties of a StatisticRow for EXTRAS logging.
            //string extraPropertyNameList = StatisticsRow.GetExtraProperties().ToConcatString();

            Admin("Add new entry to the SimpleCommands dictionary.", cmd_AddSimpleCommand,
                  "addcommand");

            Admin("Replace existing SimpleCommands entry.", cmd_ReplaceSimpleCommand,
                  "replacecommand");

            Admin("Checks if the given key exists in SimpleCommands.", cmd_SimpleCommandExists,
                  "cmdexists");

            //Add("Tulostaa pelaajan holdem voitot.", cmd_Saldo,
            //    "saldo", "score", "pisteet");

            //Add("Tulostaa kuittaamattomat kausivoitot.", cmd_Unsettled,
            //    "loans", "velat", "unsettled", "joni", "vittujoni");

            //Add("Statistiikka. FILTERÖINTI: Kauden ID, Pelin nimi, Käyttäjän nimi. ORDER BY: " + orderPropertyNameList + " | EXTRA: " + extraPropertyNameList, cmd_Stats,
            //    "stats");

            //Add("Tulostaa kuluvan kauden ID:n.", cmd_Season,
            //    "season", "kausi");

            //Add("Tulostaa kaudet ja niiden ajanjaksot.", cmd_Seasons,
            //    "seasons", "kaudet");

            Admin("Asettaa statistiikan värit. 'TextColor.BackgroundColor'.", cmd_ColorizeStats,
                  "statscolor");

            Admin("Asettaa turnauksen textin värit. 'TextColor.BackgroundColor'.", cmd_ColorizeTournament,
                  "tournamentcolor");

            //Add("Tulostaa pelin voitot", cmd_Scoreboard,
            //    "scoreboard", "scorebard", "scöörebörd", "scoorebord", "sköörebörd", "skoorebord", "skuurbuurd", "skoorboord", "sköörböörd");

            //CmdActions.Add("addfunds", cmd_AddFunds, "Give player a certain amount of funds. Increases loan.");

            //CmdActions.Add("addfundsnoloan", cmd_AddFundsNoLoan, "Give player a certain amount of funds. Does not increase loan.");

            //CmdActions.Add("adduser", cmd_addUser, "Add new user or authorize existing.");

            Admin("Add new user or authorize existing.", cmd_addUser,
                  "adduser");

            Admin("Unauthorize existing user.", cmd_BanUser,
                  "banuser");

            //CmdActions.Add("deleteuser", cmd_DeleteUser, "Delete user from database entirely.");

            //CmdActions.Add("loans", cmd_Loans, "Report everyone's loans.");

            //Admin("Reset SimpleCommands to those in the Bulk Inserter.", cmd_ResetSimpleCommands,
            //    "resetcmd");
            Admin("Ends the current season and creates a new one.", cmd_EndSeason,
                  "endseason");

            Add("Log in as an admin from a new address. New address updated to database.", cmd_AdminLogin,
                "login");

            Admin("Floods channel with messages.", cmd_Flood,
                  "flood");

            Admin(cmd_Transmit,
                  "t");

            Admin(cmd_currentTimeDiff,
                  "aikaero", "timesync");

            Admin(cmd_currentTime,
                  "aika", "timeis");

            Add("Sääennuste", cmd_weather,
                "sääennuste").TimerLocked(5);
        }
コード例 #13
0
        public HoldemTournament(BotMessager messager) : base(messager)
        {
            CurrentPhase = Phase.Draw;
            Players      = new List <TournamentPlayer>();
            Deck         = new Deck();
            Table        = new List <Card>();
            CurrentBet   = 0;
            pots         = new List <GamePot>();
            pots.Add(new GamePot());

            var playerUserIds = Users.Scores(Score.Tournament).Select(x => x.UserId).Distinct();

            foreach (var playerUserId in playerUserIds)
            {
                Players.Add(new TournamentPlayer(playerUserId));
            }

            var currentDealerUserId = TournmentLoader.GetDealerUserId();

            // Get the current dealers index if userId != 0
            if (currentDealerUserId != 0)
            {
                for (int i = 0; i < Players.Count; i++)
                {
                    if (Players[i].UserId == currentDealerUserId)
                    {
                        CurrentDealerIndex = i;
                        break;
                    }
                }

                CurrentDealerIndex = NextActivePlayerIndex(CurrentDealerIndex, false);
            }
            else
            {
                // Pick a random dealer
                CurrentDealerIndex = new Random().Next(Players.Count);
            }

            // Get the current blind and the number of rounds played so far (plus the current new round).
            int blind       = TournmentLoader.BaseBlind;
            int rounds      = TournmentLoader.GetRoundsPlayed() + 1;
            int totalRounds = rounds;

            // Substract the BlindIncreaseRoundIncrement from the rounds
            rounds = rounds - BlindIncreaseRoundIncrement;

            // Number of times the blind should be raised.
            int increments = 0;

            while (rounds > 0)
            {
                increments++;
                rounds -= BlindIncreaseRoundIncrement;
            }

            // Multiply the blind for each passed increment.
            for (int i = 0; i < increments; i++)
            {
                blind = blind * BlindIncreaseMultiplier;
            }

            // Set the current small and big blinds.
            SmallBlind = blind;
            BigBlind   = SmallBlind * 2;

            // The player after the dealer has the Small Blind.
            int smallBlindIndex = NextActivePlayerIndex(CurrentDealerIndex, false);

            if (totalRounds > 1)
            {
                CurrentPlayerIndex = smallBlindIndex;
            }
            Players[smallBlindIndex].CurrentBet = SmallBlind;

            // The player after the Small Blind has the Big Blind.
            int bigBlindIndex = NextActivePlayerIndex(smallBlindIndex, false);

            Players[bigBlindIndex].CurrentBet = BigBlind;

            // Kirjataan pelaajat.
            string message = "Holdem Turnauksen pelaajat: ";

            for (int j = 0; j < Players.Count; j++)
            {
                var player = Players[j];

                if (player.Active)
                {
                    message += player.Username;

                    if (j == bigBlindIndex)
                    {
                        message += String.Format("(Big Blind - {0}), ", BigBlind);
                    }
                    else if (j == smallBlindIndex)
                    {
                        message += String.Format("(Small Blind - {0}), ", SmallBlind);
                    }
                    else if (j == CurrentDealerIndex)
                    {
                        message += "(Dealer), ";
                    }
                    else
                    {
                        message += ", ";
                    }
                }
            }

            message = message.Substring(0, message.Length - 2);
            Say(message);

            foreach (var player in ActivePlayers)
            {
                Pot.PlayerPots.Add(new PlayerPot(player.UserId, player.CurrentBet));

                player.Cards    = new Card[2];
                player.Cards[0] = Deck.Draw();
                player.Cards[1] = Deck.Draw();

                // Log games played
                var user = Users.Get(player.UserId);

                user.UpdateScore(
                    new Score(user.UserId, Score.Tournament).Started()
                    );

                // Report cards to the player as a private message
                message  = "------------------------------------------------";
                message += player.Cards[0].Name;
                message += " | ";
                message += player.Cards[1].Name;

                Bot.Say(player.Username, message);
            }

            InformOfPlayerTurn();

            // Set the current bet.
            CurrentBet = BigBlind;
        }