Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Eve Online
You last visited: Today at 09:53

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Release] Eve Online Botting Framework

Discussion on [Release] Eve Online Botting Framework within the Eve Online forum part of the MMORPGs category.

Reply
 
Old 03/03/2016, 13:29   #16
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Question

Quote:
Originally Posted by Vyndariel View Post
Zum Testzeitpunkt war ich immer von Station abgedockt, hatte keine überlappenden Fenster und Button zum Inventory ist auch so alles dort wie gefordert eingestellt.
Ok, dann habe ich noch ein paar fragen zu dem Test:

Hat der Bot das Sonnensystemmenü geöffnet?
->Wenn ja, war dort der Bookmark '00 - Station' sichtbar?
War im ShipUI der readout aktiv?
Was wird im API Explorer unter MemoryMeasurementParsed?.Value?.ShipUi?.HitpointsA ndEnergy angezeigt? (Dort sollten die Hitpoints angezeigt werden)
0ptimist is offline  
Old 03/03/2016, 13:43   #17
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Mining script expansion to warp out depending on local.

Quote:
Originally Posted by supersonic666 View Post
EDIT:

nvm, went to your forum, found everything. thank you very much!

-----------------------------------------------------------------------

Hello Optimist, how would i go about adding code to the mining script, so it docks to the station if neutral or enemy pilots are present in local, then waits for local to be clear before going out again. it should be part of defense check part of the script.

if you could give me some ideas how to start i would appriciate that.

so far everything works great.
Just for the record, here is the implementation I would test next decide whether to warp out because of the looks of local:

Code:
using Parse = Sanderling.Parse;

bool IsNeutralOrEnemy(IChatParticipantEntry participantEntry) =>
   !(participantEntry?.FlagIcon?.Any(flagIcon =>
     new[] { "good standing", "excellent standing" }
     .Any(goodStandingText =>
        flagIcon?.HintText?.RegexMatchSuccessIgnoreCase(goodStandingText) ?? false)) ?? false);

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

//	assuming that own character is always visible in local
bool Retreat	=> 1 != chatLocal?.ParticipantView?.Entry?.Count(IsNeutralOrEnemy);
As you can see, it uses a whitelist of harmless standings and counts the chat participants which have any other flag.

If this works, I will add it to the included mining script.
0ptimist is offline  
Old 03/03/2016, 23:33   #18
 
supersonic666's Avatar
 
elite*gold: 0
Join Date: Mar 2008
Posts: 67
Received Thanks: 5
Quote:
Originally Posted by 0ptimist View Post
Just for the record, here is the implementation I would test next decide whether to warp out because of the looks of local:

Code:
using Parse = Sanderling.Parse;

bool IsNeutralOrEnemy(IChatParticipantEntry participantEntry) =>
   !(participantEntry?.FlagIcon?.Any(flagIcon =>
     new[] { "good standing", "excellent standing" }
     .Any(goodStandingText =>
        flagIcon?.HintText?.RegexMatchSuccessIgnoreCase(goodStandingText) ?? false)) ?? false);

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

//	assuming that own character is always visible in local
bool Retreat	=> 1 != chatLocal?.ParticipantView?.Entry?.Count(IsNeutralOrEnemy);
As you can see, it uses a whitelist of harmless standings and counts the chat participants which have any other flag.

If this works, I will add it to the included mining script.

works perfectly, thanks alot.
supersonic666 is offline  
Old 03/05/2016, 14:49   #19
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Talking Sanderling Release v16.02.04

Sanderling Release v16.02.04
This release brings improvements to the memory reading and scripting.

You can load it from

changes since v16.00.19:
  • fix a NullReferenceException in parsing of mission description.
  • fix bug in API Explorer which prevented propagation of some elements in Measurement to Tree View as described at
  • add find&replace tool to the integrated script editor as requested at
  • add #r directive to BotSharp which enables usage of other .NET assemblies in your scripts. (see example below) In response to request at
  • add main icon components to IOverviewEntry which contain several indicators regarding targeting. In response to request at
  • add MessageInput UIElement to WindowChatChannel to make sending chat messages easier. As described at (see example below)
  • add contained UIElements to PanelGroup to support navigation in Neocom.

Examples for using some of the new features

sending a message to a chat channel
Code:
void ChatSendMessage(WindowChatChannel windowChat, string messageText)
{
     if(null == windowChat) return;

     Sanderling.MouseClickLeft(windowChat?.MessageInput);
     Sanderling.TextEntry(messageText);
     Sanderling.KeyboardPress(VirtualKeyCode.RETURN);
}

void ChatCorpSendMessage(string messageText) => ChatSendMessage(
        Sanderling.MemoryMeasurementParsed?.Value?.WindowChatChannel?.FirstOrDefault(c => c?.Caption?.RegexMatchSuccessIgnoreCase("corp") ?? false),
        messageText);
