internal static void ProcessSessionRequest(Habbo sender, IncomingMessage message) { new MSessionParams { A = 9, B = 0, C = 0, D = 1, E = 1, F = 3, G = 0, H = 2, I = 1, J = 4, K = 0, L = 5, DateFormat = "dd-MM-yyyy", M = "", N = 7, O = false, P = 8, URL = "http://null", Q = "", R = 9, S = false }.Send(sender); }
internal static void ProcessCurrentDateRequest(Habbo sender, IncomingMessage message) { new MCurrentDate { Date = DateTime.Today }.Send(sender); }
internal static void ProcessPong(Habbo sender, IncomingMessage message) { HabboEventArgs eventArgs = new HabboEventArgs(sender); R36StandardStuff.EventFirer.Fire("habbo_pong:before", eventArgs); if (!eventArgs.IsCancelled) R36StandardStuff.EventFirer.Fire("habbo_pong:after", eventArgs); }
internal static void ProcessEncryptionRequest(Habbo sender, IncomingMessage message) { new MSetupEncryption { UnknownA = false }.Send(sender); }
internal static void ProcessAccountDetailsRequest(Habbo sender, IncomingMessage message) { new MAccountDetails { ConnectionId = 0, Username = sender.Username, // Should this be DisplayName Motto = sender.Motto, Figure = sender.Figure, UnknownA = "", UnknownB = 12, UnknownC = 0, UnknownD = 1 }.Send(sender); }
private void SafeInvoke(GameSocketMessageHandler handler, Habbo sender, IncomingMessage message) { try { handler(sender, message); } catch (Exception e) { sender.Socket.Disconnect("Unhandled Exception in packet handler"); string dumpPath = CoreManager.ServerCore.DumpException(e); CoreManager.ServerCore.ConsoleManager.Error("Event Handler", "An unhandled exception from a packet handler has been caught and the socket has been closed!"); CoreManager.ServerCore.ConsoleManager.Error("Event Handler", " An exception dump has been saved to " + dumpPath); } }
internal static void ProcessMessengerInit(Habbo sender, IncomingMessage message) { MessengerManager manager = CoreManager.ServerCore.GetMessengerManager(); new MMessengerInit { BefriendablesToExclude = new HashSet<Befriendable> { manager.GetBefriendable(sender) }, Categories = manager.GetCategories(sender), MaximumFriends = 200, // TODO: Make this controllable by plugins. UnknownA = 10, UnknownB = 20, UnknownC = 30, UnknownD = false }.Send(sender); }
public GameSocketMessageHandlers Invoke(Habbo sender, IncomingMessage message) { if (HighPriority != null) SafeInvoke(HighPriority, sender, message); if (message.Cancelled) return this; if (LowPriority != null) SafeInvoke(LowPriority, sender, message); if (message.Cancelled) return this; if (DefaultAction != null) SafeInvoke(DefaultAction, sender, message); if (Watcher != null) SafeInvoke(Watcher, sender, message); return this; }
public GameSocketMessageHandlerInvoker Invoke(Habbo sender, IncomingMessage message) { lock (_handlers) { // Are there any handlers registered for this packet? if (!_handlers.ContainsKey(message.HeaderId)) { CoreManager.ServerCore.ConsoleManager.Warning("Game Socket Manager", "Unhandled HeaderID " + message.HeaderId + " (\"" + message.HeaderString + "\")"); // No, do nothing. return this; } // Yes, let's invoke them. _handlers[message.HeaderId].Invoke(sender, message); } return this; }
internal static void ProcessGroupStatusInit(Habbo sender, IncomingMessage message) { // Load group stuff }
internal static void ProcessBalanceRequest(Habbo sender, IncomingMessage message) { new MCreditBalance(sender).Send(sender); }
internal static void ProcessBadgeStatusRequest(Habbo sender, IncomingMessage message) { // Load badge stuff }
internal static void ProcessSSOTicket(Habbo sender, IncomingMessage message) { ClassicIncomingMessage classicMessage = (ClassicIncomingMessage) message; Habbo loggedInHabbo = CoreManager.ServerCore.HabboDistributor.GetHabboFromSSOTicket(classicMessage.PopPrefixedString()); if (loggedInHabbo == null) { new MConnectionClosed { Reason = ConnectionClosedReason.InvalidSSOTicket }.Send(sender); // TODO: Is delay needed? sender.Socket.Disconnect("Invalid SSO Ticket!"); // Invalid SSO Ticket } else { HabboEventArgs eventArgs = new HabboEventArgs(loggedInHabbo); R36StandardStuff.EventFirer.Fire("habbo_login:before", eventArgs); if (eventArgs.IsCancelled) { if (sender.Socket != null) sender.Socket.Disconnect(eventArgs.CancelReason); return; } // If this Habbo is already connected... if (loggedInHabbo.LoggedIn) { // Disconnect them. new MConnectionClosed { Reason = ConnectionClosedReason.ConcurrentLogin }.Send(loggedInHabbo); loggedInHabbo.Socket.Disconnect("Concurrent Login!"); } sender.Socket.LinkHabbo(loggedInHabbo); loggedInHabbo.LoggedIn = true; loggedInHabbo.LastAccess = DateTime.Now; R36StandardStuff.EventFirer.Fire("habbo_login:after", eventArgs); } }