PDA

View Full Version : [Smithing] Fady's AIO Portable Forge-O-Matic



fady
05-13-2015, 07:21 PM
Fady's AIO Portable Forge-O-Matic
Updated on: May 20th 2015
Last Tested on: May 20th 2015
Status: Fully Functional

Features:

Smiths/Smelts anything at Portable Forges in almost any location.
Uses other people's forges, or places its own if non are found. You decide!
SRL Player Form support.
Antiban.
Should work great, even with a little lag.
Multiple Failsafes.
Basic Proggy.


Directions:

Make sure your graphics/interface settings follow this guide (https://villavu.com/forum/showthread.php?t=47714).
Have your players set up using Rafiki.
Disable XP pop-ups.
Position your player right in front of the bank and zoom in all the way.
Move The progress screen interface away from the spot of the bank like so (http://i.imgur.com/5aFBwXI.jpg?1) or in any direction so it is not covering the bank being used.
Have your Ores/Bars set up in either preset 1 or 2.
If hosting, be sure to have a portable forge included in your preset, and set it to action bar slot 1.
Use the forge once manually and select the item you want to make, so it is automatically selected later.
Press play and fill out the Player Form.
Let the Smithing gains flow!


Finding a Forge Location:

Join the Friends Chat "Portables".
Ask where the forges are.
Usually you will get a response like "F100Ca" or "Forge w100Ca" This means that the forge is located on world 100, at the Combat Academy in Lumbridge.
Common Location Abbrev.:
"Ba": Barbarian Assault(use a games necklace and teleport to the Barbarian Outpost).
"Ca": chest at Combat academy in Lumbridge.
"Sp": Chest at Shantay Pass.
"Burth": Bank at Burthorpe.


Planned Updates:

Switch to 100% color and get rid of North,South,East,West Static boxes.
Add Breaking, and make the script Login.
Expand the script to be an AIO Portables and not just forges.


Current Issues:

At the combat academy location, if Donie moves infront of the bank/forge, the script will sometimes click to talk to her causing the script to break. Fixed with V1.1. Method in the Change Log.


Forge Color Info:

If the script isn't finding the colors for the forge, change line 133 to:
mainscreen.findObject(MPos.x, Mpos.y, 1274080, 9, colorSetting(2, 0.23, 1.41), mainscreen.playerPoint, 20, 20, 50, ['mith Portable', 'able forge'], MOUSE_Move);



V1.0:
Initial release

V1.1:

Added Hosting mode, where it will place it's own forge, if another one isn't found within 15-30 seconds. If it runs out of forges to place, will switch off hosting.
Added a failsafe to the banking procedure, it will now try to open the bank again if it fails (This should fix a previous Issue with the CA Location).




Post those Proggys and let me know how it's going
Any comments or suggestions are very appreciated

Hitac
05-14-2015, 08:13 PM
OMG Thanks very much. Was waiting for this for ages. Hope it works flawless just need to buy supplies now :)

fady
05-14-2015, 10:10 PM
OMG Thanks very much. Was waiting for this for ages. Hope it works flawless just need to buy supplies now :)

Hopefully it was worth the wait!! Lmk how it goes for you!

Hitac
05-16-2015, 08:37 PM
Hopefully it was worth the wait!! Lmk how it goes for you!

Working fine. Had a problem that was making me unable to test the script but for now it looks good. At first it coundn't find the forge but i zoomed-in and now it detectes really easly. Thanks for this!

Hitac
05-17-2015, 12:21 PM
Today i was trying to run it and i had a problem. When i select the "Auto-Locate" option to find forge it seems like it doesn't find it. So i put south because it was where the forge were at that moment, but then when they change the place of the forge the script stops, making it hard to make it run for long runs unless they place the forge always south. Any tips?

fady
05-17-2015, 02:41 PM
Today i was trying to run it and i had a problem. When i select the "Auto-Locate" option to find forge it seems like it doesn't find it. So i put south because it was where the forge were at that moment, but then when they change the place of the forge the script stops, making it hard to make it run for long runs unless they place the forge always south. Any tips?

This seems like a color issue, I've spent 2 weeks picking up colors of forges at diff spots and diff locations and diff worlds, but I still get some that are undetectable! I suggest picking your own colors of the scrip doesn't work for a location. I am constantly adding colos for the forge in mine, I'll add the one I have to the OP when I get home.

General_Patrick
05-20-2015, 02:36 AM
Always love using your scripts! I cannot wait to try out the script when i have time. :)

fady
05-21-2015, 04:12 AM
V1.1 Update:
Added Hosting mode, where it will look for other forges, and if non are found within 15-30 seconds, it will place it's own (a little slow I know, but that can be easily modified). If it runs out of forges to place, will switch off hosting and look for other forges to use.
Added a failsafe to the banking procedure, it will now try to open the bank again if it fails (This should fix a previous Issue with the CA Location).



Always love using your scripts! I cannot wait to try out the script when i have time. :)

Glad you like my scripts :). Let me know how it goes, and be sure to grab the updated version!

rickhunley
05-22-2015, 07:11 AM
Posted a script for Wells. Maybe you can include it somehow?

I just changed a few words around and cut out some code and made the wait time to match production time etc.

Just out of curiosity, is there a way for the screen to locate the colour of the well and then click it, instead of mouse over? i.e. identify colour hotspot, then click on it. Autodetect takes mouse off screen.

Thanks for tips. It's great :)

I love the way it finds the bank chests :)



program ForgeOMatic;
{$DEFINE SMART}
{$I SRL-6/SRL.Simba}
{$i SRL-6/LIB/MISC/SRLPLAYERFORM.simba}

{*
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
*}


var
IngsDone: integer;
NorthBox, SouthBox, EastBox, WestBox, box: TBox;
outOfForges: Boolean;

procedure initPlayerForm();
begin
with playerForm do
begin
name := 'ForgeOMatic';
scriptHelpThread := '';

