예제 #1
0
        /// <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);
        }
예제 #2
0
 /// <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);
         }
     }
 }
예제 #3
0
        /// <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();
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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);
        }