GithubHelp home page GithubHelp logo

arcitectus / sanderling Goto Github PK

View Code? Open in Web Editor NEW
252.0 62.0 120.0 9.81 MB

APIs and libraries to read information directly from the EVE Online game client.

Home Page: https://forum.botlab.org

License: Apache License 2.0

C# 28.02% Elm 71.96% PowerShell 0.01% Batchfile 0.01%
eve-online visualization memory-reading eveonline user-interface remote-control remote-access accessibility

sanderling's People

Contributors

abador avatar arcitectus avatar comeinrage avatar dreambottle avatar focabr avatar ranc1 avatar rt1shnik avatar tetreum avatar viir avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sanderling's Issues

Http Status Code 429 & 500 after Release v16.02.04

After Release v16.02.04, licence requests fail with exceptions:

{Type:"System.Net.WebException",Message:"The remote server returned an error: (429).",InnerException:null,StackTrace:" at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
at System.Net.WebClient.UploadData(Uri address, String method, Byte[] data)
at System.Net.WebClient.UploadData(String address, String method, Byte[] data)
at BotEngine.Interface.LicenseClient.UploadData(String Uri, Byte[] UploadData)
at BotEngine.Interface.LicenseClient.UploadDataDeflate(String Uri, Byte[] UploadData)
at BotEngine.Interface.LicenseClient.HttpExchangeLocked[TRequest,TResponse](String UriComponent, TRequest Request, Boolean Deflate)",TargetSite:"UploadDataInternal"}

and 500 (InternalServerError)
{Type:"System.Net.WebException",Message:"The remote server returned an error: (500) Internal Server Error.",InnerException:null,StackTrace:" at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request)
at System.Net.WebClient.UploadData(Uri address, String method, Byte[] data)
at System.Net.WebClient.UploadData(String address, String method, Byte[] data)
at BotEngine.Interface.LicenseClient.UploadData(String Uri, Byte[] UploadData)
at BotEngine.Interface.LicenseClient.UploadDataDeflate(String Uri, Byte[] UploadData)
at BotEngine.Interface.LicenseClient.HttpExchangeLocked[TRequest,TResponse](String UriComponent, TRequest Request, Boolean Deflate)",TargetSite:"UploadDataInternal"}

how is the read-memory project used?

Hi! I really like what was done in this project. i didn't know elm but i do appreciate his functional aspect!

I want to understand how all this is wired. When we run the alternate-ui project how is it using the c# code? i see VolatileHostScript that has a string of a c# script that resemble what is in the read-memory project. How is the information of the c# memory reading passed to the elm?
I would like to use your memory-reading c# for a small app in c#. Is it possible to use it as a library?

Bot not opening

I used the bot before, it worked out pretty fine, but since i changed the principal monitor(already changed it back) it does not work anymore, opening a blank image in the task bar, and nothing in the desktop
image

ore-miner: wrong log message

Look at code below:

var asteroidOverviewEntryNext = ListAsteroidOverviewEntry?.FirstOrDefault();
var asteroidOverviewEntryNextNotTargeted = ListAsteroidOverviewEntry?.FirstOrDefault(entry => !((entry?.MeTargeted ?? false) || (entry?.MeTargeting ?? false)));
Host.Log("next asteroid: (" + asteroidOverviewEntryNext?.Name + " , distance: " + asteroidOverviewEntryNext?.DistanceMax + ")" +
", next asteroid not targeted: (" + asteroidOverviewEntryNext?.Name + " , distance: " + asteroidOverviewEntryNext?.DistanceMax + ")");

This code should show info about "next asteroid" and "next asteroid not targeted". But in both cases it shows the same info (used asteroidOverviewEntryNext). I thing for "next asteroid not targeted" should be used asteroidOverviewEntryNextNotTargeted.

The same issue in Mine.ore.cs

Schiff stoppen

Hallo!

Gibt es eine Möglichkeit, dass das Schiff anhält wenn die miner an sind? Er fliegt bei mir immer gegen astros und bugt sich dort fest, weil er sich immer weiter dem Astro nähert.

Grüße

Script editor: Focus to input on CTRL + F

When you press CTRL + F the Search window appears but without having the input focused.

Could it be possible to focus it by default? So you can make CTRL + F -> CTRL + V / start typing rather than CTRL + F -> Mouse click -> CTRL + V / start typing

Module overload indicator possible?

Hello!

Awesome piece of software as usual. It's really gotten me hooked on EVE again! :)

Would it be possible to parse the module overload/heat indicator? Little green rectangle above the module

Br. asdfasdfasdf100500

Choosing Ore type

this may be a dumb question, if this kind of question are not meant to be a issue, just let me know.
in this part of code:

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

i don't know if it's a ore type selector, if it is, give me an example how to fill it, because i tried, but i have no experience with c# strings
i want to mine only "Asteroid (Omber)" instead of any omber type(Golden, Silvery), i already filtered the other asteroids ores.

speedup finding UIRoot

It tooks round about 4min and 16GB of Ram to find the UiRoot-Address(largest). How can i speed up this?

System.OutOfMemoryException after typing a "." after some object.

I have 6gb of ram, 4 is used up, so I am not out of memory. However, sometimes when I type a . after an object like for example "Sanderling." and the list of things tries to drop down I get a big window full of errors. Ontop it says:

{Type:"System.OutOfMemoryException",Message:"Insufficient memory to continue the execution of the program.",InnerException:null,StackTrace:" at System.Runtime.InteropServices.Marshal.AllocHGlobal(IntPtr cb)

The exception error is saved to a text file.
2017.05.17.00.40.39 Exception.txt

I've been getting a lot of these throughout the time I am writing code in Sanderling.

My PC stats: Windows 10 Pro, i3 3.1gz dual virtualized core, 6gb ram, Radeon HD 4650 512mb vid card, 250gb HDD

Programs Opened: Windows Explorer, Google Chrome, Notepad++, Paint.net, Eve game, Sanderling

use normall hold instead of ore hold

would it be possible to add in configuration which hold to use. so i can choice to to use cargo hold that way i could use ships without a orehold. :)

Windows XP support

Hello

I'm trying to run Sanderling in Windows XP environment. I use XP because it supports hardware serial signature sproofing.

Unfortunately Sanderling crashes on startup: "16.06.23.Sanderling.exe has encountered a problem and needs to close."

I suspect it is because XP does not support .NET 4.6.

It however supports .NET 4.0. Do you think it would be possible to compile Sanderling using .NET 4.0?

If you need something rewritten, I'm more than willing to help

Br. Number one Sanderling fan

Focus modules on one asteroid?

the mining bot works great but for some reason it only focuses on one asteroid while the other one stays offline. I was wondering if it’s possible to set up the bot so that both modules focus one?

In the log it says “asteroid distance too far” or something along those lines and keeps going towards the current asteroid with only one module.

How can this be setup to work with both modules active on the same asteroid?? Thanks

Too long search time of UI Root

Hello,
I use your library with my own C++ application. So that I use .json result of your memory-reading library, parse it and do something with result. The main problem is the time it takes to search candidates in UI Trees in your library. On my computer it is around 3 minutes. Of course I save root addres from .json result and push it in the --root-address argument next launch, but first execution of application is terribly slow. How I can improve it?

Best regards,
Grigory

Mining Bot

Hey

Ich habe momentan ein Problem mit dem Miningbot. Die Tage hatte er wunderbar funktioniert ohne das er irgend ein Problem gemacht hat jedoch heute spinnt er total rum. Er warpt sich zum belt und sucht seine Astros, dass funktioniert soweit noch, jedoch fliegt er immer näher an den Astroiden ran aber schaltet ihn nicht auf und sagt die ganze Zeit, dass der Astro zu weit weg wäre, was absolut nicht stimmt da er schon nur noch 100 Meter vor ihm steht. Das skript ist unverändert und er spinnt erst seit heute rum.

Wäre dankbar für eine Antwort

Grüße

Mining script doesn't seem to target asteroids

I've got it running up to the point where it's supposed to select a target and start mining, but it won't do that.

Log:

20.00.49 |   |   | status transition from None to Running.
-- | -- | -- | --
20.00.49 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: MainStep
20.00.50 | 226 |   | return drones to bay.
20.00.57 | 595 |   | measure tooltips of all modules.
20.00.58 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: InBeltMineStep
20.01.08 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: InBeltMineStep
20.01.18 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: InBeltMineStep
20.01.28 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: InBeltMineStep
20.01.38 | 70 |   | ore hold fill: 40%, mining range: 0, mining modules (inactive): 0(0), shield.hp: 100%, retreat: , JLA: , overview.rats: 0, overview.roids: 19, offload count: 0, nextAct: InBeltMineStep

config:

//	Bookmarks of places to mine. Add additional bookmarks separated by comma.
string[] SetMiningSiteBookmark = new[] {
	"Mining_Ommaerrer_VI.2",
	};

//	Bookmark of location where ore should be unloaded.
string UnloadBookmark = "Station_Ommaerrer_VIII";

//	Name of the container to unload to as shown in inventory.
string UnloadDestContainerName = "Item Hangar";

//	when this is set to true, the bot will try to unload when undocked.
bool UnloadInSpace = false;

//	Bookmark of place to retreat to to prevent ship loss.
string RetreatBookmark = UnloadBookmark;

//	The bot loads this preset to the active tab. 
string OverviewPreset = "MiningRats";

var ActivateHardener = false; // activate shield hardener.

//	bot will start fighting (and stop mining) when hitpoints are lower. 
var DefenseEnterHitpointThresholdPercent = 85;
var DefenseExitHitpointThresholdPercent = 90;

var EmergencyWarpOutHitpointPercent = 60;

var FightAllRats = true;	//	when this is set to true, the bot will attack rats independent of shield hp.

var EnterOffloadOreHoldFillPercent = 95;	//	percentage of ore hold fill level at which to enter the offload process.

var RetreatOnNeutralOrHostileInLocal = false;   // warp to RetreatBookmark when a neutral or hostile is visible in local.

bool returnDronesToBayOnRetreat = true; // when set to true, bot will attempt to dock back the drones before retreating

//	<- end of configuration section

Could you please tell me how to build readmemory64 in detail?

win10 64bit
.net sdk 3.1
run build.bat
run read-memory-64-bit.exe in \read-memory-64-bit\obj\x64\Debug\netcoreapp3.1
get A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found in 'C:\Program Files\dotnet'.

Unhandle Exception in the search of the UI_root_address

Since yesterday I'm not able to run properly the read_memory program.

The program find candidates but fail after that:

Reading from process sample 77DA8F81EF96CDEC844EEC2605EB5CEE9CF73ECEDBB5B3B45FCEA2775124B471.\r\nFound 14 candidates for UIRoot in 64 seconds: 0x18A057F2978,0x18A057F3BA8,0x18A0CEA54F8,0x18A0CEB33E8,0x18A0F7ABD00,0x18A10093E40,0x18A100AB1A8,0x18A100AC420,0x18A100ADBE0,0x18A101358F0,0x18A10135BC8,0x18A161F1D68,0x18A5C956270,0x18A5DCCC128\r\n
then I get into the stderr :
Unhandled exception. System.ArgumentException: An element with the same key but a different value already exists. Key: ????\n

The return code is 3762504530

I already manage to get it working in the past few days but now it's impossible to run it, restart the game, the computer, changing the window type (fullscreen, fixed window) doesn't change anything.

I tried to run botlab and this issue affects it too.

Thank in advance

Best

EDIT

I have another sample that causes the same issue, not the same sample (the file 1Go):
https://vu.fr/CNGJ

memory reading under wine

Hi!

I try to use wine at Linux to multboxing alpha account and do memory reading, but I encountered an error while run the program:

Unhandled exception. System.Exception: Failed to ReadProcessMemory at 0x7A851000
: Only read 1716224 bytes.
   at read_memory_64_bit.EveOnline64.ReadCommittedMemoryRegionsFromProcessId(Int
32 processId, Boolean readContent) in C:\Users\NimaQ\Desktop\EVE\read-memory-64-
bit\Program.cs:line 460
   at read_memory_64_bit.EveOnline64.ReadCommittedMemoryRegionsWithContentFromPr
ocessId(Int32 processId) in C:\Users\NimaQ\Desktop\EVE\read-memory-64-bit\Progra
m.cs:line 380
   at read_memory_64_bit.Program.GetProcessSampleFileFromProcessId(Int32 process
Id) in C:\Users\NimaQ\Desktop\EVE\read-memory-64-bit\Program.cs:line 238
   at read_memory_64_bit.Program.<>c__DisplayClass2_3.<Main>g__GetMemoryReaderAn
dRootAddresses|6() in C:\Users\NimaQ\Desktop\EVE\read-memory-64-bit\Program.cs:l
ine 116
   at read_memory_64_bit.Program.<>c__DisplayClass2_2.<Main>b__4() in C:\Users\N
imaQ\Desktop\EVE\read-memory-64-bit\Program.cs:line 127
   at McMaster.Extensions.CommandLineUtils.CommandLineApplicationExtensions.<>c_
_DisplayClass9_0.<OnExecute>b__0()
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.<>c__DisplayCl
ass143_0.<OnExecute>b__0(CancellationToken _)
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.ExecuteAsync(S
tring[] args, CancellationToken cancellationToken)
   at McMaster.Extensions.CommandLineUtils.CommandLineApplication.Execute(String
[] args)
   at read_memory_64_bit.Program.Main(String[] args) in C:\Users\NimaQ\Desktop\E
VE\read-memory-64-bit\Program.cs:line 233
09e8:err:eventlog:ReportEventW L"Application: read-memory-64-bit.exe\nCoreCLR Version: 6.0.1122.52304\n.NET Version: 6.0.11\nDescription: The process was terminated due to an unhandled exception.\nException Info: System.Exception: Failed to ReadProcessMemory at 0x7A851000: Only read 1716224 bytes.\r\n   at read_memory_64"...
wine: Unhandled exception 0xe0434352 in thread 9e8 at address 000000007B012528 (thread 09e8), starting debugger...

Is there any way to make it work under Linux or wine?

Last Measurement

Well hi
I just downloaded Sanderling and wanted to start to use it. It isnt working because "last measurements is till "red x-ed". I put a screenshot here so it is easier to understand. Anyone got an Idea?
WhyMrSanderling

Error on parse when using mining script

[
{
"TimeDateTimeIntraDayCal": "22.20.00",
"TimeDateTimeIntraSecMilliString": "474",
"CaptionString": "System.Exception: compilation error: (67,1): error CS1529: A using clause must precede all other elements defined in the namespace except extern alias declarations\r\n at BotSharp.ScriptRun.ScriptRun.<>c__DisplayClass61_0.b__0()",
"LineIndex": 66,
"CharacterIndexInLine": 33,
"LineIndexInAvalonEdit": 67,
"CharacterIndexInLineInAvalonEdit": 34
}
]

WindowInventory->LeftTreeListEntry[ ]->Child does not populate unless I delay for 4.5 seconds

I'm working on a simple script to do all the click work of reprocessing items and comparing values. At the moment I have things working but with work arounds on certain issues.

As the title says, the Child objects in a List Entry does not populate until I have waited ~5 seconds after the LeftTreeListEntry has been clicked on (selected), in the Inventory Window.

Also the WindowInventory.SelectedRightInventory.ListView.Entry.Length is sometimes 0 or 3 when there is 9 to 10 items visible in the list, unless I delay long enough for the script engine to catch up.

I have included my script:

#r "System.Windows.Forms"
using System;
using System.Runtime.InteropServices;

[DllImport("user32.dll")]
	private static extern void mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
[DllImport("user32.dll")]
	private static extern bool SetCursorPos(int x, int y);
	
Sanderling.WindowToForeground();	
Host.Delay(500);

Sanderling.Parse.IMemoryMeasurement Measurement => Sanderling?.MemoryMeasurementParsed?.Value;
Sanderling.Parse.IWindowInventory WindowInventory => Measurement?.WindowInventory?.FirstOrDefault();
IWindow WindowReprocessing => Measurement?.WindowOther?.FirstOrDefault(w => w.Caption == "Reprocessing Plant");

Main();

void Main() {
	EnsureReprocessingWindowOpen();
	EnsureWindowInventoryOpen();

	int leftListLength = (WindowInventory?.LeftTreeListEntry?.Length ?? 0);
	if (leftListLength == 0)
		return;
	int clen = 0;
	long mx = 0, my = 0;

	Sanderling.Interface.MemoryStruct.ITreeViewEntry leftListEntry = null;
	//Sanderling.Interface.MemoryStruct.ITreeViewEntry child = null;
	Sanderling.Interface.MemoryStruct.IListEntry[] rightListEntry = null;
	leftListEntry = WindowInventory.LeftTreeListEntry.FirstOrDefault(t => t.Text == "Item hangar");
	if (leftListEntry.IsSelected == false) {
		mx = leftListEntry.Region.Min0 + 65;
		my = leftListEntry.Region.Min1 + 11;
		clen = leftListEntry.Child.Length;
		if (clen == 0) {
			LeftMouseClick((int)mx, (int)my, true);
		} else {
			LeftMouseClick((int)mx, (int)my);
		}
	} else {
		clen = leftListEntry.Child.Length;
		if (clen == 0) {
			mx = leftListEntry.Region.Min0 + 65;
			my = leftListEntry.Region.Min1 + 11;
			LeftMouseClick((int)mx, (int)my, true);
		}
	}
	Host.Delay(1000);
	leftListEntry = WindowInventory.LeftTreeListEntry.FirstOrDefault(t => t.Text == "Item hangar");
	Host.Log("Log: leftListEntry.Child.Length = " + leftListEntry.Child.Length);
	mx = leftListEntry.Region.Min0 + 67; // 43, 560, 110, 614
	my = leftListEntry.Region.Min1 + 54;
	LeftMouseClick((int)mx, (int)my);
	
	/*clen = leftListEntry.Child.Length;
	Host.Log(clen);
	for (i = 0; i < clen; i++) {
		child = leftListEntry.Child[i];
		lable = child.Text;
		if (lable == "02 Junk Box") {
			if (child.IsSelected == false) {
				Sanderling.MouseClickLeft(child);
				break;
			}
		}
	}*/
	Host.Delay(1500);
	rightListEntry = WindowInventory.SelectedRightInventory.ListView.Entry;
	Host.Log("Log: rightListEntry.Length = " + rightListEntry.Length);
	if (rightListEntry.Length == 0)
		return;
	var inputMaterials = WindowReprocessing.LabelText.FirstOrDefault(t => t.Text == "Drop items here to reprocess");
	Sanderling.MouseDragAndDrop(rightListEntry[0], inputMaterials);
	Host.Delay(500);
	Host.Log(WindowReprocessing.ButtonText.ToArray()[1].Text);
	//Sanderling.MouseClickLeft();
}

void EnsureWindowInventoryOpen()
{
	if (null != WindowInventory)
		return;

	Sanderling.MouseClickLeft(Measurement?.Neocom?.InventoryButton);
	Host.Delay(100);
}

void EnsureReprocessingWindowOpen() {
	if (WindowReprocessing != null)
		return;
	string tPath = ""; 
	var winStation = Measurement?.WindowStation?.FirstOrDefault();
	for (var i = 0; i < winStation.ServiceButton.Length; i++) {
		tPath = winStation.ServiceButton[i].TexturePath;
		if (tPath.Contains("Reprocess")) {
			Sanderling.MouseClickLeft(winStation.ServiceButton[i]);
			break;
		}
	}
}

void LeftMouseClick(int mx, int my, bool DoubleClick = false) {
	const int MOUSEEVENTF_LEFTDOWN = 0x02;
	const int MOUSEEVENTF_LEFTUP = 0x04;
	//const int MOUSEEVENTF_RIGHTDOWN = 0x08;
	//const int MOUSEEVENTF_RIGHTUP = 0x10;
	SetCursorPos(mx, my);
	Host.Delay(100);
	mouse_event(MOUSEEVENTF_LEFTDOWN, mx, my, 0, 0);
	mouse_event(MOUSEEVENTF_LEFTUP, mx, my, 0, 0);
	if (DoubleClick) {
		Host.Delay(50);
		mouse_event(MOUSEEVENTF_LEFTDOWN, mx, my, 0, 0);
		mouse_event(MOUSEEVENTF_LEFTUP, mx, my, 0, 0);
	}
}

Miner says "asterioid out of range"

Hello, i tryd the bot yesteda and it works very well, but today, i tryd it again and thebot will also do anything but than it comes to approching an teh miner detect that th asteroid is out of range. o the bot does approching, but again and again in an endles lopp, after osme time teh ship is ca 100m away from the asteroid, the bot still says out of disctance aand does.... nothing

Sanderling code not accessible to others.

I'd like to adopt Sanderling and to do that I need to experiment but ... I can't. Because:

  1. the 'Sanderling/lib' directory is full of binary libraries that are referenced in all the available source files. What is Bib3.dll? Where can I find information about those libs? How can I build those?

  2. ICanReadCamel but some of the code is written in CamelGerman and I can't read german. Scheisse :)

  3. Docs that could fill the gap are ... missing. Example: the MemoryMeasurement wiki page.

Is there a way to help you in making the project more accessible?

Regards

Concurrency exceptions

Hello

Roughly once per two days, I get these kind of exceptions:

{Type:"System.InvalidOperationException",Message:"Collection was modified after the enumerator was instantiated.",InnerException:null,StackTrace:" at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource) at System.Collections.Generic.Queue1.Enumerator.MoveNext()
at System.Linq.Enumerable.LastOrDefault[TSource](IEnumerable1 source) at Sanderling.Exe.App.get_FromMotionExecutionMemoryMeasurementTimeMin() at Sanderling.Exe.App.get_MeasurementRecentEnoughTime() at Sanderling.Exe.App.get_RequestedMeasurementTime() at Sanderling.Exe.App.InterfaceExchange() at Sanderling.Exe.App.Timer_Tick(Object sender, Object e) at System.Windows.Threading.DispatcherTimer.FireTick(Object unused) at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs) at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)",TargetSite:"ThrowInvalidOperationException"}

Br. Asdf

Broken info link & can't apply --session-length-limit

Not sure if this is the proper repo, because i couldn't find that link in bots & sanderling source codes.

I'm getting this message, whose link is broken:

Session finished: Reached maximum duration for offline session of 15 minutes. To run the app in a longer session, start an online session. For more information, continue at https://to.botengine.org/from-console-reached-maximum-duration-of-offline-session

Is this the right link? https://github.com/Viir/bots/blob/master/guide/botengine-online-session.md

I've tried applying --session-length-limit param to miner's bat file like this: botengine.exe run --session-length-limit=86400 https://github.com/Viir/bots/tree/a8b89533c2e6d06aef48bc44f20a71c987bb73ed/implement/applications/eve-online/eve-online-mining-bot
But i'm still getting that message :s

Sending a Directional Scan hotkey while game client window is in background

Last patch they added this security feature: client ignores directional scan hotkey sent to a game client that is not focused. Before this feature, I noticed such behavior while sending mouse clicks via
WindowPostMessage(WM_LBUTTONDOWN, MK_LBUTTON, (y_coord << 16) | x_coord)
Now this. Maybe you can find the way to send directional scan hotkey and\or mouse clicks to game client that is at background? that would be lovely.
As a temporary workaround, one can focus on game client, send a hotkey or click, and focus on previous window, but typing texts while window focus jumps is annoying.

is there any document for noob dev?

hey im a noob programmer,and I am trying to understand the project .
but im confused that I can't find the program entry to understanding how to implement the function
LOL yes im so noob :)
Then I found the program use lib called BotEngine and Botsharp,but i cant find any instructions.it seems to be used for InitializeComponent.
Now I'm stuck in the how to by button events to gradually understand how to implement the operation of the autobot because i cant click the button in designer.
I am profoundly grateful if you can answer my questions :)