editBoxLabels := ['Number to do','Number/Inventory','Antiban Chance'];
editBoxDefaults := ['5000','28','2400'];
editBoxHints := ['How many Ores/Bars do you want to process?','Number of Ores/Bars used per Inventory','The longer it takes to Smelt/Smith, the higher this number should be'];

checkBoxLabels := ['Disable SRL Debug?', 'Disable Script Debug?'];
checkBoxDefaults := ['True','True'];
checkBoxHints := ['Do you want to Disable SRL Debug?','Do you want to Disable the Script Debug?'];

comboBoxLabels := ['Forge Direction','Bank Location','Preset','Mode','Hosting?'];
comboBoxDefaults := ['Auto Detect','CA','1','Smith','No'];
comboBoxItems := [['North','East','South','West','Auto Detect'], ['North','East','South','West','SP','Burth','CA','B A'], ['1','2'], ['Smith','Smelt'], ['Yes','No']];
comboBoxHints := ['Which direction the forge is at', 'Pick a bank or the direction of the bank.', 'Pick a bank preset to use', 'Which mode are we using?', 'Do you want to place a forge if non are found?'];

end;
end;

procedure declarePlayers();
var
i: integer;
begin
players.setup(playerForm.players);
currentPlayer := 0;

for i := 0 to high(players) do
with players[i] do
begin
integers[0] := strToInt(playerForm.players[i].settings[0]);
integers[1] := strToInt(playerForm.players[i].settings[1]);
integers[2] := strToInt(playerForm.players[i].settings[2]);

booleans[0] := strToBool(playerForm.players[i].settings[3]);
booleans[1] := strToBool(playerForm.players[i].settings[4]);

strings[0] := playerForm.players[i].settings[5];
strings[1] := playerForm.players[i].settings[6];
strings[2] := playerForm.players[i].settings[7];
strings[3] := playerform.players[i].settings[8];
strings[4] := playerform.players[i].settings[9];
end;
end;

procedure sDebug(Text: string);
begin
if not players[currentPlayer].booleans[1] then
writeLn(Text);
end;

procedure defineBoxes(); // The TBoxes to click for the forge
begin
NorthBox := intToBox(277, 44, 325, 87);
SouthBox := intToBox(240, 250, 306, 295);
EastBox := intToBox(382, 139, 428, 191);
WestBox := intToBox(144, 100, 158, 148);
end;

procedure FindRandoms();
begin
claimTicket();
exitTreasure();
end;

procedure bankCords(); //Opens the specified bank
var
x, y: Integer;
begin
if bankscreen.isOpen() then
exit;
case players[currentPlayer].strings[1] of
'North': begin MouseOval(299,111,20,20,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'East': begin mouseOval(365,184,20,20,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'South': begin mouseOval(281,283,30,30,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'West': begin mouseOval(185,180,25,25,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'SP': begin if not bankScreen.open(BANK_CHEST_SHANTAY) then begin mouseOval(378,197,30,30,Mouse_Move); if IsMouseOverText(['Shantay c', 'y chest'], 777) then fastclick(mouse_left); end; end;
'Burth': begin if not bankScreen.open(BANK_TABLE_BURTHORPE) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'booth'], 777) then fastclick(mouse_left); end; end;
'CA': begin if not bankScreen.open(BANK_CHEST_LUMBRIDGE) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'hest'], 777) then fastclick(mouse_left); end; end;
'BA': begin if not mainscreen.findObject(x, y, 3424082, 8, colorSetting(2, 0.07, 0.14), mainscreen.playerPoint, 50, 50, 100, ['ank', 'hest'], MOUSE_LEFT) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'hest'], 777) then fastclick(mouse_left); end; end;
end;
end;

procedure ForgeSpot(); //Moves the mouse to the specified location in the playerform
begin
case players[currentPlayer].strings[0] of
'North': MouseBox(NorthBox,Mouse_Move);
'East': MouseBox(EastBox,Mouse_Move);
'South': Mousebox(SouthBox,Mouse_Move);
'West': Mousebox(WestBox,Mouse_Move);
'Auto Detect': Mousebox(box,Mouse_Move);
end;
end;

procedure smithOrSmelt(); //Either Left or Right clicks the forge, depending on the mode selected
begin
case players[currentPlayer].strings[3] of
'Smelt': begin
fastclick(mouse_right);
wait(gaussRangeInt(100, 300));
chooseOption.select(['Mix','ix Portable', 'Take'], 400);
end;
'Smith': begin
fastclick(mouse_left);
end;
end;
end;

procedure AntiBan(Chance: Integer; ReHover: boolean);
begin
case random(Chance) of
1, 2: begin hoverSkill(SKILL_SMITHING); if Rehover then ForgeSpot(); end;
3..22: begin pickUpMouse; if Rehover then ForgeSpot(); end;
23..28: begin sleepAndMoveMouse(randomRange(500, 3000)); if Rehover then ForgeSpot(); end;
29..36: begin wait(RandomRange(777, 5000)); if Rehover then ForgeSpot(); end;
37: begin smallRandomMouse(); if Rehover then ForgeSpot(); end;
38: begin writeLn('Starting mini break.'); wait(RandomRange(9001, 25000)); writeLn('Finished mini break.'); if Rehover then ForgeSpot(); end;
end;
end;

procedure findForge();
var
i, r : integer;
fBoxes : array [1..4] of TBox;
MPos : TPoint;
begin
//Finds the Forge and assigns the TPoint MPos to the mouse position on the forge
mainscreen.findObject(MPos.x, Mpos.y, 3489698, 7, colorSetting(2, 0.08, 1.35), mainscreen.playerPoint, 20, 20, 50, ['ell Portable', 'able well'], MOUSE_Move);
fBoxes[1].setBounds(270, 24, 330, 102);
fBoxes[2].setBounds(226, 226, 338, 325);
fBoxes[3].setBounds(362, 119, 448, 211);
fBoxes[4].setBounds(144, 95, 213, 171);


