New Fighters

Hi,

  1. Warping to the probe scan result works like a charm. Based on your code I managed to create similar solution for targeting rats in overview window which brought me to another all stop point. I know how to select the first or last rat but the most useful way of doing it would be to create a list with all rats on grid. I tried to create an array unfortunatly so far without luck.

  2. Targeting rats - I wrote this and it acctualy works:

KeyDown(VirtualKeyCode.LCONTROL);
 Sanderling.MouseClickLeft(scanRatResultLabel);
 Host.Delay(delayDuration);
 KeyUp(VirtualKeyCode.LCONTROL);

How can I engage it with my fighters ? That new class you wrote - is it ready to be used or do you have to recompile your framework before I can use it ? (I do appologise if it is a stupid question).

To create a list with all rats on grid, you could do this:

  • make those rats visible in the overview
  • use the path ListView?.Entry in the overview window to get the set of all overview entries.
  • filter those entries for rats. What about requiring the color of the main icon to be red? Would this be sufficient?

This is a sample code with the assumption that the main icon color is enough to classify as rat:

var setRatVisible =     memoryMeasurement?.WindowOverview?.FirstOrDefault()?.ListView?.Entry     ?.Where(entry => entry?.MainIcon?.Color?.IsRed() ?? false)     ?.ToArray();

I wrote some more documentation about using the list view. You can find it at https://github.com/Arcitectus/Sanderling/wiki/MemoryMeasurement#list-view

Nice approach to targeting. This way you could target multiple objects between the changes of the CONTROL key.

To engage with the fighters:

The bot only affects the eve online client by keyboard and mouse inputs. So the next step is to find out how you can engage using keyboard or mouse input to the eve online client.

Which new class I wrote do you mean?

Which new class I wrote do you mean?

**SquadronUI.cs -**I thought that was the one we are going yo use for a new squadron fighters.

The bot only affects the eve online client by keyboard and mouse inputs. So the next step is to find out how you can engage using keyboard or mouse input to the eve online client.

With rat targeted all we need to do is to click artillery button in EVE - the question is how we can click that button ? I know how to click stuff through Sanderling but the problem is I cant find that button.

Is this is something you had in mind using ?

public interface SquadronUI
{
	int? SquadronNumber { get; }

	SquadronHealth Health { get; }

	IEnumerable<SquadronAbility> SetAbility { get; }
}

The SquadronUI.cs so far is just a draft for your review. I published this to learn from you whether the API structure as shown would be helpful and sufficient for what you are planning.

With rat targeted all we need to do is to click artillery button in EVE - the question is how we can click that button ?

Ok, with the sample I have so far I can read all buttons for all squadrons. But I do not have a solution yet for the classification as “artillery”. I would try hovering the mouse over each of the buttons and storing the tooltip for each of them, making the connection between tooltip and button with the highlight that appears on the button when it is hovered. Then we could look for the string ‘artillery’ in the saved tooltip. When I have a eve online client process sample with the button tooltip while the button itself is highlighted, I can look into reading this too.

In case a you take a new sample, you could include the squadron UI from the inventory in case you want to use that too. I mean the ‘Fighter Bay’ as shown at https://support.eveonline.com/hc/en-us/articles/207659599-Fighter-Controls

Is this is something you had in mind using ?

public interface SquadronUI
    {
        int? SquadronNumber { get; }

        SquadronHealth Health { get; }

        IEnumerable<SquadronAbility> SetAbility { get; }
    }

It depends on your feedback. For clicking the button you marked in your screenshot, the SetAbility property would be used to obtain references to the three buttons. The element from the collection could then used to click on. That is the plan so far.

I adopted the name ‘Ability’ from the eve online memory to refer to the button, but I do not know if the eve online UI uses other symbols for this entity.

I see the helpdesk article too uses the term ‘Ability’:

The Fighter Control panel is used to send fighters to attack a target or otherwise use their abilities

We will provide you with a new process sample with the button tooltip and fighter squadron bay UI.

To target all the rats I use this (setRatVisible array comes from your previous example):

int ratTargets = setRatVisible.Length-1;
 
 for(int i =0;  i <=ratTargets; i++)
    {
 KeyDown(VirtualKeyCode.LCONTROL);
 Sanderling.MouseClickLeft(setRatVisible[i]);
 Host.Delay(delayDuration);
 KeyUp(VirtualKeyCode.LCONTROL);
 }

It works.

Right now I am trying to figure it out how to warp within 30km instead of 0.

The targeting code can be improved:

  • Your code will throw an exception and thus stop the script if setRatVisible is ever null
  • If you place the keyboard code outside the loop you save the time for the delay
  • The loop code can be simplified with the foreach statement.

The following code incorporates all those changes:

KeyDown(VirtualKeyCode.LCONTROL);  foreach(var ratEntry in setRatVisible.EmptyIfNull())     Sanderling.MouseClickLeft(ratEntry);  Host.Delay(delayDuration); KeyUp(VirtualKeyCode.LCONTROL);

If you have a menu entry that contains the 30km, you can use this pattern instead the one I showed for warp to 0:

"warp.*30s*km"

With release of version 16.06.11, I expanded memory reading to include probe scan results and squadron UI.

You can now access the probe scan results over the follwing path:

memoryMeasurement?.WindowProbeScanner?.FirstOrDefault()?.ScanResultView?.Entry

To access the squadron UI, use the new SquadronsUI property of the IShipUi:

memoryMeasurement?.ShipUi?.SquadronsUI

You can find the release at https://github.com/Arcitectus/Sanderling/releases/tag/v16.06.11

Do we have any attribute or flag for selected squadron?

I don’t think we have this yet.

If you submit a corresponding process sample, I can look into adding an IsSelected property.

Done.Check your PM.

Also i dont found this hint:

Update:

You’ve reached the maximum number of replies a new user can create on their first day. Please wait 3 hours before trying again.

Now I cant reply on forum. :grinning:
Yes second sample contain all, soo you can download only them.

I see you uploaded two samples. Does the last one contain everything we need? I do not want to store multiple samples for stuff that can be covered in one.
Unless there is a good reason to do otherwise, I’d prefer to use one sample as reference for both selection and hint to keep the storage requirements low.

Good, I stored that one.

Also i should to know Is this ability active/not active/deactiveted. :fearful:

Where can I see this in the screenshot from the process sample?

(I just assigned you the next higher trust level, so you should be able to write posts without the waiting time you mentioned earlier)

In measurement that i mail you no one ability in use, soo i guess it will be impossible to find differences. We need new one, isn’t it?

Yes, we need some sample of what we want to read.

@Terpla, the additions to the interface for the Sqadron UI you requested have been added with version 16.11.17: Sanderling release v16.11.17

1 Like

Thank you. I tested, it works. But I still have a couple of questions:

  1. Is it possible to distinguish active from deactivated abilities?

In both cases, property RampActive == True

  1. Is it possible to understand that the ability is on cooldown?

It looks like you need to add another property.

  1. I ran into a problem: I can not tell the difference from the first and second abilities.

So I ask to add a hint. As for Squadron.

Is it possible add this hint without mouseovers as for modules? Do you need another memory measurement?