BUILDERS CLUB - BETA
Builders Club Feature Codes:
Outgoing.cs
PHP Code:
internal static int BuildersHowManyFurniHave = 3171;//1499; //bi0s
Incoming.cs
PHP Code:
internal static int BuildersClubHowManyItemsHave = 3178; //bi0s
internal static int PlaceBuildersFurniture = 1638; //bi0s
Catalog.cs After:
PHP Code:
internal Dictionary<uint, ServerMessage> CachedIndexes;
Add
PHP Code:
nternal Dictionary<uint, ServerMessage> CachedIndexesBuilders;
Replace(and the code below of that code)
PHP Code:
CachedIndexes = new Dictionary<uint, ServerMessage>();
To
PHP Code:
CachedIndexes = new Dictionary<uint, ServerMessage>();
CachedIndexesBuilders = new Dictionary<uint, ServerMessage>();
for (uint i = 1; i < 9; i++)
{
CachedIndexes.Add(i, CatalogPacket.ComposeIndex(i));
CachedIndexesBuilders.Add(i, CatalogPacket.ComposeIndexBuilders(i));
}
After that "if"
PHP Code:
if (catalogPage.Layout == "vip_buy" || catalogPage.Layout == "club_buy" || HabboClubItems.Contains(item))
Add
PHP Code:
if (catalogPage.Layout == "builders_club_addons")
{
string[] array = item.Name.Split(new char[]
{
'_'
});
int dayLength;
if (item.Name.Contains("45furnis"))
{
dayLength = 45;
}
else
{
if (item.Name.Contains("250furnis"))
{
dayLength = 250;
}
else
{
if (item.Name.Contains("600furnis"))
{
dayLength = 600;
}
else
{
dayLength = 31;
}
}
}
Session.GetHabbo().GetSubscriptionManager().AddSubscriptionBuilders(dayLength);
return;
}
}
On CatalogPackets.cs Add
PHP Code:
internal static ServerMessage ComposeIndexBuilders(uint Rank)
{
var Pages = MercuryEnvironment.GetGame().GetCatalog().Categories.Values.OfType<CatalogPage>();
ServerMessage Message = new ServerMessage(Outgoing.CatalogueIndexMessageComposer);
var SortedPages = Pages.Where(x => x.ParentId == -2 && x.MinRank <= Rank).OrderBy(x => x.OrderNum);
Message.AppendBoolean(true);
Message.AppendInt32(0);
Message.AppendInt32(-1);
Message.AppendString("root");
Message.AppendString(string.Empty);
Message.AppendInt32(0);
Message.AppendInt32(SortedPages.Count());
foreach (CatalogPage Cat in SortedPages)
{
Message.AppendBoolean(Cat.Visible);
Message.AppendInt32(Cat.IconImage);
Message.AppendInt32(Cat.PageId);
Message.AppendString(Cat.CodeName);
Message.AppendString(Cat.Caption);
Message.AppendInt32(Cat.FlatOffers.Count);
foreach (int i in Cat.FlatOffers.Keys)
{
Message.AppendInt32(i);
}
var SortedSubPages = Pages.Where(x => x.ParentId == Cat.PageId && x.MinRank <= Rank).OrderBy(x => x.Caption);
Message.AppendInt32(SortedSubPages.Count());
foreach (CatalogPage SubCat in SortedSubPages)
{
Message.AppendBoolean(SubCat.Visible);
Message.AppendInt32(SubCat.IconImage);
Message.AppendInt32(SubCat.PageId);
Message.AppendString(SubCat.CodeName);
Message.AppendString(SubCat.Caption);
Message.AppendInt32(SubCat.FlatOffers.Count);
foreach (int i2 in SubCat.FlatOffers.Keys)
{
Message.AppendInt32(i2);
}
Message.AppendInt32(0);
}
}
Message.AppendBoolean(false);
Message.AppendString("BUILDERS_CLUB");
return Message;
}
And
PHP Code:
internal static ServerMessage ComposePageBuilders(CatalogPage Page)
{
ServerMessage Message = new ServerMessage(Outgoing.CataloguePageMessageComposer);
Message.AppendInt32(Page.PageId);
Message.AppendString("BUILDERS_CLUB");
switch (Page.Layout)
{
case "builders_3x3":
Message.AppendString("default_3x3_color_grouping");
Message.AppendInt32(3);
Message.AppendString(Page.LayoutHeadline);
Message.AppendString(Page.LayoutTeaser);
Message.AppendString(Page.LayoutSpecial);
Message.AppendInt32(3);
Message.AppendString(Page.Text1);
Message.AppendString(Page.TextDetails.Replace("[10]", Convert.ToChar(10).ToString()).Replace("[13]", Convert.ToChar(13).ToString()));
Message.AppendString(Page.TextTeaser.Replace("[10]", Convert.ToChar(10).ToString()).Replace("[13]", Convert.ToChar(13).ToString()));
break;
case "builders_club_frontpage":
Message.AppendString("builders_club_frontpage");
Message.AppendInt32(0);
Message.AppendInt32(1);
Message.AppendString(Page.LayoutHeadline);
Message.AppendInt32(3);
Message.AppendInt32(8554);
Message.AppendString("builders_club_1_month");
Message.AppendString("");
Message.AppendInt32(2560000);
Message.AppendInt32(2560000);
Message.AppendInt32(1024);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
Message.AppendInt32(8606);
Message.AppendString("builders_club_14_days");
Message.AppendString("");
Message.AppendInt32(2560000);
Message.AppendInt32(2560000);
Message.AppendInt32(1024);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
Message.AppendInt32(8710);
Message.AppendString("builders_club_31_days");
Message.AppendString("");
Message.AppendInt32(2560000);
Message.AppendInt32(2560000);
Message.AppendInt32(1024);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
break;
case "builders_club_addons":
Message.AppendString("builders_club_addons");
Message.AppendInt32(0);
Message.AppendInt32(1);
Message.AppendString(Page.LayoutHeadline);
Message.AppendInt32(3);
Message.AppendInt32(8557);
Message.AppendString("builders_club_addon_45furnis");
Message.AppendString("");
Message.AppendInt32(2560);
Message.AppendInt32(0);
Message.AppendInt32(1);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
Message.AppendInt32(8556);
Message.AppendString("builders_club_addon_250furnis");
Message.AppendString("");
Message.AppendInt32(12800);
Message.AppendInt32(0);
Message.AppendInt32(1);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
Message.AppendInt32(8555);
Message.AppendString("builders_club_addon_600furnis");
Message.AppendString("");
Message.AppendInt32(25600);
Message.AppendInt32(0);
Message.AppendInt32(1);
Message.AppendInt32(0);
Message.AppendInt32(0);
Message.AppendBoolean(false);
break;
}
if (Page.Layout.StartsWith("frontpage") || Page.Layout == "vip_buy")
{
Message.AppendInt32(0);
}
else
{
Message.AppendInt32(Page.Items.Count);
foreach (CatalogItem Item in Page.Items.Values)
{
ComposeItem(Item, Message);
}
}
Message.AppendInt32(-1);
Message.AppendBoolean(false);
return Message;
}
on CatalogPage.cs Replace
PHP Code:
CachedContentsMessage = CatalogPacket.ComposePage(this);
To
PHP Code:
if(CodeName == "builders_club")
CachedContentsMessage = CatalogPacket.ComposePageBuilders(this);
else
CachedContentsMessage = CatalogPacket.ComposePage(this);
Add on habbofactory.cs
PHP Code:
int builders_expire = (int)dRow["builders_expire"];
int builders_items = (int)dRow["builders_items"];
int builders_items_rest = (int)dRow["builders_items_rest"];
Replace
PHP Code:
return new Habbo
To
PHP Code:
return new Habbo(id, username, realName, ras, motto, look, gender, credits, activityPoints, lastActivityPointsUpdate, muted, homeRoom, respect, dailyRespectPoints, dailyPetRespectPoints, hasFriendRequestsDisabled, currentQuestID, currentQuestProgress, achievementPoints, regTimestamp, lastOnline, appearOffline, hideInRoom, vIP, createDate, online, citizenship, belCredits, group, favId, lastChange, tradeLocked, tradeLockExpire, NuxPassed, builders_expire, builders_items,builders_items_rest);
On habbo.cs Add
PHP Code:
internal int builders_expire;
internal int builders_items;
internal int builders_items_rest;
Replace
To
PHP Code:
internal Habbo(uint Id, string Username, string RealName, uint Rank, string Motto, string Look, string Gender, int Credits, int ActivityPoints, double LastActivityPointsUpdate, bool Muted, uint HomeRoom, int Respect, int DailyRespectPoints, int DailyPetRespectPoints, bool HasFriendRequestsDisabled, uint currentQuestID, int currentQuestProgress, int achievementPoints, int RegTimestamp, int LastOnline, bool AppearOffline, bool HideInRoom, bool VIP, double CreateDate, bool Online, string Citizenship, int BelCredits, HashSet<GroupUser> Groups, uint FavId, int LastChange, bool TradeLocked, int TradeLockExpire, bool NUXPassed, int builders_expire, int builders_items, int builders_items_rest)
And Add in the void:
PHP Code:
this.builders_expire = builders_expire;
this.builders_items = builders_items;
this.builders_items_rest = builders_items_rest;
Add on SubscriptionManager.cs
PHP Code:
internal void AddSubscriptionBuilders(int DayLength)
{
int DayLenght = DayLength;
using (IQueryAdapter queryreactor = MercuryEnvironment.GetDatabaseManager().getQueryreactor())
{
queryreactor.runFastQuery(string.Concat(new object[]
{
"UPDATE users SET builders_items = builders_items + " + DayLenght + " WHERE id = " + this.UserId + ";"
}));
}
}
on gameClientMessageHandler
After
PHP Code:
Session.SendMessage(MercuryEnvironment.GetGame().GetCatalog().CachedIndexes[rank]);
Add
PHP Code:
Session.SendMessage(MercuryEnvironment.GetGame().GetCatalog().CachedIndexesBuilders[rank]);
on Same File add
PHP Code:
internal void PlaceBuildersFurniture()
{
}
(In Development)
And
PHP Code:
internal void BuildersClubHowManyItemsHave()
{
ServerMessage message = new ServerMessage(Outgoing.BuildersHowManyFurniHave);
message.AppendInt32(Session.GetHabbo().builders_items_rest);
Session.SendMessage(message);
}
Replace the MessageComposer Response
PHP Code:
this.Response.Init(Outgoing.BuildersClubMembershipMessageComposer);
To
PHP Code:
this.Response.Init(Outgoing.BuildersClubMembershipMessageComposer);
this.Response.AppendInt32(Session.GetHabbo().builders_expire);//expiry
this.Response.AppendInt32(Session.GetHabbo().builders_items);//Furniture limit
this.Response.AppendInt32(1);
this.SendResponse();
Add on SharePacketLib.cs
PHP Code:
internal static void BuildersClubHowManyItemsHave(GameClientMessageHandler handler)
{
handler.BuildersClubHowManyItemsHave();
}
internal static void PlaceBuildersFurniture(GameClientMessageHandler handler)
{
handler.PlaceBuildersFurniture();
}
Add on StaticClientMessageHandler.cs
PHP Code:
handlers.Add(Incoming.PlaceBuildersFurniture, new StaticRequestHandler(SharedPacketLib.PlaceBuildersFurniture));
handlers.Add(Incoming.BuildersClubHowManyItemsHave, new StaticRequestHandler(SharedPacketLib.BuildersClubHowManyItemsHave));
Database:
Add on Users
Add builders_expire int(11) default 3700
Add builders_items int(11) default 100
Add builders_items_rest int(11) default 0
Add on Catalog Pages
PHP Code:
INSERT INTO `catalog_pages` (`id`, `parent_id`, `code_name`, `caption`, `icon_image`, `visible`, `enabled`, `min_rank`, `club_only`, `order_num`, `page_layout`, `page_headline`, `page_teaser`, `page_special`, `page_text1`, `page_text2`, `page_text_details`, `page_text_teaser`, `vip_only`, `page_link_description`, `page_link_pagename`) VALUES
(149, -2, 'builders_club', 'Blocos Builders', 2005, '1', '1', 1, '0', 3, 'builders_3x3', '', 'landing_view_blocks', '', 'Use os blocos de construção para criar estruturas legais em suas salas ! Quem sabe ... talvez você é o vencedor de um concurso .', '', '', '', '0', '', ''),
(300, -2, 'builders_club', 'Clube de Arquitetos', 193, '1', '1', 1, '0', 1, 'builders_club_frontpage', '<b><font color="#cc6600" size="16">O que é o Clube do Arquiteto?</font></b><br><br>Você sempre sonhou em construir quartos com Mobis virtualmente ilimitados? Está cansado de ter que contar moedas ou mobis para terminar um quarto? O Clube do Arquiteto é a solução!<br><br><b><font color="#cc6600" size="16">é fácil demais!</font></b><br><img src="http://images.habbo.com/c_images/catalogue/bc_instr_1.png"/><br><br><br><br><br><br><br><br><ul><li>Escolha um dos <a href="event:navigator/tab/me">seus quartos</a> (ou faça um novo).</li><li>Abra o Depósito do Clube do Arquiteto</li><li>Arraste objetos e coloque-os em seu quarto</li></ul><br><br><i>Dica: Se quiser recolher todos os Mobis do Clube do Arquiteto de uma vez, digite":pickallbc" no chat e clique em ENTER.</i><br><br>Clique aqui para mais informaçoes <a href="event:habbopages/builders-club/info">sobre as vantagens que do Clube do Arquiteto oferece.</a> Caso siga com dúvidas, visite nossas <a href="event:habbopages/builders-club/faq">FAQs</a>!', '', '', '', '', '', '', '0', '', ''),
(301, -2, 'builders_club', 'Upgrades do CA', 194, '1', '1', 1, '0', 2, 'builders_club_addons', '<b><font color="#d85b00" size="16">\r\nUpgrades do Clube do Arquiteto\r\n</font></b><br><br>\r\n<font align="justify">Você alcançou o <b>Limite de Mobis </b> mas quer <b> continuar construindo? </b> Não há problema, faça um upgrade!\r\n ', '', '', '', '', '', '', '0', '', '');
Enjoy...
BUGS
- Cant Place Furni, give Packet Error
- Cant Buy Addons (The Interactor Type dont Works)..
Credits
bi0s