I’m just trying to get started making a script … I am trying to just measure some modules (hardners) and turn them on if they are off … I use the following script … execute it … no errors … but nothing happens …
using BotSharp.ToScript.Extension;
using MemoryStruct = Sanderling.Interface.MemoryStruct;
using Parse = Sanderling.Parse;
string OverviewPreset = null;
var ActivateHardener = true;
Host.Log("Prior to void Main");
void Main()
{
// measure modules
ModuleMeasureAllTooltip();
ActivateHardenerExecute();
}
Sanderling.Parse.IMemoryMeasurement Measurement =>
Sanderling?.MemoryMeasurementParsed?.Value;
Parse.IShipUi ShipUi => Measurement?.ShipUi;
bool ReadyForManeuverNot =>
Measurement?.ShipUi?.Indication?.LabelText?.Any(indicationLabel =>
(indicationLabel?.Text).RegexMatchSuccessIgnoreCase("warp|docking")) ?? false;
bool ReadyForManeuver => !ReadyForManeuverNot && !(Measurement?.IsDocked ?? true);
void ModuleMeasureAllTooltip()
{
Host.Log("measure tool tips of all modules.");
for (;;)
{
var NextModule = Sanderling.MemoryMeasurementAccu?.Value?.ShipUiModule?.FirstOrDefault(m => null == m?.TooltipLast);
if(null == NextModule)
break;
Host.Log("measure modules");
// take multiple measurements of module tool tip to reduce risk to keep bad read tooltip.
Sanderling.MouseMove(NextModule);
Sanderling.WaitForMeasurement();
Sanderling.MouseMove(NextModule);
Host.Log("Testing");
}
}
void ActivateHardenerExecute()
{
Host.Log("Activate Hardener Function");
var SubsetModuleHardener =
Sanderling.MemoryMeasurementAccu?.Value?.ShipUiModule
?.Where(module => module?.TooltipLast?.Value?.IsHardener ?? false);
var SubsetModuleToToggle =
SubsetModuleHardener
?.Where(module => !(module?.RampActive ?? false));
foreach (var Module in SubsetModuleToToggle.EmptyIfNull()) ModuleToggle(Module);
}
void ModuleToggle(Sanderling.Accumulation.IShipUiModule Module)
{
var ToggleKey = Module?.TooltipLast?.Value?.ToggleKey;
Host.Log("toggle module using " + (null == ToggleKey ? "mouse" : Module?.TooltipLast?.Value?.ToggleKeyTextLabel?.Text));
if(null == ToggleKey)
Sanderling.MouseClickLeft(Module);
else
Sanderling.KeyboardPressCombined(ToggleKey);
}