Exemplo n.º 1
0
        public void Receive(ThePalaceEntities dbContext, object message)
        {
            var sessionState  = ((Message)message).sessionState;
            var protocol      = ((Message)message).protocol;
            var inboundPacket = (Protocols.MSG_DOORLOCK)protocol;

            if (inboundPacket.roomID == sessionState.RoomID)
            {
                var room = dbContext.GetRoom(sessionState.RoomID);

                if (!room.NotFound)
                {
                    var hotspotType = room.Hotspots
                                      .Where(s => s.id == inboundPacket.spotID)
                                      .Select(s => (short)s.type)
                                      .FirstOrDefault();

                    if (hotspotType == (short)HotspotTypes.HS_Bolt)
                    {
                        room.Flags |= (int)RoomFlags.RF_Closed;

                        SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_DOORLOCK, (Int32)sessionState.UserID);
                    }
                    else
                    {
                        var outboundPacket = new Protocols.MSG_XTALK
                        {
                            text = "The door you are attempting to lock is not a deadbolt!",
                        };

                        sessionState.Send(outboundPacket, EventTypes.MSG_XTALK, 0);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public void Receive(ThePalaceEntities dbContext, object message)
        {
            var sessionState  = ((Message)message).sessionState;
            var protocol      = ((Message)message).protocol;
            var inboundPacket = (Protocols.MSG_PROPMOVE)protocol;;
            var room          = dbContext.GetRoom(sessionState.RoomID);

            if (!room.NotFound)
            {
                if ((room.Flags & (int)RoomFlags.RF_NoLooseProps) != 0)
                {
                    room.LooseProps.Clear();

                    var xtalk = new Protocols.MSG_XTALK
                    {
                        text = "Loose props are disabled in this room.",
                    };

                    SessionManager.Send(sessionState, xtalk, EventTypes.MSG_XTALK, 0);

                    return;
                }

                if (inboundPacket.pos.h < 0 || inboundPacket.pos.v < 0)
                {
                    return;
                }
                else if (inboundPacket.pos.h > room.Width || inboundPacket.pos.v > room.Height)
                {
                    return;
                }
                else if (inboundPacket.propNum >= 0 && inboundPacket.propNum < room.LooseProps.Count)
                {
                    room.LooseProps[inboundPacket.propNum].loc = inboundPacket.pos;
                    room.HasUnsavedChanges = true;

                    SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_PROPMOVE, 0);
                }
            }
        }
Exemplo n.º 3
0
        public void Receive(ThePalaceEntities dbContext, object message)
        {
            var sessionState  = ((Message)message).sessionState;
            var protocol      = ((Message)message).protocol;
            var room          = dbContext.GetRoom(sessionState.RoomID);
            var inboundPacket = (Protocols.MSG_PROPNEW)protocol;

            if (!room.NotFound)
            {
                if ((room.Flags & (int)RoomFlags.RF_NoLooseProps) != 0)
                {
                    room.LooseProps.Clear();

                    var xtalk = new Protocols.MSG_XTALK
                    {
                        text = "Loose props are disabled in this room.",
                    };

                    SessionManager.Send(sessionState, xtalk, EventTypes.MSG_XTALK, 0);

                    return;
                }

                room.LooseProps.Add(new LoosePropRec
                {
                    propSpec = inboundPacket.propSpec,
                    loc      = inboundPacket.loc,
                    flags    = 0,
                });

                room.HasUnsavedChanges = true;
            }

            AssetLoader.CheckAssets(sessionState, inboundPacket.propSpec);

            SessionManager.SendToRoomID(sessionState.RoomID, 0, inboundPacket, EventTypes.MSG_PROPNEW, 0);
        }
Exemplo n.º 4
0
        public void Receive(ThePalaceEntities dbContext, object message)
        {
            var sessionState  = ((Message)message).sessionState;
            var protocol      = ((Message)message).protocol;
            var inboundPacket = (Protocols.MSG_XWHISPER)protocol;
            var chatStr       = inboundPacket.text;

            Logger.ConsoleLog($"MSG_XWHISPER[{sessionState.UserID} -> {inboundPacket.target}]: {chatStr}");

            if (CommandsEngine.Eval(dbContext, sessionState.UserID, inboundPacket.target, chatStr))
            {
                return;
            }

            if (!sessionState.Authorized)
            {
                if ((sessionState.userFlags & (int)UserFlags.U_Gag) != 0)
                {
                    return;
                }
            }

            if (!SessionManager.sessionStates.ContainsKey(inboundPacket.target))
            {
                var outboundPack = new Protocols.MSG_XTALK
                {
                    text = "Sorry, was unable to locate that user."
                };

                sessionState.Send(outboundPack, EventTypes.MSG_XTALK, 0);

                return;
            }

            var targetSessionState = SessionManager.sessionStates[inboundPacket.target];

            if (targetSessionState.RoomID == sessionState.RoomID && (targetSessionState.userFlags & (int)UserFlags.U_RejectPrivate) != 0)
            {
                var outboundPack = new Protocols.MSG_XTALK
                {
                    text = "Sorry, but this user has whispers turned off."
                };

                sessionState.Send(outboundPack, EventTypes.MSG_XTALK, 0);
            }
            else if (targetSessionState.RoomID != sessionState.RoomID && (targetSessionState.userFlags & (int)UserFlags.U_RejectEsp) != 0)
            {
                var outboundPack = new Protocols.MSG_XTALK
                {
                    text = "Sorry, but this user has ESP turned off."
                };

                sessionState.Send(outboundPack, EventTypes.MSG_XTALK, 0);
            }
            else
            {
                sessionState.Send(inboundPacket, EventTypes.MSG_XWHISPER, (Int32)sessionState.UserID);

                targetSessionState.Send(inboundPacket, EventTypes.MSG_XWHISPER, (Int32)sessionState.UserID);
            }
        }