// AutoTT Mac // // Tradesman support macro // Tradesman joins group, gets into formation // repairs group members shields and hulls // Future: // if not grouped, warp to safe location (gate) // sit there waiting for a group // healing / hull patching / megacharging anyone around // accept group invites? // accept anything traded to it (once confirmed) // This line is necessary to select the proper // SET UP // key 4 = megacharge // key 5 = hull repair // key 6 = shield repair Constants GroupCount=1 // * number of members in group, if 1 we are alone LoopDelay=500 // IdleDelay=2000 // 2 seconds between loops if not otherwise busy Debug=2 // Debugging level -- increase for more debugging Loops=0 MegaChargeDelay=5500 GD=200 //GameDelay - Time to wait for game to respond to anything we do. MinShieldHealLvl = 95 // heal shields less than this percentage full MinHullHealLvl=100 // only heal hulls below this level ShieldChargeDelay=6000 // time for a shield megacharge power up ShieldRepairDelay=5500 // time to charge up a shield repair ShieldRepairDelay2=4000 // faster combat shield recharge. HullRepairDelay=5000 // time for a hull repair power up BuffIdleCycles=30 // number of idle cycles before starting buffing // Some load tuning parameters BarGradient = 20 // number ot tickets to check in pars. BarWidth = 1 // number of bar pixels to check // total pixel check load per bar tested is Gradient*Pixwidth // Some screen position constants EnergyBarY=685 // Y position of Energy Bar -- 684-689 EnergyBarMinX=253 // Left End of Energy Bar EnergyBarMaxX=436 // Right End of Energy Bar ShieldBarMinX=658 ShieldBarMaxX=769 HullBarMinX=585 HullBarMaxX=641 // Constants for group members GrpHullMinX =848 GrpHullMaxX =890 GrpShieldMinX =903 GrpShieldMaxX =996 GrpY = 480 GrpYDelta=41 // target... TargetShieldMinX=907 TargetShieldMaxX=994 TargetShieldY=540 // operating/scratch constants ShieldPct=0 HullPct=0 ShieldsAllRepaired=0 BuffdNum=1 IdleCycles=0 Idle=0 GrpCheckCountdown=1 X=0 Y=0 Y1=0 X1=0 I=0 D=0 N=0 CyclesSinceBuff=0 // working variables in the CheckBarLevel function Gradient=0 EnergyPCT=0 BarPCT=0 Xmin=0 Xmax=0 Ymin=0 Pixs=0 Color=0 PC=0 PM=0 // workingVariables involved in the check group shields levels LowShieldGNum=0 LowShield=105 end SetActiveWindow Earth & Beyond Delay 1000 // wait for window to be fully opened. SetConst Loops=1 //call HealNonGroup // used for powerlevelling //stop // used for powerlevelling while $Loops>0 SetConst Idle=1 // Haven't done anything this cycle inc $Loops // up loop counts call CheckGroup // Check if we are grouped, count size of group call CheckFormation // make sure we're in group formation (if grouped) call RepairShields // repair shields call RepairHulls // only do this if no shields need repairing still call BuffUp // buff up group members (shield charges) call CheckMyEnergy // not sure what to do but check energy level, mark non idle //call HealNonGroup // heal others not in our group if $idle=1 Delay $IdleDelay // weren't doing anything before, delay slightly longer inc $IdleCycles else SetConst IdleCycles=0 Delay $LoopDelay end end stop ////////////////////////////////////////////// //rotate through the group //buffing them up with megacharge //we assume megacharge is in slot 4 ////////////////////////////////////////////// Procedure BuffUp if $IdleCycles > $BuffIdleCycles // Buff up someone inc $BuffdNum if $BuffdNum > $GroupCount SetConst BuffdNum =1 end if $Debug>0 TimeStamp BuffUp -- grp member $BuffdNum / $GroupCount end // we have person targeted call TargetGroupMember $BuffdNum keys 4 Compute $D = $MegaChargeDelay - 5 * $GD Delay $D // Wait while the buff charges call TargetGroupMember $BuffdNum // Regarget member (incase target was lost i.e. warping in formation Compute $D = $GD * 5 Delay $D SetConst $Idle=0 end end //////////////////////////////////////////////////// // Accept group invites // if already in group, count number of group members // Procedure CheckGroup if $GroupCount=1 // Look for group invite button isObject GroupInviteAccept at 360,400 // Accept it! MousePos 360,400 Delay 300 LeftClick Delay 500 SetConst GrpCheckCountDown=0 end end if $GrpCheckCountdown > 0 dec $GrpCheckCountdown else SetConst GrpCheckCountDown=10 // reset the countdown timer SetConst I=$GroupCount call RecountGroup if $GroupCount = $i if $Debug>1 TimeStamp CheckGroup -- GroupCount is $Groupcount end else if $Debug>0 TimeStamp CheckGroup -- GroupCount changed from $I to $GroupCount end end end end //If grouped, try to get in formation with the leader procedure CheckFormation IsObject NotInFormation at 931,251 if $Debug >0 TimeStamp CheckFormation -- Not in formation end call GetInFormation else if $Debug > 0 TimeStamp CheckFormation -- properly in formation end end end // Look for group member with most heavily damaged shields // Target them, and activate shield recharge // Assumes recharge is in slot 6 procedure RepairShields // call CheckMyShield // called here just to test out the code. // call CheckMyEnergy // again just set here for testing. if $Idle=0 if $Debug>0 TimeStamp RepairShields -- Not Idle this cycle, skipping this step end exit end call FindLowestShields if $LowShield < $MinShieldHealLvl if $Debug > 0 TimeStamp RepairShields -- reparing member $LowShieldGNum, ($LowShield shield%). end call TargetGroupMember $LowShieldGNum // probalby should delay short of shield charge delay // and retarget lowest member at the last minute... // but that is pretty cpu intensive keys 6 Delay $ShieldRepairDelay SetConst Idle=0 else if $Debug > 1 TimeStamp RepairShields -- lowest Shield% is $LowShield on member $LowShieldGNum, below threshhold $MinShieldHealLvl end end end // If not busy healing shields // Look for someone with hulls that need repairing // we assume hull repair command in slot 5 procedure RepairHulls // call CheckMyHull // called here just to test out code. end procedure ReCountGroup SetConst GroupCount=1 IsObject GroupIcon at 990,291 SetConst GroupCount=6 exit end IsObject GroupIcon at 990,332 SetConst GroupCount=5 exit end IsObject GroupIcon at 990,373 SetConst GroupCount=4 exit end IsObject GroupIcon at 990,414 SetConst GroupCount=3 exit end IsObject GroupIcon at 990,455 SetConst GroupCount=2 exit end end // We are not in formation // Warp to group leader // and try to get in formation // until we can get back into formation procedure GetInFormation exit // This isn't really implemented yet. // Might not be grouped if $GroupCount = 1 TimeStamp GetInFormation -- we're not even grouped! exit end SetConst I=0 // not formed while $i=0 IsObject NotInFormation at 931,251 if $Debug TimeStamp GetInFormation -- trying to get back in formation end else // not in formation $i=1 end // not in formation end // while $i=0 end // Target a group member // given argument of group member number, // target that group member. // Member 1 is ourself procedure TargetGroupMember using Num if $Num = 1 keys ` delay $GD exit end if $Num = 2 keys {F2} Delay $GD exit end if $Num = 3 keys {F3} Delay $GD exit end if $Num = 4 keys {F4} Delay $GD exit end if $Num = 5 keys {F5} Delay $GD exit end if $Num = 6 keys {F6} Delay $GD exit end TimeStamp TargetGroupMember called with odd value $Num end ///////////////////////////////////////////////////////////// // Figure out how much energy we have // store in EnergyPct a percentage of our energy level // Procedure CheckMyEnergy SetConst XMin= $EnergyBarMinX SetConst XMax= $EnergyBarMaxX Setconst Ymin= $EnergyBarY SetConst Gradient=$BarGradient // steps to check. This is the precision of this function SetConst Pixs=$BarWidth // pixels per bar step to check SetConst Color = 2 // 1=red,2=green,3=blue,4=white,5=grey,6=black Call CheckBarLevel SetConst EnergyPct = $BarPCT if $Debug > 1 TimeStamp CheckMyEnergy -- $EnergyPct percent. end end Procedure CheckMyShield SetConst XMin= $ShieldBarMinX SetConst XMax= $ShieldBarMaxX Setconst YMin= $EnergyBarY SetConst Gradient=$BarGradient // steps to check. This is the precision of this function SetConst Pixs=$BarWidth // pixels per bar step to check SetConst Color = 3 // 1=red,2=green,3=blue,4=white,5=grey,6=black Call CheckBarLevel SetConst ShieldPct = $BarPCT if $Debug > 1 TimeStamp CheckMyShield -- $ShieldPct percent. end end Procedure CheckMyHull SetConst XMin= $HullBarMinX SetConst XMax= $HullBarMaxX Setconst YMin= $EnergyBarY SetConst Gradient=$BarGradient // steps to check. This is the precision of this function SetConst Pixs=$BarWidth // pixels per bar step to check SetConst Color = 1 // 1=red,2=green,3=blue,4=white,5=grey,6=black Call CheckBarLevel SetConst HullPct = $BarPCT if $Debug > 1 TimeStamp CheckMyHull -- $HullPct percent. end end // Given some initial variable setup, // return percent filled level of bar. // XMin= X coord of left edge of bar // XMax= X coord of right edge of bar // YMin= Y coord of top of bar (assumes horizantal bar!) // Gradient=20 // steps to check. This is the precision of this function // Pixs=3 pixels per bar step to check // Color = 1 Color to look for: 1=red,2=green,3=blue,4=white,5=grey,6=black // // Total pixel checks done in this function is // Gradient * Pixs // Because of 'sparkles' we may get spurious positive checks in the bar. Procedure CheckBarLevel SeTConst X1=$Xmin SetConst Y1=$Ymin Compute D=($Xmax - $Xmin) / $Gradient SetConst PC=0 // pixels matched counts here SetConst PM=0 // all pixels possibly matched counts here While $X1 <= $Xmax SetConst I=0 Compute X = Int( $X1) while $I < $Pixs Compute $Y = $Y1 + $I if $Color=1 IsRed $X,$Y Inc $PC end end if $Color=2 IsGreen $X,$Y Inc $PC end end if $Color=3 IsBlue $X,$Y Inc $PC end end // Colors 4-6 not yet implemented! Just follow same pattern Inc $I Inc $PM end Compute $X1= $X1 + $D // step forward end // while X <= Xmax Compute BarPct = 100 * $pc / $pm if $Debug > 2 TimeStamp CheckBarLevel ($Xmin - $Xmax, $Ymin) is $BarPct end end // Find group member with lowest shields // Store grp member number in // LowShld = percentage shield level of lowest member // LowShldGNum = group number if lowest member (1=self) procedure FindLowestShields SetConst LowShield=101 SetConst LowShieldGNum=0 SetConst N=1 while $N <= $GroupCount if $LowShieldGNum = 1 // Checking Ourself call CheckMyShield else IsObject EmptyHullBar at 844,479 Continue // Member is DEAD or OUT OF SECTOR // we cannot heal them. end // Ideally should check range to this member, and skip if out of range. // That is difficult to implement though. // Set up to get bar for a group member SetConst XMin= $GrpShieldMinX SetConst XMax= $GrpShieldMaxX Compute YMin= $GrpY -(( $N - 1 ) * $GrpYDelta) SetConst Gradient=$BarGradient // steps to check. This is the precision of this function SetConst Pixs=$BarWidth // pixels per bar step to check SetConst Color = 3 // 1=red,2=green,3=blue,4=white,5=grey,6=black Call CheckBarLevel end if $BarPct < $LowShield // is it the new lowest? SetConst $LowShield = $BarPct // Store it as the new lowest SetConst $LowShieldGnum = $N // remember the number end inc $N end if $Debug>1 TimeStamp FindLowestShields -- member # $LowShieldGnum ($LowShield percent) end end // Not busy doing anything in particular, lets heal anyone around procedure HealNonGroup (* if $Idle = 0 // we're busy exit end if $GroupCount > 1 exit // this won't work if we're grouped. end *) if $Debug > 1 TimeStamp HealNonGroup start end SetConst N=0 keys ` Delay $GD while $N < 100000 keys d delay 1500 // check shield level of targeted player SetConst XMin= $TargetShieldMinX SetConst XMax= $TargetShieldMaxX Compute YMin= $TargetShieldY SetConst Gradient=$BarGradient // steps to check. This is the precision of this function SetConst Pixs=$BarWidth // pixels per bar step to check SetConst Color = 3 // 1=red,2=green,3=blue,4=white,5=grey,6=black Call CheckBarLevel if $BarPCT < 90 keys 2 Delay $ShieldRepairDelay2 if $Debug > 0 TimeStamp HealNonGroup Healing Non-grouped player at $BarPCT percent. end else if $Debug > 0 TimeStamp HealNonGroup -- Target Shield%: $BarPCT end end inc $N end end // // Empty HullBar at 844,479 -- first group member // this is empty due to player being in another sector. // If they were just dead there'd be sparkles in the hull bar. Object EmptyHullBar // at 844,479 166=0,0|200=0,2|175=0,4|101=0,6|53=0,8 201=2,0|202=2,2|178=2,4|96=2,6|57=2,8 56=4,4 63=6,4 62=8,4 60=10,4 61=12,4 53=14,4 59=16,4 58=18,4 61=20,4 End // Redone GroupIcons -- make sure it gets back into ObjLib // 18x18 box entirely enclosing the 'Ask this group member to acquire your target' icon // it is at 990,455 for group leader (or first group member ifyou are leader) // // 990,455 for first // 990,414 for second ( -41) // 990,373 for third ( -41) // 990,332 for fourth ( -41) // 990,291 for fifth ( -41) Object GroupIcon // at 990,455 58=0,0|55=0,2|62=0,4|66=0,6|71=0,8|74=0,10|77=0,12|79=0,14|80=0,16|81=0,18 115=2,2|114=2,4|114=2,6|250=2,8|104=2,10|114=2,12|114=2,14|104=2,16|79=2,18 106=4,2|88=4,4|107=4,6|201=4,8|105=4,10|92=4,12|83=4,14|101=4,16|78=4,18 109=6,2|100=6,4|120=6,6|144=6,8|66=6,10|210=6,12|82=6,14|101=6,16|77=6,18 183=8,2|192=8,4|82=8,6|84=8,8|74=8,10|90=8,12|82=8,14|66=8,16|76=8,18 217=10,2|181=10,4|74=10,6|74=10,8|107=10,10|126=10,12|104=10,14|142=10,16|75=10,18 109=12,2|100=12,4|106=12,6|142=12,8|66=12,10|195=12,12|73=12,14|101=12,16|74=12,18 107=14,2|85=14,4|110=14,6|208=14,8|124=14,10|86=14,12|81=14,14|106=14,16|74=14,18 120=16,2|120=16,4|115=16,6|249=16,8|91=16,10|120=16,12|120=16,14|105=16,16|75=16,18 61=18,0|52=18,10|76=18,16|76=18,18 End // Include EnBObjectLib.mac // Includeparh is hosed or something, // This line is necessary to select the proper window // // This is not a standalone macro // it is a bunch of object definitions and screeen positions to be used in common // with other macros // stop Object MiningFar 26=0,0|41=0,8|27=0,16 57=4,0|32=4,8|32=4,16 62=8,0|62=8,8|32=8,16 End Object MiningNear 75=0,0|117=0,8|77=0,16 162=4,0|91=4,8|91=4,16 179=8,0|175=8,8|93=8,16 End (* Object EmptyOre 89=0,0|94=0,8|88=0,16 95=8,0|105=8,8|93=8,16 89=16,0|94=16,8|88=16,16 End // Another try at EmptyOre Object EmptyOre // at 902,372 80=0,0|84=0,2|84=0,4|85=0,6|86=0,8|86=0,10 83=2,0|86=2,2|87=2,4|89=2,6|89=2,8|90=2,10 85=4,0|88=4,2|91=4,4|93=4,6|94=4,8|94=4,10 86=6,0|89=6,2|92=6,4|95=6,6|96=6,8|99=6,10 87=8,0|90=8,2|95=8,4|99=8,6|101=8,8|103=8,10 88=10,0|93=10,2|97=10,4|101=10,6|103=10,8|104=10,10 End Object EmptyOre2 // at 901,373 81=0,0|83=0,2|84=0,4|85=0,6|85=0,8|85=0,10 83=2,0|85=2,2|86=2,4|87=2,6|88=2,8|88=2,10 86=4,0|88=4,2|90=4,4|91=4,6|92=4,8|92=4,10 87=6,0|90=6,2|93=6,4|95=6,6|96=6,8|97=6,10 88=8,0|92=8,2|95=8,4|98=8,6|100=8,8|101=8,10 90=10,0|94=10,2|99=10,4|102=10,6|102=10,8|103=10,10 End *) // empty 10x10 blue square for an empty object Object EmptyOre // at 906,376 91=0,0|93=0,2|94=0,4|94=0,6|94=0,8|94=0,10 92=2,0|95=2,2|96=2,4|99=2,6|98=2,8|98=2,10 95=4,0|99=4,2|101=4,4|103=4,6|102=4,8|101=4,10 97=6,0|101=6,2|103=6,4|104=6,6|103=6,8|103=6,10 97=8,0|101=8,2|103=8,4|105=8,6|104=8,8|103=8,10 97=10,0|101=10,2|104=10,4|104=10,6|103=10,8|103=10,10 End // GasCloud is actually looking for 'Gas' // text in target window, text 30x11 Object GasCloud // at 834,553 253=2,2|253=2,8 253=4,6|253=4,10 254=6,10 253=8,6|253=8,8 253=12,8 254=14,4|254=14,10 254=16,4|254=16,10 252=18,10 253=22,4|253=22,10 253=24,8 // black borders 0=6,0|0=7,0|0=0,5|0=0,4 End (* // Object GasCloud // at 834,552 253=2,2|253=2,8 253=4,6|253=4,10 253=6,10 253=8,6|253=8,8 253=12,8 253=14,4|253=14,10 253=16,4|253=16,10 253=18,10 End *) Object RuinedHulk 253=4,6 253=6,2|253=6,4 253=12,10 253=14,10 253=16,4|253=16,6|253=16,8 End Object NoDamage 106=0,2 153=2,0 153=4,0|183=4,4 155=6,0|103=6,2 158=8,0 162=10,0|105=10,2|191=10,4 End // This object from Montu's Mining Macro // Tests for ??? Object miningwindow // Test at coords 922, 194 76=0,0|81=2,0|85=4,0|89=6,0|93=8,0|95=10,0|96=12,0|98=14,0|99=16,0|102=18,0|103=20,0|104=22,0|106=24,0|107=26,0|107=28,0|109=30,0|110=32,0|112=34,0|115=36,0|115=38,0|116=40,0|115=42,0|115=44,0|114=46,0|112=48,0|111=50,0|110=52,0|109=54,0|108=56,0|107=58,0|105=60,0|104=62,0|104=64,0|103=66,0|101=68,0|100=70,0|98=72,0|96=74,0|96=76,0|95=78,0|96=80,0|96=82,0|95=84,0| 75=0,2|79=2,2|85=4,2|89=6,2|92=8,2|95=10,2|97=12,2|99=14,2|100=16,2|101=18,2|102=20,2|103=22,2|104=24,2|106=26,2|106=28,2|108=30,2|108=32,2|110=34,2|111=36,2|111=38,2|112=40,2|112=42,2|111=44,2|110=46,2|109=48,2|108=50,2|107=52,2|106=54,2|105=56,2|104=58,2|103=60,2|102=62,2|102=64,2|101=66,2|99=68,2|99=70,2|98=72,2|98=74,2|98=76,2|97=78,2|97=80,2|98=82,2|96=84,2| 1=0,4|1=2,4|1=4,4|1=6,4|1=8,4|85=10,4|88=12,4|90=14,4|91=16,4|93=18,4|94=20,4|95=22,4|96=24,4|98=26,4|99=28,4|100=30,4|99=32,4|101=34,4|100=36,4|100=38,4|101=40,4|102=42,4|102=44,4|102=46,4|1=48,4|97=50,4|98=52,4|98=54,4|97=56,4|96=58,4|94=60,4|1=62,4|1=64,4|92=66,4|91=68,4|89=70,4|89=72,4|89=74,4|88=76,4|89=78,4|91=80,4|94=82,4|95=84,4| 250=0,6|3=2,6|3=4,6|1=10,6|1=12,6|1=14,6|75=16,6|2=18,6|1=20,6|79=22,6|1=24,6|1=26,6|84=28,6|85=30,6|86=32,6|87=34,6|3=36,6|1=38,6|3=40,6|1=42,6|3=44,6|1=46,6|3=48,6|84=50,6|1=52,6|1=54,6|83=56,6|1=58,6|1=60,6|3=64,6|2=66,6|1=68,6|1=70,6|71=72,6|1=74,6|71=76,6|1=78,6|78=80,6|1=82,6|88=84,6| 72=2,8|67=4,8|250=10,8|3=12,8|3=14,8|250=18,8|3=20,8|3=24,8|3=26,8|3=28,8|90=30,8|93=32,8|95=34,8|1=36,8|250=38,8|3=42,8|246=44,8|254=48,8|8=52,8|3=54,8|246=58,8|3=60,8|3=64,8|246=66,8|3=68,8|3=70,8|3=74,8|3=76,8|250=78,8|8=82,8|95=84,8| 64=2,10|61=4,10|254=10,10|66=12,10|3=18,10|250=24,10|250=26,10|254=28,10|82=30,10|83=32,10|84=34,10|85=36,10|250=38,10|250=40,10|250=42,10|250=44,10|83=46,10|250=48,10|3=52,10|1=54,10|3=56,10|254=58,10|76=60,10|3=64,10|250=66,10|71=68,10|1=70,10|1=74,10|3=76,10|3=78,10|3=80,10|3=82,10|91=84,10| 3=0,12|250=2,12|250=4,12|3=10,12|250=12,12|250=14,12|250=18,12|3=20,12|250=24,12|250=26,12|75=30,12|76=32,12|75=34,12|76=36,12|1=38,12|3=40,12|77=46,12|254=48,12|254=60,12|250=62,12|3=66,12|250=68,12|250=70,12|56=74,12|250=76,12|254=80,12|66=82,12| 64=0,14|62=2,14|59=4,14|59=6,14|59=8,14|62=10,14|63=12,14|63=14,14|68=16,14|68=18,14|70=20,14|74=22,14|74=24,14|76=26,14|78=28,14|81=30,14|82=32,14|84=34,14|83=36,14|82=38,14|82=40,14|82=42,14|82=44,14|83=46,14|81=48,14|81=50,14|80=52,14|78=54,14|77=56,14|76=58,14|74=60,14|73=62,14|72=64,14|69=66,14|68=68,14|65=70,14|64=72,14|63=74,14|59=76,14|59=78,14|61=80,14|66=82,14|69=84,14| End // This object looks for the text "Aster" // idealy in target window 833,552 // beware, There are nav points called // 'Asteroid' too. A follow up check for // grey 'Tech Level' should be done too. // OBJ Mapper does not see black!?!? // hafta add that in by hand... // OR a combined object look for the asteroid // and the Tech Level Object AsteroidText //White text "Asteroid" at 833,552 255=4,8 0=5,2|0=7,2|0=5,3|0=7,3 // black anti alias around the 'A' 255=6,2|255=6,8 255=8,6|255=8,8 255=10,10 255=14,8 255=16,10 255=20,4|255=20,6|255=20,8|255=20,10 255=26,6|255=26,8|255=26,10 255=28,8 255=30,6|255=30,8 End // Look for the text Hydro // in the target window. Object HydroRoid // at 833,552 254=2,2|254=2,4|254=2,6|254=2,8|254=2,10 254=4,6 254=6,6 253=8,2|253=8,4|254=8,6|254=8,8|254=8,10 254=12,6|254=12,14 254=14,10 254=16,6 254=20,8 253=26,2|253=26,4|254=26,6|254=26,8|254=26,10 253=30,6 254=34,8 End // Look for text Crystal // 35x15 at 833,552 Object CrystalRoid // at 833,552 254=2,6|253=2,8 254=4,10 254=6,2 253=8,2 50=10,0 254=12,6 254=18,8|253=18,12 253=20,8 254=26,8 254=28,10 253=32,4|254=32,6|254=32,8|254=32,10 End //HydroRoid // The letters "Tech" in mining window at // 862,719 -- 60x11. // Note Tech is anti-aliased Object TechText // at 862,719 177=4,10 177=8,6|177=8,8 177=10,4|177=10,10 177=12,4|177=12,10 177=14,6 177=20,4|177=20,10 177=24,2|177=24,4|177=24,6|177=24,8|177=24,10 177=26,4 177=28,4 177=40,10 177=42,10 177=46,6|177=46,8 177=48,4|177=48,10 177=50,4|177=50,10 177=52,6 177=56,6 177=58,10 177=60,6 // Look for anti-alias black borders 0=0,0|0=0,1|0=1,0|0=2,0 End ////////////////////////////////////////////// // This object looks for the text cues // that indicate an asteroid // Test at 833,552 // It looks for both white text 'Aster' // as well as grayish text 'Tech' down below // (the roid's tech level) // Object AsteroidTech //test at 833,552 255=4,8 0=5,2|0=7,2|0=5,3|0=7,3 // black anti alias around the 'A' 255=6,2|255=6,8 255=8,6|255=8,8 255=10,10 255=14,8 255=16,10 255=20,4|255=20,6|255=20,8|255=20,10 255=26,6|255=26,8|255=26,10 255=28,8 255=30,6|255=30,8 // "Tech object pasted in and hand edited // adjust 833,852->862,719 remap // which is +29,+57 204=33,67 204=37,65|204=37,65 204=39,61|204=39,67 204=41,61|204=41,67 204=43,63 204=69,61|51=49,65|204=49,67 204=51,59|204=51,61|204=51,63|204=51,65|204=51,67 204=55,61|51=55,67|204=57,61 // Look for anti-alias black borders 0=29,57|0=29,58|0=30,57|0=31,57|0=48,67|0=48,68 End //the NotFormed Icon in the formations section of //group windows Object NotInFormation // test at 931,251 102=0,0|102=0,2|102=0,4|102=0,6|102=0,8|102=0,10|102=0,12|204=0,14|204=0,16|153=0,18|102=0,20|102=0,22|102=0,24|102=0,26|102=0,28 102=2,0|102=2,2|102=2,4|102=2,6|102=2,8|102=2,10|153=2,12|204=2,14|204=2,16|153=2,18|102=2,20|102=2,22|153=2,24|102=2,26|102=2,28 102=4,0|102=4,2|102=4,4|102=4,6|102=4,8|102=4,10|102=4,12|153=4,14|204=4,16|204=4,18|153=4,20|255=4,22|204=4,24|102=4,26|102=4,28 102=6,0|102=6,2|102=6,4|153=6,6|102=6,8|51=6,10|51=6,12|102=6,14|204=6,16|255=6,18|255=6,20|255=6,22|51=6,24|51=6,26|102=6,28 102=8,0|102=8,2|204=8,4|204=8,6|102=8,8|102=8,10|204=8,12|204=8,14|204=8,16|153=8,18|255=8,20|204=8,22|51=8,24|51=8,26|102=8,28 102=10,0|102=10,2|153=10,4|153=10,6|204=10,8|255=10,10|204=10,12|153=10,14|153=10,16|153=10,18|255=10,20|153=10,22|102=10,24|102=10,26|102=10,28 102=12,0|102=12,2|204=12,4|204=12,6|153=12,8|153=12,10|153=12,12|153=12,14|153=12,16|204=12,18|255=12,20|51=12,22|102=12,24|102=12,26|102=12,28 102=14,0|102=14,2|153=14,4|204=14,6|204=14,8|204=14,10|153=14,12|153=14,14|153=14,16|204=14,18|255=14,20|102=14,22|102=14,24|102=14,26|102=14,28 102=16,0|102=16,2|102=16,4|102=16,6|153=16,8|255=16,10|255=16,12|153=16,14|153=16,16|153=16,18|255=16,20|153=16,22|51=16,24|102=16,26|102=16,28 102=18,0|102=18,2|102=18,4|102=18,6|102=18,8|102=18,10|153=18,12|204=18,14|204=18,16|204=18,18|255=18,20|204=18,22|51=18,24|102=18,26|102=18,28 102=20,0|102=20,2|102=20,4|102=20,6|102=20,8|102=20,10|102=20,12|102=20,14|153=20,16|204=20,18|255=20,20|255=20,22|153=20,24|51=20,26|102=20,28 102=22,0|102=22,2|102=22,4|102=22,6|102=22,8|102=22,10|153=22,12|153=22,14|102=22,16|102=22,18|102=22,20|204=22,22|204=22,24|51=22,26|102=22,28 102=24,0|102=24,2|102=24,4|102=24,6|102=24,8|204=24,10|204=24,12|153=24,14|102=24,16|102=24,18|102=24,20|102=24,22|153=24,24|102=24,26|102=24,28 End // Look for text saying cargo hold is full // y pos of 85 assumes it is coming at 4th line from top of // chat window Object HoldIsFull // at 335,85 (70x9) 251=2,4 250=8,4|251=8,6 251=10,8 251=12,8 251=16,2|251=16,4|251=16,6|251=16,8 250=20,8 251=22,8 251=24,2|251=24,4|251=24,6 250=36,4|250=36,8 250=52,8 251=54,8 251=58,2|251=58,4|251=58,6|251=58,8 250=64,8 // Look for anti-alias black borders around the h 0=0,0|0=1,0|0=0,1|0=0,2|0=0,3|0=2,1 End // // Look for the CloseBox on the mining window // Object MiningWindowCloseBox // at 983,203 66=0,2|81=0,4|101=0,6|117=0,8|128=0,10|141=0,12|150=0,14|180=0,16|153=0,18|142=0,20|126=0,22 51=2,2|71=2,6|76=2,8|78=2,10|81=2,12|82=2,14|88=2,16|83=2,18|81=2,20|161=2,22 74=4,2|70=4,4|64=4,6|64=4,8|64=4,10|65=4,12|68=4,14|134=4,16|192=4,18|71=4,20|164=4,22 150=6,4|83=6,6|57=6,12|108=6,14|215=6,16|178=6,18|70=6,20|183=6,22 66=8,4|155=8,6|87=8,8|95=8,12|161=8,14|139=8,16|77=8,18|66=8,20|183=8,22 79=10,2|85=10,6|181=10,8|128=10,10|227=10,12|114=10,14|61=10,16|63=10,18|66=10,20|183=10,22 66=12,2|66=12,4|125=12,8|231=12,10|115=12,12|66=12,14|66=12,16|72=12,18|74=12,20|172=12,22 66=14,2|70=14,6|161=14,8|180=14,10|173=14,12|97=14,14|66=14,16|72=14,18|74=14,20|160=14,22 171=16,6|101=16,8|50=16,10|105=16,12|164=16,14|101=16,16|72=16,18|74=16,20|139=16,22 56=18,2|205=18,4|108=18,6|55=18,10|72=18,14|166=18,16|68=18,18|67=18,20|108=18,22 132=20,2|75=20,4|52=20,8|100=20,10|75=20,12|85=20,16|152=20,18|68=20,22 52=22,0|68=22,2|74=22,8|74=22,10|56=22,12|64=22,18|53=22,20|52=22,22 End // // Smaller 10x10 box should have less trouble recognizing it // // This object gets heavily used and so // need to be careful about how to recognize it. Object LootWindow // at 990,208 160=0,0|67=0,2|52=0,6|94=0,8|227=0,10 87=2,0|160=2,2|90=2,4|94=2,6|162=2,8|114=2,10 85=4,2|221=4,4|171=4,6|127=4,8|67=4,10 67=6,2|231=6,4|205=6,6|103=6,8|66=6,10 58=8,0|209=8,2|94=8,4|121=8,6|173=8,8|83=8,10 162=10,0|100=10,2|103=10,8|167=10,10 End Object MiningCloseBox // at 985,203 74=2,2|70=2,4|64=2,6|64=2,8|64=2,10|65=2,12|68=2,14|134=2,16|192=2,18|71=2,20 150=4,4|83=4,6|57=4,12|108=4,14|215=4,16|178=4,18|70=4,20 66=6,4|155=6,6|87=6,8|95=6,12|161=6,14|139=6,16|77=6,18|66=6,20 79=8,2|85=8,6|181=8,8|128=8,10|227=8,12|114=8,14|61=8,16|63=8,18|66=8,20 66=10,2|66=10,4|125=10,8|231=10,10|115=10,12|66=10,14|66=10,16|72=10,18|74=10,20 66=12,2|70=12,6|161=12,8|180=12,10|173=12,12|97=12,14|66=12,16|72=12,18|74=12,20 171=14,6|101=14,8|50=14,10|105=14,12|164=14,14|101=14,16|72=14,18|74=14,20 56=16,2|205=16,4|108=16,6|55=16,10|72=16,14|166=16,16|68=16,18|67=16,20 132=18,2|75=18,4|52=18,8|100=18,10|75=18,12|85=18,16|152=18,18 52=20,0|68=20,2|74=20,8|74=20,10|56=20,12|64=20,18|53=20,20 End // // Mostly White pickaxe icon indicating we are close enough to mine away. // Object MiningNear2 // at 980,505 72=0,0|79=0,2|83=0,4|61=0,6|91=0,8|131=0,10|122=0,12|63=0,14 54=2,0|59=2,2|72=2,4|195=2,6|150=2,8|64=2,10|90=2,12|91=2,14 70=4,0|151=4,2|210=4,4|167=4,6|67=4,8|91=4,10|92=4,12|93=4,14 64=6,0|177=6,2|223=6,4|128=6,6|65=6,8|83=6,10|89=6,12|92=6,14 73=8,0|199=8,2|77=8,4|67=8,6|185=8,8|94=8,10|81=8,12|91=8,14 74=10,0|110=10,2|83=10,4|89=10,6|65=10,8|143=10,10|156=10,12|70=10,14 69=12,0|74=12,2|84=12,4|90=12,6|89=12,8|73=12,10|77=12,12|161=12,14 68=14,0|71=14,2|84=14,4|90=14,6|90=14,8|90=14,10|89=14,12|75=14,14 End // Black/greyed out pickaxe icon, indicating we need to get // closer to the resource. Object MiningFar2 // at 980,505 68=2,6|53=2,8 52=4,2|73=4,4|58=4,6 62=6,2|78=6,4 69=8,2|65=8,8 50=10,10|55=10,12 56=12,14 End // Look for the message that Prospect was Activated. // this is at 4th line of text in chat window. Object ProspectActivated // at 256,85 254=8,4|254=8,6|254=8,8 253=14,4|254=14,6 254=16,8 254=18,8 253=22,4|253=22,8 254=28,8 254=30,8 253=32,4|254=32,6 254=36,6|253=36,8 254=38,6|254=38,8 255=40,6 253=44,8 254=46,8 253=50,2|254=50,4|254=50,6|254=50,8 253=60,6 254=62,8 254=64,8 253=66,8 253=70,8 254=72,8 253=74,4|254=74,6 254=80,2|254=80,4|254=80,6|254=80,8 End Object HoldIsFull // at 335,85 251=2,4 250=8,4|251=8,6 251=10,8 251=12,8 251=16,2|251=16,4|251=16,6|251=16,8 250=20,8 251=22,8 251=24,2|251=24,4|251=24,6 250=36,4|250=36,8 50=50,0 End // Look for the text 'You' in red // 4th line of text window // can be from 'your cargo hld is full' // or from 'you dont have enouhg energy' Object YouText // at 257,86 250=0,0 250=2,2 250=4,2 250=6,0 250=10,2 251=12,2 251=14,4|251=14,6 End // Guess digits for roid tech levels // single character, 8x11 at 947,719 Object RoidTL6 // at 947,719 177=2,4 177=4,2|177=4,4|177=4,10 177=1,7|177=5,4|177=7,7 // anti-alias // 0=0,6|0=2,7|0=0,5 End // Digit 7 in target window // 8x11 pixels at 947,719 Object RoidTL7 // at 947,719 178=4,6 178=6,2 0=0,0|0=3,0|0=4,0|0=2,4 End //Digit 8 in tech level field of roid target window Object RoidTL8 // at 947,719 177=2,2|177=2,4|178=2,6 177=4,10 177=6,2|178=6,4|178=6,6 0=0,7|0=0,6|0=0,5|0=4,0|0=5,0 // black borders End // Digit9 // 8x11 Object RoidTL9 // at 947,719 177=2,2|177=2,6 177=4,10 177=6,2|177=6,6 0=0,5|0=0,3|0=0,4|0=4,0|0=5,0|0=2,4 // black borders End // Digit 5, 8x11 at Object RoidTL5 // at 947,719 178=2,2|177=2,4|177=2,10 177=4,4|177=4,10 End // Digit 3, 8x11 at 947,719 Object RoidTL3 // at 947,719 177=2,2 52=4,8|177=4,10 177=6,2|178=6,4 66=8,2|51=8,10 End // Digit 4 Object RoidTL4 // at 947,719 177=2,6|178=2,8 177=4,4|177=4,8 178=6,2|178=6,4|178=6,6|178=6,8|178=6,10 177=8,8 End // Digit 1 // largely done by hand since object mapper thinks 2 // pixels here is enough. insanity. Object RoidTL1 // at 947,719 177=2,4|177=5,10|177=5,9|177=5,8|177=5,7 177=5,6|177=5,5|177=5,4|177=5,3|177=5,1|177=5,1 177=4,3|177=3,3 177=4,2 0=5,0|0=6,1|0=6,2|0=6,3 // some black border pixels End // Digit 2 at 947,719, 8x11 Object RoidTL2 177=2,2|177=2,10 177=4,8|177=4,10 177=6,2|177=6,6|177=6,10 End // Look for the triple zero in the speed indicator Object SpeedZero // at 465,683 254=2,2|254=2,8 254=4,8 253=6,2|254=6,4|254=6,6 253=10,2|253=10,8 254=12,8 254=14,2|254=14,4|254=14,6 253=18,2|253=18,8 254=20,8 254=22,2|254=22,4|254=22,6 End // Look for text "Dist:" at 818,735 // Text size is 27x11 // white with black borders... Object DistText // at 818,735 254=2,10 254=4,10 254=6,2 253=8,4|253=8,6 253=14,6|254=14,10 253=16,4|254=16,10 254=20,4 254=22,4|254=22,10 254=26,4|253=26,10 End // Look for text 'tractor' at 292,86 (30x8 pixels) Object TractorStillInUse // at 292,86 252=2,2|251=2,4|251=2,6 250=6,2|251=6,4|251=6,6 250=8,2 251=12,6 251=14,2|251=14,4 251=16,2|251=16,4 250=22,2 251=24,2 252=28,2|251=28,4|251=28,6 End // // 20x20 icon for follow, from far away // Object FollowFar // at 979,506 87=2,2|56=2,4|72=2,6 72=4,2 54=6,2 60=8,6|82=8,14 58=14,4|75=14,14 87=16,14|68=16,16 53=18,12 End // // Look for follow icon (target is close) // 20x20 Object Follow Near // at 979,506 63=0,0|119=0,2|69=0,4|76=0,6|83=0,8|85=0,10|84=0,12|85=0,14|102=0,16|123=0,18|81=0,20 68=2,0|250=2,2|160=2,4|207=2,6|70=2,8|91=2,10|91=2,12|87=2,14|84=2,16|99=2,18|117=2,20 82=4,0|204=4,2|104=4,4|106=4,6|91=4,8|93=4,10|93=4,12|92=4,14|89=4,16|87=4,18|108=4,20 87=6,0|154=6,2|92=6,4|80=6,6|88=6,8|89=6,10|85=6,12|81=6,14|91=6,16|87=6,18|95=6,20 89=8,0|80=8,2|83=8,4|171=8,6|86=8,8|81=8,10|84=8,12|235=8,14|84=8,16|88=8,18|88=8,20 89=10,0|89=10,2|68=10,4|85=10,6|81=10,8|92=10,10|89=10,12|85=10,14|83=10,16|89=10,18|86=10,20 89=12,0|80=12,2|85=12,4|90=12,6|88=12,8|78=12,10|87=12,12|78=12,14|84=12,16|88=12,18|86=12,20 89=14,0|83=14,2|168=14,4|82=14,6|90=14,8|90=14,10|79=14,12|214=14,14|88=14,16|86=14,18|87=14,20 93=16,0|89=16,2|89=16,4|90=16,6|90=16,8|90=16,10|90=16,12|250=16,14|193=16,16|72=16,18|91=16,20 107=18,0|92=18,2|89=18,4|89=18,6|89=18,8|81=18,10|154=18,12|69=18,14|70=18,16|106=18,18|95=18,20 98=20,0|101=20,2|92=20,4|89=20,6|86=20,8|78=20,10|69=20,12|72=20,14|70=20,16|76=20,18|70=20,20 End // the boot and 'select member's target' icons in group entry // 40x18 // 950,455 is first group member // 950,414 for second ( -41) // 950,373 for third ( -41) Object GroupIcons // at 950,455 72=0,0|68=0,2|74=0,4|81=0,6|85=0,8|88=0,10|93=0,12|96=0,14|98=0,16|97=0,18 84=2,2|84=2,4|84=2,6|84=2,8|85=2,10|85=2,12|91=2,14|83=2,16|96=2,18 82=4,2|82=4,4|82=4,6|82=4,8|95=4,10|213=4,12|192=4,14|97=4,16|95=4,18 82=6,2|82=6,4|82=6,6|82=6,8|149=6,10|224=6,12|183=6,14|80=6,16|94=6,18 99=8,2|96=8,4|87=8,6|82=8,8|144=8,10|208=8,12|175=8,14|77=8,16|93=8,18 90=10,2|191=10,4|155=10,6|162=10,8|245=10,10|213=10,12|195=10,14|77=10,16|92=10,18 89=12,2|146=12,4|232=12,6|193=12,8|221=12,10|176=12,12|135=12,14|115=12,16|91=12,18 82=14,2|212=14,4|176=14,6|192=14,8|176=14,10|178=14,12|145=14,14|115=14,16|89=14,18 107=16,2|142=16,4|75=16,6|77=16,8|94=16,10|116=16,12|67=16,14|123=16,16|88=16,18 69=18,2|69=18,4|69=18,6|69=18,8|69=18,10|69=18,12|69=18,14|73=18,16|88=18,18 65=20,0|63=20,2|69=20,4|75=20,6|74=20,8|83=20,10|84=20,12|87=20,14|88=20,16|87=20,18 91=22,2|95=22,4|209=22,6|250=22,8|157=22,10|107=22,12|91=22,14|89=22,16|86=22,18 132=24,2|216=24,4|86=24,6|135=24,8|66=24,10|101=24,12|167=24,14|117=24,16|85=24,18 194=26,2|60=26,4|82=26,6|173=26,8|107=26,10|82=26,12|145=26,14|85=26,18 50=28,0|195=28,2|81=28,4|163=28,6|105=28,8|90=28,10|83=28,12|90=28,14|118=28,16|84=28,18 56=30,0|184=30,2|114=30,4|203=30,6|91=30,8|136=30,10|91=30,12|123=30,14|111=30,16|84=30,18 209=32,2|71=32,4|84=32,6|226=32,8|120=32,10|90=32,12|111=32,14|92=32,16|83=32,18 143=34,2|119=34,4|82=34,6|125=34,8|66=34,10|90=34,12|218=34,14|77=34,16|82=34,18 107=36,2|132=36,4|241=36,6|147=36,8|133=36,10|201=36,12|99=36,14|110=36,16|82=36,18 59=38,0|108=38,8|50=38,10|79=38,16|82=38,18 58=40,0|55=40,2|62=40,4|66=40,6|71=40,8|74=40,10|77=40,12|79=40,14|80=40,16|81=40,18 End // Group Invite Accept text // 40x13 at 360,400 Object GroupInviteAccept // at 360,400 67=0,0|70=0,2|70=0,4|69=0,6|69=0,8|68=0,10|65=0,12 67=2,0|70=2,2|70=2,4|69=2,6 67=4,0|71=4,2|254=4,8 68=6,0|253=6,2|254=6,8|68=6,10|65=6,12 68=8,0|71=8,2|254=8,6|254=8,8|65=8,12 68=10,0|71=10,2|70=10,4|70=10,6|253=10,10 68=12,0|71=12,2|71=12,4|65=12,12 68=14,0|71=14,2|254=14,6|253=14,10 68=16,0|71=16,2|69=16,8 68=18,0|71=18,2|69=18,8 68=20,0|71=20,2|70=20,4|254=20,8|65=20,12 68=22,0|71=22,2|70=22,8 68=24,0|71=24,2|253=24,6|70=24,8 68=26,0|71=26,2|70=26,4|65=26,12 68=28,0|71=28,2|254=28,6|254=28,8|253=28,10 68=30,0|71=30,2|253=30,8 68=32,0|71=32,2|254=32,6|254=32,8 68=34,0|71=34,2|71=34,4|69=34,10|65=34,12 68=36,0|71=36,2|71=36,4|253=36,6|254=36,8|254=36,10|254=36,12 68=38,0|71=38,2|70=38,8 68=40,0|71=40,2|70=40,8 End