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 http://gg.gg/habboswf
Plus Emulator Revision 2.5 Download
http://www.mediafire.com/download/44...mulator2.5.rar
Plus Emulator Revision 2.1 Download
http://www.mediafire.com/download/j7...e_Emulator.rar
SWFS Download
UPDATE : https://mega.co.nz/#!EhEVyLIB!lbnnwZ...ruYBHEpmyDs0xE
Looks like this :
http://i.imgur.com/FxorjBA.png
Bugs & Known Issues
Spoiler:
-
-
-
-
-
-
-
NOTE :
If you want to use your own emulator then you can use this to update it!
Spoiler:
First update your emulator to this :
Spoiler:
ServerPacketHeader. cs http://pastebin.com/bTyw21LG
ClientPacketHeader. cs http://pastebin.com/hGtUaN76
Events.cs http://pastebin.com/tD9VxDtC
Composers.cs http://pastebin.com/pDcdY8wn
Create Room:
Replace the CreateRoom() void with this one:
Spoiler:
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();
}
}
Now find internal RoomData CreateRoom(
and replace the whole function with:
Spoiler: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;
}
Now, how to fix room entering?
Search for:
Spoiler:ServerMessage Message = new ServerMessage(Outgoing.HeightMap);
Message.AppendBoolean(false);
And below that you put:
Spoiler: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:
Spoiler:
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 :D
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 :
Spoiler:
public void AppendByte(int i)
{
this.AppendBytes(new byte[] { (byte)i }, false);
}
Screen : http://i.imgur.com/e6W7GR5.png
Fix for User Profile:
Spoiler:
Fix for sending tickets:
Spoiler:
Replace SubmitHelpTicket() with this one:
http://pastebin.com/N9UeirTv
Replace the entire internal void SendNewTicket with this one:
http://pastebin.com/SPRahLGk
Support Ticket Fix :
Spoiler:
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:
http://pastebin.com/yjF7ZF4B
Enable the Floor Plan Save button
Spoiler: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.
Fix for Habbo Club Rights:
Spoiler:
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
Group Furni!
Replace : internal void SerializeGroupInfo
With this :
Spoiler:
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);
}
Credits
- AKIIX
- Sledmore
- Jamal
- Spot ify
- MrPudding
- FatalLulz
- Martinmine
- ?? Send me a PM


![Plus Emulator Revision RB3.0 [Community Project]](http://ragezone.com/hyper728.png)


