I've fixed BCstorm r63a recycler feature to r63b.
Headers ids for default bcstorm build if you have different build you need change packet ids..
Add to GameClientMessageHandler.cs:
Replace old recycleitems to this:Code:internal void GetRecyclerStatus() { GetResponse().Init(2179); GetResponse().AppendInt32(1); GetResponse().AppendInt32(0); SendResponse(); }
Insert to GetCataData1()Code:internal void RecycleItems() { if (this.Session.GetHabbo().InRoom) { int num = this.Request.PopWiredInt32(); if (num > 0) { uint num3; int numde; for (int i = 0; i < num; i++) { UserItem item = this.Session.GetHabbo().GetInventoryComponent().GetItem(this.Request.PopWiredUInt()); if ((item != null) && item.GetBaseItem().AllowRecycle) { this.Session.GetHabbo().GetInventoryComponent().RemoveItem(item.Id, false); } else { return; } } EcotronReward randomEcotronReward = ButterflyEnvironment.GetGame().GetCatalog().GetRandomEcotronReward(); /*using (IQueryAdapter adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (adapter.dbType == DatabaseType.MSSQL) { adapter.setQuery("INSERT INTO items_users (user_id,base_item,extra_data) OUTPUT INSERTED.* VALUES ( @userid ,1478, @timestamp)"); } else { adapter.setQuery("INSERT INTO items (base_id) VALUES (60627)"); } numde = (int)adapter.insertQuery(); adapter.setQuery("INSERT INTO items_users (user_id,item_id) VALUES ( @userid ,'" + numde + "')"); adapter.addParameter("userid", (int) this.Session.GetHabbo().Id); adapter.addParameter("timestamp", DateTime.Now.ToLongDateString()); adapter.runFastQuery(string.Concat(new object[] { "INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES (", numde, ",", randomEcotronReward.BaseId, ",1,'')" })); } this.Session.GetHabbo().GetInventoryComponent().RunDBUpdate(); this.Session.GetHabbo().GetInventoryComponent().UpdateItems(false); * */ IQueryAdapter adapter; uint num10; using (adapter = ButterflyEnvironment.GetDatabaseManager().getQueryreactor()) { if (adapter.dbType == DatabaseType.MSSQL) { adapter.setQuery(string.Concat(new object[] { "INSERT INTO items (base_id, rareid) OUTPUT INSERTED.* VALUES ('60627','')" })); } else { adapter.setQuery(string.Concat(new object[] { "INSERT INTO items (base_id, rareid) VALUES ('60627','0')" })); } num10 = (uint)adapter.insertQuery(); adapter.runFastQuery(string.Concat(new object[] { "INSERT INTO items_users VALUES (", num10, ",", Session.GetHabbo().Id, ")" })); adapter.setQuery("INSERT INTO items_extradata VALUES (" + num10 + ",@timestamp)"); adapter.addParameter("timestamp", DateTime.Now.ToLongDateString()); adapter.runQuery(); adapter.setQuery(string.Concat(new object[] { "INSERT INTO user_presents (item_id,base_id,amount,extra_data) VALUES (", num10, ",", randomEcotronReward.BaseId, ",'1','')" })); adapter.runQuery(); } UserItem item3 = Session.GetHabbo().GetInventoryComponent().AddNewItem(num10, 60627, DateTime.Now.ToLongDateString(), false, false, 0, "", 0); Session.GetHabbo().GetInventoryComponent().SendFloorInventoryUpdate(); Session.GetMessageHandler().GetResponse().Init(Outgoing.SendPurchaseAlert); Session.GetMessageHandler().GetResponse().AppendInt32(1); Session.GetMessageHandler().GetResponse().AppendInt32(1); Session.GetMessageHandler().GetResponse().AppendInt32(1); Session.GetMessageHandler().GetResponse().AppendInt32(item3.Id); Session.GetMessageHandler().SendResponse(); Session.GetHabbo().GetInventoryComponent().RunDBUpdate(); this.Response.Init(1235); this.Response.AppendInt32(1); this.Response.AppendInt32(item3.Id); this.SendResponse(); } } }
Insert to Catalog.cs:Code:this.GetResponse().Init(201); Dictionary<uint, List<EcotronReward>> list; list = ButterflyEnvironment.GetGame().GetCatalog().GetEcotronRewards(); this.GetResponse().AppendInt32(list.Count); foreach (var reward2 in list) { this.GetResponse().AppendInt32(reward2.Key); if (reward2.Key == 1) this.GetResponse().AppendInt32(0); if (reward2.Key == 2) this.GetResponse().AppendInt32(4); if (reward2.Key == 3) this.GetResponse().AppendInt32(40); if (reward2.Key == 4) this.GetResponse().AppendInt32(200); if (reward2.Key == 5) this.GetResponse().AppendInt32(2000); Console.WriteLine(reward2.Key); this.GetResponse().AppendInt32(reward2.Value.Count); foreach (EcotronReward reward in reward2.Value) { Console.WriteLine(reward.GetBaseItem().Name); this.GetResponse().AppendString(reward.GetBaseItem().Name); this.GetResponse().AppendInt32(1); this.GetResponse().AppendString(reward.GetBaseItem().Type.ToString().ToLower()); this.GetResponse().AppendInt32(reward.GetBaseItem().SpriteId); } } this.SendResponse();
Insert in to SharedPacketLib.cs:Code:internal Dictionary<uint, List<EcotronReward>> GetEcotronRewards() { Dictionary<uint, List<EcotronReward>> list = new Dictionary<uint, List<EcotronReward>>(); foreach (EcotronReward reward in this.EcotronRewards) { if (!list.ContainsKey(reward.RewardLevel)) { list.Add(reward.RewardLevel, new List<EcotronReward>()); list[reward.RewardLevel].Add(reward); } else { list[reward.RewardLevel].Add(reward); } } return list; }
Add to StaticClientMessageHandler.cs:Code:internal static void GetRecyclerStatus(GameClientMessageHandler handler) { handler.GetRecyclerStatus(); }
If recycler gives client error for you replace catalog page structure to:Code:handlers.Add(886, new StaticRequestHandler(SharedPacketLib.GetRecyclerStatus)); handlers.Add(3781, new StaticRequestHandler(SharedPacketLib.RecycleItems));
Screen:Code:case "recycler": message.AppendString(Page.Layout); message.AppendInt32(2); message.AppendString(Page.LayoutHeadline); message.AppendString(Page.LayoutTeaser); message.AppendInt32(3); message.AppendString(Page.Text1, 10); message.AppendString(Page.Text2); message.AppendString(Page.TextDetails); break;
![]()


![[BCSTORM] Furni-matic/Recycler/Ecotron 99%](http://ragezone.com/hyper728.png)







