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