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.

Difference between revisions of "User:Caigan/Flax Grow Macro"

From A Tale in the Desert
Jump to navigationJump to search
(New page: I'll put a graphic up here later. I'll warn again, this is very ugly code, and works maybe 50% of the time. If it doesn't work the first time, move a bit, reload the macro, and try again....)
 
 
Line 1: Line 1:
I'll put a graphic up here later.
+
<pre>//Caigan's 4x4 Flaxer Macro
 
+
//v1.1
I'll warn again, this is very ugly code, and works maybe 50% of the time. If it doesn't work the first time, move a bit, reload the macro, and try again.
+
//
 
+
//This macro only works on a 1680 x 1050 resolution with the game maximized. I'm not savvy enough
<pre>//Caigan's Cabbage Grower Macro
+
//to code it for multiple resolutions.
 +
//
 +
//Okay, more like I'm lazy.
 +
//
 +
//You MUST have your chat minimized for this to work.
 +
//
 +
//Pin your Plant tab in the upper left. Make sure you have enough water in your inventory.
 +
//Make sure the ground is flat around you. Hills can really mess with this.
 +
//
 +
//Use F5, zoom your camera all the way out, and align your screen to face north (F4 for compass).
 +
//Then use Alt + L to lock your camera.
 +
//
 +
//Currently the macro works with 4x4. If you can tweak the numbers for more, more power to you.
 
//
 
//
//Instructions
+
//This is very ugly  because I rarely ever code. I'm more of an artistic person.  
//1. Turn off Lighting and Shadows
 
//2. Have 4 cabbage seeds and lots of jugs of water in inventory.
 
//3. Pin Plant menu in upper left.
 
//4. Use F8 twice and zoom in all the way. Hit Alt + L to lock camera.
 
//5. Plant a cabbage.
 
//6. Hit the small left button twice on the build menu
 
//7. Place mouse on the section of cabbage shown in the graphic on my wiki user page. (upper left corner of the top most cabbage)
 
//Then Alt-Tab to AC Tool and hit F2
 
  
 +
CONSTANTS //Change these to set your macro
 +
 
 +
  FRows = 2 //Number of double rows you want. If you want 2 rows, put 1.
 +
  FPer = 3 //Number between 1 and 3. This will be the number of beds per row, up to 4
 +
  ORow = 0 //Set to 1 if you want an additional row (Making it an odd number of rows). NOT CODED IN.
 +
  Cycles = 3 //How many cycles of weeding + harvesting there are
 +
  XCenter = 839 //X Coord of spot right between characters feet
 +
  YCenter = 536 //Y Coord of spot right between characters feet
 +
  HPixel = 57 //Number of pixels between the centers of each bed Horizontally
 +
  VPixel = 50 //Number of pixels between the centers of each bed Vertically
 +
  BDelay1 = 40000 // How long it takes till the first weeding
 +
  BDelay2 = 23000 // How long it takes till the second weeding
 +
 
 +
  //Don't Change These
 +
  Calc1 = X
 +
  MoveBack = X
 +
  RowNum = X
 +
  BedRow = X
 +
  FTime = X
 +
  WTime = X
 +
  XCenterNew = X
 +
  YCenterNew = X
 +
  XCenterConst = X
 +
  YCenterConst = X
 +
 
 +
End
  
 +
Compute RowNum = $FRows * 2
 +
Compute BedRow = $FPer + 1
  
Constants
+
Procedure FlaxTimer //Determine the amount of time it took to plant all the beds
CurrentLevel = 4
+
Compute Calc1 = $RowNum + $ORow
TotalLevel = 20
+
Compute Calc1 = $Calc1 * $BedRow
+
Compute Calc1 = $Calc1 * 575
NewMouseX = 0
+
Compute Calc1 = $BDelay1 - $Calc1
NewMouseY = 0
+
  Set FTIME = $Calc1
 
Cabbage1 = 1
 
Cabbage2 = 1
 
Cabbage3 = 1
 
Cabbage4 = 1
 
 
CabbageHor = 2
 
CabbageVer = 2
 
CabbageSet = NoValue
 
 
CabbageDead = 0
 
ErrorColor = 0
 
//Replace this X,Y with the location of your overwater error box OK button
 
ErrorX = 838
 
ErrorY = 619
 
 
End
 
End
  
 
+
Procedure WaitTimer //Determine the amount of time after first watering
Constructs
+
Compute Calc1 = $RowNum + $ORow
CornerstoneX = List
+
Compute Calc1 = $Calc1 * $BedRow
CornerstoneY = List
+
Compute Calc1 = $Calc1 * 700
+
//Say WTime before Calculation is $Calc1
Cabbage1Color = List
+
Compute Calc1 = $BDelay2 - $Calc1
Cabbage1PosX = List
+
//Say WTime before settime is $Calc1
Cabbage1PosY = List
+
  Set WTIME = $Calc1
+
  //Say WTime is $WTime
Cabbage2Color = List
 
Cabbage2PosX = List
 
Cabbage2PosY = List
 
 
Cabbage3Color = List
 
Cabbage3PosX = List
 
Cabbage3PosY = List
 
 
Cabbage4Color = List
 
Cabbage4PosX = List
 
Cabbage4PosY = List
 
 
End
 
End
  
ListAdd CornerstoneX, {MouseX}
+
Loop $FRows
ListAdd CornerstoneY, {MouseY}
+
 
 
+
  //Horizontal Right
ListAdd Cabbage1PosX, CornerstoneX[1]
+
  Loop $FPer
ListAdd Cabbage1PosY, CornerstoneY[1]
+
    MousePos 70, 45
ListAdd Cabbage1PosX, 0
+
    RightClick
ListAdd Cabbage1PosY, 0
+
    Delay 125
ListAdd Cabbage1PosX, 0
+
    KeyDown {Right} 100
ListAdd Cabbage1PosY, 0
+
    Delay 125
ListAdd Cabbage1PosX, 0
+
    KeyDown {Right} 100
ListAdd Cabbage1PosY, 0
+
    Delay 125
ListAdd Cabbage1PosX, 0
+
  End
ListAdd Cabbage1PosY, 0
+
 
 
+
  //Vertical Drop
ListAdd Cabbage2PosX, 0
+
  MousePos 70, 45
ListAdd Cabbage2PosY, 0
+
  RightClick
ListAdd Cabbage2PosX, 0
+
  Delay 125
ListAdd Cabbage2PosY, 0
+
  KeyDown {Down} 100
ListAdd Cabbage2PosX, 0
+
  Delay 125
ListAdd Cabbage2PosY, 0
+
  KeyDown {Down} 100
ListAdd Cabbage2PosX, 0
+
  Delay 125
ListAdd Cabbage2PosY, 0
+
 
ListAdd Cabbage2PosX, 0
+
  //Horizontal Left
ListAdd Cabbage2PosY, 0
+
  Loop $FPer
 
+
    MousePos 70, 45
ListAdd Cabbage3PosX, 0
+
    RightClick
ListAdd Cabbage3PosY, 0
+
    Delay 125
ListAdd Cabbage3PosX, 0
+
    KeyDown {Left} 100
ListAdd Cabbage3PosY, 0
+
    Delay 125
ListAdd Cabbage3PosX, 0
+
    KeyDown {Left} 100
ListAdd Cabbage3PosY, 0
+
    Delay 125
ListAdd Cabbage3PosX, 0
+
  End
ListAdd Cabbage3PosY, 0
+
 
ListAdd Cabbage3PosX, 0
+
  //Vertical Drop
ListAdd Cabbage3PosY, 0
+
  MousePos 70, 45
 
+
  RightClick
ListAdd Cabbage4PosX, 0
+
  Delay 125
ListAdd Cabbage4PosY, 0
+
  KeyDown {Down} 100
ListAdd Cabbage4PosX, 0
+
  Delay 125
ListAdd Cabbage4PosY, 0
+
  KeyDown {Down} 100
ListAdd Cabbage4PosX, 0
+
  Delay 125
ListAdd Cabbage4PosY, 0
+
 
ListAdd Cabbage4PosX, 0
 
ListAdd Cabbage4PosY, 0
 
ListAdd Cabbage4PosX, 0
 
ListAdd Cabbage4PosY, 0
 
 
 
ListAdd Cabbage1Color, 0
 
ListAdd Cabbage1Color, 0
 
ListAdd Cabbage1Color, 0
 
ListAdd Cabbage1Color, 0
 
ListAdd Cabbage1Color, 0
 
 
 
ListAdd Cabbage2Color, 0
 
ListAdd Cabbage2Color, 0
 
ListAdd Cabbage2Color, 0
 
ListAdd Cabbage2Color, 0
 
ListAdd Cabbage2Color, 0
 
 
 
ListAdd Cabbage3Color, 0
 
ListAdd Cabbage3Color, 0
 
ListAdd Cabbage3Color, 0
 
ListAdd Cabbage3Color, 0
 
ListAdd Cabbage3Color, 0
 
 
 
ListAdd Cabbage4Color, 0
 
ListAdd Cabbage4Color, 0
 
ListAdd Cabbage4Color, 0
 
ListAdd Cabbage4Color, 0
 
ListAdd Cabbage4Color, 0
 
 
 
MousePos 91, 18
 
Delay 100
 
LeftClick
 
Delay 400
 
 
 
//Keys {F4}
 
 
 
 
 
Compute Cabbage1PosX[2] = Cabbage1PosX[1] - 15
 
Compute Cabbage1PosX[3] = Cabbage1PosX[2] - 18
 
Compute Cabbage1PosX[4] = Cabbage1PosX[3] - 20
 
Compute Cabbage1PosX[5] = Cabbage1PosX[4] - 20
 
 
 
Compute Cabbage1PosY[2] = Cabbage1PosY[1] - 0
 
Compute Cabbage1PosY[3] = Cabbage1PosY[2] - 0
 
Compute Cabbage1PosY[4] = Cabbage1PosY[3] - 0
 
Compute Cabbage1PosY[5] = Cabbage1PosY[4] - 0
 
 
 
Compute Cabbage2PosX[1] = CornerstoneX[1] + 202
 
Compute Cabbage2PosX[2] = Cabbage2PosX[1] + 15
 
Compute Cabbage2PosX[3] = Cabbage2PosX[2] + 17
 
Compute Cabbage2PosX[4] = Cabbage2PosX[3] + 20
 
Compute Cabbage2PosX[5] = Cabbage2PosX[4] + 20
 
 
 
Compute Cabbage2PosY[1] = CornerstoneY[1] + 59
 
Compute Cabbage2PosY[2] = Cabbage2PosY[1] - 0
 
Compute Cabbage2PosY[3] = Cabbage2PosY[2] - 0
 
Compute Cabbage2PosY[4] = Cabbage2PosY[3] - 0
 
Compute Cabbage2PosY[5] = Cabbage2PosY[4] - 0
 
 
 
Compute Cabbage3PosX[1] = CornerstoneX[1] + 89
 
Compute Cabbage3PosX[2] = Cabbage3PosX[1] - 0
 
Compute Cabbage3PosX[3] = Cabbage3PosX[2] - 0
 
Compute Cabbage3PosX[4] = Cabbage3PosX[3] - 0
 
Compute Cabbage3PosX[5] = Cabbage3PosX[4] - 0
 
 
 
Compute Cabbage3PosY[1] = CornerstoneY[1] - 80
 
Compute Cabbage3PosY[2] = Cabbage3PosY[1] - 15
 
Compute Cabbage3PosY[3] = Cabbage3PosY[2] - 20
 
Compute Cabbage3PosY[4] = Cabbage3PosY[3] - 21
 
Compute Cabbage3PosY[5] = Cabbage3PosY[4] - 21
 
 
 
Compute Cabbage4PosX[1] = CornerstoneX[1] + 84
 
Compute Cabbage4PosX[2] = Cabbage4PosX[1] - 0
 
Compute Cabbage4PosX[3] = Cabbage4PosX[2] - 0
 
Compute Cabbage4PosX[4] = Cabbage4PosX[3] - 0
 
Compute Cabbage4PosX[5] = Cabbage4PosX[4] - 0
 
 
 
Compute Cabbage4PosY[1] = CornerstoneY[1] + 155
 
Compute Cabbage4PosY[2] = Cabbage4PosY[1] + 15
 
Compute Cabbage4PosY[3] = Cabbage4PosY[2] + 16
 
Compute Cabbage4PosY[4] = Cabbage4PosY[3] + 19
 
Compute Cabbage4PosY[5] = Cabbage4PosY[4] + 19
 
 
 
 
 
Procedure Error
 
// LoadRGB $ErrorX, $ErrorY
 
// Set ErrorColor = {RGBRed}
 
//
 
// If $ErrorColor > 230
 
// If $ErrorColor < 250
 
// MousePos $ErrorX, $ErrorY
 
// Pause 100
 
// RightClick
 
// Pause 100
 
// Set Cabbage$CabbageDead = 5
 
// End
 
// End
 
// If $ErrorColor = 0
 
// MousePos $ErrorX, $ErrorY
 
// Pause 100
 
// RightClick
 
// Pause 100
 
// Set Cabbage$CabbageDead = 5
 
// End
 
 
End
 
End
  
 +
    KeyDown {Up} 100
 +
    Delay 125
 +
    KeyDown {Up} 100
 +
    Delay 125
 +
  Compute MoveBack = $BedRow / 2
 +
  FormatNumber MoveBack = $MoveBack, 0
  
//BlackOkay
 
//MousePos 842, 621
 
  
 +
Call FlaxTimer
  
//SeedLocations
+
Delay $FTime
//1 - R 208
 
//MousePos 791, 526
 
  
 
+
If $ORow = 0
//Keys {F4}
+
  //Set the cursor position for the first bed.
Delay 500
+
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
+
  //Calculate X Position
Set Cabbage1Color[1] = {RGBGreen}
+
  COMPUTE XCenterNew = $XCenter
 
+
  Set XCenterConst = $XCenterNew
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
+
  //Calculate Y Position
Set Cabbage2Color[1] = {RGBGreen}
+
  COMPUTE Calc1 = $RowNum - 1
 
+
  Compute Calc1 = $Calc1 * $VPixel
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
+
  FormatNumber Calc1 = $Calc1, ####
Set Cabbage3Color[1] = {RGBGreen}
+
  COMPUTE YCenterNew = $YCenter - $Calc1
 
+
  Set YCenterConst = $YCenterNew
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
+
 
Set Cabbage4Color[1] = {RGBGreen}
+
  //Water, Weed, Harvest Phases
 
+
  Loop $Cycles
 
+
    Loop $FRows
//MousePos 59, 122 // Down Position
+
      Loop $BedRow
 
+
        MousePos $XCenterNew, $YCenterNew
MousePos 85, 162 // Cancel Build if present
+
        Delay 100
Delay 100
+
        RightClick
RightClick
+
        Delay 250
Delay 300
+
        COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
MousePos 74, 46 //Plant Button Position
+
        MousePos $XCenterNew, $YCenterNew
Delay 100
+
        Delay 100
RightClick
+
        RightClick
Delay 300
+
        Delay 250      
MousePos 38, 103 //Left Position
+
      End
Delay 100
+
      COMPUTE XCENTERNEW = $XCENTERNEW - $HPixel
RightClick
+
      COMPUTE YCENTERNEW = $YCENTERNEW + $VPixel
Delay 200
+
      Loop $BedRow
MousePos 38, 103 //Left Position
+
        MousePos $XCenterNew, $YCenterNew
Delay 100
+
        Delay 100
RightClick
+
        RightClick
Delay 200
+
        Delay 250
MousePos 36, 160 // Build Button
+
        COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
Delay 100
+
        MousePos $XCenterNew, $YCenterNew
RightClick
+
        Delay 100
Delay 300
+
RightClick
MousePos 74, 46 //Plant Button Position
+
Delay 250
Delay 100
+
        COMPUTE Calc1 = $HPixel * 2
RightClick
+
        COMPUTE XCENTERNEW = $XCENTERNEW - $Calc1
Delay 300
+
      End
MousePos 83, 102 // Right Position
+
      COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
Delay 100
+
      COMPUTE YCENTERNEW = $YCENTERNEW + $VPixel
RightClick
+
    End
Delay 200
+
MousePos 78, 509
MousePos 83, 102 // Right Position
+
RightClick  
Delay 100
+
    Set XCENTERNEW = $XCENTERCONST
RightClick
+
    Set YCENTERNEW = $YCENTERCONST
Delay 200
+
    Call WaitTimer
MousePos 36, 160 // Build Button
+
    Delay $WTime
Delay 100
+
  End
RightClick
+
Else
Delay 300
 
MousePos 74, 46 //Plant Button Position
 
Delay 100
 
RightClick
 
Delay 300
 
MousePos 59, 77 // Up Position
 
Delay 100
 
RightClick
 
Delay 200
 
MousePos 59, 77 // Up Position
 
Delay 100
 
RightClick
 
Delay 200
 
MousePos 36, 160 // Build Button
 
Delay 100
 
RightClick
 
Delay 300
 
MousePos 74, 46 //Plant Button Position
 
Delay 100
 
RightClick
 
Delay 300
 
MousePos 59, 122 // Down Position
 
Delay 100
 
RightClick
 
Delay 200
 
MousePos 59, 122 // Down Position
 
Delay 100
 
RightClick
 
Delay 200
 
MousePos 36, 160 // Build Button
 
Delay 100
 
RightClick
 
Delay 300
 
 
 
//Water Left
 
MousePos Cabbage1PosX[1], Cabbage1PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage1PosX[1] + 40
 
Compute NewMouseY = Cabbage1PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
 
 
//Water Right
 
MousePos Cabbage2PosX[1], Cabbage2PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage2PosX[1] + 40
 
Compute NewMouseY = Cabbage2PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
 
 
//Water Up
 
MousePos Cabbage3PosX[1], Cabbage3PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage3PosX[1] + 40
 
Compute NewMouseY = Cabbage3PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
 
 
//Water Down
 
MousePos Cabbage4PosX[1], Cabbage4PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage4PosX[1] + 40
 
Compute NewMouseY = Cabbage4PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
 
 
While $CurrentLevel < $TotalLevel
 
//Keys {F4}
 
Delay 400
 
 
//Cabbage Left
 
 
If $Cabbage1 = 1
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
//Cabbage 1 - Level 1
 
If Cabbage1Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage1PosX[1], Cabbage1PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage1PosX[1] + 40
 
Compute NewMouseY = Cabbage1PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage1 = $Cabbage1 + 1
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
Set Cabbage1Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 2
 
If $Cabbage1 = 2
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
If Cabbage1Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage1PosX[2], Cabbage1PosY[2]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage1PosX[2] + 40
 
Compute NewMouseY = Cabbage1PosY[2] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage1 = $Cabbage1 + 1
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
Set Cabbage1Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 3
 
If $Cabbage1 = 3
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
If Cabbage1Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage1PosX[3], Cabbage1PosY[3]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage1PosX[3] + 40
 
Compute NewMouseY = Cabbage1PosY[3] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage1 = $Cabbage1 + 1
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
Set Cabbage1Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 4
 
If $Cabbage1 = 4
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
If Cabbage1Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage1PosX[4], Cabbage1PosY[4]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage1PosX[4] + 40
 
Compute NewMouseY = Cabbage1PosY[4] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 1000
 
Compute Cabbage1 = $Cabbage1 + 1
 
LoadRGB Cabbage1PosX[2], Cabbage1PosY[2]
 
Set Cabbage1Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
 
//Cabbage Right
 
 
If $Cabbage2 = 1
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
//Cabbage 1 - Level 1
 
If Cabbage2Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage2PosX[1], Cabbage2PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage2PosX[1] + 40
 
Compute NewMouseY = Cabbage2PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage2 = $Cabbage2 + 1
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
Set Cabbage2Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 2
 
If $Cabbage2 = 2
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
If Cabbage2Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage2PosX[2], Cabbage2PosY[2]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage2PosX[2] + 40
 
Compute NewMouseY = Cabbage2PosY[2] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 400
 
Compute Cabbage2 = $Cabbage2 + 1
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
Set Cabbage2Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 3
 
If $Cabbage2 = 3
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
If Cabbage2Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage2PosX[3], Cabbage2PosY[3]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage2PosX[3] + 40
 
Compute NewMouseY = Cabbage2PosY[3] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 400
 
Compute Cabbage2 = $Cabbage2 + 1
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
Set Cabbage2Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 4
 
If $Cabbage2 = 4
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
If Cabbage2Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage2PosX[4], Cabbage2PosY[4]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage2PosX[4] + 40
 
Compute NewMouseY = Cabbage2PosY[4] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 1000
 
Compute Cabbage2 = $Cabbage2 + 1
 
LoadRGB Cabbage2PosX[2], Cabbage2PosY[2]
 
Set Cabbage2Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
 
//Cabbage Up
 
 
If $Cabbage3 = 1
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
//Cabbage 1 - Level 1
 
If Cabbage3Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage3PosX[1], Cabbage3PosY[1]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage3PosX[1] + 40
 
Compute NewMouseY = Cabbage3PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 400
 
Compute Cabbage3 = $Cabbage3 + 1
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
Set Cabbage3Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 2
 
If $Cabbage3 = 2
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
If Cabbage3Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage3PosX[2], Cabbage3PosY[2]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage3PosX[2] + 40
 
Compute NewMouseY = Cabbage3PosY[2] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 400
 
Compute Cabbage3 = $Cabbage3 + 1
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
Set Cabbage3Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 3
 
If $Cabbage3 = 3
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
If Cabbage3Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage3PosX[3], Cabbage3PosY[3]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage3PosX[3] + 40
 
Compute NewMouseY = Cabbage3PosY[3] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 400
 
Compute Cabbage3 = $Cabbage3 + 1
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
Set Cabbage3Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 4
 
If $Cabbage3 = 4
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
If Cabbage3Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage3PosX[4], Cabbage3PosY[4]
 
Delay 100
 
RightClick
 
Delay 400
 
Compute NewMouseX = Cabbage3PosX[4] + 40
 
Compute NewMouseY = Cabbage3PosY[4] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 1000
 
Compute Cabbage3 = $Cabbage3 + 1
 
LoadRGB Cabbage3PosX[2], Cabbage3PosY[2]
 
Set Cabbage3Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
 
//Cabbage Bottom
 
 
If $Cabbage4 = 1
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
//Cabbage 1 - Level 1
 
If Cabbage4Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage4PosX[1], Cabbage4PosY[1]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage4PosX[1] + 40
 
Compute NewMouseY = Cabbage4PosY[1] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage4 = $Cabbage4 + 1
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
Set Cabbage4Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 2
 
If $Cabbage4 = 2
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
If Cabbage4Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage4PosX[2], Cabbage4PosY[2]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage4PosX[2] + 40
 
Compute NewMouseY = Cabbage4PosY[2] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage4 = $Cabbage4 + 1
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
Set Cabbage4Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 3
 
If $Cabbage4 = 3
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
If Cabbage4Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage4PosX[3], Cabbage4PosY[3]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage4PosX[3] + 40
 
Compute NewMouseY = Cabbage4PosY[3] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 250
 
Compute Cabbage4 = $Cabbage4 + 1
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
Set Cabbage4Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
//Cabbage 1 - Level 4
 
If $Cabbage4 = 4
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
If Cabbage4Color[1] = {RGBGreen}
 
Else
 
MousePos Cabbage4PosX[4], Cabbage4PosY[4]
 
Delay 100
 
RightClick
 
Delay 250
 
Compute NewMouseX = Cabbage4PosX[4] + 40
 
Compute NewMouseY = Cabbage4PosY[4] + 15
 
MousePos $NewMouseX, $NewMouseY
 
Delay 100
 
RightClick
 
Delay 1000
 
Compute Cabbage4 = $Cabbage4 + 1
 
LoadRGB Cabbage4PosX[2], Cabbage4PosY[2]
 
Set Cabbage4Color[1] = {RGBGreen}
 
//Keys {F4}
 
End
 
End
 
 
 
 
Compute CabbageHor = $Cabbage1 + $Cabbage2
 
Compute CabbageVer = $Cabbage3 + $Cabbage4
 
Compute CurrentLevel = $CabbageHor + $CabbageVer
 
 
 
End
 
End
  
MousePos 745, 479
+
//Return to Home Point
+28, +41
+
  COMPUTE Calc1 = $RowNum - 1
 
+
  Loop $Calc1
MousePos 773, 520
+
    KeyDown {Up} 100
+134, +0
+
    Delay 125
MousePos 907, 520
+
    KeyDown {Up} 100
 
+
    Delay 125
MousePos 839, 451
+
  End
 
+
    Delay 1000
MousePos 839, 588
 
 
 
//MousePos 74, 46 //Plant Button Position
 
 
 
//MousePos 38, 103 //Left Position
 
//MousePos 59, 77 // Up Position
 
//MousePos 83, 102 // Right Position
 
//MousePos 59, 122 // Down Position
 
 
 
//MousePos 36, 160 // Build Button
 
//MousePos 85, 162 // Cancel Button
 
 
 
 
 
//Left Cabbage Sizes
 
//MousePos 783, 490
 
 
</pre>
 
</pre>

Latest revision as of 02:20, 30 January 2009

//Caigan's 4x4 Flaxer Macro
//v1.1
//
//This macro only works on a 1680 x 1050 resolution with the game maximized. I'm not savvy enough
//to code it for multiple resolutions.
//
//Okay, more like I'm lazy.
//
//You MUST have your chat minimized for this to work.
//
//Pin your Plant tab in the upper left. Make sure you have enough water in your inventory.
//Make sure the ground is flat around you. Hills can really mess with this.
//
//Use F5, zoom your camera all the way out, and align your screen to face north (F4 for compass).
//Then use Alt + L to lock your camera.
//
//Currently the macro works with 4x4. If you can tweak the numbers for more, more power to you.
//
//This is very ugly  because I rarely ever code. I'm more of an artistic person. 

CONSTANTS //Change these to set your macro
  
  FRows = 2 //Number of double rows you want. If you want 2 rows, put 1. 
  FPer = 3 //Number between 1 and 3. This will be the number of beds per row, up to 4
  ORow = 0 //Set to 1 if you want an additional row (Making it an odd number of rows). NOT CODED IN.
  Cycles = 3 //How many cycles of weeding + harvesting there are
  XCenter = 839 //X Coord of spot right between characters feet
  YCenter = 536 //Y Coord of spot right between characters feet
  HPixel = 57 //Number of pixels between the centers of each bed Horizontally
  VPixel = 50 //Number of pixels between the centers of each bed Vertically
  BDelay1 = 40000 // How long it takes till the first weeding
  BDelay2 = 23000 // How long it takes till the second weeding
  
  //Don't Change These
  Calc1 = X
  MoveBack = X
  RowNum = X
  BedRow = X
  FTime = X
  WTime = X
  XCenterNew = X
  YCenterNew = X
  XCenterConst = X
  YCenterConst = X
  
End

Compute RowNum = $FRows * 2
Compute BedRow = $FPer + 1

Procedure FlaxTimer //Determine the amount of time it took to plant all the beds
	Compute Calc1 = $RowNum + $ORow
	Compute Calc1 = $Calc1 * $BedRow
	Compute Calc1 = $Calc1 * 575
	Compute Calc1 = $BDelay1 - $Calc1
  Set FTIME = $Calc1
End

Procedure WaitTimer //Determine the amount of time after first watering
	Compute Calc1 = $RowNum + $ORow
	Compute Calc1 = $Calc1 * $BedRow
	Compute Calc1 = $Calc1 * 700
	//Say WTime before Calculation is $Calc1
	Compute Calc1 = $BDelay2 - $Calc1
	//Say WTime before settime is $Calc1
  Set WTIME = $Calc1
  //Say WTime is $WTime
End

Loop $FRows
  
  //Horizontal Right
  Loop $FPer
    MousePos 70, 45
    RightClick
    Delay 125
    KeyDown {Right} 100
    Delay 125
    KeyDown {Right} 100
    Delay 125
  End
  
  //Vertical Drop
  MousePos 70, 45
  RightClick
  Delay 125
  KeyDown {Down} 100
  Delay 125
  KeyDown {Down} 100
  Delay 125
  
  //Horizontal Left
  Loop $FPer
    MousePos 70, 45
    RightClick
    Delay 125
    KeyDown {Left} 100
    Delay 125
    KeyDown {Left} 100
    Delay 125
  End
  
  //Vertical Drop
  MousePos 70, 45
  RightClick
  Delay 125
  KeyDown {Down} 100
  Delay 125
  KeyDown {Down} 100
  Delay 125
  
End

    KeyDown {Up} 100 
    Delay 125
    KeyDown {Up} 100
    Delay 125
  Compute MoveBack = $BedRow / 2
  FormatNumber MoveBack = $MoveBack, 0


Call FlaxTimer

Delay $FTime

If $ORow = 0
  //Set the cursor position for the first bed. 
  
  //Calculate X Position
  COMPUTE XCenterNew = $XCenter
  Set XCenterConst = $XCenterNew
  //Calculate Y Position
  COMPUTE Calc1 = $RowNum - 1
  Compute Calc1 = $Calc1 * $VPixel
  FormatNumber Calc1 = $Calc1, ####
  COMPUTE YCenterNew = $YCenter - $Calc1
  Set YCenterConst = $YCenterNew
  
  //Water, Weed, Harvest Phases
  Loop $Cycles
    Loop $FRows
      Loop $BedRow
        MousePos $XCenterNew, $YCenterNew
        Delay 100
        RightClick
        Delay 250
        COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
        MousePos $XCenterNew, $YCenterNew
        Delay 100
        RightClick
        Delay 250        
      End
      COMPUTE XCENTERNEW = $XCENTERNEW - $HPixel
      COMPUTE YCENTERNEW = $YCENTERNEW + $VPixel
      Loop $BedRow
        MousePos $XCenterNew, $YCenterNew
        Delay 100
        RightClick
        Delay 250
        COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
        MousePos $XCenterNew, $YCenterNew
        Delay 100
				RightClick
				Delay 250
        COMPUTE Calc1 = $HPixel * 2
        COMPUTE XCENTERNEW = $XCENTERNEW - $Calc1
      End
      COMPUTE XCENTERNEW = $XCENTERNEW + $HPixel
      COMPUTE YCENTERNEW = $YCENTERNEW + $VPixel
    End
		MousePos 78, 509
		RightClick    
    Set XCENTERNEW = $XCENTERCONST
    Set YCENTERNEW = $YCENTERCONST
    Call WaitTimer
    Delay $WTime
  End
Else
End

//Return to Home Point
  COMPUTE Calc1 = $RowNum - 1
  Loop $Calc1
    KeyDown {Up} 100 
    Delay 125
    KeyDown {Up} 100
    Delay 125
  End
    Delay 1000