[First Script][RS3] Iron Power Miner
Credits:
The Mayor - Looked at his script for his detection method
Code:
Program Iron_Power_Miner;
{$Define SMART}
{$I SRL-6/SRL.Simba}
const
MIN_PIXEL_SHIFT = 100;// Minimum player pixel shift while mining (only adjust if necessary)
MINE_TIMER = 5000; // Max time to wait for rocks (only adjust if necessary)
var
oreDTM := DTMFromString('mlwAAAHicY2dgYOhhYmCoAeIOIJ4CxDOBuB+I24A4n5GBoQCI64C4AojzgDgZiFOB2FhODKibCSvmYsANGPFgKAAAg/AHfg==');
Procedure declarePlayers();
Begin
setLength(players, 1);
With players[0] Do
Begin
loginName := ''; //UserName
password := ''; //Password
isActive := True; //Leave true
isMember := False; //Is user a Member?
End;
currentPlayer := 0;
End;
Function isPlayerMining(minimumShift: Integer): Boolean;
var
playerShift: Integer;
Begin
playerShift := getPixelShiftAverage(mainscreen.playerBox, 150, 700);
result := playerShift > minimumShift;
ClearDebug;
writeLn('Status: Mining Iron');
End;
Function waitWhileMining(minimumShift, maximumTime: Integer): Boolean;
var
invCount: Integer;
oreTimer: TTimeMarker;
Begin
invCount := tabBackpack.count();
oreTimer.start();
wait(randomRange(500, 1500));
mouseOffClient(OFF_CLIENT_RANDOM);
Repeat
If tabBackpack.count() <> invCount Then
Begin
exit(true);
End;
Until (Not isPlayerMining(minimumShift)) Or (oreTimer.getTime() > maximumTime);
End;
Procedure mineRock();
var
X, Y: Integer;
Begin
If mainScreen.findObject(X, Y, 2242428, 13, ['ron ore rocks']) Then
Begin
ClearDebug;
writeLn('Status: Clicking Iron');
if waitWhileMining(MIN_PIXEL_SHIFT, MINE_TIMER + random(1000)) then
Begin
End;
End;
End;
Procedure dropOre();
var
x, y, i, dtmCount: Integer;
Begin
If findDTM(oreDTM, x, y, tabBackPack.getBounds()) Then
Begin
ClearDebug;
dtmCount := tabBackpack.countDTM(oreDTM);
writeLn('Status: Dropping ' + toStr(dtmCount));
For i := 1 To dtmCount Do
Repeat
sendKeys('1', randomRange(60, 120), randomRange(60, 120));
wait(randomRange(100, 200));
Until (tabBackPack.countDTM(oreDTM) = 0); // Spam 1 until there is no more ore?
End;
End;
Procedure setupPlayer();
Begin
exitTreasure();
mainScreen.setAngle(MS_ANGLE_HIGH);
minimap.setAngle(MM_DIRECTION_NORTH);
dropOre();
End;
Begin
disableSRLDebug := True;
setupSRL();
declarePlayers();
Repeat
If Not isLoggedIn() Then
Begin
players[currentPlayer].login();
setupPlayer();
End;
setupPlayer();
Repeat
mineRock();
Until(tabBackPack.isfull);
dropOre();
Until(false);
FreeDTM(oreDTM);
End.
Upcoming Plans:
More advanced antiban