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.
Titanium Macro
From A Tale in the Desert
Jump to navigationJump to search
// ATITD Titanium Ore Mining Macro for ACTool
// RELEASE: Jan-9-2009
// Script Adapted for Titanium by Xyrrus
// Original Mining Script by Coyan
//
// Setup:
//
// First align your view so you can see all 7 crystals clearly
// second use Alt-L to lock your camera angle
//
// 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 TITANIUM **
// Place your cursor over an 'average' color for the gem. The titanium macro is quite forgiving about misplaced clicks.
//
// Method:
// The goal is to click the gem which has been the same for the longest. Macro stores the previous and current RGB values for each gem. When a match is found, the gem's streak is updated. The macro clicks on the gem with the longest streak.
// Attempted to compare hex values for more efficient storage, but it resulted in floating point errors (?)
//
// Accuracy:
// Appears 95%+
// Tested Jan-9-2008 Xyrrus
// Every so often it fails for no apparant reason. If you can figure out why, please chat or email me - Xyrrus
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
previousRValues=List
currentRValues=List
previousGValues=List
currentGValues=List
previousBValues=List
currentBValues=List
previousStreaks=List
currentStreaks=List
END
Constants
// ** User Settable Constants **
totalpulls = 100 // How many times do you want it to pull the mine.
RepairAdjust = 15 // Adjust the vertical positining of the mouse, used when
// ** Other Variable **
currentR = 0
currentG = 0
currentB = 0
previousR = 0
previousG = 0
previousB = 0
longestGem = 1 // Set this to 1, because we have no idea which is the correct gem to select the first time around.
longestStreak = 0
currentGem = 0
Mousecnt = 1
MouseX = 0
MouseY = 0
//trash variables
temp1 = 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
// Need to setup the previous values
Loop 7
listAdd previousRValues, 0
listAdd previousGValues, 0
listAdd previousBValues, 0
listAdd previousStreaks, 0
End
// Main Gathering Loop
loop $totalpulls
Compute currentGem = 1
Compute longestStreak = 0
// Clear the Current List
ListClear currentRValues
ListClear currentGValues
ListClear currentBValues
ListClear currentStreaks
loop 7
mousepos MouseX[$currentGem], MouseY[$currentGem]
LoadRGB MouseX[$currentGem], MouseY[$currentGem]
// Setup the List
CALL UpdateGemInfo
Compute currentGem = $currentGem + 1
Delay 100
END
//Delay 100000 for testing
// Set the Old List to the Current List
ListAssign currentRValues, previousRValues
ListAssign currentGValues, previousGValues
ListAssign currentBValues, previousBValues
ListAssign currentStreaks, previousStreaks
//keys {RETURN}
//say mining $longestgem
mousepos MouseX[$longestGem], MouseY[$longestGem]
Delay 200 //200
leftclick
Compute MouseX = MouseX[$longestGem] + 15 // adjust this if you need to for the menu click
Compute MouseY = MouseY[$longestGem] - $repairadjust // adjust this if you need to for the menu click
Mousepos $MouseX, $MouseY
Delay 200
Leftclick
Delay 4300 // Delay to manage the str/perc timer on mining, adjust as needed
end // Main Loop
// UpdateGemInfo
Procedure UpdateGemInfo
// Get the RGB Values for Each Gem
Compute currentR = {RGBRed}
Compute currentG = {RGBGreen}
Compute currentB = {RGBBlue}
listAdd currentRValues, $currentR
listAdd currentGValues, $currentG
listAdd currentBValues, $currentB
setConst previousR = previousRValues[$currentGem]
setConst previousG = previousGValues[$currentGem]
setConst previousB = previousBValues[$currentGem]
if $currentR = $previousR AND $currentG = $previousG AND $currentB = $previousB
compute temp1 = previousStreaks[$currentGem] + 1
listAdd currentStreaks, $temp1
else
listAdd currentStreaks, 0
end
if currentStreaks[$currentGem] > $longestStreak
compute longestStreak = currentStreaks[$currentGem]
compute longestGem = $currentGem
end
END // Update Gem Info