public static void HandlePigeon(Character pUser, MsgPigeon pMsg)
        {
            switch (pMsg.Type)
            {
            case 1:     // next broadcasts list
            case 2:     // next broadcast list (my)
            {
                ServerKernel.Broadcast.RequestNextPage(pUser, pMsg);
                break;
            }

            case 3:     // send
            {
                var list = pMsg.ToList();
                if (list.Count <= 0)
                {
                    return;
                }

                var szMessage = list[0];

                ServerKernel.Broadcast.Push(pUser, szMessage, true);
                ServerKernel.Broadcast.RequestNextPage(pUser, pMsg);
                break;
            }

            case 4:     // urgent 15 cps
            {
                ServerKernel.Broadcast.Addition(pUser, pMsg.DwParam, 15);
                ServerKernel.Broadcast.RequestNextPage(pUser, pMsg);
                break;
            }

            case 5:     // urgent 5 cps
            {
                ServerKernel.Broadcast.Addition(pUser, pMsg.DwParam, 5);
                ServerKernel.Broadcast.RequestNextPage(pUser, pMsg);
                break;
            }
            }
        }
        public void Request5Last(Character pRole, MsgPigeon pMsg)
        {
            var pNewMsg = new MsgPigeonQuery {
                Param = pMsg.DwParam
            };
            ushort wTempPos = 0;

            lock (m_pLock)
            {
                foreach (var bc in m_lNext)
                {
                    if (pNewMsg.Total >= 5)
                    {
                        break;
                    }
                    pNewMsg.AddBroadcast(bc.Identity, wTempPos++, bc.OwnerIdentity, bc.OwnerName, bc.Addition,
                                         bc.Message);
                }
            }
            pRole.Owner.Send(pNewMsg);
        }