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:Safa"
From ATITD7
Jump to navigationJump to search| Line 2,172: | Line 2,172: | ||
<tr> | <tr> | ||
| − | <td><font style="font-size:13px">[https://drive.google.com/open?id=0Bydp4KA9MLkKdk1nNUJvZDVDeGs Download] [[Image:Automato.png|15px|Automato_Logo]] Moves sculpture pieces with keystrokes. | + | <td><font style="font-size:13px">[https://drive.google.com/open?id=0Bydp4KA9MLkKdk1nNUJvZDVDeGs Download] [[Image:Automato.png|15px|Automato_Logo]] Moves sculpture pieces with keystrokes. Executes pre-made recipes.</font></td> |
</tr> | </tr> | ||
Revision as of 18:03, 22 September 2016
|
|
Macros/Scripts
zemples.lua
| Download |
--zStock.lua
dofile("common.inc");
--Exit Loop?
is_done = false;
askText = singleLine([[Hit SHIFT to begin.]]);
function doit()
askForWindow(askText);
askForFocus();
Run();
end
--Color List
color = {
"Alice Blue", "Amethyst", "Antique White", "Aqua", "Aquamarine", "Azure", "Baker Miller Pink", "Banana", "Barn Red", "Beet", "Beige", "Bisque", "Black", "Blanched Almond", "Blaze Orange", "Blue", "Blue Violet", "Boysenberry", "Bright Pink", "Brown", "Burgundy Red", "Burly Wood", "Burnt Sienna", "Burnt Umber", "Cadet Blue", "Cadmium Orange", "Cadmium Yellow", "Carrot", "Chartreuse", "Chocolate", "Cobalt Blue", "Cobalt Green", "Coral", "Cornflower Blue", "Cornsilk", "Crimson", "Dark Blue", "Dark Cyan", "Dark Golden Rod", "Dark Green", "Dark Grey", "Dark Jungle Green", "Dark Khaki", "Dark Magenta", "Dark Olive Green", "Dark Orange", "Dark Orchid", "Dark Red", "Dark Salmon", "Dark Scarlet", "Dark Sea Green", "Dark Sienna", "Dark Slate Blue", "Dark Slate Grey", "Dark Turquoise", "Dark Violet", "Deep Pink", "Deep Sky Blue", "Dim Grey", "Dodger Blue", "Duke Blue", "Eggshell White", "Emerald Green", "Feldspar", "Fire Brick", "Floral White", "Forest Green", "Fuchsia", "Gainsboro", "Ghost White", "Gold", "Golden Rod", "Green", "Green Yellow", "Grey", "Honey Dew", "Hot Pink", "Imperial Blue", "Indian Red", "Indigo", "Ivory", "Khaki", "Lavender", "Lavender Blush", "Lawn Green", "Lemon Chiffon", "Licorice", "Light Blue", "Light Coral", "Light Cyan", "Light Golden Rod Yellow", "Light Green", "Light Grey", "Light Pink", "Light Salmon", "Light Sea Green", "Light Sky Blue", "Light Slate Blue", "Light Slate Grey", "Light Steel Blue", "Light Yellow", "Lime", "Lime Green", "Linen", "Maroon", "Medium Aqua Marine", "Medium Blue", "Medium Orchid", "Medium Purple", "Medium Sea Green", "Medium Slate Blue", "Medium Spring Green", "Medium Turquoise", "Medium Violet Red", "Melon", "Midnight Blue", "Mint Cream", "Misty Rose", "Moccasin", "Navajo White", "Navy", "Old Lace", "Olive", "Olive Drab", "Orange", "Orange Red", "Orchid", "Oxford Blue", "Pale Golden Rod", "Pale Green", "Pale Turquoise", "Pale Violet Red", "Papaya Whip", "Peach Puff", "Peacock", "Persian Indigo", "Persian Pink", "Peru", "Pink", "Plum", "Powder Blue", "Prussian Blue", "Purple", "Raw Sienna", "Red", "Red Devil", "Rich Black", "Rosy Brown", "Royal Blue", "Ruby Red", "Saddle Brown", "Salmon", "Sandy Brown", "Sangria", "Sap Green", "Sea Green", "Sea Shell", "Seal Brown", "Sienna", "Silver", "Sky Blue", "Slate Blue", "Slate Grey", "Smokey Black", "Snow", "Spring Green", "Steel Blue", "Steel Pink", "Tan", "Teal", "Thistle", "Tomato", "Turquoise", "Tyrian Purple", "Violet", "Violet Red", "Wheat", "White", "White Smoke", "Yellow", "Yellow Green", "Zaffre"
};
colorcode = {
"-369820161", "-1721316097", "-85207041", "16777215", "-2114061057", "-1209938433", "-7229441", "-472950785", "2081030911", "-1908896001", "-168436481", "-18103297", "16843263", "-1323521", "-10026753", "65535", "-1976835329", "-2026741505", "-16744449", "-1523963137", "-2147475201", "-558331905", "-1976168449", "-1976359681", "1604231423", "-10419201", "-6745345", "-529324801", "2147418367", "-764862721", "1029286911", "1032929535", "-8433409", "1839590655", "-467713", "-602653441", "35839", "9145343", "-1199174657", "6553855", "-1448498689", "438575615", "-1112052737", "-1962898433", "1433087999", "-7601921", "-1724723969", "-1827267329", "-376014081", "1443043839", "-1883467777", "1007949055", "-2092658177", "793726975", "13554175", "-1811885057", "-15428609", "12582911", "1768516095", "512819199", "40191", "-51983873", "13195263", "-778930689", "-1306385665", "-331521", "579543807", "-16711681", "-589505281", "-117899265", "-2686721", "-626712321", "8388863", "-1375784961", "-2139062017", "-251662081", "-9849601", "2332159", "-849584897", "1226271487", "-3841", "-253326081", "-421070081", "-985601", "2096890111", "-340481", "437326079", "-1378294017", "-260013825", "-520093697", "-84225281", "-1863413505", "-741092353", "-4800001", "-37781505", "548580095", "-2016478465", "-2072969217", "2005441023", "-1682251777", "-7937", "16711935", "852308735", "-84875521", "-2127952385", "1724754687", "52735", "-1168780289", "-1821320193", "1018393087", "2070474495", "16423679", "1170325503", "-1623423233", "-475502081", "421097727", "-167773441", "-1777153", "-1788417", "-2183681", "33023", "-34216193", "-2139094785", "1804477439", "-5963521", "-12254977", "-630139137", "2181119", "-286741761", "-1728341761", "-1293487617", "-613379073", "-1059329", "-2442753", "866241023", "840071935", "-142622977", "-846905345", "-4142081", "-576659969", "-1327438081", "3232767", "-2147450625", "-949938945", "-16776961", "-2046750209", "4210943", "-1131442177", "1097458175", "-1693376769", "-1958407169", "-92245249", "-190553857", "-1845490945", "813700351", "780883967", "-659713", "840176895", "-1605227009", "-808014337", "-2016482305", "1784335871", "1887473919", "269224191", "-328961", "16744447", "1182971135", "-869046529", "-759919361", "8421631", "-658515713", "-10270721", "1088475391", "1711422719", "-293409025", "-1623423233", "-169954305", "-1", "-168430081", "-65281", "-1697828097", "1353983"
};
function clipboardResult()
clip1 = (numbers[1] ..'\n'.. numbers[2] ..'\n'.. numbers[3] ..'\n'.. numbers[4] ..'\n'.. numbers[5] ..'\n'.. numbers[6] ..'\n'.. numbers[7] ..'\n'.. numbers[8] ..'\n'.. numbers[9] ..'\n'.. numbers[10] ..'\n'.. numbers[11] ..'\n'.. numbers[12] ..'\n'.. numbers[13] ..'\n'.. numbers[14] ..'\n'.. numbers[15] ..'\n'.. numbers[16] ..'\n'.. numbers[17] ..'\n'.. numbers[18] ..'\n'.. numbers[19] ..'\n'.. numbers[20] ..'\n'.. numbers[21] ..'\n'.. numbers[22] ..'\n'.. numbers[23] ..'\n'.. numbers[24] ..'\n'.. numbers[25] ..'\n'.. numbers[26] ..'\n'.. numbers[27] ..'\n'.. numbers[28] ..'\n'.. numbers[29] ..'\n'.. numbers[30] ..'\n'.. numbers[31] ..'\n'.. numbers[32] ..'\n'.. numbers[33] ..'\n'.. numbers[34] ..'\n'.. numbers[35] ..'\n'.. numbers[36] ..'\n'.. numbers[37] ..'\n'.. numbers[38] ..'\n'.. numbers[39] ..'\n'.. numbers[40] ..'\n'.. numbers[41] ..'\n'.. numbers[42] ..'\n'.. numbers[43] ..'\n'.. numbers[44] ..'\n'.. numbers[45] ..'\n'.. numbers[46] ..'\n'.. numbers[47] ..'\n'.. numbers[48] ..'\n'.. numbers[49] ..'\n'.. numbers[50] ..'\n'.. numbers[51] ..'\n'.. numbers[52] ..'\n'.. numbers[53] ..'\n'.. numbers[54] ..'\n'.. numbers[55] ..'\n'.. numbers[56] ..'\n'.. numbers[57] ..'\n'.. numbers[58] ..'\n'.. numbers[59] ..'\n'.. numbers[60] ..'\n'.. numbers[61] ..'\n'.. numbers[62] ..'\n'.. numbers[63] ..'\n'.. numbers[64] ..'\n'.. numbers[65] ..'\n'.. numbers[66] ..'\n'.. numbers[67] ..'\n'.. numbers[68] ..'\n'.. numbers[69] ..'\n'.. numbers[70] ..'\n'.. numbers[71] ..'\n'.. numbers[72] ..'\n'.. numbers[73] ..'\n'.. numbers[74] ..'\n'.. numbers[75]);
clip2 = (numbers[76] ..'\n'.. numbers[77] ..'\n'.. numbers[78] ..'\n'.. numbers[79] ..'\n'.. numbers[80] ..'\n'.. numbers[81] ..'\n'.. numbers[82] ..'\n'.. numbers[83] ..'\n'.. numbers[84] ..'\n'.. numbers[85] ..'\n'.. numbers[86] ..'\n'.. numbers[87] ..'\n'.. numbers[88] ..'\n'.. numbers[89] ..'\n'.. numbers[90] ..'\n'.. numbers[91] ..'\n'.. numbers[92] ..'\n'.. numbers[93] ..'\n'.. numbers[94] ..'\n'.. numbers[95] ..'\n'.. numbers[96] ..'\n'.. numbers[97] ..'\n'.. numbers[98] ..'\n'.. numbers[99] ..'\n'.. numbers[100] ..'\n'.. numbers[101] ..'\n'.. numbers[102] ..'\n'.. numbers[103] ..'\n'.. numbers[104] ..'\n'.. numbers[105] ..'\n'.. numbers[106] ..'\n'.. numbers[107] ..'\n'.. numbers[108] ..'\n'.. numbers[109] ..'\n'.. numbers[110] ..'\n'.. numbers[111] ..'\n'.. numbers[112] ..'\n'.. numbers[113] ..'\n'.. numbers[114] ..'\n'.. numbers[115] ..'\n'.. numbers[116] ..'\n'.. numbers[117] ..'\n'.. numbers[118] ..'\n'.. numbers[119] ..'\n'.. numbers[120] ..'\n'.. numbers[121] ..'\n'.. numbers[122] ..'\n'.. numbers[123] ..'\n'.. numbers[124] ..'\n'.. numbers[125] ..'\n'.. numbers[126] ..'\n'.. numbers[127] ..'\n'.. numbers[128] ..'\n'.. numbers[129] ..'\n'.. numbers[130] ..'\n'.. numbers[131] ..'\n'.. numbers[132] ..'\n'.. numbers[133] ..'\n'.. numbers[134] ..'\n'.. numbers[135] ..'\n'.. numbers[136] ..'\n'.. numbers[137] ..'\n'.. numbers[138] ..'\n'.. numbers[139] ..'\n'.. numbers[140] ..'\n'.. numbers[141] ..'\n'.. numbers[142] ..'\n'.. numbers[143] ..'\n'.. numbers[144] ..'\n'.. numbers[145]);
clip3 = (numbers[146] ..'\n'.. numbers[147] ..'\n'.. numbers[148] ..'\n'.. numbers[149] ..'\n'.. numbers[150] ..'\n'.. numbers[151] ..'\n'.. numbers[152] ..'\n'.. numbers[153] ..'\n'.. numbers[154] ..'\n'.. numbers[155] ..'\n'.. numbers[156] ..'\n'.. numbers[157] ..'\n'.. numbers[158] ..'\n'.. numbers[159] ..'\n'.. numbers[160] ..'\n'.. numbers[161] ..'\n'.. numbers[162] ..'\n'.. numbers[163] ..'\n'.. numbers[164] ..'\n'.. numbers[165] ..'\n'.. numbers[166] ..'\n'.. numbers[167] ..'\n'.. numbers[168] ..'\n'.. numbers[169] ..'\n'.. numbers[170] ..'\n'.. numbers[171] ..'\n'.. numbers[172] ..'\n'.. numbers[173] ..'\n'.. numbers[174] ..'\n'.. numbers[175] ..'\n'.. numbers[176] ..'\n'.. numbers[177] ..'\n'.. numbers[178] ..'\n'.. numbers[179] ..'\n'.. numbers[180] ..'\n'.. numbers[181] ..'\n'.. numbers[182]);
lsClipboardSet(clip1 ..'\n'.. clip2 ..'\n'.. clip3);
end
--Inventory
numbers = {};
for i=1,182 do
numbers[i] = 0;
end
ui_dark=993146367;
ui_mid=1717067007;
ui_light=-437918209;
noDataX = 20;
log = {};
logcolor = {};
wh_count = 0;
--SUM of all tiles
total = 0;
function getTotal()
total = 0;
if #numbers > 1 then
for i =1,#numbers do
total= total + numbers[i];
end
end
end
function formatZemplestxt()
File = io.open("zemples.txt","w+");
File:close();
end
function zemplestxt()
formatZemplestxt()
File = io.open("zemples.txt","a+");
File:write("-- Quantity of colors from 1 Alice Blue to 182 Zaffre --\n");
for i =1,182 do
File:write(numbers[i] .."\n");
end
File:write("-- Console Log --\n");
for i =1,#log do
File:write(log[i] .."\n");
end
File:close();
end
function scaleY(y) return a[1]/(350/y); end
function scaleX(x) return a[0]/(300/x); end
function check()
for i=1,182 do
name = string.find(clipboard, "Raeli Tiles:".. color[i]);
if name then
--Problem colors
if i == 16 then hold = string.sub(clipboard, name + 17, name + 22); lsPrintln(hold); end --Blue
if i == 73 then hold = string.sub(clipboard, name + 18, name + 23); lsPrintln(hold); end --Green
if i == 83 then hold = string.sub(clipboard, name + 21, name + 25); lsPrintln(hold); end --Lavender
if i == 102 then hold = string.sub(clipboard, name + 17, name + 21); lsPrintln(hold); end --Lime
if i == 145 then hold = string.sub(clipboard, name + 16, name + 21); lsPrintln(hold); end --Red
if i == 175 then hold = string.sub(clipboard, name + 19, name + 21); lsPrintln(hold); end --Violet
if i == 178 then hold = string.sub(clipboard, name + 18, name + 22); lsPrintln(hold); end --White
if i == 180 then hold = string.sub(clipboard, name + 19, name + 23); lsPrintln(hold); end --Yellow
if hold == "Violet" then hold = nil;
elseif hold == "Yellow" then hold = nil;
elseif hold == "Blush" then hold = nil;
elseif hold == "Green" then hold = nil;
elseif hold == "Devil" then hold = nil;
elseif hold == "Red" then hold = nil;
elseif hold == "Smoke" then hold = nil;
elseif hold == "Green" then hold = nil;
else
num = string.sub(clipboard, name - 6, name - 2);
num = string.gsub(num, " ", "");
numbers[i] = numbers[i] + num;
space = "";
if string.len(numbers[i]) == 1 then space ="00000";
elseif string.len(numbers[i]) == 2 then space ="0000";
elseif string.len(numbers[i]) == 3 then space ="000";
elseif string.len(numbers[i]) == 4 then space ="00";
elseif string.len(numbers[i]) == 5 then space ="0";
else space ="";
end
lsPrintln("Tile: ".. space .. numbers[i] .." Color: ".. color[i]);
log[#log + 1] ="Tile: ".. space .. numbers[i] .." Color: ".. color[i];
logcolor[#logcolor + 1]= colorcode[i];
end
else
--lsPrintln("Checking: ".. color[i] .." Num: 0");
end
end
end
function Run()
formatZemplestxt();
--Loop
while not is_done do
checkBreak();
a = lsGetWindowSize();
lsDisplaySystemSprite(1, 0, 0, 0, a[0], a[1], ui_mid); --BG Color
lsDisplaySystemSprite(1, 0, 0, 1, a[0], a[1]/8.75, ui_dark);
lsDisplaySystemSprite(1, 0, a[1] - 10, 4, a[0], a[1]/35, ui_dark);
if wh_count =="Saved to clipboard and zemples.txt" then
lsPrint(0, a[1] - 11, 6, scaleX(0.6), scaleX(0.6), ui_mid, wh_count);
clipboardResult();
elseif wh_count == 0 then
else
lsPrint(scaleX(135), a[1] - 11, 6, scaleX(0.5), scaleX(0.5), ui_mid, wh_count .."/47");
progress = (a[0] * wh_count) / 100;
lsDisplaySystemSprite(1, 0, a[1] - 10, 5, progress * 2, a[1]/35, ui_light);
end
getTotal();
if total > 0 then
x = 0; y =scaleY(10); colorplace = 0; colorWidth = 0;
for i =1,#numbers do
per = (numbers[i]*100) /total;
percent =string.sub(per, 0, 4);
colorWidth = (a[0] * percent) / 100;
lsDisplaySystemSprite(1, x, y, 2, colorWidth, a[1]/17.5, colorcode[i]);
colorplace = colorplace + colorWidth;
x = colorplace;
end
else
if (a[0] - 100) == noDataX then noDataDirection ="left"; end
if noDataX == 0 then noDataDirection ="right"; end
if noDataDirection == "left" then noDataX = noDataX - 1; else noDataX = noDataX + 1; end
random = math.random(0,90000);
if random > 4500 then redflash =ui_dark else redflash=-1962916353; end
lsPrint(noDataX + scaleY(30), 15, 3, scaleY(0.5), scaleY(0.5), ui_dark, "No Data");
lsDisplaySystemSprite(1, noDataX, scaleY(10), 2, a[1]/3.5, a[1]/17.5, ui_light);
lsDisplaySystemSprite(1, scaleX(90), scaleY(50), 2, scaleX(50), scaleY(50), ui_light);
lsDisplaySystemSprite(1, scaleX(140), scaleY(70), 2, scaleX(10), scaleY(30), redflash);
lsDisplaySystemSprite(1, scaleX(150), scaleY(50), 2, scaleX(50), scaleY(50), ui_light);
lsDisplaySystemSprite(1, scaleX(90), scaleY(105), 2, scaleX(110), scaleY(120), ui_light);
lsPrint(scaleX(10), scaleY(250), 2, scaleX(0.6), scaleX(0.6), ui_light, "Use middle mouse click to scan each warehouse");
end
if #log > 1 then
y = scaleY(50);
xyz = #log;
for i=1,#log do
star = string.find(log[xyz], "*");
if star then
lsPrint(0, y, 2, scaleX(0.5), scaleX(0.5), ui_light, log[xyz]);
lsDisplaySystemSprite(1, 0, y + scaleY(2), 2, scaleX(220), scaleY(8), logcolor[xyz]);
else
lsPrint(0, y, 2, scaleX(0.5), scaleX(0.5), ui_light, log[xyz]);
lsDisplaySystemSprite(1, scaleX(90), y + scaleY(2), 2, scaleX(8), scaleY(8), logcolor[xyz]);
end
y = y + scaleX(10); xyz = xyz - 1;
end
end
if lsMouseIsDown(2) then
mouse_x, mouse_y = srMousePos();
srClickMouseNoMove(mouse_x, mouse_y);
lsSleep(100);
srReadScreen();
utility = findText("Utility");
if utility then
srClickMouseNoMove(utility[0] + 10, utility[1]);
lsSleep(100);
srReadScreen();
copy = findText("Copy");
if copy then
srClickMouseNoMove(copy[0] + 10, copy[1]);
lsSleep(100);
clipboard = lsClipboardGet();
log[#log + 1]="* Contents of ".. string.sub(clipboard, 0, 16) .."at ".. string.sub(clipboard, 42, 52)
logcolor[#logcolor + 1] = ui_dark;
--lsClipboardSet(clipboard);
check();
zemplestxt();
if wh_count == 46 then wh_count = "Saved to clipboard and zemples.txt" else wh_count = wh_count + 1; end
else lsPlaySound("fail.wav"); end
else
lsPlaySound("fail.wav");
end
end
if lsKeyDown("c") then
clipboard = lsClipboardGet();
log[#log + 1]="* Contents of ".. string.sub(clipboard, 0, 16) .."at ".. string.sub(clipboard, 42, 52)
logcolor[#logcolor + 1] = ui_dark;
--lsClipboardSet(clipboard);
check();
zemplestxt();
lsSleep(300);
end
if lsKeyDown("q") then
is_done = 1;
end
lsDoFrame();
lsSleep(10);
end
end
|
chariot_stop.lua
| Download |
--Chariot Stop v1.1 by Safa
--Thanks to Dreger for getCurrentRegion() function.
--This macro will travel to desired destination using shortest path when possible. It has to read your location from clock up top. (Use /clockloc command to open it if missing.) Do NOT walk while macro is running. Do NOT pin chariot windows. You can chat or minimize VT if you wish. Please re-open Chariot window after travel.
dofile("screen_reader_common.inc");
dofile("ui_utils.inc");
dofile("common.inc");
--Introduction
askForWindow("Chariot_Stop v1.1 (by Safa) This macro will travel to desired destination using shortest path when possible. It has to read your location from clock up top. (Use /clockloc command to open it if missing.) Do NOT walk while macro is running. Do NOT pin chariot windows. You can chat or minimize VT if you wish. Please re-open Chariot window after travel.") ;
--debugging
function spacer()
lsPrintln(" ");
lsPrintln(" ");
lsPrintln(" ");
end
function clearconsole()
for i =1,20 do
lsPrintln(" ");
end
end
clearconsole();
-- / debugging
function checkCS()
-- Loop if CS window not present.
srReadScreen();
cs = srFindImage("chariot/cs.png", 5000);
while not cs do
srReadScreen();
cs = srFindImage("chariot/cs.png", 5000);
sleepWithStatus(4000, "Can't see Chariot Window!");
lsPlaySound("AnvilHit.wav");
end
end
-- returns the text string for the current region from the clock window or nil if not found.
function getCurrentRegion()
lsPrintln("Starting getCurrentRegion");
srReadScreen();
anchor = findText("Year");
if(not anchor) then
anchor = findText("ar 1");
end
if(not anchor) then
anchor = findText("ar 2");
end
if(not anchor) then
anchor = findText("ar 3");
end
if(not anchor) then
anchor = findText("ar 4");
end
if(not anchor) then
anchor = findText("ar 5");
end
if(not anchor) then
anchor = findText("ar 6");
end
if(not anchor) then
anchor = findText("ar 7");
end
if(not anchor) then
anchor = findText("ar 8");
end
if(not anchor) then
anchor = findText("ar 9");
end
if anchor then
window = getWindowBorders(anchor[0], anchor[1]);
lines = findAllText(nil, window, NOPIN);
regionCoords = table.concat(lines[2], ",");
regionAndCoords = string.sub(regionCoords,string.find(regionCoords,",") + 1);
region = string.sub(regionAndCoords, 0, string.find(regionAndCoords,":") - 1);
return region;
end
return nil;
end
-- All Regions
regions = {"Cat's Claw Ridge", "Cradle of Sun", "Desert of Nomads", "Desert of Shades", "Eastern Grounds", "Four Corners", "Lake of Reeds", "Memphis", "Midland Valley", "Old Egypt", "River Plains", "Seven Lakes", "Sinai", "South Egypt", "Valley of Kings"};
-- Adjacents
toCCR = {"Old Egypt", "Valley of Kings", "X"};
toCOS = {"Seven Lakes", "X", "X"};
toDON = {"Lake of Reeds", "Old Egypt", "Sinai"};
toDOS = {"River Plains", "Valley of Kings", "X"};
toEG = {"South Egypt", "X", "X"};
toFC = {"Midland Valley","X","X"};
toLR = {"Desert of Nomads", "Sinai", "X"};
toM = {"South Egypt", "X", "X"};
toMV = {"Four Corners", "Old Egypt","River Plains"};
toOE = {"Cat's Claw Ridge", "Desert of Nomads", "Midland Valley"};
toRP = {"Desert of Shades","Midland Valley","Seven Lakes"};
to7L = {"Cradle of Sun", "River Plains", "South Egypt"};
toS = {"Desert of Nomads", "Lake of Reeds"};
toSE = {"Eastern Grounds", "Memphis", "Seven Lakes"};
toVOK = {"Cat's Claw Ridge", "Desert of Shades", "X"};
--Adjacent Distances
--CCR
function CCR()
far1 = {"Valley of Kings", "Old Egypt"};
far2 = {"Midland Valley", "Desert of Nomads"};
far3 = {"Lake of Reeds", "Sinai", "River Plains", "Four Corners"};
far4 = {"Seven Lakes"};
far5 = {"South Egypt", "Cradle of Sun"};
far6 = {"Memphis", "Eastern Grounds"};
end
--COS
function COS()
far1 = {"Seven Lakes"};
far2 = {"River Plains", "South Egypt"};
far3 = {"Desert of Shades", "Midland Valley", "Memphis", "Eastern Grounds"};
far4 = {"Four Corners", "Valley of Kings", "Old Egypt"};
far5 = {"Cat's Claw Ridge", "Desert of Nomads"};
far6 = {"Lake of Reeds", "Sinai"};
end
--DON
function DON()
far1 = {"Lake of Reeds", "Sinai", "Old Egypt"};
far2 = {"Cat's Claw Ridge", "Midland Valley"};
far3 = {"Valley of Kings", "Four Corners", "River Plains"};
far4 = {"Desert of Shades", "Seven Lakes"};
far5 = {"Cradle of Sun", "South Egypt"};
far6 = {"Memphis", "Eastern Grounds"};
end
--DOS
function DOS()
far1 = {"Valley of Kings", "River Plains"};
far2 = {"Cat's Claw Ridge", "Midland Valley", "Seven Lakes"};
far3 = {"Old Egypt", "Four Corners", "Cradle of Sun", "South Egypt"};
far4 = {"Desert of Nomads", "Memphis", "Eastern Grounds"};
far5 = {"Lake of Reeds", "Sinai"};
end
--EG
function EG()
far1 = {"South Egypt"};
far2 = {"Memphis", "Seven Lakes"};
far3 = {"Cradle of Sun", "River Plains"};
far4 = {"Desert of Shades", "Midland Valley"};
far5 = {"Valley of Kings", "Four Corners", "Old Egypt"};
far6 = {"Cat's Claw Ridge", "Desert of Nomads"};
far7 = {"Lake of Reeds", "Sinai"};
end
--FC
function FC()
far1 = {"Midland Valley"};
far2 = {"Old Egypt", "River Plains"};
far3 = {"Cat's Claw Ridge", "Desert of Nomads", "Desert of Shades", "Seven Lakes"};
far4 = {"Lake of Reeds", "Sinai", "Valley of Kings", "Cradle of Sun"};
far5 = {"South Egypt"};
far6 = {"Memphis", "Eastern Grounds"};
end
--LR
function LR()
far1 = {"Desert of Nomads", "Sinai"};
far2 = {"Old Egypt"};
far3 = {"Cat's Claw Ridge", "Midland Valley"};
far4 = {"Valley of Kings", "Four Corners", "River Plains"};
far5 = {"Desert of Shades", "Seven Lakes"};
far6 = {"Cradle of Sun", "South Egypt"};
far7 = {"Memphis", "Eastern Grounds"};
end
--M
function M()
far1 = {"South Egypt"};
far2 = {"Eastern Grounds", "Seven Lakes"};
far3 = {"Cradle of Sun", "River Plains",};
far4 = {"Desert of Shades", "Midland Valley"};
far5 = {"Valley of Kings", "Four Corners", "Old Egypt"};
far6 = {"Cat's Claw Ridge", "Desert of Nomads"};
far7 = {"Lake of Reeds", "Sinai"};
end
--MV
function MV()
far1 = {"Old Egypt", "River Plains", "Four Corners"};
far2 = {"Cat's Claw Ridge", "Desert of Nomads", "Desert of Shades", "Seven Lakes"};
far3 = {"Valley of Kings", "Lake of Reeds", "Sinai", "Cradle of Sun", "South Egypt"};
far4 = {"Memphis", "Eastern Grounds"};
end
--OE
function OE()
far1 = {"Cat's Claw Ridge", "Desert of Nomads", "Midland Valley"};
far2 = {"Valley of Kings", "Four Corners", "River Plains", "Lake of Reeds", "Sinai"};
far3 = {"Desert of Shades", "Seven Lakes"};
far4 = {"Cradle of Sun", "South Egypt"};
far5 = {"Memphis", "Eastern Grounds"};
end
--RP
function RP()
far1 = {"Midland Valley", "Desert of Shades", "Seven Lakes"};
far2 = {"Four Corners", "Old Egypt", "Cradle of Sun"};
far3 = {"Cat's Claw Ridge", "Desert of Nomads", "South Egypt"};
far4 = {"Valley of Kings", "Lake of Reeds", "Sinai", "Memphis", "Eastern Grounds"};
end
--7L
function SevenL()
far1 = {"River Plains", "Cradle of Sun", "South Egypt"};
far2 = {"Memphis", "Eastern Grounds", "Midland Valley", "Desert of Shades"};
far3 = {"Four Corners", "Valley of Kings", "Old Egypt"};
far4 = {"Cat's Claw Ridge", "Desert of Nomads"};
far5 = {"Lake of Reeds", "Sinai"};
end
--S
function S()
far1 = {"Lake of Reeds", "Desert of Nomads"};
far2 = {"Old Egypt"};
far3 = {"Cat's Claw Ridge", "Midland Valley"};
far4 = {"Valley of Kings", "Four Corners", "River Plains"};
far5 = {"Desert of Shades", "Seven Lakes"};
far6 = {"Cradle of Sun", "South Egypt"};
far7 = {"Memphis", "Eastern Grounds"};
end
--SE
function SE()
far1 = {"Memphis", "Eastern Grounds", "Seven Lakes"};
far2 = {"Cradle of Sun", "River Plains"};
far3 = {"Desert of Shades", "Midland Valley"};
far4 = {"Valley of Kings", "Four Corners", "Old Egypt"};
far5 = {"Cat's Claw Ridge", "Desert of Nomads"};
far6 = {"Lake of Reeds", "Sinai"};
end
--VOK
function VOK()
far1 = {"Cat's Claw Ridge", "Desert of Shades"};
far2 = {"Old Egypt", "River Plains"};
far3 = {"Desert of Nomads", "Midland Valley", "Seven Lakes"};
far4 = {"Four Corners", "Cradle of Sun", "South Egypt"};
far5 = {"Memphis", "Eastern Grounds"};
end
--WHEREAMI
whereami = getCurrentRegion();
adjacent = {};
firstTimeRunning = "Yes";
if not whereami then
error "Couldn't region region. Please zoom in until night sky isn't visible."
end
--Get adjacent regions.
function getAdjacent()
if whereami == "Cat's Claw Ridge" then
adjacent = toCCR;
elseif whereami == "Cradle of the Sun" then
adjacent = toCOS;
elseif whereami == "Desert of Nomads" then
adjacent = toDON;
elseif whereami == "Desert of Shades" then
adjacent = toDOS;
elseif whereami == "Eastern Grounds" then
adjacent = toEG;
elseif whereami == "Four Corners" then
adjacent = toFC;
elseif whereami == "Lake of Reeds" then
adjacent = toLR;
elseif whereami == "Memphis" then
adjacent = toM;
elseif whereami == "Midland Valley" then
adjacent = toMV;
elseif whereami == "Old Egypt" then
adjacent = toOE;
elseif whereami == "River Plains" then
adjacent = toRP;
elseif whereami == "Seven Lakes" then
adjacent = to7L;
elseif whereami == "Sinai" then
adjacent = toS;
elseif whereami == "South Egypt" then
adjacent = toSE;
elseif whereami == "Valley of the Kings" then
adjacent = toVOK;
end
lsPrintln("Adjacent to " .. whereami .. " : " .. adjacent[1] .. " , " .. adjacent[2] .. " , " .. adjacent[3]);
spacer();
end
--Needs destination to be not nil;
function pathfind()
stack = {};
local path_done = nil;
while not path_done do
lsPrintln("Pathfinding...");
lsPrintln("whereami: " .. whereami .. " destination: " .. destination);
--Get adjacent regions.
getAdjacent();
if adjacent[1] == destination then
stack[#stack + 1] = adjacent[1];
path_done = 1;
elseif adjacent[2] == destination then
stack[#stack + 1] = adjacent[2];
path_done = 1;
elseif adjacent[3] == destination then
stack[#stack + 1] = adjacent[3];
path_done = 1;
else
--Adjacents don't match destination.
--Start comparing adjacents & nearby adjacents for distance to destination.
if destination == "Cat's Claw Ridge" then
CCR();
elseif destination == "Cradle of Sun" then
COS();
elseif destination == "Desert of Nomads" then
DON();
elseif destination == "Desert of Shades" then
DOS();
elseif destination == "Eastern Grounds" then
EG();
elseif destination == "Four Corners" then
FC();
elseif destination == "Lake of Reeds" then
LR();
elseif destination == "Memphis" then
M();
elseif destination == "Midland Valley" then
MV();
elseif destination == "Old Egypt" then
OE();
elseif destination == "River Plains" then
RP();
elseif destination == "Seven Lakes" then
SevenL();
elseif destination == "Sinai" then
S();
elseif destination == "South Egypt" then
SE();
elseif destination == "Valley of Kings" then
VOK();
end
stackChanged ="No";
--far1
for i=1, #far1 do
if adjacent[1] == far1[i] then
stack[#stack + 1] = far1[i]
i = #far1
stackChanged ="Yes";
elseif adjacent[2] == far1[i] then
stack[#stack + 1] = far1[i]
i = #far1
stackChanged ="Yes";
elseif adjacent[3] == far1[i] then
stack[#stack + 1] = far1[i]
i = #far1
stackChanged ="Yes";
end
end
--far2
if stackChanged == "No" then
for i=1, #far2 do
if adjacent[1] == far2[i] then
stack[#stack + 1] = far2[i]
i = #far2
stackChanged ="Yes";
elseif adjacent[2] == far2[i] then
stack[#stack + 1] = far2[i]
i = #far2
stackChanged ="Yes";
elseif adjacent[3] == far2[i] then
stack[#stack + 1] = far2[i]
i = #far2
stackChanged ="Yes";
end
end
end
--far3
if stackChanged == "No" then
for i=1, #far3 do
if adjacent[1] == far3[i] then
stack[#stack + 1] = far3[i]
i = #far3
stackChanged ="Yes";
elseif adjacent[2] == far3[i] then
stack[#stack + 1] = far3[i]
i = #far3
stackChanged ="Yes";
elseif adjacent[3] == far3[i] then
stack[#stack + 1] = far3[i]
i = #far3
stackChanged ="Yes";
end
end
end
--far4
if stackChanged == "No" then
for i=1, #far4 do
if adjacent[1] == far4[i] then
stack[#stack + 1] = far4[i]
i = #far4
stackChanged ="Yes";
elseif adjacent[2] == far4[i] then
stack[#stack + 1] = far4[i]
i = #far4
stackChanged ="Yes";
elseif adjacent[3] == far4[i] then
stack[#stack + 1] = far4[i]
i = #far4
stackChanged ="Yes";
end
end
end
--far5
if stackChanged == "No" then
for i=1, #far5 do
if adjacent[1] == far5[i] then
stack[#stack + 1] = far5[i]
i = #far5
stackChanged ="Yes";
elseif adjacent[2] == far5[i] then
stack[#stack + 1] = far5[i]
i = #far5
stackChanged ="Yes";
elseif adjacent[3] == far5[i] then
stack[#stack + 1] = far5[i]
i = #far5
stackChanged ="Yes";
end
end
end
--far6
if stackChanged == "No" then
for i=1, #far6 do
if adjacent[1] == far6[i] then
stack[#stack + 1] = far6[i]
i = #far6
stackChanged ="Yes";
elseif adjacent[2] == far6[i] then
stack[#stack + 1] = far6[i]
i = #far6
stackChanged ="Yes";
elseif adjacent[3] == far6[i] then
stack[#stack + 1] = far6[i]
i = #far6
stackChanged ="Yes";
end
end
end
--far7
if stackChanged == "No" then
for i=1, #far7 do
if adjacent[1] == far7[i] then
stack[#stack + 1] = far7[i]
i = #far7
stackChanged ="Yes";
elseif adjacent[2] == far7[i] then
stack[#stack + 1] = far7[i]
i = #far7
stackChanged ="Yes";
elseif adjacent[3] == far7[i] then
stack[#stack + 1] = far7[i]
i = #far7
stackChanged ="Yes";
end
end
end
if stackChanged == "No" then
error "Something went wrong!";
end
whereami = stack[#stack];
end
lsPrintln("endloop");
end
end
function doit()
while 1 do
getAdjacent();
button_names = {adjacent[1], adjacent[2], adjacent[3]};
if not stack then
-- 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;
x = 30;
y = 30;
if not destination then
lsPrintWrapped(90, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xFFFFFFff, "Choose a destination:");
else
lsPrintWrapped(45, 10, 10, lsScreenX - 10, 0.6, 0.6, 0x80ff80ff, "Destination selected as: ".. destination);
end
for i=1, #button_names do
if button_names[i] == "X" then
--Do Nothing
else
if lsButtonText(x, y, 0, lsScreenX - 50, 0x80ff80ff, button_names[i]) then
image_name = button_names[i];
is_done = 1;
end
end
y = y+30;
end
if lsButtonText(x, y, 0, lsScreenX - 50, 0xffff80ff, "Travel to...") then
image_name = "Travel to...";
is_done = 1;
end
if lsButtonText(lsScreenX - 220, lsScreenY - 30, z, 150, 0xFF0000ff, "Dismount") then
error "Clicked End Script button";
end
lsDoFrame();
lsSleep(10);
end
if image_name == button_names[1] then
--Adjacent selected as destination
destination = button_names[1];
pathfind();
elseif image_name == button_names[2] then
--Adjacent selected as destination
destination = button_names[2];
pathfind();
elseif image_name == button_names[3] then
--Adjacent selected as destination
destination = button_names[3];
pathfind();
elseif image_name == "Travel to..." then
--"Travel to" pressed, ask which region to travel to.
local travel_to = nil;
local is_done = nil;
while not is_done do
local y = nil;
local x = nil;
local bsize = nil;
x = 30;
y = 0;
for i=1, #regions do
if lsButtonText(x, y, 0, lsScreenX - 50, 0x80ff80ff, regions[i]) then
destination = regions[i];
is_done = 1;
end
y = y+30;
end
if lsButtonText(lsScreenX - 220, lsScreenY - 30, z, 150, 0xFF0000ff, "Dismount") then
error "Clicked End Script button";
end
lsDoFrame();
lsSleep(10);
end
pathfind();
end
end
--if not stack end
--Get ready for travel
if firstTimeRunning == "Yes" then
lsPrintWrapped(0, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Securing the saddle...");
lsDoFrame();
lsSleep(500);
lsPrintWrapped(0, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Securing the saddle...");
lsPrintWrapped(0, 25, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Cleaning horseshoes...");
lsDoFrame();
lsSleep(500);
lsPrintWrapped(0, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Securing the saddle...");
lsPrintWrapped(0, 25, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Cleaning horseshoes...");
lsPrintWrapped(0, 40, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Brushing hair...");
lsDoFrame();
lsSleep(500);
lsPrintWrapped(0, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Securing the saddle...");
lsPrintWrapped(0, 25, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Cleaning horseshoes...");
lsPrintWrapped(0, 40, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Brushing hair...");
lsPlaySound("snort.wav");
lsPrintWrapped(0, 55, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Whispering ".. destination .." to horses...");
lsDoFrame();
lsSleep(500);
lsPrintWrapped(0, 10, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Securing the saddle...");
lsPrintWrapped(0, 25, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Cleaning horseshoes...");
lsPrintWrapped(0, 40, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Brushing hair...");
lsPrintWrapped(0, 55, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Whispering ".. destination .." to horses...");
lsPrintWrapped(0, 70, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Clicking tongue...");
lsDoFrame();
lsSleep(1000);
firstTimeRunning = "No";
end
--Stash CS
checkCS();
safeDrag(cs[0], cs[1], 10, 10);
sleepWithStatus(1000, "Stashing chariot...");
whereami = getCurrentRegion();
getAdjacent();
--Select Destination
if stack[1] == adjacent[1] then
safeClick(30, 85);
elseif stack[1] == adjacent[2] then
safeClick(30, 100);
elseif stack[1] == adjacent[3] then
safeClick(30, 120);
else
error "Stack[1] doesn't match adjacents."
end
--Stash Region window to 290, 10
sleepWithStatus(1000, "Stashing destination...");
srReadScreen();
regionwindow = srFindImage("chariot/travelto.png", 5000);
safeDrag(regionwindow[0], regionwindow[1], 290, 10);
--function checkFREE()
-- Check for free travel.
srReadScreen();
FREE = srFindImage("chariot/travelfree.png", 5000);
regionwindow = srFindImage("chariot/travelto.png", 5000);
tt = srFindImage("chariot/tt.png", 5000);
useTT = nil;
while not FREE do
if alwayswhip then
safeClick(tt[0], tt[1], rightclick);
useTT = 1;
sleepWithStatus(1000, "Waiting for Yes promt...");
srReadScreen();
yes = srFindImage("chariot/yes.png", 5000);
safeClick(yes[0], yes[1], rightclick);
if #stack == 1 then
sleepWithStatus(4000, "Travelling...");
else
lsPlaySound("gallop.wav");
sleepWithStatus(4000, "Travelling...");
end
FREE = 1;
else
srReadScreen();
FREE = srFindImage("chariot/travelfree.png", 5000);
--Buttons
lsPrintWrapped(90, 10, 10, lsScreenX - 10, 0.6, 0.6, 0x80ff80ff, "Waiting for Free Travel");
if lsButtonText(30, 25, 0, lsScreenX - 50, 0x80ff80ff, "Whip horses once") then
safeClick(tt[0], tt[1], rightclick);
useTT = 1;
sleepWithStatus(1000, "Waiting for Yes promt...");
srReadScreen();
yes = srFindImage("chariot/yes.png", 5000);
safeClick(yes[0], yes[1], rightclick);
if #stack == 1 then
sleepWithStatus(4000, "Travelling...");
else
lsPlaySound("gallop.wav");
sleepWithStatus(4000, "Travelling...");
end
FREE = 1;
end
if lsButtonText(30, 55, 0, lsScreenX - 50, 0x80ff80ff, "Whip horses every stop") then
alwayswhip = 1;
end
if lsButtonText(30, 85, 0, lsScreenX - 50, 0xFF0000ff, "Dismount") then
error "Clicked End Script button";
end
--Report
lsPrintWrapped(30, 110, 10, lsScreenX - 10, 0.6, 0.6, 0x80ff80ff, "Destination: ".. destination);
lsPrintWrapped(30, 125, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, "Route:");
y = 125;
for i=1,#stack do
y = y + 15;
lsPrintWrapped(30, y, 10, lsScreenX - 10, 0.6, 0.6, 0xffff80ff, i.. " >> ".. stack[i]);
end
lsDoFrame();
lsSleep(100);
--If waiting for Free Travel, refresh region window.
if not useTT then
if tt then
safeClick(290, 10, rightclick);
else
error "Region window missing!"
end
end
end
end
--end
if not useTT then
srReadScreen();
FREE = srFindImage("chariot/travelfree.png", 5000);
if FREE then
safeClick(FREE[0], FREE[1], rightclick);
if #stack == 1 then
sleepWithStatus(4000, "Travelling...");
else
lsPlaySound("gallop.wav");
sleepWithStatus(4000, "Travelling...");
end
else
error "Region window missing!";
end
end
--Clear first item of the stack and move the rest to left.
for i=1, #stack do
stack[i] = stack[i + 1];
end
--REACHED?
if not stack[1] then
lsPlaySound("horsewalk.wav");
lsSleep(3000);
lsPlaySound("longsnort.wav");
error "You reach your destination and dismount your horse.";
end
end
end
|
grass.lua
| Download Walks and gathers grass. |
-- run and gather grass v1.0 by Safa
dofile("common.inc");
numGrass = 0
function pickGrass()
srReadScreen();
local xyWindowSize = srGetWindowSize();
local midX = xyWindowSize[0] / 2;
local pos = srFindImageInRange("grass.png",0,0,midX,100,1000);
if (pos) then
srClickMouseNoMove(pos[0], pos[1], 1);
numGrass = numGrass + 1;
sleepWithStatus(2500, "Picking");
end
end
function walkeast()
local xyWindowSize = srGetWindowSize()
safeClick(xyWindowSize[0] / 2 + 400, xyWindowSize[1] /2 + 10);
sleepWithStatus(1500, "Walking East");
end
function walkwest()
local xyWindowSize = srGetWindowSize()
safeClick(xyWindowSize[0] / 2 - 400, xyWindowSize[1] /2 + 10);
sleepWithStatus(1500, "Walking West");
end
function doit()
local done = false
--Say Hi
askForWindow("Stay on a grassy area and hit Shift to start. You can chat and perform other tasks while the macro is running as long as grass is visible in the middle of your screen. You can also minimize Automato window after the macro is started. - grass v1.0 by Safa") ;
--Set camera to top down view.
srKeyDown(0x76);
srKeyDown(0x77);
srKeyDown(0x77);
srKeyDown(0x77);
--doit
while not done
do
sleepWithStatus(500, "Grass collected: " .. tostring(numGrass)) ;
pickGrass();
walkwest();
pickGrass();
walkeast();
end
end
|
gravel.lua
| Download Drops every type of stone in your inventory and smashes them in place. |
--gravel.lua
dofile("common.inc");
is_done = false; --Exit Loop?
askText = singleLine([[
Hit SHIFT to begin. Pin inventory, press and hold ALT to drop stones. Hold middle click or S to smash.
]]);
function doit()
askForWindow(askText);
askForFocus();
Run();
end
function Run()
--Loop
xyWindowSize = srGetWindowSize();
srReadScreen();
while not is_done do
checkBreak();
if lsAltHeld() then
srReadScreen();
stone = findText("Stone");
if stone then
srClickMouseNoMove(stone[0] +10, stone[1], true);
sleepWithStatus(25, "Dropping");
srClickMouseNoMove(xyWindowSize[0]/2 + 55, xyWindowSize[1]/2 + 20, 1);
else
sleepWithStatus(25, "Nothing to drop.");
end
end
if lsMouseIsDown(2) then
srKeyEvent('s');
lsSleep(25);
srClickMouseNoMove(xyWindowSize[0], xyWindowSize[1] - xyWindowSize[1] + 10, 1);
end
if lsKeyDown("q") then
is_done = 1;
end
lsDoFrame();
lsSleep(25);
end
end
|
markChatsAsRead.lua
| Download Goes through every chat tab in a second. |
dofile("common.inc");
is_done = false;
askText = singleLine([[markChatsAsRead:Safa Make sure ATITD is in focus and hit shift to mark all chat tabs as read.]]);
function doit()
askForWindow(askText);
askForFocus();
run();
end
function run()
--Loop
while not is_done do
for i =1,100 do
srKeyDown(0x78);
lsSleep(20);
end
is_done = 1;
lsDoFrame();
lsSleep(50);
end
end
|
mod_assist.lua
| Download |
-- mod_assist.lua by Safa
--
-- Do various modding tasks using Automato UI or Keyboard Shortcuts. Get notified when new posts are present.
-- Uses pbslog.txt to save modding history.
dofile("common.inc");
askText = singleLine([[
mod_assist by Safa. Do various modding tasks using Automato UI or Keyboard Shortcuts.
Get notified when new posts are present. This macro WON'T autopost any messages.
Every post must be approved by the operator! Click the gear icon for more settings.
Hit SHIFT to begin.
]]);
--Done Modding
is_done = false;
--Automato Window Size
automato = lsGetWindowSize();
--Used by Timer to determine a second is passed.
frame = 0;
notifyOnce = 0;
lessTriggerHappy = 500;
animation_beep = 3000;
animation_readScreen = 0;
animation_postSent = 0;
--Timer
h=0;
m=0;
s=0;
--Number of posts approved/posted.
p_yes=0;
p_saved =0;
--Keybind Buttons
buttons = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
"CAPSLOCK",
"F1",
"F2",
"F3",
"F4",
"F5",
"F6",
"F7",
"F8",
"F9",
"F10",
"F11",
"F12",
"PRINTSCREEN",
"SCROLLLOCK",
"PAUSE",
"INSERT",
"HOME",
"PAGEUP",
"DELETE",
"END",
"PAGEDOWN",
"RIGHT",
"LEFT",
"DOWN",
"UP",
"AUDIONEXT",
"AUDIOPREV",
"AUDIOSTOP",
"AUDIOPLAY",
"AUDIOMUTE",
"LCTRL",
"LSHIFT",
"LALT",
"LGUI",
"RCTRL",
"RSHIFT",
"RALT"
};
--Settings
ui_size = "Default";
logsession = "On";
keyboard_shortcuts = "On";
post_button = "LALT";
save_button = "LCTRL";
sounds = "Loop";
success_sound = "On";
scribble_sound = "On";
--State. 0:Waiting for Posts 1: Post Pending 2: Settings 3: Post Sent
State=0;
function doit()
askForWindow(askText);
findClockInfo();
askForFocus();
lsPlaySound("start.wav");
startModding();
end
function notify()
if sounds == "Loop" then
if animation_beep > 3000 then
lsPlaySound("beepping.wav");
animation_beep = 0;
else
animation_beep = animation_beep + 100;
end
elseif sounds == "On" then
if notifyOnce == 0 then
lsPlaySound("beepping.wav");
notifyOnce = 1;
end
end
end
function exitButton()
--Return to Automato Scripts List if "End Script" is pressed.
if lsButtonText(0 - 20, lsScreenY - 30, z, 200, 0x000000FF, "Log & Exit") then
if logsession == "On" then
LogSession();
end
is_done = 1;
end
end
function exitButtonSmall()
--Return to Automato Scripts List if "End Script" is pressed.
if lsButtonText(0, 60, z, lsScreenX, 0x000000FF, "Log & Exit") then
if logsession == "On" then
LogSession();
end
is_done = 1;
end
end
function PBSLog(Text)
FileFish = io.open("pbslog.txt","a+");
FileFish:write(Text);
FileFish:close();
end
function LogSession()
if logTime == "Off" then
timeStarted = " Unknown ";
timeStopped = " Unknown ";
else
--Time Macro Stopped. (for pbslog.txt)
findClockInfo();
timeStopped = "[" .. Date .. ", " .. Time .. "] ";
end
--Log information about this modding session.
if p_yes < 10 then
PBSLog(" " .. " (" .. h .. "h" .. m .. "m".. s .. "s) " .. "-00" .. p_yes .. "- " .. timeStarted .. " " .. timeStopped .. "\n");
elseif p_yes < 100 then
PBSLog(" " .. " (" .. h .. "h" .. m .. "m".. s .. "s) " .. "-0" .. p_yes .. "- " .. timeStarted .. " " .. timeStopped .. "\n");
else
PBSLog(" " .. " (" .. h .. "h" .. m .. "m".. s .. "s) " .. "-" .. p_yes .. "- " .. timeStarted .. " " .. timeStopped .. "\n");
end
end
function findClockInfo()
srReadScreen();
anchor = findText("Year");
if(not anchor) then
anchor = findText("ar 1");
end
if(not anchor) then
anchor = findText("ar 2");
end
if(not anchor) then
anchor = findText("ar 3");
end
if(not anchor) then
anchor = findText("ar 4");
end
if(not anchor) then
anchor = findText("ar 5");
end
if(not anchor) then
anchor = findText("ar 6");
end
if(not anchor) then
anchor = findText("ar 7");
end
if(not anchor) then
anchor = findText("ar 8");
end
if(not anchor) then
anchor = findText("ar 9");
end
if anchor then
lsPrintln("Found Clock");
window = getWindowBorders(anchor[0], anchor[1]);
lines = findAllText(nil, window, nil, NOPIN);
for i=1,#lines do
--lsPrintln("LINE " .. i .. " : " .. table.concat(lines[i], ","));
theDateTime = table.concat(lines[1], ",") -- Line 1 on the clock
theDateTime = string.sub(theDateTime,string.find(theDateTime,",") + 1);
stripYear = string.sub(theDateTime,string.find(theDateTime,",") + 2);
Time = string.sub(stripYear,string.find(stripYear,",") + 2);
stripYear = "," .. stripYear
Date = string.sub(stripYear,string.find(stripYear,",") + 1, string.len(stripYear) - string.len(Time) - 2);
--lsPrintln(theDateTime .. "\nCoords: " .. Coordinates .. " (" .. string.len(Coordinates) .. ")\nTime: " .. Time .. " (" .. string.len(Time) .. ")\nDate: " .. Date .. " (" .. string.len(Date) .. ")");
end
end
end
function updateTimer()
if frame > 1000 then
frame = 0;
s = s + 1;
if s == 60 then
s = 0;
m = m + 1;
end
if m == 60 then
m = 0;
s = 0;
h = h + 1;
end
end
end
function playScribble()
if scribble_sound == "On" then
lsPlaySound("scribble.wav");
end
end
function playSuccess()
if success_sound == "On" then
lsPlaySound("successful.wav");
end
end
function waitForPosts()
if ui_size == "Default" then -- UI Size Default
--Show time passed below microphone.
updateTimer();
if lsButtonImg(200, 50, 8, 0.10, 0xFFFFFFff, "pbs/settings.png") then
State = 2;
end
if p_saved == 1 then
lsPrint(85, 10, 2, 0.6, 0.6, 0x55AAAAFF, "Holding saved post(s).");
end
lsPrint(90, 25, 2, 0.7, 0.7, 0xFFFFFFFF, "Waiting for posts");
if p_yes < 10 then
lsPrint(55, 130, 2, 2.0, 2.0, 0xFFFFFFff, "00" .. p_yes);
elseif p_yes < 100 then
lsPrint(55, 130, 2, 2.0, 2.0, 0xFFFFFFFF, "0" .. p_yes);
else
lsPrint(55, 130, 2, 2.0, 2.0, 0xFFFFFFFF, p_yes);
end
lsPrint(120, 220, 2, 0.7, 0.7, 0xFFFFFFFF, "(" .. h .. "h" .. m .. "m".. s .. "s)");
lsButtonImg(50, 50, 1, 0.40, 0xFFFFFFff, "pbs/microphone.png");
exitButton();
else -- UI Size Toolbar
updateTimer();
if lsButtonImg(240, 5, 5, 0.10, 0xFFFFFFff, "pbs/settings.png") then
State = 2;
end
if p_saved == 1 then
lsPrint(85, 10, 2, 0.6, 0.6, 0x55AAAAFF, "Holding saved post(s).");
end
lsPrint(140, 15, 2, 0.5, 0.5, 0xFFFFFFFF, "Waiting for posts");
lsPrint(65, 7, 2, 2.0, 2.0, 0xFFFFFFFF, p_yes);
lsPrint(150, 30, 2, 0.7, 0.7, 0xFFFFFFFF, "(" .. h .. "h" .. m .. "m".. s .. "s)");
lsButtonImg(5, 5, 1, 0.10, 0xFFFFFFff, "pbs/microphone.png");
exitButtonSmall();
end
end
function postButton()
if keyboard_shortcuts == "On" then
if post_button == "LALT" then
if lsAltHeld() then
if lessTriggerHappy > 500 then
srClickMouseNoMove(POST[0] + 25, POST[1] + 5, 1);
playScribble();
p_yes = p_yes + 1;
State =3;
animation_postSent = 0;
lessTriggerHappy = 0;
else
lessTriggerHappy = lessTriggerHappy + 100;
end
end
else
if lsKeyDown(post_button) then
if lessTriggerHappy > 500 then
srClickMouseNoMove(POST[0] + 25, POST[1] + 5, 1);
playScribble();
p_yes = p_yes + 1;
State =3;
animation_postSent = 0;
lessTriggerHappy = 0;
else
lessTriggerHappy = lessTriggerHappy + 100;
end
end
end
end
end
function saveButton()
if keyboard_shortcuts == "On" then
if save_button == "LCTRL" then
if lsControlHeld() then
safeDrag(POST[0] - 10, POST[1] - 40, 25, 25, 1);
safeDrag(740, 80, atitd[0] - 40, 80, 1);
end
else
if lsKeyDown(save_button) then
safeDrag(POST[0] - 10, POST[1] - 40, 25, 25, 1);
safeDrag(740, 80, atitd[0] - 40, 80, 1);
end
end
end
end
function postPending()
updateTimer();
if not POST then
State =3;
notifyOnce = 0;
animation_postSent = 0;
else
if ui_size == "Default" then --UI Size Default
notify();
postButton();
saveButton();
lsPrint(100, 25, 2, 0.7, 0.7, 0xFFFFFFFF, "Post(s) Pending");
lsPrint(143, 125, 2, 2.0, 2.0, 0x55AAAAFF, p_yes);
lsPrint(120, 220, 2, 0.7, 0.7, 0xFFFFFFFF, "(" .. h .. "h" .. m .. "m".. s .. "s)");
--Expand Post Window
if lsButtonImg(200, 50, 3, 0.15, 0xFFFFFFff, "pbs/expand.png") then
safeDrag(POST[0] - 10, POST[1] - 40, 25, 25, 1);
safeDrag(740, 80, atitd[0] - 40, 80, 1);
end
--Save Post
if lsButtonImg(220, 120, 3, 0.15, 0xFFFFFFff, "pbs/save.png") then
srClickMouseNoMove(POST[0] + 10, POST[1] + 5, 1);
lsPlaySound("saved.wav");
p_saved = 1;
end
--Send Post
if lsButtonImg(50, 50, 1, 0.40, 0xFFFFFFff, "pbs/message.png") then
srClickMouseNoMove(POST[0] + 25, POST[1] + 5, 1);
playScribble();
p_yes = p_yes + 1;
State =3;
animation_postSent = 0;
playSuccess();
end
exitButton();
else --UI Size Toolbar
notify();
postButton();
saveButton();
lsPrint(165, 15, 2, 0.5, 0.5, 0xFFFFFFFF, "Post(s) Pending");
lsPrint(260, 20, 2, 1.0, 1.0, 0xFFFFFFFF, p_yes);
lsPrint(170, 30, 2, 0.7, 0.7, 0xFFFFFFFF, "(" .. h .. "h" .. m .. "m".. s .. "s)");
--Expand Post Window
if lsButtonImg(105, 5, 5, 0.10, 0xFFFFFFff, "pbs/expand.png") then
safeDrag(POST[0] - 10, POST[1] - 40, 25, 25, 1);
safeDrag(740, 80, atitd[0] - 40, 80, 1);
end
--Save Post
if lsButtonImg(55, 5, 5, 0.10, 0xFFFFFFff, "pbs/save.png") then
srClickMouseNoMove(POST[0] + 10, POST[1] + 5, 1);
lsPlaySound("saved.wav");
p_saved = 1;
end
--Send Post
if lsButtonImg(5, 5, 1, 0.10, 0xFFFFFFff, "pbs/message.png") then
srClickMouseNoMove(POST[0] + 25, POST[1] + 5, 1);
playScribble();
p_yes = p_yes + 1;
State =3;
animation_postSent = 0;
end
exitButtonSmall();
end
end
end
function postSent()
if ui_size == "Default" then --UI Size Default
updateTimer();
--Go to state 0 when 0.5 second passes.
if animation_postSent > 500 then
State = 0;
notifyOnce = 0;
lessTriggerHappy = 0;
else
if notifyOnce == 0 then
playSuccess();
notifyOnce = 1;
end
lsPrint(110, 25, 2, 0.9, 0.9, 0xFFFFFFFF, "All Done!");
lsButtonImg(45, 49, 1, 0.85, 0xFFFFFFff, "pbs/yes.png");
exitButton();
POST = nil;
animation_postSent = animation_postSent + 100;
end
else --UI Size Toolbar
updateTimer();
--Go to state 0 when 0.5 second passes.
if animation_postSent > 500 then
State = 0;
notifyOnce = 0;
else
if notifyOnce == 0 then
playSuccess();
notifyOnce = 1;
end
lsPrint(65, 7, 2, 2.0, 2.0, 0xFFFFFFFF, "All Done!");
lsButtonImg(5, 5, 1, 0.20, 0xFFFFFFff, "pbs/yes.png");
exitButtonSmall();
POST = nil;
animation_postSent = animation_postSent + 100;
end
end
end
function settingsMenu()
updateTimer();
settings_y = 0;
lsDisplaySystemSprite(1, 0, 0, 0, automato[0], automato[1], 0xFFFFFFFF);
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Small User Interface");
if ui_size == "Default" then
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
ui_size = "Toolbar";
end
else
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
ui_size = "Default";
end
end
settings_y = settings_y + 25;
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Log Modding Session (pbslog.txt)");
if logsession == "Off" then
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
logsession = "On";
end
else
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
logsession = "Off";
end
end
settings_y = settings_y + 25;
if sounds == "Loop" then
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Notify until all posts are sent");
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/mid.png") then
sounds = "On";
end
elseif sounds == "On" then
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Notify once for every post");
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
sounds = "Off";
end
else
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "No Notification");
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
sounds = "Loop";
end
end
settings_y = settings_y + 25;
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Success/All Sent Sound");
if success_sound == "Off" then
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
success_sound = "On";
end
else
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
success_sound = "Off";
end
end
settings_y = settings_y + 25;
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Scribble/Posting Sound");
if scribble_sound == "Off" then
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
scribble_sound = "On";
end
else
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
scribble_sound = "Off";
end
end
settings_y = settings_y + 25;
lsPrint(60, settings_y + 10, 1, 0.7, 0.7, 0x000000FF, "Enable Keyboard Shortcuts");
if keyboard_shortcuts == "Off" then
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/off.png") then
keyboard_shortcuts = "On";
end
else
if lsButtonImg(20, settings_y, 1, 0.30, 0xFFFFFFff, "pbs/on.png") then
keyboard_shortcuts = "Off";
end
end
settings_y = settings_y + 50;
lsDisplaySystemSprite(1, 0, settings_y - 10, 1, automato[0], 1, 0x000000FF);
lsPrint(15, settings_y - 5, 1, 0.5, 0.5, 0x000000FF, "Automato must be in focus to use custom keybindings!");
lsPrint(70, settings_y + 5, 1, 0.7, 0.7, 0x000000FF, "Change Key Bindings");
settings_y = settings_y + 25;
if lsButtonImg(45, settings_y + 5, 2, 0.06, 0xFFFFFFff, "pbs/message.png") then
bind = "post";
end
if bind == "post" then
lsPrint(90, settings_y, 2, 2.0, 2.0, 0xFFFFFFff, post_button);
lsDisplaySystemSprite(1, 0, settings_y, 1, automato[0], 40, 0x000000FF); --Black
postKeyList();
else
lsPrint(90, settings_y, 2, 2.0, 2.0, 0x000000FF, post_button);
end
settings_y = settings_y + 35;
if lsButtonImg(45, settings_y + 5, 2, 0.06, 0xFFFFFFff, "pbs/save.png") then
bind = "save";
end
if bind == "save" then
lsPrint(90, settings_y, 1, 2.0, 2.0, 0xFFFFFFff, save_button);
lsDisplaySystemSprite(1, 0, settings_y, 1, automato[0], 40, 0x000000FF); --Black
saveKeyList();
else
lsPrint(90, settings_y, 1, 2.0, 2.0, 0x000000FF, save_button);
end
settings_y = settings_y + 35;
if lsButtonText(0 - 20, lsScreenY - 30, 1, 200, 0x000000FF, "Save") then
if post_button == save_button then
error "Keyboard shortcuts for post button and save button cannot be the same!";
else
State=0;
end
end
end
function postKeyList()
for i =1,#buttons do
if lsKeyDown(buttons[i]) then
post_button = buttons[i];
end
end
end
function saveKeyList()
for i =1,#buttons do
if lsKeyDown(buttons[i]) then
save_button = buttons[i];
end
end
end
function startModding()
if not Time then
logTime = "Off";
else
--Time Macro Started. (for pbslog.txt)
timeStarted = "[" .. Date .. ", " .. Time .. "]";
end
srReadScreen();
atitd = srGetWindowSize();
while not is_done do
--Wait X seconds then read screen.
if animation_readScreen > 1000 then
srReadScreen();
POST = srFindImage("pbs/S_P.png");
O_P = srFindImage("pbs/O_P.png");
animation_readScreen = 0;
else
animation_readScreen = animation_readScreen + 100;
end
if POST then
if State ~= 2 then
State = 1;
end
end
if O_P then
p_saved = 1;
else
p_saved = 0;
end
--Determine Active Menu
if State == 0 then
waitForPosts();
elseif State == 1 then
postPending();
elseif State == 2 then
settingsMenu();
elseif State == 3 then
postSent();
end
if lsKeyDown("q") then
is_done = 1;
end
frame = frame + 100;
lsDoFrame();
lsSleep(100);
end
end
|
oven_timer.lua
| Download |
--oven_timer.lua
dofile("common.inc");
--ACCEPT IF TIMER IS BELOW
accept_minute = 1;
accept_second = 50;
--Exit Loop?
is_done = false;
--Timer
m=0;
s=0;
frame = 6.6;
animation_readScreen = -5000;
animation_Sound = 5000;
--# of retries
r=0;
--State
state = 0;
askText = singleLine([[
Hit SHIFT to begin.
]]);
function doit()
askForWindow(askText);
askForFocus();
Run();
end
function updateTimer()
if frame > 20 then
frame = 6.6;
s = s + 1;
if s == 60 then
s = 0;
m = m + 1;
end
end
end
function set0()
lsPrint(15, 32, 5, 0.6, 0.6, 0x000000FF, "Mode:");
lsPrint(70, 32, 6, 0.6, 0.6, -865025, "Setting Up");
lsDisplaySystemSprite(1, 60, 32, 5, 80, 15, 0x000000FF);
lsPrint(15, 90, 5, 0.6, 0.6, 0x000000FF, "II. Open your Raeli Oven window and stash it");
lsPrint(15, 105, 5, 0.6, 0.6, 0x000000FF, "in a corner. Move your mouse towards the area");
lsPrint(15, 120, 5, 0.6, 0.6, 0x000000FF, "where it says White(0) and hit shift when (0)");
lsPrint(15, 135, 5, 0.6, 0.6, 0x000000FF, "is clearly visible below.");
lsPrint(15, 60, 5, 0.6, 0.6, 0x000000FF, "I. Make sure your oven isn't dredging already.");
srReadScreen();
srMakeImage("CUSTOM", mouse_x, mouse_y, 70, 35);
srShowImageDebug("CUSTOM", 10, 200, 5);
if lsShiftHeld() then
state = 1;
dredge = findText("Start dredging");
srClickMouseNoMove(dredge[0] +10, dredge[1], true);
lsSleep(150);
xyWindowSize = srGetWindowSize();
srSetMousePos(xyWindowSize[0]/2 + 55, xyWindowSize[1]/2 + 20, 1);
end
end
function time()
lsPrint(15, 32, 5, 0.6, 0.6, 0x000000FF, "Mode:");
lsPrint(70, 32, 6, 0.6, 0.6, -865025, "Timing Oven");
lsDisplaySystemSprite(1, 60, 32, 5, 90, 15, 0x000000FF);
lsDisplaySystemSprite(1, 10, 200, 5, automato[0] - 20, automato[1] / 2.5, 0xFFFFFFff);
lsPrint(70, 220, 6, 4.7, 4.7, 0x000000FF, m ..":".. s);
lsPrint(15, 75, 5, 0.6, 0.6, 0x000000FF, "Number of retries: [".. r .."]");
lsPrint(15, 90, 5, 0.6, 0.6, 0x000000FF, "Accepting below ".. accept_minute ..":".. accept_second);
--Wait X seconds then read screen.
if animation_readScreen > 1000 then
srReadScreen();
zero = srFindImage("CUSTOM");
animation_readScreen = 0;
if not zero then
state = 2;
end
else
animation_readScreen = animation_readScreen + 50;
end
if lsButtonText(15, 105, 7, 200, -865025, "Increase Timer") then
if accept_second == 55 then
accept_minute = accept_minute + 1;
accept_second = 0;
else
accept_second = accept_second + 5;
end
end
if lsButtonText(15, 130, 7, 200, -865025, "Decrease Timer") then
if accept_second == 5 then
accept_minute = accept_minute - 1;
accept_second = 55;
else
accept_second = accept_second - 5;
end
end
updateTimer();
if m == accept_minute then
if s > accept_second then
srReadScreen();
this = findText("This is a Raeli Oven");
srClickMouseNoMove(this[0] +10, this[1]);
lsSleep(250);
srReadScreen();
bake = findText("Begin the Baking Process");
srClickMouseNoMove(bake[0] +10, bake[1], true);
lsSleep(250);
srReadScreen();
dredge = findText("Start dredging");
srClickMouseNoMove(dredge[0] +10, dredge[1], true);
m = 0;
s = 0;
r = r + 1;
end
end
end
function success()
--Wait X seconds then read screen.
if animation_Sound > 5000 then
lsPlaySound("successful.wav");
animation_Sound = 0;
else
animation_Sound = animation_Sound + 50;
end
lsPrint(15, 32, 5, 0.6, 0.6, 0x000000FF, "Mode:");
lsPrint(70, 32, 6, 0.6, 0.6, -865025, "Success");
lsDisplaySystemSprite(1, 60, 32, 5, 70, 15, -1697828097);
lsDisplaySystemSprite(1, 10, 200, 5, automato[0] - 20, automato[1] / 2.5, -1697828097);
lsPrint(70, 220, 6, 4.7, 4.7, 0xFFFFFFff, m ..":".. s);
lsPrint(15, 75, 5, 0.6, 0.6, 0x000000FF, "Number of retries: [".. r .."]");
lsPrint(15, 90, 5, 0.6, 0.6, 0x000000FF, "Accepting below ".. accept_minute ..":".. accept_second);
lsPrint(15, 105, 5, 0.6, 0.6, 0x000000FF, "Oven rate is: ".. m ..":".. s);
end
function Run()
--Loop
while not is_done do
checkBreak();
automato = lsGetWindowSize(); --Automato Window Size
mouse_x, mouse_y = srMousePos(); --Mouse Location
px = srReadPixel(mouse_x, mouse_y); --Pixel color @ Mouse Location
--lsDisplaySystemSprite(1, automato[0] - automato[0] + 15, automato[1] / 1.75, 6, 50, 50, px); --COLOR PICKER
lsPrint(15, 10, 5, 0.7, 0.7, 0x000000FF, "This is a Raeli Oven Timer");
if lsButtonImg(automato[0] - 45, automato[1] - automato[1] + 10, 5, 1.0, 0xFFFFFFff, "blank.png") then
is_done=true;
end
lsDisplaySystemSprite(1, 4, 4, 4, automato[0] - 8, automato[1] - 8, -371609345); --Background
lsDisplaySystemSprite(1, 3, 3, 3, automato[0] - 6, automato[1] - 6, 0x000000FF); --Black 2
lsDisplaySystemSprite(1, 2, 2, 2, automato[0] - 4, automato[1] - 4, -1804843265);--Border Light
lsDisplaySystemSprite(1, 1, 1, 1, automato[0] - 2, automato[1] - 2, 1917857535); --Border
lsDisplaySystemSprite(1, 0, 0, 0, automato[0], automato[1], 0x000000FF); --Black 1
--Determine Active Menu
if state == 0 then
set0();
elseif state == 1 then
time();
elseif state == 2 then
success();
end
if lsKeyDown("q") then
lsClipboardSet(px);
is_done = 1;
end
frame = frame + 1;
lsDoFrame();
lsSleep(50);
end
end
|
resin.lua
| Download |
--resin.lua
--Gather resin using middle mouse button. Chat must be minimized.
dofile("common.inc");
--Exit Loop?
is_done = false;
askText = singleLine([[Gather resin using middle mouse button. Chat must be minimized.]]);
function doit()
askForWindow(askText);
askForFocus();
gatherResin();
end
function gatherResin()
lsTopmost(0);
--Loop
while not is_done do
checkBreak();
if lsMouseIsDown(2) then
srKeyEvent('r');
lsSleep(100);
end
if lsKeyDown("q") then
is_done = 1;
end
lsDoFrame();
lsSleep(50);
end
end
|
sculptor.lua
| Download |
--Sculptor Macro File
dofile("common.inc");
is_done = false;
askText = singleLine([[To use the click multiplier select a higher setting than 1X then right click. Keyboard control only works when automato is in focus. Keybinds are: WASD E< for movement, 8456 91(Numpad) for rotation. R to record/stop. Numpad enter to play. Use 1,2,3,4,5,6 on keyboard to switch multipliers. Hit SHIFT to begin.]]);
function doit()
askForWindow(askText);
askForFocus();
Run();
end
function anchor()
srReadScreen();
MoveObject = findText("Move Object");
end
function click()
--srSetMousePos(x, y);
for i=1,multiply do
white = blue;
srClickMouseNoMove(x, y, 1);
end
end
function play()
a = 1;
for i=1,len do
rps[i] = string.sub(recipe, a, i*5);
a = a + 5;
end
for i=1,#rps do
multiply = string.sub(rps[i], 3, 5); lsPrintln("Multiplier: ".. multiply);
string = string.sub(rps[i], 1, 2); lsPrintln("Move: ".. string);
if string == "w+" then x=x+40; y=y+90; click(); end
if string == "w-" then x=x+40; y=y+110; click(); end
if string == "xM" then x=x+40; y=y+130; click(); end
if string == "a+" then x=x+10; y=y+130; click(); end
if string == "a-" then x=x+30; y=y+130; click(); end
if string == "d+" then x=x+70; y=y+130; click(); end
if string == "d-" then x=x+60; y=y+130; click(); end
if string == "/+" then x=x+80; y=y+90; click(); end
if string == "/-" then x=x+60; y=y+110; click(); end
if string == "(+" then x=x+ 10; y=y+150; click(); end
if string == "(-" then x=x+30; y=y+140; click(); end
end
recipe ="";
--test = string.sub(rps[i], 3, 5);
--lsPrintln(test);
end
multiply = "001";
recording = false;
recipe="";
rps={};
function Run()
--Loop
while not is_done do
checkBreak();
anchor(); --Heavy on the system.
mouse_x, mouse_y = srMousePos();
last = string.sub(recipe, 0, 5);
len = string.len(recipe) / 5;
if MoveObject then
x = MoveObject[0];
y = MoveObject[1];
blue = 0x4993DDFF;
red = 0xFF0000FF;
white = 0xFFFFFFFF;
text_white = 0xFFFFFFFF;
else
blue = 0x000000FF;
red = 0x000000FF;
white = 0x000000FF;
text_white = 606348543;
lsPrint(65, 65, 4, 0.6, 0.6, 0x000000FF, "Can't see sculpture controls!");
lsDisplaySystemSprite(1, 50, 50, 3, 200, 50, 0xFF0000FF);
end
if lsMouseIsDown(3) then
for i=1,multiply - 1 do
white = blue;
srClickMouseNoMove(mouse_x, mouse_y, 1);
end
lsSleep(200);
end
if lsKeyDown("r") then if recording then recording = false; else recording = true end lsSleep(200); end
if lsKeyDown("KP_ENTER") then play(); lsSleep(200); end
--Movement keyboard shortcuts
if lsKeyDown("w") then x=x+40; y=y+110; if recording then recipe="w-" .. multiply .. recipe; end click(); end
if lsKeyDown("s") then x=x+40; y=y+140; if recording then recipe="s-" .. multiply .. recipe; end click(); end
if lsKeyDown("a") then x=x+30; y=y+130; if recording then recipe="a-" .. multiply .. recipe; end click(); end
if lsKeyDown("d") then x=x+60; y=y+130; if recording then recipe="d-" .. multiply .. recipe; end click(); end
if lsKeyDown("e") then x=x+60; y=y+110; if recording then recipe="/-" .. multiply .. recipe; end click(); end
if lsKeyDown("<") then x=x+30; y=y+140; if recording then recipe="(-" .. multiply .. recipe; end click(); end
--Rotation keyboard shortcuts
if lsKeyDown("KP_8") then x=x+140; y=y+90; if recording then recipe="8+" .. multiply .. recipe; end click(); end
if lsKeyDown("KP_5") then x=x+140; y=y+140; if recording then recipe="5-" .. multiply .. recipe; end click(); end
if lsKeyDown("KP_4") then x=x+130; y=y+130; if recording then recipe="4-" .. multiply .. recipe; end click(); end
if lsKeyDown("KP_6") then x=x+160; y=y+130; if recording then recipe="6-" .. multiply .. recipe; end click(); end
if lsKeyDown("KP_9") then x=x+160; y=y+110; if recording then recipe="9-" .. multiply .. recipe; end click(); end
if lsKeyDown("KP_1") then x=x+130; y=y+140; if recording then recipe="1-" .. multiply .. recipe; end click(); end
if lsKeyDown(1) then multiply="001"; end
if lsKeyDown(2) then multiply="003"; end
if lsKeyDown(3) then multiply="005"; end
if lsKeyDown(4) then multiply="010"; end
if lsKeyDown(5) then multiply="050"; end
if lsKeyDown(6) then multiply="100"; end
lsPrint(50, 31, 2, 0.6, 0.6, text_white, recipe);
lsPrint(0, lsScreenY - 20, 2, 0.7, 0.7, text_white, mouse_x .." ".. mouse_y .." | ".. multiply .."X | " .. last .." | ".. len);
lsDisplaySystemSprite(1, 0, lsScreenY - 20, 0, lsScreenX, 15, blue);
if multiply == "001" then x1=blue; else x1=white; end
if multiply == "003" then x3=blue; else x3=white; end
if multiply == "005" then x5=blue; else x5=white; end
if multiply == "010" then x10=blue; else x10=white; end
if multiply == "050" then x50=blue; else x50=white; end
if multiply == "100" then x100=blue; else x100=white; end
if recording then rec_color=red; else rec_color=blue; end
if recording then rec_text="Stop"; else rec_text="Rec" end
if lsButtonText(0 , 0, z, 50, x1, "1X") then multiply="001"; end
if lsButtonText(50 , 0, z, 50, x3, "3X") then multiply="003"; end
if lsButtonText(50 * 2 , 0, z, 50, x5, "5X") then multiply="005";end
if lsButtonText(50 * 3 , 0, z, 50, x10, "10X") then multiply="010"; end
if lsButtonText(50 * 4 , 0, z, 50, x50, "50X") then multiply="050"; end
if lsButtonText(50 * 5 , 0, z, 50, x100, "100X") then multiply="100"; end
if lsButtonText(0, 25, z, 50, rec_color, rec_text) then if recording then recording = false; else recording = true; end end
if lsButtonText(0, 50, z, 50, blue, "Clear") then recipe = ""; end
if lsButtonText(85, 60, z, 120, blue, "Play recipe") then play(); end
lsPrint(40, 105, 2, 0.7, 0.7, text_white, "Movement");
if lsButtonText(60, 100+25, 1, 25, white, "^") then x=x+40; y=y+90; if recording then recipe="w+" .. multiply .. recipe; end click(); end
if lsButtonText(60, 125+25, 1, 25, white, "^") then x=x+40; y=y+110; if recording then recipe="w-" .. multiply .. recipe; end click(); end
if lsButtonText(60, 195+25, 1, 25, white, "v") then x=x+40; y=y+140; if recording then recipe="s-" .. multiply .. recipe; end click(); end
if lsButtonText(60, 220+25, 1, 25, white, "v") then x=x+40; y=y+150; if recording then recipe="s+" .. multiply .. recipe; end click(); end
if lsButtonText(60, 160+25, 1, 25, white, "x") then x=x+40; y=y+130; if recording then recipe="xM" .. multiply .. recipe; end click(); end
if lsButtonText(25, 160+25, 1, 25, white, "<") then x=x+30; y=y+130; if recording then recipe="a-" .. multiply .. recipe; end click(); end
if lsButtonText(0, 160+25, 1, 25, white, "<") then x=x+10; y=y+130; if recording then recipe="a+" .. multiply .. recipe; end click(); end
if lsButtonText(95, 160+25, 1, 25, white, ">") then x=x+60; y=y+130; if recording then recipe="d-" .. multiply .. recipe; end click(); end
if lsButtonText(120, 160+25, 1, 25, white, ">") then x=x+70; y=y+130; if recording then recipe="d+" .. multiply .. recipe; end click(); end
if lsButtonText(95, 125+25, 1, 25, white, "/") then x=x+60; y=y+110; if recording then recipe="/-" .. multiply .. recipe; end click(); end
if lsButtonText(120, 100+25, 1, 25, white, "/") then x=x+80; y=y+90; if recording then recipe="/+" .. multiply .. recipe; end click(); end
if lsButtonText(25, 195+25, 1, 25, white, "/") then x=x+30; y=y+140; if recording then recipe="(-" .. multiply .. recipe; end click(); end
if lsButtonText(0, 220+25, 1, 25, white, "/") then x=x+ 10; y=y+150; if recording then recipe="(+" .. multiply .. recipe; end click(); end
lsPrint(195, 150, 2, 0.7, 0.7, text_white, "Rotation");
if lsButtonText(60+150, 100+70, 1, 25, white, "^") then x=x+140; y=y+90; if recording then recipe="8+" .. multiply .. recipe; end click(); end
if lsButtonText(60+150, 125+70, 1, 25, white, "^") then x=x+140; y=y+110; if recording then recipe="8-" .. multiply .. recipe; end click(); end
if lsButtonText(60+150, 195+70, 1, 25, white, "v") then x=x+140; y=y+140; if recording then recipe="5-" .. multiply .. recipe; end click();end
if lsButtonText(60+150, 220+70, 1, 25, white, "v") then x=x+140; y=y+150; if recording then recipe="5+" .. multiply .. recipe; end click(); end
if lsButtonText(60+150, 160+70, 1, 25, white, "x") then x=x+140; y=y+130; if recording then recipe="xR" .. multiply .. recipe; end click(); end
if lsButtonText(25+150, 160+70, 1, 25, white, "<") then x=x+130; y=y+130; if recording then recipe="4-" .. multiply .. recipe; end click(); end
if lsButtonText(0+150, 160+70, 1, 25, white, "<") then x=x+110; y=y+130; if recording then recipe="4+" .. multiply .. recipe; end click(); end
if lsButtonText(95+150, 160+70, 1, 25, white, ">") then x=x+160; y=y+130; if recording then recipe="6-" .. multiply .. recipe; end click(); end
if lsButtonText(120+150, 160+70, 1, 25, white, ">") then x=x+170; y=y+130; if recording then recipe="6+" .. multiply .. recipe; end click(); end
if lsButtonText(95+150, 125+70, 1, 25, white, "/") then x=x+160; y=y+110; if recording then recipe="9-" .. multiply .. recipe; end click(); end
if lsButtonText(120+150, 100+70, 1, 25, white, "/") then x=x+180; y=y+90; if recording then recipe="9+" .. multiply .. recipe; end click(); end
if lsButtonText(25+150, 195+70, 1, 25, white, "/") then x=x+130; y=y+140; if recording then recipe="1-" .. multiply .. recipe; end click(); end
if lsButtonText(0+150, 220+70, 1, 25, white, "/") then x=x+110; y=y+150; if recording then recipe="1+" .. multiply .. recipe; end click(); end
if lsKeyDown("q") then
is_done = 1;
end
lsDoFrame();
lsSleep(10);
end
end
|