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:Cegaiel/Macros/Glassbench/Code

From A Tale in the Desert
Jump to navigationJump to search
; Glass Bench
; Date: 6/2/2010
; Author: Cegaiel

; Ctrl+P (once to Pause, again to resume
; Ctrl+R to reload/reset script

; Note: The timer adds 6 seconds to your project (ie a 60s project will take 66s). 
; This is to ensure teppy time and lag doesn't make it click too soon.
; If you want to adjust this extra 6 seconds, scroll down, half way down the script and look for: seconds := (seconds + 6)
; Change the + 6 to however many seconds you want to offset the default project timer.


; This is the location of the heat bar (the first bar).  Use my GetMouse Position macro to determine the coordinates
; at your resolution if you are changing it. The below 106 and 138 is correct for 1024x768 resolution (pinned uppper left corner).
; You are only configuring the X position, the Y position is gathered while the script runs (it asks you to click the bar to get Y)

; Configuration: ========

curHeatMinX = 106 ; Around 1600-1650
curHeatMaxX = 138 ;Around 2200 degrees

; =======================



	Gui, Add, Text,, Choose amount of seconds for your project:
	Gui, Add, Text,,
	( LTrim
	60s: Glass Rod
	90s: Glass Pipe, Find Glass Pipe, Fine Glass Rod
	120s: Glass Blade, Sheet Glass

	)

	Gui, Add, DropDownList, vSeconds Choose1, 60|90|120

	Gui, Add, Text,, How many?
	Gui, Add, Edit, vQty wp number

	Gui, Add, Button, gSubmit, Next Step	
	Gui, Show
	return


	Submit:
	Gui, Submit

	if (Qty < 0)
	{
	Msgbox, You did not enter a Qty!`n`nTry again...
	RELOAD
	PAUSE
	}


	Gui, Destroy
	Gui, +AlwaysOnTop +ToolWindow
	Gui, Font, normal
	Gui, Add, Text, vRefresh,
	( LTrim
	Now middle click (click mouse-wheel) a spot on pinup to refresh screen.

	(Hover over around where it says "This is a/your Glazier's Bench"

	)
	Gui, Show

	WinGet, GameWinHandle, ID, eGenesis Client
		WinActivate, eGenesis Client


	loop
	{
		WinActivate, eGenesis Client
		CoordMode, Mouse, Relative
		KeyWait, MButton, D
		KeyWait, MButton
		MouseGetPos, TestX, TestY, WinHandle
		if (WinHandle = GameWinHandle)
		{

			Gosub, Record
		}
		else
		{
			Gui, Destroy
			break
		}
	}
	return

; MineNum1 = Refresh
; MineNum2 = Project Location
; MineNum3 = Temperature Bar Y Position


	Record:
	MineNum++
	MouseGetPos, MineX%MineNum%, MineY%MineNum%


	if (MineNum = 1) {
	GuiControl, Text, Refresh,  Step 2:  Middle click Glass Project on Menu (ie Make a Glass Jar)`n`n`n
	return


	} else if (MineNum = 2) {
	GuiControl, Text, Refresh,  Step 3: Click Y position of the Heat bar`n`nIt is the first bar (above Temperature: 0)`n`nClick anywhere in the bar...
	return


	} else  {
	Gui, Destroy
	}



	Gui, +AlwaysOnTop +ToolWindow
	Gui, Add, Text, vMineNumText, Stand by, the macro will begin very shortly...`n`n`n`n`n`n`n
	Gui, Font, norm
	Gui, Show



	seconds := (seconds + 6)
	gseconds = 0
	cseconds = 0
	counter = 0


	GuiControl, Text, MineNumText, Press F2 when the heat is at operating`ntemperature and has stopped spiking.`n`nThe macro will then take over.`n`nIdea range to hit F2 is 1800-2000.
	KeyWait, F2, D





	SetDefaultMouseSpeed, 0

	#Persistent 
	SetTimer, MakeGlass, %gseconds%


	Loop
	{


			WinActivate, eGenesis Client

			;curHeatMin := FindRed(curHeatMinX, MineY3)
			curHeatMax := FindRed(curHeatMaxX, MineY3)

			if (curHeatMax = 1)
			{
			MouseGetPos, OldMX, OldMY
			ImageSearch, OutputX, OutputY, 9, 42, 283, 299, *50 add2cc.PNG
			OutputX := OutputX +50
			OutputY := OutputY + 2
			Click, %OutputX%, %OutputY% ;Add 2 cc
			MouseMove, %OldMX%, %OldMY%, 0			
			cseconds = 100
			Sleep 98000

			} else if (curHeatMax = 0) {
			GuiControl, Text, MineNumText, %gseconds%s remaining for next project`n%cseconds%s until next 2cc add.`n`nMaking %counter% of %qty% glass projects`n`nHeat too high, cooling down!
			}

	}



FindRed(TX, TY)
{	
	PixelSearch, PX, PY, TX, TY, TX+1, TY+1, 0x830605, 55, Fast|RGB
	return ErrorLevel
}

MakeGlass:

if (gseconds = 0)
{
WinActivate, eGenesis Client
curHeatMin := FindRed(curHeatMinX, MineY3)
curHeatMax := FindRed(curHeatMaxX, MineY3)
}

;if (gseconds = 0) and (curHeatMin = 0) and (curHeatMax = 1)
if (gseconds = 0) and (curHeatMin = 1) and (curHeatMax = 1)
{
WinActivate, eGenesis Client
MouseGetPos, OldMX, OldMY
Click, %MineX1%, %MineY1% ;Refresh
Sleep 100
Click %MineX2%, %MineY2% ;Make glass project
gseconds := seconds
MouseMove, %OldMX%, %OldMY%, 0			


	if (counter = qty) and (cseconds = 0)
	{
	Msgbox, All done!`n`nExiting script...
	EXIT
	} else {
	counter ++
	}

}

gseconds -- ;glass timer
cseconds -- ;cc timer

if (cseconds < 0)
cseconds = 0

if (gseconds < 0)
gseconds = 0


if (curHeatMin = 0) and (curHeatMax = 1)
{
GuiControl, Text, MineNumText, %gseconds%s remaining for next project`n%cseconds%s until next 2cc add.`n`nMaking %counter% of %qty% glass projects

} else if (curHeatMin = 1) {
GuiControl, Text, MineNumText, %gseconds%s remaining for next project`n%cseconds%s until next 2cc add.`n`nMaking %counter% of %qty% glass projects`n`nHeat too low, standby while the temp increases.
}


sleep 1000
return

^r::reload
^p::Pause