Beispiel #1
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Params
            if (Params.Length < 2)
            {
                Session.SendWhisper("Comando inválido, use :banwpp <usuário>", 1);
                return;
            }

            string     Chatter       = Params[1].ToString();
            GameClient TargetSession = PlusEnvironment.GetGame().GetClientManager().GetClientByUsername(Chatter);

            bool BanFromMaking = false;

            if (Params.Length == 3)
            {
                if (Convert.ToString(Params[2]).ToLower().StartsWith("sim"))
                {
                    BanFromMaking = true;
                }
            }
            #endregion

            #region Conditions
            if (TargetSession == null)
            {
                Session.SendWhisper("Alvo não encontrado!", 1);
                return;
            }
            #endregion

            #region Execute

            if (TargetSession.GetRoleplay().ChatRooms.Count > 0)
            {
                foreach (WebSocketChatRoom Chat in TargetSession.GetRoleplay().ChatRooms.Values)
                {
                    if (Chat == null)
                    {
                        continue;
                    }

                    WebSocketChatManager.Disconnect(TargetSession, Chat.ChatName);
                }
            }

            Session.Shout("*Proíbe imediatamente " + TargetSession.GetHabbo().Username + " de se juntar ou criar Grupos de WhatsApp " + ((BanFromMaking) ? ""  : "") + "!*", 23);
            TargetSession.SendWhisper("Você foi banido de se juntar a uma sala de bate-papo por um membro da equipe!", 1);
            TargetSession.GetRoleplay().BannedFromChatting = true;

            if (BanFromMaking)
            {
                TargetSession.SendWhisper("Você foi proibido de fazer uma sala de bate-papo por um membro da equipe!", 1);
                TargetSession.GetRoleplay().BannedFromMakingChat = true;
            }

            RoleplayManager.Shout(TargetSession, "*Pega meu " + RoleplayManager.GetPhoneName(TargetSession) + " e deleta o Aplicativo WhatsApp*", 4);

            #endregion
        }
Beispiel #2
0
        public static void PerformShutDown(bool Crashed = true)
        {
            Console.Clear();
            log.Info("Servidor desligando...");
            Console.Title = "Plus Emulador: Desligando!";

            if (!Crashed)
            {
                PlusEnvironment.GetGame().GetClientManager().SendMessage(new Communication.Packets.Outgoing.Rooms.Notifications.RoomNotificationComposer("[Alerta de Manutenção]", PlusEnvironment.GetGame().GetLanguageLocale().TryGetValue("shutdown_alert"), "disconnection", "ok", "event:"));
            }
            else
            {
                PlusEnvironment.GetGame().GetClientManager().SendMessage(new RoomNotificationComposer("[Alerta de Manutenção]", PlusEnvironment.GetGame().GetLanguageLocale().TryGetValue("shutdown_alert_crash"), "disconnection", "ok", "event:"));
            }
            GetGame().StopGameLoop();

            Thread.Sleep(Crashed ? 6500 : 2500);

            GetConnectionManager().Destroy();             //Stop listening.

            GetGame().GetPacketManager().UnregisterAll(); //Unregister the packets.
            GetGame().GetPacketManager().WaitForAllToComplete();

            FarmingManager.UpdateAllFarmingSpaces();

            RoleplayManager.TimerManager.EndAllTimers();
            RoleplayManager.TimerManager = null;

            GetGame().GetClientManager().CloseAll(); //Close all connections
            GetGame().GetRoomManager().Dispose();    //Stop the game loop.

            using (IQueryAdapter dbClient = _manager.GetQueryReactor())
            {
                dbClient.RunQuery("TRUNCATE `catalog_marketplace_data`");
                dbClient.RunQuery("UPDATE `users` SET online = '0', `auth_ticket` = NULL");
                dbClient.RunQuery("UPDATE `rooms` SET `users_now` = '0' WHERE `users_now` > '0'");
                dbClient.RunQuery("UPDATE `server_status` SET `users_online` = '0', `loaded_rooms` = '0', `environment_status` = '" + (Crashed ? 3 : 0) + "'");
            }

            WebSocketChatManager.StopAllChats();

            log.Info("Plus Emulador desligado com sucesso.");

            Thread.Sleep(1000);
            Environment.Exit(0);
        }
