Wow 1.9m per hour 
I've just taken a look through, pretty awesome for a first script
I'm sure if you continue to learn and refine your skills you will be sumbmitting a SRL Member application in no time! I've got a few suggestions, I hope you find them useful! From top to bottom:
In the openBank procedure, it looks like it needs a begin/end here.
Simba Code:
if (pinscreen.isOpen()) then
writeln('Pinscreen is open!'); // the if..then statement ends here
if (pinScreen.enter('1234')) then
writeln('Entered our bank pin!');
You don't want to even try and enter the pin when the pinScreen isn't even open:
Simba Code:
if (pinscreen.isOpen()) then
begin
writeln('Pinscreen is open!');
if (pinScreen.enter('1234')) then // now this will only execute if pinScreen is open
writeln('Entered our bank pin!');
end;
Can you see a major problem with this snippet (in your openBank() procedure):
Simba Code:
if bankScreen.isOpen then
bankTimer.start();
inc(LoadsDone);
exit;
It will increase the LoadsDone and exit the procedure even if the bankScreen is not open. You need a begin and end here too:
Simba Code:
if bankScreen.isOpen then
begin
bankTimer.start()
inc(LoadsDone);
exit;
end;
Let's take a look at makeItems:
Simba Code:
procedure makeItems();
begin
if (bankScreen.isOpen()) then
begin // eek watch those indents :p
bankScreen.clickButton(BANK_BUTTON_PRESET_2);
mouseBox(IntToBox(568, 309, 655, 385), MOUSE_MOVE, MOUSE_HUMAN); //bankScreen.Close() ??
tabBackpack.waitWhileLocked();
Wait (GaussRangeInt(150,350));
if isMouseOverText(['Use Clean'],) then //wouldn't the mouse be where the close button is?
begin // if so, isn't this unnecessary?
fastclick(MOUSE_LEFT); // (will always result false)
exit;
end;
tabBackpack.mouseSlot(1, MOUSE_MOVE);
if isMouseOverText(['Use Clean'],) then
begin
Wait (GaussRangeInt(150,350));
fastclick(MOUSE_LEFT);
exit;
end; // this here could easily be an else statement (since you have the opposite condition below)
if not isMouseOverText(['Use Clean'],) then
begin
Wait (GaussRangeInt(650,950));
end;
if isMouseOverText(['Use Clean'],) then // I see you repeat the same code twice
begin // Maybe put it in a loop and repeat it twice?
Wait (GaussRangeInt(150,350));
fastclick(MOUSE_LEFT);
exit;
end;
if not isMouseOverText(['Use Clean'],) then
begin
WriteLn('Out of herbs boss, takin a break!');
Players[CurrentPlayer].Logout;
TerminateScript;
end;
end;
end;
Maybe something like this:
Simba Code:
procedure makeItems();
var
i: integer;
begin
if bankScreen.isOpen() then
begin
bankScreen.clickButton(BANK_BUTTON_PRESET_2);
bankScreen.close()
tabBackpack.waitWhileLocked();
tabBackpack.mouseSlot(1, MOUSE_MOVE);
for i := 0 to 1 do // goes through this up to 2 times
if isMouseOverText(['Use Clean'],) then
begin
wait(gaussRangeInt(150,350));
fastclick(MOUSE_LEFT);
exit;
end else
wait (GaussRangeInt(650,950));
// if it looped twice and didn't exit, it will end up here (and terminate)
WriteLn('Out of herbs boss, takin a break!');
Players[CurrentPlayer].Logout;
TerminateScript;
end;
end;
And similar begin/end issues in this procedure too. It will fastClick and exit even if the overText isn't water.
Simba Code:
procedure onVial;
begin
tabBackpack.mouseSlot(16, MOUSE_MOVE);
if isMouseOverText(['water'],) then
Wait (GaussRangeInt(150,350)); //the if..then statement ends here
fastclick(MOUSE_LEFT);
exit;
begin
if not isMouseOverText(['water'],) then
tabBackpack.mouseSlot(15, MOUSE_MOVE); //the if...then statement ends here
if isMouseOverText(['water'],) then
fastclick(MOUSE_LEFT);
wait(6500);
WriteLn('Used the very last vial boss, takin a break!');
Players[CurrentPlayer].Logout;
TerminateScript;
exit;
end;
end;
Actually, in this procedure, because the second part is if the overText doesn't match, you could just use an else statement:
Simba Code:
procedure onVial();
begin
tabBackpack.mouseSlot(16, MOUSE_MOVE);
if isMouseOverText(['water'],) then
begin
wait(gaussRangeInt(150,350));
fastClick(MOUSE_LEFT);
exit;
end else
begin
tabBackpack.mouseSlot(15, MOUSE_MOVE);
if isMouseOverText(['water'],) then
begin
fastclick(MOUSE_LEFT);
wait(6500);
WriteLn('Used the very last vial boss, takin a break!');
Players[CurrentPlayer].Logout;
TerminateScript;
exit; // no real need to exit if the script it terminated :p
end;
end;
end;
Also, you gotta watch out for infinite loops like this. What happens if the production screen isn't gonna open. I know you have told it to break if you aren't logged in, but some sort or timer failsafe would also be useful.
Simba Code:
repeat
If Productionscreen.IsOpen Then
Break;
Wait(GaussRangeInt(0, 500));
If (Not IsLoggedIn) Then
Exit;
until Productionscreen.IsOpen
Last thing is, if you want it to log back in after the 6 hours (or if you lag out etc.), you can just put the login bit inside the repeat..until in your main loop. If you do this, it would be wise to put if not isLoggedIn then exit at the beginning of each procedure, so it quickly exits everything in your mainloop and ends up back at the top, at which point it will log in again.
Simba Code:
repeat
if not isLoggedIn() then
begin
//that login stuff, messages etc
minimap.setAngle(MM_DIRECTION_NORTH);
mainScreen.setAngle(MS_ANGLE_HIGH);
end;
clearDebug();
progressReport();
openBank();
itemsMade();
makeItems();
onVial();
mixIngredients();
Wait (7500);
Antiban;
Wait(GaussRangeInt(7500,10000)); //necessary?
FindNormalRandoms;
until(false);