I've added a few MUS commands to my BcStorm EMU, i will be adding more to this list soon.
Replace: /Butterfly/Net/MusConnection.cs
With:
There's only a few so far, but i've been adding things & upgrading alot, so i will add more soon.PHP Code:namespace Butterfly.Net
{
using Butterfly;
using Butterfly.Core;
using Butterfly.HabboHotel.GameClients;
using Butterfly.Messages;
using DataButterfly_Manager.DataButterfly.Session_Details.Interfaces;
using System;
using System.Data;
using System.Net.Sockets;
using System.Text;
using HabboEvents;
internal class MusConnection
{
private byte[] buffer = new byte[0x400];
private Socket socket;
internal MusConnection(Socket _socket)
{
this.socket = _socket;
try
{
this.socket.BeginReceive(this.buffer, 0, this.buffer.Length, SocketFlags.None, new AsyncCallback(this.OnEvent_RecieveData), this.socket);
}
catch
{
this.tryClose();
}
}
internal void OnEvent_RecieveData(IAsyncResult iAr)
{
try
{
int count = 0;
try
{
count = this.socket.EndReceive(iAr);
}
catch
{
this.tryClose();
return;
}
string data = Encoding.Default.GetString(this.buffer, 0, count);
if (data.Length > 0)
{
this.processCommand(data);
}
}
catch
{
}
this.tryClose();
}
internal void processCommand(string data)
{
String header = "";
String param = "";
if (data.IndexOf(Convert.ToChar(1)) != -1)
{
header = data.Split(Convert.ToChar(1))[0].Trim();
param = data.Split(Convert.ToChar(1))[1];
}
else
{
header = data.Remove(Convert.ToChar(1)).Trim();
param = "";
}
string[] pars = param.Split(' ');
GameClient Client = null;
switch (header.ToLower())
{
case "update_credits":
{
string Username = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(uint.Parse(pars[0]));
Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(uint.Parse(pars[0]));
if (Client == null)
{
Logging.WriteLine("User [" + Username + "] does not seem to be online!");
return;
}
DataRow newCredits;
using (IQueryAdapter dbClient = ButterflyEnvironment.GetDataButterflyManager().getQueryreactor())
{
dbClient.setQuery("SELECT credits FROM users WHERE id = @userid");
dbClient.addParameter("userid", (int)Client.GetHabbo().Id);
newCredits = dbClient.getRow();
}
Client.GetHabbo().Credits = (int)newCredits["credits"];
Client.GetHabbo().UpdateCreditsBalance();
Logging.WriteLine("Credits for user [" + Username + "] updated.");
Logging.WriteLine("Completed MUS command: 'update_credits'");
return;
}
case "update_pixels":
{
string Username = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(uint.Parse(pars[0]));
Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(uint.Parse(pars[0]));
if (Client == null)
{
Logging.WriteLine("User [" + Username + "] does not seem to be online!");
return;
}
DataRow newPixels;
using (IQueryAdapter dbClient = ButterflyEnvironment.GetDataButterflyManager().getQueryreactor())
{
dbClient.setQuery("SELECT activity_points FROM users WHERE id = @userid");
dbClient.addParameter("userid", (int)Client.GetHabbo().Id);
newPixels = dbClient.getRow();
}
Client.GetHabbo().ActivityPoints = (int)newPixels["activity_points"];
Client.GetHabbo().UpdateActivityPointsBalance(true);
Logging.WriteLine("Pixels for user [" + Username + "] updated.");
Logging.WriteLine("Completed MUS command: 'update_pixels'");
return;
}
case "signout":
{
string Username = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(uint.Parse(pars[0]));
Client = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUsername(pars[0]);
if (Client == null)
{
Logging.WriteLine("User [" + Username + "] does not seem to be online!");
return;
}
ButterflyEnvironment.GetGame().GetClientManager().GetClientByUserID(uint.Parse(pars[0])).Disconnect();
Logging.WriteLine("Disconnected user [" + Username + "]");
Logging.WriteLine("Completed MUS command: 'signout'");
return;
}
case "ha":
{
string Message = param;
ServerMessage nMessage = new ServerMessage(Outgoing.BroadcastMessage);
nMessage.AppendString("Notice from Hotel Management:\r\n" + Message);
ButterflyEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);
Logging.WriteLine("Completed MUS command: 'ha'");
return;
}
case "hal":
{
string Link = pars[0];
string Message = ButterflyEnvironment.FilterInjectionChars(MergeParams(pars, 1));
ServerMessage nMessage = new ServerMessage(Outgoing.SendNotif);
nMessage.AppendString("Notice from Hotel Management:\r\n" + Message);
nMessage.AppendString(Link);
ButterflyEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(nMessage);
Logging.WriteLine("Completed MUS command: 'hal'");
return;
}
case "unban":
{
if (pars[0].Length > 1)
{
ButterflyEnvironment.GetGame().GetBanManager().UnbanUser(pars[0]);
}
Logging.WriteLine("Completed MUS command: 'unban'");
return;
}
case "shutdown":
{
ButterflyEnvironment.PreformShutDown(true);
Logging.WriteLine("Completed MUS command: 'shutdown'");
return;
}
}
Logging.WriteLine("MUS Command: '" + header + "' does not exist. Data: '" + param + "'");
}
private static string MergeParams(string[] Params, int Start)
{
StringBuilder MergedParams = new StringBuilder();
for (int i = 0; i < Params.Length; i++)
{
if (i < Start)
{
continue;
}
if (i > Start)
{
MergedParams.Append(" ");
}
MergedParams.Append(Params[i]);
}
return MergedParams.ToString();
}
internal void tryClose()
{
try
{
this.socket.Shutdown(SocketShutdown.Both);
this.socket.Close();
this.socket.Dispose();
}
catch
{
}
this.socket = null;
this.buffer = null;
}
}
}
Commands:
EDIT;Code:update_credits [userid]
update_pixels [userid]
signout [userid]
ha [message]
hal [link] [message]
unban [username/ip]
shutdown
A few new commands
Commands:PHP Code:case "alert":
{
string Username = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(uint.Parse(pars[0]));
string TargetUser = null;
GameClient TargetClient = null;
TargetUser = pars[0];
TargetClient = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUsername(TargetUser);
if (TargetClient == null)
{
Logging.WriteLine("User [" + Username + "] does not seem to be online!");
return;
}
TargetClient.SendNotif(MergeParams(pars, 1));
Logging.WriteLine("Alert has been sent.");
Logging.WriteLine("Completed MUS command: 'alert'");
return;
}
case "update_catalogue":
{
using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().getQueryreactor())
{
ButterflyEnvironment.GetGame().GetCatalog().Initialize(dbClient);
ButterflyEnvironment.GetGame().GetItemManager().LoadItems(dbClient);
}
ButterflyEnvironment.GetGame().GetCatalog().InitCache();
ButterflyEnvironment.GetGame().GetClientManager().QueueBroadcaseMessage(new ServerMessage(Outgoing.UpdateShop));
Logging.WriteLine("Completed MUS command: 'update_catalogue'");
return;
}
case "update_items":
{
ButterflyEnvironment.GetGame().reloaditems();
Logging.WriteLine("Completed MUS command: 'update_items'");
return;
}
case "unload_room":
{
Room RoomId = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(uint.Parse(pars[0]));
ButterflyEnvironment.GetGame().GetRoomManager().UnloadRoom(RoomId);
Logging.WriteLine("Completed MUS command: 'unload_room'");
return;
}
case "ban":
{
string Username = ButterflyEnvironment.GetGame().GetClientManager().GetNameById(uint.Parse(pars[0]));
GameClient tClient = null;
tClient = ButterflyEnvironment.GetGame().GetClientManager().GetClientByUsername(pars[0]);
if (tClient == null)
{
Logging.WriteLine("User [" + Username + "] does not seem to be online!");
return;
}
int BanTime = 0;
try
{
BanTime = int.Parse(pars[1]);
}
catch (FormatException) {
Logging.WriteLine("An error has occured.");
return;
}
if (BanTime <= 600)
{
Logging.WriteLine("Ban time is in seconds and must be at least than 600 seconds (ten minutes). For more specific preset ban times, use the mod tool.");
return;
}
else
{
ButterflyEnvironment.GetGame().GetBanManager().BanUser(tClient, "Staff", BanTime, MergeParams(pars, 2), false);
Logging.WriteLine("User [" + Username + "] has been banned!");
}
Logging.WriteLine("Completed MUS command: 'ban'");
return;
}
New one's has not been tested, if they don't work let me know.Code:alert [userid] [message]
update_catalogue
update_items
unload_room [roomid]
ban [username]
I'll be adding these to my EMU later, so i'll let you know if they work.

