The Wiki for Tale 5 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.

User:Anka/Macros/Barley

From ATITD5
Jump to navigationJump to search
//Brute Force Barley Macro - updated for T5

//Pin your "Barley" plant window in the far top right corner.  There is a menu with
//this macro now but the plant coordinates are not implemented yet.  There are delays
//you can change if the macro is going too fast.
//Have about 70 water and fertilizer per round.  The batch feature will work but be
//certain you have enough water.  It will drift away from your starting position.  I
//will be fixing this later.

// The comments below are from the old version of the macro.  All can be changed in
// the menu now.

//I will be cleaning this up a bit. :)  Anka

Constants
  
  Plants = 2 //This is the number of Barley beds you want to plant.
  
  SleepTime	= 200		//If you're having major problems with lag try moving this to a higher
  //number (these are in milliseconds).  This delay is used between most
  //commands
  
  MoveSleepTime = 1500 	//This is the delay used for when the character is actually moving.
  //Again this is in milliseconds, if lag is troubling you, try
  //Upping this number.
  
  LoopWaitTime = 1000		//This is used in the loop to check if it should feed or water the
  //barley more.  If you Change the times above up or down you may need
  //to do the inverse with this in order to not waste fertilizer or
  //worse, harvest the barley before it's done.
  
  
  PlantX = 973 	//If you don't want the barley planting box in the upper right,
  //can change this (and the Y value below this).
  PlantY = 47		//See above comment
  
  Batch = 2
  newx = 0
  newy = 0
  DragX = 103
  DragY = 44
  AddX = 210
  AddY = 0
  PinX = 194
  PinY = 47
  BarY = 163
  HarvestX = 114
  HarvestY = 229
  CloseX = 180
  CloseY = 107
  BWin = 0
  StepRightX = 0
  StepRightY = 0
  StepDownX = 0
  StepDownY = 0
  StepLeftX = 0
  StepLeftY = 0
  ResetX = 0
  ResetY = 0
  
  varX = 0
  varY = 0
  Adding = 0
  LoopNum = 0
  WinNum = 1
  NumberAdded = 0
  varColourY = 0
  varColourX = 0
  varAddX = 0
  
  varOriginalMouseX = 0
  varOriginalMouseY = 0
  
  MousePosX = 0
  MousePosY = 0
  varDelay = 0
  MDelay = 50
  Res = 0
  Windows = 0
  PlantCount = 1
End

Object Danger //6x8 116, 135
  231=2,2|230=2,4|230=2,6
  117=4,0|236=4,2|235=4,4|237=4,6|119=4,8
  231=6,0|115=6,2|115=6,6|229=6,8
End

Object Harvest  //6x8 134, 135
  231=2,0|226=2,2|226=2,6|230=2,8
  235=4,0|234=4,2|234=4,6|233=4,8
End


Form Barley, Settings
  ed1=Editbox:# of Plants:2
  ed2=Editbox:Sleep Time:200
  ed3=Editbox:Move Sleep Time:1500
  ed4=Editbox:Loop Wait Time:1000
  ed5=Editbox:XCoords of Plant Barley:973
  ed6=Editbox:YCoords of Plant Barley:47
  ed7=Editbox:Batch:2
  ed8=Combobox:Resolution:1024x768, 1280x1024, 1360x768, 1920x1080
end

FormLoad Barley, Barley.frm

if ShowForm Barley
  Set Plants = Barley[ed1]
  Set SleepTime = Barley[ed2]
  Set MoveSleepTime = Barley[ed3]
  Set LoopWaitTime = Barley[ed4]
  Set PlantX = Barley[ed5]
  Set PlantY = Barley[ed6]
  Set Batch = Barley[ed7]
  Set Res = Barley[ed8]
else
  stop
end

FormSave Barley, Barley.frm

Keydown @{Tab} 200
Delay 2000

