The Wiki for Tale 7 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 "User:OneBanana/Test Page 1"
From ATITD7
Jump to navigationJump to search| Line 6: | Line 6: | ||
<pre> | <pre> | ||
| − | -- | + | -- BamBam V1.0 Written by OneBanana |
-- | -- | ||
-- Grab a sledgehammer and load yourself up with medium stones | -- Grab a sledgehammer and load yourself up with medium stones | ||
Revision as of 22:58, 14 February 2016
BamBam
-- BamBam V1.0 Written by OneBanana
--
-- Grab a sledgehammer and load yourself up with medium stones
-- Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L) and pin open the Drop menu
-- Default to MAX for how many should be turned OFF.
-- Right click opens a menu as pinned should be turned OFF
-- The script will set your starting position, do not move from that point untill the it has stopped.
-- Before you begin collecting the stone fragments drop your sledgehammer otherwise you will not be able to 'hotclick' to collect them.
-- This also marks the spot to return to after you have collected the stone fragments if you wish to continue smashing.
-- Personally i find it best to leave the gravel on the ground and collect it all at once after all of the smashing is done.
-- It also saves you from becoming 'pinned' if you are overloaded with it and stone fragemnts while collecting.
--
dofile("screen_reader_common.inc");
dofile("ui_utils.inc");
loadfile("screen_reader_common.inc")();
loadfile("ui_utils.inc")();
per_click_delay = 200;
waitDelay = 100;
up = nil;
right_click = nil;
button_names = {
"Smash Medium Stone",
"Smash Cracked Stone",
"Smash Broken Stone",
"Smash Split Stone",
"Drop Medium Stone",
"Drop Cracked Stone",
"Drop Broken Stone",
"Drop Split Stone",
};
function promptDelays()
y = y + 40;
lsPrint(5, y, 0, 0.8, 0.8, 0xffffffff, "Passes:");
is_done, num_loops = lsEditBox("num_loops", 170, y, 0, 50, 30, 1.0, 1.0, 0x000000ff, 10);
num_loops = tonumber(num_loops);
if not num_loops then
is_done = false;
lsPrint(10, y+22, 10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
num_loops = 10;
end
end
function waitForChange()
local c=0;
while srReadPixel(setWaitSpot_x, setWaitSpot_y) == setWaitSpot_px do
lsSleep(1);
c = c+1;
if (lsShiftHeld() and lsControlHeld()) then
error 'broke out of loop from Shift+Ctrl';
end
end
end
function clickAll(image_name, up)
-- Find buttons and click them!
srReadScreen();
local buttons = findAllImages(image_name);
if #buttons == 0 then
return nil;
else
if up then
for i=#buttons, 1, -1 do
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3);
lsSleep(per_click_delay);
end
else
for i=1, #buttons do
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3);
lsSleep(per_click_delay);
end
end
lsSleep(50);
return 1;
end
end
function clickAllRight(image_name)
-- Find windows and click them!
srReadScreen();
xyWindowSize = srGetWindowSize();
local buttons = findAllImages(image_name);
if #buttons == 0 then
statusScreen("Could not find any pinned up windows...");
lsSleep(1500);
else
statusScreen("Clicking " .. #buttons .. "windows(s)...");
if up then
for i=#buttons, 1, -1 do
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3, true);
lsSleep(per_click_delay);
end
else
for i=1, #buttons do
srClickMouseNoMove(buttons[i][0]+5, buttons[i][1]+3, true);
lsSleep(per_click_delay);
end
end
statusScreen("Done clicking (" .. #buttons .. " windows).");
lsSleep(100);
end
end
function refocus()
statusScreen("Refocusing...");
for i=2, #window_locs do
setWaitSpot(window_locs[i][0], window_locs[i][1]);
srClickMouseNoMove(window_locs[i][0] + 321, window_locs[i][1] + 74);
waitForChange();
end
end
function Unpin()
askForWindow("Put ATITD window in focus first and Press Shift key to unpin/close all pinned windows.");
srReadScreen();
window_locs = findAllImages("DropUnpin.png");
clickAllRight("DropUnpin.png", 1);
lsSleep(200);
end
function SmashMediumStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Medium Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropMediumStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
srClickMouseNoMove(xyWindowSize[0]/2 + -10, xyWindowSize[1]/2 + -65);
lsSleep(1000);
end
srReadScreen();
buttons = findOneImage("DropSmashThis.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(500);
count = count + 1;
end
end
end
function SmashCrackedStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Cracked Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropCrackedStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
srClickMouseNoMove(xyWindowSize[0]/2 + 30, xyWindowSize[1]/2 + -145);
lsSleep(1000);
end
srReadScreen();
buttons = findOneImage("DropSmashThis.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(500);
count = count + 1;
end
end
end
function SmashBrokenStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Broken Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropBrokenStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
srClickMouse(xyWindowSize[0]/2 + -10, xyWindowSize[1]/2 + -65);
end
srReadScreen();
buttons = findOneImage("DropSmashThis.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(500);
count = count + 1;
end
end
end
function SmashSplitStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Split Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropSplitStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
srClickMouse(xyWindowSize[0]/2 + -10, xyWindowSize[1]/2 + -65);
end
srReadScreen();
buttons = findOneImage("DropSmashThis.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(500);
count = count + 1;
end
end
end
function DropMediumStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Medium Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropMediumStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
count = count + 1;
end
end
end
function DropCrackedStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Cracked Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropCrackedStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
count = count + 1;
end
end
end
function DropBrokenStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Broken Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropBrokenStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
count = count + 1;
end
end
end
function DropSplitStone()
num_loops = promptNumber("How many passes ?", 1);
askForWindow("Use F8F8 camera view, zoomed in 100% with the screen locked (Alt+L). Pin open the Drop menu & ensure your have Split Stones and a Sledgehammer in your inventory. Default to MAX for how many should be turned OFF. Dont move from your starting position untill the script has stopped, drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
for i=1, num_loops do
srReadScreen();
srClickMouse(xyWindowSize[0]/2 + 10, xyWindowSize[1]/2 + 65);
buttons = findOneImage("DropSplitStone.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
count = count + 1;
end
end
end
function DropSledgehammer()
local num_rounds;
askForWindow("Drop your sledgehammer to mark the spot to return to after you have collected the stone fragments. To save time, leave the gravel on the ground and collect it all at once after all of the smashing is done, this also saves you from becoming 'pinned' if you are overloaded with both it and stone fragemnts while collecting. Click in ATITD and press shift to begin.");
local count = 0;
while true do
statusScreen("Hammer Dropped");
srReadScreen();
buttons = findOneImage("DropSledgehammer.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
end
srReadScreen();
buttons = findOneImage("DropOk.png");
if #buttons > 0 then
srClickMouseNoMove(buttons[1][0]+2, buttons[1][1] + 2, right_click);
lsSleep(per_click_delay);
return;
end
end
end
function doit()
while 1 do
-- Ask for which button
local image_name = nil;
local is_done = nil;
while not is_done do
local y = 40;
local x = nil;
local bsize = nil;
for i=1, #button_names do
if button_names[i] == "Smash Medium Stone" then
x = 30;
y = 10;
-- bsize = 130;
elseif button_names[i] == "Smash Cracked Stone" then
x = 30;
y = 40;
-- bsize = 130;
elseif button_names[i] == "Smash Broken Stone" then
x = 30;
y = 70;
elseif button_names[i] == "Smash Split Stone" then
x = 30;
y = 100;
elseif button_names[i] == "Drop Medium Stone" then
x = 30;
y = 130;
bsize = 130;
elseif button_names[i] == "Drop Cracked Stone" then
x = 30;
y = 160;
bsize = 130;
elseif button_names[i] == "Drop Broken Stone" then
x = 30;
y = 190;
elseif button_names[i] == "Drop Split Stone" then
x = 30;
y = 220;
end
if lsButtonText(10, y, 0, 280, 0xFDD017ff, button_names[i]) then
image_name = button_names[i];
is_done = 1;
end
end
if lsButtonText(lsScreenX - 290, lsScreenY - 90, z, 280, 0xFFA500ff, "Drop Sledgehammer") then
DropSledgehammer();
is_done = 1;
end
if lsButtonText(lsScreenX - 290, lsScreenY - 60, z, 280, 0xFFA500ff, "Unpin Windows") then
Unpin();
is_done = 1;
end
if lsButtonText(lsScreenX - 290, lsScreenY - 30, z, 280, 0xFF0000ff, "End script") then
error "Clicked End Script button";
end
lsDoFrame();
lsSleep(10);
end
if image_name == "Smash Medium Stone" then
SmashMediumStone();
elseif image_name == "Smash Cracked Stone" then
SmashCrackedStone();
elseif image_name == "Smash Broken Stone" then
SmashBrokenStone();
elseif image_name == "Smash Split Stone" then
SmashSplitStone();
elseif image_name == "Drop Medium Stone" then
DropMediumStone();
elseif image_name == "Drop Cracked Stone" then
DropCrackedStone();
elseif image_name == "Drop Broken Stone" then
DropBrokenStone();
elseif image_name == "Drop Split Stone" then
DropSplitStone();
elseif image_name == "Drop Sledgehammer" then
DropSledgehammer();
elseif image_name == "Un-Pin Windows" then
Unpin();
end
end
end