Beispiel #3
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Params
            if (Params.Length < 2)
            {
                Session.SendWhisper("Comando inválido!", 1);
                return;
            }

            string InputtedChatName = Convert.ToString(Params[1]);

            WebSocketChatRoom NewChatRoom = WebSocketChatManager.GetChatByName(InputtedChatName.ToLower());

            #endregion

            #region Conditions
            if (Session.GetRoleplay().BannedFromChatting)
            {
                Session.SendWhisper("Você está proibido de se juntar a qualquer Grupo do WhatsApp!", 1);
                return;
            }

            if (NewChatRoom == null)
            {
                Session.SendWhisper("O bate-papo não existe!", 1);
                return;
            }

            if (!Session.GetRoleplay().PhoneApps.Contains("whatsapp"))
            {
                Session.SendWhisper("Você precisa do Aplicativo Whatsapp para fazer isso! Digite :baixar whatsapp.", 1);
                return;
            }
            #endregion

            #region Execute

            PlusEnvironment.GetGame().GetWebEventManager().ExecuteWebEvent(Session, "event_chatroom", JsonConvert.SerializeObject(new Dictionary <object, object>()
            {
                { "action", "requestjoin" },
                { "chatname", NewChatRoom.ChatName },
            }));

            #endregion
        }
Beispiel #4
0
        public void Disconnect(bool ForcedDisconnect)
        {
            if (LoggingOut)
            {
                return;
            }

            LoggingOut = true;

            try
            {
                #region WebSocket
                PlusEnvironment.GetGame().GetWebEventManager().CloseSocketByGameClient(((this.GetHabbo() == null) ? 0 : this.GetHabbo().Id));
                if (GetRoleplay() != null)
                {
                    foreach (WebSocketChatRoom ChatRoom in GetRoleplay().ChatRooms.Values)
                    {
                        if (ChatRoom == null)
                        {
                            continue;
                        }
                        WebSocketChatManager.Disconnect(this, ChatRoom.ChatName, false, null);
                    }
                }
                #endregion

                if (GetRoomUser() != null && !ForcedDisconnect)
                {
                    RoleplayManager.Chat(this, GetHabbo().Username + " irá sair em 10 segundos.", 1);
                    GetRoomUser().ApplyEffect(95);

                    if (GetHabbo() != null && GetHabbo().CurrentRoom != null)
                    {
                        GetHabbo().CurrentRoom.SendMessage(new SleepComposer(GetRoomUser(), true));
                    }

                    GetRoomUser().CanWalk = false;
                    GetRoomUser().ClearMovement(true);
                }

                if (GetRoleplay() != null)
                {
                    if (GetRoleplay().UserDataHandler != null)
                    {
                        GetRoleplay().UserDataHandler.SaveFarmingData();
                        GetRoleplay().UserDataHandler.SaveCooldownData();
                        GetRoleplay().UserDataHandler.SaveData();
                        GetRoleplay().UserDataHandler = null;
                    }
                }

                if (GetHabbo() != null)
                {
                    using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                        dbClient.RunQuery(GetHabbo().GetQueryString);
                }

                if (!ForcedDisconnect)
                {
                    new Thread(() =>
                    {
                        Thread.Sleep(8000);

                        if (GetRoleplay() != null)
                        {
                            GetRoleplay().UserDataHandler = new UserDataHandler(this, GetRoleplay());
                            GetRoleplay().UserDataHandler.SaveFarmingData();
                            GetRoleplay().UserDataHandler.SaveCooldownData();
                            GetRoleplay().UserDataHandler.SaveData();
                            GetRoleplay().UserDataHandler = null;
                        }

                        if (GetHabbo() != null)
                        {
                            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                                dbClient.RunQuery(GetHabbo().GetQueryString);
                        }

                        EventManager.TriggerEvent("OnDisconnect", this);

                        Thread.Sleep(1000);

                        if (GetRoomUser() != null)
                        {
                            GetRoomUser().ApplyEffect(108);
                        }

                        Thread.Sleep(1000);

                        if (GetHabbo() != null)
                        {
                            using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                            {
                                dbClient.RunQuery(GetHabbo().GetQueryString);
                            }

                            GetHabbo().OnDisconnect();
                        }

                        if (!_disconnected)
                        {
                            if (_connection != null)
                            {
                                _connection.Dispose();
                            }
                            _disconnected = true;
                        }
                    }).Start();
                }
                else
                {
                    EventManager.TriggerEvent("OnDisconnect", this);

                    if (GetHabbo() != null)
                    {
                        using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                        {
                            dbClient.RunQuery(GetHabbo().GetQueryString);
                        }

                        GetHabbo().OnDisconnect();
                    }

                    if (!_disconnected)
                    {
                        if (_connection != null)
                        {
                            _connection.Dispose();
                        }
                        _disconnected = true;
                    }
                }
            }
            catch (Exception e)
            {
                Logging.LogException(e.ToString());
            }
        }