employing the #r directive to make use .NET assembly of your choice
Code:
#r "System.Speech" // Assembly name, in this case to be found in GAC

using System.Speech.Synthesis;

var synth = new SpeechSynthesizer();

synth.Speak("BotSharp at your service.");
0ptimist is offline  
Old 03/06/2016, 01:03   #20
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
Ore-Script mit veränderten Bookmark-Namen und Rats auf true


Code:
01.02.13  status transition from Pausing to Running.01.02.14  Microsoft.CodeAnalysis.Scripting.CompilationErrorException: (368,15): error CS1061: 'string' does not contain a definition for 'ValueFromRegexMatchGroupAtIndex' and no extension method 'ValueFromRegexMatchGroupAtIndex' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
   bei Microsoft.CodeAnalysis.Scripting.ScriptBuilder.ThrowIfAnyCompilationErrors(DiagnosticBag diagnostics, DiagnosticFormatter formatter)
   bei Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, CancellationToken cancellationToken)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.GetExecutor(CancellationToken cancellationToken)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.RunAsync(Object globals, CancellationToken cancellationToken)
   bei BotSharp.ScriptRun.<>c__DisplayClass58_0.<Start>b__0()01.02.14  status = Failed.
Vyndariel is offline  
Old 03/06/2016, 09:54   #21
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
compilation error mining script

Quote:
Originally Posted by Vyndariel View Post
Ore-Script mit veränderten Bookmark-Namen und Rats auf true


