Beispiel #1
0
        private void OnCS_IMC_SendMessage_Req(SecurePacketRequest reqPacket)
        {
            SecurePacketResponse resPacket = new SecurePacketResponse(reqPacket);
            Int32 targetUserNo = reqPacket.GetInt32();

            if (_user.CastChannel == null)
            {
                resPacket.ResultCodeNo = ResultCode.IMC_NotInChannel;
                SendPacket(resPacket);
                return;
            }

            try
            {
                SecurePacket ntfPacket = new SecurePacket(Protocol.GetID("CS_IMC_Message_Ntf"), (UInt16)reqPacket.ReadableSize);
                ntfPacket.PutInt32(ResultCode.Ok);
                ntfPacket.PutInt32(_user.UserNo);
                ntfPacket.Write(reqPacket.Buffer, reqPacket.ReadBytes, reqPacket.ReadableSize);

                if (targetUserNo != 0)
                {
                    User targetUser = _user.CastChannel.GetUser(targetUserNo);
                    targetUser.SendPacket(ntfPacket);
                }
                else
                    _user.CastChannel.Broadcast(ntfPacket);

                resPacket.ResultCodeNo = ResultCode.Ok;
            }
            catch (AegisException e)
            {
                resPacket.ResultCodeNo = e.ResultCodeNo;
            }

            SendPacket(resPacket);
        }