[HEADERS] PRODUCTION-201812272209-984739530

jordynegen11

New Member
Jan 6, 2019
9
11
Hi,

Here is a header list of PRODUCTION-201812272209-984739530

Changes so far found since PRODUCTION-201707041014-428081343:
  • YouAreControllerMessageComposer -> added an extra integar with the roomid
  • YouAreOwnerComposer -> added an extra integar with the roomid
  • FlatAccessDeniedMessageComposer -> added an extra integar with the roomid
  • FlatAccessibleMessageComposer -> added an extra integar with the roomid
  • GetBadgesEvent-> BadgesComposer is splitted in 2 outgoing messages (BadgesComposer, HabboUserBadgesComposer)
Incoming:
Outgoing

For the cracked SWF + RSA keys:
 
Last edited:

treebeard

Member
Jan 16, 2018
317
173
What do you exactly mean by this?
I'm assuming he means the old BadgesComposer is now split into two different composers that are sent in response to GetBadgesEvent.

I'm not so familiar with the newer protocol but I would guess that one composer prepares the badges in general and the other sends the specific badges being worn by the user.
 

dominic

Active Member
Dec 16, 2011
175
84
I'm assuming he means the old BadgesComposer is now split into two different composers that are sent in response to GetBadgesEvent.

I'm not so familiar with the newer protocol but I would guess that one composer prepares the badges in general and the other sends the specific badges being worn by the user.
That's what I ended up with, although I had to switch back to older revision, due to doorbell bugging out
 

jordynegen11

New Member
Jan 6, 2019
9
11
What do you exactly mean by this?
I'm assuming he means the old BadgesComposer is now split into two different composers that are sent in response to GetBadgesEvent.

I'm not so familiar with the newer protocol but I would guess that one composer prepares the badges in general and the other sends the specific badges being worn by the user.

@treebeard is right.

New structure BadgesComposer:

Code:
INT //unkown
INT //unkown
INT //count
{
  INT // always 1?
  STRING //Badge Name
}

PLUS emulator new GetBadgesEvent.cs:
Code:
using System;
using System.Linq;
using System.Text;

using Plus.Communication.Packets.Outgoing.Inventory.Badges;
using Plus.Communication.Packets.Outgoing.Users;

namespace Plus.Communication.Packets.Incoming.Inventory.Badges
{
    class GetBadgesEvent : IPacketEvent
    {
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            Session.SendMessage(new BadgesComposer(Session));
            Session.SendMessage(new HabboUserBadgesComposer(Session.GetHabbo()));
        }
    }
}

PLUS emulator new BadgesComposer.cs:
Code:
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;

using Plus.HabboHotel.GameClients;
using Plus.HabboHotel.Users.Badges;

namespace Plus.Communication.Packets.Outgoing.Inventory.Badges
{
    class BadgesComposer : ServerPacket
    {
        public BadgesComposer(GameClient Session)
            : base(ServerPacketHeader.BadgesMessageComposer)
        {
            List<Badge> EquippedBadges = new List<Badge>();

            base.WriteInteger(1);
            base.WriteInteger(0);
            base.WriteInteger(Session.GetHabbo().GetBadgeComponent().Count);
            foreach (Badge Badge in Session.GetHabbo().GetBadgeComponent().GetBadges().ToList())
            {
                if (Badge != null)
                {
                    base.WriteInteger(1);
                    base.WriteString(Badge.Code);

                    if (Badge.Slot > 0)
                        EquippedBadges.Add(Badge);
                }
                else
                {
                    base.WriteInteger(0);
                    base.WriteString("ABC");
                }
            }
        }
    }
}

PLUS emulator new HabboUserBadgesComposer.cs:
Code:
using System;
using System.Linq;
using System.Text;
using System.Collections.Generic;

using Plus.HabboHotel.Users;
using Plus.HabboHotel.Users.Badges;

namespace Plus.Communication.Packets.Outgoing.Users
{
    class HabboUserBadgesComposer : ServerPacket
    {
        public HabboUserBadgesComposer(Habbo Habbo)
            : base(ServerPacketHeader.HabboUserBadgesMessageComposer)
        {
            base.WriteInteger(Habbo.Id);
            base.WriteInteger(Habbo.GetBadgeComponent().EquippedCount);

            foreach (Badge Badge in Habbo.GetBadgeComponent().GetBadges().ToList())
            {
                if (Badge.Slot <= 0)
                    continue;

                base.WriteInteger(Badge.Slot);
                base.WriteString(Badge.Code);
            }
        }
    }
}
 

jordynegen11

New Member
Jan 6, 2019
9
11
That's what I ended up with, although I had to switch back to older revision, due to doorbell bugging out

Fix for doorbell:

FlatAccessDeniedMessageComposer -> added an extra integar with the roomid
FlatAccessDeniedMessageComposer.cs

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.Rooms.Session
{
    class FlatAccessibleComposer : ServerPacket
    {
        public FlatAccessibleComposer(int RoomId, string Username)
            : base(ServerPacketHeader.FlatAccessibleMessageComposer)
        {
            base.WriteInteger(RoomId);
            base.WriteString(Username);
        }
    }
}

FlatAccessibleMessageComposer -> added an extra integar with the roomid
FlatAccessibleComposer.CS:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.Rooms.Session
{
    class FlatAccessibleComposer : ServerPacket
    {
        public FlatAccessibleComposer(int RoomId, string Username)
            : base(ServerPacketHeader.FlatAccessibleMessageComposer)
        {
            base.WriteInteger(RoomId);
            base.WriteString(Username);
        }
    }
}
 

dominic

Active Member
Dec 16, 2011
175
84
Fix for doorbell:

FlatAccessDeniedMessageComposer -> added an extra integar with the roomid
FlatAccessDeniedMessageComposer.cs

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.Rooms.Session
{
    class FlatAccessibleComposer : ServerPacket
    {
        public FlatAccessibleComposer(int RoomId, string Username)
            : base(ServerPacketHeader.FlatAccessibleMessageComposer)
        {
            base.WriteInteger(RoomId);
            base.WriteString(Username);
        }
    }
}

FlatAccessibleMessageComposer -> added an extra integar with the roomid
FlatAccessibleComposer.CS:

Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Plus.Communication.Packets.Outgoing.Rooms.Session
{
    class FlatAccessibleComposer : ServerPacket
    {
        public FlatAccessibleComposer(int RoomId, string Username)
            : base(ServerPacketHeader.FlatAccessibleMessageComposer)
        {
            base.WriteInteger(RoomId);
            base.WriteString(Username);
        }
    }
}
Yeah this didn't do the job for me, I had to manually add my enter room method in the FlatAccessible composer, after the user has been accepted.

@JMG thanks for the like, bud. However I don't find this solution suitable, it should actually be requesting LetUserIn event afterwards.
 
Last edited:

jordynegen11

New Member
Jan 6, 2019
9
11
Yeah this didn't do the job for me, I had to manually add my enter room method in the FlatAccessible composer, after the user has been accepted.

@JMG thanks for the like, bud. However I don't find this solution suitable, it should actually be requesting LetUserIn event afterwards.
You are right. It only fixes the disconnect. You have to add the EnterRoom function in the LetUserInEvent :p
 

Users who are viewing this thread

Top