Newbie AF looking for some help (Local Watch)

I start learning C++ 2 days ago, I really do not have much skill. and english is not my nativ language.

I Try to create a Local Watch tool:

  • Sound for Neutral or Red in local
  • Call back Drones
  • Flee to bookmark

i found some code in this topic
http://forum.botlab.org/t/how-do-add-audio-message-if-neutral-or-enemy-hits-local/93/3?u=palenie

but now im stuck the Script send me always a sound for pilot with Excellent and Good standing pilots
so i change line 11

from

new { “Pilot is in your (fleet|corporation)” }

to

new { “Pilot is in your (fleet|corporation) | Pilot has Excellent Standing | Pilot has Good Standing” }

i have alos tried

new { “good standing”, “excellent standing”, “Pilot is in your (fleet|corporation)”, }

  • codeline from included script “mine.ore.cs”

but i have still the same problem i got a sound for pilots with Excellent and Good standing.

Has anyone an idea what I have done wrong?

Thanks in advance

I never tried a script like that, but maybe check if the flagIcon is actually a “Pilot if in your fleet/corp” cause it might be somethng else and remember that costum Overviews change that, make sure your Overview is showing all alliesas “in your fleet/corp”, then return the value individually for each nickname in chat and check what flagIconreally is because you might be comparing like “Pilot has no standing” with “Pilot is in your (fleet|corporation)” and that will return that player as an enemy.

1 Like

I have already checked this.
The pilots have the right standing.

Code works great for Corp Pilots
only porblem with Good and excellen standing

here is the full code

Sanderling.Parse.IMemoryMeasurement Measurement => Sanderling?.MemoryMeasurementParsed?.Value;

var chatLocal =
Sanderling.MemoryMeasurementParsed?.Value?.WindowChatChannel
?.FirstOrDefault(windowChat => windowChat?.Caption?.RegexMatchSuccessIgnoreCase(“local”) ?? false);

bool hostileOrNeutralsInLocal => 1 != chatLocal?.ParticipantView?.Entry?.Count(IsNeutralOrEnemy);

bool IsNeutralOrEnemy(IChatParticipantEntry participantEntry) =>
!(participantEntry?.FlagIcon?.Any(flagIcon =>
new { “good standing”, “excellent standing”, “Pilot is in your (fleet|corporation)”, }
.Any(goodStandingText =>
flagIcon?.HintText?.RegexMatchSuccessIgnoreCase(goodStandingText) ?? false)) ?? false);

while(true)
{
var chatLocal =
Sanderling.MemoryMeasurementParsed?.Value?.WindowChatChannel
?.FirstOrDefault(windowChat => windowChat?.Caption?.RegexMatchSuccessIgnoreCase(“local”) ?? false);

if(chatLocal?.ParticipantView?.Entry?.Count(IsNeutralOrEnemy) > 1)

 {

Host.Log(hostileOrNeutralsInLocal);
Host.Log(chatLocal?.ParticipantView?.Entry?.Count(IsNeutralOrEnemy));
System.Media.SoundPlayer simpleSound = new System.Media.SoundPlayer(@“C:\watchalm.wav”);
simpleSound.Play();
}

Host.Delay(4000);

Sanderling.InvalidateMeasurement();
}

pastebin

http://pastebin.com/5jtrZ5v6

Okay i guess i found the problem. I add my Alliance with a excellent standing but in the framework is still “Pilot is in your alliance”
i change the line 11 again

new { “good standing”, “excellent standing”, “Pilot is in your (fleet|corporation|alliance)”, }

Thanks for the help :slight_smile:

What is shown, like I said, has to do with your Overview settings, that defines the priority order or the icons show (e.g: if he is on your fleet or corp). And the sample code you gave defines the variable chatLocal both outside and inside the while loop, that will always show you the same results while the bot is running. You need to either set/pass the values inside the while loop or add an update function.
E.g:

dont set chatLocal inside while loop
MemoryUpdate(); //inside the while toop


void MemoryUpdate()
{
Sanderling.InvalidateMeasurement();
chatLocal = Sanderling.MemoryMeasurementParsed?.Value?.WindowChatChannel
?.FirstOrDefault(windowChat => windowChat?.Caption?.RegexMatchSuccessIgnoreCase(“local”) ?? false);
}

The code from the topic you linked to uses the values from the HintText property on the flag icon. This is the text the eve client shows when you hover the mouse over the icon.

You can see the values given for this property in the API Explorer

Hello @Palenie
First of all good initiative, as a minimum this could be really useful for people being semi AFK in drone boats :slight_smile: