Simba Code:
program MasterFiever;
{$i SRL/SRL/Misc/SMART.scar}
{$i SRL/SRL.scar}
{$i Reflection/Reflection.simba}
var
x, y, stop, startexp: Integer;
const
SMARTWORLD = 72;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Your username
Players[0].Pass := ''; //Your password
Players[0].Nick := 'own'; //3-4 letters from your username
Players[0].Active := true;
end;
procedure Antiban;
begin
case Random(400) of
3: HoverSkill('thieving', false);
end;
end;
{ getxpof (broken gametab 2)
function GetXPof(skill: string; t:integer): integer; // From narcle's autofighter
var
p: TPoint;
i, tx, ty, x, y, l, II, WaitT: Integer;
xp, Nums, text2, xpis, typeis : string;
begin
Result := -1;
case t of
1: typeis := 'urrent';
2: typeis := 'level';
3: typeis := 'ainder';
end;
if (not LoggedIn) or (not TabExists(2)) then Exit;
GameTab(2);
if (GetCurrentTab <> 2) then Exit;
p := SkillToCoords(Skill);
if (p.x < 1) then Exit;
MMouse(p.x, p.y+7, 12, 4);
repeat
WaitT := WaitT+1;
wait(100);
if WaitT >= 300 then exit;
until findcolor(x, y, 10551295, 554, 205, 743, 465);
wait(300 + Random(100))
if (not FindColor(x, y, 10551295, MIX1, MIY1, MIX2, MIY2)) then Exit;
if IsTextInAreaEx(x, y, x + 60, y + 60, tx, ty, typeis, 0, SmallChars, False, False, 0, 1, 0) then
xp := GetTextAtEx(tx, ty, 0, SmallChars, False, True, 0, 1, 0, 50, False, tr_AllChars);
for l := 1 to Length(xp) do
begin
if (xp[l] = 'O') then text2 := text2 + '0' else text2 := text2+ xp[l];
end;
Nums := '01234567890';
for I := 1 to Length(Text2) do
begin
for II := 1 to 10 do
begin
if (Copy(text2, I, 1) = Copy(Nums, II, 1)) then
xpis := xpis + Copy(Text2, I, 1);
end;
end;
try
result := strtoint(xpis);
Status(skill+' = ' +xpis);
except
result := 0;
status('Failed to get XP');
end;
end;
}
Procedure Login;
begin
LoginPlayer;
wait(1000+random(1000));
MakeCompass('N');
SetAngle(true);
GetAllLevels;
FindNormalRandoms;
Startexp := GetXP('thieving');
end;
Function Health : integer; //VeryBigKitty's ;p
begin
result := (R_GetMMLevels('hp'));
end;
procedure Bank;
var
food, inventory : TInvItemArray;
monkfish : TIntegerArray;
i : Integer;
begin
monkfish := ([7946, 7947]);
if ((InvFull()) and ((not(R_ItemIDExistsEx(monkfish, inventory)))) or (Health < 160) and ((not(R_ItemIDExistsEx(monkfish, inventory))))) then
begin
writeln('Inventory full. Banking.');
repeat
MakeCompass('n');
wait(500 + random(250));
RadialWalk(7368054, 60, 100, 40, -1, 0);
R_Flag;
until findsymbol(x,y,'bank');
begin
writeln('found bank');
Mouse(x,y,2,3,true);
R_Flag;
wait(1000+random(500));
end;
OpenBankFast('db');
if (BankScreen) then
begin
Wait(30+random(65));
DepositAll;
SearchBank('Monkfish');
Wait(1500 + random(1220));
Withdraw(0, 0, 10);
CloseBank;
food := GetInventoryItems;
if (food[i].Name = 'Monkfish') then
begin
writeln('we have food');
RadialWalk(7105650, 310, 280, 70, -1, 0);
R_Flag;
end else
Bank;
end;
end;
end;
procedure CheckHealth;
var
x, y, monkfishDTM : Integer;
inventory : TInvItemArray;
monkfish : TIntegerArray;
begin
monkfish := ([7946, 7947]);
monkfishDTM := DTMFromString('mrAAAAHic42BgYHBggmAvIA4CYm8gdgZiMyA2BeLnQD' +
'X3ofgOED8D4rdA/AKIHwJxoLsdkGTCg/EDRgIYBgAQ1Ao3');
if ((Health < 160) and (R_ItemIDExistsEx(monkfish, inventory))) then
begin
repeat
if FindDTM(monkfishDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
WriteLn('Health is dangerously low!');
MMouse(x, y, 1, 1);
GetMousePos(x, y);
if (pos('Eat', rs_GetUpText) > 0) then
begin
Mouse(x, y, 1, 1,true);
wait(1500+random(500));
end;
end;
until Health > 160
FreeDTM(monkfishDTM);
end else
FreeDTM(monkfishDTM);
Bank;
end;
{*******************************************************************************
function Stunned: Boolean;
By: NCDS
Description: Return's True if stunned by NPC.
*******************************************************************************}
function Stunned: Boolean;
var
P : TPoint;
Search : TBox;
begin
P.x := MSCx;
P.y := MSCy;
Search.x1 := P.x - 30;
Search.y1 := P.y - 30;
Search.x2 := P.x + 30;
Search.y2 := P.y + 30;
Result := FindColorTolerance(P.x, P.y, 5106941, Search.x1, Search.y1,
Search.x2, Search.y2, 5) and
IsChatBoxTextBetween('stunned', 0, 7, 8);
end;
procedure CheckInv;
var
monkfishDTM : Integer;
inventory : TInvItemArray;
monkfish : TIntegerArray;
begin
monkfish := ([7946, 7947]);
monkfishDTM := DTMFromString('mrAAAAHic42BgYHBggmAvIA4CYm8gdgZiMyA2BeLnQD' +
'X3ofgOED8D4rdA/AKIHwJxoLsdkGTCg/EDRgIYBgAQ1Ao3');
if InvFull() and R_ItemIDExistsEx(monkfish, inventory) then
begin
if FindDTM(monkfishDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
begin
WriteLn('Inventory full. Eating food to clear space.');
MMouse(x, y, 1, 1);
wait(200+Random(121));
GetMousePos(x, y);
if (pos('Eat', rs_GetUpText) > 0) then
begin
Mouse(x, y, 1, 1,true);
wait(1500+random(500));
end;
end;
FreeDTM(monkfishDTM);
end else
FreeDTM(monkfishDTM);
Bank;
end;
function ThieveFarmer: Boolean;
var
i : Integer;
Farmer : TNPCArray;
FarmerPos : TPoint;
begin
if InvFull() then CheckInv;
begin
CheckHealth;
Farmer := GetNPCsBy(2234);
if Stunned then
begin
writeln('Stunned...');
Wait(RandomRange(3000, 500));
end;
if((not(TileOnMS(Farmer[i].Tile, 0))) and (Farmer[i].ID = 2234)) then
begin
FarmerPos := TileToMM(Farmer[i].Tile);
Mouse(FarmerPos.x, FarmerPos.y, 4, 4, True);
if(R_FlagExists)then
R_Flag;
end;
if(TileOnMS(Farmer[i].Tile, 0))and(Farmer[i].ID = 2234) then
begin
FarmerPos := TileToMS(Farmer[i].Tile, 0);
MMouse(FarmerPos.x, FarmerPos.y, 1, 1);
if(OptionExists('Pickpocket') and (R_IsUpText('Master Farmer'))) then
begin
Mouse(FarmerPos.x, FarmerPos.y, 1, 1, true);
wait(50+random(100));
R_Flag;
end;
end;
end;
end;
begin
Smart_Server := SMARTWORLD;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
Wait(500);
Login;
repeat
if not(loggedin) then login;
FindNormalRandoms;
repeat
ThieveFarmer;
FindNormalRandoms;
CheckHealth;
Antiban;
until(stop = 1);
stop := 0;
until(false);
end.