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:Larame Bastet/Macros/Kettles
From A Tale in the Desert
< User:Larame Bastet | Macros
Jump to navigationJump to searchRevision as of 21:40, 30 October 2011 by Larame Bastet (talk | contribs) (New page: <pre> InitGlobals() Gui, New Gui, +AlwaysOnTop +ToolWindow Gui, Add, Text,, How Many Passes? Gui, Add, Edit, vLoops Gui, Add, Text,, How Many Columns? Gui, Add, Edit, vColumns ...)
InitGlobals()
Gui, New
Gui, +AlwaysOnTop +ToolWindow
Gui, Add, Text,, How Many Passes?
Gui, Add, Edit, vLoops
Gui, Add, Text,, How Many Columns?
Gui, Add, Edit, vColumns
Gui, Add, Text,, How Many Rows?
Gui, Add, Edit, vRows
Gui, Add, Button, gStart, Continue
Gui, Show
return
Start:
Gui, Submit
Gui, Destroy
WinActivate, eGenesis Client
WinGetActiveStats, Title, ScreenWidth, ScreenHeight, ScreenLeft, ScreenTop
SetDefaultMouseSpeed, 9
MsgBox, Position Cursor on Top Left Kettle and press Alt-S, then Bottom Right and press Alt-E. Press Alt-B to begin.
return
!s::
MouseGetPos, topleftX, topleftY
return
!e::
MouseGetPos, bottomrightX, bottomrightY
return
!r::
Reload
return
!p::
Pause
return
!b::
global Loops
WinActivate, eGenesis Client
KettleWidth := Floor((bottomrightX - topleftX) / (Columns-1))
KettleHeight := Floor((bottomrightY - topleftY) / (Rows-1))
KettleCount := Columns * Rows
PinWindows()
loop %Loops%
{
CycleWindows()
SelectPotash()
CycleWindows()
Begin()
CycleWindows()
Ignite()
CycleWindows()
Cook()
}
CloseWindows()
return
InitGlobals()
{
global topleftX := 0
global topleftY := 0
global bottomrightX := 0
global bottomrightY := 0
global Loops := 1
global Columns := 1
global Rows := 1
global KettleWidth := 0
global KettleHeight := 0
global ScreenWidth := 0
global ScreenHeight := 0
global ScreenLeft := 0
global ScreenTop := 0
global KettleWidth := 0
global KettleHeight := 0
global KettleCount := 0
global Kettles := []
global k := 0
}
CycleWindows()
{
global Kettles
index := Kettles.MaxIndex()
loop
{
r := Kettles[index].r
t := Kettles[index].t
MouseClick,Left,r,t
index := index - 1
if index = 0
break
sleep 300
}
}
SelectPotash()
{
global Kettles
for index, value in Kettles
{
l := value.l
t := value.t
r := value.r
b := value.b
SelectWindow(value)
ImageSearch,ButtonLeft, ButtonTop, l, t, r, b, Potash.png
MouseClick,Left,ButtonLeft + 5, ButtonTop + 5
sleep 200
}
sleep 300
}
Begin()
{
global Kettles
for index, value in Kettles
{
l := value.l
t := value.t
r := value.r
b := value.b
SelectWindow(value)
ImageSearch,ButtonLeft, ButtonTop, l, t, r, b, Begin.png
MouseClick,Left,ButtonLeft + 5, ButtonTop + 5
sleep 200
}
sleep 300
}
Ignite()
{
global Kettles
global ScreenLeft
global ScreenWidth
global ScreenTop
global ScreenHeight
for index, value in Kettles
{
l := value.l
t := value.t
r := value.r
b := value.b
SelectWindow(value)
ImageSearch, ButtonLeft, ButtonTop, l, t, r, b, Ignite.png
MouseClick,Left,ButtonLeft + 5, ButtonTop + 5
sleep 400
sx := ScreenLeft + (ScreenWidth / 2)
sy := ScreenTop + (ScreenHeight / 2)
ex := sx
ey := sy
ButtonLeft := 0
ButtonTop := 0
GetWindow(sx, sy, ex, ey)
ImageSearch, ButtonLeft, ButtonTop, sx, sy, ex, ey, Max.png
MouseClick, Left, ButtonLeft + 5, ButtonTop + 5
sleep 200
SelectWindow(value)
StrokeMax(value)
sleep 200
}
sleep 300
}
Cook()
{
global Kettles
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"wood2.png") = 0 then
{
StrokeMax(value)
break
}
sleep 1000
}
}
CycleWindows()
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"water20.png") = 0 then
{
StrokeMax(value)
break
}
sleep 1000
}
}
CycleWindows()
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"water15.png") = 0 then
{
StrokeMax(value)
break
}
sleep 1000
}
}
CycleWindows()
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"water10.png") = 0 then
{
StrokeMax(value)
break
}
sleep 1000
}
}
CycleWindows()
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"water5.png") = 0 then
{
StrokeMax(value)
break
}
sleep 1000
}
}
CycleWindows()
for index, value in Kettles
{
SelectWindow(value)
Loop
{
l := value.l
t := value.t
r := value.r
b := value.b
if FindImg(l,t,r,b,"take.png") = 0 then
{
Take(value)
break
}
sleep 1000
}
}
}
StrokeMax(value)
{
l := value.l
t := value.t
r := value.r
b := value.b
ImageSearch,ButtonLeft, ButtonTop, l, t, r, b, StrokeMax.png
MouseClick, Left, ButtonLeft + 5, ButtonTop + 5
Sleep 200
}
FindImg(l,t,r,b,imgname)
{
ImageSearch, , , l, t, r, b, *20 %imgname%
return ErrorLevel
}
Take(value)
{
l := value.l
t := value.t
r := value.r
b := value.b
ImageSearch,ButtonLeft, ButtonTop, l, t, r, b, Take.png
MouseClick,Left,ButtonLeft + 5, ButtonTop + 5
sleep 200
}
CloseWindows()
{
global Kettles
for index, value in Kettles
{
r := value.r - 18
t := value.t + 18
MouseClick,Left,r,t
sleep 200
}
}
SelectWindow(win)
{
l := win.l + 1
t := win.t
r := win.r
b := win.b - 1
MouseClick,Left,l,b
sleep 200
}
PinWindows()
{
global Rows
global Columns
global Kettles
i := 0
j := 0
k := 0
Loop % Rows
{
i := i + 1
j := 0
Loop % Columns
{
j := j + 1
PinWindow(i,j)
k := k + 1
}
sleep 200
}
}
PinWindow(i, j)
{
global Kettles
global KettleWidth
global KettleHeight
global topleftX
global topleftY
global ScreenLeft
global ScreenWidth
global ScreenTop
PinX = 0
PinY = 0
posX := (topleftX + (KettleWidth * (j - 1)))
posY := (topleftY + (KettleHeight * (i - 1)))
MouseClick, Left, posX, posY
sleep 300
sl := posX
st := posY - 250
sr := posX + 250
sb := posY + 250
ImageSearch, PinX, PinY, sl, st, sr, sb, *30 pin.png
if ErrorLevel = 0
{
MouseClick, Left, PinX, PinY
WindowLeft := PinX
WindowTop := PinY
WindowRight := PinX
WindowBottom := PinY
GetWindow(WindowLeft, WindowTop, WindowRight, WindowBottom, 0)
ol := WindowLeft
ot := WindowTop
nl := ((ScreenLeft + ScreenWidth) - ((WindowRight + 1) - WindowLeft) - ((j-1) * 30))
nt := (ScreenTop + ((i-1) * 30))
MouseClickDrag, Left, ol, ot, nl, nt, 9
WindowLeft := nl + 10
WindowTop := nt + 10
WindowRight := nl + 10
WindowBottom := nt + 10
GetWindow(WindowLeft, WindowTop, WindowRight, WindowBottom)
n := i*j
Kettle := {}
Kettle.l := WindowLeft
Kettle.t := WindowTop
Kettle.r := WindowRight
Kettle.b := WindowBottom
Kettles.Insert(Kettle)
sleep 300
}
else
MsgBox Pin Not Found
}
GetWindow(ByRef left, ByRef top, ByRef right, ByRef bottom, bShowPos=0)
{
origLeft := left
origTop := top
right := left
bottom := top
Loop
{
PixelGetColor, p, left, origTop, RGB
if p = 0x946c46
{
break
}
left := left - 1
}
Loop
{
PixelGetColor, p, right, origTop, RGB
if p = 0x946c46
{
break
}
right := right + 1
}
Loop
{
PixelGetColor, p, origLeft, top, RGB
if p = 0x946c46
{
break
}
top := top - 1
}
Loop
{
PixelGetColor, p, origLeft, bottom, RGB
if p = 0x946c46
{
break
}
bottom := bottom + 1
}
left := left - 2
right := right + 2
top := top - 2
bottom := bottom + 2
return
}
^!p::
Pause
return