Bot went docking without having the drones in drone bay

¡Thank you for making this awesome framework!

I'm using the included mining script and after mining, the bot went to dock station without having the drones inside drone bay.
This is my screen, is there anything wrongly set? (drones are in the bay because i manually went back to recover them)
http://i.imgur.com/g8GcUDL.jpg

I checked your code, and it has and runs the "DroneEnsureInBay()" method :s
Script config:

//	This script mines ore from asteroids.
//	before running this script, make sure to prepare as follows:
//	+enter bookmark for mining site and bookmark for station in the configuration section below.
//	+in the Overview create a preset which includes asteroids and rats and enter the name of that preset in the configuration section below at 'OverviewPreset'. The bot will make sure this preset is loaded when it needs to use the overview.
//	+set Overview to sort by distance with the nearest entry at the top.
//	+in the Inventory select the 'List' view.
//	+set the UI language to english.
//	+use a ship with an ore hold.
//	+put some light drones into your ships' drone bay. The bot will make use of them to attack rats when HP are too low (configurable) or it gets jammed.
//	+enable the info panel 'System info'. The bot will use the button in there to access bookmarks and asteroid belts.
//	+arrange windows to not occlude modules or info panels.
//	+in the ship UI, disable "Display Passive Modules" and disable "Display Empty Slots" and enable "Display Module Tooltips". The bot uses the module tooltips to automatically identify the properties of the modules.
//
//	for optional features (such as warp to safe on hostile in local) see the configuration section below.

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

