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:Moses/oven

From A Tale in the Desert
Jump to navigationJump to search
Oven Macro by Anka
//Charcoal Oven
//
// Setup:  This handles from 1 to 8 charcoal ovens at a time.  Pin the windows
//         in 2 rows of 4 starting in top left corner.  But them up together but
//         Don't overlap them at all.  I suggest at least 300
//         wood per oven and a normally hold about 150 water jugs.
//         All ovens are slightly different but I suggest that you put your
//         fastest burning oven first in line.  You can tweak the settings
//         to your liking in the new GUI window.  Your settings will be saved.
//
//  If you see anything odd, /chat me.
//
//  ENJOY! :)
//  Anka
//
Constants
 //User Definable variables
 Ovens = 3       //Number of Ovens you are running. 1-8
 HeatMinX = 129
 HeatX = 157      //Threshold for Heat bar, increase or decrease as needed.
 HeatMaxX = 178
 Oxy1X = 82
 Oxy2X = 133
 WoodX = 109      //Wood threshold, adds wood/round up to this point.
 WaterX = 76      //Alowable water level, not much play here.. dont lower more than 2
 DangerX = 170  // 162    //Threshold for Danger bar, increase or decrease as needed.
 RGBBlue = 220    //Threshold for detecting the color blue.
 RGBGreen = 250   //Threshold for detecting the color green.  Some video cards
 //                 are having problems with this.  If you are having problems, run
 //                 just 1 oven and try lowering this number by 10 at a time.  It's
 //                 hard for me to see what is going on without using your pc :(
 //                 This method is used for RGBBlue and RGBGreen.
 CheckDelay = 3900
 Guild = 1       // 1 for Guilded or public ovens, 0 for Personal ovens
 //End User variables
 AddX = 212      // 215-Personal   212-Guilded
 Add2X = 15
 Add1Y = 65
 Add2Y = 17
 Add3Y = 233
 HeatMin = 0
 HeatMax = 0
 DangerMax = 0
 BeginX = 103
 BeginY = 229
 NewX = 0
 New2X = 0
 New3X = 0
 New2Y = 0
 NewY = 0
 Heat = 0
 Oxy = 0
 Wood = 0
 Water = 0
 Danger = 0
 Status = 0
 HeatY = 140
 OxyY = 152
 WoodY = 164
 WaterY = 176
 DangerY = 188
 StatusX = 172
 StatusY = 200
 WoodBX = 35
 WoodBY = 234
 WaterBX = 85
 Vent0 = 130
 Vent1 = 155
 Vent2 = 180
 VentBX = 0
 OldVent = 1
 Num = 0
 Jump = 5
 JumpM = 0
 Jumped = 0
 Used = 0
 WoodNum = 0
 MDelay = 200
 SDelay = 150
 S1Delay = 100
 Count = 0
 CountM = 0
 MouseX = 0
 MouseY = 0 
End
Form ccOven, Settings
 ed1=Combobox:Ovens:1, 2, 3, 4, 5, 6, 7, 8
 ed2=CheckBox:Guilded?:True
 ed3=Editbox:Heat                  (75-188):162
 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):109
 ed7=Editbox:Water                (75-188):77
 ed8=Editbox:RGBGreen:240
 ed9=Editbox:RGBBlue:220
 ed12=Editbox:Check Bars Interval  (miliseconds):4000
end
FormLoad ccOven, ccOven.frm
if ShowForm ccOven
 SetConst Ovens = ccOven[ed1]
 If ccOven[ed2] = True
   SetConst Guild = 1
 Else
   SetConst Guild = 0
 End
 SetConst HeatX = ccOven[ed3]
 SetConst Oxy1X = ccOven[ed4]
 SetConst Oxy2X = ccOven[ed5]
 SetConst WoodX = ccOven[ed6]
 SetConst WaterX = ccOven[ed7]
 SetConst RGBGreen = ccOven[ed8]
 SetConst RGBBlue = ccOven[ed9]
 SetConst HeatMin = ccOven[ed10]
 SetConst HeatMax = ccOven[ed11]
 SetConst CheckDelay = ccOven[ed12]
else
 Stop
end
FormSave ccOven, ccOven.frm
MousePos 100, 20  //Activates eGenesis window.. Don't run ACTool maximized.
Delay $MDelay
LeftClick
Delay 2000
If $Guild = 1
 Call Guild
End
SetConst NewX = $BeginX
SetConst NewY = $BeginY
SetConst Count = 1
Loop $Ovens
 If $Count = $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 Main
 SetConst CountM = 1
 SetConst Status = 0
 Compute JumpM = $Jump - 1
 Loop $Ovens
   If $CountM = $Jump
     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 HeatMinX = $HeatMinX - (($Used - 1) * $AddX)
         Compute HeatX = $HeatX - (($Used - 1) * $AddX)
         Compute HeatMaxX = $HeatMaxX - (($Used - 1) * $AddX)
         Compute HeatY = $HeatY + $Add3Y
         Compute Oxy1X = $Oxy1X - (($Used - 1) * $AddX)
         Compute Oxy2X = $Oxy2X - (($Used - 1) * $AddX)
         Compute OxyY = $OxyY + $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 HeatMinX = $HeatMinX + $AddX
         Compute HeatX = $HeatX + $AddX
         Compute HeatMaxX = $HeatMaxX + $AddX
         Compute Oxy1X = $Oxy1X + $AddX
         Compute Oxy2X = $Oxy2X + $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
     Case
     When $HeatMin = 1
       Call Wood
       Set WoodNum = 1
     Else
       If $Heat = 0 and $Danger = 0
         If $WoodNum = 0  and $Wood = 0
           Call Wood
           Set WoodNum = 1
         else
           Set WoodNum = 0
         End
       Else
         If $Heat = 1 or $Danger = 1
           If $Water = 0 or $HeatMax = 1 or $DangerMax = 1
             Call Water
           End
         End
       End
     End
     
     If {loopno} > 3
       Case
       When $Oxy = 0
         // Open vent full
         If $OldVent <> $Oxy
           SetConst VentBX = $Vent2
           Call Vent
           SetConst OldVent = 0
           Delay 100
         End
       When $Oxy = 1
         // Oxy set normal
         If $OldVent <> $Oxy
           SetConst VentBX = $Vent1
           Call Vent
           SetConst OldVent = 1
           Delay 100
         End
       When $Oxy = 2
         // Close vent
         If $OldVent <> $Oxy
           SetConst VentBX = $Vent0
           Call Vent
           SetConst OldVent = 2
           Delay 100
         End
       End
     End
     Delay $CheckDelay
   End
   Compute CountM = $CountM + 1
   SetConst Status = 0
 End
