|
|
(2 intermediate revisions by the same user not shown) |
Line 5: |
Line 5: |
| [[Image:Discord_w.png|25px|Discord_Logo]] | | [[Image:Discord_w.png|25px|Discord_Logo]] |
| <font style="font-size:20px"> ATITD Discord Server </font> | | <font style="font-size:20px"> ATITD Discord Server </font> |
− | '''http://www.discord.me/atitd / https://discord.gg/0kvxEfeM1sBBhy6H''' | + | '''http://www.discord.me/atitd''' |
| </td> | | </td> |
| </tr> | | </tr> |
| </table> | | </table> |
| ---- | | ---- |
− | | + | ==Macros== |
− | ===Macros/Scripts===
| + | [http://www.atitd.org/wiki/tale7/User:Safa/automato How to manually install macros] |
− | [http://www.atitd.org/wiki/tale7/User:Safa/automato How to Install Scripts] | |
| <!----------------------------------------------- Zemples.lua -----------------------------------------------> | | <!----------------------------------------------- Zemples.lua -----------------------------------------------> |
| ====zemples.lua==== | | ====zemples.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 22: |
Line 21: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | --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
| |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- chariot_stop.lua -----------------------------------------------> | | <!----------------------------------------------- chariot_stop.lua -----------------------------------------------> |
| ====chariot_stop.lua==== | | ====chariot_stop.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 279: |
Line 32: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | --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
| |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
− |
| |
| <!----------------------------------------------- grass.lua -----------------------------------------------> | | <!----------------------------------------------- grass.lua -----------------------------------------------> |
− |
| |
| ====grass.lua==== | | ====grass.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 1,035: |
Line 43: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | -- 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
| |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- gravel.lua -----------------------------------------------> | | <!----------------------------------------------- gravel.lua -----------------------------------------------> |
Line 1,102: |
Line 49: |
| ====gravel.lua==== | | ====gravel.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 1,108: |
Line 55: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | --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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- markChatsAsRead.lua -----------------------------------------------> | | <!----------------------------------------------- markChatsAsRead.lua -----------------------------------------------> |
Line 1,173: |
Line 61: |
| ====markChatsAsRead.lua==== | | ====markChatsAsRead.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 1,179: |
Line 67: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | 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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- mod_assist.lua -----------------------------------------------> | | <!----------------------------------------------- mod_assist.lua -----------------------------------------------> |
Line 1,218: |
Line 73: |
| ====mod_assist.lua==== | | ====mod_assist.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 1,224: |
Line 79: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | -- 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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- oven_timer.lua-----------------------------------------------> | | <!----------------------------------------------- oven_timer.lua-----------------------------------------------> |
Line 1,893: |
Line 85: |
| ====oven_timer.lua==== | | ====oven_timer.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 1,899: |
Line 91: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | --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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
− | </font>
| |
− | <!----------------------------------------------- resin.lua ----------------------------------------------->
| |
− | | |
− | ====resin.lua====
| |
− | <font style="font-size:3px">
| |
− | <table border="0" style="width:70%;">
| |
− | | |
− | <tr>
| |
− | <td><font style="font-size:13px">[https://drive.google.com/open?id=0Bydp4KA9MLkKeHlmRkVtNDN1Mjg Download] [[Image:Automato.png|15px|Automato_Logo]] Gathers resin with middle mouse button.</font></td>
| |
− | </tr>
| |
− | | |
− | <tr>
| |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | --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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| <!----------------------------------------------- sculptor.lua -----------------------------------------------> | | <!----------------------------------------------- sculptor.lua -----------------------------------------------> |
Line 2,169: |
Line 97: |
| ====sculptor.lua==== | | ====sculptor.lua==== |
| <font style="font-size:1px"> | | <font style="font-size:1px"> |
− | <table border="0" style="width:70%;"> | + | <table border="0" style="width:70%; background-color:#feedc8"> |
| | | |
| <tr> | | <tr> |
Line 2,175: |
Line 103: |
| </tr> | | </tr> |
| | | |
− | <tr>
| + | </table> |
− | <td>
| |
− | <pre style="white-space: pre-wrap; color:white; background-color:#282828;">
| |
− | | |
− | --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
| |
− | | |
− | | |
− | | |
− | </pre>
| |
− | | |
− | </td></tr></table>
| |
| </font> | | </font> |
| | | |
| ---- | | ---- |
| | | |
− | ===Off Topic===
| + | ==Off Topic== |
| | | |
| ====Demipharaoh Debate 2016/09==== | | ====Demipharaoh Debate 2016/09==== |
Line 2,393: |
Line 132: |
| '''Q5. How are you providing leadership in the game and amongst the player base?''' | | '''Q5. How are you providing leadership in the game and amongst the player base?''' |
| | | |
− | <font style="font-size:15px; color:#666666;">I've been an elder in Zfree and Zemples for a long time. These are sizeable guilds focused on helping players, with their own small communities. Zemples for example helped more than 30 people pass funerary this tale and that number is still counting. I've been organising this process since T6.</font> | + | <font style="font-size:15px; color:#666666;">I've been an elder in Zfree and Zemples for a long time. These are sizeable guilds focused on helping players. Zemples for example helped more than 30 people pass funerary this tale and that number is still counting. I've been organising this process since T6.</font> |
| | | |
| | | |
| '''Q6. What specifically have you done to further the growth of the community?''' | | '''Q6. What specifically have you done to further the growth of the community?''' |
| | | |
− | <font style="font-size:15px; color:#666666;">One thing i started doing recently is creating content for the game. ATITD is really in need of content creators. We never advertise the game. Playerbase is slowly dying and new players are a rarity. My goal is to help people see beyond the dated graphics of the game and realise what a gem Atitd is. You can see the first video in this project called [https://www.youtube.com/watch?v=RokoegJxoKw Beauty of Atitd] here.</font> | + | <font style="font-size:15px; color:#666666;">I set up an easier to use voice chat server for ATITD on Discord because including me some players find teamspeak and mumble too much of a hassle. It is free and available 24/7. Linked at the top of this page. |
| + | |
| + | One thing i started doing very recently is creating content for the game. ATITD is really in need of content creators. We never advertise the game. Playerbase is slowly dying and new players are a rarity. My goal is to help people see beyond the dated graphics of the game and realise what a gem Atitd is. You can see the first video in this project called [https://www.youtube.com/watch?v=RokoegJxoKw Beauty of Atitd] here. |
| + | |
| + | I'm also working on http://www.atitd.org/wiki/tale7/Sculpture_Palette for sculpture lovers. |
| + | </font> |
| | | |
| | | |
| '''Q7. How do you feel about sometimes heavy use of macros in this game by many players? and If there was a choice would you support complete ban of macros in the Tale?''' | | '''Q7. How do you feel about sometimes heavy use of macros in this game by many players? and If there was a choice would you support complete ban of macros in the Tale?''' |
| | | |
− | <font style="font-size:15px; color:#666666;">This is a question i like. If you scroll up you can see im one of the suppliers of these macros and i don't get this macros are evil way of thinking. If you have a vacuum cleaner and a broom. Nobody would judge you for using the vacuum cleaner. You are of course free to sweep the whole house with the broom but truthfully would you? Using macros is nothing different. You can do the same task over and over or you can leave it to your computer. ATITD is a grindy game. You will never run out of things to do even with macros. Also the community graciously shares the macros they make with the public. I don't see the logic behind choosing the broom then complaining about the vacuum. | + | <font style="font-size:15px; color:#666666;"> |
− | | |
| | | |
− | Lastly, macros can never be banned successfully. There is always a way around any precaution. I can assure you they will get used in secret and it will be unfair when that happens. </font>
| + | Macros can never be banned successfully. There is always a way around any precaution. </font> |
| | | |
| | | |