/// <summary> /// Constructor /// </summary> public MafiaWarManager() { string GameData; using (var dbClient = Plus.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("SELECT * FROM game_settings WHERE type = 'mafiawars'"); DataTable GameTable = dbClient.GetTable(); GameData = GameTable.Rows[0]["data"].ToString(); } if (GameData == null) { Console.WriteLine("FAILED TO INITIALIZE MAFIA WARS"); return; } DataArray = GameData.Split(','); // Split string by , and make a new vector instance | X,Y,X,Y Vector2D WaitingAreaGreen = new Vector2D(Convert.ToInt32(DataArray[0]), Convert.ToInt32(DataArray[1])); Vector2D WaitingAreaBlue = new Vector2D(Convert.ToInt32(DataArray[2]), Convert.ToInt32(DataArray[3])); MWTeam Green = new MWTeam("Green", "ha-3352-101-101.sh-290-101.lg-275-101.ch-3030-101", WaitingAreaGreen); MWTeam Blue = new MWTeam("Blue", "ha-3352-106-106.lg-275-106.sh-290-106.ch-3030-106", WaitingAreaBlue); MWTeams.Add("Green", Green); MWTeams.Add("Blue", Blue); }
/// <summary> /// Sends a message to the team members /// </summary> public void WhisperToTeam(string Message, MWTeam Team) { lock (Team.Players.Keys) { foreach (GameClient User in Team.Players.Keys) { User.SendWhisper("[MAFIA WARS] " + Message); } } }
/// <summary> /// Gives the winning players a prize /// </summary> /// <param name="Team"></param> public void TeamWon(string Team) { MWTeam WinningTeam = MWTeams[Team]; lock (MWTeams.Values) { foreach (MWTeam TheTeam in MWTeams.Values.ToList()) { if (TheTeam == null || TheTeam.Players == null) { continue; } lock (TheTeam.Players.Keys) { foreach (GameClient User in TheTeam.Players.Keys.ToList()) { if (User == null || User.GetHabbo() == null || User.GetRoleplay() == null) { continue; } string LosingTeam = "none"; if (WinningTeam.TeamName.ToLower() == "green") { LosingTeam = "Blue"; } else { LosingTeam = "Green"; } User.SendNotif("The " + WinningTeam.TeamName.ToLower() + " Team won the match by kiling the " + LosingTeam + " Team's Boss, and received " + Prize + " coins!"); if (User.GetRoleplay().TeamString == Team) { User.GetRoleplay().GiveMafiaWarPoints(WinPoints); User.GetHabbo().Credits += Prize; User.GetHabbo().UpdateCreditsBalance(); } RemoveUserFromGame(User, User.GetRoleplay().TeamString, false); User.GetMessageHandler().PrepareRoomForUser(124, ""); } } } } EndGame(); }
/// <summary> /// Adds user to a MWTeam /// </summary> public bool AddUserToGame(GameClient User, string TeamString) { if (User == null || User.GetHabbo() == null || User.GetRoleplay() == null) { return(false); } if (User.GetRoleplay().InMafiaWars == true) { return(false); } // Gets the MWTeam the user requested to join via the dictionary MWTeam MWTeamRequested = MWTeams[TeamString]; if (MWTeamRequested == null) { return(false); } if (MWTeamRequested.WaitingAreaPOS == null) { return(false); } RoomUser RUser = User.GetHabbo().GetRoomUser(); if (RUser == null) { return(false); } User.GetRoleplay().TeamString = TeamString; User.GetRoleplay().InMafiaWars = true; MWTeamRequested.Players.Add(User, 0); User.GetRoleplay().figBeforeWar = User.GetHabbo().Look; User.GetHabbo().Look = RoleplayManager.SplitFigure(User.GetHabbo().Look) + MWTeamRequested.Look; User.GetRoleplay().RefreshVals(); RUser.SetPos(MWTeamRequested.WaitingAreaPOS.X, MWTeamRequested.WaitingAreaPOS.Y, 0); RUser.ClearMovement(); // Attempt to start the game StartGame(); return(true); }
/// <summary> /// Removes the user from game /// </summary> public bool RemoveUserFromGame(GameClient User, string TeamString, bool Alert = true, bool disconnect = false) { if (User == null || User.GetHabbo() == null || User.GetRoleplay() == null) { MWTeams[TeamString].Players.Remove(User); return(false); } MWTeam UserTeam = MWTeams[TeamString]; if (UserTeam == null) { return(false); } UserTeam.Players.Remove(User); User.GetRoleplay().TeamString = String.Empty; User.GetRoleplay().InMafiaWars = false; User.GetRoleplay().LastHitBot = null; User.GetHabbo().Look = User.GetRoleplay().figBeforeWar; if (!disconnect) { User.GetRoleplay().RefreshVals(); User.GetMessageHandler().PrepareRoomForUser(124, ""); } if (Alert) { WhisperToTeam(User.GetHabbo().UserName + " has left the game!", UserTeam); } if (GetPlayerCount() <= 0) { TeamWon("Blue"); } return(true); }