The Wiki for Tale 6 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 "123456"

From ATITD6
Jump to navigationJump to search
(Created page with "dofile("screen_reader_common.inc"); dofile("ui_utils.inc"); local plant_papy = 0; local distance_scale = 0.11; -- only scans pixels within a distance of this percentage from the...")
 
(Blanked the page)
 
Line 1: Line 1:
dofile("screen_reader_common.inc");
 
dofile("ui_utils.inc");
 
  
local plant_papy = 0;
 
local distance_scale = 0.11; -- only scans pixels within a distance of this percentage from the center of the screen
 
 
function getCenterPos()
 
local ret = {};
 
ret[0] = xyWindowSize[0] / 2;
 
ret[1] = xyWindowSize[1] / 2;
 
return ret;
 
end
 
 
function isWithinRange(x, y)
 
local radius = xyWindowSize[0] * 0.15;
 
local dx, dy, d;
 
dx = x - getCenterPos()[0];
 
dy = y - getCenterPos()[1];
 
if (dx*dx + dy*dy <= radius*radius) then
 
return 1;
 
end
 
 
return nil;
 
end
 
 
 
function clickAll(image_name, up, right_click)
 
-- Find buttons and click them!
 
srReadScreen();
 
xyWindowSize = srGetWindowSize();
 
local buttons = findAllImages(image_name);
 
 
if #buttons == 0 then
 
-- statusScreen("Could not find specified buttons...");
 
-- lsSleep(1500);
 
else
 
--statusScreen("Clicking " .. #buttons .. "button(s)...");
 
if up then
 
for i=#buttons, 1, -1  do
 
if (buttons[i][0] > 200) then
 
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3, right_click);
 
lsSleep(per_click_delay);
 
end
 
end
 
else
 
for i=1, #buttons  do
 
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3, right_click);
 
lsSleep(per_click_delay);
 
end
 
end
 
--statusScreen("Done clicking (" .. #buttons .. " clicks).");
 
--lsSleep(100);
 
end
 
end
 
 
function clickMouseSplatter(x, y, right)
 
srClickMouse(x + math.random(-2, 2), y + math.random(-2, 2), right);
 
end
 
 
function doit()
 
askForWindow("Use F6 camera. Optionally pin a Papyrus planting window on the *left* side of your screen (will plant a seed every 2 seconds or so).  Run around with arrows keys after macro begins, stop moving if it fails to pick something.  Interface Options | Right-Click opens a Menu as Pinned must be ON.  Video | Time-of-Day Lighting must be at LOWEST (off).");
 
 
srReadScreen();
 
local papy_pos = srFindImage("Papyrus.png");
 
local papyTimer = lsGetTimer();
 
 
while true do
 
local frame_start = lsGetTimer();
 
statusScreen("Watching for papyrus");
 
possible_papy = lsAnalyzePapyrus(7, 40, 1, xyWindowSize[0] * distance_scale);
 
local clicked = nil;
 
if possible_papy then
 
for i = 1, #possible_papy do
 
-- bias because it seems to drag to the upper left, take this off
 
--  if I fix the downsampling
 
possible_papy[i][0] = possible_papy[i][0] + 5;
 
--possible_papy[i][1] = possible_papy[i][1] + 5;
 
if isWithinRange(possible_papy[i][0], possible_papy[i][1]) then
 
 
-- srClickMouse(possible_papy[i][0], possible_papy[i][1], 1);
 
-- srSetMousePos(possible_papy[i][0], possible_papy[i][1]);
 
 
-- code to try to make sure the pixel is the right color
 
-- off by a few pixels in translation, maybe?  needs to be pixel accurate!
 
local good;
 
local r, g, b, a;
 
if nil then
 
pxval = srReadPixel(possible_papy[i][0], possible_papy[i][1]);
 
a = pxval % 256;
 
pxval = (pxval - a) / 256;
 
b = pxval % 256;
 
pxval = (pxval - b) / 256;
 
g = pxval % 256;
 
pxval = (pxval - g) / 256;
 
r = pxval % 256;
 
if (r > 130 and g > 130 and b < 20 and math.abs(r - g) < 20) then
 
good = 1;
 
end
 
else
 
r = 0;
 
g = 0;
 
b = 0;
 
good = 1;
 
end
 
 
if good then
 
lsPrint(10, 80 + i*20, 0, 0.7, 0.7, 0xFFFFFFff, possible_papy[i][0] .. ", " .. possible_papy[i][1] .. " : " .. r .. "," .. g .. "," .. b);
 
clickMouseSplatter(possible_papy[i][0], possible_papy[i][1], 1);
 
clicked = 1;
 
else
 
lsPrint(10, 80 + i*20, 0, 0.7, 0.7, 0xFF7F7Fff, possible_papy[i][0] .. ", " .. possible_papy[i][1] .. " : " .. r .. "," .. g .. "," .. b);
 
end
 
else
 
lsPrint(10, 80 + i*20, 0, 0.7, 0.7, 0x7F7F7Fff, possible_papy[i][0] .. ", " .. possible_papy[i][1] );
 
end
 
end
 
end
 
 
if papy_pos then
 
if plant_papy then
 
if lsButtonText(5, lsScreenY - 60, z, 150, 0xFFFFFFff, "Plant: ON") then
 
plant_papy = nil;
 
end
 
else
 
if lsButtonText(5, lsScreenY - 60, z, 150, 0xFFFFFFff, "Plant: OFF") then
 
plant_papy = 1;
 
papyTimer = lsGetTimer();
 
end
 
end
 
end
 
 
if papy_pos and plant_papy then
 
if lsGetTimer() - papyTimer > 2100 then
 
srClickMouseNoMove(papy_pos[0] + 4, papy_pos[1] + 4);
 
papyTimer = lsGetTimer();
 
end
 
end
 
 
lsSleep(100);
 
if clicked then
 
clickAll("UnPin.png", 1, 1);
 
--clickAll("This.png", 1, 1);
 
lsSleep(100);
 
-- We clicked something, ignore this frame
 
papyTimer = papyTimer + lsGetTimer() - frame_start;
 
end
 
end
 
 
end
 

Latest revision as of 05:47, 26 June 2015