//	begin of configuration section ->

//	The bot uses the bookmarks from the menu which is opened from the button in the 'System info' panel.

//	Bookmarks of places to mine. Add additional bookmarks separated by comma.
string[] SetMiningSiteBookmark = new[] {
	"Mining",
	};

//	Bookmark of location where ore should be unloaded.
string UnloadBookmark = "MiningDockStation";

//	Name of the container to unload to as shown in inventory.
string UnloadDestContainerName = "Item Hangar";

//	when this is set to true, the bot will try to unload when undocked.
bool UnloadInSpace = false;

//	Bookmark of place to retreat to to prevent ship loss.
string RetreatBookmark = UnloadBookmark;

//	The bot loads this preset to the active tab. 
string OverviewPreset = "MiningAndRats";

var ActivateHardener = true; // activate shield hardener.

//	bot will start fighting (and stop mining) when hitpoints are lower. 
var DefenseEnterHitpointThresholdPercent = 85;
var DefenseExitHitpointThresholdPercent = 90;

var EmergencyWarpOutHitpointPercent = 60;

var FightAllRats = true;	//	when this is set to true, the bot will attack rats independent of shield hp.

var EnterOffloadOreHoldFillPercent = 95;	//	percentage of ore hold fill level at which to enter the offload process.

var RetreatOnNeutralOrHostileInLocal = false;   // warp to RetreatBookmark when a neutral or hostile is visible in local.

