Regarding ship inventory

hi

I’m trying to make my bot to use boosters from it’s cargo. But it always click the firts row in a list instead of a booster line. Would you please tell me what I’m doing wrong?

string BoosterName = "Agency 'Overclocker' SB5 Dose II";

void UseBooster ()
{
	var BoosterItem = WindowInventory?.SelectedRightInventory?.ListView?.Entry?.FirstOrDefault()?.LabelText?.FirstOrDefault(entry => entry?.Text?.RegexMatchSuccessIgnoreCase(BoosterName) ?? false);
	Sanderling.MouseClickLeft(BoosterItem);
    ClickMenuEntryOnMenuRoot(WindowInventory?.SelectedRightInventory?.ListView?.Entry?.FirstOrDefault(), "Consume");
}

Thank you.

because you take allaways first entry

var BoosterItem = WindowInventory?.SelectedRightInventory?.ListView?.Entry?.FirstOrDefault()?.

or you tape a filter like here(assuming your cargo if full of other items:

 Sanderling.MouseClickLeft(WindowInventory?.InputText?.FirstOrDefault());
    Sanderling.TextEntry(BoosterName );

var RefillListItem = WindowInventory?.SelectedRightInventory?.ListView?.Entry?.ToArray();
    if (!RefillListItem?.IsNullOrEmpty() ?? false)
    Host.Log("              Filling with : " +BoosterName );
    var RefillItem = RefillListItem?.FirstOrDefault();
 ClickMenuEntryOnMenuRoot(WindowInventory?.SelectedRightInventory?.ListView?.Entry?.FirstOrDefault(), "Consume");

or if you have a really big inventory window to fit all items from inside without scrolling, you can create a list with all items where your condition is true and then click on first or default

2 Likes

it works, thank you for your help and explanations!

1 Like

still i would change to

 Sanderling.MouseClickLeft(WindowInventory?.InputText?.FirstOrDefault());
    Sanderling.TextEntry(BoosterName );
var RefillListItem = WindowInventory?.SelectedRightInventory?.ListView?.Entry?.ToArray();
  var RefillItem = RefillListItem?.FirstOrDefault();
    if (RefillItem  != null) 
    ClickMenuEntryOnMenuRoot(RefillItem , "Consume");
else
 Host.Log("              no more : " +BoosterName );
1 Like