Exemple #1
0
        public static void BBPostMessage(Mobile from, BaseBulletinBoard board, CircularBufferReader reader)
        {
            var thread = World.FindItem(reader.ReadUInt32()) as BulletinMessage;

            if (thread != null && thread.Parent != board)
            {
                thread = null;
            }

            var breakout = 0;

            while (thread?.Thread != null && breakout++ < 10)
            {
                thread = thread.Thread;
            }

            var lastPostTime = DateTime.MinValue;

            if (board.GetLastPostTime(from, thread == null, ref lastPostTime))
            {
                if (thread == null)
                {
                    if (!BulletinBoardSystem.CheckCreateTime(lastPostTime))
                    {
                        from.SendMessage($"You must wait {FormatTS(BulletinBoardSystem.ThreadCreateTime)} before creating a new thread.");
                        return;
                    }
                }
                else if (!BulletinBoardSystem.CheckReplyTime(lastPostTime))
                {
                    from.SendMessage($"You must wait {FormatTS(BulletinBoardSystem.ThreadReplyTime)} before replying to another thread.");
                    return;
                }
            }

            var subject = reader.ReadUTF8Safe(reader.ReadByte());

            if (subject.Length == 0)
            {
                return;
            }

            var lines = new string[reader.ReadByte()];

            if (lines.Length == 0)
            {
                return;
            }

            for (var i = 0; i < lines.Length; ++i)
            {
                lines[i] = reader.ReadUTF8Safe(reader.ReadByte());
            }

            board.PostMessage(from, thread, subject, lines);
        }