for i := 1 to high(fBoxes) do //Checks which Direction MPos is at
if fBoxes[i].isPointInside(MPos) then
begin
r := i;
break();
end;

case r of // Assigns Click boxes depending on the mouse direction
0 : begin sDebug('No Forge Found'); end;
1 : begin box := NorthBox; sDebug('Forge is North'); end;
2 : begin box := SouthBox; sDebug('Forge is South'); end;
3 : begin box := EastBox; sDebug('Forge is East'); end;
4 : begin box := WestBox; sDebug('Forge is West'); end;
end;
end;

procedure placeForge();
begin
if outOfForges then
begin
writeLn('Out of Forges');
exit;
end;
typeSend('1', false);
if conversationBox.isOpen(3000) then
begin
wait(gaussRangeInt(100, 300));
typesend('1', false);
end else
begin
sDebug('Ran out of forges, Canceling hosting mode');
OutofForges := True;
end;
wait(gaussRangeInt(1000, 3000));
findForge();
end;

procedure ForgeDirection(); //Moves the mouse to the forge location, if not found, will look for it, if found will click it
var
Waited: Integer;
begin
if (Tabbackpack.count() <= 20) then //If the backpack doesnt have 20 or more items, the script terminates
begin
writeLn('Failed to withdraw enough items');
terminateScript();
end;

ForgeSpot(); //Moves the mouse to the pre-determined forge location

if not IsMouseOverText(['mix', 'Portable we', 'll', 'potions'], 500) then //If forge isnt found
begin
repeat
wait(gaussRangeInt(1500, 2500)); //Waits till it is found in this spot, or it has tried 10 times (usually takes 15-30 seconds)
AntiBan(800, true); //Increase the number for less antiban during the wait for forge
if isMouseOverText(['mix', 'Portable we', 'll potions'], 400) then
begin
sDebug('Found a Forge');
smithOrSmelt();
exit;
end;
inc(Waited);
until isMouseOverText(['mix', 'Portable we', 'll potions'], 400) or (Waited >= 10) or productionScreen.isOpen();
if (Waited >= 10) then //If it has tried 10 or more times, will look for forge again
begin //or terminate depending on playerform. To wait more, Increase the
if (players[currentPlayer].strings[0] = 'Auto Detect') then //Number for Waited
begin
sDebug('Could not find forge, Looking Around');
findForge();
end else
begin
writeLn('Could not find forge');
terminateScript();
end;
end;
end;
if IsMouseOverText(['mix', 'Portable we', 'll', 'potions'], 500) then //If forge is there
begin
sDebug('Found a Forge');
smithOrSmelt(); //Smith or Smelt, Depending on Mode
end else
begin
if (players[currentPlayer].strings[4] = 'Yes') then
placeForge();
end;
end;

procedure MakeStuff();
var
portaTry: Integer;
begin
if (Tabbackpack.count() <= 20) then
exit;
if not productionScreen.isOpen(gaussRangeInt(2000,4000)) then //If the production screen isnt open withing 8 seconds
begin
inc(portaTry);
sDebug('Failed to open Production screen trying again');
repeat
inc(portaTry); //Increase the number of tries
sDebug('Attempt to open production screen number ' + intToStr(portaTry));
mouseOffClient(OFF_CLIENT_RANDOM); //Moves the mouse off the screen
ForgeDirection(); //Tries to click the forge again. If no forge found, It will either look for it or terminate
if productionScreen.isOpen(gaussRangeInt(2000,4000)) then
break;
until productionScreen.isOpen() or (portaTry>19); //If the number of tries are more than 9 it will stop trying
if not productionScreen.isOpen(5000) then //If it still isnt open, will terminate
begin
writeLn('Failed to open production screen 20 times, Terminating');
terminateScript;
end;
end;
wait(gaussRangeInt(150, 500)); //Waits 0.1-0.5 seconds
productionScreen.clickStart(true); //Clicks the start button
wait(gaussRangeInt(15000, 20000));
end;

procedure CompactBanker(); //Credit to TrollCrank, modified version of his banker in ProteanPlankParade
var //Opens the specified bank, and withdraws the determined preset
bankTry,Att: integer;
begin

bankCords();

if Not bankScreen.isOpen(8000) then //If the bank doesnt open within 8 seconds
begin
sDebug('Could not open bank, trying again');
inc(bankTry)
repeat //Tries to open the bank again 9 times
bankCords();
if bankScreen.isOpen(gaussRangeInt(2000,3000)) then
break;
inc(bankTry);
sDebug('Attempt at opening bank number '+ intToStr(bankTry));
until (bankTry > 9); //Change this if you want it to do more than 10 attempts
end;

if (bankTry>9) then
begin
writeLn('Failed to open Bank 10 times. Terminating Script');
terminateScript();
end;

wait(gaussRangeInt(100, 500));

sDebug('Successfully opened the bank!');
typesend(players[currentPlayer].strings[2], false); //Clicks the preset Button
if not (tabBackpack.waitWhileLocked(8000)) then //If the bank doesnt close within 8 seconds
begin
sDebug('Bank Did not close, trying to Withdraw again');
repeat //Tries to click the preset button again twice
typesend(players[currentPlayer].strings[2], false);
inc(Att);
wait(gaussRangeInt(1000, 3000));
until (not tabBackpack.isLocked()) or (Att >= 2);
if tabBackpack.isLocked() then
begin //If the backpack hasnt been unlocked yet, will terminate
WriteLn('Could not exit bank, terminating script');
terminateScript();
end;
end;
IngsDone := IngsDone + players[currentPlayer].integers[1];
wait(RandomRange(200,900));
end;

procedure mainLoop();
begin
if not isLoggedIn() then
exit;

