{$DEFINE SMART}
{$DEFINE WALKER}
{$i AeroLib/AeroLib.Simba}
{$i Reflection/Reflection.Simba}
const
Loginname = ''; {Login name, will determine Me.Name in setupVars}
Password = ''; {Password, will determine Me.Pass in setupVars}
Pin = ''; {BankPin, will determine Me.Pin in setupVars}
WorldInt = 344;
Int_StartSkill = 0;
Int_CurSkill = 1;
var
_npcs : TReflectNPCArray;
MyPlayer: TReflectLocalPlayer;
ProgressTimer: Timer;
Procedure setupVars;
begin
SetLength(Me.Integers, 100);
SetLength(Me.Strings, 100);
SetLength(Me.Booleans, 100);
Me.Name := Loginname;
Me.Pass := Password;
Me.Pin := Pin;
Me.Active := True;
end;
procedure antiban();
begin
if (random(0, 50) = 0) then
case random(0, 90) of
0..15:
if (pointInBox(getMousePnt(), intToBox(1, 1, 765, 500))) then
MMouseOffClient('random');
41..45: hoverSkill(SKILL_HUNTER, false);
46..50: pickUpMouse;
51..60: humanRandomMouse();
61..80: setAngle(ANGLE_HIGH);
end;
end;
procedure randomMouseInput(pnt:Tpoint; ranx, rany:integer);
begin
case random(5) of
0:humanMMouse(pnt, ranx, rany);
1..3:BrakeMMouse(pnt, ranx, rany,true);
4:mouse(pnt, ranx, rany, mouse_move);
end;
end;
function R_TileOnMS(Tile : TPoint; var OutputPoint : TPoint; x : integer = 0; y : integer = 0; z : integer = 0):boolean;
var tempB : TBox;
begin
OutputPoint := TReflectionTiles.TileToMS(Tile, x, y, z);
tempB := intToBox(MSX1, MSY1, MSX2, MSY2);
result := PointInBox(OutputPoint, tempB);
end;
function R_InteractTile(tile:Tpoint; action:string; x:integer = 0; y:integer = 0; z:integer = 0):boolean;
var RSTile : TPoint;
begin
if R_TileOnMS(Tile, RSTile, x, y, z) then begin
randomMouseInput(rsTile, 5, 5);
if(Reflect.Text.IsUpText(action)) then begin
FastClick(mouse_left);
result := didClick(true, 1000);
end else begin
if TReflectionText.OptionExists(action) then begin
FastClick(mouse_right);
result := Reflect.Text.ChooseOption(action);
end;
end;
end;
end;
function R_InteractNPC(IDs:TIntegerArray; action:string; isFree:boolean; x:integer = 0; y:integer = 0; z:integer = 50):boolean;
var RsTile, npcTile : TPoint;
i : integer;
begin
_npcs.GetAll;
for i:=0 to high(_npcs) do begin
npcTile := _npcs[i].GetTile;
if inIntArray(IDs, _npcs[i].GetId) then begin
if not R_TileOnMS(npcTile, RSTile, x, y, z) then begin
MyPlayer.BlindWalkMM(npcTile, 2);
FFlag(1+randomRange(-1, 1));
sleep(random(500));
end;
result := R_InteractTile(npcTile, action, x, y, z);
exit;
end;
end;
end;
function R_TryInteractNPC(IDs:TIntegerArray; action:string; isFree:boolean; tries:integer; x:integer = 0; y:integer = 0; z:integer = 0):boolean;
var i : integer;
begin
i := 0;
result := false;
while (i<tries) and not result and isLoggedIn do begin
result := R_InteractNPC(IDs, action, isFree, x, y, z);
inc(i);
end;
end;
procedure Hunt;
var
Npc,npc2: TReflectNpc;
RsTile,Point: TPoint;
T: TReflectTimer;
begin
repeat
wait(261+random(150));
if not Npc2.Find('Gyr Falcon') then begin
if R_TryInteractNPC([5531], 'Catch Spotted kebbit', true, 6) then
sleep(1761+random(150));
end;
until Npc2.Find('Gyr Falcon')
end;
procedure catch;
var
Npc: TReflectNpc;
RsTile,Point: TPoint;
begin
repeat
wait(261+random(150));
if Npc.Find('Gyr Falcon') then begin
if R_TryInteractNPC([1342], 'Gyr Falcon', true, 6) then
sleep(1461+random(250));
end;
until not Npc.Find('Gyr Falcon')
end;
procedure Burybones;
var
_item, item: TReflectInvItem;
T: TReflectTimer;
Begin
GameTab(TAB_INV);
if _item.Find(526) then
repeat
wait(161+random(150));
if _item.Find(526) then
interactSlot(_item.GetInvSlot, Mouse_right);
Reflect.Text.ChooseOption('Drop', 300);
sleep(461+random(150));
until not _item.Find(526) or (T.Elapsedtime > 3500);
end;
procedure Dropfur;
var
item: TReflectInvItem;
T: TReflectTimer;
Begin
GameTab(TAB_INV);
if item.Find(10125) then
repeat
wait(161+random(150));
if item.Find(10125) then
interactSlot(item.GetInvSlot, Mouse_right);
Reflect.Text.ChooseOption('Drop', 300);
sleep(461+random(150));
until not item.Find(10125) or (T.Elapsedtime > 3500);
end;
function perHour(I: Integer): integer;
begin
Result := Round((3600*(I))/(GetTimeRunning/1000));
end;
function TillLevel(CurrentXP: Integer): Integer;
begin
Result := ConvertLvlToXP(ConvertXpToLvl(CurrentXP))-CurrentXP;
end;
Procedure getStats;
begin
If Me.Integers[Int_StartSkill] = 0 then
begin
Me.Integers[Int_StartSkill] := MyPlayer.GetSkillExp(SKILL_HUNTER);
end else
begin
Me.Integers[Int_CurSkill] := MyPlayer.GetSkillExp(SKILL_HUNTER);
end;
end;
Procedure Progress;
var
Graphic: TGraphics;
S: TStringArray;
BreakString, ZapperString: String;
I: Integer;
begin
If (ProgressTimer.timeElapsed < 10000) then
Exit;
getStats;
S := ['Time running: ' + msToTime(GetTimeRunning, TIME_SHORT),
BreakString,
'',
'XP: ' + ToStr(Me.Integers[Int_CurSkill]-Me.Integers[Int_StartSkill]) + ' - p/h: ' + ToStr(perHour(Me.Integers[Int_CurSkill]-Me.Integers[Int_StartSkill])),
'',
'Till Level: ' + ToStr(TillLevel(Me.Integers[Int_CurSkill]))];
graphic := OS_Smart.Graphics;
graphic.clearArea(0, 0, 230, 250);
For I:=0 to High(S) do
Graphic.DrawClippedText(S[I], 'UpChars07', Point(10, 100+(I*14)), clYellow);
ProgressTimer.start;
end;
begin
InitAL;
Reflect.Setup;
//MyPlayer.Login;
setupVars;
OS_Smart.__Graphics.Clear;
setAngle(ANGLE_HIGH);
mouseSpeed := randomRange(27, 30)
repeat
//if isLoggedIn then
begin
Hunt;
antiban;
catch;
Progress;
antiban;
Burybones;
Dropfur;
antiban;
end;
//if not isLoggedIn then
//MyPlayer.Login;
until(false);
end.