call Resolution
Loop $Batch
  Loop $Plants
    call MakeBarley
    Compute NewX = {screenwidth} / 2
    Compute NewY = {screenheight} / 2
    Case
    When $PlantCount <= 4
      SetConst $MousePosX = $StepRightX
      SetConst $MousePosY = $StepRightY
      Call LeftClick2
      Delay $MoveSleepTime
    When $PlantCount = 5
      SetConst $MousePosX = $StepDownX
      SetConst $MousePosY = $StepDownY
      Call LeftClick2
      Delay $MoveSleepTime
    When $PlantCount < $Plants
      SetConst $MousePosX = $StepLeftX
      SetConst $MousePosY = $StepLeftY
      Call LeftClick2
      Delay $MoveSleepTime
    End
    Inc PlantCount
  End
  
  Loop 63
    SetConst WinNum = 1
    Loop $Plants
      Case
      When $WinNum <= $Windows
        Compute NewX = $PinX + ($AddX * ( {loopno} - 1)) - 18
        Compute NewY = $BarY
      When $WinNum > $Windows
        Compute NewX = $PinX + ($AddX * ( {loopno} - $Windows - 1)) - 18
        Compute NewY = $BarY + $AddY
      End
      SetConst varColourX = $NewX
      SetConst varColourY = $NewY
      Call TestColor
      Inc $WinNum
    End
    Delay $LoopWaitTime
  End
  //Harvest
  SetConst WinNum = 1
  Loop $Plants
    Case
    When $WinNum <= $Windows
      Compute NewX = $HarvestX + ($AddX * ( {loopno} - 1))
      Compute NewY = $HarvestY
    When $WinNum > $Windows
      Compute NewX = $HarvestX + ($AddX * ( {loopno} - $Windows - 1))
      Compute NewY = $HarvestY + $AddY
    End
    SetConst $MousePosX = $NewX
    SetConst $MousePosY = $NewY
    Call Rightclick2
    //Close Window
    Case
    When $WinNum <= $Windows
      Compute NewX = $CloseX + ($AddX * ( {loopno} - 1))
      Compute NewY = $CloseY
    When $WinNum > $Windows
      Compute NewX = $CloseX + ($AddX * ( {loopno} - $Windows - 1))
      Compute NewY = $CloseY + $AddY
    End
    SetConst $MousePosX = $NewX
    SetConst $MousePosY = $NewY
    Call Rightclick2
    Inc $WinNum
  End
  SetConst $MousePosX = $ResetX
  SetConst $MousePosY = $ResetY
  //Call Leftclick2
  Bell
  stop
End

Procedure MakeBarley
  SetConst MousePosX = $PlantX
  SetConst MousePosY = $PlantY
  call RightClick2 //plant barley spot
  Compute MousePosX =  {screenwidth} / 2
  Compute MousePosY = ( {screenheight} / 2 ) + 80
  call RightClick2 // click on barley
  Call GetMousePos
  MousePos $BWin
  Delay $MDelay
  Case
  When $WinNum <= $Windows
    Compute NewX = $DragX + ($AddX * ($PlantCount - 1))
    Compute NewY = $DragY
    Timestamp $NewY
  When $WinNum > $Windows
    Compute NewX = $DragX + ($AddX * ($PlantCount - $Windows - 1))
    Compute NewY = $DragY + $AddY
  End
  DragTo $NewX, $NewY //Drag Barley to appropriate spot
  timestamp $NewY
  Delay $MDelay
  Call SetMousePos
  Case
  When $WinNum <= $Windows
    Compute NewX = $PinX + ($AddX * ($PlantCount - 1))
    Compute NewY = $PinY
  When $WinNum > $Windows
    Compute NewX = $PinX + ($AddX * ($PlantCount - $Windows - 1))
    Compute NewY = $PinY + $AddY
  End
  SetConst MousePosX = $NewX
  SetConst MousePosY = $NewY
  call RightClick2 //This pins the window open
  //water
  Loop 2
    Case
    When $WinNum <= $Windows
      Compute NewX = $PinX + ($AddX * ($PlantCount - 1))
      Compute NewY = $PinY + 116
    When $WinNum > $Windows
      Compute NewX = $PinX + ($AddX * ($PlantCount - $Windows - 1))
      Compute NewY = $PinY + 116 + $AddY
    End
    SetConst MousePosX = $NewX
    SetConst MousePosY = $NewY
    call Rightclick2
    Case
    When $WinNum <= $Windows
      Compute NewX = $PinX + ($AddX * ($PlantCount - 1))
      Compute NewY = $PinY + 136
    When $WinNum > $Windows
      Compute NewX = $PinX + ($AddX * ($PlantCount - $Windows - 1))
      Compute NewY = $PinY + 136 + $AddY
    End
    
    SetConst MousePosX = $NewX
    SetConst MousePosY = $NewY
    call RightClick2
    
  End
  Inc $WinNum