CompactBanker();
ForgeDirection;
MakeStuff;
clearDebug();
writeln('Ores/Bars Processed: ' + (toStr(IngsDone)));
writeLn('Processed/H: ' +intToStr(round(IngsDone/(getTimeRunning/3600000))));

if (not bankScreen.isOpen) and (Tabbackpack.isEmpty) then //If the Bankscreen is closed, and the backpack is empty, it Terminates
begin
WriteLn('Failed to withdraw anything.');
TerminateScript;
end;
end;

begin
clearDebug();
initPlayerForm();
runPlayerForm();
if (not playerForm.isScriptReady) then
exit;
declarePlayers();
smartShowConsole := false;
disableSRLDebug := players[currentPlayer].booleans[0];

setupSRL();
FindRandoms();

minimap.clickCompass();
mainscreen.setAngle(MS_ANGLE_HIGH);

DefineBoxes();

if (players[currentPlayer].strings[0] = 'Auto Detect') then
findForge();

repeat
mouseSpeed := randomRange(25,32);
mainLoop();

if (IngsDone >= players[currentPlayer].integers[0]) then //Stops when Number to Do is reached
begin
writeLn('Reached our To-Do goal');
TerminateScript;
end;
until false;
end.

rickhunley
05-22-2015, 07:14 AM
This seems like a color issue, I've spent 2 weeks picking up colors of forges at diff spots and diff locations and diff worlds, but I still get some that are undetectable! I suggest picking your own colors of the scrip doesn't work for a location. I am constantly adding colos for the forge in mine, I'll add the one I have to the OP when I get home.

AutoDetect is working but each portable generates its own colours :(

New fail safe idea? - if can't find portable, move mouse around random co-ordinates of screen, when find mouseover, click. Wait 20-30,000 before failure as sometimes it takes people a few secs to setup their portable. I imagine since it's zoomed in, it will be easier to bound the screen.

New fail safe idea? - if logout is less than 30 min or 60 min, or desired break time, log back in and repeat production procedures?

rickhunley
05-22-2015, 12:42 PM
@faddy - I've tried hosting mode and it doesn't deploy the object, just a bunch of mouseover text, and then it terminates. Any chance of pointing me to the code that determines what it does with the well, and I'll try and have a look. Thanks

@faddy - You need to update the procedures in the procedure mainloop. You have some that are missing :P Specifically placeForge.


procedure mainLoop();
begin
if not isLoggedIn() then
exit;

placeForge();
findForge;
CompactBanker();
ForgeDirection;
MakeStuff;
clearDebug();

fady
05-22-2015, 01:56 PM
Posted a script for Wells. Maybe you can include it somehow?

I just changed a few words around and cut out some code and made the wait time to match production time etc.

Just out of curiosity, is there a way for the screen to locate the colour of the well and then click it, instead of mouse over? i.e. identify colour hotspot, then click on it. Autodetect takes mouse off screen.

Thanks for tips. It's great :)

I love the way it finds the bank chests :)



program ForgeOMatic;
{$DEFINE SMART}
{$I SRL-6/SRL.Simba}
{$i SRL-6/LIB/MISC/SRLPLAYERFORM.simba}

{*
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
JUST PRESS PLAY AND FILL OUT THE FORM
*}


var
IngsDone: integer;
NorthBox, SouthBox, EastBox, WestBox, box: TBox;
outOfForges: Boolean;

procedure initPlayerForm();
begin
with playerForm do
begin
name := 'ForgeOMatic';
scriptHelpThread := '';

editBoxLabels := ['Number to do','Number/Inventory','Antiban Chance'];
editBoxDefaults := ['5000','28','2400'];
editBoxHints := ['How many Ores/Bars do you want to process?','Number of Ores/Bars used per Inventory','The longer it takes to Smelt/Smith, the higher this number should be'];

checkBoxLabels := ['Disable SRL Debug?', 'Disable Script Debug?'];
checkBoxDefaults := ['True','True'];
checkBoxHints := ['Do you want to Disable SRL Debug?','Do you want to Disable the Script Debug?'];

comboBoxLabels := ['Forge Direction','Bank Location','Preset','Mode','Hosting?'];
comboBoxDefaults := ['Auto Detect','CA','1','Smith','No'];
comboBoxItems := [['North','East','South','West','Auto Detect'], ['North','East','South','West','SP','Burth','CA','B A'], ['1','2'], ['Smith','Smelt'], ['Yes','No']];
comboBoxHints := ['Which direction the forge is at', 'Pick a bank or the direction of the bank.', 'Pick a bank preset to use', 'Which mode are we using?', 'Do you want to place a forge if non are found?'];

end;
end;

procedure declarePlayers();
var
i: integer;
begin
players.setup(playerForm.players);
currentPlayer := 0;

for i := 0 to high(players) do
with players[i] do
begin
integers[0] := strToInt(playerForm.players[i].settings[0]);
integers[1] := strToInt(playerForm.players[i].settings[1]);
integers[2] := strToInt(playerForm.players[i].settings[2]);

booleans[0] := strToBool(playerForm.players[i].settings[3]);
booleans[1] := strToBool(playerForm.players[i].settings[4]);

strings[0] := playerForm.players[i].settings[5];
strings[1] := playerForm.players[i].settings[6];
strings[2] := playerForm.players[i].settings[7];
strings[3] := playerform.players[i].settings[8];
strings[4] := playerform.players[i].settings[9];
end;
end;

procedure sDebug(Text: string);
begin
if not players[currentPlayer].booleans[1] then
writeLn(Text);
end;

procedure defineBoxes(); // The TBoxes to click for the forge
begin
NorthBox := intToBox(277, 44, 325, 87);
SouthBox := intToBox(240, 250, 306, 295);
EastBox := intToBox(382, 139, 428, 191);
WestBox := intToBox(144, 100, 158, 148);
end;

