SRL Archive - Archive

* Frt - SRL Member Application *


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…
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;

3Garrett3

2009-04-20 14:39:18

You are allowed to add your wc-ing functions to the thing, if you want to show your TPA skills.

I vote yes. Great guy, great script, showed me a thing or two yesterday. <3. Hope to see you in members soon :)

lordsaturn

2009-04-21 07:55:03

I like your autocolor function alot, how you use a min + maxes array.

I also like the global counter failsafe, very original.

Nice DDTM usage, especially the finding. It could be shortened a bit though, you call a few methods multiple times that only need to be called once. You also want to make sure when using a for loop with a high index, to store the index in a variable, in the essence of efficiency. But in this particular method, the high is 3 every time, so calling High() is unnecessary. :)
dtmMainPoint.AreaSize := 7;
dtmMainPoint.AreaShape := 0;
Hi := 3; //High(dtmSubPoints);
repeat
IncEx(Tole, 5);
dtmMainPoint.Tolerance := Tole;
for i := 0 to Hi do
begin
if Tole = 5 then
begin
dtmSubPoints[i].AreaSize := 7;
dtmsubPoints[i].AreaShape := 0;
end;
dtmSubPoints[i].Tolerance := Tole;
end;

TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
if Tole > 5 then
FreeDTM(TD);
//avoid using try/except when possible
TD := AddDTM(TempTDTM);
until DTMRotated(TD, x, y, MMX1, MMY1, MMX2, MMY2) or (Tole > 15);
FreeDTM(TD); //memory leak!!! you forgot to free it again!
Result := Point(x, y);
Also use IncEx over x := x + y, it's quicker. When programming in a scripting language, you always want to code with efficiency in mind, because there is no pre-compiled code involved. (hence why plugins are used)

Plenty of failsafes in your walking procedures, all of the necessities are met.

In your miner procedure, you may want to add a failsafe for verifying if you are in the correct position. If something goes wrong, it will attempt to find the rock 75 times before it breaks out of the loop.

In your seller procedure, the DTM GemD is never freed!!!! Also, ChooseOption('50') may fail in some cases, you may want to add a FindTextTPA failsafe.

Your antiban looks great, it's sure to add a human touch to your script.
I really like
Skills[i] := Possible[Random(24)];
, it shows you know what you're doing.

Standards are perfect, nothing to complain about there..

Yes. :)

Raskolnikov

2009-04-21 08:09:36

From: lordsaturn
I like your autocolor function alot, how you use a min + maxes array.

I also like the global counter failsafe, very original.

Nice DDTM usage, especially the finding. It could be shortened a bit though, you call a few methods multiple times that only need to be called once. You also want to make sure when using a for loop with a high index, to store the index in a variable, in the essence of efficiency. But in this particular method, the high is 3 every time, so calling High() is unnecessary. :)
dtmMainPoint.AreaSize := 7;
dtmMainPoint.AreaShape := 0;
Hi := 3; //High(dtmSubPoints);
repeat
IncEx(Tole, 5);
dtmMainPoint.Tolerance := Tole;
for i := 0 to Hi do
begin
if Tole = 5 then
begin
dtmSubPoints[i].AreaSize := 7;
dtmsubPoints[i].AreaShape := 0;
end;
dtmSubPoints[i].Tolerance := Tole;
end;

TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
if Tole > 5 then
FreeDTM(TD);
//avoid using try/except when possible
TD := AddDTM(TempTDTM);
until DTMRotated(TD, x, y, MMX1, MMY1, MMX2, MMY2) or (Tole > 15);
FreeDTM(TD); //memory leak!!! you forgot to free it again!
Result := Point(x, y);
Also use IncEx over x := x + y, it's quicker. When programming in a scripting language, you always want to code with efficiency in mind, because there is no pre-compiled code involved. (hence why plugins are used)

Plenty of failsafes in your walking procedures, all of the necessities are met.

In your miner procedure, you may want to add a failsafe for verifying if you are in the correct position. If something goes wrong, it will attempt to find the rock 75 times before it breaks out of the loop.

In your seller procedure, the DTM GemD is never freed!!!! Also, ChooseOption('50') may fail in some cases, you may want to add a FindTextTPA failsafe.

Your antiban looks great, it's sure to add a human touch to your script.
I really like
Skills[i] := Possible[Random(24)];
, it shows you know what you're doing.

Standards are perfect, nothing to complain about there..

Yes. :)


Edit: I am using the gayest web browser on earth, and the standards looked incorrect, they are correct, yes from me.

Cut em2 it

Naike

2009-04-21 10:41:09

Yes ;)

Looks good, more of these apps…

Nava2

2009-04-21 15:59:53

Result := xp * StrToFloat(IntToStr(Ores));

Just do:
 Result := xp * Ores;
Whats the point of the conversions? :)
If you are worried about a conflict, just toss a .0 onto the xp's which aren't .5.

No question in my mind, yes. :)

Floor66

2009-04-21 17:53:00

Yes.
Nice guy, good script, good manners ;)

TViYH

2009-04-21 22:58:17

Yes, everyone else has already said my reasons.

jakeyboy29

2009-04-22 00:52:51

yes.

i like you, and your scripts.

welcome.

Kave

2009-04-22 01:29:26

yes its a nice script and you seem to be a nice all around person.

Home

2009-04-22 01:40:18

Holy moly!

Yes indeed!

Welcome Sir!

~Home

JAD

2009-04-22 03:44:02

In!

Oh wait, forgot I can't do that.

Hobbit

2009-04-22 18:53:10

Welcome


In!