Code:
program dhidetanner;
{$DEFINE SMART}
{$i SRL\OSR.simba}
{$i RSwalker\Walker.simba}
// VERSION 0.1
const
//////////////// SETUP ///////////////////////
LOGIN_NAME = ''; //Username/Email
LOGIN_PASS = ''; //Password
RS_WORLD = -1; //Desired World (-1 = Random)
IS_MEMBER = true; //True if your player is a Member
TANTYPE = 'red'; // currently available: red,cow,green
hideprice = 1520; // price of hides
leatherprice = 1687; // price of leather
//////////////////////////////////////////////
cowcolor = 11382457;
greencolor = 877577;
redcolor = 595300;
var
t,banked,runs,csx,csy,invcol,margin,profit:integer;
bankname:string;
Walk: TRSWalker;
Antiban: TAntiban;
goHide,goBank,shopmenu,craftable:TPointArray;
procedure proggy;
begin
ClearDebug;
Writeln('Running for: ',srl.TimeRunning);
Writeln('Made ',IntToStr(runs),' runs so far');
Writeln('Making a total of ',IntToStr(profit),' profit crafting ',TANTYPE,' dhide leather.');
end;
procedure setupAntiban();
begin
Antiban.Init(SKILL_TOTAL, 4);
Antiban.AddTask([@Antiban.LoseFocus, ONE_MINUTE*6, 0.15]);
Antiban.AddTask([@Antiban.HoverPlayers, ONE_MINUTE*8, 0.15]);
Antiban.AddTask([@Antiban.CheckStats, ONE_MINUTE*13, 0.15]);
Antiban.AddTask([@Antiban.DoMiscStuff, ONE_MINUTE*40, 0.15]);
Antiban.AddTask([@Antiban.RandomCompass, ONE_MINUTE*45, 0.15]);
Antiban.AddTask([@Antiban.VeryShortBreak,ONE_MINUTE*50, 0.15]);
Antiban.AddBreak([35 * ONE_MINUTE, 05 * ONE_MINUTE, 0.05]);
Antiban.AddBreak([02 * ONE_HOUR, 15 * ONE_MINUTE, 0.20]);
Antiban.AddBreak([05 * ONE_HOUR, 45 * ONE_MINUTE, 0.85]);
Antiban.AddBreak([16 * ONE_HOUR, 08 * ONE_HOUR, 0.99]);
writeln('Setup antibans');
end;
Procedure myAntiban;
begin
if not SRL.isLoggedIn() then
Exit;
SRL.DismissRandom(); //Dismiss random events if any are found
Antiban.DoAntiban(); //Do the antiban
end;
procedure declarePlayers();
begin
with Players.New()^ do
begin
LoginName := LOGIN_NAME;
Password := LOGIN_PASS;
IsActive := True;
IsMember := IS_MEMBER;
World := RS_WORLD;
end;
Players.SetCurrent(0);
end;
procedure walkTo(path: TPointArray);
begin
myAntiBan;
Walk.WalkPath(path,4,false); //Walk our path passed to the procedure
end;
procedure walkTanner;
var
TPA:TPointArray;
begin
proggy;
myAntiBan;
if not srl.FindColors(TPA,CTS2(3563197,11), Box(4,4,515,335))>0 then
begin
walkTo(goHide);
if not Inventory.IsOpen then
Inventory.Open;
//writeln('yay got at leatherman');
end else
//writeln('already at ellis so not walking lul');
end;
procedure bankLeather;
begin
proggy;
myAntiBan;
//writeln('Banking');
BankScreen.Open(blAlKharid,5);
if BankScreen.IsOpen(5000) then
begin
wait(randomRange(150,500));
BankScreen.DepositItem(2,true);
wait(200+random(800));
if not BankScreen.Withdraw(0,-1,[bankname]) then
begin
wait(400+random(1000));
if not BankScreen.Withdraw(0,-1,[bankname]) then
TerminateScript;
end
wait(randomRange(170,600));
Inc(runs);
Profit := margin*27*runs;
//writeln('Banked.');
wait(300+random(1000));
t:=0;
walkTanner;
end
end;
procedure walkBanker;
begin
proggy;
myAntiBan;
walkTo(goBank);
//writeln('yay got at bankman');
if not Inventory.IsOpen then
Inventory.Open;
bankLeather;
end;
procedure makeLeather;
begin
proggy;
if srl.FindColors(shopmenu,CTS2(16304128,3),Box(15,30,500,320))>0 then
begin
Mouse.Move(csx+random(-15,15),csy+random(-20,20));
wait(90+random(300));
ChooseOption.Select('All');
wait(300+random(700));
walkBanker;
end else
//writeln('shoppa not open');
end;
procedure findEllis;
var
movetimer:integer;
ellis:TPointArray;
Elbox:T2DPointArray;
begin
proggy;
myAntiBan;
if srl.FindColors(ellis,CTS2(3563197,11,0.01,0.83), Box(4,4,515,335))>0 then
begin
//writeln('Found ',Length(Ellis),' colors of Ellis');
Elbox := Ellis.Cluster(2);
Elbox.FilterSize(3,25);
ElBox.SortByIndex(Mainscreen.GetMiddle);
{IFDEF SMART}
Smart.Image.DrawATPA(Elbox);
{ENDIF}
wait(5+random(5));
for Ellis in Elbox do
begin
Mouse.Move(Ellis[Random(Length(Ellis))]);
wait(10+random(60));
if ChooseOption.Select('Trade') then
begin
wait(130+random(200));
if not(srl.FindColors(shopmenu,CTS2(16304128,3),Box(15,30,500,320))>0) then
begin
repeat
Inc(movetimer);
wait(100+random(100));
minimap.WaitPlayerMoving();
until (srl.FindColors(shopmenu,CTS2(16304128,3),Box(15,30,500,320))>0)
end
Break;
end else
break;
end
end
{IFDEF SMART}
Smart.Image.Clear;
{ENDIF}
movetimer:=0;
end
function setUp(): boolean;
begin
proggy;
{IFDEF SMART}
Smart.EnableDrawing := True;
{ENDIF}
SRL.Setup([soDebugAntiban]);
SRL.Options := [soDebugAntiban];
AddOnTerminate(@smart.Free);
setupAntiban;
if TANTYPE = 'cow' then
begin
bankname := 'Cowhide';
invcol := cowcolor;
csx := 100;
csy := 120;
margin := leatherprice-hideprice-1;
end else
if TANTYPE = 'green' then
begin
bankname := 'Green dragonhide';
invcol := greencolor;
csx := 100;
csy := 240;
margin := leatherprice-hideprice-20;
end else
if TANTYPE = 'red' then
begin
bankname := 'Red dragonhide';
invcol := redcolor;
csx := 320;
csy := 240;
margin := leatherprice-hideprice-20;
end
Walk.Init('kharid.png',-1);
goHide:= [[278, 703], [314, 661], [300, 611]];
goBank:= [[300, 611], [311, 665], [278, 703]];
declarePlayers();
if (not SRL.isLoggedIn) then
begin
Players.LoginCurrent();
MainScreen.setAngle(true);
end;
Result:=True;
end;
// MAIN LOOP
begin
setUp();
t:=0;
runs:=0;
banked:=0;
if srl.FindColors(craftable,CTS2(invcol,0), Box(550,200,725,465))>0 then
walkTanner;
repeat
while srl.FindColors(craftable,CTS2(invcol,0), Box(550,200,725,465))>0 do
begin
Inc(t);
findEllis;
makeLeather;
writeln('Tries: ',IntToStr(t));
if t>50 then
walkTanner;
if t>100 then
TerminateScript;
end
if not srl.FindColors(craftable,CTS2(invcol,0), Box(550,200,725,465))>0 then
walkBanker;
proggy;
t:=0;
until(false)
end.