The fix for that error is in the Github repo but for some reason hasn't made its way to the auto updater yet
Quick fix: replace your production.simba with this (right-click and save link as) http://puu.sh/dr1lc.simba
Also it's a good idea to put your code in Simba tags like so
Simba Code:
program ArtisanSmelter;
{$DEFINE SMART}
{$I SRL-6/SRL.Simba}
procedure withDraw();
var
draw: TBox; //declare TBox variable
begin
draw := intToBox(273, 149, 303, 170); //top left, bottom right points
mouseBox(draw, MOUSE_LEFT); //left click
wait(randomRange(3500, 4441));
end;
procedure waiiit();
begin wait(randomRange(3500, 4441));
end;
procedure acceptButton();
var
x, y: integer;
begin
wait(randomRange(1113,2546));
while not productionScreen.isOpen() do wait(1);
KeyDown(VK_SPACE);
wait(randomRange(123,936));
KeyUp(VK_SPACE);
sleepAndMoveMouse(1000 + random(2000));
mouseOffClient(OFF_CLIENT_RANDOM);
wait(randomRange(168325, 198512));
end;
procedure anvil();
var
settingsButton: TBox; //declare TBox variable
begin
settingsButton := intToBox(455, 193, 463, 210); //top left, bottom right points
mouseBox(settingsButton, MOUSE_LEFT); //left click
wait(randomRange(3500, 4441));
end;
procedure waitSmith();
begin
wait(randomRange(126000, 130000));
end;
procedure waitSmithtwo();
begin
wait(randomRange(136000, 140000));
end;
procedure deposit();
var
settingsButton: TBox; //declare TBox variable
begin
settingsButton := intToBox(248, 149, 268, 168); //top left, bottom right points
mouseBox(settingsButton, MOUSE_LEFT); //left click
wait(randomRange(3500, 4441));
end;
procedure walk();
var
settingsButton: TBox; //declare TBox variable
begin
settingsButton := intToBox(163, 183, 177, 197); //top left, bottom right points
mouseBox(settingsButton, MOUSE_LEFT); //left click
wait(randomRange(3500, 4441));
end;
procedure antiban;
var
i: integer;
begin
i := random(2000);
case i of
1..3: randomRClickItem();
4..5: sleepAndMoveMouse(randomrange(1000, 1500));
6..7: wait(randomrange(8000, 12000));
8..10: randomCameraAngle(MS_ANGLE_HIGH);
11..15: smallRandomMouse();
16..18: mouseOffClient(OFF_CLIENT_TOP);
19..21: mouseOffClient(OFF_CLIENT_RANDOM);
end;
end;
begin
clearDebug();
setupSRL();
repeat // these 3 procedures will repeat forever
withDraw();
acceptButton();
anvil();
waiiit();
acceptButton();
waitSmith();
antiban();
waitSmithtwo();
deposit();
walk();
Withdraw();
until false;
end
Congrats on the release
***
As far as critique, the main things I see are your use of Mouseboxes and waits, and your lack of use of mouseovertext.
withDraw(), anvil(), deposit(), walk(), are all procedures that use mouseboxes when they could be using other things.
1. For withDraw(), I'm not quite sure what you're clicking, but a DTM or BMP would work more effectively than a mousebox. Even if you were to just use some sort of verification that the interface (or whatever) is opened before clicking blindly. Does the button display text when you mouse over it? If so, you may want to look into isMouseOverText().
2. anvil() clicks an anvil, I assume? Mouseboxes are very bad for clicking game objects, since some of them move around, and the camera angle isn't always constant. Look into mainScreen.findObject()
3. deposit() - I hope this isn't interacting with the bank. I don't know much about the artisan workshop but I'm pretty sure you have to deposit ores into it to receive xp. so I'll assume that's what this does. Again, a DTM or BMP along with mouseovertext checks if possible would make this work like a dream.
4. walk() - Uh-oh. Blind clicking to walk places is a big no-no. Does this click the minimap or the mainscreen? Both are less than ideal. Look into SPS (SRL Positioning system), it's the best solution for walking.
Now for waits. waiiit(), waitSmith(), and waitSmithTwo() all use randomRange wait times. Randomrange is good, but still pretty static. You could mix it up a bit with something called a conditional wait.
It'd go a bit like this:
Simba Code:
procedure waitProgressScreen();
var
t:TTimeMarker;
begin
t.start();
repeat
wait(500);
if (not progressScreen.isOpen()) then
exit;
until (t.getTime() > 50000); //50 second timeout - set it higher if you need
end; //basically a failsafe so we don't get stuck in a loop
Don't hesitate to contact me with any question