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.

Crematory Macro

From A Tale in the Desert
Revision as of 19:37, 15 November 2009 by Anukhu (talk | contribs) (New page: This is my crematory macro for ACTool <pre> // This currently works for my screen resolution 1280:800 with ATITD in full screen // Pin the crematory window in the upper left of the screen...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

This is my crematory macro for ACTool

// This currently works for my screen resolution 1280:800 with ATITD in full screen
// Pin the crematory window in the upper left of the screen as far into the corner as possible
// Load with stuff manually and make sure the window is fully refreshed so that the 
// "fire crematory" button appears and there is no slider bar!

// Start the macro - it will click the fire button which will also bring ATITD to the top
// Once the crematory has finished go back to ACTOOL and stop the macro - it currently just 
// has a huge crude loop - it would be relatively easy to monitor the progress bar but I 
// haven't done that yet

// For different screen resolutions I guess use "pixie" or something similar to get coords
// Need to change slider and button numbers under slider control for your particular crematory
// (The wiki explains how to analyse your crematory)


	Constants 
		count = 0
		counthi = 0
		countlo = 0
		clickflag = 0
		flag = 1
		posSlider1 = 0
		posSlider2 = 0
		posSlider3 = 0
		posSlider4 = 0
		posSlider5 = 0
		posSlider6 = 0
		posSlider7 = 0
		comSlider1 = 0
		comSlider2 = 0
		posSlider1old = 0
		posSlider2old = 0
		posSlider3old = 0
		posSlider4old = 0
		posSlider5old = 0
		posSlider6old = 0
		posSlider7old = 0
		// Vertical position of middle of slider bar
		midSlider = 296
		// Horizontal positions of seven slider bars
		hrzSlider1 = 29
		hrzSlider2 = 65
		hrzSlider3 = 101
		hrzSlider4 = 137
		hrzSlider5 = 173
		hrzSlider6 = 209
		hrzSlider7 = 245
		// Vertical position of button centres
		vrtButton = 376
		// Horizontal positions of five button centres
		hrzButton1 = 57
		hrzButton2 = 97
		hrzButton3 = 137
		hrzButton4 = 177
		hrzButton5 = 217
	END

// Clicks to fire the crematory (need to specify centre of fire button)
mousepos 125, 100
delay 100
LeftClick

// First call to obtain initial positions of sliders
call GETSLIDERPOS
Compute posSlider1old = $posSlider1
Compute posSlider2old = $posSlider2
Compute posSlider3old = $posSlider3
Compute posSlider4old = $posSlider4
Compute posSlider5old = $posSlider5
Compute posSlider6old = $posSlider6
Compute posSlider7old = $posSlider7

// Crude loop at the moment. Should really monitor the progress bar. 

loop 250

	call GETSLIDERPOS

// One slider per button control
// Need to alter slider and button numbers for particular crematory

	if $posSlider2 > 0
		if $posSlider2 > $posSlider2old
			mousepos $hrzButton4,$vrtButton
			delay 100
			LeftClick
		END
	END
	if $posSlider2 < 0
		if $posSlider2 < $posSlider2old
			mousepos $hrzButton4,$vrtButton
			delay 100
			LeftClick
		END
	END

	if $posSlider4 > 0
		if $posSlider4 > $posSlider4old
			mousepos $hrzButton5,$vrtButton
			delay 100
			LeftClick
		END
	END
	if $posSlider4 < 0
		if $posSlider4 < $posSlider4old
			mousepos $hrzButton5,$vrtButton
			delay 100
			LeftClick
		END
	END

	if $posSlider5 > 0
		if $posSlider5 > $posSlider5old
			mousepos $hrzButton2,$vrtButton
			delay 100
			LeftClick
		END
	END
	if $posSlider5 < 0
		if $posSlider5 < $posSlider5old
			mousepos $hrzButton2,$vrtButton
			delay 100
			LeftClick
		END
	END

// Two sliders per button control (use centre of mass, i.e. average)
// Need to alter slider and button numbers for particular crematory

	Compute comSlider1 = ($posSlider1 + $posSlider7)/2
	if $comSlider1 > 0
		Compute clickflag = 0
		if $posSlider1 > $posSlider1old
			Compute clickflag = 1
		END
		if $posSlider7 > $posSlider7old
			Compute clickflag = 1
		END
		if $clickflag = 1
			mousepos $hrzButton1,$vrtButton
			delay 100
			LeftClick
		END
	END
	if $comSlider1 < 0
		Compute clickflag = 0
		if $posSlider1 < $posSlider1old
			Compute clickflag = 1
		END
		if $posSlider7 < $posSlider7old
			Compute clickflag = 1
		END
		if $clickflag = 1
			mousepos $hrzButton1,$vrtButton
			delay 100
			LeftClick
		END
	END

	Compute comSlider2 = ($posSlider3 + $posSlider6)/2
	if $comSlider2 > 0
		Compute clickflag = 0
		if $posSlider3 > $posSlider3old
			Compute clickflag = 1
		END
		if $posSlider6 > $posSlider6old
			Compute clickflag = 1
		END
		if $clickflag = 1
			mousepos $hrzButton3,$vrtButton
			delay 100
			LeftClick
		END
	END
	if $comSlider2 < 0
		Compute clickflag = 0
		if $posSlider3 < $posSlider3old
			Compute clickflag = 1
		END
		if $posSlider6 < $posSlider6old
			Compute clickflag = 1
		END
		if $clickflag = 1
			mousepos $hrzButton3,$vrtButton
			delay 100
			LeftClick
		END
	END


	Compute posSlider1old = $posSlider1
	Compute posSlider2old = $posSlider2
	Compute posSlider3old = $posSlider3
	Compute posSlider4old = $posSlider4
	Compute posSlider5old = $posSlider5
	Compute posSlider6old = $posSlider6
	Compute posSlider7old = $posSlider7

END

// Procedure to find slider positions

Procedure GETSLIDERPOS
	
	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider1, $midSlider
			Compute posSlider1 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider1, $counthi
			Compute posSlider1 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider1, $countlo
			Compute posSlider1 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider2, $midSlider
			Compute posSlider2 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider2, $counthi
			Compute posSlider2 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider2, $countlo
			Compute posSlider2 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider3, $midSlider
			Compute posSlider3 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider3, $counthi
			Compute posSlider3 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider3, $countlo
			Compute posSlider3 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider4, $midSlider
			Compute posSlider4 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider4, $counthi
			Compute posSlider4 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider4, $countlo
			Compute posSlider4 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider5, $midSlider
			Compute posSlider5 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider5, $counthi
			Compute posSlider5 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider5, $countlo
			Compute posSlider5 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider6, $midSlider
			Compute posSlider6 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider6, $counthi
			Compute posSlider6 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider6, $countlo
			Compute posSlider6 = $midSlider - $countlo
			Compute flag = 0
		END
	END

	Compute counthi = $midSlider
	Compute countlo = $midSlider
	Compute flag = 1
	IsBlack $hrzSlider7, $midSlider
			Compute posSlider7 = 0
			Compute flag = 0
	END	
	while $flag > 0
		Compute counthi = $counthi + 6
		IsBlack $hrzSlider7, $counthi
			Compute posSlider7 = $midSlider - $counthi
			Compute flag = 0
		END
		Compute countlo = $countlo - 6
		IsBlack $hrzSlider7, $countlo
			Compute posSlider7 = $midSlider - $countlo
			Compute flag = 0
		END
	END

END