End

Procedure TestColor  //This actually tests the colours based on the position set in TestColourWhich
  LoadRGB $varColourX, $varColourY
  timestamp $varColourX, $varColourY
  if {RGBBlue} > 220 //If it's really high in blue content
  else
    Call GetMousePos
    Compute NewX = $varColourX + 18
    SetConst MousePosX = $NewX
    SetConst MousePosY = $varColourY
    call RightClick2
    Compute MousePosY = $MousePosY + 20
    call Rightclick2
    Call SetMousePos
    Delay 100
  end
  
end

Procedure StepRight
  SetConst $MousePosX = 1343
  SetConst $MousePosY = 567
  Call LeftClick2
End

Procedure GetMousePos //find the original coords of the mouse
  SetConst varOriginalMouseX = {MouseX}
  SetConst varOriginalMouseY = {MouseY}
End

Procedure SetMousePos //set the mouse back where it came from
  MousePos $varOriginalMouseX, $varOriginalMouseY
End

Procedure LeftClick2
  call GetMousePos
  MousePos $MousePosX, $MousePosY
  Delay $MDelay
  LeftClick
  Delay $MDelay
  Call SetMousePos
End

Procedure RightClick2
  Call GetMousePos
  MousePos $MousePosX, $MousePosY
  Delay $MDelay
  RightClick
  Delay $MDelay
  Call SetMousePos
End

Procedure Resolution
  Case
  When $Res = 1920x1080
    SetConst PlantX = 1859
    SetConst PlantY = 39
    SetConst BWin = 1061, 525
    SetConst StepRightX = 1330
    SetConst StepRightY = 580
    SetConst StepDownX = 955
    SetConst StepDownY = 1000
    SetConst StepLeftX = 535
    SetConst StepLeftY = 580
    SetConst Windows = 9
    SetConst AddY = 712
    SetConst ResetX =
    SetConst ResetY =
  When $Res = 1360x768
    SetConst PlantX = 1300
    SetConst PlantY = 40
    SetConst BWin = 781, 370
    SetConst StepRightX = 977
    SetConst StepRightY = 410
    SetConst StepDownX = 667
    SetConst StepDownY = 694
    SetConst StepLeftX = 352
    SetConst StepLeftY = 410
    SetConst Windows = 6
    SetConst AddY = 483
    SetConst ResetX = 91
    SetConst ResetY = 136
  When $Res = 1280x1024
    SetConst PlantX = 1220
    SetConst PlantY = 40
    SetConst BWin = 742, 498
    SetConst StepRightX = 899
    SetConst StepRightY = 544
    SetConst StepDownX = 633
    SetConst StepDownY = 879
    SetConst StepLeftX = 331
    SetConst StepLeftY = 534
    SetConst Windows = 5
    SetConst AddY = 750
    SetConst ResetX = 158
    SetConst ResetY = 164
  When $Res = 1024x768
    SetConst PlantX = 963
    SetConst PlantY = 40
    SetConst BWin = 614, 370
    SetConst StepRightX = 739
    SetConst StepRightY = 400
    SetConst StepDownX = 516
    SetConst StepDownY = 654
    SetConst StepLeftX = 286
    SetConst StepLeftY = 400
    SetConst Windows = 4
    SetConst AddY = 497
    SetConst ResetX = 5
    SetConst ResetY = 124
  End
End
//Updated by Anka for Tale 5