public void player_Remove(SSPlayer p) { this.m_ActivityTimeStamp = DateTime.Now; this.m_CurrentPoint.removePlayer(p.PlayerName); this.player_TeamCountUpdate(); }
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); }
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); } }
//----------------------------------------------------------------------// // 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) + ".")); }
//----------------------------------------------------------------------// // 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); }
//----------------------------------------------------------------------// // 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(); } } }
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")); }
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 + " ]")); }
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!")); } } } }
public void Event_PlayerLeft(SSPlayer ssp) { RaceData.Race racer = m_RaceData.getRacer(ssp.PlayerName); if (!racer.name.Equals(".null")) { racer.reason = "left arena"; } }
//----------------------------------------------------------------------// // Misc // //----------------------------------------------------------------------// private RaceGame getRace(SSPlayer p) { if (p.Ship == ShipTypes.Spectator) { return(null); } return(this.m_Races.Find(item => item.raceFreq() == p.Frequency)); }
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); }
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); } }
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); } }
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); } }
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); } }
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); } }
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.")); } }
public void MonitorShipChangeEvent(object sender, ShipChangeEvent e) { if (!m_Initialized) { return; } SSPlayer ssp = m_Players.GetPlayer(e); //m_BaseRace2.Event_ShipChange(ssp); }
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); }
// 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, "--------------------------------------------------------")); } }
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); }
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.")); } }
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); }
// 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); } }
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); }
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.")); }
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(); } }
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")); }
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 }