|
|
Line 1: |
Line 1: |
− | Selune's updated VT Macros. If you know how to upload changes to TaleScripts, PLEASE contact me! Thanks! | + | Selune's Macros have been updated to the TaleScripts repository. Please leave any ideas for improvements or new macros here. |
| | | |
| {{Collapse top|title=Paint Reaction Template}} | | {{Collapse top|title=Paint Reaction Template}} |
Line 22: |
Line 22: |
| Copper | Sulfur | W | -25 | -12 | | Copper | Sulfur | W | -25 | -12 |
| Copper | Saltpeter | B | 42 | 4 | | Copper | Saltpeter | B | 42 | 4 |
− | </pre>
| |
− | {{Collapse bottom}}
| |
− |
| |
− | {{Collapse top|title=VT Paint Watch with Reset}}
| |
− | <pre>
| |
− | --
| |
− | --
| |
− | --
| |
− |
| |
− | --Cabbage | 129, 63, 145 | 8 | Y | bulk | 10
| |
− | --Carrot | 225, 113, 33 | 10 | Y | bulk | 10
| |
− | --Clay | 128, 96, 32 | 4 | Y | bulk | 20
| |
− | --DeadTongue | 112, 64, 64 | 500 | N | normal | 4
| |
− | --ToadSkin | 48, 96, 48 | 500 | N | normal | 4
| |
− | --EarthLight | 128, 240, 224 | 10000 | N | normal | 4
| |
− | --RedSand | 144, 16, 24 | 10 | Y | bulk | 20
| |
− | --Lead | 80, 80, 96 | 50 | Y | normal | 6
| |
− | --Silver | 16, 16, 32 | 50 | N | normal | 6
| |
− | --Iron | 96, 48, 32 | 30 | Y | normal | 8
| |
− | --Copper | 64, 192, 192 | 30 | Y | normal | 8
| |
− |
| |
− | --Sulfur | catalyst | 10 | Y | normal | 1
| |
− | --Potash | catalyst | 50 | Y | normal | 1
| |
− | --Lime | catalyst | 20 | Y | normal | 1
| |
− | --Saltpeter | catalyst | 10 | Y | normal | 1
| |
− |
| |
− | -- 317, 55, 71
| |
− | -- cj ca cl dt ts el rs le si ir co su po li sp
| |
− | paint_colourR = { 129, 225, 129, 112, 48, 128, 145, 81, 16, 97, 64 };
| |
− | paint_colourG = { 64, 113, 97, 64, 96, 240, 16, 81, 16, 48, 194 };
| |
− | paint_colourB = { 145, 33, 33, 64, 48, 224, 24, 97, 32, 33, 194 };
| |
− | catalyst1 = 12;
| |
− |
| |
− | loadfile("luaScripts/screen_reader_common.inc")();
| |
− | loadfile("luaScripts/ui_utils.inc")();
| |
− | loadfile("luascripts/common.inc")();
| |
− |
| |
− | button_names = {
| |
− | "CabbageJ","Carrot","Clay","DeadTongue","ToadSkin","EarthLight","RedSand",
| |
− | "Lead","SilverP","Iron","Copper","C:Sulfur","C:potash","C:Lime","C:Saltpeter"};
| |
− |
| |
− | per_paint_delay_time = 1000;
| |
− | per_read_delay_time = 600;
| |
− | per_click_delay = 10;
| |
− |
| |
− |
| |
− | function doit()
| |
− |
| |
− | local paint_sum = {0,0,0};
| |
− | local paint_count = 0;
| |
− | local bar_colour = {0,0,0};
| |
− | local expected_colour = {0,0,0};
| |
− | local diff_colour = {0,0,0};
| |
− | local new_px = 0xffffffFF;
| |
− | local px_R = nil;
| |
− | local px_G = nil;
| |
− | local px_B = nil;
| |
− | local px_A = nil;
| |
− | local m_x = 0;
| |
− | local m_y = 0;
| |
− | local update_now = 1;
| |
− | local y=0;
| |
− | local button_push = 0;
| |
− |
| |
− | lsSetCaptureWindow();
| |
− |
| |
− | askForWindow("Open the paint window. Take any paint away so to start with 'Black'.");
| |
− |
| |
− |
| |
− | srReadScreen();
| |
− | xyWindowSize = srGetWindowSize();
| |
− | local colour_panel = findAllImages("paint-black.png");
| |
− | if (#colour_panel == 0) then
| |
− | m_x, m_y = srMousePos();
| |
− | else
| |
− | m_x = colour_panel[1][0];
| |
− | m_y = colour_panel[1][1];
| |
− | end
| |
− |
| |
− | local paint_buttons = findAllImages("paint-button.png");
| |
− | if (#paint_buttons == 0) then
| |
− | error "No buttons found";
| |
− | end
| |
− |
| |
− |
| |
− | while 1 do
| |
− | lsSetCamera(0,0,lsScreenX*1.5,lsScreenY*1.5);
| |
− | -- Where to start putting buttons/text on the screen.
| |
− | y=0;
| |
− |
| |
− | if lsButtonText(lsScreenX - 30, lsScreenY - 80, 0, 100, 0xFFFFFFff, "Reset") then
| |
− | for i= 1, 10 do
| |
− | srClickMouseNoMove(paint_buttons[7][0]+2,paint_buttons[7][1]+2, right_click);
| |
− | lsSleep(per_click_delay);
| |
− | end
| |
− | srReadScreen();
| |
− | lsSleep(100);
| |
− | clickAllText("Take the Paint");
| |
− | lsSleep(100);
| |
− | paint_sum = {0,0,0};
| |
− | paint_count = 0;
| |
− | bar_colour = {0,0,0};
| |
− | expected_colour = {0,0,0};
| |
− | diff_colour = {0,0,0};
| |
− | new_px = 0xffffffFF;
| |
− | px_R = nil;
| |
− | px_G = nil;
| |
− | px_B = nil;
| |
− | px_A = nil;
| |
− | m_x = 0;
| |
− | m_y = 0;
| |
− | update_now = 1;
| |
− | end
| |
− |
| |
− | -- Create each button and set the button push.
| |
− | for i=1, #button_names do
| |
− | if lsButtonText(10, y, 0, 250, 0xFFFFFFff, button_names[i]) then
| |
− | image_name = button_names[i];
| |
− | update_now = 1;
| |
− | button_push = i;
| |
− | end
| |
− | y = y + 26;
| |
− | end
| |
− | srReadScreen();
| |
− |
| |
− |
| |
− | -- read the bar pixels
| |
− | new_px = srReadPixel(m_x, m_y);
| |
− | px_R = (math.floor(new_px/256/256/256) % 256);
| |
− | px_G = (math.floor(new_px/256/256) % 256);
| |
− | px_B = (math.floor(new_px/256) % 256);
| |
− | px_A = (new_px % 256);
| |
− |
| |
− | if not(update_now==0) then
| |
− | --{
| |
− | if not (button_push==0) then
| |
− | --{
| |
− | -- click the appropriate button to add paint.
| |
− | srClickMouseNoMove(paint_buttons[button_push][0]+2,paint_buttons[button_push][1]+2, right_click);
| |
− | lsSleep(per_click_delay);
| |
− |
| |
− | if(button_push < catalyst1) then
| |
− | -- add the paint estimate
| |
− | paint_sum[1] = paint_sum[1] + paint_colourR[button_push];
| |
− | paint_sum[2] = paint_sum[2] + paint_colourG[button_push];
| |
− | paint_sum[3] = paint_sum[3] + paint_colourB[button_push];
| |
− | paint_count = paint_count + 1.0;
| |
− | end
| |
− | --}
| |
− | end
| |
− |
| |
− | -- count up all the pixels.
| |
− | lsSleep(per_paint_delay_time);
| |
− | srReadScreen();
| |
− |
| |
− | bar_colour[1] = #findAllImages("paint-redbarC.png");
| |
− | lsSleep(per_read_delay_time/3);
| |
− | bar_colour[2] = #findAllImages("paint-greenbarC.png");
| |
− | lsSleep(per_read_delay_time/3);
| |
− | bar_colour[3] = #findAllImages("paint-bluebarC.png");
| |
− | lsSleep(per_read_delay_time/3);
| |
− | update_now = 0;
| |
− |
| |
− | -- tweak/hack because we miss the first pixel
| |
− | for i=1, 3 do
| |
− | if(bar_colour[i]>0)then
| |
− | bar_colour[i]=bar_colour[i]+1;
| |
− | bar_colour[i]=bar_colour[i]*256.0/259;
| |
− | end
| |
− | end
| |
− |
| |
− |
| |
− |
| |
− | -- New colour has been added, mix in the pot, and see if there's a difference from the expected value.
| |
− | if not (button_push==0) then
| |
− | --{
| |
− | for i=1, 3 do
| |
− | expected_colour[i] = paint_sum[i] / paint_count;
| |
− | diff_colour[i] = math.floor(0.5+bar_colour[i]) - math.floor(0.5+expected_colour[i]);
| |
− | end
| |
− |
| |
− | button_push = 0;
| |
− | --}
| |
− | end
| |
− | --}
| |
− | end
| |
− |
| |
− | -- Display all the goodies
| |
− | lsPrintWrapped(0, y, 1, lsScreenX, 1, 1, 0xFFFFFFff,
| |
− | " Pixel RGBA: " .. px_R .. "," .. px_G .. "," .. px_B .. "," .. px_A);
| |
− | y = y + 26;
| |
− | lsPrintWrapped(0, y, 1, lsScreenX, 1, 1, 0xFFFFFFff,
| |
− | " Bar read RGB: " .. math.floor(bar_colour[1]+0.5) .. "," .. math.floor(bar_colour[2]+0.5) .. "," .. math.floor(bar_colour[3]+0.5));
| |
− | y = y + 26;
| |
− | lsPrintWrapped(0, y, 1, lsScreenX, 1, 1, 0xFFFFFFff,
| |
− | " Expected RGB: " .. math.floor(expected_colour[1]+0.5) .. "," .. math.floor(expected_colour[2]+0.5) .. "," .. math.floor(expected_colour[3]+0.5) );
| |
− | y = y + 26;
| |
− | lsPrintWrapped(0, y, 1, lsScreenX, 1, 1, 0xFFFFFFff,
| |
− | " Reactions RGB: " .. math.floor(diff_colour[1]+0.5) .. "," .. math.floor(diff_colour[2]+0.5) .. "," .. math.floor(diff_colour[3]+0.5) );
| |
− |
| |
− |
| |
− | if lsButtonText(lsScreenX - 30, lsScreenY - 30, 0, 100, 0xFFFFFFff, "Exit") then
| |
− | error "Canceled";
| |
− | end
| |
− |
| |
− | lsDoFrame();
| |
− | lsSleep(per_read_delay_time);
| |
− | end
| |
− | end
| |
− | </pre>
| |
− | {{Collapse bottom}}
| |
− |
| |
− | {{Collapse top|title=Fixed VT Crematory macro}}
| |
− | <pre>
| |
− | -- crematory.lua v1.2 by Tallow
| |
− | --
| |
− | -- Runs one or more crematories. Automatically discovers button
| |
− | -- configuration on its own and loads/unloads materials.
| |
− | --
| |
− |
| |
− | assert(loadfile("luaScripts/common.inc"))();
| |
− |
| |
− | askText = singleLine([[
| |
− | Crematory v1.2 (by Tallow) --
| |
− | Automatically runs one or more crematories.
| |
− | ]]);
| |
− |
| |
− | wmText = "Tap control on Crematories to open and pin.";
| |
− |
| |
− | OPP = 0;
| |
− | SAME_UP = 1;
| |
− | SAME_DOWN = 2;
| |
− |
| |
− | tolerance = 6500;
| |
− | tickTime = 1000;
| |
− | maxWait = 1000;
| |
− | longWait = 500;
| |
− | shortWait = 30;
| |
− |
| |
− | colOffsets = {
| |
− | {35-40-3, 204-182},
| |
− | {71-40-3, 204-182},
| |
− | {107-40-3, 204-182},
| |
− | {143-40-3, 204-182},
| |
− | {179-40-3, 204-182},
| |
− | {215-40-3, 204-182},
| |
− | {251-40-3, 204-182}
| |
− | };
| |
− |
| |
− | colWidth = 36-35+6;
| |
− | colHeight = 323-204;
| |
− | colMiddle = 57;
| |
− |
| |
− | buttonOffsets = {
| |
− | {49-40, 333-182},
| |
− | {89-40, 333-182},
| |
− | {129-40, 333-182},
| |
− | {169-40, 333-182},
| |
− | {209-40, 333-182}
| |
− | };
| |
− |
| |
− | buttonWidth = 78-49;
| |
− | buttonHeight = 354-333;
| |
− | buttonClick = 10;
| |
− |
| |
− | limestoneOffset = 0;
| |
− | leeksOffset = 16;
| |
− | flaxOffset = 32;
| |
− | papyrusOffset = 48;
| |
− | woodOffset = 64;
| |
− |
| |
− | load_flax = true;
| |
− | load_papyrus = true;
| |
− | load_leeks = true;
| |
− | load_limestone = true;
| |
− |
| |
− | currentPass = 1;
| |
− | passCount = 5;
| |
− |
| |
− | windows = nil;
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- doit
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function doit()
| |
− | askForWindow(askText);
| |
− | windowManager("Crematory Setup", wmText);
| |
− | unpinOnExit(runCrematories);
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function runCrematories()
| |
− | promptLoad();
| |
− | askForFocus();
| |
− | for i=1,passCount do
| |
− | currentPass = i;
| |
− | takeAll();
| |
− | loadAll();
| |
− | start();
| |
− | local is_done = false;
| |
− | while not is_done do
| |
− | tick();
| |
− | is_done = checkDone();
| |
− | end
| |
− | sleepWithStatus(longWait*5, updateMessage("Waiting to take"));
| |
− | end
| |
− | takeAll();
| |
− | lsPlaySound("Complete.wav");
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- addWindow
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function addWindow(vPos)
| |
− | local newWindow = {
| |
− | origin = {vPos[0], vPos[1]},
| |
− | ups = {nil, nil, nil, nil, nil},
| |
− | downs = {nil, nil, nil, nil, nil},
| |
− | dirs = {OPP, OPP, OPP, OPP, OPP},
| |
− | double = {false, false, false, false, false, false, false},
| |
− | probe = 0,
| |
− | lastPos = nil;
| |
− | lastDiff = nil;
| |
− | buttonState = {true, true, true, true, true},
| |
− | sameCount = 0,
| |
− | done = false
| |
− | };
| |
− | local vFire = srFindImageInRange("crem-fire.png", newWindow.origin[1] - 31,
| |
− | newWindow.origin[2] - 175, 238, 175,
| |
− | tolerance);
| |
− | if vFire then
| |
− | newWindow.fire = {vFire[0], vFire[1]};
| |
− | else
| |
− | error "No fire button. Do you have Advanced Chemistry?"
| |
− | end
| |
− | windows[#windows + 1] = newWindow;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- resetWindow
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function resetWindow(current)
| |
− | local vLime = srFindImageInRange("crem-lime.png", current.origin[1] - 20,
| |
− | current.origin[2] - 20, 100, 100,
| |
− | tolerance);
| |
− | if (not vLime) then
| |
− | error "Could not find origin again.";
| |
− | end
| |
− | if ((vLime[0] ~= current.origin[1]) or
| |
− | (vLime[1] ~= current.origin[2])) then
| |
− | error("Window moved from (" .. current.origin[1] .. ", " ..
| |
− | current.origin[2] .. ") to (" .. vLime[0] .. ", " .. vLime[1] .. ")");
| |
− | end
| |
− | local vFire = srFindImageInRange("crem-fire.png", current.origin[1] - 31,
| |
− | current.origin[2] - 175, 238, 175,
| |
− | tolerance);
| |
− | if vFire then
| |
− | current.fire = {vFire[0], vFire[1]};
| |
− | end
| |
− | if current.probe < 6 then
| |
− | current.probe = 0;
| |
− | current.ups = {nil, nil, nil, nil, nil};
| |
− | current.downs = {nil, nil, nil, nil, nil};
| |
− | current.dirs = {OPP, OPP, OPP, OPP, OPP};
| |
− | current.double = {false, false, false, false, false, false, false};
| |
− | end
| |
− | current.lastPos = nil;
| |
− | current.lastDiff = nil;
| |
− | current.buttonState = {true, true, true, true, true};
| |
− | current.sameCount = 0;
| |
− | current.done = false;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- start
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function start()
| |
− | sleepWithStatus(longWait, updateMessage("Waiting to begin"));
| |
− | srReadScreen();
| |
− | if windows then
| |
− | for i=1,#windows do
| |
− | resetWindow(windows[i]);
| |
− | end
| |
− | else
| |
− | windows = {};
| |
− | local posList = findAllImages("crem-lime.png");
| |
− | if #posList == 0 then
| |
− | error "No crematories found";
| |
− | end
| |
− | for i=1,#posList do
| |
− | addWindow(posList[i]);
| |
− | end
| |
− | end
| |
− | for i=1,#windows do
| |
− | if windows[i].fire then
| |
− | safeClick(windows[i].fire[1] + 5, windows[i].fire[2] + 5);
| |
− | lsSleep(shortWait);
| |
− | end
| |
− | end
| |
− | sleepWithStatus(longWait, updateMessage("Finding my Chi"));
| |
− | srReadScreen();
| |
− | for i=1,#windows do
| |
− | windows[i].lastPos = findPoints(windows[i]);
| |
− | if not windows[i].lastPos then
| |
− | windows[i].done = true;
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- tick
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function tick()
| |
− | sleepWithStatus(tickTime, updateMessage("Tending Crematory"));
| |
− | srReadScreen();
| |
− | for i=1,#windows do
| |
− | tickWindow(windows[i]);
| |
− | end
| |
− | checkBreak();
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- tickWindow
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function tickWindow(current)
| |
− | if not current.done then
| |
− | local points = findPoints(current);
| |
− | if points then
| |
− | probeNext(current, points);
| |
− | if current.probe > 5 then
| |
− | toggleButtons(current, points, current.buttonState);
| |
− | end
| |
− | else
| |
− | current.done = true;
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- checkDone
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function checkDone()
| |
− | local all_done = true;
| |
− | for i=1,#windows do
| |
− | if not windows[i].done then
| |
− | local done = srFindImageInRange("crem-done.png", windows[i].origin[1] - 3,
| |
− | windows[i].origin[2] - 15, 40, 40,
| |
− | tolerance);
| |
− | if done then
| |
− | windows[i].done = true;
| |
− | else
| |
− | all_done = false;
| |
− | end
| |
− | end
| |
− | end
| |
− | return all_done;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- findPoints
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function findPoints(current)
| |
− | local result = {};
| |
− | for i=1,7 do
| |
− | local offset = {current.origin[1] + colOffsets[i][1],
| |
− | current.origin[2] + colOffsets[i][2]};
| |
− | local point = srFindImageInRange("crem-point.png", offset[1],
| |
− | offset[2] - 5,
| |
− | colWidth, colHeight + 10, tolerance);
| |
− | if point then
| |
− | result[i] = point[1] - colOffsets[i][2] - current.origin[2] - colMiddle;
| |
− | else
| |
− | result = nil;
| |
− | break;
| |
− | end
| |
− | end
| |
− | return result;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- findDiffs
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function findDiffs(current, points)
| |
− | local result = {};
| |
− | local all_zero = true;
| |
− | for i=1,7 do
| |
− | result[i] = points[i] - current.lastPos[i];
| |
− | if result[i] ~= 0 then
| |
− | all_zero = false;
| |
− | end
| |
− | end
| |
− | if all_zero then
| |
− | result = nil;
| |
− | end
| |
− | return result;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- probeNext
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function probeNext(current, points)
| |
− | local diffs = findDiffs(current, points);
| |
− | checkSame(current, diffs);
| |
− | if diffs and current.probe < 6 then
| |
− | if current.probe > 0 then
| |
− | for i=1,7 do
| |
− | if current.lastDiffs[i] < 0 and diffs[i] > 0 then
| |
− | if current.ups[current.probe] then
| |
− | current.downs[current.probe] = i;
| |
− | current.dirs[current.probe] = SAME_UP;
| |
− | else
| |
− | current.ups[current.probe] = i;
| |
− | end
| |
− | elseif current.lastDiffs[i] > 0 and diffs[i] < 0 then
| |
− | if current.downs[current.probe] then
| |
− | current.ups[current.probe] = i;
| |
− | current.dirs[current.probe] = SAME_DOWN;
| |
− | else
| |
− | current.downs[current.probe] = i;
| |
− | end
| |
− | end
| |
− | end
| |
− | if current.ups[current.probe] and current.downs[current.probe] then
| |
− | current.double[current.ups[current.probe]] = true;
| |
− | current.double[current.downs[current.probe]] = true;
| |
− | end
| |
− | end
| |
− | current.lastPos = points;
| |
− | current.lastDiffs = diffs;
| |
− | current.probe = current.probe + 1;
| |
− | if current.probe <= 5 then
| |
− | local newProbe = not current.buttonState[current.probe];
| |
− | local clickX = current.origin[1] + buttonOffsets[current.probe][1] +
| |
− | buttonClick;
| |
− | local clickY = current.origin[2] + buttonOffsets[current.probe][2] +
| |
− | buttonClick;
| |
− |
| |
− | current.buttonState[current.probe] = newProbe;
| |
− | safeClick(clickX, clickY);
| |
− | lsSleep(shortWait);
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- checkSame
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function checkSame(current, diffs)
| |
− | if diffs then
| |
− | local all_same = true;
| |
− | for i=1,#diffs do
| |
− | if diffs[i] ~= 0 then
| |
− | all_same = false;
| |
− | end
| |
− | end
| |
− | if all_same then
| |
− | current.sameCount = current.sameCount + 1;
| |
− | else
| |
− | current.sameCount = 0;
| |
− | end
| |
− | if current.sameCount > 10 then
| |
− | current.done = true;
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- toggleButtons
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function toggleButtons(current, points, buttonState)
| |
− | local balance = getBalance(points, current.double);
| |
− | for i=1,5 do
| |
− | local up = getPointValue(points, current.double, current.ups[i],
| |
− | balance);
| |
− | local down = getPointValue(points, current.double, current.downs[i],
| |
− | balance);
| |
− | local goalState = ((up >= 0 and down <= 0) or
| |
− | (up >= 0 and down >= 0 and up > down) or
| |
− | (up <= 0 and down <= 0 and up > down));
| |
− | if current.dirs[i] == SAME_UP then
| |
− | goalState = ((up >= 0 and down >= 0) or
| |
− | (up >= 0 and down <= 0 and up >= -down) or
| |
− | (up <= 0 and down >= 0 and -up <= down));
| |
− | elseif current.dirs[i] == SAME_DOWN then
| |
− | goalState = ((up <= 0 and down <= 0) or
| |
− | (up >= 0 and down <= 0 and up <= -down) or
| |
− | (up <= 0 and down >= 0 and -up >= down));
| |
− | end
| |
− | local goalStateStr = "false";
| |
− | if goalState then
| |
− | goalStateStr = "true";
| |
− | end
| |
− | local buttonStr = "false";
| |
− | if buttonState[i] then
| |
− | buttonStr = "true";
| |
− | end
| |
− | if (goalState and not buttonState[i]) or
| |
− | (not goalState and buttonState[i]) then
| |
− | safeClick(current.origin[1] + buttonOffsets[i][1] + buttonClick,
| |
− | current.origin[2] + buttonOffsets[i][2] + buttonClick);
| |
− | lsSleep(shortWait);
| |
− | buttonState[i] = goalState;
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- getBalance
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function getBalance(points, double)
| |
− | local above = 0;
| |
− | local below = 0;
| |
− | for i=1,#points do
| |
− | if points[i] > 0 and double[i] then
| |
− | below = below + 1;
| |
− | elseif points[i] < 0 and double[i] then
| |
− | above = above + 1;
| |
− | end
| |
− | end
| |
− |
| |
− | local result = 0;
| |
− | if above >= 3 then
| |
− | result = -5;
| |
− | elseif below >= 3 then
| |
− | result = 5;
| |
− | end
| |
− | return result;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- getPointValue
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function getPointValue(points, double, index, balance)
| |
− | local result = 0;
| |
− | if index then
| |
− | result = points[index];
| |
− | if not double[index] then
| |
− | result = result + balance;
| |
− | end
| |
− | end
| |
− | return result;
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- takeAll
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function takeAll()
| |
− | srReadScreen();
| |
− | local updateList = findAllImages("ThisIs.png");
| |
− | for i=1,#updateList do
| |
− | safeClick(updateList[i][0], updateList[i][1]);
| |
− | end
| |
− | sleepWithStatus(longWait, updateMessage("Update Crematory Windows"));
| |
− | srReadScreen();
| |
− | local takeList = findAllImages("crem-take.png");
| |
− | for i=1,#takeList do
| |
− | safeClick(takeList[i][0] + 5, takeList[i][1] + 5);
| |
− | sleepWithStatus(shortWait*2, "Waiting for Everything");
| |
− | srReadScreen();
| |
− | local all = waitForImage("Everything.png", maxWait, "Grabbing Everything");
| |
− | if all then
| |
− | safeClick(all[0] + 5, all[1] + 5);
| |
− | end
| |
− | lsSleep(shortWait*2);
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- promptLoad
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function promptLoad()
| |
− | scale = 1.0;
| |
− | local z = 0;
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | checkBreak("disallow pause");
| |
− | lsPrint(10, 10, z, scale, scale, 0xFFFFFFff, "Configure");
| |
− | local y = 60;
| |
− |
| |
− | lsPrint(5, y, z, scale, scale, 0xffffffff, "Passes:");
| |
− | is_done, passCount = lsEditBox("passes", 110, y, z, 50, 30, scale, scale,
| |
− | 0x000000ff, 5);
| |
− | if not tonumber(passCount) then
| |
− | is_done = false;
| |
− | lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
| |
− | passCount = 1;
| |
− | end
| |
− | y = y + 48;
| |
− |
| |
− | load_flax = lsCheckBox(15, y, z+10, 0xffffffff, "Dried Flax",
| |
− | load_flax);
| |
− | y = y + 32;
| |
− |
| |
− | load_papyrus = lsCheckBox(15, y, z+10, 0xffffffff, "Dried Papyrus",
| |
− | load_papyrus);
| |
− | y = y + 32;
| |
− |
| |
− | load_leeks = lsCheckBox(15, y, z+10, 0xffffffff, "Leeks",
| |
− | load_leeks);
| |
− | y = y + 32;
| |
− |
| |
− | load_limestone = lsCheckBox(15, y, z+10, 0xffffffff, "Limestone",
| |
− | load_limestone);
| |
− | y = y + 32;
| |
− |
| |
− | lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xd0d0d0ff,
| |
− | "Make sure each crematory is pinned and empty.");
| |
− |
| |
− | if lsButtonText(10, lsScreenY - 30, z, 100, 0xFFFFFFff, "Begin") then
| |
− | is_done = 1;
| |
− | end
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff,
| |
− | "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(shortWait);
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- loadAll
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function loadAll()
| |
− | srReadScreen();
| |
− | local posList = findAllImages("ThisIs.png");
| |
− | for i=1,#posList do
| |
− | safeClick(posList[i][0], posList[i][1]);
| |
− | end
| |
− | sleepWithStatus(longWait, updateMessage("Update Crematory Windows"));
| |
− | srReadScreen();
| |
− | posList = findAllImages("crem-fire.png");
| |
− | for i=1,#posList do
| |
− | loadSingle(posList[i], woodOffset, "Wood");
| |
− | if load_flax then
| |
− | loadSingle(posList[i], flaxOffset, "Flax");
| |
− | end
| |
− | if load_papyrus then
| |
− | loadSingle(posList[i], papyrusOffset, "Papyrus");
| |
− | end
| |
− | if load_leeks then
| |
− | loadSingle(posList[i], leeksOffset, "Leeks");
| |
− | end
| |
− | if load_limestone then
| |
− | loadSingle(posList[i], limestoneOffset, "Limestone");
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- loadSingle
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function loadSingle(pos, offset, type)
| |
− | sleepWithStatus(200, "Waiting to load");
| |
− | safeClick(pos[0]+5, pos[1]+5+16);
| |
− | lsSleep(100);
| |
− | local limePos = waitForImage("crem-limestone.png", maxWait,
| |
− | "Loading " .. type .. " Into Crematory");
| |
− | if limePos then
| |
− | safeClick(limePos[0] + 5, limePos[1] + 5 + offset);
| |
− | lsSleep(100);
| |
− | local maxPos = waitForImage("crem-max.png", maxWait,
| |
− | "Adding Maximum Amount");
| |
− | if maxPos then
| |
− | safeClick(maxPos[0]+5, maxPos[1]+5);
| |
− | end
| |
− | end
| |
− | lsSleep(100);
| |
− | sleepWithStatus(shortWait, "Waiting for load to complete");
| |
− | end
| |
− |
| |
− | -------------------------------------------------------------------------------
| |
− | -- updateMessage
| |
− | -------------------------------------------------------------------------------
| |
− |
| |
− | function updateMessage(message)
| |
− | local result = "Pass " .. currentPass .. " / " .. passCount .. "\n";
| |
− | result = result .. message .. "\n\n";
| |
− | if message == "Tending Crematory" then
| |
− | for i=1,#windows do
| |
− | local status = "Buttons: ";
| |
− | for j=1,5 do
| |
− | if windows[i].dirs[j] == OPP then
| |
− | status = status .. getDir("+", windows[i].ups[j]) ..
| |
− | getDir("-", windows[i].downs[j]);
| |
− | elseif windows[i].dirs[j] == SAME_UP then
| |
− | status = status .. getDir("+", windows[i].ups[j]) ..
| |
− | getDir("+", windows[i].downs[j]);
| |
− | else
| |
− | status = status .. getDir("-", windows[i].ups[j]) ..
| |
− | getDir("-", windows[i].downs[j]);
| |
− | end
| |
− | if j ~= 5 then
| |
− | status = status .. ", ";
| |
− | else
| |
− | status = status .. "\n";
| |
− | end
| |
− | end
| |
− | result = result .. "\n" .. status;
| |
− | end
| |
− | end
| |
− | return result;
| |
− | end
| |
− |
| |
− | function getDir(sign, number)
| |
− | local result = "";
| |
− | if number then
| |
− | result = sign .. number
| |
− | end
| |
− | return result;
| |
− | end
| |
− | </pre>
| |
− | {{Collapse bottom}}
| |
− |
| |
− | {{Collapse top|title=Forge.inc to add Treated Metal Sheeting}}
| |
− | <pre>
| |
− | button_names = {
| |
− | "Knife Blade",
| |
− | "Shovel Blade",
| |
− | "Nails",
| |
− | "Copper Pipe",
| |
− | "Lead Pipe",
| |
− | "Bars",
| |
− | "Sheeting",
| |
− | "Straps",
| |
− | "Tools",
| |
− | "Wire"
| |
− | };
| |
− |
| |
− | bar_button_names = {
| |
− | "Iron Bar",
| |
− | "Gold Bar",
| |
− | "Silver Bar"
| |
− | };
| |
− |
| |
− | sheeting_button_names = {
| |
− | "Lead Sheeting",
| |
− | "Gold Sheeting",
| |
− | "Copper Sheeting",
| |
− | "Octecs Alloy Sheeting",
| |
− | "Silver Sheeting",
| |
− | "Steel Sheeting",
| |
− | "Gold Foil",
| |
− | "Metal Blue Sheeting",
| |
− | "Treated Metal Sheeting",
| |
− | "Tin Sheeting",
| |
− | "Moon Steel Sheeting",
| |
− | "Thoths Metal Sheeting"
| |
− | };
| |
− |
| |
− | straps_button_names = {
| |
− | "Water Metal Strap",
| |
− | "Iron Strap",
| |
− | "Aluminum Strap",
| |
− | "Copper Strap"
| |
− | };
| |
− |
| |
− | tools_button_names = {
| |
− | "Iron Poker",
| |
− | "Steel Blade",
| |
− | "Lead Chisel"
| |
− | };
| |
− |
| |
− | wire_button_names = {
| |
− | "Thoths Metal Wire",
| |
− | "Metal Blue Wire",
| |
− | "Magnesium Wire",
| |
− | "Octecs Alloy Wire",
| |
− | "Silver Wire",
| |
− | "Copper Wire",
| |
− | "Steel Wire",
| |
− | "Gold Wire"
| |
− | };
| |
− |
| |
− |
| |
− | ----------------- MAKE PROJECTS 'SUPPORTING' FUNCTIONS -----------------
| |
− |
| |
− | function waitMinutes(minutes)
| |
− | -- Teppy Minute is 66 seconds or 66000 ms
| |
− | -- Add a 3 second delay (3000 ms) in case of lag
| |
− |
| |
− | wait_delay = 3000; -- Extra delay on top of Teppy Time, for lag purposes. Default is 3000
| |
− | wait = (minutes * 66000) + wait_delay;
| |
− | askForFocus(); -- Pause to allow user to focus back to ATITD (if they checked the Pause for Focus Box), before starting project.
| |
− | end
| |
− |
| |
− |
| |
− | function doneGUI(totalPasses)
| |
− | wait = 5000; -- Gives a 5 second delay to review the GUI stats, before quitting/returing to Main Menu.
| |
− | clickAllImages("This.png"); -- Refresh the screen. Update forge window so we know how much charcoal is currently in each forge before next project
| |
− |
| |
− | sleepWithStatus(wait, "[" .. totalPasses .. "/" .. totalPasses .. "] ALL DONE!\n----------------------------------------------\n[" .. made .. "/" .. batch*project_windows*num_loops .. "] " .. name .. " / Completed");
| |
− |
| |
− | lsPlaySound("Complete.wav");
| |
− | runForge(); -- Return to/Display Main Menu
| |
− | end
| |
− |
| |
− |
| |
− | function waitGUI(pass)
| |
− | --If any forge menus shows the Forge_StartFire.png - refreshWindows() function, then display the stalledMessage in the GUI. Suggests its not lit (or out of charcoal)
| |
− | if #stalled > 0 then
| |
− | stalledMessage = "\n[" .. #stalled .. "] Forges STALLED (Needs Lit)"
| |
− | else
| |
− | stalledMessage = "";
| |
− | end
| |
− |
| |
− | sleepWithStatus(wait, "[" .. pass .. "/" .. num_loops .. "] Total Passes\n----------------------------------------------\n[" .. batch .. "] " .. name .. " per forge\n[" .. project_windows .. "] Forges working" .. stalledMessage .. "\n----------------------------------------------\n[" .. batch*project_windows .. "] " .. name .. " per pass\n----------------------------------------------\n[" .. made .. "/" .. batch*project_windows*num_loops .. "] " .. name .. " / Completed");
| |
− |
| |
− | made = made + (batch*project_windows);
| |
− | end
| |
− |
| |
− |
| |
− | function refreshWindows()
| |
− | checkBreak();
| |
− | pinned_windows = clickAllImages("This.png");
| |
− | lsSleep(400);
| |
− | if pinned_windows == 0 then
| |
− | error("No pinned windows found!");
| |
− | else
| |
− | srReadScreen();
| |
− | stalled = findAllImages("Forge/Forge_StartFire.png");
| |
− | if #stalled == pinned_windows/2 then -- The /2 is because each forge has 'This' located in window twice. Can't use ThisIs.png either because idle/working forge has different words (Idle Forge shows 'This' only and Working Forge shows 'This Is'
| |
− | error("No forges are lit!");
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− |
| |
− | ----------------- MAKE PROJECT FUNCTIONS -----------------
| |
− |
| |
− | function KnifeBlade()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Knife Blade";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | project_windows = clickAllImages("Forge/Forge_Knife_Blade.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1500, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function ShovelBlade()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Shovel Blade";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | project_windows = clickAllImages("Forge/Forge_Shovel_Blade.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1500, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function Nails()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 12;
| |
− | name = "Nails";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | project_windows = clickAllImages("Forge/Forge_Nail.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1500, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function CopperPipe()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Copper Pipe";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | project_windows = clickAllImages("Forge/Forge_Copper_Pipe.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1500, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function LeadPipe()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Lead Pipe";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | project_windows = clickAllImages("Forge/Forge_Lead_Pipe.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1500, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function IronBar()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Iron Bar";
| |
− | waitMinutes(15);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Bars.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Iron_Bar.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function GoldBar()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Gold Bar";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Bars.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Gold_Bar.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SilverBar()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Silver Bar";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Bars.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Silver_Bar.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function LeadSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Lead Sheeting";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Lead_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function GoldSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 4;
| |
− | name = "Gold Sheeting";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Gold_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function CopperSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Copper Sheeting";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Copper_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function TreatedSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | typeOfMetal = promptText("Enter the metal name:");
| |
− | batch = 1;
| |
− | name = "Treated Metal Sheeting";
| |
− | waitMinutes(2);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllText("Treated");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | lsSleep(400);
| |
− | local numClicked = clickAllText(typeOfMetal);
| |
− | if numClicked == 0 then
| |
− | break;
| |
− | end
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function OctecsAlloySheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 8;
| |
− | name = "Octecs Alloy";
| |
− | waitMinutes(20);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Octecs_Alloy_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SilverSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Silver Sheeting";
| |
− | waitMinutes(2);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Silver_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SteelSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 6;
| |
− | name = "Steel Sheeting";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Steel_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function GoldFoil()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 4;
| |
− | name = "Gold Foil";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Gold_Foil.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function MetalBlueSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Metal Blue Sheeting";
| |
− | waitMinutes(15);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Metal_Blue_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function TinSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Tin Sheeting";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Tin_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function MoonSteelSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Moon Steel Sheeting";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Moon_Steel_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function ThothsMetalSheeting()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Thoths Metal Sheeting";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Sheeting.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Thoths_Metal_Sheeting.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function WaterMetalStrap()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Water Metal Strap";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Straps.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Water_Metal_Strap.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function IronStrap()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Iron Strap";
| |
− | waitMinutes(3);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Straps.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Iron_Strap.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function AluminumStrap()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Aluminum Strap";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Straps.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Aluminum_Strap.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function CopperStrap()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Copper Strap";
| |
− | waitMinutes(2);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Straps.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Copper_Strap.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function IronPoker()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Iron Poker";
| |
− | waitMinutes(20);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Tools.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Iron_Poker.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SteelBlade()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Steel Blade";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Tools.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Steel_Blade.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function LeadChisel()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 1;
| |
− | name = "Lead Chisel";
| |
− | waitMinutes(6);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Tools.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Lead_Chisel.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function ThothsMetalWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 14;
| |
− | name = "Thoths Metal Wire";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Thoths_Metal_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function MetalBlueWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 12;
| |
− | name = "Metal Blue Wire";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Metal_Blue_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function MagnesiumWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 10;
| |
− | name = "Magnesium Wire";
| |
− | waitMinutes(1);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Magnesium_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function OctecsAlloyWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 16;
| |
− | name = "Octecs Alloy Wire";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Octecs_Alloy_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SilverWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 5;
| |
− | name = "Silver Wire";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Silver_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function CopperWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 20;
| |
− | name = "Copper Wire";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Copper_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function SteelWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 20;
| |
− | name = "Steel Wire";
| |
− | waitMinutes(5);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Steel_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− | function GoldWire()
| |
− | num_loops = promptNumber("How many passes ?", 1);
| |
− | batch = 10;
| |
− | name = "Gold Wire";
| |
− | waitMinutes(10);
| |
− | for i=1, num_loops do
| |
− | while 1 do
| |
− | refreshWindows();
| |
− | clickAllImages("Forge/Forge_Wire.png");
| |
− | lsSleep(400);
| |
− | project_windows = clickAllImages("Forge/Forge_Gold_Wire.png");
| |
− | if project_windows == 0 then
| |
− | sleepWithStatus(1100, "Waiting for Project windows");
| |
− | else
| |
− | break;
| |
− | end
| |
− | end
| |
− | waitGUI(i);
| |
− | end
| |
− | doneGUI(num_loops);
| |
− | end
| |
− |
| |
− |
| |
− | function Bars()
| |
− | while 1 do
| |
− | -- Ask for which button
| |
− | local image_name = nil;
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | local y = nil;
| |
− | local x = nil;
| |
− | local bsize = nil;
| |
− | for i=1, #bar_button_names do
| |
− | if bar_button_names[i] == "Iron Bar" then
| |
− | x = 30;
| |
− | y = 10;
| |
− | bsize = 250;
| |
− | elseif bar_button_names[i] == "Gold Bar" then
| |
− | x = 30;
| |
− | y = 40;
| |
− | bsize = 250;
| |
− | elseif bar_button_names[i] == "Silver Bar" then
| |
− | x = 30;
| |
− | y = 70;
| |
− | bsize = 250;
| |
− | end
| |
− | if lsButtonText(x, y, 0, bsize, 0x80D080ff, bar_button_names[i]) then
| |
− | image_name = bar_button_names[i];
| |
− | is_done = 1;
| |
− | end
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(10);
| |
− | end
| |
− |
| |
− | if image_name == "Iron Bar" then
| |
− | IronBar();
| |
− | elseif image_name == "Gold Bar" then
| |
− | GoldBar();
| |
− | elseif image_name == "Silver Bar" then
| |
− | SilverBar();
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | function Sheeting()
| |
− | while 1 do
| |
− | -- Ask for which button
| |
− | local image_name = nil;
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | local y = nil;
| |
− | local x = nil;
| |
− | local bsize = nil;
| |
− | for i=1, #sheeting_button_names do
| |
− | if sheeting_button_names[i] == "Lead Sheeting" then
| |
− | x = 30;
| |
− | y = 10;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Gold Sheeting" then
| |
− | x = 30;
| |
− | y = 35;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Copper Sheeting" then
| |
− | x = 30;
| |
− | y = 60;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Treated Metal Sheeting" then
| |
− | x = 30;
| |
− | y = 285;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Octecs Alloy Sheeting" then
| |
− | x = 30;
| |
− | y = 85;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Silver Sheeting" then
| |
− | x = 30;
| |
− | y = 110;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Steel Sheeting" then
| |
− | x = 30;
| |
− | y = 135;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Gold Foil" then
| |
− | x = 30;
| |
− | y = 160;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Metal Blue Sheeting" then
| |
− | x = 30;
| |
− | y = 185;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Tin Sheeting" then
| |
− | x = 30;
| |
− | y = 210;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Moon Steel Sheeting" then
| |
− | x = 30;
| |
− | y = 235;
| |
− | bsize = 150;
| |
− | elseif sheeting_button_names[i] == "Thoths Metal Sheeting" then
| |
− | x = 30;
| |
− | y = 260;
| |
− | bsize = 150;
| |
− | end
| |
− | if lsButtonText(x, y, 0, 250, 0x80D080ff, sheeting_button_names[i]) then
| |
− | image_name = sheeting_button_names[i];
| |
− | is_done = 1;
| |
− | end
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(10);
| |
− | end
| |
− |
| |
− | if image_name == "Lead Sheeting" then
| |
− | LeadSheeting();
| |
− | elseif image_name == "Gold Sheeting" then
| |
− | GoldSheeting();
| |
− | elseif image_name == "Copper Sheeting" then
| |
− | CopperSheeting();
| |
− | elseif image_name == "Treated Metal Sheeting" then
| |
− | TreatedSheeting();
| |
− | elseif image_name == "Octecs Alloy Sheeting" then
| |
− | OctecsAlloySheeting();
| |
− | elseif image_name == "Silver Sheeting" then
| |
− | SilverSheeting();
| |
− | elseif image_name == "Steel Sheeting" then
| |
− | SteelSheeting();
| |
− | elseif image_name == "Gold Foil" then
| |
− | GoldFoil();
| |
− | elseif image_name == "Metal Blue Sheeting" then
| |
− | MetalBlueSheeting();
| |
− | elseif image_name == "Tin Sheeting" then
| |
− | TinSheeting();
| |
− | elseif image_name == "Moon Steel Sheeting" then
| |
− | MoonSteelSheeting();
| |
− | elseif image_name == "Thoths Metal Sheeting" then
| |
− | ThothsMetalSheeting();
| |
− | end
| |
− | end
| |
− |
| |
− |
| |
− | end
| |
− |
| |
− | function Straps()
| |
− | while 1 do
| |
− | -- Ask for which button
| |
− | local image_name = nil;
| |
− |
| |
− |
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | local y = nil;
| |
− | local x = nil;
| |
− | local bsize = nil;
| |
− | for i=1, #straps_button_names do
| |
− | if straps_button_names[i] == "Water Metal Strap" then
| |
− | x = 30;
| |
− | y = 10;
| |
− | bsize = 250;
| |
− | elseif straps_button_names[i] == "Iron Strap" then
| |
− | x = 30;
| |
− | y = 40;
| |
− | bsize = 250;
| |
− | elseif straps_button_names[i] == "Aluminum Strap" then
| |
− | x = 30;
| |
− | y = 70;
| |
− | bsize = 250;
| |
− | elseif straps_button_names[i] == "Copper Strap" then
| |
− | x = 30;
| |
− | y = 100;
| |
− | bsize = 250;
| |
− | end
| |
− | if lsButtonText(x, y, 0, bsize, 0x80D080ff, straps_button_names[i]) then
| |
− | image_name = straps_button_names[i];
| |
− | is_done = 1;
| |
− | end
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(10);
| |
− | end
| |
− |
| |
− | if image_name == "Water Metal Strap" then
| |
− | WaterMetalStrap();
| |
− | elseif image_name == "Iron Strap" then
| |
− | IronStrap();
| |
− | elseif image_name == "Aluminum Strap" then
| |
− | AluminumStrap();
| |
− | elseif image_name == "Copper Strap" then
| |
− | CopperStrap();
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | function Tools()
| |
− | while 1 do
| |
− | -- Ask for which button
| |
− | local image_name = nil;
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | local y = nil;
| |
− | local x = nil;
| |
− | local bsize = nil;
| |
− | for i=1, #tools_button_names do
| |
− | if tools_button_names[i] == "Iron Poker" then
| |
− | x = 30;
| |
− | y = 10;
| |
− | bsize = 250;
| |
− | elseif tools_button_names[i] == "Steel Blade" then
| |
− | x = 30;
| |
− | y = 40;
| |
− | bsize = 250;
| |
− | elseif tools_button_names[i] == "Lead Chisel" then
| |
− | x = 30;
| |
− | y = 70;
| |
− | bsize = 250;
| |
− | end
| |
− | if lsButtonText(x, y, 0, bsize, 0x80D080ff, tools_button_names[i]) then
| |
− | image_name = tools_button_names[i];
| |
− | is_done = 1;
| |
− | end
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(10);
| |
− | end
| |
− |
| |
− | if image_name == "Iron Poker" then
| |
− | IronPoker();
| |
− | elseif image_name == "Steel Blade" then
| |
− | SteelBlade();
| |
− | elseif image_name == "Lead Chisel" then
| |
− | LeadChisel();
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | function Wire()
| |
− | while 1 do
| |
− | -- Ask for which button
| |
− | local image_name = nil;
| |
− | local is_done = nil;
| |
− | while not is_done do
| |
− | local y = nil;
| |
− | local x = nil;
| |
− | local bsize = nil;
| |
− | for i=1, #wire_button_names do
| |
− | if wire_button_names[i] == "Thoths Metal Wire" then
| |
− | x = 30;
| |
− | y = 10;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Metal Blue Wire" then
| |
− | x = 30;
| |
− | y = 35;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Magnesium Wire" then
| |
− | x = 30;
| |
− | y = 60;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Octecs Alloy Wire" then
| |
− | x = 30;
| |
− | y = 85;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Silver Wire" then
| |
− | x = 30;
| |
− | y = 110;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Copper Wire" then
| |
− | x = 30;
| |
− | y = 135;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Steel Wire" then
| |
− | x = 30;
| |
− | y = 160;
| |
− | bsize = 150;
| |
− | elseif wire_button_names[i] == "Gold Wire" then
| |
− | x = 30;
| |
− | y = 185;
| |
− | bsize = 150;
| |
− | end
| |
− | if lsButtonText(x, y, 0, 250, 0x80D080ff, wire_button_names[i]) then
| |
− | image_name = wire_button_names[i];
| |
− | is_done = 1;
| |
− | end
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− | lsDoFrame();
| |
− | lsSleep(10);
| |
− | end
| |
− |
| |
− | if image_name == "Thoths Metal Wire" then
| |
− | ThothsMetalWire();
| |
− | elseif image_name == "Metal Blue Wire" then
| |
− | MetalBlueWire();
| |
− | elseif image_name == "Magnesium Wire" then
| |
− | MagnesiumWire();
| |
− | elseif image_name == "Octecs Alloy Wire" then
| |
− | OctecsAlloyWire();
| |
− | elseif image_name == "Silver Wire" then
| |
− | SilverWire();
| |
− | elseif image_name == "Copper Wire" then
| |
− | CopperWire();
| |
− | elseif image_name == "Steel Wire" then
| |
− | SteelWire();
| |
− | elseif image_name == "Gold Wire" then
| |
− | GoldWire();
| |
− | end
| |
− | end
| |
− | end
| |
− | </pre>
| |
− | {{Collapse bottom}}
| |
− |
| |
− | {{Collapse top|title=VT Barley with Skip Water}}
| |
− | <pre>
| |
− |
| |
− | -- Edit these first 2 to adjust how much is planted in a pass
| |
− | -- May need to adjust walk_time in Barley_common.inc if you move too slowly to keep up
| |
− | -- grids tested: 2x2, 3x3, 5x5, 6x6 (probably need 3+ dex and 600ms walk time)
| |
− | grid_w = 5;
| |
− | grid_h = 5;
| |
− | watered = {};
| |
− | loop_count = 0;
| |
− | skip_water = 0;
| |
− |
| |
− | loadfile("luaScripts/Flax_common.inc")();
| |
− | loadfile("luaScripts/screen_reader_common.inc")();
| |
− | loadfile("luaScripts/ui_utils.inc")();
| |
− |
| |
− |
| |
− | function promptBarleyNumbers(is_plant)
| |
− | scale = 1.0;
| |
− |
| |
− | local z = 0;
| |
− | local is_done = nil;
| |
− | local value = nil;
| |
− | -- Edit box and text display
| |
− | while not is_done do
| |
− | -- Put these everywhere to make sure we don't lock up with no easy way to escape!
| |
− | checkBreak("disallow pause");
| |
− |
| |
− | lsPrint(10, 10, z, scale, scale, 0xFFFFFFff, "Choose passes and grid size");
| |
− |
| |
− | -- lsEditBox needs a key to uniquely name this edit box
| |
− | -- let's just use the prompt!
| |
− | -- lsEditBox returns two different things (a state and a value)
| |
− | local y = 40;
| |
− | lsPrint(5, y, z, scale, scale, 0xFFFFFFff, "Passes:");
| |
− | is_done, num_loops = lsEditBox("passes",
| |
− | 100, y, z, 50, 30, scale, scale,
| |
− | 0x000000ff, 1);
| |
− | if not tonumber(num_loops) then
| |
− | is_done = nil;
| |
− | lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
| |
− | num_loops = 1;
| |
− | end
| |
− | y = y + 32;
| |
− |
| |
− | lsPrint(5, y, z, scale, scale, 0xFFFFFFff, "Grid size:");
| |
− | is_done, grid_w = lsEditBox("grid",
| |
− | 100, y, z, 50, 30, scale, scale,
| |
− | 0x000000ff, grid_w);
| |
− | if not tonumber(grid_w) then
| |
− | is_done = nil;
| |
− | lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
| |
− | grid_w = 1;
| |
− | grid_h = 1;
| |
− | end
| |
− |
| |
− | grid_w = tonumber(grid_w);
| |
− | grid_h = grid_w;
| |
− | y = y + 32;
| |
− |
| |
− | if lsButtonText(170, y-32, z, 100, 0xFFFFFFff, "OK") then
| |
− | is_done = 1;
| |
− | end
| |
− |
| |
− | if is_plant then
| |
− | lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xD0D0D0ff, "This will plant and harvest a " .. grid_w .. "x" .. grid_w .. " grid of Barley " .. num_loops .. " times, requiring " .. (grid_w * grid_w) .. " raw barley and ".. (grid_w * grid_w * num_loops * 4) .. "water in jugs, doing " .. (grid_w*grid_w*num_loops) .. " harvests.");
| |
− | else
| |
− | lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xD0D0D0ff, "This will plant a " .. grid_w .. "x" .. grid_w .. " grid of Flax " .. num_loops .. " times, requiring " .. (grid_w * grid_w) .. " seeds, yielding " .. (grid_w * grid_w * num_loops) .. " seeds.");
| |
− | end
| |
− | y = y + 50;
| |
− | skip_water = lsCheckBox(10, y, z, 0xFFFFFFff, "Skip Rain Barrel", skip_water);
| |
− |
| |
− | if is_done and (not num_loops or not grid_w) then
| |
− | error 'Canceled';
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− |
| |
− |
| |
− | lsDoFrame();
| |
− | lsSleep(10); -- Sleep just so we don't eat up all the CPU for no reason
| |
− | end
| |
− | end
| |
− |
| |
− |
| |
− | function doit()
| |
− |
| |
− | promptBarleyNumbers(1);
| |
− | askForWindow("Make sure the plant barley window is pinned and you are in F8F8 cam zoomed in. You may need to F12 at low resolutions or hide your chat window (if it starts planting and fails to move downward, it probably clicked on your chat window). Will plant grid NE of current location. 'Plant all crops where you stand' must be ON. 'Right click pins/unpins a menu' must be ON.");
| |
− | lsSleep(1000);
| |
− | delay_time = 2000;
| |
− | local x = 1;
| |
− | local y = 1;
| |
− | initGlobals();
| |
− | -- Find the plant barley button
| |
− | srReadScreen();
| |
− |
| |
− | local imgBarley = "barley.png";
| |
− | local xyPlantBarley = srFindImage(imgBarley);
| |
− | if not xyPlantBarley then
| |
− | error 'Could not find plant window';
| |
− | end
| |
− | xyPlantBarley[0] = xyPlantBarley[0] + 5;
| |
− |
| |
− | -- Find the Rain Barrel
| |
− | if not skip_water then
| |
− | local imgDrawWater = "draw_water.png";
| |
− | local xyDrawWater = srFindImage(imgDrawWater);
| |
− | if not xyDrawWater then
| |
− | error 'Could not find rain barrel';
| |
− | end
| |
− | xyDrawWater[0] = xyDrawWater[0] + 5;
| |
− | end
| |
− |
| |
− |
| |
− |
| |
− | for loop_count=1, num_loops do
| |
− | local start_time = lsGetTimer();
| |
− | harvested = 0;
| |
− | -- Init watered array to 0
| |
− | for y=grid_h, 1, -1 do
| |
− | for x=grid_w, 1, -1 do
| |
− | watered[x+((y-1)*grid_w)] = 1;
| |
− | end
| |
− | end
| |
− | -- Local variables
| |
− | local xyCenter = getCenterPos();
| |
− | local xyBarleyMenu = {};
| |
− | xyBarleyMenu[0] = xyCenter[0] - 43;
| |
− | xyBarleyMenu[1] = xyCenter[1] + 0;
| |
− | local dxi=1;
| |
− | local dt_max=grid_w;
| |
− | local dt=grid_w;
| |
− | local dx={1, 0, -1, 0};
| |
− | local dy={0, -1, 0, 1};
| |
− | local num_at_this_length = 3;
| |
− | local x_pos = 0;
| |
− | local y_pos = 0;
| |
− | for y=1, grid_h do
| |
− | for x=1, grid_w do
| |
− | lsPrintln('doing ' .. x .. ',' .. y .. ' of ' .. grid_w .. ',' .. grid_h);
| |
− | statusScreen("Planting " .. x .. ", " .. y);
| |
− |
| |
− | -- Plant
| |
− | lsPrintln('planting ' .. xyPlantBarley[0] .. ',' .. xyPlantBarley[1]);
| |
− | setWaitSpot(xyBarleyMenu[0], xyBarleyMenu[1]);
| |
− | srClickMouseNoMove(xyPlantBarley[0], xyPlantBarley[1], 0);
| |
− | srSetMousePos(xyBarleyMenu[0], xyBarleyMenu[1]);
| |
− | waitForChange();
| |
− |
| |
− | -- Bring up menu
| |
− | lsPrintln('menu ' .. xyBarleyMenu[0] .. ',' .. xyBarleyMenu[1]);
| |
− | setWaitSpot(xyBarleyMenu[0]+5, xyBarleyMenu[1]);
| |
− | srClickMouse(xyBarleyMenu[0], xyBarleyMenu[1], 0);
| |
− | waitForChange();
| |
− |
| |
− | -- Check for window size
| |
− | window_w = 214;
| |
− | window_h = 218;
| |
− |
| |
− | -- Pin
| |
− | lsPrintln('pin ' .. (xyBarleyMenu[0]+5) .. ',' .. xyBarleyMenu[1]);
| |
− | srClickMouseNoMove(xyBarleyMenu[0]+5, xyBarleyMenu[1]+0, 1);
| |
− |
| |
− | -- Move window
| |
− | local pp = pinnedPos(x, y);
| |
− | lsPrintln('move ' .. (xyBarleyMenu[0]+5) .. ',' .. xyBarleyMenu[1] .. ' to ' .. pp[0] .. ',' .. pp[1]);
| |
− | drag(xyBarleyMenu[0] + 5, xyBarleyMenu[1], pp[0], pp[1], 0);
| |
− |
| |
− | -- Add 2 water now
| |
− | srReadScreen();
| |
− | local barleyAddButton = srFindImageInRange("BarleyAdd.png", pp[0], pp[1], 200, 100);
| |
− | local barleyWater = srFindImageInRange("barleyWater.png", pp[0], pp[1] - 50, 220, 150);
| |
− | if not barleyAddButton or not barleyWater then
| |
− | -- bugfix maybe for lag.
| |
− | lsSleep(100);
| |
− | srReadScreen();
| |
− | barleyAddButton = srFindImageInRange("BarleyAdd.png", pp[0], pp[1], 200, 100);
| |
− | barleyWater = srFindImageInRange("barleyWater.png", pp[0], pp[1] - 50, 220, 150);
| |
− | end
| |
− |
| |
− | srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
| |
− | srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
| |
− | watered[x+((y-1)*grid_w)] = watered[x+((y-1)*grid_w)] + 2;
| |
− |
| |
− | -- move to next position
| |
− | if not ((x == grid_w) and (y == grid_h)) then
| |
− | lsPrintln('walking dx=' .. dx[dxi] .. ' dy=' .. dy[dxi]);
| |
− | x_pos = x_pos + dx[dxi];
| |
− | y_pos = y_pos + dy[dxi];
| |
− | srClickMouseNoMove(xyCenter[0] + walk_px_x*dx[dxi], xyCenter[1] + walk_px_y*dy[dxi], 0);
| |
− | lsSleep(walk_time);
| |
− | dt = dt - 1;
| |
− | if dt == 1 then
| |
− | dxi = dxi + 1;
| |
− | num_at_this_length = num_at_this_length - 1;
| |
− | if num_at_this_length == 0 then
| |
− | dt_max = dt_max - 1;
| |
− | num_at_this_length = 2;
| |
− | end
| |
− | if dxi == 5 then
| |
− | dxi = 1;
| |
− | end
| |
− | dt = dt_max;
| |
− | else
| |
− | lsPrintln('skipping walking, on last leg');
| |
− | end
| |
− | end
| |
− | checkBreak();
| |
− | end
| |
− | end
| |
− |
| |
− | statusScreen("Refocusing windows...");
| |
− | -- Bring windows to front
| |
− | for y=grid_h, 1, -1 do
| |
− | for x=grid_w, 1, -1 do
| |
− | local rp = refreshPosUp(x, y);
| |
− | srClickMouseNoMove(rp[0], rp[1], 0);
| |
− | lsSleep(refocus_click_time);
| |
− | end
| |
− | end
| |
− | lsSleep(refocus_time); -- Wait for last window to bring to the foreground before clicking again
| |
− |
| |
− | -- Barley has been planted, pinned and refocused
| |
− |
| |
− | while 1 do
| |
− | for y=1, grid_h do
| |
− | for x=1, grid_w do
| |
− | local pp = pinnedPos(x, y);
| |
− | local rp = refreshPosDown(x, y);
| |
− | srClickMouse(rp[0],rp[1]);
| |
− | lsSleep(200);
| |
− | srReadScreen();
| |
− | local leftBar = srFindImageInRange("barleyBarLeft.png", pp[0], pp[1] - 50, 120, 100);
| |
− | if leftBar then
| |
− | leftBar[0] = leftBar[0] + 4;
| |
− | end
| |
− | local rightBar = srFindImageInRange("barleyBarRight.png", pp[0], pp[1] - 50, 220, 200);
| |
− | if rightBar then
| |
− | rightBar[0] = rightBar[0] + 1;
| |
− | end
| |
− | if not rightBar then
| |
− | error 'Could not find rightbar';
| |
− | end
| |
− | local barleyWater = srFindImageInRange("barleyWater.png", pp[0], pp[1] - 50, 220, 150);
| |
− | if not barleyWater then error 'Could not find water button.'; end
| |
− | local barleyAddButton = srFindImageInRange("BarleyAdd.png", pp[0], pp[1], 200, 100);
| |
− | if not barleyAddButton then error 'Could not find add button. Ended at batch '; end
| |
− |
| |
− | while 1 do
| |
− | if leftBar then
| |
− | waterBlue = 0;
| |
− | if rightBar then
| |
− | if barleyWater then
| |
− | srReadScreen();
| |
− | for i=leftBar[0],rightBar[0] do
| |
− | pxval = srReadPixelFromBuffer(i, barleyWater[1]);
| |
− | b = (math.floor(pxval/256) % 256);
| |
− | if b > 220 then
| |
− | waterBlue = waterBlue + 1;
| |
− | end
| |
− | end
| |
− | waterBlue = (waterBlue/(rightBar[0]-leftBar[0])*100);
| |
− | end
| |
− | end
| |
− | end
| |
− | checkBreak();
| |
− |
| |
− | if watered[x+((y-1)*grid_w)] < 5 then
| |
− | statusScreen("Watering " .. x .. "," .. y .. "step " .. watered[x+((y-1)*grid_w)] .. ".");
| |
− | if waterBlue < 90 then
| |
− | if watered[x+((y-1)*grid_w)] == 0 then
| |
− | end
| |
− | srClickMouseNoMove(barleyAddButton[0]+8, barleyWater[1]);
| |
− | watered[x+((y-1)*grid_w)] = watered[x+((y-1)*grid_w)] + 1;
| |
− | lsSleep(100);
| |
− | break;
| |
− | end
| |
− | else
| |
− | statusScreen("Harvesting " .. x .. "," .. y .. ".");
| |
− | if waterBlue < 90 then
| |
− | srClickMouseNoMove(pp[0]+90, pp[1]+90);
| |
− | lsSleep(100);
| |
− | srClickMouseNoMove(pp[0]+180, pp[1]-25);
| |
− | if watered[x+((y-1)*grid_w)] == 5 then
| |
− | harvested = 1;
| |
− | end
| |
− | break;
| |
− | end
| |
− | end
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | if harvested == 0 then
| |
− | statusScreen("Refocusing windows...");
| |
− | -- Bring windows to front
| |
− | for y=grid_h, 1, -1 do
| |
− | for x=grid_w, 1, -1 do
| |
− | local rp = refreshPosUp(x, y);
| |
− | srClickMouseNoMove(rp[0], rp[1], 0);
| |
− | lsSleep(refocus_click_time);
| |
− | end
| |
− | end
| |
− | lsSleep(refocus_time); -- Wait for last window to bring to the foreground before clicking again
| |
− | else
| |
− | for x=1, x_pos do
| |
− | srClickMouseNoMove(xyCenter[0] + walk_px_x*-1, xyCenter[1], 0);
| |
− | lsSleep(walk_time);
| |
− | end
| |
− | for x=1, -y_pos do
| |
− | srClickMouseNoMove(xyCenter[0], xyCenter[1] + walk_px_y, 0);
| |
− | lsSleep(walk_time);
| |
− | end
| |
− | break;
| |
− | end
| |
− | end
| |
− | local end_time = lsGetTimer();
| |
− | statusScreen("Time taken: " .. (end_time-start_time)/1000);
| |
− | -- move X and Y every 4 batches, but skip the Y move every 20th batch
| |
− | if loop_count % 4 == 0 and loop_count % 5 == 0 then
| |
− | doCorrectiveMove('x')
| |
− | elseif loop_count % 4 == 0 then
| |
− | doCorrectiveMove('xy')
| |
− | end
| |
− | --doStashWH(num_loops*grid_w*grid_w);
| |
− | --doRefillWater(4*numloops*grid_w*grid_w);
| |
− | doStashWH(grid_w*grid_w);
| |
− | if not skip_water then
| |
− | doRefillWater(4*grid_w*grid_w);
| |
− | end
| |
− | debug('end of batch #' .. loop_count)
| |
− | end
| |
− | end
| |
− |
| |
− | function doCorrectiveMove(move)
| |
− | statusScreen("Moving to correct for drift");
| |
− | local xyCenter = getCenterPos();
| |
− | if move == 'xy' or move == 'x' then
| |
− | srClickMouseNoMove(xyCenter[0] + walk_px_x*-1, xyCenter[1], 0);
| |
− | lsSleep(walk_time);
| |
− | end
| |
− | if move == 'xy' or move == 'y' then
| |
− | srClickMouseNoMove(xyCenter[0], xyCenter[1] + walk_px_y, 0);
| |
− | lsSleep(walk_time);
| |
− | end
| |
− | end
| |
− |
| |
− | function doStashWH(qty)
| |
− | local wh = srFindImage("stash.png");
| |
− | if wh then
| |
− | srClickMouseNoMove(wh[0]+9,wh[1]+9)
| |
− | debug('found stash, clicked it');
| |
− | lsSleep(250);
| |
− |
| |
− | srReadScreen();
| |
− | local insects = srFindImage("stashInsectEllipsis.png");
| |
− |
| |
− | local stashes = srFindImage("stashBarley.png");
| |
− | if not stashes then
| |
− | error "no barley to stash"
| |
− | end
| |
− | srClickMouseNoMove(stashes[0],stashes[1]);
| |
− |
| |
− | lsSleep(250);
| |
− | -- stash exactly the right amount by number so we don't lose our seed barley
| |
− | srKeyEvent(qty);
| |
− | srKeyEvent('\n');
| |
− |
| |
− | if insects then
| |
− | srClickMouseNoMove(wh[0]+9,wh[1]+9)
| |
− | lsSleep(250);
| |
− | srReadScreen();
| |
− |
| |
− | local insects = srFindImage("stashInsectEllipsis.png");
| |
− | if insects then
| |
− | srClickMouseNoMove(insects[0],insects[1]);
| |
− | lsSleep(250);
| |
− |
| |
− | srReadScreen();
| |
− | insects = srFindImage("stashAllTheInsects.png");
| |
− | if not insects then
| |
− | error "found insects but couldn't stash them";
| |
− | end
| |
− | srClickMouseNoMove(insects[0],insects[1]);
| |
− | end
| |
− | end
| |
− | end
| |
− | end
| |
− |
| |
− | function doRefillWater(qty)
| |
− | debug("in refill")
| |
− | local rb = srFindImage("draw_water.png");
| |
− | if rb then
| |
− | srClickMouseNoMove(rb[0]+5,rb[1]+5)
| |
− | lsSleep(250);
| |
− | srKeyEvent(qty);
| |
− | srKeyEvent('\n');
| |
− | end
| |
− |
| |
− | end
| |
− |
| |
− |
| |
− | function debug(msg)
| |
− | if 0 then
| |
− | statusScreen(msg);
| |
− | lsSleep(1000);
| |
− | end
| |
− | end
| |
− | </pre>
| |
− | {{Collapse bottom}}
| |
− |
| |
− | {{Collapse top|title=Hackling Rake Fixed}}
| |
− | <pre>
| |
− | -- Hackling Rake - Original macro by Bardoth (T6) - Revised by Cegaiel
| |
− | -- Runs the Hacking Rake (or Flax Comb). Monitors the skills tab and only clicks when its all black.
| |
− | --
| |
− | --
| |
− |
| |
− | assert(loadfile("luaScripts/common.inc"))();
| |
− |
| |
− | askText = singleLine([[
| |
− | Hackling Rake v1.0 (by Bardoth - Revised by Cegaiel) --
| |
− | Pin Hacking Rake or Flax Comb window up and have Rotten Flax in you inventory. Make sure your rake is on the first step before starting. You MUST have Skills window open and everything from Strength to Perception skill should be visible.
| |
− | Press Shift to continue.
| |
− | ]]);
| |
− |
| |
− | do_click_refresh = 1;
| |
− | do_click_refresh_when_end_red = 1;
| |
− | improved_rake = 0;
| |
− | num_flax = 0;
| |
− | num_loops = 0;
| |
− | per_rake = 10;
| |
− |
| |
− | function promptRakeNumbers()
| |
− | scale = 1.0;
| |
− |
| |
− | local z = 0;
| |
− | local is_done = nil;
| |
− | local value = nil;
| |
− | -- Edit box and text display
| |
− | while not is_done do
| |
− | -- Put these everywhere to make sure we don't lock up with no easy way to escape!
| |
− | checkBreak("disallow pause");
| |
− |
| |
− | lsPrint(10, 10, z, scale, scale, 0xFFFFFFff, "Hackling Raking Setup");
| |
− |
| |
− | -- lsEditBox needs a key to uniquely name this edit box
| |
− | -- let's just use the prompt!
| |
− | -- lsEditBox returns two different things (a state and a value)
| |
− | local y = 40;
| |
− | lsPrint(5, y, z, scale, scale, 0xFFFFFFff, "How much flax: ");
| |
− | is_done, num_flax = lsEditBox("passes",
| |
− | 160, y, z, 70, 30, scale, scale,
| |
− | 0x000000ff, 1);
| |
− | if not tonumber(num_flax) then
| |
− | is_done = nil;
| |
− | lsPrint(10, y+18, z+10, 0.7, 0.7, 0xFF2020ff, "MUST BE A NUMBER");
| |
− | num_flax = 1;
| |
− | end
| |
− | y = y + 32;
| |
− | improved_rake = lsCheckBox(10, y, z, 0xFFFFFFff, "Improved Rake", improved_rake);
| |
− |
| |
− | if improved_rake then
| |
− | per_rake = 30;
| |
− | else
| |
− | per_rake = 10;
| |
− | end
| |
− |
| |
− | num_loops = math.floor(num_flax / per_rake);
| |
− |
| |
− | y = y + 32;
| |
− |
| |
− | if lsButtonText(170, y+32, z, 100, 0xFFFFFFff, "OK") then
| |
− | is_done = 1;
| |
− | end
| |
− |
| |
− | lsPrintWrapped(10, y, z+10, lsScreenX - 20, 0.7, 0.7, 0xD0D0D0ff, "This will attempt to rake " .. num_flax .. " rotten flax, requiring " .. num_loops .. " cycles.");
| |
− |
| |
− | if is_done and (not num_flax) then
| |
− | error 'Canceled';
| |
− | end
| |
− |
| |
− | if lsButtonText(lsScreenX - 110, lsScreenY - 30, z, 100, 0xFFFFFFff, "End script") then
| |
− | error "Clicked End Script button";
| |
− | end
| |
− |
| |
− |
| |
− | lsDoFrame();
| |
− | lsSleep(10); -- Sleep just so we don't eat up all the CPU for no reason
| |
− | end
| |
− | end
| |
− |
| |
− |
| |
− | function doit()
| |
− | promptRakeNumbers();
| |
− | askForWindow(askText);
| |
− |
| |
− | local step = 1;
| |
− | local task = "";
| |
− | local task_text = "";
| |
− | local warn_small_font=nil;
| |
− | local warn_large_font=nil;
| |
− | local loop_count=1;
| |
− | local straw = 0;
| |
− | local tow = 0;
| |
− | local lint = 0;
| |
− | local clean = 0;
| |
− |
| |
− |
| |
− | while num_loops do
| |
− | checkBreak();
| |
− | lsSleep(250);
| |
− | srReadScreen();
| |
− | stats_black2 = nil;
| |
− | stats_black3 = nil;
| |
− |
| |
− | stats_black = srFindImage("AllStats-Black.png");
| |
− | if not stats_black then
| |
− | stats_black2 = srFindImage("AllStats-Black2.png");
| |
− | if not stats_black2 then
| |
− | stats_black3 = srFindImage("AllStats-Black3.png");
| |
− | if stats_black3 then
| |
− | warn_large_font = true;
| |
− | end
| |
− | else
| |
− | warn_small_font = true;
| |
− | end
| |
− | end
| |
− |
| |
− | local warning="";
| |
− | if warn_small_font then
| |
− | warning = "Your font size appears to be smaller than the default, many macros here will not work correctly.";
| |
− | elseif warn_large_font then
| |
− | warning = "Your font size appears to be larger than the default, many macros here will not work correctly.";
| |
− | end
| |
− |
| |
− | if step == 1 then
| |
− | task = "Separate Rotten Flax";
| |
− | task_text = "Separate Straw";
| |
− | elseif step == 2 then
| |
− | task = "Continue processing Rotten";
| |
− | task_text = "Separate Tow";
| |
− | elseif step == 3 then
| |
− | task = "Continue processing";
| |
− | task_text = "Refine the Lint";
| |
− | elseif step == 4 then
| |
− | task = "Clean the";
| |
− | task_text = "Clean the Rake";
| |
− | end
| |
− |
| |
− | if not stats_black and not stats_black2 and not stats_black3 then
| |
− | sleepWithStatus(1200, "Next Step: " .. step .. "/4 - " .. task_text .. "\n----------------------------------------------\n1) Straw Removed: " .. straw .."/" .. num_loops*per_rake .. "\n2) Tow Seperated: " .. tow .. "/" .. num_loops*per_rake .. "\n3) Lint Refined: " .. lint .. "/" .. num_loops*per_rake .. "\n4) Cleanings: " .. clean .. "/" .. num_loops .. "\n----------------------------------------------\nFlax Processed: " .. (loop_count-1)*per_rake .. "\nFlax Remaining: " .. num_flax - ((loop_count-1)*per_rake) .. "\n" .. warning);
| |
− | elseif loop_count >= num_loops then
| |
− | num_loops = nil;
| |
− | else
| |
− |
| |
− | srReadScreen();
| |
− | lsSleep(50);
| |
− | clickAllText("This Is");
| |
− | lsSleep(200);
| |
− |
| |
− | srReadScreen();
| |
− | lsSleep(50);
| |
− | clickAllText(task);
| |
− | lsSleep(200);
| |
− | if step == 1 then
| |
− | straw = straw + per_rake;
| |
− | elseif step == 2 then
| |
− | tow = tow + per_rake;
| |
− | elseif step == 3 then
| |
− | lint = lint + per_rake;
| |
− | elseif
| |
− | step == 4 then
| |
− | clean = clean + 1;
| |
− | step = 0;
| |
− | loop_count= loop_count +1;
| |
− | end
| |
− | step = step + 1;
| |
− | sleepWithStatus(300, "Refreshing screen");
| |
− |
| |
− | srReadScreen();
| |
− | lsSleep(50);
| |
− | clickAllText("This Is");
| |
− | lsSleep(200);
| |
− | end
| |
− |
| |
− | end
| |
− | if num_loops == nil then
| |
− | sleepWithStatus(5000, "ALL DONE!\n----------------------------------------------\n1) Straw Removed: " .. straw .."/" .. clean*10 .. "\n2) Tow Seperated: " .. tow .. "/" .. clean*10 .. "\n3) Lint Refined: " .. lint .. "/" .. clean*10 .. "\n4) Cleanings: " .. clean .. "/" .. clean .. "\n----------------------------------------------\nFlax Processed: " .. (loop_count-1)*10 .. "\nFlax Remaining: " .. num_flax - ((loop_count-1)*10));
| |
− |
| |
− | lsPlaySound("Complete.wav");
| |
− | end
| |
− | end
| |
| </pre> | | </pre> |
| {{Collapse bottom}} | | {{Collapse bottom}} |