Hi there, I've got your script yesterday but disliked most of the status messages, the waits before banking, that it sometimes can't find the banker and that it closes the bank window (I don't do that when I'm playing normal) so I edited your script, I've removed or edited most of the waits, added a debug mode, when it can't find the banker it now rotates random left or right and removed the close bank window code. So here you got the full code because there are a little bit too much edits.
//--------------GRAND EXCHANGE CLAY SOFTENER MASTER v0.06------------------\\
program GrandExchangeClaySoftener;
{$DEFINE SMART}
{$i srl/srl.simba}
var
timetime,p,q,w,count,npc,banker,banker2,banker3,banker4,z,a,tries,loc,x, y, fountainicon,bankicon,herbicon,clay, softclay, Claysoftened, BreaksTaken, BreakTimer: Integer;
activated,found,slower,banking: boolean;
aFound: Extended;
const
// Smart_Server := 10;
//Smart_Members := false;
DebugMode = False;
HowMany = 10500; //Type how many clays you would like to soften number has to be equally divided by 28
SMART_HIGHDETAIL = false;
LaggyComputer = False; // true = you're using a laggy computer. (This WILL lower profit/hr) // false = you are using a fast computer.
UseBreaks = False; //Do you want to take breaks?
SwitchWorld = False; //Do you want to switch worlds after the break?
BreakIn = 90; //How many minutes until you take a break?
BreakInRandom = 10; //How many minutes should the "BreakIn" time be varied by?
BreakFor = 7; //How many minutes will you break for?
BreakForRandom = 7; //How many minutes should the "BreakFor" time be varied by?
Members = False; // True = Members World. False = Free World.
Mouse_Speed = 17; // Mouse speed. Higher = Faster. (17 is default)
Version = '0.06';
NumbOfPlayers = 1; //How many players you are using.
StartPlayer = 0; //Player to start with. (0 = first character)
//The rest of your script goes here.
procedure DeclarePlayers;
var i:integer;
begin
NumberOfPlayers(NumbOfPlayers);
CurrentPlayer := StartPlayer;
for i := 0 to NumbOfPlayers-1 do
Players[i].BoxRewards := ['xp', 'oins', 'ostume', 'mote'];
// Make sure you set 'Booleans[0]' and 'Booleans[1]' accordingly!
with Players[0] do
begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := ''; //Bank Pin. (Leave blank if you do not have a bank pin.)
// Loc := 'vwb'; //Banking Location (See below) (Soul Wars banking is above)
Booleans[0] := false; // True = Pestle and Mortar. False = Knife
Booleans[1] := False; // Bank at Soul Wars? True = Soul Wars. False = Use 'Loc' bank
Active := True;
end;
//To use multiple accounts, remove the {}'s from the below coding.
//Make sure you adjust "NumbOfPlayers", which is found in the constants! (aka - "Const")
{ with Players[1] do
begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := ''; //Bank Pin. (Leave blank if you do not have a bank pin.)
Loc := 'vwb'; //Banking Location (See below) (Soul Wars banking is above)
Booleans[0] := True; // True = Pestle and Mortar. False = Knife
Booleans[1] := False; // Bank at Soul Wars? True = Soul Wars. False = Use 'Loc' bank
Active := true;
end; }
{ with Players[2] do
begin
Name := ''; //Player username.
Pass := ''; //Player password.
Pin := ''; //Bank Pin. (Leave blank if you do not have a bank pin.)
Loc := 'vwb'; //Banking Location (See below) (Soul Wars banking is above)
Booleans[0] := True; // True = Pestle and Mortar. False = Knife
Booleans[1] := False; // Bank at Soul Wars? True = Soul Wars. False = Use 'Loc' bank
Active := true;
end; }
end;
procedure AntiRandoms;
begin
FindNormalRandoms;
LampSkill := 'prayer' //This can be changed to any skill!
end;
procedure Debug(S: string);
begin
if DebugMode then
Writeln(S)
else
Debugln(S);
Status(S);
end;
////////////////////////////////////////////////////////////////////////////////
// No Editing is required below this point! //
////////////////////////////////////////////////////////////////////////////////
Procedure Antiban;
Begin
Case Random (175) of
0..18: Begin SleepAndMoveMouse(5000 + Random(750)); End;
19..24: Begin GameTab(tab_Inv) ExamineInv; GameTab(tab_Inv); SleepAndMoveMouse(2500 + Random(553)); End;
25..42: Begin RandomAngle(1); End;
43..48: Begin GameTab(Tab_Stats); Wait(3000 + Random(400)); GameTab(tab_Inv); SleepAndMoveMouse(2550 + Random(658)); End;
49..54: Begin GameTab(tab_Stats) HoverSkill('random', False); GameTab(tab_Inv); SleepAndMoveMouse(2200 + Random(545)); End;
//55..75: Begin MakeCompass(Random(361)); End;
End;
End;
procedure InitDTMs;
begin
banker := DTMFromString('mrAAAAHic42BgYPBnYmBwAOJYIA4EYl8gDgdiLyAOBmJLoBpzILYHYh0gVobyjYFYH4j//5di8I3RZkhL8GB48fsHg0eUHMPv/5xgfO0WJwM/UA0+zEgAwwAADEUSAg==');
banker2 := DTMFromString('mlwAAAHicY2dgYHBgYmAwBGJfILYGYmcg9gDiWCB2AskDsRsQWwGxKRDbArEzEP/+z8kQHKnDkBnrBWYjY36gPC7MiAdDAQByiRAV');
banker3 := DTMFromString('mggAAAHicY2NgYPBmYmBwB2I/IA4CYlsgTgJiZ6CcNRBbALEDENtC8bcnEPzoAgQHx+gy5CR4M/AD5bBhRhwYAgDe2wy/');
banker4 := DTMFromString('mQwAAAHicY2ZgYIhlYmCoBmIHILYG8h2A2BGIH/1nYHj7n4lBNUqQgR/Ih2FGJAwEAAXOBm0=');
npc := DTMFromString('mlwAAAHicY2dgYPgDxT+BmIGRgeEbAwT/B+JAIPYDYn8oG0QHQcWm1IYwWBjLg3FlRTFDTU05GIPY/EB5XJgRD4YCAIrIEKI=');
herbicon := DTMFromString('mlwAAAHicY2dgYHBhY2CwBmInIHYGYk8gtgFidyD+C5T/DcRfgZiZkYHhD5BmANLfgZS4mzyEgwXzM+AG2HVAMBQAAFSeB38=');
fountainicon := DTMFromString('mwQAAAHic42RgYHjIBsE3ofRzIH4GxHeg9F0gjgOqCwPiWCBOYYDwI4E4GYgTgTgciPlsrwNJRryYn4EwwG8CBMMBANAtDLE=');
bankicon := DTMFromString('mwQAAAHic42RgYDjGxsBwFoj3s0HYIHwIiE8B8WkgPgDEngwI7ATEAUDsDMT+QOwCxL5A/O6SCpBkxIv5GQgD/CZAMBwAACO6C8k=');
clay := DTMFromString('mbQAAAHicY2VgYHBgYmBwBWILJgjbF4hfAMXvAvFzIH4DxI+BuKPIF0gyoWB+BkzAiAWDAQAyqAc4');
softclay := DTMFromString('mwQAAAHic42RgYDjABMH7gXgzEJ8F4lNAvB2IT0LpmYwMDH1AvBiI5wDxDCCeAMQLgXgeEE8C4nAHXqBpTHgxPwNhwEgEhgMA3tANEA==');
end;
procedure FreeDTMs1;
begin
FreeDTM(clay);
FreeDTM(softclay);
FreeDTM(banker);
FreeDTM(banker2);
FreeDTM(banker3);
FreeDTM(bankicon);
FreeDTM(fountainicon);
FreeDTM(npc);
end;
procedure Proggy;
begin
Writeln('//////////////////Grand Exchange Clay Softener\\\\\\\\\\\\\\\\\\');
Writeln('///////////////////////By Leetsxc\\\\\\\\\\\\\\\\\\\\\\\\');
Writeln('Run Time: ' + TimeRunning);
Writeln('Total Loads: ' + IntToStr(Claysoftened));
Writeln('Soft Clays made: ' + IntToStr(Claysoftened*28));
WriteLn('Total Profit made: ' + IntToStr(Claysoftened*28*55));
WriteLn('Breaks Taken: ' + IntToStr(BreaksTaken));
Writeln('//////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\');
end;
procedure whichclayy;
var
whichclay: integer;
begin
whichclay:=0;
whichclay:=random(28);
if(whichclay=0)then mmouse(578,229,4,4);
if(whichclay=1)then mmouse(578,229,4,4);
if(whichclay=2)then mmouse(620,229,4,4);
if(whichclay=3)then mmouse(661, 230,4,4);
if(whichclay=4)then mmouse(704, 231,4,4);
if(whichclay=5)then mmouse(578, 267,4,4);
if(whichclay=6)then mmouse(620, 267,4,4);
if(whichclay=7)then mmouse(662, 268,4,4);
if(whichclay=8)then mmouse(704, 267,4,4);
if(whichclay=9)then mmouse(577, 303,4,4);
if(whichclay=10)then mmouse(622, 304,4,4);
if(whichclay=11)then mmouse(664, 303,4,4);
if(whichclay=12)then mmouse(706, 302,4,4);
if(whichclay=13)then mmouse(579, 338,4,4);
if(whichclay=14)then mmouse(621, 338,4,4);
if(whichclay=15)then mmouse(663, 338,4,4);
if(whichclay=16)then mmouse(705, 339,4,4);
if(whichclay=17)then mmouse(577, 375,4,4);
if(whichclay=18)then mmouse(621, 373,4,4);
if(whichclay=19)then mmouse(662, 374,4,4);
if(whichclay=20)then mmouse(705, 375,4,4);
if(whichclay=21)then mmouse(579, 411,4,4);
if(whichclay=22)then mmouse(620, 412,4,4);
if(whichclay=23)then mmouse(662, 412,4,4);
if(whichclay=24)then mmouse(705, 411,4,4);
if(whichclay=25)then mmouse(578, 447,4,4);
if(whichclay=26)then mmouse(621, 446,4,4);
if(whichclay=27)then mmouse(664, 448,4,4);
if(whichclay=28)then mmouse(705, 446,4,4);
end;
procedure WithdrawClay;
begin
if(activated=false)then
begin
activated:=true;
if not LoggedIn then
Exit;
AntiRandoms;
banking:=true;
if(finddtm(clay,x,y,554,208,737,464))then banking:=false;
if(banking=true)then
begin
whichclayy;
getmousepos(x,y);
sleep(200+random(300));
smartclickmouse(x,y,false);
sleep(200+random(300));
chooseoption('Deposit-All');
Wait(300 + Random(200));
mmouse(405,110,8,8);
getmousepos(x,y);
sleep(300+random(300));
smartclickmouse(x,y,false);
sleep(300+random(300));
chooseoption('Withdraw-All');
sleep(200+random(300));
q:=0;
q:=random(6);
//if(not(q=3))then //1 out of 6 times chance to not click x on bank to exit it
//begin
//mmouse(489,34,4,4);
//getmousepos(x,y);
//sleep(200+random(300));
//smartclickmouse(x,y,true);
//end;
banking:=false;
end;
end;
end;
procedure findherbicon;
begin
if(activated=false)then
begin
activated:=true;
count:=0;
tries:=0;
repeat
tries:=tries+1;
if(findDTMRotatedSE(herbicon,x,y,570,22,696,147,-Pi, Pi, Pi/30, aFound))then
begin
tries:=3;
writeln('Found Herb icon!');
mmouse(x,y,15,15);
getmousepos(x,y);
sleep(random(300));
smartclickmouse(x,y,true);
end;
sleep(300);
until(tries=3);
tries:=0;
repeat
tries:=tries+1;
sleep(70+random(100));
if(findDTMRotatedSE(herbicon,x,y,607,65,647,105,-Pi, Pi, Pi/30, aFound))then
begin
tries:=60;
writeln('Arrived at destination!');
end;
until(tries=60);
end;
end;
procedure findbankguy;
begin
if(activated=false)then
begin
activated:=true;
tries:=0;
wait(500);
repeat
tries:=tries+1;
found:=false;
if(findDTMRotatedSE(banker,x,y,535,3,711,167,-Pi, Pi, Pi/30, aFound))then found:=true;
if(found=false)then
begin
if(findDTMRotatedSE(banker2,x,y,535,3,711,167,-Pi, Pi, Pi/30, aFound))then found:=true;
end;
if(found=false)then
begin
if(findDTMRotatedSE(banker3,x,y,535,3,711,167,-Pi, Pi, Pi/30, aFound))then found:=true;
end;
if(found=false)then
begin
if(findDTMRotatedSE(banker4,x,y,535,3,711,167,-Pi, Pi, Pi/30, aFound))then found:=true;
end;
if(found=true)then
begin
tries:=3;
writeln('Found banker!');
mmouse(x,y+2,3,1);
getmousepos(x,y);
sleep(random(400));
smartclickmouse(x,y,true);
sleep(1400);
//sleep(random(1000));
if(slower=true)then sleep(2000);
smartholdkey(40);
end;
until(tries=3);
count:=0;
repeat
tries:=0;
count:=count+1;
z:=0;
repeat
sleep(100);
if(random(2) >= 1)then
begin
smartholdkey(37);
sleep(100);
smartreleasekey(37);
end else
begin
smartholdkey(39);
sleep(100);
smartreleasekey(39);
end;
tries:=tries+1;
if(finddtmrotatedSE(npc,x,y,5,5,514,336,-Pi, Pi, Pi/30, aFound))then
begin
writeln('Found banker in under 1.5 seconds of camera level change');
tries:=15;
z:=1;
end;
until(tries=15);
smartreleasekey(40);
if(z=1)then
begin
mmouse(x,y,4,4);
getmousepos(x,y);
sleep(100+random(300));
smartclickmouse(x,y,false);
sleep(500+random(300));
if(chooseoption('Bank Banker'))then
begin
tries:=0;
repeat
sleep(100);
tries:=tries+1;
if(findcolortolerance(x,y,4106994,194,27,322,41,10))then
begin
count:=5;
activated:=false;
withdrawclay;
tries:=25;
z:=0;
end;
until(tries=25);
end;
sleep(100);
end;
until(count=5);
//if(z=1)then beginfindbankguy;
end;
end;
procedure fountainfinder;
//var
//fountain: integer;
begin
if(activated=false)then
begin
activated:=true;
if(findcolortolerance(x,y,4106994,194,27,322,41,10))then findherbicon;
if(banking=false)then
begin;
//fountain := DTMFromString('mWAAAAHicY2FgYIhmZGDIBOIsIC4C4gNAsb1AvAWIjwNxWc9ChvKepQwVfcsYKvuWM/ADxZAxIxoGAQBqeAuG');
Debug('Fountain finder method activated!');
tries:=0;
//sleep(1000);
q:=0;
q:=random(4);
if(q=2)then
begin
smartholdkey(38);
sleep(500+random(1000));
smartreleasekey(38);
end;
repeat
tries:=tries+1;
if(findcolortolerance(x,y,10981757,149,59,451,318,15))then
begin
tries:=3;
if(not(finddtm(softclay,q,w,555, 203,731, 464)))then whichclayy;
if(finddtm(softclay,q,w,555, 203,731, 464))then
begin
if(finddtm(clay,q,w,555, 203,731, 464))then mmouse(q,w,5,5);
end;
getmousepos(z,a);
sleep(100);
sleep(random(100));
smartclickmouse(z,a,true);
sleep(random(300));
if(findcolortolerance(x,y,10981757,149,59,451,318,15))then
begin
mmouse(x,y,8,8);
getmousepos(x,y);
sleep(random(200));
smartclickmouse(x,y,true);
end;
end;
until(tries=3);
tries:=0;
z:=0;
repeat
tries:=tries+1;
sleep(300);
if(findcolortolerance(x,y,734793,248,411,264,423,15))then
begin
mmouse(261,430,20,25);
getmousepos(x,y);
sleep(100+random(100));
smartclickmouse(x,y,true);
writeln('Sucessfully Clicked clay on fountain.. clicking make soft clay button');
tries:=10;
antiban;
z:=1;
end;
until(tries=10);
if(z=1)then
begin
repeat
tries:=tries+1;
sleep(400);
if(finddtm(softclay,x,y,688,429,725,461))then
begin
tries:=100;
writeln('Completed making the soft clay');
claysoftened:=claysoftened+1;
if(claysoftened*28 >= HowMany)then
begin
writeln('Finished making all of your clays!');
terminatescript;
end;
proggy;
banking:=true;
end;
until(tries=100);
findherbicon;
findbankguy;
end;
end;
if(not(count=3))then
begin
if(not(z=1))then
begin
sleep(2000);
count:=count+1;
activated:=false;
fountainfinder;
end;
end;
if(count=3)then
begin
activated:=false;
findherbicon;
activated:=true;
count:=0;
end;
end;
end;
procedure intelligence;
{var
region1x,region1y,region2x,region2y,region3x,region3y,region4x,region4y,region1x2,region1y2,region2x2,region2y2,region3x2,region3y2,region4x2,region4y2:integer; }
begin
//Their are 4 regions so far that are layers of distance around minimap player icon, these will be used to find dtms in to find out locations
activated:=false;
if not LoggedIn then
Exit;
AntiRandoms;
if(not(findcolortolerance(x,y,6740459,724,110,743,110,15)))then
begin
writeln('Running energy has run out..');
slower:=true;
if(not(findcolortolerance(x,y,255,740,105,759,120,15)))then
begin
slower:=false;
writeln('Running energy has reached a adequate level of regeneration re-activating!');
mmouse(723,108,5,5);
sleep(100+random(200));
getmousepos(x,y);
smartclickmouse(x,y,true);
end;
end;
if(finddtm(softclay,x,y,687,433,726,461))then
begin
Debug('Found soft clay in last icon so now banking is true');
banking:=true;
end;
if(not(finddtm(softclay,x,y,687,433,726,461)))then
begin
banking:=false;
end;
//findherbicon;
if(findDTMRotatedSE(herbicon,x,y,607,65,647,105,-Pi, Pi, Pi/30, aFound))then
begin
if(banking=true)then
begin
Debug('You are close to herb icon and need to go to the bank');
findbankguy;
intelligence;
end;
if(banking=false)then
begin
Debug('You are close to herb icon and need to go to the fountain');
tries:=0;
repeat
tries:=tries+1;
sleep(200);
if(finddtm(fountainicon,x,y,561,85,703,156))then
begin
writeln('Clicking fountain icon out of radius bounds');
tries:=3;
mmouse(x,y,5,5);
getmousepos(x,y);
sleep(200+random(100));
smartclickmouse(x,y,true)
if(slower=true)then sleep(6000);
end;
until(tries=3);
tries:=0;
repeat
sleep(50);
tries:=tries+1;
if(findcolortolerance(x,y,10981757,159,69,441,308,15))then tries:=200;
until(tries=200);
sleep(1500)
if(slower=true)then sleep(1000);
fountainfinder;
intelligence;
end;
end;
Debug('Determining location with Minimap DTM distance to player map icon recognition');
{ //Regions to compare distance to 1753, 88 that is the white square dot that represents player
region1x:=679; //10CORDS around player
region1y:=78;
region1x2:=699;
region1y2:=98;
region2x:=669; //20 Cords could this work better if it was split into 5 smaller sections around the 10 cord area 2.5C ea
region2y:=68;
region2x2:=709;
region2y2:=108;
region3x:=659; //30 cords
region3y:=58;
region3x2:=719;
region3y2:=118;
region4x:=649; //40 cord radius
region4y:=48;
region4x2:=729;
region4y2:=128; }
loc:=0;
if(findDTMRotatedSE(bankicon,x,y,617,75,637,95,-Pi, Pi, Pi/30, aFound))then loc:=1;
if(not(loc=1))then
begin
if(findDTMRotatedSE(bankicon,x,y,607,65,647,105,-Pi, Pi, Pi/30, aFound))then loc:=2;
end;
if(not(loc=2))then
begin
if(findDTMRotatedSE(bankicon,x,y,597,55,657,115,-Pi, Pi, Pi/30, aFound))then loc:=3;
end;
if(not(loc=3))then
begin
if(findDTMRotatedSE(bankicon,x,y,587,45,667,125,-Pi, Pi, Pi/30, aFound))then loc:=4;
end;
if(not(loc=0))then
begin
Debug('Found the bank icon in mini map player icon radius zone ' + IntToStr(loc));
Debug('Radius zone 1 is 10 coords around your white square, 2 is 20, 3 is 30 and 4 is 40');
if(banking=true)then
begin
Debug('You are close to a bank and need to bank your softclays activating findbank method!');
findbankguy;
end;
if(banking=false)then findherbicon;
end;
if(loc=0)then
begin
writeln('Bank icon was not found in any of the radius zones so we will now search for the fountain icon as you are most likely at the fountain due to an error after making soft clay');
if(findDTMRotatedSE(fountainicon,x,y,613,72,640,98,-Pi, Pi, Pi/30, aFound))then loc:=1;
if(not(loc=1))then
begin
if(findDTMRotatedSE(fountainicon,x,y,607,65,647,105,-Pi, Pi, Pi/30, aFound))then loc:=2;
end;
if(not(loc=2))then
begin
if(findDTMRotatedSE(fountainicon,x,y,597,55,657,115,-Pi, Pi, Pi/30, aFound))then loc:=3;
end;
if(not(loc=3))then
begin
if(findDTMRotatedSE(fountainicon,x,y,587,45,667,125,-Pi, Pi, Pi/30, aFound))then loc:=4;
end;
if(loc=0)then findherbicon;
if(not(loc=0))then
begin
Debug('Fountain icon found in radius zone' + inttostr(loc));
Debug('You were closest to the fountain artifical intelligence was correct');
if(banking=true)then
begin
Debug('You are near the fountain and need to bank');
Debug('activating findherbicon procedure! to walk close to bank icon!');
findherbicon;
end;
Debug('Lets just do a check to see if you have any remainding clay left..');
if(finddtm(clay,z,a,555, 203,731, 464))then
begin
Debug('O shit we havnt finished making soft clay yet and most likely had an error, lets call the fountain fider method..');
activated:=false;
fountainfinder;
end;
end;
end;
end;
procedure TakeBreaks;
begin
if not LoggedIn then
Exit;
begin
if (GetSystemTime > BreakTimer) then
begin
WriteLn('Taking a break.');
Logout;
Wait(BreakFor * 60000 + Random(BreakForRandom * 60000));
WriteLn('Logging back in.');
Case (SwitchWorld) of
True: if LoginPlayerToLob then
ChangeWorld(RandomWorld(True, False));
False: LoginPlayer;
end;
Wait(2000);
BreaksTaken:=BreaksTaken+1;
BreakTimer := GetSystemTime + (BreakIn * 60000 + Random(BreakInRandom * 60000));
end;
end;
end;
begin
timetime:=150000;
p:=0;
claysoftened:=0;
Smart_Server := 106;
Smart_Members := Members;
SetupSRL;
DeclarePlayers;
MouseSpeed := Mouse_Speed;
LoginPlayer;
Wait(2000);
GameTab(tab_Inv);
BreakTimer := GetSystemTime + (BreakIn * 60000 + Random(BreakInRandom * 60000));
InitDTMs
repeat
repeat
intelligence;
Proggy;
if (UseBreaks) then
TakeBreaks;
until (not Loggedin);
NextPlayer(Players[CurrentPlayer].Active);
Wait(2000);
until (false);
FreeDTMs1;
end.