<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.atitd.org/wiki/t4w/index.php?action=history&amp;feed=atom&amp;title=Zinc_macro</id>
	<title>Zinc macro - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.atitd.org/wiki/t4w/index.php?action=history&amp;feed=atom&amp;title=Zinc_macro"/>
	<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t4w/index.php?title=Zinc_macro&amp;action=history"/>
	<updated>2026-05-30T23:05:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://www.atitd.org/wiki/t4w/index.php?title=Zinc_macro&amp;diff=27714&amp;oldid=prev</id>
		<title>Xyrrus: New page: Contact Xyrrus with questions/comments  &lt;pre&gt; // Zinc Mining Macro for ACTool // Release Jan-9-2009 // Adapted for Zinc by Xyrrus // Original Macro by Coyan // // This is what I suggest fo...</title>
		<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t4w/index.php?title=Zinc_macro&amp;diff=27714&amp;oldid=prev"/>
		<updated>2009-01-10T07:05:28Z</updated>

		<summary type="html">&lt;p&gt;New page: Contact Xyrrus with questions/comments  &amp;lt;pre&amp;gt; // Zinc Mining Macro for ACTool // Release Jan-9-2009 // Adapted for Zinc by Xyrrus // Original Macro by Coyan // // This is what I suggest fo...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Contact Xyrrus with questions/comments&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// Zinc Mining Macro for ACTool&lt;br /&gt;
// Release Jan-9-2009&lt;br /&gt;
// Adapted for Zinc by Xyrrus&lt;br /&gt;
// Original Macro by Coyan&lt;br /&gt;
//&lt;br /&gt;
// This is what I suggest for setting up for this macro&lt;br /&gt;
// First align your view so you can see all 7 crystals clearly&lt;br /&gt;
// second use Alt-L to lock your camera angle&lt;br /&gt;
// Third before starting this, I suggest you have your mouse sitting over&lt;br /&gt;
//  the first crystal.&lt;br /&gt;
// You will have 3 seconds between the recording of each crystal's location&lt;br /&gt;
// place your mouse over a spot of average gem color for each crystal in turn&lt;br /&gt;
// Once it has identified the 7 crystals, it will run the mine&lt;br /&gt;
//&lt;br /&gt;
// ** FOR ZINC ** position your mouse at an &amp;quot;average&amp;quot; color - in the middle of a gem face, away from edges.&lt;br /&gt;
// Method:&lt;br /&gt;
// Zinc is an &amp;quot;odd man out&amp;quot; game, like  iron. However, instead of the hue/color being different for the odd gem, its the saturation.&lt;br /&gt;
//&lt;br /&gt;
// Accuracy:&lt;br /&gt;
// 100% (117 pulls, no errors) - Xyrrus Jan-9-2009&lt;br /&gt;
&lt;br /&gt;
Constructs&lt;br /&gt;
	MouseX=List // this is an array of mouse X coords for gem sample points&lt;br /&gt;
	MouseY=List // this is an array of mouse X coords for gem sample points&lt;br /&gt;
	CrysSat=List&lt;br /&gt;
	OEOffset=List&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
Constants&lt;br /&gt;
	OELevel = 3  // change this to your Ore Extraction level&lt;br /&gt;
	totalpulls = 500 // How many times do you want it to pull the mine&lt;br /&gt;
	colordiff = 30 // this is used to find a base for comparison, shouldn't need adjusting&lt;br /&gt;
	CDiff = 0&lt;br /&gt;
	CurrHigh = 0&lt;br /&gt;
	Compare = 0&lt;br /&gt;
	Currcrys = 0&lt;br /&gt;
	DIFFFOUND = 0&lt;br /&gt;
	Minval = 0&lt;br /&gt;
	Maxval = 0&lt;br /&gt;
	Delta = 0&lt;br /&gt;
	Tmpval = 0&lt;br /&gt;
	loopcnt = 1 &lt;br /&gt;
	Mousecnt = 1&lt;br /&gt;
	MouseXN = 0&lt;br /&gt;
	MouseYN = 0&lt;br /&gt;
	ColorHS = 0&lt;br /&gt;
	OElistcnt = 0&lt;br /&gt;
	OELvlset = 1&lt;br /&gt;
	CurrCrysSat = 0&lt;br /&gt;
	currentR = 0&lt;br /&gt;
	currentG = 0&lt;br /&gt;
	currentB = 0&lt;br /&gt;
End&lt;br /&gt;
&lt;br /&gt;
// First part that requires a detailed explanation&lt;br /&gt;
// this loop will pause for 3 seconds then grab the current mouse location&lt;br /&gt;
// its purpose is to identify the 7 sampling locations for the crystals&lt;br /&gt;
// when it grabs the sampling spot, it will then echo a . to the chat window&lt;br /&gt;
// make sure you are in your main chat tab.&lt;br /&gt;
Loop 7&lt;br /&gt;
	Delay 3000&lt;br /&gt;
	Listadd MouseX, {MouseX}&lt;br /&gt;
	Listadd MouseY, {MouseY}&lt;br /&gt;
	SayPaste .&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
