Exemplo n.º 1
0
 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!"));
             }
         }
     }
 }
Exemplo n.º 2
0
 public void Event_PlayerLeft(SSPlayer ssp)
 {
     RaceData.Race racer = m_RaceData.getRacer(ssp.PlayerName);
     if (!racer.name.Equals(".null"))
     {
         racer.reason = "left arena";
     }
 }
Exemplo n.º 3
0
        private void SavePlayerScore(RaceData.Race rp, SSPlayer ssp, TimeSpan time)
        {
            // user id never recorded, cant saveto file
            if (ssp.PlayerId <= 0)
            {
                return;
            }

            string sourceDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "/BaseRace/";

            string pFolder = sourceDirectory + "Racers/" + ssp.SubspaceId.ToString();

            System.IO.Directory.CreateDirectory(pFolder);

            if (!File.Exists(pFolder + "/profile.info"))
            {
                using (StreamWriter writer = new StreamWriter(pFolder + "/profile.info"))
                {
                    writer.WriteLine("[Racer Information]");
                    writer.WriteLine("PlayerName:" + ssp.PlayerName);
                    writer.WriteLine("FirstPlayed:" + DateTime.Now.ToShortDateString());
                }
            }

            // Update BaseTime for player - adds a new line with time only - (dir) Racers/PlayerID/BaseID.times
            string pBaseFile = pFolder + "/" + this.m_Base.BaseID + ".times";

            if (!File.Exists(pBaseFile))
            {
                File.Create(pBaseFile).Close();
            }
            using (StreamWriter w = File.AppendText(pBaseFile))
            {
                w.WriteLine(time);
            }

            string bBaseFile = sourceDirectory + "Bases/" + this.m_Base.BaseID + ".times";

            if (!File.Exists(bBaseFile))
            {
                File.Create(bBaseFile).Close();
            }
            using (StreamWriter w = File.AppendText(bBaseFile))
            {
                w.WriteLine("Player:" + ssp.PlayerName);
                w.WriteLine("Time:" + time);
            }
        }
Exemplo n.º 4
0
        public void Event_ShipChange(SSPlayer ssp)
        {
            //SSPlayer myPlayer = this.m_Players.PlayerList.Find(item => item.PlayerName == "PsyOps");
            //SSPlayer myPlayer2 = this.m_Players.PlayerList.Find(item => item.Frequency == 1234);

            //int freq0count = this.m_Players.PlayerList.FindAll(item => item.Frequency == 0 && item.Ship != ShipTypes.Spectator).Count;

            //foreach (SSPlayer player in this.m_Players.PlayerList){ }

            if (game_status == false)
            {
                if (second <= 20 && second >= 0)
                {
                    RaceData.Race racer = m_RaceData.getRacer(ssp.PlayerName);// AhmadClass.RaceData.Race racer = m_RaceData.getRacer(e.PlayerName);
                    if (!racer.name.Equals(".null"))
                    {
                        if (ssp.Ship != ShipTypes.Warbird)
                        {
                            if (ssp.Ship != ShipTypes.Spectator)
                            {
                                psyGame.Send(msg.warp(ssp.PlayerName, m_RaceData.Start_x, m_RaceData.Start_y));
                                psyGame.Send(msg.pm(ssp.PlayerName, "*setship " + ship));
                                psyGame.Send(msg.pm(ssp.PlayerName, "*prize -engineshutdown"));
                            }
                            else if (ssp.Ship == ShipTypes.Spectator)
                            {
                                m_RaceData.RemoveRacer(racer);
                            }
                        }
                    }
                }
            }
            else
            {
                if (ssp.Ship != ShipTypes.Warbird)
                {
                    RaceData.Race v = m_RaceData.getRacer(ssp.PlayerName);
                    if (!v.name.Equals(".null"))
                    {
                        if (v.reason == "" && v.reach == false)
                        {
                            v.reason = "ShipChange";
                        }
                    }
                }
            }
        }
Exemplo n.º 5
0
        //----------------------------------------------------------------------//
        //                     Game Functions                                   //
        //----------------------------------------------------------------------//
        public void GameOver(Boolean msgz)
        {
            if (msgz == true)
            {
                psyGame.Send(msg.arena("Game Over", SoundCodes.Hallellula));
                psyGame.Send(msg.arena("Type  [ !br start ]  to join again!"));
                //   }
            }

            if (m_RaceData.isThereReach() == true)
            {
                psyGame.Send(msg.arena("+------+--------------+-----------------+"));
                psyGame.Send(msg.arena("| Rank | Player       |     Time        |"));
                psyGame.Send(msg.arena("+------+--------------+-----------------+"));
                // getTopPlayers();
                for (int i = 0; i < 11; ++i)
                {
                    if (i >= 1 && i <= 10)
                    {
                        if (m_RaceData.top10[i] != "")
                        {
                            RaceData.Race racer = m_RaceData.getRacer(m_RaceData.top10[i]);
                            string        rankz = "" + racer.rank;
                            string        name  = racer.name;
                            string        time  = racer.ctime;
                            psyGame.Send(msg.arena(String.Format("| {0,-4} | {1,-12} | {2,15} |", rankz, name, time)));
                            //Game(msg.arena("| " + rankz.PadRight(4) + " | " + name.PadRight((getStringLen("+--------------+")-(name.Length+1))) + "|" + time.PadRight(getStringLen("+------+--------------+-----------------")) + "|"));
                        }
                    }
                }
                psyGame.Send(msg.arena("+------+--------------+-----------------+"));
            }
            this.loadNextBase();
            game_status = false;
            if (m_Timer.Enabled)
            {
                m_Timer.Stop();
            }
            second           = -1;
            m_RaceData.top10 = new string[11] {
                "", "", "", "", "", "", "", "", "", "", ""
            };
            rank = 0;
            m_RaceData.RaceItems.Clear();
        }
