Haii,
Plus Emulator Revision Beta 3.0 Information :
Beta Release : N/A
* If you are comfortable with C# and would like to help me please add me on Skype.
___________________________________________________________________________________________
Habbo.swf that is needed RELEASE63-201405071257-197450526
You can download it here
Plus Emulator Revision 2.5 Download
Plus Emulator Revision 2.1 Download
SWFS Download
UPDATE :
Looks like this :
Bugs & Known Issues
NOTE :
If you want to use your own emulator then you can use this to update it!
Credits
- AKIIX
- Sledmore
- Jamal
- Spot ify
- MrPudding
- FatalLulz
- Martinmine
- ?? Send me a PM
Plus Emulator Revision Beta 3.0 Information :
Beta Release : N/A
* If you are comfortable with C# and would like to help me please add me on Skype.
___________________________________________________________________________________________
Habbo.swf that is needed RELEASE63-201405071257-197450526
You can download it here
You must be registered to see links
Plus Emulator Revision 2.5 Download
You must be registered to see links
Plus Emulator Revision 2.1 Download
You must be registered to see links
SWFS Download
UPDATE :
You must be registered to see links
Looks like this :
You must be registered to see links
Bugs & Known Issues
-
-
-
-
-
-
-
-
-
-
-
-
-
NOTE :
If you want to use your own emulator then you can use this to update it!
First update your emulator to this :
Create Room:
Replace the CreateRoom() void with this one:
Now find internal RoomData CreateRoom(
and replace the whole function with:
Now, how to fix room entering?
Search for:
And below that you put:
MAKE SURE
Outgoing.SerializeWallItems IS 395
Fix for chatlogs
Find: internal static ServerMessage SerializeRoomChatlog
Replace the whole function with:
Add to ServerMessage.cs :
Screen :
Fix for User Profile:
Fix for sending tickets:
Support Ticket Fix :
Enable the Floor Plan Save button
Fix for Habbo Club Rights:
Group Furni!
Replace : internal void SerializeGroupInfo
With this :
ServerPacketHeader. cs
ClientPacketHeader. cs
Events.cs
Composers.cs
You must be registered to see links
ClientPacketHeader. cs
You must be registered to see links
Events.cs
You must be registered to see links
Composers.cs
You must be registered to see links
Replace the CreateRoom() void with this one:
internal void CreateRoom()
{
// New structure fixed by Finn
string Name = this.Request.PopFixedString();
string Description = this.Request.PopFixedString();
string RoomModel = this.Request.PopFixedString();
int Category = this.Request.PopWiredInt32();
int MaxVisitors = this.Request.PopWiredInt32();
int TradeState = this.Request.PopWiredInt32();
RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().CreateRoom(this.Session, Name, Description, RoomModel, Category, MaxVisitors);
if (Data != null)
{
this.Response.Init(Outgoing.OnCreateRoomInfo);
this.Response.AppendInt32(Data.Id);
this.Response.AppendString(Data.Name);
this.SendResponse();
}
}
{
// New structure fixed by Finn
string Name = this.Request.PopFixedString();
string Description = this.Request.PopFixedString();
string RoomModel = this.Request.PopFixedString();
int Category = this.Request.PopWiredInt32();
int MaxVisitors = this.Request.PopWiredInt32();
int TradeState = this.Request.PopWiredInt32();
RoomData Data = SilverwaveEnvironment.GetGame().GetRoomManager().CreateRoom(this.Session, Name, Description, RoomModel, Category, MaxVisitors);
if (Data != null)
{
this.Response.Init(Outgoing.OnCreateRoomInfo);
this.Response.AppendInt32(Data.Id);
this.Response.AppendString(Data.Name);
this.SendResponse();
}
}
Now find internal RoomData CreateRoom(
and replace the whole function with:
internal RoomData CreateRoom(GameClient Session, string Name, string Desc, string Model, int Category, int MaxVisitors)
{
// New structure fixed by Finn
if (!this.roomModels.ContainsKey(Model))
{
Session.SendNotif("Room Model was not found.");
return null;
}
if (Name.Length < 3)
{
Session.SendNotif("The Room name is too short...");
return null;
}
uint RoomId = 0;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("INSERT INTO rooms (roomtype,caption,description,owner,model_name,category,users_max) VALUES ('private', @Caption , @desc , @username , @model , @cat , @usmax)");
dbClient.addParameter("caption", Name);
dbClient.addParameter("desc", Desc);
dbClient.addParameter("username", Session.GetHabbo().Username);
dbClient.addParameter("model", Model);
dbClient.addParameter("cat", Category);
dbClient.addParameter("usmax", MaxVisitors);
RoomId = (uint)dbClient.insertQuery();
}
RoomData Data = this.GenerateRoomData(RoomId);
Session.GetHabbo().UsersRooms.Add(Data);
return Data;
}
{
// New structure fixed by Finn
if (!this.roomModels.ContainsKey(Model))
{
Session.SendNotif("Room Model was not found.");
return null;
}
if (Name.Length < 3)
{
Session.SendNotif("The Room name is too short...");
return null;
}
uint RoomId = 0;
using (IQueryAdapter dbClient = SilverwaveEnvironment.GetDatabaseManager().getQueryreactor())
{
dbClient.setQuery("INSERT INTO rooms (roomtype,caption,description,owner,model_name,category,users_max) VALUES ('private', @Caption , @desc , @username , @model , @cat , @usmax)");
dbClient.addParameter("caption", Name);
dbClient.addParameter("desc", Desc);
dbClient.addParameter("username", Session.GetHabbo().Username);
dbClient.addParameter("model", Model);
dbClient.addParameter("cat", Category);
dbClient.addParameter("usmax", MaxVisitors);
RoomId = (uint)dbClient.insertQuery();
}
RoomData Data = this.GenerateRoomData(RoomId);
Session.GetHabbo().UsersRooms.Add(Data);
return Data;
}
Now, how to fix room entering?
Search for:
ServerMessage Message = new ServerMessage(Outgoing.HeightMap);
Message.AppendBoolean(false);
Message.AppendBoolean(false);
And below that you put:
Message.AppendInt32(-1); // Walls height, new structure fixed by Finn
MAKE SURE
Outgoing.SerializeWallItems IS 395
Fix for chatlogs
Find: internal static ServerMessage SerializeRoomChatlog
Replace the whole function with:
internal static ServerMessage SerializeRoomChatlog(uint roomID)
{
// NEW CHATLOGS [March 2014] Coded by Finn
// Please don't remove credits, this took me some time to do...
// Credits to Itachi for the structure's "context" enigma
ServerMessage Message = new ServerMessage();
RoomData Room = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(roomID);
if (Room == null)
{
throw new NullReferenceException("No room found.");
}
Message.Init(Outgoing.RoomChatlog);
Message.AppendByte(1);
Message.AppendShort(2);
Message.AppendString("roomName");
Message.AppendByte(2);
Message.AppendString(Room.Name);
Message.AppendString("roomId");
Message.AppendByte(1);
Message.AppendInt32(Room.Id);
Message.AppendShort(Room.RoomChat.Count);
Room.RoomChat.Reverse();
foreach (Chatlog Log in Room.RoomChat)
{
Habbo Habbo = SilverwaveEnvironment.getHabboForId(Log.UserId);
DateTime Date = SilverwaveEnvironment.UnixToDateTime(Log.Timestamp);
if (Habbo == null)
{
Message.AppendInt32((DateTime.Now - Date).Seconds);
Message.AppendInt32(Log.UserId);
Message.AppendString("*User not found*");
Message.AppendString(Log.Message);
Message.AppendBoolean(true);
}
else
{
Message.AppendInt32((DateTime.Now - Date).Seconds);
Message.AppendInt32(Habbo.Id);
Message.AppendString(Habbo.Username);
Message.AppendString(Log.Message);
Message.AppendBoolean(false); // Text is bold
}
}
Room.RoomChat.Reverse();
return Message;
}
{
// NEW CHATLOGS [March 2014] Coded by Finn
// Please don't remove credits, this took me some time to do...
// Credits to Itachi for the structure's "context" enigma
ServerMessage Message = new ServerMessage();
RoomData Room = SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(roomID);
if (Room == null)
{
throw new NullReferenceException("No room found.");
}
Message.Init(Outgoing.RoomChatlog);
Message.AppendByte(1);
Message.AppendShort(2);
Message.AppendString("roomName");
Message.AppendByte(2);
Message.AppendString(Room.Name);
Message.AppendString("roomId");
Message.AppendByte(1);
Message.AppendInt32(Room.Id);
Message.AppendShort(Room.RoomChat.Count);
Room.RoomChat.Reverse();
foreach (Chatlog Log in Room.RoomChat)
{
Habbo Habbo = SilverwaveEnvironment.getHabboForId(Log.UserId);
DateTime Date = SilverwaveEnvironment.UnixToDateTime(Log.Timestamp);
if (Habbo == null)
{
Message.AppendInt32((DateTime.Now - Date).Seconds);
Message.AppendInt32(Log.UserId);
Message.AppendString("*User not found*");
Message.AppendString(Log.Message);
Message.AppendBoolean(true);
}
else
{
Message.AppendInt32((DateTime.Now - Date).Seconds);
Message.AppendInt32(Habbo.Id);
Message.AppendString(Habbo.Username);
Message.AppendString(Log.Message);
Message.AppendBoolean(false); // Text is bold
}
}
Room.RoomChat.Reverse();
return Message;
}
Add to ServerMessage.cs :
public void AppendByte(int i)
{
this.AppendBytes(new byte[] { (byte)i }, false);
}
{
this.AppendBytes(new byte[] { (byte)i }, false);
}
Screen :
You must be registered to see links
Fix for User Profile:
Replace your UserProfile()
with this one:
with this one:
You must be registered to see links
Replace SubmitHelpTicket() with this one:
Replace the entire internal void SendNewTicket with this one:
You must be registered to see links
Replace the entire internal void SendNewTicket with this one:
You must be registered to see links
Support Ticket Fix :
Find:
internal double Timestamp;
add below:
internal List<string> ReportedChats;
Now Find:
internal SupportTicket(uint Id
and just after this double Timestamp,
add:
List<string> ReportedChats
Now find :
this.Timestamp = Timestamp;
And add after:
this.ReportedChats = ReportedChats;
Finally, replace the Serialize function in SupportTicket.cs with this one:
internal double Timestamp;
add below:
internal List<string> ReportedChats;
Now Find:
internal SupportTicket(uint Id
and just after this double Timestamp,
add:
List<string> ReportedChats
Now find :
this.Timestamp = Timestamp;
And add after:
this.ReportedChats = ReportedChats;
Finally, replace the Serialize function in SupportTicket.cs with this one:
You must be registered to see links
Enable the Floor Plan Save button
Replace the whole
public UserPerksComposer(GameClient Client) :base(ServerPacketHeader.UserPerksMessageComposer)
with this one (updated for the new build):
public UserPerksComposer(GameClient Client) : base(ServerPacketHeader.UserPerksMessageComposer)
{
base.WriteInteger(10);
base.WriteString("EXPERIMENTAL_CHAT_BETA");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("CITIZEN");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("VOTE_IN_COMPETITIONS");
base.WriteString("requirement.unfulfilled.helper_level_2");
base.WriteBoolean(false);
base.WriteString("NEW_UI");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("USE_GUIDE_TOOL");
base.WriteString("requirement.unfulfilled.helper_level_4");
base.WriteBoolean(false);
base.WriteString("BUILDER_AT_WORK");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("JUDGE_CHAT_REVIEWS");
base.WriteString("requirement.unfulfilled.helper_level_6");
base.WriteBoolean(false);
base.WriteString("EXPERIMENTAL_TOOLBAR");
base.WriteString("requirement.unfulfilled.group_membership");
base.WriteBoolean(false);
base.WriteString("CALL_ON_HELPERS");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("TRADE");
base.WriteString("");
base.WriteBoolean(true);
}
Note : Now if you want to disable the button you just set "BUILDER_AT_WORK" to false.
public UserPerksComposer(GameClient Client) :base(ServerPacketHeader.UserPerksMessageComposer)
with this one (updated for the new build):
public UserPerksComposer(GameClient Client) : base(ServerPacketHeader.UserPerksMessageComposer)
{
base.WriteInteger(10);
base.WriteString("EXPERIMENTAL_CHAT_BETA");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("CITIZEN");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("VOTE_IN_COMPETITIONS");
base.WriteString("requirement.unfulfilled.helper_level_2");
base.WriteBoolean(false);
base.WriteString("NEW_UI");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("USE_GUIDE_TOOL");
base.WriteString("requirement.unfulfilled.helper_level_4");
base.WriteBoolean(false);
base.WriteString("BUILDER_AT_WORK");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("JUDGE_CHAT_REVIEWS");
base.WriteString("requirement.unfulfilled.helper_level_6");
base.WriteBoolean(false);
base.WriteString("EXPERIMENTAL_TOOLBAR");
base.WriteString("requirement.unfulfilled.group_membership");
base.WriteBoolean(false);
base.WriteString("CALL_ON_HELPERS");
base.WriteString("");
base.WriteBoolean(true);
base.WriteString("TRADE");
base.WriteString("");
base.WriteBoolean(true);
}
Note : Now if you want to disable the button you just set "BUILDER_AT_WORK" to false.
Fix for Habbo Club Rights:
Find:
public UserRightsComposer(uint Rank)
: base(ServerPacketHeader.UserRightsMessageComposer)
{
base.WriteInteger(2);
base.WriteInteger(Rank);
}
Replace it with:
public UserRightsComposer(uint Rank)
: base(ServerPacketHeader.UserRightsMessageComposer)
{
base.WriteInteger(2);
base.WriteInteger(Rank);
base.WriteInteger(0); // Unknown ~Finn
}
Now search for:
ServerMessage fuserights = new ServerMessage(Outgoing.Fuserights);
//if (GetSubscriptionManager().HasSubscription("habbo_vip")) // VIP
fuserights.AppendInt32(2);
//else if (GetSubscriptionManager().HasSubscription("habbo_club")) // HC
//fuserights.AppendInt32(1);
//else
//fuserights.AppendInt32(0);
fuserights.AppendInt32(Rank);
Replace it with:
ServerMessage fuserights = new ServerMessage(Outgoing.Fuserights);
fuserights.AppendInt32(2);
fuserights.AppendInt32(Rank);
fuserights.AppendInt32(0);//Unknown. ~Finn
public UserRightsComposer(uint Rank)
: base(ServerPacketHeader.UserRightsMessageComposer)
{
base.WriteInteger(2);
base.WriteInteger(Rank);
}
Replace it with:
public UserRightsComposer(uint Rank)
: base(ServerPacketHeader.UserRightsMessageComposer)
{
base.WriteInteger(2);
base.WriteInteger(Rank);
base.WriteInteger(0); // Unknown ~Finn
}
Now search for:
ServerMessage fuserights = new ServerMessage(Outgoing.Fuserights);
//if (GetSubscriptionManager().HasSubscription("habbo_vip")) // VIP
fuserights.AppendInt32(2);
//else if (GetSubscriptionManager().HasSubscription("habbo_club")) // HC
//fuserights.AppendInt32(1);
//else
//fuserights.AppendInt32(0);
fuserights.AppendInt32(Rank);
Replace it with:
ServerMessage fuserights = new ServerMessage(Outgoing.Fuserights);
fuserights.AppendInt32(2);
fuserights.AppendInt32(Rank);
fuserights.AppendInt32(0);//Unknown. ~Finn
Group Furni!
Replace : internal void SerializeGroupInfo
With this :
internal void SerializeGroupInfo(Group Group, ServerMessage Response, GameClient Session, bool NewWindow = false)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime Time = origin.AddSeconds(Group.CreateTime);
if (Group == null || Session == null)
return;
Response.Init(Outgoing.SerializeGroupInfo);
Response.AppendInt32(Group.Id);
Response.AppendBoolean(true); //isVisible
Response.AppendInt32(Group.State); // Type (0 = 50k users, 1 = Request, 2 = blocked, 3 = ?, 4 = ?..
Response.AppendString(Group.Name);
Response.AppendString(Group.Description);
Response.AppendString(Group.Badge);
Response.AppendInt32(Group.RoomId);
Response.AppendString((SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Group.RoomId) == null) ? "No room found.." : SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Group.RoomId).Name); // room name
Response.AppendInt32((Group.CreatorId == Session.GetHabbo().Id) ? 3 : (Group.Requests.Contains(Session.GetHabbo().Id)) ? 2 : (Group.Members.ContainsKey(Session.GetHabbo().Id)) ? 1 : 0); //Member
Response.AppendInt32(Group.Members.Count); // Members
Response.AppendBoolean(Session.GetHabbo().FavouriteGroup == Group.Id);
Response.AppendString(Time.Day + "-" + Time.Month + "-" + Time.Year);
Response.AppendBoolean(Group.CreatorId == Session.GetHabbo().Id);
Response.AppendBoolean((Group.Admins.ContainsKey(Session.GetHabbo().Id))); // admin
Response.AppendString((SilverwaveEnvironment.getHabboForId(Group.CreatorId) == null) ? "" : SilverwaveEnvironment.getHabboForId(Group.CreatorId).Username);
Response.AppendBoolean(NewWindow); // Show group info
Response.AppendBoolean(Group.AdminOnlyDeco == 0); // Any user can place furni in home room
Response.AppendInt32(Group.Requests.Count); // Pending users
Response.AppendBoolean(false);
Session.SendMessage(Response);
}
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
DateTime Time = origin.AddSeconds(Group.CreateTime);
if (Group == null || Session == null)
return;
Response.Init(Outgoing.SerializeGroupInfo);
Response.AppendInt32(Group.Id);
Response.AppendBoolean(true); //isVisible
Response.AppendInt32(Group.State); // Type (0 = 50k users, 1 = Request, 2 = blocked, 3 = ?, 4 = ?..
Response.AppendString(Group.Name);
Response.AppendString(Group.Description);
Response.AppendString(Group.Badge);
Response.AppendInt32(Group.RoomId);
Response.AppendString((SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Group.RoomId) == null) ? "No room found.." : SilverwaveEnvironment.GetGame().GetRoomManager().GenerateRoomData(Group.RoomId).Name); // room name
Response.AppendInt32((Group.CreatorId == Session.GetHabbo().Id) ? 3 : (Group.Requests.Contains(Session.GetHabbo().Id)) ? 2 : (Group.Members.ContainsKey(Session.GetHabbo().Id)) ? 1 : 0); //Member
Response.AppendInt32(Group.Members.Count); // Members
Response.AppendBoolean(Session.GetHabbo().FavouriteGroup == Group.Id);
Response.AppendString(Time.Day + "-" + Time.Month + "-" + Time.Year);
Response.AppendBoolean(Group.CreatorId == Session.GetHabbo().Id);
Response.AppendBoolean((Group.Admins.ContainsKey(Session.GetHabbo().Id))); // admin
Response.AppendString((SilverwaveEnvironment.getHabboForId(Group.CreatorId) == null) ? "" : SilverwaveEnvironment.getHabboForId(Group.CreatorId).Username);
Response.AppendBoolean(NewWindow); // Show group info
Response.AppendBoolean(Group.AdminOnlyDeco == 0); // Any user can place furni in home room
Response.AppendInt32(Group.Requests.Count); // Pending users
Response.AppendBoolean(false);
Session.SendMessage(Response);
}
Credits
- AKIIX
- Sledmore
- Jamal
- Spot ify
- MrPudding
- FatalLulz
- Martinmine
- ?? Send me a PM
Last edited: