Frt
2009-04-20 09:30:34
How Long have You Played Runescape?
3 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Scar, PHP, MySQL
Are you a member of any other communities?
Sythe
Tell us about yourself…
Please give show us one of your scripts.
Rimmington Miner:
FrtAntiBan:
3 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
Scar, PHP, MySQL
Are you a member of any other communities?
Sythe
Tell us about yourself…
From: Frt
I'm 16 years old and living in Denmark. From Summer and until January 2009 I was on a continuation school, but didn't finish as I thought I wasted my time.
Instead I've got a job to kill the time and waiting to start at a high school.
I play a bit footbal in my sparetime. Otherwise programming has always been my interest. When I was 13 I started learning PHP and became pretty good at it when I was 14 years old. Unfortunately I haven't got any communities made by me as my host shut down a couple of months back without warning the users so all my work vanished.
Please give show us one of your scripts.
Rimmington Miner:
program RimmingtonMiner;
{.include SRL/SRL/Misc/Smart.Scar}
{.include SRL/SRL.Scar}
{.include SRL/SRL/Skill/Mining.Scar}
{.include FrtAntiBan.Scar}
const
SleepTime = 2; // Sleeptime in minutes
MaxMining = 10; // Max Seconds to mine
MaxLoads = 50; // Maximum loads a player can do
World = 121; // World playing in
Member = False; // Memberworld?
var
x, y, TheFS: Integer;
TheOre, Loads: Integer;
function Counter: Integer; forward;
procedure Proggie; forward;
procedure GetMiningLvl(var Return: Integer); forward;
procedure DeclarePlayers;
begin
Skills := ['Mining', 'Smithing', 'Hitpoints', 'Fishing', 'Cooking']; // Choose a max of 5 skills
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // Nickname
Players[0].Active := True; // Use this account?
Players[0].Integers[0] := 5; // Loads to do before switching
Players[0].Strings[0] := 'Iron'; // Copper, Tin, Iron, Gold, Auto
Players[0].Booleans[0] := True; // Sell gems?
Players[1].Name := ''; // Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // Nickname
Players[1].Active := True; // Use this account?
Players[1].Integers[0] := 5; // Loads to do before switching
Players[1].Strings[0] := 'Iron'; // Copper, Tin, Iron, Gold, Auto
Players[1].Booleans[0] := True; // Sell gems?
end;
procedure W(Timer: Integer);
begin
Wait(Timer + Random(500));
end;
function FS(Times: Integer): Boolean;
begin
if (TheFS >= Times) then
begin
TheFS := 0;
Result := True;
end;
Inc(TheFS);
end;
procedure Reset;
begin
TheFS := 0;
end;
function ContinueScript: boolean;
begin
if LoggedIn then
if FindPickHeadColor then
Result := True;
W(500);
case Random(4) of
0: PickupMouse;
end;
W(500);
end;
function InShop: Boolean;
begin
if FindObj(x, y, 'adder', 2510699, 5) then
Result := (Distance(MSCX, MSCY, x, y) < 100);
end;
function AutoColorThings(What: String): Integer;
var
i, Red, Green, Blue, GoodColor, TestColor: Integer;
RMG, RMB, GMB: Integer;
P: array of TPoint;
R: array of Integer;
OldSpeed: Integer;
begin
ColorToleranceSpeed(2);
case Lowercase(What) of
'dirt':
begin
GoodColor := 1388628;
R := [57, 100, 14, 43, 21, 50];
end;
'stone':
begin
GoodColor := 5397597;
R := [0, 20, 0, 20, 0, 20];
end;
'bstone':
begin
GoodColor := 3169426;
R := [57, 106, 43, 69, 18, 73];
end;
end;
FFlag(0);
FindColorsSpiralTolerance(MMCX, MMCY, P, GoodColor, MMX1, MMY1, MMX2, MMY2, 30);
for i := 0 to High(P) do
begin
if rs_OnMiniMap(P[i].x, P[i].y) then
begin
TestColor := GetColor(P[i].x, P[i].y);
ColorToRGB(TestColor, Red, Green, Blue);
RMB := Red - Blue;
RMG := Red - Green;
GMB := Green - Blue;
if (RMB < 0) then
RMB := (RMB * RMB) - RMB;
if (RMG < 0) then
RMG := (RMG * RMG) - RMG;
if (GMB < 0) then
GMB := (GMB * GMB) - GMB;
if InRange(RMB, R[0], R[1]) then
if InRange(RMG, R[2], R[3]) then
if InRange(GMB, R[4], R[5]) then
if GetColor(P[i].x + 1, P[i].y + 1) = TestColor then
if GetColor(P[i].x, P[i].y + 2) = TestColor then
if GetColor(P[i].x + 2, P[i].y) = TestColor then
if GetColor(P[i].x, P[i].y + 1) = TestColor then
if GetColor(P[i].x + 1, P[i].y) = TestColor then
if GetColor(P[i].x + 2, P[i].y + 1) = TestColor then
if GetColor(P[i].x + 1, P[i].y + 2) = TestColor then
begin
Result := TestColor;
Writeln('Found color: ' + IntToStr(TestColor));
Exit;
end;
end;
end;
Result := 0;
Writeln('Could not autocolor ' + What);
ColorToleranceSpeed(1);
end;
function MakeDDTM(Which: String): TPoint;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..3] of TDTMPointDef;
TempTDTM: TDTM;
TD: Integer;
i, x, y: Integer;
Tole, Stone, BStone, Dirt: Integer;
begin
Stone := AutoColorThings('Stone');
BStone := AutoColorthings('BStone');
Dirt := AutoColorThings('Dirt');
case Lowercase(Which) of
'iron':
begin
dtmMainPoint.x := 611;
dtmMainPoint.y := 92;
dtmMainPoint.Color := Dirt;
dtmSubPoints[0].x := 611;
dtmSubPoints[0].y := 92;
dtmSubPoints[0].Color := Dirt;
dtmSubPoints[1].x := 599;
dtmSubPoints[1].y := 81;
dtmSubPoints[1].Color := Stone;
dtmSubPoints[2].x := 599;
dtmSubPoints[2].y := 89;
dtmSubPoints[2].Color := Stone;
dtmSubPoints[3].x := 607;
dtmSubPoints[3].y := 100;
dtmSubPoints[3].Color := Stone;
end;
'copper':
begin
dtmMainPoint.x := 652;
dtmMainPoint.y := 85;
dtmMainPoint.Color := Dirt;
dtmSubPoints[0].x := 652;
dtmSubPoints[0].y := 85;
dtmSubPoints[0].Color := Dirt;
dtmSubPoints[1].x := 648;
dtmSubPoints[1].y := 76;
dtmSubPoints[1].Color := BStone;
dtmSubPoints[2].x := 643;
dtmSubPoints[2].y := 88;
dtmSubPoints[2].Color := BStone;
dtmSubPoints[3].x := 636;
dtmSubPoints[3].y := 83;
dtmSubPoints[3].Color := Stone;
end;
'tin':
begin
dtmMainPoint.x := 679;
dtmMainPoint.y := 130;
dtmMainPoint.Color := Dirt;
dtmSubPoints[0].x := 679;
dtmSubPoints[0].y := 130;
dtmSubPoints[0].Color := Dirt;
dtmSubPoints[1].x := 675;
dtmSubPoints[1].y := 115;
dtmSubPoints[1].Color := Stone;
dtmSubPoints[2].x := 684;
dtmSubPoints[2].y := 122;
dtmSubPoints[2].Color := Stone;
dtmSubPoints[3].x := 681;
dtmSubPoints[3].y := 106;
dtmSubPoints[3].Color := BStone;
end;
'gold':
begin
dtmMainPoint.x := 643;
dtmMainPoint.y := 145;
dtmMainPoint.Color := Dirt;
dtmSubPoints[0].x := 643;
dtmSubPoints[0].y := 145;
dtmSubPoints[0].Color := Dirt;
dtmSubPoints[1].x := 641;
dtmSubPoints[1].y := 133;
dtmSubPoints[1].Color := Stone;
dtmSubPoints[2].x := 651;
dtmSubPoints[2].y := 135;
dtmSubPoints[2].Color := Stone;
dtmSubPoints[3].x := 639;
dtmSubPoints[3].y := 156;
dtmSubPoints[3].Color := 15658734;
end;
end;
repeat
Tole := Tole + 5;
dtmMainPoint.AreaSize := 7;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Tolerance := Tole;
for i := 0 to High(dtmSubPoints) do
begin
dtmSubPoints[i].AreaSize := 7;
dtmsubPoints[i].AreaShape := 0;
dtmSubPoints[i].Tolerance := Tole;
end;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
try
FreeDTM(TD);
except
end;
TD := AddDTM(TempTDTM);
until DTMRotated(TD, x, y, MMX1, MMY1, MMX2, MMY2) or (Tole > 15);
Result := Point(x, y);
end;
function ReturnOreDTM(Str: String): Integer;
begin
case Lowercase(Str) of
'tin': Result := DTMFromString('78DA63CC606260E0656440058C482490CE01A' +
'A6122A0A618A8E60F037E35594035BF09A88907AA612560571C50' +
'8D202361BBC408A82903AA1120420D170135D584C30700A08206C' +
'8');
'iron': Result := DTMFromString('78DA63CC66626078C18006189148209D05547' +
'39D809A78A09A8704D4C402D5BC26A0261DA8E61301356540356F' +
'08A8A902AA7944404D0950CD1D026A0A806A6EE057030032C30BF' +
'9');
'copper': Result := DTMFromString('78DA63DCC7C4C0C0C5C8800A189148207D0CA' +
'8E60F037E3527806A980998731AA8868F08BB0409A801B9598C80' +
'9A4D4498B311A88693809A6D40354C04D45C00AA61C1AF0600833' +
'D091E');
'gold': Result := DTMFromString('78DA63B4636260E0656440058C4824907603A' +
'AF9C3805F8D0350CD6F026ACC816A9808D8650C54C34F408D3D50' +
'8D180135EE44F8CB0BA84690801A3FA01A4E026A02816A1889B08' +
'B01BF1A006A89057B');
'gem': Result := DTMFromString('78DA634C626260B8CF00068C0C30C00827FF0' +
'301633250CD2BDC6AC0742150CD07026ACA806A5E1050530254F3' +
'90809A7CA09A3BF8D50000ACC70C0E');
end;
end;
procedure DTMSetup(What: String; var Return: Integer);
var
Temp: String;
Skill: Integer;
begin
Temp := Lowercase(Players[CurrentPlayer].Strings[0]);
if GameTab(4) then
begin
GetMiningLvl(Skill);
if (Temp = 'auto') then
begin
case Skill of
0..20:
begin
case Random(2) of
0: Temp := 'copper';
1: Temp := 'tin';
end;
end;
21..99: Temp := 'iron';
end;
end;
end else
begin
if (Temp = 'auto') then
begin
case Random(2) of
0: Temp := 'copper';
1: Temp := 'tin';
end;
end;
end;
case Lowercase(What) of
'oredtm': Return := ReturnOreDTM(Temp);
'miningstone':
begin
case Temp of
'copper': Return := rimmington_copper;
'tin': Return := rimmington_tin;
'iron': Return := rimmington_iron;
end;
end;
end;
end;
function WalkToSpecific: Boolean;
var
TempD: TPoint;
begin
TempD := MakeDDTM(Players[CurrentPlayer].Strings[0]);
if (TempD.x > 0) then
begin
Mouse(TempD.x, TempD.y, 5, 5, True);
FFlag(5);
W(1000);
Result := True;
end;
end;
function WalkToMine: Boolean;
begin
if not ContinueScript then Exit;
SetRun(True);
if FindSymbol(x, y, 'shop') then
begin
if (Distance(MMCX, MMCY, x, y) > 25) then
begin
Mouse(x + 10, y, 5, 5, True);
FFlag(5);
end;
end;
if FindSymbol(x, y, 'portal') then
begin
Mouse(x, y, 5, 5, True);
FFlag(5);
end;
ColorToleranceSpeed(3);
RadialRoadWalk(FindRoadColor, 45, 90, 70, 2, 2);
ColorToleranceSpeed(1);
while not FindSymbol(x, y, 'mining spot') do
begin
if FS(1) then Break;
Mouse(MMCX + 50, MMCY - 40, 5, 5, True);
FFlag(5);
end;
Reset;
if FindSymbol(x, y, 'mining spot') then
begin
Mouse(x, y, 5, 5, True);
FFlag(10);
W(1000);
Result := True;
end;
if not WalkToSpecific then
begin
Logout;
Players[CurrentPlayer].Active := False;
Exit;
end;
end;
function WalkToShop: Boolean;
begin
if not ContinueScript then Exit;
Inc(Players[CurrentPlayer].Integers[1]);
Inc(Loads);
Players[CurrentPlayer].Integers[2] := Players[CurrentPlayer].Integers[2] + Counter;
SetRun(True);
if FindSymbol(x, y, 'mining spot') then
begin
Mouse(x, y, 5, 5, True);
FFlag(5);
end;
ColorToleranceSpeed(3);
while not RadialRoadWalk(FindRoadColor, 90, 280, 70, 2, 2) do
begin
if FS(1) then Break;
Mouse(MMCX - 20, MMCY + 60, 5, 5, True);
FFlag(5);
end;
Reset;
RadialRoadWalk(FindRoadColor, 230, 270, 60, 2, 2);
ColorToleranceSpeed(1);
if FindSymbol(x, y, 'portal') then
begin
if (Distance(MMCX, MMCY, x, y) > 25) and (MMCY < y - 20) then
begin
Mouse(x, y, 5, 5, True);
FFlag(5);
end;
end;
while not InShop do
begin
if FS(10) then Break;
if FindSymbol(x, y, 'shop') then
begin
Mouse(x + 5, y, 2, 2, True);
FFlag(5);
end;
end;
if InShop then
Result := True;
Reset;
if FindObj(x, y, 'hop', 5206412, 5) then
Result := True;
end;
function LocationCheck: String;
var
x, y: Integer;
begin
if FindSymbol(x, y, 'water') then
Result := 'Town'
else if FindSymbol(x, y, 'mining spot') then
Result := 'Mine'
else if FindSymbol(x, y, 'portal') then
Result := 'Portal'
else Result := 'Unknown';
Result := Lowercase(Result);
end;
procedure UseLocation(ToMine: Boolean);
var
Temp: String;
Doer: Boolean;
begin
Temp := LocationCheck;
case Temp of
'town':
begin
if ToMine then
Doer := True;
end;
'portal': Doer := True;
'mine':
begin
if not ToMine then
Doer := True;
end;
end;
if Doer then
begin
if ToMine then
begin
Disguise('Walking to the mine');
if not WalkToMine then
begin
Logout;
Players[CurrentPlayer].Active := False;
Exit;
end;
end else
begin
Disguise('Walking to the shop');
if not WalkToShop then
begin
Logout;
Players[CurrentPlayer].Active := False;
Exit;
end;
end;
end;
if (Temp = 'unknown') then
begin
Logout;
Players[CurrentPlayer].Active := False;
Exit;
end;
Proggie;
end;
procedure Miner;
var
Inv, C, M: Integer;
begin
if not ContinueScript then Exit;
while not InvFull do
begin
Inv := InvCount;
Disguise(IntToStr(Inv) + '/28');
Inc(C);
if (C > 75) then Break;
if FindObjRock(x, y, TheOre) then
begin
case Random(4) of
0..2: Mouse(x, y, 2, 2, True);
3:
begin
Mouse(x, y, 2, 2, False);
W(500);
ChooseOption('ine');
end;
end;
MarkTime(M);
while (Inv = InvCount) do
begin
if (TimeFromMark(M) > (MaxMining * 1000)) then
Break;
W(1000);
FindNormalRandoms;
FrtAntiBan(5);
end;
Reset;
end else
begin
W(2000);
FrtAntiBan(5);
end;
end;
end;
procedure Seller;
var
i, TempD, GemD: Integer;
B: TBox;
begin
if not ContinueScript then Exit;
Disguise('Selling ores');
DTMSetup('OreDTM', TempD);
if FindObj(x, y, 'hop', 5206412, 5) then
begin
Mouse(x, y, 3, 3, False);
W(200);
if ChooseOption('rade') then
begin
W(4000);
for i := 1 to 28 do
begin
B := InvBox(i);
if FindDTM(TempD, x, y, B.X1, B.Y1, B.X2, B.Y2) then
begin
MouseItem(i, False);
ChooseOption('50');
W(1000);
end;
if Players[CurrentPlayer].Booleans[0] then
begin
GemD := ReturnOreDTM('Gem');
if FindDTM(GemD, x, y, B.X1, B.Y1, B.X2, B.Y2) then
begin
MouseItem(i, False);
ChooseOption('50');
W(1000);
end;
end;
if (InvCount < 3) then
Break;
end;
end;
Mouse(485, 43, 3, 3, True);
ArrangeInv;
end;
FreeDTM(TempD);
Proggie;
end;
procedure ShouldWeGoSell;
begin
if not LoggedIn then Exit;
if InvFull then
begin
UseLocation(False);
Seller;
end;
end;
procedure GetMiningLvl(var Return: Integer);
var
Tempx: Integer;
begin
if not LoggedIn then Exit;
Tempx := GetCurrentTab;
Return := GetSkillLevel('mining');
W(500);
case Random(3) of
0: PickupMouse;
end;
W(500);
GameTab(Tempx);
end;
function Counter: Integer;
var
i, TempD: Integer;
B: TBox;
begin
if not LoggedIn then Exit;
DTMSetup('OreDTM', TempD);
GameTab(4);
for i := 1 to 28 do
begin
B := InvBox(i);
if FindDTM(TempD, x, y, B.X1, B.Y1, B.X2, B.Y2) then
Inc(Result);
end;
FreeDTM(TempD);
end;
function CalcXp(Ores, Player: Integer): Extended;
var
xp: Extended;
begin
case Lowercase(Players[Player].Strings[0]) of
'tin': xp := 17.5;
'copper': xp := 17.5;
'iron': xp := 35;
'gold': xp := 65;
end;
Result := xp * StrToFloat(IntToStr(Ores));
end;
function WhatMining(Play: Integer): String;
begin
if (Lowercase(Players[Play].Strings[0]) = 'auto') then
begin
case Players[Play].Integers[3] of
0: Result := 'unknown';
1..20: Result := 'copper/tin';
21..45: Result := 'iron';
46..99: Result := 'gold';
end;
end else
Result := Players[Play].Strings[0];
end;
procedure Proggie;
var
i: Integer;
begin
ClearDebug;
Writeln('Frt''s Rimmington Miner');
Writeln('Ran for ' + TimeRunning);
Writeln('');
for i := 0 to High(Players) do
begin
Writeln(Players[i].Nick + ': ' + IntToStr(Players[i].Integers[1]) +
' loads | ' + IntToStr(Players[i].Integers[2]) + ' ' + WhatMining(i) + ' ores mined | ' +
FloatToStr(CalcXp(Players[i].Integers[2], i)) + ' xp gained | player is ' + BoolToStr(Players[i].Active));
end;
end;
// Credit: Bam Bam for helping :)
procedure TheNext;
var
Status: Boolean;
begin
Status := LoggedIn;
Logout;
Disguise('Taking a break');
W(SleepTime * 60 * 1000);
if (Players[CurrentPlayer].Integers[1] >= MaxLoads) then
Status := False;
NextPlayer(Status);
Loads := 0;
Proggie;
end;
procedure Setup;
begin
SmartSetupEx(World, Member, True, False);
SetTargetDC(SmartGetDC);
SetupSRL;
SetupMining;
DeclarePlayers;
SetupFrtAntiBan;
ActivateClient;
Disguise('Logging in');
LoginPlayer;
ClearDebug;
Proggie;
end;
begin
Setup;
repeat
DTMSetup('Miningstone', TheOre);
SetAngle(True);
SetRun(True);
MakeCompass('n');
ShouldWeGoSell;
while (Loads < Players[CurrentPlayer].Integers[0]) do
begin
GetMiningLvl(Players[CurrentPlayer].Integers[3]);
UseLocation(True);
Miner;
UseLocation(False);
Seller;
if not LoggedIn then Break;
end;
TheNext;
until AllPlayersInactive;
end.FrtAntiBan:
// Made by Frt, feel free to use in your script.
var
Skills: array [0..4] of String;
procedure Replier;
begin
if IsFKeyDown(2) then
TypeSend(Readln('What do you want to write?'));
if (not(ReadInterScarMessage('Frt') = '')) then
begin
TypeSend(ReadInterScarMessage('Frt'));
SendInterScarMessage('Frt', '');
end;
end;
procedure HoverHomeTeleport;
begin
if GameTab(7) then
begin
Wait(500 + Random(500));
Mouse(723, 450, 3, 3, true);
Wait(500 + Random(500));
MMouse(570, 227, 3, 3);
end;
end;
procedure RandomExamineInv;
var
Inv, Ran: integer;
begin
if GameTab(4) then
begin
Wait(500 + Random(500));
Inv := InvCount;
Ran := Random(Inv) + 1;
MouseItem(Ran, False);
Wait(500 + Random(500));
ChooseOption('Examine');
end;
end;
procedure QuestOpener;
var
x, y, Ran, c, t: integer;
begin
Mouse(610, 187, 3, 3, true);
repeat
Wait(500 + Random(500));
if(FindText(x, y, 'Quests', 4, 548, 205, 611, 226)) then
begin
Wait(700 + Random(300));
Ran := 15 * Random(10);
t := 291 + Ran;
Mouse(584, t, 20, 3, true);
Wait(1500 + Random(2000));
case Random(2) of
0: PickUpMouse;
end;
Wait(1500 + Random(2000));
Mouse(464, 76, 10, 10, true);
Break;
end;
if(FindText(x, y, 'Achievements', 4, 548, 205, 611, 226)) then
begin
Mouse(702, 217, 3, 3, true);
Wait(500 + Random(500));
end;
Inc(c);
until(c > 10);
end;
procedure TypeSendEx(Text: string);
var
S: string;
I: Integer;
C: Byte;
Shift: Boolean;
begin
S:= 'ABCDEFGHIJKLMNOPQRSTUVWXZ' + '~!@#$%^&*()_+{}|:"<>?';
for I:= 1 to Length(Text) do
begin
Shift:= (Pos(Text[i], S) > 0);
if(Shift)then
begin
KeyDown(VK_SHIFT) Wait(40 + Random(40));
while(Pos(Text[i], S) > 0)and(I <= Length(Text))do
begin
C := GetKeyCode(StrGet(Text, I));
TypeByte(c);
I:= I + 1;
if(I > Length(Text))then Break;
end;
end;
if(Shift)then
KeyUp(VK_SHIFT);
Wait(40 + Random(40));
if(I <= Length(Text))then
begin
C:= GetKeyCode(StrGet(Text, I));
TypeByte(C);
Wait(40 + Random(40));
end;
end;
end;
procedure TypeAndRegret;
var
Say: string;
i: integer;
begin
case Random(11) of
0: Say := 'hello';
1: Say := 'im so bored..';
2: Say := 'member has more fun things to do than not members';
3: Say := 'im a shark';
4: Say := 'i have a dog';
5: Say := 'i want a little sister';
6: Say := 'bank sale later today';
7: Say := 'buying food';
8: Say := 'rune FTW';
9: Say := 'imo runescape is the best';
10: Say := 'i hate the trade limit';
end;
TypeSendEx(AddMistakes(Say, 20));
Wait(1000 + Random(5000));
for i := 0 to Length(Say) do
begin
KeyDown(vk_Back);
Wait(10 + Random(10));
KeyUp(vk_Back);
Wait(50 + Random(50));
end;
end;
procedure EquipmentHover;
var
z: TPoint;
c, i: integer;
begin
if GameTab(5) then
begin
repeat
c := Random(11) + 1;
z := EquipmentCoords(c);
if WearingItem(c) then
begin
MMouse(z.x, z.y, 7, 7);
Wait(1000 + Random(1000));
Break;
end;
Inc(i);
until(i > 10);
end;
end;
procedure AlmostFriendOrEnemy;
var
CName: string;
i: integer;
begin
if LastChatter(CName) then
begin
case Random(2) of
0: GameTab(8);
1: GameTab(9);
end;
Wait(500 + Random(500));
Mouse(595, 445, 5, 5, true);
Wait(1000 + Random(500));
TypeSendEx(CName);
Wait(1500 + Random(500));
for i := 0 to Length(CName) do
begin
KeyDown(vk_Back);
Wait(10 + Random(10));
KeyUp(vk_Back);
Wait(50 + Random(50));
end;
TypeSend('');
end;
end;
procedure HoverEmotion;
var
x, y: integer;
begin
if GameTab(12) then
begin
Wait(700 + Random(300));
MMouse(569 + Random(100), 226 + Random(200), 5, 5);
Wait(1200 + Random(250));
GetMousePos(x, y);
case Random(2) of
0: MMouse(x, y, 20, 20);
end;
Wait(500 + Random(250));
GameTab(4);
end;
end;
procedure HoverSong;
var
Ran, t: integer;
begin
if GameTab(13) then
begin
Wait(700 + Random(300));
Ran := 15 * Random(12);
t := 276 + Ran;
MMouse(584, t, 20, 3);
Wait(1500 + Random(2000));
case Random(2) of
0: PickUpMouse;
end;
Wait(1500 + Random(2000));
end;
end;
procedure SplitPrivateChat;
begin
if GameTab(11) then
begin
Mouse(696, 358, 10, 10, true);
Wait(500 + Random(3000));
case Random(2) of
0: PickUpMouse;
end;
Wait(1000 + Random(3000));
Mouse(696, 358, 5, 5, true);
end;
end;
procedure HouseOption;
begin
if GameTab(11) then
begin
Mouse(694, 428, 5, 5, true);
Wait(1000 + Random(1000));
case Random(4) of
0: MMouse(616, 313, 5, 5);
1: PickUpMouse;
2: MMouse(632, 361, 50, 5);
3: MMouse(634, 395, 50, 5);
end;
Wait(1000 + Random(500));
Mouse(721, 233, 4, 4, true);
end;
end;
procedure FrtAntiBan(Rand: Integer);
begin
if not LoggedIn then
Exit;
Replier;
case Random(Rand) of
0:
case random(14) of
0: PickUpMouse;
1: RandomMovement;
2: RandomRClick;
3: HoverSkill(Skills[Random(5)], false);
4: HoverHomeTeleport;
5: RandomExamineInv;
6: SleepAndMoveMouse(1000 + Random(2000));
7: TypeAndRegret;
8: EquipmentHover;
9: AlmostFriendOrEnemy;
10: HoverEmotion;
11: HoverSong;
12: SplitPrivateChat;
13: HouseOption;
end;
end;
Wait(500 + Random(1000));
end;
procedure SetupFrtAntiBan;
var
i: Integer;
Possible: array of String;
begin
Possible := ['Attack', 'Defence', 'Strength', 'Hitpoints', 'Mining', 'Smithing', 'Woodcutting', 'Firemaking', 'Magic',
'Fletching', 'Hunter', 'Summoning', 'Fishing', 'Construction', 'Herblore', 'Agility', 'Thieving', 'Crafting',
'Ranged', 'Slayer', 'Farming', 'Prayer', 'Runecrafting', 'Cooking'];
for i := 0 to 4 do
begin
if (Skills[i] = '') then
Skills[i] := Possible[Random(24)];
end;
end;