procedure FindRandoms();
begin
claimTicket();
exitTreasure();
end;

procedure bankCords(); //Opens the specified bank
var
x, y: Integer;
begin
if bankscreen.isOpen() then
exit;
case players[currentPlayer].strings[1] of
'North': begin MouseOval(299,111,20,20,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'East': begin mouseOval(365,184,20,20,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'South': begin mouseOval(281,283,30,30,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'West': begin mouseOval(185,180,25,25,Mouse_Move); if IsMouseOverText(['Bank','hest','nker'], 777) then begin fastclick(mouse_left); end; end;
'SP': begin if not bankScreen.open(BANK_CHEST_SHANTAY) then begin mouseOval(378,197,30,30,Mouse_Move); if IsMouseOverText(['Shantay c', 'y chest'], 777) then fastclick(mouse_left); end; end;
'Burth': begin if not bankScreen.open(BANK_TABLE_BURTHORPE) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'booth'], 777) then fastclick(mouse_left); end; end;
'CA': begin if not bankScreen.open(BANK_CHEST_LUMBRIDGE) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'hest'], 777) then fastclick(mouse_left); end; end;
'BA': begin if not mainscreen.findObject(x, y, 3424082, 8, colorSetting(2, 0.07, 0.14), mainscreen.playerPoint, 50, 50, 100, ['ank', 'hest'], MOUSE_LEFT) then begin mouseOval(376,193,30,30,Mouse_Move); if IsMouseOverText(['ank', 'hest'], 777) then fastclick(mouse_left); end; end;
end;
end;

procedure ForgeSpot(); //Moves the mouse to the specified location in the playerform
begin
case players[currentPlayer].strings[0] of
'North': MouseBox(NorthBox,Mouse_Move);
'East': MouseBox(EastBox,Mouse_Move);
'South': Mousebox(SouthBox,Mouse_Move);
'West': Mousebox(WestBox,Mouse_Move);
'Auto Detect': Mousebox(box,Mouse_Move);
end;
end;

procedure smithOrSmelt(); //Either Left or Right clicks the forge, depending on the mode selected
begin
case players[currentPlayer].strings[3] of
'Smelt': begin
fastclick(mouse_right);
wait(gaussRangeInt(100, 300));
chooseOption.select(['Mix','ix Portable', 'Take'], 400);
end;
'Smith': begin
fastclick(mouse_left);
end;
end;
end;

procedure AntiBan(Chance: Integer; ReHover: boolean);
begin
case random(Chance) of
1, 2: begin hoverSkill(SKILL_SMITHING); if Rehover then ForgeSpot(); end;
3..22: begin pickUpMouse; if Rehover then ForgeSpot(); end;
23..28: begin sleepAndMoveMouse(randomRange(500, 3000)); if Rehover then ForgeSpot(); end;
29..36: begin wait(RandomRange(777, 5000)); if Rehover then ForgeSpot(); end;
37: begin smallRandomMouse(); if Rehover then ForgeSpot(); end;
38: begin writeLn('Starting mini break.'); wait(RandomRange(9001, 25000)); writeLn('Finished mini break.'); if Rehover then ForgeSpot(); end;
end;
end;

procedure findForge();
var
i, r : integer;
fBoxes : array [1..4] of TBox;
MPos : TPoint;
begin
//Finds the Forge and assigns the TPoint MPos to the mouse position on the forge
mainscreen.findObject(MPos.x, Mpos.y, 3489698, 7, colorSetting(2, 0.08, 1.35), mainscreen.playerPoint, 20, 20, 50, ['ell Portable', 'able well'], MOUSE_Move);
fBoxes[1].setBounds(270, 24, 330, 102);
fBoxes[2].setBounds(226, 226, 338, 325);
fBoxes[3].setBounds(362, 119, 448, 211);
fBoxes[4].setBounds(144, 95, 213, 171);


for i := 1 to high(fBoxes) do //Checks which Direction MPos is at
if fBoxes[i].isPointInside(MPos) then
begin
r := i;
break();
end;

case r of // Assigns Click boxes depending on the mouse direction
0 : begin sDebug('No Forge Found'); end;
1 : begin box := NorthBox; sDebug('Forge is North'); end;
2 : begin box := SouthBox; sDebug('Forge is South'); end;
3 : begin box := EastBox; sDebug('Forge is East'); end;
4 : begin box := WestBox; sDebug('Forge is West'); end;
end;
end;

procedure placeForge();
begin
if outOfForges then
begin
writeLn('Out of Forges');
exit;
end;
typeSend('1', false);
if conversationBox.isOpen(3000) then
begin
wait(gaussRangeInt(100, 300));
typesend('1', false);
end else
begin
sDebug('Ran out of forges, Canceling hosting mode');
OutofForges := True;
end;
wait(gaussRangeInt(1000, 3000));
findForge();
end;

procedure ForgeDirection(); //Moves the mouse to the forge location, if not found, will look for it, if found will click it
var
Waited: Integer;
begin
if (Tabbackpack.count() <= 20) then //If the backpack doesnt have 20 or more items, the script terminates
begin
writeLn('Failed to withdraw enough items');
terminateScript();
end;

ForgeSpot(); //Moves the mouse to the pre-determined forge location

