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); } } } }
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); } } }
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); }
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); } }