Code:
01.02.13  status transition from Pausing to Running.01.02.14  Microsoft.CodeAnalysis.Scripting.CompilationErrorException: (368,15): error CS1061: 'string' does not contain a definition for 'ValueFromRegexMatchGroupAtIndex' and no extension method 'ValueFromRegexMatchGroupAtIndex' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)
   bei Microsoft.CodeAnalysis.Scripting.ScriptBuilder.ThrowIfAnyCompilationErrors(DiagnosticBag diagnostics, DiagnosticFormatter formatter)
   bei Microsoft.CodeAnalysis.Scripting.ScriptBuilder.CreateExecutor[T](ScriptCompiler compiler, Compilation compilation, CancellationToken cancellationToken)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.GetExecutor(CancellationToken cancellationToken)
   bei Microsoft.CodeAnalysis.Scripting.Script`1.RunAsync(Object globals, CancellationToken cancellationToken)
   bei BotSharp.ScriptRun.<>c__DisplayClass58_0.<Start>b__0()01.02.14  status = Failed.
Das kommt daher das die genannte methode aufgrund einer kollision in einen anderen Namensraum verschoben wurde.
Das Problem kann behoben werden durch das hinzufügen der folgenden using directive am Anfang des Scripts:
Code:
using BotSharp.ToScript.Extension;
Übrigens kann man in der "static diagnostics" sektion alle compilerfehler sehen, der log den du kopiert hast zeigt im falle von fehlern beim kompilieren nur den ersten.
So kann das in der UI aussehen:
0ptimist is offline  
Old 03/07/2016, 12:19   #22
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
Hey,

thanks a lot for your advice! With that iniatial line of code it's working


I was wondering if you consider adding Mining Drone, as well as multiple bookmark-support?


Cheers
Vyndariel is offline  
Old 03/07/2016, 22:08   #23
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Thumbs up Sanderling memory reading features.

Quote:
Originally Posted by Vyndariel View Post
Hey,

thanks a lot for your advice! With that iniatial line of code it's working


I was wondering if you consider adding Mining Drone, as well as multiple bookmark-support?


Cheers
Drones and multiple bookmarks are already supported.

The Drone Window is at
Code:
MemoryMeasurementParsed?.Value?.WindowDroneView?[0]
0ptimist is offline  
Old 03/07/2016, 23:01   #24
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
could you give us newbs working examples with existing code like the ore-script, especially multiple bookmarks are very interesting, especially in combination with mining crystals and filters?

This would boost that script massively

Cheers
Vyndariel is offline  
Old 03/07/2016, 23:27   #25
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Talking improved sample mining script to use different mining site bookmarks

Quote:
Originally Posted by Vyndariel View Post
could you give us newbs working examples with existing code like the ore-script, especially multiple bookmarks are very interesting, especially in combination with mining crystals and filters?

This would boost that script massively

Cheers
Sure, I just changed the sample ore mining script to use multiple bookmarks for mining sites.
You can see the commit with the differences highlighted at

As you can see, it picks a random mining site from the configured set.
0ptimist is offline  
Old 03/10/2016, 19:12   #26
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
also I would like to know how I could change the script to target 2 roids instead of 1
Vyndariel is offline  
Old 03/11/2016, 13:01   #27
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Post script to lock 2 roids.

Quote:
Originally Posted by Vyndariel View Post
also I would like to know how I could change the script to target 2 roids instead of 1
for each roid you want to target do this:
  • choose the entry in the overview which represents the roid.
  • leftclick on that overview entry.
  • simulate keypress of the 'lock' keyboard shortcut. (You could also lock via the context menu but as long you can rely on knowing the configured keyboard shortcut that is more efficient)

I wrote a complete script which should implement the described approach and lock a configurable number of roids for you to test:

Code:
using BotSharp.ToScript.Extension;
using Parse = Sanderling.Parse;

var numberOfRoidsToLock	= 2;

var LockTargetKeyboardShortcut = new[]{ VirtualKeyCode.LCONTROL};	// default of CTRL

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

//	extract the ore type from the name as seen in overview. "Asteroid (Plagioclase)"
string OreTypeFromAsteroidName(string AsteroidName)	=>
	AsteroidName.ValueFromRegexMatchGroupAtIndex(@"Asteroid \(([^\)]+)", 0);

Sanderling.Parse.IWindowOverview	WindowOverview	=>
	Measurement?.WindowOverview?.FirstOrDefault();

Parse.IOverviewEntry[] ListAsteroidOverviewEntry =>
	WindowOverview?.ListView?.Entry
	?.Where(entry => null != OreTypeFromAsteroidName(entry?.Name))
	?.OrderBy(entry => entry.DistanceMax ?? int.MaxValue)
	?.ToArray();

Parse.IOverviewEntry[] ListAsteroidOverviewEntryLockingOrLocked =>
	ListAsteroidOverviewEntry
	?.Where(entry => (entry.MeTargeted ?? false) || (entry.MeTargeting ?? false))
	?.ToArray();

while(!(numberOfRoidsToLock <= ListAsteroidOverviewEntryLockingOrLocked?.Length))
{
	var	nextToLock	= ListAsteroidOverviewEntry?.Except(ListAsteroidOverviewEntryLockingOrLocked)?.FirstOrDefault();

	Host.Log("Lock another one: " + nextToLock?.Name);
	
	Sanderling.MouseClickLeft(nextToLock);
	
	Sanderling.KeyboardPressCombined(LockTargetKeyboardShortcut);
}
0ptimist is offline  
Thanks
1 User
Old 03/12/2016, 10:48   #28
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
I really feel kinda dumb O.o I actually have no idea how to include this into the mining script O.o
Vyndariel is offline  
Old 03/12/2016, 17:51   #29
 
elite*gold: 585
Join Date: Jul 2011
Posts: 268
Received Thanks: 104
Question

Quote:
Originally Posted by Vyndariel View Post
I really feel kinda dumb O.o I actually have no idea how to include this into the mining script O.o
I have no idea what your situation is since I don't know what you tried so far and how that failed.
0ptimist is offline  
Old 03/12/2016, 23:43   #30
 
elite*gold: 20
Join Date: Feb 2006
Posts: 1,935
Received Thanks: 1,859
I just use the default ore mining script, as we edited some things in already - but I assume I need to change the whole target routine or something in that existing script or do I just create a new void somewhere?

sry 4 derping
Vyndariel is offline  
Reply

Tags
bot, framework, open source, scripting


Similar Threads Similar Threads
[RELEASE] Alexya Framework - Lightweigh PHP Framework
07/13/2015 - Coding Releases - 2 Replies
Hi! I've just finished a framework I was working on and decided to release it. I'll put the github link over here: https://github.com/manulaiko/alexya and you'll check it, once I get back home I'll post a tutorial. See you!
Botting framework/code
08/06/2014 - DarkOrbit - 73 Replies
** THIS IS A NEW THREAD, ALL UPDATES WILL NOW BE HERE ** WORKS IN WINDOWS, MAC AND LINUX I've looked around the forums, it looks like dark orbit bots are dead or dying (Correct me if I'm wrong). With this I plan to get bots reintroduced into dark orbit. It can detect anything in any game as long as you have the right settings This is programmed in python. Python is VERY EASY TO CODE in. If you know c++ or c you will find python even easier.
Need help making a botting framework
07/10/2014 - DarkOrbit - 17 Replies
Hello guys, Im working on a bot framework (for windows, mac, and linux :) ) that you can easily use to detect complex objects in darkorbit and any other game. It also has some anti cheat functions that you can tweak. This is where my question arises. I know that darkorbit detects the pattern between clicks to find bots, is there any other ways that DO detects cheats? I need to implement this into my framework and I could find almost nothing online about this. EDIT: Here is my work so...



All times are GMT +2. The time now is 09:53.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.