The Wiki for Tale 4 is in read-only mode and is available for archival and reference purposes only. Please visit the current Tale 11 Wiki in the meantime.
If you have any issues with this Wiki, please post in #wiki-editing on Discord or contact Brad in-game.
Macro's
From A Tale in the Desert
Icon gather
//General purpose slate and clay collector. Works best without water jugs //or a fishing pole. To begin, hover your mouse over the icon //you wish to collect in ATITD (i.e. be over a patch of clay or a piece of //slate and have this program active. Press F2, and the macro will start. Constants Red = 0 Green = 0 Blue = 0 XPos = 0 YPos = 0 CurrKey = 0 End SetConst XPos = {MouseX} SetConst YPos = {MouseY} LoadRGB $XPos, $YPos SetConst Red = {RGBRed} SetConst Blue = {RGBBlue} SetConst Green = {RGBGreen} SetConst CurrKey = {GlobalKeys} loop 10000 GetRed $XPos, $YPos = $Red GetGreen $XPos, $YPos = $Green GetBlue $XPos, $YPos = $Blue MousePos $XPos, $YPos Delay 5 LeftClick End End End Delay 100 End
Charcoal Heart
//Charcoal Hearth // // TamBlack: // - Make sure TAKE is NOT an option!! Only use SETUP option ONCE!! // - To test the y position, start with 1 heart/oven and press begin. Then run the macro // with 1 oven and only checked boxes for Guilded + Need setup + Mouse check. The cursor // will then go over all the important locations so you can see if the y is lined up correctly. // // I've made some improvements to the Hearth macro. Depending on your resolution, // the macro will run up to 12 guilded hearths. I've tested it in 1280x960 // resolution without any need to change values. It may work in other resolutions // also but I have not been able to test it. If you are using personal hearths, // it will run up to 10 in 1280x960. Maximum number in 1024x768 is 8. // // Setup: I've added a setup routine to the macro. Pin the windows on top of each // other in the top left corner. I suggest at least 200 wood per hearth // and about 15 water per hearth to be safe. All hearths are slightly // different but I suggest that you put your fastest burning hearths first // in line. You can tweak the settings in the built in menu. // // Hearths: Total number of hearths you are running. // Hearths Across: How many Hearths on the top row of windows. Make sure // you set this each time even if you are running 1 hearth. // Variables in the macro are set off of this number. // Guilded?: Check this box if you are using guilded hearths. // Need Setup?: Check this box if you need the macro to position your // windows that are stacked in top left corner. This is // usefull if you run another round on the hearths and your // windows are set up already. Check if needed or not. // Stealth Mouse: Check this if you don't want to see the mouse move around // on the hearth windows. When checked, it will save your // mouse position, move to the spot it needs, perform its // action then return the pointer to where it started. Alows // you to change chat windows are dig in chest while the // macro is running :) // Heat: Threshold for Heat bar, increase or decrease as needed. If heat // reaches this lvl, water will be added. // Wood: Wood threshold, adds wood up to this point. // Water: Alowable water level, not much play here. If the water lvl is above // this lvl, water will not be added. Prevents drowning the hearth. // RGBGreen: Used to detect completion bar. If the macro adds a bunch of water // before the macro is done then moves to the next hearth, increase // this number. Or lower it if it doesnt see green. // RGBBlue: Works just like RGBGreen but for blue bars. If the macro keeps // adding wood till the hearth is full, it's not seeing blue. If // this happens, lower this number. Other problem may be that the // mouse pointer is not lining up over the bar correctly. Run the // Mouse Test. // Check Bars Interval: This is the pause time between bar checks. The // default value of 4000 works well for 1-8 hearths // but you may need to decrease this number if you // are running more than 8. // Mouse Test: This is to test if the mouse pointer is lining up correctly // with your windows. Run 1 hearth manually and start the macro // with this option checked. You don't need to worry about any // other option. It will move over the Heat, Wood, Water, Danger, // and Status bar then over the Wood and Water buttons 10 times // before it stops. If these positions are off a bit, you can // change the Y coordinates below in the constants section. // // The macro doesn't watch Oxygen. I was going to add a vent option but this // macro runs very well and never fails for me. If your oxygen is getting too // high, try adding more wood. But, by adding more wood, you add more heat // which may require you adding more water. A small amount of water in the // presence of heat evaporates producing more Oxygen. :) Find the balance // you want. // // ENJOY! :) Come visit me in LE :) 780, 6956 I have a large bar with tasting // tables and hookahs. // Anka // Constants //User Definable variables Hearths = 4 HeatX = 165 WoodX = 107 WaterX = 76 DangerX = 164 RGBBlue = 220 RGBGreen = 240 Guild = 1 // Y Coordinates - Don't change unless you are having a problem. // TamBlack: Oven value = -15 // heart value = -5 //original value RegY = 54//69//74 // Y coord for Regulator button, 2nd number is for vista at home BeginY = 225//240//245 // Y coord for Begin Button HeatY = 136//151//156 // Y coord for Heat Bar WoodY = 160//175//180 // Y coord for Wood Bar WaterY = 172//187//192 // Y coord for Water Bar DangerY = 184//199//204 // Y coord for Danger Bar StatusY = 196//211//216 // Y coord for Status Bar WoodBY = 230//245//250 // Y coord for Wood and Water buttons //End User variables Hrow = 0 Hrow1 = 0 AddX = 226 Add2X = 15 Add1Y = 65 Add2Y = 17 Add3Y = 250 RegX = 47 BeginX = 111 NewX = 0 New2X = 0 New2Y = 0 NewY = 0 Heat = 0 Wood = 0 Water = 0 Danger = 0 Status = 0 OxyY = 168 StatusX = 167 WoodBX = 35 WaterBX = 85 Num = 0 Jump = 5 JumpM = 0 Jumped = 0 Used = 0 MDelay = 250 SDelay = 200 S1Delay = 100 Count = 0 CountM = 0 MouseX = 0 MouseY = 0 CheckDelay = 0 Setup = 0 SetX = 10 SetY = 40 SetAddX = 227 SetAddY = 250 SetLoop = 0 Mouse = 1 OrigX = 0 OrigY = 0 End Form ccHearth, Settings ed1=Combobox:Hearths:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ed13=Editbox:Hearths Across:4 ed2=CheckBox:Guilded?:True ed14=Checkbox:Need Setup?:True ed15=Checkbox:Stealth Mouse:False ed3=Editbox:Heat (75-188):165 //ed10=Editbox:HeatMin (75-188):116 //ed11=Editbox:HeatMax (75-188):184 //ed4=Editbox:Low Oxy (75-188):82 //ed5=Editbox:High Oxy (75-188):134 ed6=Editbox:Wood (75-188):107 ed7=Editbox:Water (75-188):76 ed8=Editbox:RGBGreen:240 ed9=Editbox:RGBBlue:220 ed12=Editbox:Check Bars Interval (miliseconds):4000 ed16=Checkbox:Mouse Check:False end FormLoad ccHearth, ccHearth.frm if ShowForm ccHearth SetConst Hearths = ccHearth[ed1] If ccHearth[ed2] = True SetConst Guild = 1 Else SetConst Guild = 0 End SetConst HeatX = ccHearth[ed3] //SetConst Oxy1X = ccHearth[ed4] //SetConst Oxy2X = ccHearth[ed5] SetConst WoodX = ccHearth[ed6] SetConst WaterX = ccHearth[ed7] SetConst RGBGreen = ccHearth[ed8] SetConst RGBBlue = ccHearth[ed9] //SetConst HeatMin = ccHearth[ed10] //SetConst HeatMax = ccHearth[ed11] SetConst CheckDelay = ccHearth[ed12] Set HRow = ccHearth[ed13] Compute SetLoop = $Hearths - 1 Compute HRow1 = $Hrow + 1 If ccHearth[ed15] = True Set Mouse = 0 End else Stop end FormSave ccHearth, ccHearth.frm MousePos 100, 20 //Activates eGenesis window.. Don't run ACTool maximized. Delay $MDelay LeftClick Delay 2000 If $Guild = 1 Call Guild End if ccHearth[ed16] = True Call HearthTest End If ccHearth[ed14] = True Call Setup End Call SetReg SetConst NewX = $BeginX SetConst NewY = $BeginY SetConst Count = 1 Loop $Hearths If $Count = $HRow1 //$Jump SetConst NewX = $BeginX Compute NewY = $BeginY + $Add3Y End MousePos $NewX, $NewY Delay $MDelay Rightclick Delay $MDelay Compute NewX = $NewX + $AddX Compute Count = $Count + 1 End SetConst NewX = $BeginX //Dont remember why this is here :) Call Main Procedure Setup Set NewX = $SetX Set NewY = $SetY Loop $SetLoop Mousepos $SetX, $SetY if {loopno} = $HRow Set NewX = $SetX Compute NewY = $SetY + $SetAddY else Compute NewX = $NewX + $SetAddX End Dragto $NewX, $NewY End End Procedure Main SetConst CountM = 1 SetConst Status = 0 Compute JumpM = $HRow1 - 1 //$Jump - 1 Loop $Hearths If $CountM = $HRow1 //$Jump // may have to use New Newx and newy variables in Main SetConst NewX = $StatusX Compute NewY = $StatusY + $Add3Y SetConst New2X = $WaterBX Compute New2Y = $WoodBY + $Add3Y End While $Status = 0 Call CheckBars If $Status = 1 Call Snuff //code to advance to next hearth Compute Used = $Used + 1 If $Used = $JumpM Compute HeatX = $HeatX - (($Used - 1) * $AddX) Compute HeatY = $HeatY + $Add3Y Compute WoodX = $WoodX - (($Used - 1) * $AddX) Compute WoodY = $WoodY + $Add3Y Compute WaterX = $WaterX - (($Used - 1) * $AddX) Compute WaterY = $WaterY + $Add3Y Compute DangerX = $DangerX - (($Used - 1) * $AddX) Compute DangerY = $DangerY + $Add3Y Compute StatusX = $StatusX - (($Used - 1) * $AddX) Compute StatusY = $StatusY + $Add3Y //Compute WaterBX = $WaterBX - (($Used -1) * $AddX) //Compute WoodBX = $WoodBX - (($Used - 1 ) * $AddX) //Compute WoodBY = $WoodBY + $Add3Y SetConst Jumped = 1 Continue Else Compute HeatX = $HeatX + $AddX Compute WoodX = $WoodX + $AddX Compute WaterX = $WaterX + $AddX Compute DangerX = $DangerX + $AddX Compute StatusX = $StatusX + $AddX //Compute WaterBX = $WaterBX + $AddX //Compute WoodBX = $WoodBX + $AddX End Continue End If $Heat = 0 and $Danger = 0 and $Wood = 0 Call Wood Else If $Heat = 1 or $Danger = 1 If $Water = 0 Call Water End End End Delay $CheckDelay End Compute CountM = $CountM + 1 SetConst Status = 0 End End Procedure CheckBars If $Mouse = 1 MousePos $HeatX, $HeatY Delay $SDelay end LoadRGB $HeatX, $HeatY if {RGBBlue} > $RGBBlue SetConst Heat = 1 Else SetConst Heat = 0 End If $Mouse = 1 MousePos $WoodX, $WoodY Delay $S1Delay end LoadRGB $WoodX, $WoodY if {RGBBlue} > $RGBBlue SetConst Wood = 1 Else SetConst Wood = 0 End If $Mouse = 1 MousePos $WaterX, $WaterY Delay $S1Delay End LoadRGB $WaterX, $WaterY if {RGBBlue} > $RGBBlue SetConst Water = 1 Else SetConst Water = 0 End If $Mouse = 1 MousePos $DangerX, $DangerY Delay $S1Delay End LoadRGB $DangerX, $DangerY if {RGBBlue} > $RGBBlue SetConst Danger = 1 Else SetConst Danger = 0 End If $Mouse = 1 MousePos $StatusX, $StatusY End LoadRGB $StatusX, $StatusY if {RGBGreen} > $RGBGreen SetConst Status = 1 Else SetConst Status = 0 End End Procedure Water SetConst NewX = $WaterBX SetConst NewY = $WoodBY Loop $Hearths IF {loopno} = $HRow1 //$Jump SetConst NewX = $WaterBX Compute NewY = $WoodBY + $Add3Y End If {loopno} > $Used If $Mouse = 0 Set OrigX = {mousex} Set OrigY = {mousey} End MousePos $NewX, $NewY Delay $SDelay Rightclick Delay $SDelay If $Mouse = 0 Mousepos $OrigX, $OrigY End End Compute NewX = $NewX + $AddX End SetConst NewX = $WaterBX End Procedure Snuff SetConst New2X = $WaterBX SetConst New2Y = $WoodBY Compute Num = $Used + 1 Loop $Hearths IF {loopno} = $Hrow1 //$Jump SetConst New2X = $WaterBX Compute New2Y = $WoodBY + $Add3Y End If {loopno} = $Num If $Mouse = 0 Set OrigX = {mousex} Set OrigY = {mousey} End MousePos $New2X, $New2Y Loop 8 Rightclick End If $Mouse = 0 Mousepos $OrigX, $OrigY End End Compute New2X = $New2X + $AddX End End Procedure Wood SetConst NewX = $WoodBX SetConst NewY = $WoodBY Loop $Hearths IF {loopno} = $HRow1 //$Jump SetConst NewX = $WoodBX Compute NewY = $WoodBY + $Add3Y End If {loopno} > $Used If $Mouse = 0 Set OrigX = {mousex} Set OrigY = {mousey} End MousePos $NewX, $NewY Delay $SDelay Rightclick Delay $SDelay If $Mouse = 0 MousePos $OrigX, $OrigY End End Compute NewX = $NewX + $AddX End SetConst NewX = $WoodBX End Procedure SetReg SetConst NewX = $RegX SetConst Count = 1 Loop $Hearths If $Count = $HRow1 SetConst NewX = $RegX Compute RegY = $RegY + $Add3Y End MousePos $NewX, $RegY Delay $MDelay // TamBlack: turn off the regulator setup // Rightclick Compute NewX = $NewX + $Add2X If $Count > $HRow Compute NewY = $RegY + $Add2Y else Compute NewY = $RegY + $Add1Y end MousePos $NewX, $NewY Delay $MDelay // TamBlack: turn off the regulator setup // Rightclick Delay $MDelay Compute NewX = $NewX + $AddX Compute Count = $Count + 1 End SetConst NewX = $RegX SetConst Count = 1 End Procedure Guild Compute BeginX = $BeginX - 7 Compute BeginY = $BeginY + 16 Compute RegY = $RegY + 16 Compute RegX = $RegX - 14 Compute AddX = $AddX - 15 Compute Add3Y = $Add3Y + 16 Compute Add1Y = $Add1Y - 16 Compute WoodBY = $WoodBY + 16 Compute HeatX = $HeatX - 4 Compute HeatY = $HeatY + 16 Compute WoodX = $WoodX - 1 Compute WoodY = $WoodY + 16 Compute WaterY = $WaterY + 16 Compute DangerX = $DangerX - 4 Compute DangerY = $DangerY + 16 Compute StatusX = $StatusX - 5 Compute StatusY = $StatusY + 16 Set SetAddX = 212 Set SetAddY = 266 End Procedure HearthTest Loop 1 MousePos $HeatX, $HeatY Delay 2000 MousePos $WoodX, $WoodY Delay 2000 MousePos $WaterX, $WaterY Delay 2000 MousePos $DangerX, $DangerY Delay 2000 MousePos $StatusX, $StatusY Delay 2000 MousePos $WoodBX, $WoodBY Delay 2000 MousePos $WaterBX, $WoodBY Delay 2000 MousePos 104, 251 MousePos $BeginX, $BeginY Delay 2000 end Stop End //Written with ACTool 5.3.0 by Anka Bell Asterisk
Plant flax and harvest seeds
//This Macro will plant several rows of flax in order to harvest seeds from them // //You will need to use double F8 view. Zoom all the way in, then 7 mousewheel clicks out //(your avatar will be a little smaller than the size of the thumb in the Gather Grass icon //For this to work you need to **minimize chat*** //Open the Plant menu and pin it to the top or bottom of the screen //When the macro starts, you will need to quickly mouse-over the Plant Flax Seed instruction //As the macro runs, your avatar should stay in the middle of the flax beds, but he will stray //It is up to you to move him back to the middle (or close) when this happens //It is my belief this is caused by server lag and therefore cannot be avoided //I use screen resolution 1280x1024 on a wide-screen monitor //MousePos 638,508 //My Head delay 3000 Constructs MouseX=List // this is an array of mouse X coords MouseY=List // this is an array of mouse Y coords END Constants RowLen=7 //actually does n+1 -- Recommend 7 or fewer if Seedcycles is 3 ColLen=2 //actually does n*2 -- Recommend 2 or fewer if Seedcycles is 3 ActualCols=0 //program sets this ActualRows=0 //not used XHomeDist=0 //Not necessary because it plants even numbers of rows YHomeDist=0 //sets later SeedCycles=3 //harvest how many times (n+1) -- for best results use 3 or less InitialDelay=50000 //Time until the flax goes to seed and can be harvested NextDelay=0 //Program sets this - the time between subsequent harvest cycles LoopVal = 1 //do not modify END Compute ActualCols = $ColLen * 2 Compute YHomeDist = (($ActualCols-1) * 375) Compute InitialDelay = $InitialDelay - (475 * ($RowLen + 1) * ($ColLen * 2)) + 475 Compute NextDelay = 66000 - ($ColLen * 2) * ($RowLen + 1) * 1950 Compute NextDelay = MAX ($NextDelay, 0) //Acquire Location of Plant:Flax Seed Listadd MouseX, {MouseX} Listadd MouseY, {MouseY} Call Plant $RowLen, $ColLen Delay $InitialDelay loop $SeedCycles Call HarvestAllSeeds $RowLen, $ColLen, 0 //This cycle harvests only Delay $NextDelay end //This cycle harvests then rips out the flax bed. //If you like picking a lot of seeds up off the ground, remove the next line. Call HarvestAllSeeds $RowLen, $ColLen, 1 Procedure Plant using Across, Down //This procedure creates a grid of Flax of size (Across +1) x (Down * 2) //It utilizes global variable MouseX and MouseY holding the location of the plant Flax pin //It also uses global variable $YHomeDist and $InitialDelay to return to the starting point Compute LoopVal = 1 loop $Down //this one controls how many columns (N+1)(B) mousepos {MouseX[1],MouseY[1] LeftClick loop $RowLen //this one controls how many in a line (n) (A) KeyDown {RIGHT} 375 Delay 100 mousepos {MouseX[1],MouseY[1] LeftClick end KeyDown {DOWN} 375 Delay 100 mousepos {MouseX[1],MouseY[1] LeftClick //this one controls how many in a line (n+1) loop $Across //this one controls how many in a line (n+1) (A) Keydown {LEFT} 375 Delay 100 mousepos {MouseX[1],MouseY[1] LeftClick end if $LoopVal < $Down KeyDown {DOWN} 375 end Delay 100 Compute LoopVal = $LoopVal + 1 End KeyDown {UP} $YHomeDist END //Planting Procedure HarvestAllSeeds using Across, Down, Yank //This procedure harvesta seeds from a grid of Flax of size (Across +1) x (Down * 2) //If Yank = 1 it will also rip out the plant Compute LoopVal = 1 loop $Down //this one controls how many columns (N+1)(B) Call HarvestOneSeed if $Yank = 1 Call Ripout end loop $Across //this one controls how many in a line (n) (A) KeyDown {RIGHT} 375 Delay 100 Call HarvestOneSeed if $Yank = 1 Call Ripout end end KeyDown {DOWN} 375 Delay 100 Call HarvestOneSeed if $Yank = 1 Call Ripout end //this one controls how many in a line (n+1) loop $Across //this one controls how many in a line (n+1) (A) Keydown {LEFT} 375 Delay 100 Call HarvestOneSeed if $Yank = 1 Call Ripout end end if $LoopVal < $Down KeyDown {DOWN} 375 end Compute $LoopVal = $LoopVal + 1 Delay 100 end KeyDown {UP} $YHomeDist end Procedure HarvestOneSeed //Clicks on flax bed your are standing in, and selects harvest //I repeat the mousepos because I find it reduces server/client transmission miscues //which would cause the pop up menu to stray from where it should be mousepos 654, 504 Delay 30 mousepos 654, 504 LeftClick Delay 60 mousepos 690, 499 Delay 60 mousepos 690, 499 LeftClick Delay 1800 end Procedure RipOut //Clicks on flax bed your are standing in, and selects Utility->Rip Out //Because picking up flax seeds off the ground is annoying. //I repeat the mousepos because I find it reduces server/client transmission miscues //which would cause the pop up menu to stray from where it should be MousePos 654, 504 Delay 30 MousePos 654, 504 LeftClick Delay 70 MousePos 724, 527 Delay 30 MousePos 724, 527 LeftClick Delay 70 MousePos 746, 509 Delay 30 MousePos 746, 509 LeftClick Delay 70 end
Plant, weed and harvest 20 beds
//This Macro will plant 20 beds of flax, weed/water and harvest them // //You will need to use double F8 view. Zoom all the way in, then 7 mousewheel clicks out //(your avatar will be a little smaller than the size of the thumb in the Gather Grass icon //For this to work you need to **minimize chat*** //Open the Plant menu and pin it to the top left corner //I use screen resolution 1280x1024 on a wide-screen monitor delay 1000 Constants PlantX=40 PlantY=40 SelfX=636 //Position of your feet SelfY=512 //Position of your feet BedLen=90 //Width of a flax bed RowLen=4 //actually does n+1 flax beds horizontally ColLen=2 //actually does n*2 flax beds vertically SeedCycles=3 //weed, water and harvest how many times InitialDelay=25750 //Time until the flax goes to first weed status NextDelay=7400 //Time between subsequent weed, water, harvest cycles DelayShort=60 //Delay between pointing and clicking DelayWalk=400 //Delay for walking to the next position DelayWeed=400 //Delay for weeding the next flax bed DelayTest=1000 //Not used, test setting i=0 BedX=0 BedY=0 ActualCols=0 ActualRows=0 //not used XHomeDist=0 //Not necessary because it plants even numbers of rows YHomeDist=0 MenuX=0 MenuY=0 LoopVal = 1 //do not modify END Compute ActualCols = $ColLen * 2 Compute XHomeDist = $SelfX - $BedLen + 10 Compute YHomeDist = $SelfY - (($ActualCols-1) * $BedLen) Call Plant $RowLen, $ColLen Delay $InitialDelay loop $SeedCycles Call HarvestAllSeeds $RowLen, $ColLen Delay $NextDelay end Procedure Plant using Across, Down //This procedure creates a grid of Flax of size (Across +1) x (Down * 2) //It utilizes global variable MouseX and MouseY holding the location of the plant Flax pin //It also uses global variable $YHomeDist and $InitialDelay to return to the starting point Compute LoopVal = 1 loop $Down //this one controls how many columns (N+1)(B) mousepos $PlantX, $PlantY delay $DelayShort LeftClick loop $RowLen //this one controls how many in a line (n) (A) // KeyDown {RIGHT} 375 compute BedX = $SelfX + $BedLen mousepos $BedX, $SelfY delay $DelayShort LeftClick Delay $DelayWalk mousepos $PlantX, $PlantY delay $DelayShort LeftClick end // KeyDown {DOWN} 375 compute BedY = $SelfY + $BedLen mousepos $SelfX, $BedY delay $DelayShort LeftClick Delay $DelayWalk mousepos $PlantX, $PlantY delay $DelayShort LeftClick //this one controls how many in a line (n+1) loop $Across //this one controls how many in a line (n+1) (A) // Keydown {LEFT} 375 compute BedX = $SelfX - $BedLen mousepos $BedX, $SelfY delay $DelayShort LeftClick Delay $DelayWalk mousepos $PlantX, $PlantY delay $DelayShort LeftClick end if $LoopVal < $Down // KeyDown {DOWN} 375 compute BedY = $SelfY + $BedLen mousepos $SelfX, $BedY delay $DelayShort LeftClick Delay $DelayWalk end Compute LoopVal = $LoopVal + 1 End // KeyDown {UP} $YHomeDist mousepos $XHomeDist, $YHomeDist delay $DelayShort LeftClick Delay $DelayWalk END //Planting Procedure HarvestAllSeeds using Across, Down //This procedure harvesta seeds from a grid of Flax of size (Across +1) x (Down * 2) Compute LoopVal = 1 loop $Down //this one controls how many columns (N+1)(B) compute i = 1 compute BedX = $SelfX + ($BedLen * $i) mousepos $BedX, $SelfY // Call HarvestOneSeed $BedX, $SelfY Delay $DelayShort LeftClick compute MenuX = $BedX + 20 compute MenuY = $SelfY - 8 mousepos $MenuX, $MenuY Delay $DelayShort LeftClick Delay $DelayWeed loop $Across //this one controls how many in a line (n) (A) // KeyDown {RIGHT} 375 compute i = $i + 1 compute BedX = $SelfX + ($BedLen * $i) mousepos $BedX, $SelfY // Call HarvestOneSeed $BedX, $SelfY Delay $DelayShort LeftClick compute MenuX = $BedX + 20 compute MenuY = $SelfY - 8 mousepos $MenuX, $MenuY Delay $DelayShort LeftClick Delay $DelayWeed end // KeyDown {DOWN} 375 compute BedY = $SelfY + $BedLen mousepos $SelfX, $BedY delay $DelayShort LeftClick Delay $DelayWalk compute i = $RowLen + 1 compute BedX = $SelfX + ($BedLen * $i) mousepos $BedX, $SelfY // Call HarvestOneSeed $BedX, $SelfY Delay $DelayShort LeftClick compute MenuX = $BedX + 20 compute MenuY = $SelfY - 8 mousepos $MenuX, $MenuY Delay $DelayShort LeftClick Delay $DelayWeed //this one controls how many in a line (n+1) loop $Across //this one controls how many in a line (n+1) (A) // Keydown {LEFT} 375 compute i = $i - 1 compute BedX = $SelfX + ($BedLen * $i) mousepos $BedX, $SelfY // Call HarvestOneSeed $BedX, $SelfY Delay $DelayShort LeftClick compute MenuX = $BedX + 20 compute MenuY = $SelfY - 8 mousepos $MenuX, $MenuY Delay $DelayShort LeftClick Delay $DelayWeed end if $LoopVal < $Down // KeyDown {DOWN} 375 compute BedY = $SelfY + $BedLen mousepos $SelfX, $BedY delay $DelayShort LeftClick Delay $DelayWalk end Compute $LoopVal = $LoopVal + 1 end // KeyDown {UP} $YHomeDist mousepos $SelfX, $YHomeDist delay $DelayShort LeftClick Delay $DelayWalk end
Wood pane TO BE TESTED
// Pin Windows in 2 rows of 3, // in top left corner of window // works best at 1024 x 768 res // Set line 16, for Number of loops // usually total wood / 6 Procedure Delay300 LeftClick delay 300 End Procedure Delay600 LeftClick delay 600 End Loop 25 MousePos 120, 80 CALL Delay300 MousePos 120, 80 CALL Delay600 MousePos 400, 80 call Delay300 MousePos 400, 80 call Delay600 MousePos 690, 80 call Delay300 MousePos 690, 80 call Delay600 MousePos 120, 190 call Delay300 MousePos 120, 190 call Delay600 MousePos 400, 190 call Delay300 MousePos 400, 190 call Delay600 MousePos 690, 190 call Delay300 MousePos 690, 190 call Delay600 End
Coconut cracker TO BE TESTED
// Pin Crack Coconut Window to bottom left of screen, works best at 1024x768 // Set line 14 for number of loops desired :P Delay 2500 MousePos 144, 701 LeftClick MousePos 144, 701 LeftClick MousePos 144, 701 LeftClick MousePos 144, 701 LeftClick MousePos 144, 701 LeftClick Loop 100 MousePos 144, 701 LeftClick Delay 10000 End
Iron mining
// IRON Macro - Written by: Coyan/Mosaic Guild // This is what I suggest for setting up for this macro // First align your view so you can see all 7 crystals clearly // second use Alt-L to lock your camera angle // Third before starting this, I suggest you have your mouse sitting over // the first crystal. // You will have 3 seconds between the recording of each crystal's location // place your mouse over a spot of average gem color for each crystal in turn // Once it has identified the 7 crystals, it will run the mine // // Thank you Xyrrus for talking to me about using Hue Constructs MouseX=List // this is an array of mouse X coords for gem sample points MouseY=List // this is an array of mouse X coords for gem sample points CrysHue=List OEOffset=List END // This macro doesn't work 100%, I have gotten between 80% and 90% return // When it mis-id's a crystal it will fail as many times in a row as your OELevel is set Constants OELevel = 4 // change this to your Ore Extraction level totalpulls = 5 // How many times do you want it to pull the mine colordiff = 10 // this is used to find a base for comparison, shouldn't need adjusting CDiff = 0 CurrHigh = 0 Compare = 0 Currcrys = 0 DIFFFOUND = 0 Minval = 0 Maxval = 0 Tmpval = 0 loopcnt = 1 Mousecnt = 1 MouseXN = 0 MouseYN = 0 ColorHS = 0 OElistcnt = 0 OELvlset = 1 CurrCrysHue = 0 End // First part that requires a detailed explanation // this loop will pause for 3 seconds then grab the current mouse location // its purpose is to identify the 7 sampling locations for the crystals // when it grabs the sampling spot, it will then echo a . to the chat window // make sure you are in your main chat tab. Loop 7 Delay 3000 Listadd MouseX, {MouseX} Listadd MouseY, {MouseY} SayPaste . END ListClear OEOffset loop $totalpulls Compute loopcnt = 1 ListClear CrysHue loop 7 mousepos MouseX[$loopcnt], MouseY[$loopcnt] LoadRGB MouseX[$loopcnt], MouseY[$loopcnt] Call CALCHUECOLOR //SayPaste {RGBRed} {RGBGreen} {RGBBlue} CrysHue[$loopcnt] $Tmpval for testing Compute loopcnt = $loopcnt + 1 Delay 100 END //Delay 100000 for testing CALL FindtheOdd CALL OreExtractionstore ListCount OEOffset, $OElistcnt IF $OELevel >= $OElistcnt Compute OELvlset = OEOffset[1] // work the current crystal until we are at our OE Level ELSE Compute OELvlset = OEOffset[$OELevel] END //Saypaste $OELevel $OElistcnt $OELvlset mousepos MouseX[$OELvlset], MouseY[$OELvlset] Delay 200 //200 leftclick Compute MouseXN = MouseX[$OELvlset] + 25 // adjust this if you need to for the menu click Compute MouseYN = MouseY[$OELvlset] + 20 // If your mouse keeps clicking on TAKE, then adjust this to -10. Adjust this if you need to for the menu click Mousepos $MouseXN, $MouseYN Delay 200 Leftclick Delay 4300 // Delay to manage the str/perc timer on mining, adjust as needed end Procedure CALCHUECOLOR // This procedure calculates the Hue of the crystal Compute Minval = 0 Compute Maxval = 255 IF {RGBRed} > {RGBGreen} Compute Minval = {RGBGreen} Compute Maxval = {RGBRed} Else Compute Maxval = {RGBGreen} Compute Minval = {RGBRed} END IF {RGBBlue} < $Minval Compute Minval = {RGBBlue} ELSE IF {RGBBlue} > $Maxval Compute Maxval = {RGBBlue} END END Compute Tmpval = $Maxval - $Minval IF {RGBRed} = $Maxval Compute CurrCrysHue = {RGBGreen} - {RGBBlue} Compute CurrCrysHue = $CurrCrysHue/$Tmpval ELSE IF $Maxval = {RGBGreen} Compute CurrCrysHue = {RGBBlue} - {RGBRed} Compute CurrCrysHue = $CurrCrysHue/$Tmpval Compute CurrCrysHue = 2.0 + $CurrCrysHue ELSE IF $Maxval = {RGBBlue} Compute CurrCrysHue = {RGBRed} - {RGBGreen} Compute CurrCrysHue = $CurrCrysHue/$Tmpval Compute CurrCrysHue = 4.0 + $CurrCrysHue END END END Compute CurrCrysHue = $CurrCrysHue * 100 Listadd CrysHue, $CurrCrysHue END Procedure FindtheOdd Call Findcompare Compute CDiff = 0 Compute CurrHigh = 0 Compute Currcrys = 1 loop 7 IF $Currcrys <> $Compare Compute ColorHS = CrysHue[$Currcrys] - CrysHue[$Compare] IF $ColorHS < 0 Compute ColorHS = 0 - $ColorHS END IF $ColorHS > $CDiff Compute CDiff = $ColorHS Compute CurrHigh = $Currcrys END END Compute Currcrys = $Currcrys + 1 END Compute Mousecnt = $CurrHigh END Procedure OreExtractionstore ListCount OEOffset, $OElistcnt IF $OElistcnt = 0 Listadd OEOffset, $Mousecnt ELSE IF $OElistcnt = 1 Listadd OEOffset, OEOffset[1] END IF $OElistcnt = 2 Listadd OEOffset, OEOffset[2] Compute OEOffset[2] = OEOffset[1] END IF $OElistcnt = 3 Listadd OEOffset, OEOffset[3] Compute OEOffset[3] = OEOffset[2] Compute OEOffset[2] = OEOffset[1] END IF $OElistcnt = 4 Listadd OEOffset, OEOffset[4] Compute OEOffset[4] = OEOffset[3] Compute OEOffset[3] = OEOffset[2] Compute OEOffset[2] = OEOffset[1] END IF $OElistcnt = 5 Listadd OEOffset, OEOffset[5] Compute OEOffset[5] = OEOffset[4] Compute OEOffset[4] = OEOffset[3] Compute OEOffset[3] = OEOffset[2] Compute OEOffset[2] = OEOffset[1] END IF $OElistcnt = 6 Listadd OEOffset, OEOffset[6] Compute OEOffset[6] = OEOffset[5] Compute OEOffset[5] = OEOffset[4] Compute OEOffset[4] = OEOffset[3] Compute OEOffset[3] = OEOffset[2] Compute OEOffset[2] = OEOffset[1] END IF $OElistcnt = 7 Compute OEOffset[7] = OEOffset[6] Compute OEOffset[6] = OEOffset[5] Compute OEOffset[5] = OEOffset[4] Compute OEOffset[4] = OEOffset[3] Compute OEOffset[3] = OEOffset[2] Compute OEOffset[2] = OEOffset[1] END Compute OEOffset[1] = $Mousecnt END END Procedure FindCompare // For Iron we need to find the common crystals in the first 3 Compute ColorHS = CrysHue[1] - CrysHue[2] IF $ColorHS < 0 Compute ColorHS = 0 - $ColorHS END IF $ColorHS < $colordiff Compute Compare = 1 ELSE Compute ColorHS = CrysHue[1] - CrysHue[3] IF $ColorHS < 0 Compute ColorHS = 0 - $ColorHS END IF $ColorHS < $colordiff Compute Compare = 1 ELSE Compute Compare = 2 END END END