コード例 #1
0
ファイル: LogManager.cs プロジェクト: elitak/open-steamworks
        void ChatRoomMsg( ChatRoomMsg_t chatMsg )
        {
            if ( !groupChatEnabled || !sets.GroupChatEnabled )
                return;

            byte[] msgData = new byte[ 1024 * 4 ];
            EChatEntryType chatType = EChatEntryType.k_EChatEntryTypeInvalid;
            ulong chatter = 0;

            int len = getChatMsg( clientFriends.Interface, chatMsg.m_ulSteamIDChat, ( int )chatMsg.m_iChatID, ref chatter, msgData, msgData.Length, ref chatType );

            len = Clamp( len, 1, msgData.Length );

            LogMessage log = new LogMessage();

            log.IsGroupMsg = true;
            log.ChatRoom = chatMsg.m_ulSteamIDChat;
            log.ChatRoomName = getChatName( clientFriends.Interface, log.ChatRoom );

            log.Sender = new CSteamID( chatMsg.m_ulSteamIDUser );
            log.SenderName = steamFriends.GetFriendPersonaName( log.Sender );

            log.Reciever = log.Sender;
            log.RecieverName = log.SenderName;

            log.Message = Encoding.UTF8.GetString( msgData, 0, len );
            log.Message = log.Message.Substring(0, log.Message.Length - 1);
            log.MessageTime = DateTime.Now;
            log.MessageType = chatType;

            AddLog( log );
        }
コード例 #2
0
        private void ChatMessage(ChatRoomMsg_t message)
        {
            if (message.m_ulSteamIDUser == clientUser.GetSteamID())
            {
                return;
            }

            IChannel ch = GetSteamChannel(message.m_ulSteamIDChat);

            if (ch == null)
            {
                return;
            }

            byte[]         msg  = new byte[4096];
            EChatEntryType type = EChatEntryType.k_EChatEntryTypeInvalid;

            int len = clientFriends.GetChatRoomEntry(message.m_ulSteamIDChat, (int)message.m_iChatID, ref message.m_ulSteamIDUser, msg, 4096, ref type);

            len--;

            if (type != EChatEntryType.k_EChatEntryTypeChatMsg && type != EChatEntryType.k_EChatEntryTypeEmote)
            {
                return;
            }

            byte[] a = new byte[len];
            Array.Copy(msg, a, len);

            string[] Messs = Encoding.UTF8.GetString(a).Split(new char[] { '\n' });
            IClient  cl    = GetSteamClient(message.m_ulSteamIDUser);

            if (cl == null)
            {
                if (clientList.Clients.ContainsKey(message.m_ulSteamIDUser))
                {
                    cl = clientList.Clients[message.m_ulSteamIDUser];
                }
                else
                {
                    cl = new SteamClient(message.m_ulSteamIDUser);
                }
                clients.Add(cl);
                ch.AddClient(cl);
            }

            foreach (string Mess in Messs)
            {
                cl.AddMessage(IRCMessage.GetStatic().CreateMessage(cl, cl.UserString, "PRIVMSG", new string[] { "&" + ch.ChannelName, (type == EChatEntryType.k_EChatEntryTypeEmote ? "ACTION " : "") + Mess + (type == EChatEntryType.k_EChatEntryTypeEmote ? "" : "") }));
            }
            //ch.SendMessage(Message.CreateMessage(cl, cl.UserString, "PRIVMSG", new string[] { "&" + Server.StripString(clientFriends.GetChatRoomName(message.m_ulSteamIDChat)), "" + (type == EChatEntryType.k_EChatEntryTypeEmote ? "ACTION " : "") + Mess + (type == EChatEntryType.k_EChatEntryTypeEmote ? "" : "") }));
        }