Пример #1
0
        /// <summary>
        /// Checks if the user is authenticated {insert into the chatuser concurrentdictionary}
        /// </summary>
        /// <param name="User">Target user</param>
        /// <param name="ChatName">Target chat</param>
        /// <returns>true or false</returns>
        public static bool AuthenticatedInChatRoom(GameClient User, string ChatName)
        {
            if (User == null)
            {
                return(false);
            }

            if (User.GetRoleplay() == null)
            {
                return(false);
            }

            if (User.GetRoleplay().WebSocketConnection == null)
            {
                User.SendWhisper("Você deve estar conectado ao websocket para poder se juntar aos grupos! Entre em contato com um membro da equipe se esse problema persistir!", 1);
                return(false);
            }

            if (!RunningChatRooms.ContainsKey(ChatName.ToLower()))
            {
                User.SendWhisper("Este chat não existe!", 1);
                return(false);
            }

            WebSocketChatRoom ChatRoom = RunningChatRooms[ChatName.ToLower()];

            if (!ChatRoom.ChatUsers.ContainsKey(User))
            {
                User.SendWhisper("Você não está neste chat, acesso negado.", 1);
                return(false);
            }


            return(true);
        }
Пример #2
0
        public static void DeleteChat(WebSocketChatRoom ChatRoom)
        {
            ChatRoom.Stop("Este grupo foi excluído por um membro da equipe!");

            using (IQueryAdapter DB = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                DB.RunQuery("DELETE FROM rp_chat_rooms WHERE name = '" + ChatRoom.ChatName + "'");
                DB.RunQuery("DELETE FROM rp_chat_rooms_data WHERE chat_name = '" + ChatRoom.ChatName + "'");
                DB.RunQuery("DELETE FROM rp_chat_rooms_logs WHERE chat_name = '" + ChatRoom.ChatName + "'");
            }
        }
Пример #3
0
        /// <summary>
        /// Initialize WebSocketChatManager and insert chats from database
        /// </summary>
        public static void Initialiaze()
        {
            #region Stop running chats
            if (RunningChatRooms.Count > 0)
            {
                StopAllChats();
            }

            #endregion

            #region Insert data
            RunningChatRooms.Clear();
            DataTable ChatRooms;

            using (IQueryAdapter DB = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                DB.SetQuery("SELECT * from `rp_chat_rooms`");
                ChatRooms = DB.getTable();

                if (ChatRooms != null)
                {
                    foreach (DataRow ChatRoom in ChatRooms.Rows)
                    {
                        string     ChatName     = ChatRoom["name"].ToString();
                        int        OwnerID      = Convert.ToInt32(ChatRoom["owner_id"]);
                        string     ChatPassword = ChatRoom["password"].ToString();
                        int        GangID       = Convert.ToInt32(ChatRoom["gang_id"]);
                        string     Locked       = ChatRoom["locked"].ToString();
                        List <int> ChatAdmins   = (!String.IsNullOrEmpty(Convert.ToString(ChatRoom["admins"])) && Convert.ToString(ChatRoom["admins"]).Contains(":")) ? (Convert.ToString(ChatRoom["admins"]).StartsWith(":")) ? Convert.ToString(ChatRoom["admins"]).Remove(0, 1).Split(':').Select(int.Parse).ToList() : Convert.ToString(ChatRoom["admins"]).Split(':').Select(int.Parse).ToList() : new List <int>();

                        WebSocketChatRoom newChatRoom = new WebSocketChatRoom(ChatName, OwnerID, new Dictionary <object, object>()
                        {
                            { "password", ChatPassword }, { "gang", GangID }, { "locked", PlusEnvironment.EnumToBool(Locked) }
                        }, ChatAdmins, true);
                        newChatRoom.RefreshChatRoomData(); // Get chat bans & mutes

                        RunningChatRooms.TryAdd(newChatRoom.ChatName, newChatRoom);
                    }
                }
            }
            #endregion

            if (WebSocketChatManagerMainTimer == null)
            {
                object[] Params = null;
                WebSocketChatManagerMainTimer = new WebSocketChatManagerMainTimer("websocketchatmanager", 1000, true, Params);
            }

            log.Info("Carregado " + RunningChatRooms.Count + " grupos wpp.");
        }
Пример #4
0
        /// <summary>
        /// Completely remove a user from a target chat name
        /// </summary>
        /// <param name="User">Target user to remove from </param>
        /// <param name="ChatName">Target chat's name</param>
        /// <param name="AlertMSG">Alert sent to user while user is removed</param>
        /// <param name="MSG">Whether to send an alert while removing</param>
        public static void Disconnect(GameClient User, string ChatName, bool AlertMSG = false, string MSG = null)
        {
            if (User == null)
            {
                return;
            }

            if (RunningChatRooms == null)
            {
                return;
            }

            if (!RunningChatRooms.ContainsKey(ChatName.ToLower()))
            {
                return;
            }

            WebSocketChatRoom Chat = GetChatByName(ChatName);

            if (Chat == null)
            {
                return;
            }

            if (AlertMSG && MSG != null)
            {
                if (User.GetRoleplay() != null)
                {
                    User.GetRoleplay().SendTopAlert(MSG);
                }
            }

            if (!Chat.ChatUsers.ContainsKey(User))
            {
                return;
            }

            RunningChatRooms[ChatName.ToLower()].DecomposeChatDIV(User);

            if (Chat.ChatUsers.ContainsKey(User))
            {
                Chat.OnUserLeft(User);
            }

            WebSocketChatRoom outChat;

            if (!User.LoggingOut)
            {
                if (User.GetRoleplay() == null)
                {
                    return;
                }
                if (User.GetRoleplay().ChatRooms == null)
                {
                    return;
                }
                User.GetRoleplay().ChatRooms.TryRemove(ChatName.ToLower(), out outChat);
            }

            RunningChatRooms[ChatName.ToLower()].CheckDelete();
        }