Beispiel #5
0
        public Game()
        {
            this._packetManager = new PacketManager();

            this._clientManager = new GameClientManager();

            this._modManager = new ModerationManager();

            this._moderationTool = new ModerationTool();


            this._itemDataManager = new ItemDataManager();
            this._itemDataManager.Init();

            this._catalogManager = new CatalogManager();
            this._catalogManager.Init(this._itemDataManager);

            this._televisionManager = new TelevisionManager();

            this._navigatorManager = new NavigatorManager();

            this._roomManager = new RoomManager();

            this._chatManager = new ChatManager();

            this._questManager = new QuestManager();

            this._achievementManager = new AchievementManager();

            this._talentTrackManager = new TalentTrackManager();

            this._landingViewManager = new LandingViewManager();

            this._gameDataManager = new GameDataManager();

            this._globalUpdater = new ServerStatusUpdater();
            this._globalUpdater.Init();

            this._languageLocale = new LanguageLocale();

            this._antiMutant = new AntiMutant();

            this._botManager = new BotManager();

            this._cacheManager = new CacheManager();

            this._rewardManager = new RewardManager();

            this._badgeManager = new BadgeManager();
            this._badgeManager.Init();

            this._permissionManager = new PermissionManager();
            this._permissionManager.Init();

            this._subscriptionManager = new SubscriptionManager();
            this._subscriptionManager.Init();

            this._guideManager = new GuideManager();

            int pollLoaded;

            this._pollManager = new PollManager();
            this._pollManager.Init(out pollLoaded);

            #region Roleplay Section
            RoleplayData.Initialize();
            EventManager.Initialize();
            CombatManager.Initialize();
            RoleplayGameManager.Initialize();

            this._groupManager = new GroupManager();
            this._groupManager.Initialize();

            TexasHoldEmManager.Initialize();
            TurfManager.Initialize();
            WeaponManager.Initialize();
            FoodManager.Initialize();
            FarmingManager.Initialize();
            CraftingManager.Initialize();
            LotteryManager.Initialize();
            ToDoManager.Initialize();
            BlackListManager.Initialize();
            BountyManager.Initialize();
            WebSocketChatManager.Initialiaze();

            this._houseManager = new HouseManager();
            this._houseManager.Init();

            this._webEventManager = new WebEventManager();
            this._webEventManager.Init();
            #endregion
        }
Beispiel #6
0
        public void Execute(GameClients.GameClient Session, Rooms.Room Room, string[] Params)
        {
            #region Variables
            if (Params.Length < 2)
            {
                Session.SendWhisper("Comando inválido, use :delchat <nomedochat>", 1);
                return;
            }

            bool BanUserFromMaking   = false;
            bool BanUserFromChatting = false;

            if (Params.Length >= 3)
            {
                if (Convert.ToString(Params[2]).ToLower().StartsWith("sim"))
                {
                    BanUserFromMaking = true;
                }
            }

            if (Params.Length == 4)
            {
                if (Convert.ToString(Params[3]).ToLower().StartsWith("sim"))
                {
                    BanUserFromChatting = true;
                }
            }

            string ChatName = Convert.ToString(Params[1]);

            #endregion

            #region Conditions

            if (!WebSocketChatManager.RunningChatRooms.ContainsKey(ChatName.ToLower()))
            {
                Session.SendWhisper("Este bate-papo '" + ChatName.ToLower() + "' não existe!", 1);
                return;
            }

            WebSocketChatRoom Chat = WebSocketChatManager.RunningChatRooms[ChatName.ToLower()];

            if (Chat == null)
            {
                Session.SendWhisper("Ocorreu um erro, este bate-papo não existe!", 1);
                return;
            }
            #endregion

            #region Execute

            GameClient ChatOwner = null;

            if (Chat.ChatOwner > 0)
            {
                ChatOwner = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Chat.ChatOwner);

                using (IQueryAdapter DB = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    if (BanUserFromChatting)
                    {
                        if (ChatOwner == null)
                        {
                            DB.RunQuery("UPDATE rp_stats SET wchat_banned = '1' WHERE id = '" + Chat.ChatOwner + "'");
                        }
                        else
                        {
                            ChatOwner.GetRoleplay().BannedFromChatting = true;
                            ChatOwner.SendWhisper("Você foi impedido de poder se juntar a uma sala de bate-papo ");
                        }
                    }

                    if (BanUserFromMaking)
                    {
                        if (ChatOwner == null)
                        {
                            DB.RunQuery("UPDATE rp_stats SET wchat_making_banned = '1' WHERE id = '" + Chat.ChatOwner + "'");
                        }
                        else
                        {
                            ChatOwner.GetRoleplay().BannedFromMakingChat = true;
                            ChatOwner.SendWhisper("Você foi impedido de poder se juntar a uma sala de bate-papo");
                        }
                    }
                }
            }
            else
            {
                if (BanUserFromChatting || BanUserFromMaking)
                {
                    Session.SendWhisper("Não havia nenhum proprietário para este bate-papo, então não tem ninguém para proibir", 1);
                }
            }

            Session.SendWhisper("Excluiu o bate-papo com sucesso '" + Chat.ChatName + "'. O dono foi notificado!");

            if (ChatOwner != null)
            {
                ChatOwner.SendWhisper("Seu chat '" + Chat.ChatName + "' foi excluído por um membro da equipe!");
            }

            WebSocketChatManager.DeleteChat(Chat);

            #endregion
        }