if not IsMouseOverText(['mix', 'Portable we', 'll', 'potions'], 500) then //If forge isnt found
begin
repeat
wait(gaussRangeInt(1500, 2500)); //Waits till it is found in this spot, or it has tried 10 times (usually takes 15-30 seconds)
AntiBan(800, true); //Increase the number for less antiban during the wait for forge
if isMouseOverText(['mix', 'Portable we', 'll potions'], 400) then
begin
sDebug('Found a Forge');
smithOrSmelt();
exit;
end;
inc(Waited);
until isMouseOverText(['mix', 'Portable we', 'll potions'], 400) or (Waited >= 10) or productionScreen.isOpen();
if (Waited >= 10) then //If it has tried 10 or more times, will look for forge again
begin //or terminate depending on playerform. To wait more, Increase the
if (players[currentPlayer].strings[0] = 'Auto Detect') then //Number for Waited
begin
sDebug('Could not find forge, Looking Around');
findForge();
end else
begin
writeLn('Could not find forge');
terminateScript();
end;
end;
end;
if IsMouseOverText(['mix', 'Portable we', 'll', 'potions'], 500) then //If forge is there
begin
sDebug('Found a Forge');
smithOrSmelt(); //Smith or Smelt, Depending on Mode
end else
begin
if (players[currentPlayer].strings[4] = 'Yes') then
placeForge();
end;
end;

procedure MakeStuff();
var
portaTry: Integer;
begin
if (Tabbackpack.count() <= 20) then
exit;
if not productionScreen.isOpen(gaussRangeInt(2000,4000)) then //If the production screen isnt open withing 8 seconds
begin
inc(portaTry);
sDebug('Failed to open Production screen trying again');
repeat
inc(portaTry); //Increase the number of tries
sDebug('Attempt to open production screen number ' + intToStr(portaTry));
mouseOffClient(OFF_CLIENT_RANDOM); //Moves the mouse off the screen
ForgeDirection(); //Tries to click the forge again. If no forge found, It will either look for it or terminate
if productionScreen.isOpen(gaussRangeInt(2000,4000)) then
break;
until productionScreen.isOpen() or (portaTry>19); //If the number of tries are more than 9 it will stop trying
if not productionScreen.isOpen(5000) then //If it still isnt open, will terminate
begin
writeLn('Failed to open production screen 20 times, Terminating');
terminateScript;
end;
end;
wait(gaussRangeInt(150, 500)); //Waits 0.1-0.5 seconds
productionScreen.clickStart(true); //Clicks the start button
wait(gaussRangeInt(15000, 20000));
end;

procedure CompactBanker(); //Credit to TrollCrank, modified version of his banker in ProteanPlankParade
var //Opens the specified bank, and withdraws the determined preset
bankTry,Att: integer;
begin

bankCords();

if Not bankScreen.isOpen(8000) then //If the bank doesnt open within 8 seconds
begin
sDebug('Could not open bank, trying again');
inc(bankTry)
repeat //Tries to open the bank again 9 times
bankCords();
if bankScreen.isOpen(gaussRangeInt(2000,3000)) then
break;
inc(bankTry);
sDebug('Attempt at opening bank number '+ intToStr(bankTry));
until (bankTry > 9); //Change this if you want it to do more than 10 attempts
end;

if (bankTry>9) then
begin
writeLn('Failed to open Bank 10 times. Terminating Script');
terminateScript();
end;

wait(gaussRangeInt(100, 500));

sDebug('Successfully opened the bank!');
typesend(players[currentPlayer].strings[2], false); //Clicks the preset Button
if not (tabBackpack.waitWhileLocked(8000)) then //If the bank doesnt close within 8 seconds
begin
sDebug('Bank Did not close, trying to Withdraw again');
repeat //Tries to click the preset button again twice
typesend(players[currentPlayer].strings[2], false);
inc(Att);
wait(gaussRangeInt(1000, 3000));
until (not tabBackpack.isLocked()) or (Att >= 2);
if tabBackpack.isLocked() then
begin //If the backpack hasnt been unlocked yet, will terminate
WriteLn('Could not exit bank, terminating script');
terminateScript();
end;
end;
IngsDone := IngsDone + players[currentPlayer].integers[1];
wait(RandomRange(200,900));
end;

procedure mainLoop();
begin
if not isLoggedIn() then
exit;

CompactBanker();
ForgeDirection;
MakeStuff;
clearDebug();
writeln('Ores/Bars Processed: ' + (toStr(IngsDone)));
writeLn('Processed/H: ' +intToStr(round(IngsDone/(getTimeRunning/3600000))));

if (not bankScreen.isOpen) and (Tabbackpack.isEmpty) then //If the Bankscreen is closed, and the backpack is empty, it Terminates
begin
WriteLn('Failed to withdraw anything.');
TerminateScript;
end;
end;

begin
clearDebug();
initPlayerForm();
runPlayerForm();
if (not playerForm.isScriptReady) then
exit;
declarePlayers();
smartShowConsole := false;
disableSRLDebug := players[currentPlayer].booleans[0];

setupSRL();
FindRandoms();

minimap.clickCompass();
mainscreen.setAngle(MS_ANGLE_HIGH);

DefineBoxes();

if (players[currentPlayer].strings[0] = 'Auto Detect') then
findForge();

repeat
mouseSpeed := randomRange(25,32);
mainLoop();

if (IngsDone >= players[currentPlayer].integers[0]) then //Stops when Number to Do is reached
begin
writeLn('Reached our To-Do goal');
TerminateScript;
end;
until false;
end.