Exemplo n.º 6
0
        //----------------------------------------------------------------------//
        //                         Events                                       //
        //----------------------------------------------------------------------//
        public void Event_PlayerPosition(SSPlayer ssp)
        {
            int tilex  = ssp.Position.MapPositionX / 16;
            int tiley  = ssp.Position.MapPositionY / 16;
            int pixelx = ssp.Position.MapPositionX;
            int pixely = ssp.Position.MapPositionY;/// 16;

            //Game(msg.macro("X: " + tilex + " Y:" + tiley));
            if (game_status == false)
            {
                if (second <= 20 && second >= 0)
                {
                    if (!m_RaceData.getRacer(ssp.PlayerName).name.Equals(".null"))
                    {
                        if (InRegion(ssp.Position, m_BaseManager.Lobby.BaseDimension))
                        {
                            psyGame.Send(msg.warp(ssp.PlayerName, m_RaceData.Start_x, m_RaceData.Start_y));
                            psyGame.Send(msg.pm(ssp.PlayerName, "*prize -engineshutdown"));
                            //   Game(msg.pm(e.PlayerName, "*setship " + ship));
                        }
                        if (!InRegion(ssp.Position, m_Base.AlphaSafe))
                        {
                            psyGame.Send(msg.warp(ssp.PlayerName, m_RaceData.Start_x, m_RaceData.Start_y));
                            psyGame.Send(msg.pm(ssp.PlayerName, "*prize -engineshutdown"));
                            //   Game(msg.pm(e.PlayerName, "*setship " + ship));
                        }
                        if (!ssp.Position.ShipState.IsSafe)
                        {
                            psyGame.Send(msg.warp(ssp.PlayerName, m_RaceData.Start_x, m_RaceData.Start_y));
                            psyGame.Send(msg.pm(ssp.PlayerName, "*prize -engineshutdown"));
                        }
                    }
                }
            }
            else
            {
                RaceData.Race v = m_RaceData.getRacer(ssp.PlayerName);
                if (!v.name.Equals(".null"))
                {
                    if (InRegion(ssp.Position, m_BaseManager.Lobby.BaseDimension))
                    {
                        if (v.reason == "" && v.reach == false)
                        {
                            v.reason = "BackToCenter";
                        }
                        //Game(msg.warp(e.PlayerName, m_RaceData.Start_x, m_RaceData.Start_y));
                        //   Game(msg.pm(e.PlayerName, "*setship " + ship));
                    }

                    //  AhmadClass.RaceData.Race e = v;//foreach list only readable cann't write i create this line to set value for ctime
                    m_RaceData.finish_x[0] = m_Base.BravoSafe[0];
                    m_RaceData.finish_y[0] = m_Base.BravoSafe[1];
                    m_RaceData.finish_x[1] = m_Base.BravoSafe[2];
                    m_RaceData.finish_y[1] = m_Base.BravoSafe[3];
                    if (m_RaceData.isInEnd(pixelx, pixely))
                    {
                        if (v.reason == "" && v.reach == false)
                        {
                            TimeSpan m_MatchTotalTime = DateTime.Now - m_TimeStart;
                            //m_TimeStart
                            v.ctime = m_MatchTotalTime.Minutes.ToString().PadLeft(2, '0') + ":" + m_MatchTotalTime.Seconds.ToString().PadLeft(2, '0') + "." + m_MatchTotalTime.Milliseconds;
                            v.reach = true;
                            string mm_rank = "";
                            ++rank;
                            RaceData.Race rp = m_RaceData.getRacer(ssp.PlayerName);
                            rp.rank = rank;
                            this.SavePlayerScore(rp, ssp, m_MatchTotalTime);

                            if (rank == 1)
                            {
                                mm_rank = "1st";
                            }
                            else if (rank == 2)
                            {
                                mm_rank = "2nd";
                            }
                            else if (rank == 3)
                            {
                                mm_rank = "3rd";
                            }
                            else if (rank >= 4)
                            {
                                mm_rank = rank + "th";
                            }
                            if (rank >= 1 && rank <= 10)
                            {
                                m_RaceData.top10[rank] = ssp.PlayerName;
                            }
                            psyGame.Send(msg.arena(mm_rank + "- " + ssp.PlayerName + " Time:" + v.ctime, SoundCodes.VictoryBell));
                        }
                    }
                }
                if (getTotalRacers() == 0)
                {
                    GameOver(true);
                }
                TimeSpan m_TimeGameTimeSpan = DateTime.Now - m_TimeGame;
                if (m_TimeGameTimeSpan.Minutes >= 5)
                {
                    foreach (RaceData.Race racer in m_RaceData.RaceItems)
                    {
                        psyGame.Send(msg.pm(racer.name, "*specall"));
                    }
                    GameOver(true);
                    psyGame.Send(msg.arena("Game has been timed out. Baserace Reset"));
                }
            }
            //  Game(msg.pub("tick"));
        }