//	<- end of configuration section


Func<object> BotStopActivity = () => null;

Func<object> NextActivity = MainStep;

LabelText[] of Ship hangar contains very wide IUIElementText

Hello

If I take Ship hangar view from WindowOther and look at its LabelText array, I can see IUIElementTexts that have a Max0 of 3000+. MouseClicking these result in bringing applications next to Eve Window to foreground.

Same issue is somehow worked around in WindowInventory.SelectedRightItem.ListView.Entry (which have a Max0 of 1000+). Entry.LabelText[] still contains very wide label.

Can something be done to these wide labels in inventory screens? I suspect they are not parsed incorrectly and are just very wide in EVE. How is the issue worked around in SelectedRightItem.ListView.Entry?

Thanks for the awesome framework!

Br. Asdfasdf

Proposal for optimizing the used RAM

After examining the Program.cs code, I would like to offer you a solution to the problem using 4-5 GB of memory during the Root address search stage. You just don't have to keep content in memory all the time. It is enough to iterate over the list of base addresses, and get content only for the considered range byte []. To be honest, I managed to do this, but alas, my c # level is much lower than yours and I'm just ashamed to upload this code, which I did, but I can assure you that the RAM consumption has decreased to 200-300 megabytes, the search time has increased by 15 20 seconds compared to the original code. If you want, I am ready to provide a sample of my code to you personally.

