I know this has been asked for for many years but i was looking at the source code and wondered if the same code that allows inventory drag and drop might be modified to work with assembly. Its got a lot of stuff the assembly storage menu coding doesnt so I dont know if it would be possible but maybe someone who is good at code could figure it out. Its located in the mnuInventory cs file under client- client- menus. It says somethin bout drag and drop. I dunno enough about codes to attempt to understand this. Sorry if it isnt helpful. But here is the parts i mean
[spoilerCodes:g86m32zl]lblVisibleItems = new Label[10];
for (int i = 0; i < lblVisibleItems.Length; i++) {
lblVisibleItems[i] = new Label(“lblVisibleItems” + i);
//lblVisibleItems[i].AutoSize = true;
lblVisibleItems[i].Size = new Size(200, 32);
lblVisibleItems[i].Font = FontManager.LoadFont(“PMU”, 32);
lblVisibleItems[i].Location = new Point(35, (i * 30) + 48);
//lblVisibleItems[i].HoverColor = Color.Red;
lblVisibleItems[i].ForeColor = Color.WhiteSmoke;
lblVisibleItems[i].AllowDrop = true;
lblVisibleItems[i].DragDrop += new EventHandler<DragEventArgs>(lblVisibleItems_DragDrop);
lblVisibleItems[i].MouseDown += new EventHandler<MouseButtonEventArgs>(lblVisibleItems_MouseDown);
lblVisibleItems[i].Click += new EventHandler<SdlDotNet.Widgets.MouseButtonEventArgs>(inventoryItem_Click);
this.AddWidget(lblVisibleItems[i]);
void lblVisibleItems_DragDrop(object sender, DragEventArgs e) {
if (mode == Enums.InvMenuType.Use) {
int oldSlot = Convert.ToInt32(e.Data.GetData(typeof(int)));
Network.Messenger.SendSwapInventoryItems(oldSlot, Array.IndexOf(lblVisibleItems, sender) + 1 + (currentTen * 10));
}
}
void lblVisibleItems_MouseDown(object sender, MouseButtonEventArgs e) {
if (mode == Enums.InvMenuType.Use) {
if (Windows.WindowSwitcher.GameWindow.MenuManager.FindMenu("mnuItemSelected") == null) {
Label label = (Label)sender;
SdlDotNet.Graphics.Surface dragSurf = new SdlDotNet.Graphics.Surface(label.Buffer.Size);
dragSurf.Fill(Color.Black);
dragSurf.Blit(label.Buffer, new Point(0, 0));
label.DoDragDrop(Array.IndexOf(lblVisibleItems, sender) + 1 + (currentTen * 10), DragDropEffects.Copy, dragSurf);
}
}
}
void inventoryItem_Click(object sender, SdlDotNet.Widgets.MouseButtonEventArgs e) {
if (Players.PlayerManager.MyPlayer.GetInvItemNum(currentTen * 10 + 1 + Array.IndexOf(lblVisibleItems, sender)) > 0) {
ChangeSelected(Array.IndexOf(lblVisibleItems, sender));
if (mode == Enums.InvMenuType.Store)
{
mnuBankItemSelected selectedMenu = (mnuBankItemSelected)Windows.WindowSwitcher.GameWindow.MenuManager.FindMenu("mnuBankItemSelected");
if (selectedMenu != null) {
Windows.WindowSwitcher.GameWindow.MenuManager.RemoveMenu(selectedMenu);
//selectedMenu.ItemSlot = GetSelectedItemSlot();
//selectedMenu.ItemNum = Players.PlayerManager.MyPlayer.GetInvItemNum(GetSelectedItemSlot());
}
else if (mode == Enums.InvMenuType.Use)
{
// Don"t select the item, interferes with drag & drop
//mnuItemSelected selectedMenu = (mnuItemSelected)Windows.WindowSwitcher.GameWindow.MenuManager.FindMenu("mnuItemSelected");
[/details]
Anyway sorry if this is something you guys already tried I just thought it might be a good starting point for actually making organization a thing. Also I think you’d have to recompile the client anyway. But maybe someone smarter than me could do it.