End
Procedure CheckBars
 MousePos $HeatMinX, $HeatY
 Delay $SDelay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} < $RGBBlue
   SetConst HeatMin = 1
 else
   Set HeatMin = 0
 End
 MousePos $HeatX, $HeatY
 Delay $SDelay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst Heat = 1
 Else
   SetConst Heat = 0
 End
 MousePos $HeatMaxX, $HeatY
 Delay $SDelay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst HeatMax = 1
 Else
   SetConst HeatMax = 0
 End
 MousePos $Oxy1X, $OxyY
 Delay $SDelay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst Oxy = 1
 Else
   SetConst Oxy = 0
 End
 MousePos $Oxy2X, $OxyY
 Delay $SDelay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst Oxy = 2
 End
 MousePos $WoodX, $WoodY
 Delay $S1Delay
 LoadRGB {mousex}, {mousey}
 if {RGBBlue} > $RGBBlue
   SetConst Wood = 1
 Else
   SetConst Wood = 0
 End
 MousePos $WaterX, $WaterY
 Delay $S1Delay
 LoadRGB {mousex}, {mousey}
 if {RGBBlue} > $RGBBlue
   SetConst Water = 1
 Else
   SetConst Water = 0
 End
 MousePos $HeatX, $DangerY
 Delay $S1Delay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst Danger = 1
 Else
   SetConst Danger = 0
 End
 MousePos $HeatMaxX, $DangerY
 Delay $S1Delay
 LoadRGB {MouseX}, {MouseY}
 if {RGBBlue} > $RGBBlue
   SetConst DangerMax = 1
 Else
   SetConst DangerMax = 0
 End
 MousePos $StatusX, $StatusY
 LoadRGB {MouseX}, {MouseY}
 if {RGBGreen} > $RGBGreen
   //if {RGBRed} = 6 and {RGBGreen} = 254 and {RGBBlue} = 5
   SetConst Status = 1
 Else
   SetConst Status = 0
 End
End
Procedure Water
 SetConst NewX = $WaterBX
 SetConst NewY = $WoodBY
 Loop $Ovens
   IF {loopno} = $Jump
     SetConst NewX = $WaterBX
     Compute NewY = $WoodBY + $Add3Y
   End
   If {loopno} > $Used
     MousePos $NewX, $NewY
     Delay $SDelay
     Rightclick
     Delay $SDelay
   End
   Compute NewX = $NewX + $AddX
 End
 SetConst NewX = $WaterBX
End
Procedure Vent
 SetConst NewX = $VentBX
 SetConst NewY = $WoodBY
 Loop $Ovens
   IF {loopno} = $Jump
     SetConst NewX = $VentBX
     Compute NewY = $WoodBY + $Add3Y
   End
   If {loopno} > $Used
     MousePos $NewX, $NewY
     Delay $SDelay
     Rightclick
     Delay $SDelay
   End
   Compute NewX = $NewX + $AddX
 End
 SetConst NewX = $VentBX
End
Procedure Snuff
 SetConst New2X = $WaterBX
 SetConst New3X = $Vent2
 SetConst New2Y = $WoodBY
 Compute Num = $Used + 1
 Loop $Ovens
   IF {loopno} = $Jump
     SetConst New2X = $WaterBX
     SetConst New3X = $Vent2
     Compute New2Y = $WoodBY + $Add3Y
   End
   If {loopno} = $Num
     MousePos $New2X, $New2Y
     Loop 8
       Rightclick
     End
     MousePos $New3X, $WoodBY
     Delay 200
     Rightclick
   End
   Compute New2X = $New2X + $AddX
   Compute New3X = $New3X + $AddX
 End
End
Procedure Wood
 SetConst NewX = $WoodBX
 SetConst NewY = $WoodBY
 Loop $Ovens
   IF {loopno} = $Jump
     SetConst NewX = $WoodBX
     Compute NewY = $WoodBY + $Add3Y
   End
   If {loopno} > $Used
     MousePos $NewX, $NewY
     Delay $SDelay
     Rightclick
     Delay $SDelay
   End
   Compute NewX = $NewX + $AddX
 End
 SetConst NewX = $WoodBX
End
Procedure Guild
 //Compute BeginX = $BeginX - 7
 Compute BeginY = $BeginY + 16
 Compute AddX = $AddX - 3
 Compute Add3Y = $Add3Y + 16
 Compute Add1Y = $Add1Y - 16
 Compute WoodBY = $WoodBY + 16
 //Compute HeatX = $HeatX - 4
 Compute HeatY = $HeatY + 16
 //Compute Oxy1X = $Oxy1X
 //Compute Oxy2X =
 Compute OxyY = $OxyY + 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
End
//Written with ACTool 5.3.0 by Anka
Bell Asterisk