ListClear OEOffset&lt;br /&gt;
&lt;br /&gt;
loop $totalpulls&lt;br /&gt;
	Compute loopcnt = 1&lt;br /&gt;
	ListClear CrysSat&lt;br /&gt;
	loop 7&lt;br /&gt;
		mousepos MouseX[$loopcnt], MouseY[$loopcnt]&lt;br /&gt;
		LoadRGB MouseX[$loopcnt], MouseY[$loopcnt]&lt;br /&gt;
&lt;br /&gt;
		Call calcSaturation&lt;br /&gt;
		//SayPaste {RGBRed} {RGBGreen} {RGBBlue} CrysHue[$loopcnt] $Tmpval for testing&lt;br /&gt;
		Compute loopcnt = $loopcnt + 1&lt;br /&gt;
		Delay 100&lt;br /&gt;
	END&lt;br /&gt;
	//Delay 100000 for testing&lt;br /&gt;
	CALL FindtheOdd&lt;br /&gt;
	&lt;br /&gt;
	CALL OreExtractionstore&lt;br /&gt;
		&lt;br /&gt;
	ListCount OEOffset, $OElistcnt&lt;br /&gt;
	IF $OELevel &amp;gt;= $OElistcnt&lt;br /&gt;
		Compute OELvlset = OEOffset[1] // work the current crystal until we are at our OE Level&lt;br /&gt;
	ELSE&lt;br /&gt;
		Compute OELvlset = OEOffset[$OELevel]&lt;br /&gt;
	END&lt;br /&gt;
	//Saypaste $OELevel $OElistcnt $OELvlset&lt;br /&gt;
	&lt;br /&gt;
	mousepos MouseX[$OELvlset], MouseY[$OELvlset]&lt;br /&gt;
	Delay 200 //200&lt;br /&gt;
	leftclick&lt;br /&gt;
	Compute MouseXN = MouseX[$OELvlset] + 15 // adjust this if you need to for the menu click&lt;br /&gt;
	Compute MouseYN = MouseY[$OELvlset] - 15 // adjust this if you need to for the menu click&lt;br /&gt;
	Mousepos $MouseXN, $MouseYN&lt;br /&gt;
	Delay 200&lt;br /&gt;
	Leftclick&lt;br /&gt;
	&lt;br /&gt;
	Delay 4300 // Delay to manage the str/perc timer on mining, adjust as needed&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
Procedure calcSaturation // This procedure calculates the Hue of the crystal&lt;br /&gt;
	compute currentR = {RGBRed} / 255&lt;br /&gt;
	compute currentG = {RGBRed} / 255&lt;br /&gt;
	compute currentB = {RGBRed} / 255&lt;br /&gt;
&lt;br /&gt;
Compute Minval = 0&lt;br /&gt;
	Compute Maxval = 255&lt;br /&gt;
	IF {RGBRed} &amp;gt; {RGBGreen}&lt;br /&gt;
		Compute Minval = {RGBGreen}&lt;br /&gt;
		Compute Maxval = {RGBRed}&lt;br /&gt;
	Else&lt;br /&gt;
		Compute Maxval = {RGBGreen}&lt;br /&gt;
		Compute Minval = {RGBRed}&lt;br /&gt;
	END&lt;br /&gt;
	IF {RGBBlue} &amp;lt; $Minval&lt;br /&gt;
		Compute Minval = {RGBBlue}&lt;br /&gt;
	ELSE&lt;br /&gt;
		IF {RGBBlue} &amp;gt; $Maxval&lt;br /&gt;
			Compute Maxval = {RGBBlue}&lt;br /&gt;
		END&lt;br /&gt;
	END&lt;br /&gt;
&lt;br /&gt;
	Compute Delta = $Maxval - $Minval&lt;br /&gt;
&lt;br /&gt;
	compute Tmpval = $maxval + $minval&lt;br /&gt;
	compute Tmpval = $tmpval / 2&lt;br /&gt;
&lt;br /&gt;
if $delta = 0                     //This is a gray, no chroma...&lt;br /&gt;
   compute CurrCrysSat = 0&lt;br /&gt;
else                                    //Chromatic data...&lt;br /&gt;
   if $tmpval &amp;lt; 0.5&lt;br /&gt;
   		compute currcryssat = $maxval + $minval&lt;br /&gt;
   		compute currCrysSat = $delta / $currCrysSat &lt;br /&gt;
   else&lt;br /&gt;
   		compute currcryssat = 2 - $maxval&lt;br /&gt;
   		compute currcryssat = $currCrysSat - $minval&lt;br /&gt;
   		compute currCrysSat = $delta / $currCrysSat &lt;br /&gt;
   end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
	Compute CurrCrysSat = $CurrCrysSat * 100&lt;br /&gt;
	Listadd CrysSat, $CurrCrysSat&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