AutoDetect is working but each portable generates its own colours :(

New fail safe idea? - if can't find portable, move mouse around random co-ordinates of screen, when find mouseover, click. Wait 20-30,000 before failure as sometimes it takes people a few secs to setup their portable. I imagine since it's zoomed in, it will be easier to bound the screen.

New fail safe idea? - if logout is less than 30 min or 60 min, or desired break time, log back in and repeat production procedures?


@faddy - I've tried hosting mode and it doesn't deploy the object, just a bunch of mouseover text, and then it terminates. Any chance of pointing me to the code that determines what it does with the well, and I'll try and have a look. Thanks

@faddy - You need to update the procedures in the procedure mainloop. You have some that are missing :P Specifically placeForge.


procedure mainLoop();
begin
if not isLoggedIn() then
exit;

placeForge();
findForge;
CompactBanker();
ForgeDirection;
MakeStuff;
clearDebug();

Hey! I'm glad you're using my script. To answer your questions, yes we can change it to click instead of just move when it finds the color, but that isn't a good idea as it would break other parts of the script. Some of the MouseOverText portions around the script are going to cause problems, I'll show you how to fix in a second. The colors for the well could be updated, I'll show you the one I've collected. Also for the first fail safe where it waits for the forge, It already does something similar, the wait is around 15-25 seconds if hosting, and upto around 4 mins if not hosting, but you might want to change the Mouseboxes in the DefineBoxes Procedure, to make them match the well, as they were made for forges, because incorrect boxes might mess up well detection. Lastly placeForge is not supposed to be in the main loop, it is only called if the person is in host mode, and no forges are found. Also, editing the wait time for the progress screen was not necessary, you could have just increased the number for "antiban chance" in the player form, so it doesnt keep doing antiban too often in the wait. It should wait until the progress screen closes.

now to the edits I suggest making:


//In the find forge procedure Change

mainscreen.findObject(MPos.x, Mpos.y, 3489698, 7, colorSetting(2, 0.08, 1.35), mainscreen.playerPoint, 20, 20, 50, ['ell Portable', 'able well'], MOUSE_Move);

//to

mainscreen.findObject(MPos.x, Mpos.y, 9868075, 11, colorSetting(2, 4.48, 1.81), mainscreen.playerPoint, 20, 20, 50, ['ix potions', 'ions Portable', 'able well'], MOUSE_Move);

//Notice how the colors and the mouse over text have changed


//In the ForgeDirection procedure change ALL of the mouse over text parts from

isMouseOverText(['mix', 'Portable we', 'll potions'], 400)

//to

isMouseOverText(['ix potions', 'ions Portable', 'able well'], 400)



If there are any questions you still have, or if it still isn't working very well for you, let me know.

EDIT: make sure you aren't wearing red when using the modified version. Also to diagnose problems with the script, only un-check "Disable Script Debug" in the player form first. it should give you more of an idea of whats going on, and if that doesn't help then un-check "Disable SRL Debug" too. Also if using hosting mode, it only works if using "Auto Detect" for forge direction, I might actually change that in my forge script.

I should be releasing an AIO portables script within a couple of days.

EDIT#2: Also to mention someone you need to get their member ID from their profile page for instance my profile page is https://villavu.com/forum/member.php?u=152795, that means my member ID is 152795. Now to mention you need to do

Username

so to mention me for example you'd do

fady to give you, fady

rickhunley
05-26-2015, 11:00 AM
Hi fady,

Thanks for the information. I'll go try it now. I was just wondering how the AIO portables script is coming along? :)

fady
05-26-2015, 11:07 AM
Hi fady,

Thanks for the information. I'll go try it now. I was just wondering how the AIO portables script is coming along? :)

let me know how its working for you. Its almost done going to test it upload it sometime later tonight or tomorrow.

rickhunley
05-26-2015, 11:24 AM
Hi fady,

When I use auto detect it sends the mouse point immediately to the top left of the screen.

Then after it fails nine attempts, it does this command:

Could not find forge, Looking Around
-- TRSMainscreen.findObject()
---- Colors found: 2869
---- Possible objects found: 18

------ Current mouse-over text: ""
------ Current mouse-over text: "Mix potions Portable well"
------ Found "ix potions" in mouse-over string: "Mix potions Portable well"
---- isMouseOverText(): True
---- Successfully mouse'd object

No Forge Found
-- isMouseOverText()
---- Current mouse-over text: "Mix potions Portable well"
---- Found "ix potions" in mouse-over string: "Mix potions Portable well"
-- isMouseOverText(): True
Found a Forge
Failed to open Progress screen
-- Succesfully freed SMART[112056]
-- Freeing gametabs bitmaps...
Successfully executed.


Once it does one production, the script shuts down.

The script finds the well at the beginning, then goes to the bank, then when tries to auto detect again, it just goes to top left corner.

Any tips? Thanks :)

rickhunley
05-26-2015, 11:27 AM
Here is the log report.

1) Mouse -> Top left corner of screen.
2) After fails, sometimes finds well with auto detect.
3) If does open, script terminates, as says production window could not be opened, when it had just finished doing a production :)


