コード例 #1
0
        public void player_Remove(SSPlayer p)
        {
            this.m_ActivityTimeStamp = DateTime.Now;

            this.m_CurrentPoint.removePlayer(p.PlayerName);
            this.player_TeamCountUpdate();
        }
コード例 #2
0
        public void getGameInfo(SSPlayer p)
        {
            int rightOffset = 35;
            int leftOffset  = 20;

            psyGame.Send(msg.pm(p.PlayerName, "Status        :".PadRight(leftOffset) + (this.gameStatus().ToString().PadLeft(2, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Setting Type  :".PadRight(leftOffset) + (this.m_Settings.Type.ToString().PadLeft(2, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Alpha Freq    :".PadRight(leftOffset) + ("Freq: " + this.AlphaFreq.ToString().PadLeft(4, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Team Count    :".PadRight(leftOffset) + this.m_CurrentPoint.AlphaCount().ToString().PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Bravo Freq    :".PadRight(leftOffset) + ("Freq: " + this.BravoFreq.ToString().PadLeft(4, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Team Count    :".PadRight(leftOffset) + this.m_CurrentPoint.BravoCount().ToString().PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Minimum Point :".PadRight(leftOffset) + (this.m_Settings.MinimumPoints.ToString().PadLeft(2, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Win By        :".PadRight(leftOffset) + (this.m_Settings.WinBy.ToString().PadLeft(2, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Safe Win      :".PadRight(leftOffset) + ((this.m_Settings.SafeWin?"- On -":"- Off -").PadLeft(2, '0')).PadLeft(rightOffset)));
            psyGame.Send(msg.pm(p.PlayerName, "Locked        :".PadRight(leftOffset) + ((this.m_Locked ? "Locked" : "Unlocked").PadLeft(2, '0')).PadLeft(rightOffset)));
            if (this.m_CurrentBase.BaseID > 0)
            {
                psyGame.Send(msg.pm(p.PlayerName, "Current BaseID:".PadRight(leftOffset) + (this.m_CurrentBase.BaseID).ToString().PadLeft(rightOffset)));
            }
            if (this.m_CurrentBase.BaseCreator != null)
            {
                psyGame.Send(msg.pm(p.PlayerName, "Base Creator  :".PadRight(leftOffset) + (this.m_CurrentBase.BaseCreator).PadLeft(rightOffset)));
            }
            if (this.m_CurrentBase.DateCreated != null)
            {
                psyGame.Send(msg.pm(p.PlayerName, "Date Created  :".PadRight(leftOffset) + (this.m_CurrentBase.DateCreated).PadLeft(rightOffset)));
            }
            this.getRoundInfo(p);
        }
コード例 #3
0
        public void player_Join(SSPlayer p)
        {
            bool       InAlpha;
            BasePlayer b = this.m_CurrentPoint.getPlayer(p.PlayerName, out InAlpha);

            this.m_ActivityTimeStamp = DateTime.Now;

            // player is in right freq and is already part of team
            if (b != null && (InAlpha ? this.m_AlphaFreq : this.m_BravoFreq) == p.Frequency)
            {
                return;
            }

            if (this.m_Status != Misc.BaseGameStatus.NotStarted && this.m_Locked)
            {
                psyGame.Send(msg.arena("PlayerJoin ignored."));
                return;
            }

            if (p.Frequency == m_AlphaFreq)
            {
                this.m_CurrentPoint.AlphaTeam().playerJoin(p.PlayerName);
            }
            else if (p.Frequency == m_BravoFreq)
            {
                this.m_CurrentPoint.BravoTeam().playerJoin(p.PlayerName);
            }
        }
コード例 #4
0
        //----------------------------------------------------------------------//
        //                       Commands                                       //
        //----------------------------------------------------------------------//
        public void command_GameStart(SSPlayer p)
        {
            if (this.m_Timer.Enabled || this.m_Status != Misc.BaseGameStatus.NotStarted)
            {
                psyGame.Send(msg.pm(p.PlayerName, "The game has already been started."));
                return;
            }

            // Get freq counts
            int aCount = this.m_Players.PlayerList.FindAll(item => item.Frequency == this.m_AlphaFreq && item.Ship != ShipTypes.Spectator).Count;
            int bCount = this.m_Players.PlayerList.FindAll(item => item.Frequency == this.m_BravoFreq && item.Ship != ShipTypes.Spectator).Count;

            if (aCount > 0 && bCount > 0)
            {
                this.freqDump(this.m_AlphaFreq, this.m_CurrentPoint.AlphaTeam(), true);
                this.freqDump(this.m_BravoFreq, this.m_CurrentPoint.BravoTeam(), false);

                psyGame.Send(msg.arena("[ BaseDuel ] A game will begin in " + this.m_StartGameDelay + " seconds. [ " + this.m_CurrentPoint.AlphaCount() + " vs " + this.m_CurrentPoint.BravoCount() + " ]" + (this.m_MultiOn ? "      - " + this.m_GameTag + " -" : ".")));
                psyGame.Send(msg.team_pm(this.m_AlphaFreq, "Welcome to Team: " + this.m_ATeamName + ". Good Luck!"));
                psyGame.Send(msg.team_pm(this.m_BravoFreq, "Welcome to Team: " + this.m_BTeamName + ". Good Luck!"));

                this.timer_Setup(Misc.TimerType.GameStart);
                return;
            }

            // Need one player on opfor
            psyGame.Send(msg.pm(p.PlayerName, "You need to have at least 1 player on each team to start. Please find an opponent and have them join Freq= " + (aCount == 0 ? this.m_AlphaFreq : this.m_BravoFreq) + "."));
        }
コード例 #5
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        //----------------------------------------------------------------------//
        //                         Event Monitor                                //
        //----------------------------------------------------------------------//
        public void MonitorAllChat(object sender, ChatEvent e)
        {
            if (!m_Initialized)
            {
                return;
            }

            if (e.ChatType == ChatTypes.Arena && e.Message.Contains(" has user id "))
            {
                string   fullmsg  = e.Message;
                string[] data     = e.Message.Split(' ');
                string   stringID = data[data.Length - 1];
                string   user     = fullmsg.Replace(stringID, "").Replace(" has user id ", "").Trim();
                int      id;

                SSPlayer p = this.m_Players.PlayerList.Find(item => item.PlayerName == user);

                if (p != null && int.TryParse(stringID, out id))
                {
                    p.SubspaceId = id;
                }

                return;
            }

            if (e.Message.StartsWith(".lp") || e.Message.StartsWith("!lp"))
            {
                e.Message = "!help poo";
                SendCoreEvent(e);
                return;
            }

            m_BaseRace.Commands(e);
            m_BaseDuel.Commands(e);
        }
コード例 #6
0
        //----------------------------------------------------------------------//
        //                         Events                                       //
        //----------------------------------------------------------------------//
        public void Event_TurretEvent(SSPlayer a, SSPlayer h)
        {
            if (this.m_Status != Misc.BaseGameStatus.InProgress)
            {
                return;
            }

            bool       InAlpha;
            BasePlayer attacher = this.m_CurrentPoint.getPlayer(a.PlayerName, out InAlpha);
            BasePlayer host     = this.m_CurrentPoint.getPlayer(h.PlayerName, out InAlpha);
            bool       InLobby  = this.player_InRegion(h.Position, this.m_Lobby.BaseDimension);

            host.inLobby(InLobby);

            if (attacher == null)
            {
                psyGame.Send(msg.pm(a.PlayerName, "?|setship 9|setship " + ((int)a.Ship + 1) + "|"));
                return;
            }

            this.player_TeamCountUpdate();
            attacher.inLobby(InLobby);
            this.m_ActivityTimeStamp = DateTime.Now;
            if (this.m_Status == Misc.BaseGameStatus.InProgress)
            {
                if (InLobby)
                {
                    allOutCheck();
                }
            }
        }
コード例 #7
0
        private void doBaseInfo(SSPlayer p, ChatEvent e)
        {
            int num;

            if (int.TryParse(e.Message.Split(' ')[2], out num))
            {
                List <BRPlayer> listRequested = this.m_FakeDB.GetBaseRecords(num);

                if (listRequested == null)
                {
                    psyGame.Send(msg.pm(p.PlayerName, "There are no records for Base Number[ " + num + " ]."));
                    return;
                }

                psyGame.Send(msg.pm(p.PlayerName, "+----------------------------------------------------------------------+"));
                psyGame.Send(msg.pm(p.PlayerName, "|  Base Times for:                                     BaseID #[ " + num.ToString().PadLeft(2, '0') + " ]  |"));
                psyGame.Send(msg.pm(p.PlayerName, "+----------------------------------------------------------------------+"));
                psyGame.Send(msg.pm(p.PlayerName, "|    Player".PadRight(25) + "Time".PadRight(22) + "Ship".PadRight(13) + "Date".PadRight(11) + "|"));
                psyGame.Send(msg.pm(p.PlayerName, "+----------------------------------------------------------------------+"));
                int i = 1;
                foreach (BRPlayer b in listRequested)
                {
                    psyGame.Send(msg.pm(p.PlayerName, "| " + (i++).ToString().PadLeft(2, '0') + "." + b.PlayerName.PadRight(20) + b.Time.ToString().PadRight(22) + b.Ship.ToString().PadRight(13) + b.Date.ToShortDateString().PadRight(11) + "|"));
                }
                psyGame.Send(msg.pm(p.PlayerName, "+----------------------------------------------------------------------+"));
                psyGame.Send(msg.pm(p.PlayerName, "| For any help with commands type :                     .br commands   |"));
                psyGame.Send(msg.pm(p.PlayerName, "+----------------------------------------------------------------------+"));
                return;
            }
            psyGame.Send(msg.pm(p.PlayerName, "The correct format for this command is : .br baseinfo [ID#]      EXAMPLE:   .br baseinfo 23"));
        }
コード例 #8
0
        public void command_GetPlayerStats(SSPlayer p)
        {
            bool       InAlpha;
            BasePlayer player = this.m_CurrentPoint.getPlayer(p.PlayerName, out InAlpha);

            psyGame.Send(msg.pm(p.PlayerName, "Kills[ " + player.Stats.Kills + " ]   Deaths[ " + player.Stats.Deaths + " ]"));
        }
コード例 #9
0
ファイル: BaseRace2.cs プロジェクト: S8PsyOps/BattleCore
 public void Event_PlayerTurretAttach(SSPlayer attacher, SSPlayer host)
 {
     if (game_status == true)
     {
         RaceData.Race racer = m_RaceData.getRacer(attacher.PlayerName);
         if (!racer.Equals(".null"))
         {
             if (racer.reason == "" && racer.reach == false)
             {
                 racer.reason = "Attaching to another player";
                 psyGame.Send(msg.pm(racer.name, "*specall"));
                 psyGame.Send(msg.pm(racer.name, "Removed you from race! Reason: " + racer.reason));
             }
         }
     }
     else
     {
         if (second >= 0 && second <= 20)
         {
             RaceData.Race racer = m_RaceData.getRacer(attacher.PlayerName);
             if (!racer.Equals(".null"))
             {
                 psyGame.Send(msg.pm(racer.name, "*setship 8"));
                 psyGame.Send(msg.pm(racer.name, "please don't attach to another player!"));
             }
         }
     }
 }
コード例 #10
0
ファイル: BaseRace2.cs プロジェクト: S8PsyOps/BattleCore
 public void Event_PlayerLeft(SSPlayer ssp)
 {
     RaceData.Race racer = m_RaceData.getRacer(ssp.PlayerName);
     if (!racer.name.Equals(".null"))
     {
         racer.reason = "left arena";
     }
 }
コード例 #11
0
 //----------------------------------------------------------------------//
 //                             Misc                                     //
 //----------------------------------------------------------------------//
 private RaceGame getRace(SSPlayer p)
 {
     if (p.Ship == ShipTypes.Spectator)
     {
         return(null);
     }
     return(this.m_Races.Find(item => item.raceFreq() == p.Frequency));
 }
コード例 #12
0
        public void command_GameLock(SSPlayer p)
        {
            this.m_Locked = !this.m_Locked;
            string message2send = "Game has been [ " + (this.m_Locked?"Locked":"Unlocked") + " ] " + (this.m_Locked?"Players may not join game after GameStart.":"Players are free to join after GameStart.") + " - " + p.PlayerName;

            psyGame.Send(msg.pm(p.PlayerName, "You have " + (this.m_Locked ? "Locked" : "Unlocked") + " " + this.m_GameTag + " ." + (this.m_Locked ? "Players may not join game after GameStart." : "Players are free to join after GameStart.")));
            this.sendAllTeamMessage(message2send);
        }
コード例 #13
0
        public void Event_PlayerTurretAttach(SSPlayer attacher, SSPlayer host)
        {
            psyGame.Send(msg.pm(attacher.PlayerName, "?|setship 9|setship " + ((int)attacher.Ship + 1).ToString()));

            if (this.m_Status == RaceState.InProgress)
            {
                this.m_Racers.Remove(attacher.PlayerName);
            }
        }
コード例 #14
0
        private void command_SettingChanges(SSPlayer p, ChatEvent e)
        {
            Classes.BaseGame game = this.getGame_FromCommand(p, e, ModLevels.Mod);

            if (game != null)
            {
                game.command_SettingChange(p, e);
            }
        }
コード例 #15
0
        private void command_GetPlayerStats(SSPlayer p, ChatEvent e)
        {
            Classes.BaseGame game = this.getGame_FromCommand(p, e, ModLevels.None);

            if (game != null)
            {
                game.command_GetPlayerStats(p);
            }
        }
コード例 #16
0
        private void command_PointRestart(SSPlayer p, ChatEvent e)
        {
            Classes.BaseGame game = this.getGame_FromCommand(p, e, ModLevels.Mod);

            if (game != null)
            {
                game.command_PointReset(p);
            }
        }
コード例 #17
0
        private void command_Shuffle(SSPlayer p, ChatEvent e)
        {
            Classes.BaseGame game = this.getGame_FromCommand(p, e, ModLevels.Mod);

            if (game != null)
            {
                game.command_ShuffleTeams(p, this.m_BlockedList);
            }
        }
コード例 #18
0
ファイル: FileDataBase.cs プロジェクト: S8PsyOps/BattleCore
 private void createRaceProfile(SSPlayer ssp, string racerDir)
 {
     using (StreamWriter writer = File.AppendText(racerDir + Path.DirectorySeparatorChar + "profile.info"))
     {
         writer.WriteLine("[Player Information]");
         writer.WriteLine("PlayerName:" + ssp.PlayerName);
         writer.WriteLine("DateCreated:" + DateTime.Now.ToShortDateString());
         psyGame.SafeSend(msg.chan(1, "Player[ " + ssp.PlayerName + " ] not found in BaseRace profiles, new racer profile created."));
     }
 }
コード例 #19
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        public void MonitorShipChangeEvent(object sender, ShipChangeEvent e)
        {
            if (!m_Initialized)
            {
                return;
            }

            SSPlayer ssp = m_Players.GetPlayer(e);

            //m_BaseRace2.Event_ShipChange(ssp);
        }
コード例 #20
0
        public bool playerInGame(SSPlayer p, out Classes.BasePlayer basePlayer, out bool InAlpha)
        {
            basePlayer = m_CurrentPoint.getPlayer(p.PlayerName, out InAlpha);

            if (basePlayer == null)
            {
                return(false);
            }

            return(true);
        }
コード例 #21
0
 // Print out on all games in progress
 public void command_ShowGames(SSPlayer p, ChatEvent e)
 {
     psyGame.Send(msg.pm(p.PlayerName, "[ Baseduel ] Active Game List         MultiGame [ " + (m_MultiGame?"- On -":"- Off -") + " ]"));
     psyGame.Send(msg.pm(p.PlayerName, "--------------------------------------------------------"));
     for (int i = 0; i < m_Games.Count; i++)
     {
         psyGame.Send(msg.pm(p.PlayerName, "." + ("-<[  Game " + (i + 1).ToString().PadLeft(2, '0') + "  ]>-").PadLeft(33)));
         m_Games[i].getGameInfo(p);
         psyGame.Send(msg.pm(p.PlayerName, "--------------------------------------------------------"));
     }
 }
コード例 #22
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        public void MonitorPlayerDeathEvent(object sender, PlayerDeathEvent e)
        {
            if (!m_Initialized)
            {
                return;
            }

            SSPlayer attacker = m_Players.GetPlayer(e.KillerName);
            SSPlayer victim   = m_Players.GetPlayer(e.KilledName);

            m_BaseDuel.Event_PlayerKilled(attacker, victim);
        }
コード例 #23
0
ファイル: FileDataBase.cs プロジェクト: S8PsyOps/BattleCore
        private void createDevaPlayerProfile(SSPlayer ssp)
        {
            string DevaPlayerDir = this.m_HomeDir + "Players" + Path.DirectorySeparatorChar + ssp.SubspaceId.ToString() + Path.DirectorySeparatorChar;

            using (StreamWriter writer = File.AppendText(DevaPlayerDir + "profile.info"))
            {
                writer.WriteLine("[Player Information]");
                writer.WriteLine("PlayerName:" + ssp.PlayerName);
                writer.WriteLine("DateCreated:" + DateTime.Now.ToShortDateString());
                psyGame.SafeSend(msg.chan(1, "Player[ " + ssp.PlayerName + " ] not found, new player profile created."));
            }
        }
コード例 #24
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        public void MonitorPlayerPositionEvent(object sender, PlayerPositionEvent e)
        {
            if (!m_Initialized)
            {
                return;
            }

            SSPlayer ssp = m_Players.GetPlayer(e);

            m_BaseDuel.Event_PlayerPosition(ssp);
            m_BaseRace.Event_PlayerPosition(ssp);
        }
コード例 #25
0
        // get game from command
        private Classes.BaseGame getGame_FromCommand(SSPlayer p, ChatEvent e, ModLevels modLvl)
        {
            Classes.BaseGame game = this.getGame(p.Frequency);
            string[]         data = e.Message.Split(' ');
            int num;

            if (game == null)
            {
                if (player_isMod(e, ModLevels.Mod))
                {
                    if (data.Length >= 2)
                    {
                        if (int.TryParse(data[1], out num) && num > 0 && num <= this.m_Games.Count)
                        {
                            return(this.m_Games[num - 1]);
                        }

                        if (data.Length > 2 && int.TryParse(data[2], out num) && num > 0 && num <= this.m_Games.Count)
                        {
                            return(this.m_Games[num - 1]);
                        }

                        if (p.Ship == ShipTypes.Spectator)
                        {
                            psyGame.Send(msg.pm(p.PlayerName, "You are not on an active game freq. To see the list of active games type !bd games. For help on BD commands type: !bd commands."));
                            return(null);
                        }
                    }
                    else
                    {
                        psyGame.Send(msg.pm(p.PlayerName, "You must be in the active game freq to use this command. To see the list of active games type !bd games. For help on BD commands type: !bd commands."));
                        return(null);
                    }
                }
                return(null);
            }
            else
            {
                if (data.Length == 3)
                {
                    if (int.TryParse(data[2], out num) && num > 0 && num <= this.m_Games.Count)
                    {
                        return(this.m_Games[num - 1]);
                    }
                }

                if (this.player_isMod(e, modLvl))
                {
                    return(this.m_Games[game.gameNum() - 1]);
                }
                return(null);
            }
        }
コード例 #26
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        public void MonitorTeamChangeEvent(object sender, TeamChangeEvent e)
        {
            if (!m_Initialized)
            {
                return;
            }

            SSPlayer ssp = m_Players.GetPlayer(e);

            m_BaseDuel.Event_PlayerFreqChange(ssp);
            m_BaseRace.Event_PlayerFreqChange(ssp);
        }
コード例 #27
0
        private void command_SpamMe(SSPlayer p, ChatEvent e)
        {
            if (this.m_SpamMeList.Contains(p.PlayerName))
            {
                this.m_SpamMeList.Remove(p.PlayerName);
                psyGame.Send(msg.pm(p.PlayerName, "You have been removed from the personal game update list."));
                return;
            }

            this.m_SpamMeList.Add(p.PlayerName);
            psyGame.Send(msg.pm(p.PlayerName, "You have been added to the personal game update list. You will receive activity private messages for all games."));
        }
コード例 #28
0
        public void race_PlayerLeaving(SSPlayer ssp)
        {
            if (this.m_Status != RaceState.InProgress)
            {
                return;
            }
            this.m_Racers.Remove(ssp.PlayerName);

            if (this.m_Racers.Count == 0)
            {
                this.race_EndRace();
            }
        }
コード例 #29
0
ファイル: Main.cs プロジェクト: S8PsyOps/BattleCore
        public void MonitorPlayerEnteredEvent(object sender, PlayerEnteredEvent e)
        {
            Game(msg.pm(e.PlayerName, "?watchdamage"));

            if (!m_Initialized)
            {
                return;
            }
            SSPlayer ssp = m_Players.GetPlayer(e);

            this.m_GFX.RefreshDisplay_Player(ssp);
            psyGame.SafeSend(msg.pm(e.PlayerName, "?userid"));
        }
コード例 #30
0
ファイル: FileDataBase.cs プロジェクト: S8PsyOps/BattleCore
        private void baserace_savePLayer(BRPlayer racer, Base Base)
        {
            SSPlayer ssp = this.m_Players.PlayerList.Find(item => item.PlayerName == racer.PlayerName);

            if (ssp == null || !(ssp.SubspaceId > 0))
            {
                psyGame.SafeSend(msg.chan(1, "SSPlayer not found - Filedatabase - baserace_savePLayer."));
                return;
            }

            // Create Deva player profile folder if it isnt created
            System.IO.Directory.CreateDirectory(this.m_HomeDir + "Players" + Path.DirectorySeparatorChar + ssp.SubspaceId.ToString());

            // Check deva profile - create profile if not created
            if (!this.playerHasDevaProfile(ssp))
            {
                this.createDevaPlayerProfile(ssp);
            }

            string racerDir = this.m_HomeDir + "BaseRace" + Path.DirectorySeparatorChar + "Racers" + Path.DirectorySeparatorChar + ssp.SubspaceId.ToString();

            // Create racer folder if it isnt created
            System.IO.Directory.CreateDirectory(racerDir);

            // Check Race profile - create profile if not created
            if (!this.playerHasRaceProfile(ssp, racerDir))
            {
                this.createRaceProfile(ssp, racerDir);
            }

            // Store race time for player
            using (StreamWriter w = File.AppendText(racerDir + Path.DirectorySeparatorChar + "base" + Base.BaseID.ToString().PadLeft(3, '0') + ".times"))
            {
                w.WriteLine("Player:" + ssp.PlayerName);
                w.WriteLine("Ship:" + racer.Ship);
                w.WriteLine("Time:" + racer.Time);
                w.WriteLine("Date:" + DateTime.Now.ToShortDateString());
            }

            string baseDir = this.m_HomeDir + "BaseRace" + Path.DirectorySeparatorChar + "Bases" + Path.DirectorySeparatorChar;

            using (StreamWriter w = File.AppendText(baseDir + "base" + Base.BaseID.ToString().PadLeft(3, '0') + ".times"))
            {
                w.WriteLine("Player:" + ssp.PlayerName);
                w.WriteLine("Ship:" + racer.Ship);
                w.WriteLine("Time:" + racer.Time);
                w.WriteLine("Date:" + DateTime.Now.ToShortDateString());
            }

            //need to store match if player count > 1
        }