Compilation error: Ambiguous MainStep

After editing SetMiningSiteBookmark, UnloadBookmark & RetreatBookmark to test bookmarks in-game - then attempting to Play the script I get a error as follows:

"CaptionString": "System.Exception: compilation error: (64,29): error CS0121: The call is ambiguous between the following methods or properties: 'MainStep()' and 'MainStep()'\r\n at BotSharp.ScriptRun.ScriptRun.<>c__DisplayClass61_0.<Start>b__0()", "LineIndex": 63, "CharacterIndexInLine": 28, "LineIndexInAvalonEdit": 64, "CharacterIndexInLineInAvalonEdit": 29

32bit build?

is it possible to also build a 32bit build?
so ppl on linux can also use it.

this is due to the fact that dot.net does not work with wine 64bit. and probably never will.

Sanderling.WindowHandle returns zero

Sanderling.WindowHandle returns zero. It has to return current WindowHandle of attached EVE Client Window.
I guess that Sanderling.WindowPostMessage, Sanderling.WindowPostMessageKeyDown and Sanderling.WindowPostMessageKeyUp also send messages to hWnd=0.

Drones are not docked when retreating

When retreat mode is started, there is no attempt to dock in space drones, leaving them behind:
https://github.com/Arcitectus/Sanderling/blob/master/src/Sanderling/Sanderling.Exe/sample/script/Mine.ore.cs#L82

I understand that retreat usually means emergency exit, but i'm experiencing the execution of retreat mode while in sec space & having the drones in fight against simple npcs.
Maybe we could add another config var like bool returnDronesToBayOnRetreat = false. If true, it would fire DroneEnsureInBay(); before executing InitiateDockToOrWarpToBookmark(RetreatBookmark);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.