Simba Code:
program R4_ManThief;
{$i SRL/SRL/misc/smart.simba}
{$i SRL/SRL.simba}
{$i sps/sps.simba}
{$i SRL/SRL/Misc/stats.simba}
{$i srl/srl/misc/paintsmart.simba}
//{$i VVForm.simba}
{Welcome to R4nd0m's Man Thief, this script steals from men/women giving
you coins and XP!.
Features:
Death Walk
Anti-Ban/Anti-Random
Eating (50%-) Any food (Just keep in inventory)
SRL Stats
An Interesting Paint/Painted Mouse
Human like Mouse moments (Thanks Flight)
Progress Reports}
Var
man, Location, TimeLast, x, y :Integer;
Lumbridge, Stairs: TPoint;
WalkHome: TPointArray;
CStatus: String;
Const
Version = 3; //Please do not change.
//SRL info HERE!
SRLStats_Username = '';
SRLStats_Password = '';
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0; // This is the player to start with
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username;
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
end;
Procedure CheckStats;
begin
if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
begin
SetupSRLStats(201,'Anonymous','anon1337');
Exit;
end;
end;
procedure ClearSmartCanvas;
{$IFDEF SMART}
var
drawing : TBitmap;
begin
drawing := TBitmap.Create;
drawing.canvas.handle := SmartGetDebugDC;
ClearRSCanvas(drawing.canvas);
try
FreeBitmap(drawing);
except
end;
{$ELSE}
begin
{$ENDIF}
end;
Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, B, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], SmallChars, H);
for B := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,8388736);
FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;
Procedure Painting;
begin
PrintOnSmart(['R4_ManThief','-----------', 'Status:', CStatus],
Point(40, 50),60928);
end;
procedure ProgressReport;
begin
ClearDebug;
WriteLn('[R4nd0m] ManThief');
WriteLn('===================================================');
WriteLn('===================================================');
WriteLn('Running for: ' + TimeRunning);
WriteLn('Times PickPocketed: ' + IntToStr(man));
Writeln('XP gained:'+ IntToStr(man*8));
WriteLn('===================================================');
WriteLn('===================================================');
end;
//By Benland100, modified to paint mouse movements
procedure WindMouse2(xs, ys, xe, ye, gravity, wind, minWait, maxWait, maxStep, targetArea: extended);
var
veloX, veloY, windX, windY, veloMag, dist, randomDist, lastDist, step: extended;
lastX, lastY: integer;
sqrt2, sqrt3, sqrt5: extended;
begin
sqrt2:= sqrt(2);
sqrt3:= sqrt(3);
sqrt5:= sqrt(5);
while hypot(xs - xe, ys - ye) > 1 do
begin
dist:= hypot(xs - xe, ys - ye);
wind:= minE(wind, dist);
if dist >= targetArea then
begin
windX:= windX / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
windY:= windY / sqrt3 + (random(round(wind) * 2 + 1) - wind) / sqrt5;
end else
begin
windX:= windX / sqrt2;
windY:= windY / sqrt2;
if (maxStep < 3) then
begin
maxStep:= random(3) + 3.0;
end else
begin
maxStep:= maxStep / sqrt5;
end;
end;
veloX:= veloX + windX;
veloY:= veloY + windY;
veloX:= veloX + gravity * (xe - xs) / dist;
veloY:= veloY + gravity * (ye - ys) / dist;
if hypot(veloX, veloY) > maxStep then
begin
randomDist:= maxStep / 2.0 + random(round(maxStep) div 2);
veloMag:= sqrt(veloX * veloX + veloY * veloY);
veloX:= (veloX / veloMag) * randomDist;
veloY:= (veloY / veloMag) * randomDist;
end;
lastX:= Round(xs);
lastY:= Round(ys);
xs:= xs + veloX;
ys:= ys + veloY;
if (lastX <> Round(xs)) or (lastY <> Round(ys)) then
MoveMouse(Round(xs), Round(ys));
step:= hypot(xs - lastX, ys - lastY);
wait(round((maxWait - minWait) * (step / maxStep) + minWait));
lastdist:= dist;
SMART_DrawDotsEx(False, [Point(lastX, lastY)], 65280);
end;
if (Round(xe) <> Round(xs)) or (Round(ye) <> Round(ys)) then
MoveMouse(Round(xe), Round(ye));
end;
{*******************************************************************************
Procedure HumanMMouse(eX, eY: Integer);
By: Flight
Description: Human-like miss-and-correct mouse movement
*******************************************************************************}
Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;
randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse2(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
ClearSmartCanvas;
end;
procedure Antiban;
begin
CStatus := 'AntiBan working'
Painting;
case Random(60) of
20: HoverSkill('Thieving', False);
30: PickUpMouse;
40: RandomMovement;
50: BoredHuman;
59: ExamineInv;
end;
Writeln('Antiban in action!');
end;
procedure AntiRandom;
begin
CStatus := 'Checking for randoms'
Painting;
FindNormalRandoms;
LampSkill := 'thieving';
LevelUp;
Writeln('Checking for randoms');
end;
procedure HpCheck; //Thanks Narcle, used your script to learn how to do this
var
a, t, b, x, y:Integer;
begin
CStatus := 'Checking Health/Eating'
Painting;
if (HPPercent < 50) and LoggedIn then
begin
if not InvEmpty then
for a := 0 to 2 do
for b := 1 to 28 do
if ExistsItem(b) then
begin
MMouseItem(b);
GetMousePos(x, y);
if WaitUptext('Eat', 400) then
begin
Mouse(x,y,0,0,false);
if WaitOption('Eat', 400) then
begin
t := GetSystemTime;
while ExistsItem(b) and ((GetSystemTime-t) < 2000) do
wait(20);
if (HPPercent > 70) then
Exit;
end;
end;
end;
if (not LoggedIn) or (HPPercent > 50) then
Exit;
end;
end;
Procedure Climb;
begin
Wait(RandomRange(200, 700));
FindObjCustom(x, y, ['tairs'], [4083549, 4215135, 4017499], 10);
Mouse(x, y, 5, 5, false);
ChooseOption('limb');
end;
Procedure Door;
begin
WriteLn('Upstairs!');
Wait(RandomRange(200, 700));
FindObjCustom(x, y, ['oor'], [3555142, 3291713, 3686729], 10);
Mouse(x, y, 5, 5, false);
ChooseOption('pen');
end;
Procedure WalkToHouse;
begin
CStatus := 'Walking...'
Painting;
Antirandom;
HumanMMouse(X, Y, 5, 5);
WalkHome := [Point(4725, 3785), Point(4755, 3740),
Point(4705, 3710), Point(4645, 3675)];
If(SPS_WalkPath(WalkHome)) then
WriteLn('At Stairs');
Climb;
Door;
end;
function Live: Boolean;
begin
CStatus := 'Are we alive?'
Painting;
Result := False;
if FindTextTPA(0, 0, MCX1, MCY1, MCX2, MCY2, 'dear', SmallChars, Nothing) then
if FindTextTPA(0, 0, MCX1, MCY1, MCX2, MCY2, 'dead', SmallChars, Nothing) then
begin
Inc(RandSolved[rand_Death]);
Result := True;
SaveToChatLog;
if (SRL_Procs[srl_OnFindDead] <> nil) then
SRL_Procs[srl_OnFindDead]();
if (Reincarnate) then
begin
WalkToHouse;
TakeScreen('Found Dead');
Players[CurrentPlayer].Rand := 'Oh Dear You Are in Lumby';
Players[CurrentPlayer].Active := False;
end;
end;
end;
function Steal(): Boolean;
begin
repeat
Antiban;
Antirandom;
CStatus := 'Stealing'
Painting;
Wait(RandomRange(200, 700));
FindObjCustom(x, y, ['man'], [532535, 400175, 399144, 466225], 10);
Mouse(x, y, 5, 5, false);
ChooseOption('ocket');
until false;
end;
//reminder: Switch to TPA or DMT (Need to figure this out...)
function FindMan(): Boolean;
begin
repeat
Steal;
HpCheck;
Live;
ProgressReport;
HumanMMouse(X, Y, 5, 5);
{if(StrInArr('our gravestone', ChatBoxTextArray(clMessage)))
then
begin
HumanMMouse(X, Y, 5, 5);
WalkToHouse;
end;}
{(Use for Master Farmers/Ham members)
if InvFull then
begin
HumanMMouse(X, Y, 5, 5);
Wait(RandomRange(100, 200));
DropAll;
Writeln('Dropping inventory')
end;}
until false;
end;
procedure Sequence;
begin
SetAngle(true)
SetRun(true)
FindMan;
end;
begin
CStatus := 'Logging in...'
Lumbridge := Point(4720, 3785)
SPS_Areas := ['11_9'];
SPS_Setup(RUNESCAPE_SURFACE, SPS_Areas);
Smart_Server := 77;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
ClearDebug;
ClearSmartCanvas;
Painting;
DeclarePlayers;
CheckStats;
LoginPlayer;
Sequence;
ProgressReport;
end.