[00:00:03]: -- setupSRL()
[00:00:03]: ---- Setting up SRL...
[00:00:03]: ---- attempting to spawn smart, attempt #: 1
[00:00:03]: ---- initSmart():
[00:00:03]: ------ Attempting to pair to a previously spawned client
[00:00:03]: ------ smartPairToExistingClient():
[00:00:03]: -------- Found 1 free client(s), attempting to pair to one...
[00:00:03]: ---------- smartSetAsTarget(): Succesfully set SMART[112056] as Simba's target
[00:00:03]: -------- Succesfully paired to a existing client, SMART[112056]
[00:00:03]: ------ smartPairToExistingClient(): result = true
[00:00:03]: ------ Succesfully initialized via pairing to a previously spawned client
[00:00:03]: ---- initSmart()
[00:00:03]: ---- Waiting up to 5 minutes for RS to load...
[00:00:03]: ------ TRSActionBar.__findButton(): Found the actionbar button @ {X = 566, Y = 397}
[00:00:03]: ------ TRSActionBar.__find(): result = true (height = 75)
[00:00:03]: ------ Dynamic interfaces have been set.
[00:00:03]: ---- Client is ready.
[00:00:03]: ---- Setup SRL in 0 Seconds
[00:00:03]: -- setupSRL(): True
[00:00:03]: ---- TRSGameTab.__initTabs(): Setup gametab properties
[00:00:04]: ---- minimap.mouseOffCompass(): Succesfully moved mouse off of compass
[00:00:04]: ---- TRSMinimap.clickCompass(): Clicked compass
[00:00:06]: -- TRSMainscreen.findObject()
[00:00:06]: ---- Colors found: 9339
[00:00:06]: ---- Possible objects found: 47
[00:00:07]: ---- isMouseOverText()
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ---- isMouseOverText(): False
[00:00:07]: ---- isMouseOverText()
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ------ Current mouse-over text: ""
[00:00:07]: ---- isMouseOverText(): False
[00:00:07]: ---- isMouseOverText()
[00:00:07]: ------ Current mouse-over text: "Mix potions Portable well"
[00:00:07]: ------ Found "ix potions" in mouse-over string: "Mix potions Portable well"
[00:00:07]: ---- isMouseOverText(): True
[00:00:07]: ---- Successfully mouse'd object
[00:00:07]: -- TRSMainscreen.findObject(): True
[00:00:07]: -- TRSBankscreen.__openChest()
[00:00:08]: ---- isMouseOverText()
[00:00:08]: ------ Current mouse-over text: "Use Bank chest"
[00:00:08]: ------ Found "Use Bank" in mouse-over string: "Use Bank chest"
[00:00:08]: ---- isMouseOverText(): True
[00:00:08]: ---- TRSChooseOption._select():
[00:00:08]: ------ Options found: [Use Bank chest, Collect Bank chest, Walk here, Examine Bank chest, Cancel]
[00:00:08]: ------ Found option "Use Bank" in "Use Bank chest"
[00:00:08]: ---- TRSChooseOption.select() result = true
[00:00:09]: ---- Succesfully opened the bank
[00:00:09]: -- TRSBankscreen.__openChest() result = true
[00:00:11]: -- isMouseOverText()
[00:00:11]: ---- Current mouse-over text: ""
[00:00:11]: ---- Current mouse-over text: ""
[00:00:11]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: ---- Current mouse-over text: ""
[00:00:12]: -- isMouseOverText(): False
[00:00:14]: -- isMouseOverText()
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: -- isMouseOverText(): False
[00:00:14]: -- isMouseOverText()
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:14]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: ---- Current mouse-over text: ""
[00:00:15]: -- isMouseOverText(): False
[00:00:17]: -- isMouseOverText()
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: -- isMouseOverText(): False
[00:00:17]: -- isMouseOverText()
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:17]: ---- Current mouse-over text: ""
[00:00:18]: ---- Current mouse-over text: ""
[00:00:18]: -- isMouseOverText(): False
[00:00:20]: -- isMouseOverText()
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: -- isMouseOverText(): False
[00:00:20]: -- isMouseOverText()
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: ---- Current mouse-over text: ""
[00:00:20]: -- isMouseOverText(): False
[00:00:23]: -- isMouseOverText()
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: -- isMouseOverText(): False
[00:00:23]: -- isMouseOverText()
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: ---- Current mouse-over text: ""
[00:00:23]: -- isMouseOverText(): False
[00:00:26]: -- isMouseOverText()
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: -- isMouseOverText(): False
[00:00:26]: -- isMouseOverText()
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: ---- Current mouse-over text: ""
[00:00:26]: -- isMouseOverText(): False
[00:00:28]: -- isMouseOverText()
[00:00:28]: ---- Current mouse-over text: ""
[00:00:28]: ---- Current mouse-over text: ""
[00:00:28]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: -- isMouseOverText(): False
[00:00:29]: -- isMouseOverText()
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: ---- Current mouse-over text: ""
[00:00:29]: -- isMouseOverText(): False
[00:00:31]: -- isMouseOverText()
[00:00:31]: ---- Current mouse-over text: ""
[00:00:31]: ---- Current mouse-over text: ""
[00:00:31]: ---- Current mouse-over text: ""
[00:00:31]: ---- Current mouse-over text: ""
[00:00:31]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: -- isMouseOverText(): False
[00:00:32]: -- isMouseOverText()
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: ---- Current mouse-over text: ""
[00:00:32]: -- isMouseOverText(): False
[00:00:34]: -- isMouseOverText()
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: -- isMouseOverText(): False
[00:00:34]: -- isMouseOverText()
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:34]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: ---- Current mouse-over text: ""
[00:00:35]: -- isMouseOverText(): False
[00:00:37]: -- isMouseOverText()
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: -- isMouseOverText(): False
[00:00:37]: -- isMouseOverText()
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:37]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: ---- Current mouse-over text: ""
[00:00:38]: -- isMouseOverText(): False
[00:00:40]: -- isMouseOverText()
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: -- isMouseOverText(): False
[00:00:40]: -- isMouseOverText()
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: ---- Current mouse-over text: ""
[00:00:40]: -- isMouseOverText(): False
[00:00:40]: -- TRSMainscreen.findObject()
[00:00:40]: ---- Colors found: 9128
[00:00:40]: ---- Possible objects found: 48
[00:00:41]: ---- isMouseOverText()
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ---- isMouseOverText(): False
[00:00:41]: ---- isMouseOverText()
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:41]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ---- isMouseOverText(): False
[00:00:42]: ---- isMouseOverText()
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ------ Current mouse-over text: ""
[00:00:42]: ---- isMouseOverText(): False
[00:00:42]: ---- isMouseOverText()
[00:00:42]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ---- isMouseOverText(): False
[00:00:43]: ---- isMouseOverText()
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ------ Current mouse-over text: ""
[00:00:43]: ---- isMouseOverText(): False
[00:00:44]: ---- isMouseOverText()
[00:00:44]: ------ Current mouse-over text: "Mix potions Portable well"
[00:00:44]: ------ Found "ix potions" in mouse-over string: "Mix potions Portable well"
[00:00:44]: ---- isMouseOverText(): True
[00:00:44]: ---- Successfully mouse'd object
[00:00:44]: -- TRSMainscreen.findObject(): True
[00:00:44]: -- isMouseOverText()
[00:00:44]: ---- Current mouse-over text: "Mix potions Portable well"
[00:00:44]: ---- Found "ix potions" in mouse-over string: "Mix potions Portable well"
[00:00:44]: -- isMouseOverText(): True