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.

User:TamBlack/Macros

From A Tale in the Desert
Jump to navigationJump to search
//Charcoal Hearth
//   
//  Make sure TAKE is NOT an option!! Only use SETUP option ONCE!!
//
//   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.
  RegY = 74      // Y coord for Regulator button
  BeginY = 245   // Y coord for Begin Button
  HeatY = 156    // Y coord for Heat Bar
  WoodY = 180    // Y coord for Wood Bar
  WaterY = 192   // Y coord for Water Bar
  DangerY = 204  // Y coord for Danger Bar
  StatusY = 216  // Y coord for Status Bar
  WoodBY = 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
    Rightclick
    Compute NewX = $NewX + $Add2X
    If $Count > $HRow
      Compute NewY = $RegY + $Add2Y
    else
      Compute NewY = $RegY + $Add1Y
    end
    MousePos $NewX, $NewY
    Delay $MDelay
    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 $BeginX, $BeginY
    Delay 2000

  end
  Stop
End
//Written with ACTool 5.3.0 by Anka
Bell Asterisk