<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.atitd.org/wiki/t6w/index.php?action=history&amp;feed=atom&amp;title=User%3ABardoth%2Fupdates_info</id>
	<title>User:Bardoth/updates info - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.atitd.org/wiki/t6w/index.php?action=history&amp;feed=atom&amp;title=User%3ABardoth%2Fupdates_info"/>
	<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t6w/index.php?title=User:Bardoth/updates_info&amp;action=history"/>
	<updated>2026-06-04T02:43:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>http://www.atitd.org/wiki/t6w/index.php?title=User:Bardoth/updates_info&amp;diff=247690&amp;oldid=prev</id>
		<title>Bardoth: Created page with &quot;&lt;pre&gt; function findCoords()   lsPrintln(&quot;findCoords&quot;);   local result = nil;   local anchor = findText(&quot;0,&quot;);   if(not anchor) then     anchor = findText(&quot;1, &quot;);   end   if(not a...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.atitd.org/wiki/t6w/index.php?title=User:Bardoth/updates_info&amp;diff=247690&amp;oldid=prev"/>
		<updated>2013-11-08T00:37:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;pre&amp;gt; function findCoords()   lsPrintln(&amp;quot;findCoords&amp;quot;);   local result = nil;   local anchor = findText(&amp;quot;0,&amp;quot;);   if(not anchor) then     anchor = findText(&amp;quot;1, &amp;quot;);   end   if(not a...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
function findCoords()&lt;br /&gt;
  lsPrintln(&amp;quot;findCoords&amp;quot;);&lt;br /&gt;
  local result = nil;&lt;br /&gt;
  local anchor = findText(&amp;quot;0,&amp;quot;);&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;1, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;2, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;3, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;4, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;5, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;6, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;7, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;8, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if(not anchor) then&lt;br /&gt;
    anchor = findText(&amp;quot;9, &amp;quot;);&lt;br /&gt;
  end&lt;br /&gt;
  if anchor then&lt;br /&gt;
    lsPrintln(&amp;quot;anchor&amp;quot;);&lt;br /&gt;
    local window = getWindowBorders(anchor[0], anchor[1]);&lt;br /&gt;
    local lines = findAllText(nil, window, NOPIN);&lt;br /&gt;
    for i=1,#lines do&lt;br /&gt;
      lsPrintln(&amp;quot;LINE &amp;quot; .. i .. &amp;quot; : &amp;quot; .. table.concat(lines[i], &amp;quot;,&amp;quot;));&lt;br /&gt;
    end&lt;br /&gt;
    local str = lines[#lines][2];&lt;br /&gt;
    lsPrintln(&amp;quot;lines: &amp;quot; .. str);&lt;br /&gt;
    local a, b, x, y = string.find(str, &amp;quot;: ([0-9-]+)\, ([0-9-]+)&amp;quot;);&lt;br /&gt;
    result = makePoint(tonumber(x), tonumber(y));&lt;br /&gt;
    if not result[0] or not result[1] then&lt;br /&gt;
      result = nil;&lt;br /&gt;
      lsPrintln(&amp;quot;Failed to find coords&amp;quot;);&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  return result;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function walkTo(dest)&lt;br /&gt;
  local coords = findCoords();&lt;br /&gt;
  while coords[0] ~= dest[0] or coords[1] ~= dest[1] do&lt;br /&gt;
    while coords[0] &amp;lt; dest[0] do&lt;br /&gt;
      stepTo(makePoint(1, 0));&lt;br /&gt;
      coords = findCoords();&lt;br /&gt;
      checkBreak();&lt;br /&gt;
    end&lt;br /&gt;
    while coords[0] &amp;gt; dest[0] do&lt;br /&gt;
      stepTo(makePoint(-1, 0));&lt;br /&gt;
      coords = findCoords();&lt;br /&gt;
      checkBreak();&lt;br /&gt;
    end&lt;br /&gt;
    while coords[1] &amp;lt; dest[1] do&lt;br /&gt;
      stepTo(makePoint(0, -1));&lt;br /&gt;
      coords = findCoords();&lt;br /&gt;
      checkBreak();&lt;br /&gt;
    end&lt;br /&gt;
    while coords[1] &amp;gt; dest[1] do&lt;br /&gt;
      stepTo(makePoint(0, 1));&lt;br /&gt;
      coords = findCoords();&lt;br /&gt;
      checkBreak();&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  return coords;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local gpsInit = false;&lt;br /&gt;
local gpsCenter;&lt;br /&gt;
local gpsStep;&lt;br /&gt;
&lt;br /&gt;
function initStep()&lt;br /&gt;
  if not gpsInit then&lt;br /&gt;
    srReadScreen();&lt;br /&gt;
    gpsInit = true;&lt;br /&gt;
    -- Macro written with 1720 pixel wide window&lt;br /&gt;
&lt;br /&gt;
    xyWindowSize = srGetWindowSize();&lt;br /&gt;
&lt;br /&gt;
    local pixel_scale = xyWindowSize[0] / 1720;&lt;br /&gt;
    lsPrintln(&amp;quot;pixel_scale &amp;quot; .. pixel_scale);&lt;br /&gt;
&lt;br /&gt;
    gpsStep = makePoint(340*pixel_scale, 380*pixel_scale);&lt;br /&gt;
&lt;br /&gt;
    local walk_x_drift = 14;&lt;br /&gt;
    local walk_y_drift = 18;&lt;br /&gt;
    if (lsScreenX &amp;lt; 1280) then &lt;br /&gt;
      -- Have to click way off center in order to not move at high resolutions&lt;br /&gt;
      walk_x_drift = math.floor(walk_x_drift * pixel_scale);&lt;br /&gt;
      walk_y_drift = math.floor(walk_y_drift * pixel_scale);&lt;br /&gt;
    else&lt;br /&gt;
      -- Very little drift at these resolutions, clicking dead center&lt;br /&gt;
      -- barely moves&lt;br /&gt;
      walk_x_drift = 1;&lt;br /&gt;
      walk_y_drift = 1;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    gpsCenter = makePoint(xyWindowSize[0] / 2 - walk_x_drift,&lt;br /&gt;
			  xyWindowSize[1] / 2 + walk_y_drift);&lt;br /&gt;
  end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function stepTo(dir)&lt;br /&gt;
  initStep();&lt;br /&gt;
  safeClick(gpsCenter[0] + dir[0] * gpsStep[0],&lt;br /&gt;
	    gpsCenter[1] + dir[1] * gpsStep[1]);&lt;br /&gt;
  sleepWithStatus(500, &amp;quot;Walking...&amp;quot;);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
local ffc_coordsPos = nil;&lt;br /&gt;
local ffc_dash = -1;&lt;br /&gt;
local ffc_comma = -2;&lt;br /&gt;
&lt;br /&gt;
function fastFindCoords()&lt;br /&gt;
	local pos;&lt;br /&gt;
	if(not ffc_coordsPos) then&lt;br /&gt;
		pos = srFindImage(&amp;quot;Year.png&amp;quot;,5000);&lt;br /&gt;
		if(not pos) then&lt;br /&gt;
			pos = findText(&amp;quot;Year&amp;quot;);&lt;br /&gt;
			if(not pos) then&lt;br /&gt;
				pos = findText(&amp;quot;2, &amp;quot;);&lt;br /&gt;
				if(not pos) then&lt;br /&gt;
					pos = findText(&amp;quot;3, &amp;quot;);&lt;br /&gt;
					if(not pos) then&lt;br /&gt;
						lsPrintln(&amp;quot;fastFindCoords() : Can't find the clock&amp;quot;);&lt;br /&gt;
						return nil;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		local window = getWindowBorders(pos[0], pos[1]);&lt;br /&gt;
		window.top = window.top + 13;&lt;br /&gt;
		window.y = window.y + 13;&lt;br /&gt;
		window.height = window.height - 13;&lt;br /&gt;
		window.bottom = window.y + window.height;&lt;br /&gt;
		pos = srFindImageInRange(&amp;quot;colon.png&amp;quot;, window.x, window.y, window.width, window.height,5000);&lt;br /&gt;
		if(not pos) then&lt;br /&gt;
			lsPrintln(&amp;quot;fastFindCoords() : Can't find the colon on the second line of the clock&amp;quot;);&lt;br /&gt;
			return nil;&lt;br /&gt;
		end&lt;br /&gt;
		window.width = window.width + window.x - pos[0] - 5;&lt;br /&gt;
		window.left = pos[0] + 5;&lt;br /&gt;
		window.x = pos[0] + 5;&lt;br /&gt;
		window.right = window.x + window.width;&lt;br /&gt;
		window.top = pos[1];&lt;br /&gt;
		window.y = window.top;&lt;br /&gt;
		window.height = window.bottom - window.top;&lt;br /&gt;
		ffc_coordsPos = window;&lt;br /&gt;
	end&lt;br /&gt;
	if(not ffc_coordsPos) then&lt;br /&gt;
		lsPrintln(&amp;quot;fastFindCoords() : Can't find the coordinates&amp;quot;);&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local digits = ffc_readDigits(ffc_coordsPos);&lt;br /&gt;
	if(digits) then&lt;br /&gt;
		return ffc_parseDigits(digits);&lt;br /&gt;
	end&lt;br /&gt;
	return nil;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ffc_parseDigits(digits)&lt;br /&gt;
	local x;&lt;br /&gt;
	local pos;&lt;br /&gt;
	x, pos = ffc_parseOneCoord(digits);&lt;br /&gt;
	local y;&lt;br /&gt;
	y, pos = ffc_parseOneCoord(digits,pos);&lt;br /&gt;
	if((not x) or (not y)) then&lt;br /&gt;
		if(not x) then&lt;br /&gt;
			lsPrintln(&amp;quot;fastFindCoords() : x is nil&amp;quot;);&lt;br /&gt;
		end&lt;br /&gt;
		if(not y) then&lt;br /&gt;
			lsPrintln(&amp;quot;fastFindCoords() : y is nil&amp;quot;);&lt;br /&gt;
		end&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	return makePoint(x,y);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ffc_parseOneCoord(digits,pos)&lt;br /&gt;
	if(pos == nil) then&lt;br /&gt;
		pos = 1;&lt;br /&gt;
	end&lt;br /&gt;
	if(pos &amp;gt; #digits) then&lt;br /&gt;
		lsPrintln(&amp;quot;ffc_parseOneCoord(): pos &amp;gt; #digits(&amp;quot; .. #digits .. &amp;quot;)&amp;quot;);&lt;br /&gt;
		return nil, nil;&lt;br /&gt;
	end&lt;br /&gt;
	local negative = false;&lt;br /&gt;
	local val = 0;&lt;br /&gt;
	local i;&lt;br /&gt;
	for i=pos,#digits do&lt;br /&gt;
		if(digits[i][2] == ffc_comma) then&lt;br /&gt;
			if(negative) then&lt;br /&gt;
				val = val * -1;&lt;br /&gt;
			end&lt;br /&gt;
			return val, i+1;&lt;br /&gt;
		end&lt;br /&gt;
		if(digits[i][2] == ffc_dash) then&lt;br /&gt;
			negative = true;&lt;br /&gt;
		else&lt;br /&gt;
			val = val * 10 + digits[i][2];&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if(negative) then&lt;br /&gt;
		val = val * -1;&lt;br /&gt;
	end&lt;br /&gt;
	return val, #digits+1;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ffc_readDigits(box)&lt;br /&gt;
	local digits = {};&lt;br /&gt;
	local i;&lt;br /&gt;
	for i=0,9 do&lt;br /&gt;
		local x = ffc_coordsPos.x;&lt;br /&gt;
		local pos = true;&lt;br /&gt;
		while((x &amp;lt; ffc_coordsPos.x + ffc_coordsPos.width - 6) and pos) do&lt;br /&gt;
			pos = srFindImageInRange(i .. &amp;quot;.png&amp;quot;,x,ffc_coordsPos.y,ffc_coordsPos.width,ffc_coordsPos.height,5000);&lt;br /&gt;
			if(pos) then&lt;br /&gt;
				digits[#digits+1] = {pos[0],i};&lt;br /&gt;
				x = pos[0] + 7;&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if(#digits &amp;lt; 2) then&lt;br /&gt;
		lsPrintln(&amp;quot;ffc_readDigits() : Unable to read any digits&amp;quot;);&lt;br /&gt;
		return nil;&lt;br /&gt;
	end&lt;br /&gt;
	local x = ffc_coordsPos.x;&lt;br /&gt;
	local pos = true;&lt;br /&gt;
	while(pos) do&lt;br /&gt;
		pos = srFindImageInRange(&amp;quot;dash.png&amp;quot;,x,ffc_coordsPos.y,ffc_coordsPos.width,ffc_coordsPos.height,5000);&lt;br /&gt;
		if(pos) then&lt;br /&gt;
			digits[#digits+1] = {pos[0],ffc_dash};&lt;br /&gt;
			x = x + 5;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	pos = srFindImageInRange(&amp;quot;comma.png&amp;quot;,ffc_coordsPos.x,ffc_coordsPos.y,ffc_coordsPos.width,ffc_coordsPos.height,5000);&lt;br /&gt;
	if(pos) then&lt;br /&gt;
		digits[#digits+1] = {pos[0],ffc_comma};&lt;br /&gt;
	end&lt;br /&gt;
	table.sort(digits, ffc_compareDigits);&lt;br /&gt;
	return digits;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function ffc_compareDigits(left,right)&lt;br /&gt;
	if(left[1] &amp;lt; right[1]) then&lt;br /&gt;
		return true;&lt;br /&gt;
	end&lt;br /&gt;
	return false;&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bardoth</name></author>
	</entry>
</feed>