Procedure FindtheOdd&lt;br /&gt;
	Call Findcompare&lt;br /&gt;
	Compute CDiff = 0&lt;br /&gt;
	Compute CurrHigh = 0&lt;br /&gt;
	&lt;br /&gt;
	Compute Currcrys = 1&lt;br /&gt;
	loop 7 &lt;br /&gt;
		IF $Currcrys &amp;lt;&amp;gt; $Compare&lt;br /&gt;
			Compute ColorHS = CrysSat[$Currcrys] - CrysSat[$Compare]&lt;br /&gt;
			IF $ColorHS &amp;lt; 0&lt;br /&gt;
				Compute ColorHS = 0 - $ColorHS&lt;br /&gt;
			END&lt;br /&gt;
			&lt;br /&gt;
			IF $ColorHS &amp;gt; $CDiff&lt;br /&gt;
				Compute CDiff = $ColorHS&lt;br /&gt;
				Compute CurrHigh = $Currcrys&lt;br /&gt;
			END&lt;br /&gt;
		END&lt;br /&gt;
		&lt;br /&gt;
		Compute Currcrys = $Currcrys + 1&lt;br /&gt;
	END&lt;br /&gt;
	&lt;br /&gt;
	Compute Mousecnt = $CurrHigh&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
Procedure OreExtractionstore&lt;br /&gt;
	ListCount OEOffset, $OElistcnt&lt;br /&gt;
	IF $OElistcnt = 0&lt;br /&gt;
		Listadd OEOffset, $Mousecnt&lt;br /&gt;
	ELSE&lt;br /&gt;
		IF $OElistcnt = 1&lt;br /&gt;
			Listadd OEOffset, OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 2&lt;br /&gt;
			Listadd OEOffset, OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 3&lt;br /&gt;
			Listadd OEOffset, OEOffset[3]&lt;br /&gt;
			Compute OEOffset[3] = OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 4&lt;br /&gt;
			Listadd OEOffset, OEOffset[4]&lt;br /&gt;
			Compute OEOffset[4] = OEOffset[3]&lt;br /&gt;
			Compute OEOffset[3] = OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 5&lt;br /&gt;
			Listadd OEOffset, OEOffset[5]&lt;br /&gt;
			Compute OEOffset[5] = OEOffset[4]&lt;br /&gt;
			Compute OEOffset[4] = OEOffset[3]&lt;br /&gt;
			Compute OEOffset[3] = OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 6&lt;br /&gt;
			Listadd OEOffset, OEOffset[6]&lt;br /&gt;
			Compute OEOffset[6] = OEOffset[5]&lt;br /&gt;
			Compute OEOffset[5] = OEOffset[4]&lt;br /&gt;
			Compute OEOffset[4] = OEOffset[3]&lt;br /&gt;
			Compute OEOffset[3] = OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
		IF $OElistcnt = 7&lt;br /&gt;
			Compute OEOffset[7] = OEOffset[6]&lt;br /&gt;
			Compute OEOffset[6] = OEOffset[5]&lt;br /&gt;
			Compute OEOffset[5] = OEOffset[4]&lt;br /&gt;
			Compute OEOffset[4] = OEOffset[3]&lt;br /&gt;
			Compute OEOffset[3] = OEOffset[2]&lt;br /&gt;
			Compute OEOffset[2] = OEOffset[1]&lt;br /&gt;
		END&lt;br /&gt;
&lt;br /&gt;
		Compute OEOffset[1] = $Mousecnt&lt;br /&gt;
	END&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&lt;br /&gt;
Procedure FindCompare // For Iron we need to find the common crystals in the first 3&lt;br /&gt;
	&lt;br /&gt;
	Compute ColorHS = CrysSat[1] - CrysSat[2]&lt;br /&gt;
	IF $ColorHS &amp;lt; 0&lt;br /&gt;
		Compute ColorHS = 0 - $ColorHS&lt;br /&gt;
	END&lt;br /&gt;
	&lt;br /&gt;
	IF $ColorHS &amp;lt; $colordiff&lt;br /&gt;
		Compute Compare = 1&lt;br /&gt;
	ELSE&lt;br /&gt;
		Compute ColorHS = CrysSat[1] - CrysSat[3]&lt;br /&gt;
		IF $ColorHS &amp;lt; 0&lt;br /&gt;
			Compute ColorHS = 0 - $ColorHS&lt;br /&gt;
		END&lt;br /&gt;
			&lt;br /&gt;
		IF $ColorHS &amp;lt; $colordiff&lt;br /&gt;
			Compute Compare = 1&lt;br /&gt;
		ELSE&lt;br /&gt;
			Compute Compare = 2&lt;br /&gt;
		END&lt;br /&gt;
	END&lt;br /&gt;
&lt;br /&gt;
END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Xyrrus</name></author>
	</entry>
</feed>