thanks, works great away to use over night
thanks, works great away to use over night
Guys I really need help!
I'm confused on the "What boat" thing
Can anyone show me what to put in there? I tried putting Novice in put it wouldnt work
Warning! You passed wrong values to a finder function: ys > ye (30,29). Swapping the values for now.
keep getting this, mouse keeps going form one end of the board that goes to the boat from the dock to the other, it's only done 4 games in 40 minutes so somethings wrong, any clue?
I modified p1nky's script in some small areas, I have no problems with now. Always finds the gangplank, even if people put clan vexilums in the way. Sped up the clicks, because it is still slower than humans even with faster500 enabled. /shrug
It's here if anyone wants it.
http://dl.dropbox.com/u/65811322/P1n...5BG.1%5D.simba
If OP wants me to remove the link I will.
Had a 6hr proggie but forgot to copy it :S now already 2h proggie, i'm trying to get 10hr =D
Using it now. Works great. You did really well on this P1nky. Good job man.
Will post proggy in morning!
P.s
I got confused by all the versions on the main post. Why so many versions? What do the letters stand for? Which one should be used? Right now I'm using Beta(B) and it's working like a charm.. so eh..! Just curious.
Thanks again p1nky.
Cheers
Luke
Yep, I'd think that too... but unfortunately he's using alphabetical version naming.
it goes:
pestControlBeta
pestControlBeta(B)
pestControl(C)
pestControl(D)
pestControl(G)
Why isn't there an E version haha? or A ? or ... looking at it now maybe the first one counts as A?
so A (B) C D G??
So... *realising I'm using beta B* Oh woah. I'm 3 versions out of date... Yet it's still working perfectly fine? Great! I'll stick with (B)! Unless persuaded otherwise.
So P1nky, which version is newest? G?
Code:|====================================| | ~ SRL ~ | | Randoms Report | |────────────────────────────────────| | | | | |────────────────────────────────────| |====================================| ||===========================|| || P1nkys PestController || ||===========================|| || March 26th, 2012 || ||===========================|| Worked For 4 Hours, 21 Minutes and 2 Seconds Games Played 88 Won 72 Games Lose 14 Games Reward 7 ||===========================|| ||===========================|| ||===========================||
Edit:
Realised it goes in order from upload. First file = First upload. Last file = Last upload (latest).
Wasn't exactly rocket science.. Moving on swiftly!
Last edited by Zota; 03-26-2012 at 11:06 PM.
Yes, G is the newest;
Here is a fix for [G], will release it officially soon!
Simba Code:program PestControllerBETA;
{$DEFINE SMART}
{$i srl\srl.simba}
{.include SRL/SRL/Skill/Fighting.simba}
//P1nky's PestController
//BETA Version
//Make sure to have Auto Retiable off.
//Set Character Outside the Boat.
const
SpecialAttacks = True;
QuickPrayer = True; //Make sure to have Quick Prayer Set!
Faster500 = True; //Having trouble getting your '500'? Well this will help you get over it!
SRLStats_Username = ''; // Your SRL Stats Username (Optional) Register here: [url]http://stats.villavu.com/[/url]
SRLStats_Password = '';// Your SRL Stats Password (Optional) Register here: [url]http://stats.villavu.com/[/url]
WhatBoat = 'N';{
Intermediate
Advance
Novice }
procedure DeclarePlayerz;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Your Runescape username
Players[0].Pass := ''; //Your Runescape password
Players[0].Active := True; //Set to true if you want to use this player. Set to False to disable this player.
Players[0].Pin := ''; //Leave blank if the player doesn't have a Bank PIN.
end;
var
Reward, games, win, lost, Rp, Pp, Yp, yellow, white, LeftGate, DTMSPOT2, DTMSPOT3, DTMSPOT, x, y, counter: integer;
procedure FindRandoms;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
// FindNormalRandoms;
wait(Random(100) + 20);
exit;
end;
function Step1: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 933;
dtmMainPoint.y := 115;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 1452869;
dtmMainPoint.Tolerance := 20;
dtmSubPoints[0].x := 933;
dtmSubPoints[0].y := 115;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 1452869;
dtmSubPoints[0].Tolerance := 20;
dtmSubPoints[1].x := 933;
dtmSubPoints[1].y := 121;
dtmSubPoints[1].AreaSize := 3;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 4357778;
dtmSubPoints[1].Tolerance := 20;
dtmSubPoints[2].x := 923;
dtmSubPoints[2].y := 114;
dtmSubPoints[2].AreaSize := 3;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2844546;
dtmSubPoints[2].Tolerance := 20;
dtmSubPoints[3].x := 931;
dtmSubPoints[3].y := 104;
dtmSubPoints[3].AreaSize := 3;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 2513523;
dtmSubPoints[3].Tolerance := 20;
dtmSubPoints[4].x := 941;
dtmSubPoints[4].y := 114;
dtmSubPoints[4].AreaSize := 3;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 5218735;
dtmSubPoints[4].Tolerance := 20;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
function step2: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 629;
dtmMainPoint.y := 164;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 125670;
dtmMainPoint.Tolerance := 21;
dtmSubPoints[0].x := 629;
dtmSubPoints[0].y := 164;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 125670;
dtmSubPoints[0].Tolerance := 21;
dtmSubPoints[1].x := 627;
dtmSubPoints[1].y := 156;
dtmSubPoints[1].AreaSize := 3;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 3042439;
dtmSubPoints[1].Tolerance := 21;
dtmSubPoints[2].x := 635;
dtmSubPoints[2].y := 165;
dtmSubPoints[2].AreaSize := 3;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 3042439;
dtmSubPoints[2].Tolerance := 21;
dtmSubPoints[3].x := 630;
dtmSubPoints[3].y := 171;
dtmSubPoints[3].AreaSize := 3;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 3042439;
dtmSubPoints[3].Tolerance := 21;
dtmSubPoints[4].x := 622;
dtmSubPoints[4].y := 165;
dtmSubPoints[4].AreaSize := 3;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 3042439;
dtmSubPoints[4].Tolerance := 21;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
function Step3: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 741;
dtmMainPoint.y := 175;
dtmMainPoint.AreaSize := 0;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 863541;
dtmMainPoint.Tolerance := 15;
dtmSubPoints[0].x := 741;
dtmSubPoints[0].y := 175;
dtmSubPoints[0].AreaSize := 0;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 863541;
dtmSubPoints[0].Tolerance := 15;
dtmSubPoints[1].x := 739;
dtmSubPoints[1].y := 173;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 16249839;
dtmSubPoints[1].Tolerance := 15;
dtmSubPoints[2].x := 744;
dtmSubPoints[2].y := 169;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2976616;
dtmSubPoints[2].Tolerance := 15;
dtmSubPoints[3].x := 737;
dtmSubPoints[3].y := 169;
dtmSubPoints[3].AreaSize := 0;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 2841950;
dtmSubPoints[3].Tolerance := 15;
dtmSubPoints[4].x := 734;
dtmSubPoints[4].y := 173;
dtmSubPoints[4].AreaSize := 0;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 16249839;
dtmSubPoints[4].Tolerance := 15;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
procedure ReportScreen(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 ReportSmart;
begin
ReportScreen(['P1nkys PestController', '', 'Worked For ' + TimeRunning, '', 'Games Played ' + IntToStr(Games)], Point(350, 223), 255);
end;
procedure SPOT1;
begin
Status('Spot 1');
SetRun(True);
MakeCompass('S');
DTMSPOT := Step1;
if DTMRotated(DTMSPOT, X, Y, MMX1, MMY1, MMX2, MMY2) then
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, True);
FFlag(0);
wait(Random(1000) + 500);
end;
procedure SPOT2;
begin
Status('Spot 2');
MakeCompass('S');
DTMSPOT2 := Step2;
if DTMRotated(DTMSPOT2, X, Y, MMX1, MMY1, MMX2, MMY2) then
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, True);
FFlag(0);
wait(1300);
end;
function AwayFromVoid: boolean;
var
C: Integer;
begin
C := 42342;
if not (C > 4) then
begin
result := false;
exit;
TerminateScript;
end
else
result := true;
Spot1;
end;
function Clan: boolean;
var
X, Y: Integer;
begin
Result := (FindColor(X, Y, 3226804, 460, 30, 461, 29));
end;
function RewardBox: Boolean;
begin
if (Clan) then
begin
Mouse(475, 29, 1, 1, True);
end;
if FindColorTolerance(x, y, 986895, 134, 96, 435, 334, 1) then
begin
Result := True;
Mouse(392, 60, 0, 0, true);
Reward := Reward + 1;
end
else
Result := False;
end;
procedure WinOrLose;
begin
Status('Checking if Win Game Or Lose');
RewardBox;
MakeCompass('S');
ReportSmart;
if FindNPCChatText('Congratulations!', True) then
begin
win := win + 1;
stats_IncVariable('PC Points Earned', 2);
exit;
end
else if FindNPCChatText('noticed', True) or FindNPCChatText('lost.', True) then
begin
lost := lost + 1;
exit;
end
else
begin
exit;
end;
end;
function InBoat: Boolean;
begin
result := (getColor(19, 30) = 13421772) and (getColor(19, 51) = 3265113);
end;
function NPC: Boolean;
begin
FindRandoms;
if FindNPCChatText('ritual', True) or FindNPCChatText('Congratulations!', True) or FindNPCChatText('knights', True) or FindNPCChatText('lost.', True) or FindText(x, y, 'attle', UpChars, MCX1, MCY1, MCX2, MCY2) or FindText(x, y, 'defend the Void Knight', UpChars, MCX1, MCY1, MCX2, MCY2) then
begin
Result := True;
Writeln('NPC Message Detected!');
if (FindColorSpiralTolerance(x, y, 540186, 136, 379, 415, 470, 25)) then
Status('NPC Message');
MMouse(x, y, 0, 0);
wait(Random(200) + 20);
Mouse(x, y, 0, 0, true);
WinOrLose;
end
else
Result := False;
end;
procedure RandomButton;
begin
if not (Faster500) then
case Random(3) of
0:
begin
KeyDown(VK_Left);
wait(Random(600) + 500);
KeyUp(VK_Left);
end;
1:
begin
KeyDown(VK_Right);
wait(Random(600) + 500);
KeyUp(VK_Right);
end;
2:
begin
KeyDown(VK_Up);
wait(Random(200) + 500);
KeyUp(VK_Up);
end;
end;
if (Faster500) then
case Random(5) of
0:
begin
KeyDown(VK_Left);
wait(Random(200) + 20);
KeyUp(VK_Left);
end;
1:
begin
KeyDown(VK_Right);
wait(Random(200) + 20);
KeyUp(VK_Right);
end;
2:
begin
wait(Random(100) + 20);
end;
3:
begin
wait(Random(100) + 20);
end;
4:
begin
wait(Random(100) + 20);
end;
end;
end;
procedure Report;
var
Answer, WC: Integer;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
cleardebug;
SRLRandomsReport;
Writeln('||===========================||');
Writeln('|| P1nkys PestController ||');
Writeln('||===========================||');
Writeln('|| ' + TheDate(Date_Formal) + ' ||');
Writeln('||===========================||');
Writeln(' Worked For ' + TimeRunning);
Writeln(' Games Played ' + IntToStr(Games));
Writeln('||===========================||');
ReportSmart;
Stats_Commit;
end;
procedure AntiBan;
var
NoBan: Integer;
begin
Noban := Random(18);
case Move of
0: MMouse(x, y, (10 + random(350)), (10 + random(200)));
1: MMouse(x, y, (10 + random(400)), (10 + random(600)));
2: MMouse(x, y, (10 + random(550)), (10 + random(400)));
3: MMouse(x, y, (10 + random(500)), (10 + random(400)));
4: MMouse(Random(MSX2), Random(MSY2), 0, 0);
5: RandomRclick;
6: RandomButton;
10: setangle(1)
end;
end;
function InGame: Boolean;
begin
result := (getColor(370, 74) = 16711935) and (getColor(404, 70) = 16737894);
end;
procedure BoatWait;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
repeat
Status('Waiting In Boat');
ReportSmart;
RandomButton;
FindRandoms;
Report;
wait(Random(100) + 20);
until (NPC) or (Ingame);
Games := Games + 1;
exit;
end;
function FindBoard(x, y: Integer): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
SetColorSpeed2Modifiers(1, 3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 4942983, MSX1, MSY1, MSX2, MSY2, 3);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 2, 2);
for I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 1, 1);
if (IsUpTextMultiCustom(['Gangplank'])) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;
procedure Plank;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
Status('Searching For Plank');
WinOrLose;
FindRandoms;
case WhatBoat of
'N','n','novice','Novice','I','inter','i','Intermediate','intermediate' :
begin
MakeCompass('S');
KeyDown(VK_Down);
wait(Random(650) + 500);
KeyUp(VK_Down);
end;
'A','a','adv','advance','Advance' :
begin
MakeCompass('W');
Setangle(0);
{ KeyDown(VK_Down);
wait(Random(650) + 500);
KeyUp(VK_Down); }
end;
end;
repeat
RewardBox;
ReportSmart;
if not RewardBox then
if FindBoard(x, y) then
Status('Looking for Plank');
wait(200 + random(232));
if Isuptext('angplank') then
ClickMouse2(true);
until (FindBlackChatMessage('You board the lander') or (ingame) or FindBlackChatMessage('reach that') or (InBoat)) Setangle(0);
FindRandoms;
Report;
NPC;
exit;
end;
function Range: Boolean;
begin
if (FindColorSpiralTolerance(x, y, 5372475, 267, 132, 292, 160, 1)) then
begin
Result := True;
Writeln('TRUE');
end
else
Result := False;
Writeln('False');
end;
var
qp: integer;
procedure QPrayer;
begin
if QuickPrayer then
QP := DTMFromString('mbQAAAHicY2VgYFBmZGBQAmItKC0JxGuA4kuBeB0QbwXi9UB88+1dhrVbNoAxiB1h38yADTBiwWAAAKBQDp8=');
if FindDTM(QP, x, y, 701, 52, 733, 79) then
begin
MMouse(x, y, 0, 0);
Mouse(x, y, 0, 0, true);
end
else
exit;
end;
procedure SpecAttack;
begin
if SpecialAttacks then
begin
Writeln('Toggling Special');
Status('Special Attack ON');
MouseBox(528, 179, 545, 195, 1);
begin
if (FindColorSpiralTolerance(x, y, 3566664, 545, 208, 738, 430, 25)) then
Status('Special');
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, true);
end;
end;
end;
function EFindObjCustom(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol: Integer): Boolean;
begin
Result := FindObjEx(cx, cy, Text, Color, Tol, 50, 33, 134, 542, 465);
end;
procedure FightPests;
var
Z, R, CTS: Integer;
begin
Status('Fighting Pests');
if not (EFindObjCustom(x, y, ['hifter', 'Shifte', 'Shifter', 'hift'], [2108184, 5051472, 3228504, 4942983,3162776], 3)) then
begin
if (counter > 1000) then
begin
Report;
counter := 0;
end;
R := Random(4);
case R of
0: RandomButton;
1: wait(Random(25) + 20);
2: wait(Random(25) + 20);
3: wait(Random(25) + 20);
end;
Exit;
end
else
Mmouse(x, y, 0, 0);
wait(Random(100) + 20);
if isuptext('ttac') then
begin
if not Faster500 then
begin
Mouse(x, y, 0, 0, False);
ChooseOption('ttack');
end
else
begin
Mouse(x, y, 0, 0, true);
wait(random(500) + 100);
end;
if Faster500 then
begin
wait(Random(100) + 20);
Report;
end
else
wait(2000);
Report;
end;
end;
function Portal(Name: string): Boolean;
begin
case Name of
'red':
if (FindBlackChatMessage('south-western')) then
begin
Result := True;
Writeln('Red Portal Shield Down!');
Exit;
end
else
Result := False;
'yellow':
if (FindBlackChatMessage('south-eastern')) then
begin
Result := True;
Writeln('Yellow Portal Shield Down!');
Exit;
end
else
Result := False;
end;
end;
procedure FreeMem;
begin
FreeDTM(step1);
FreeDTM(step2);
FreeDTM(step3);
end;
begin
Disguise('P1nky PestController');
ClearDebug;
ClearReport;
Smart_Server := 17;
Smart_Members := false;
Smart_Signed := true;
Smart_SuperDetail := false;
begin
if (SRLStats_Username = '') then
SetupSRLStats(654, 'Anonymous', 'anon1337')
else
SetupSRLStats(654, SRLStats_Username, SRLStats_Password);
SetUpSRL;
declareplayerz;
ActivateClient;
counter := 0;
ClearDebug;
LoginPlayer;
Inc(counter);
repeat
begin
FreeMem;
NPC;
Report;
Plank;
BoatWait;
begin
Spot1;
Spot2;
begin
SpecAttack;
QPrayer;
end;
repeat
FightPests
until not (Ingame);
end;
end;
spot2;
until (false);
end;
end.
been using it for a couple days now like 200 commendations
thanks man
I noticed I only get 356 exp for commendation? What happened to that? I used to get 1000 per commendation... Jagex nerfed it? So pestcontrol isn't such a great EXP p/h minigame anymore.
Great script nonetheless.
Luke
====================================|
| ~ SRL ~ |
| Randoms Report |
|────────────────────────────────────|
| |
| |
|────────────────────────────────────|
|====================================|
||===========================||
|| P1nkys PestController ||
||===========================||
|| March 27th, 2012 ||
||===========================||
Worked For 8 Minutes and 14 Seconds
Games Played 1
||===========================||
NPC Message Detected!
Warning! You passed wrong values to a finder function: ys > ye (30,29). Swapping the values for now.
help pls
Hey pinky, quick question
I have been using your script for a long time now and i enjoy it alot.
I was just wondering if you were ever thinking about making another script.. maybe a Cannon script?
Been wanting to get my pures range up with cannon but its so time consuming.
Any thoughts on it?
![]()
the fix for g that you posted works like a charm. i love it. old pc(g) was a little buggy, going off of the pyramid, but this one works amazingly.
Edit: it actually walks away from the plank, and so far thats the only problem that i've seen so far.
Last edited by duwell; 03-28-2012 at 06:03 AM.
this doesnt work for me, it just goes to a random spot and stands there the whole time.
i get this message "Warning! You passed wrong values to a finder function: ys > ye (30,29). Swapping the values for now."
Can some1 help me pls???
thanks
Currently trying this, will post proggy when done.. so far it keeps running off the boats though all the way round the island near the general store, any ideas?
i would of posted a proggy, but my girlfriend closed it, last i saw it was on 7 hours, with like 140 games played 90 won. something like that.
it misses the pyramid goes off to the side and looks for monsters it doesnt hit 1 thing
Im getting this error "[Error] (35:5): Unknown identifier 'FindLamp' at line 34
Compiling failed." How do i fix?
Last edited by elvenom; 03-29-2012 at 02:31 AM.
Use this:
Simba Code:program PestControllerBETA;
{$DEFINE SMART}
{$i srl\srl.simba}
{.include SRL/SRL/Skill/Fighting.simba}
//P1nky's PestController
//BETA Version
//Make sure to have Auto Retiable off.
//Set Character Outside the Boat.
const
SpecialAttacks = True;
QuickPrayer = True; //Make sure to have Quick Prayer Set!
Faster500 = True; //Having trouble getting your '500'? Well this will help you get over it!
SRLStats_Username = ''; // Your SRL Stats Username (Optional) Register here: [url]http://stats.villavu.com/[/url]
SRLStats_Password = '';// Your SRL Stats Password (Optional) Register here: [url]http://stats.villavu.com/[/url]
WhatBoat = 'N';{
Intermediate
Advance
Novice }
procedure DeclarePlayerz;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //Your Runescape username
Players[0].Pass := ''; //Your Runescape password
Players[0].Active := True; //Set to true if you want to use this player. Set to False to disable this player.
Players[0].Pin := ''; //Leave blank if the player doesn't have a Bank PIN.
end;
var
Reward, games, win, lost, Rp, Pp, Yp, yellow, white, LeftGate, DTMSPOT2, DTMSPOT3, DTMSPOT, x, y, counter: integer;
procedure FindRandoms;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
// FindNormalRandoms;
wait(Random(100) + 20);
exit;
end;
function Step1: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 933;
dtmMainPoint.y := 115;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 1452869;
dtmMainPoint.Tolerance := 20;
dtmSubPoints[0].x := 933;
dtmSubPoints[0].y := 115;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 1452869;
dtmSubPoints[0].Tolerance := 20;
dtmSubPoints[1].x := 933;
dtmSubPoints[1].y := 121;
dtmSubPoints[1].AreaSize := 3;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 4357778;
dtmSubPoints[1].Tolerance := 20;
dtmSubPoints[2].x := 923;
dtmSubPoints[2].y := 114;
dtmSubPoints[2].AreaSize := 3;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2844546;
dtmSubPoints[2].Tolerance := 20;
dtmSubPoints[3].x := 931;
dtmSubPoints[3].y := 104;
dtmSubPoints[3].AreaSize := 3;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 2513523;
dtmSubPoints[3].Tolerance := 20;
dtmSubPoints[4].x := 941;
dtmSubPoints[4].y := 114;
dtmSubPoints[4].AreaSize := 3;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 5218735;
dtmSubPoints[4].Tolerance := 20;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
function step2: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 629;
dtmMainPoint.y := 164;
dtmMainPoint.AreaSize := 3;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 125670;
dtmMainPoint.Tolerance := 21;
dtmSubPoints[0].x := 629;
dtmSubPoints[0].y := 164;
dtmSubPoints[0].AreaSize := 3;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 125670;
dtmSubPoints[0].Tolerance := 21;
dtmSubPoints[1].x := 627;
dtmSubPoints[1].y := 156;
dtmSubPoints[1].AreaSize := 3;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 3042439;
dtmSubPoints[1].Tolerance := 21;
dtmSubPoints[2].x := 635;
dtmSubPoints[2].y := 165;
dtmSubPoints[2].AreaSize := 3;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 3042439;
dtmSubPoints[2].Tolerance := 21;
dtmSubPoints[3].x := 630;
dtmSubPoints[3].y := 171;
dtmSubPoints[3].AreaSize := 3;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 3042439;
dtmSubPoints[3].Tolerance := 21;
dtmSubPoints[4].x := 622;
dtmSubPoints[4].y := 165;
dtmSubPoints[4].AreaSize := 3;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 3042439;
dtmSubPoints[4].Tolerance := 21;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
function Step3: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
dtmMainPoint.x := 741;
dtmMainPoint.y := 175;
dtmMainPoint.AreaSize := 0;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := 863541;
dtmMainPoint.Tolerance := 15;
dtmSubPoints[0].x := 741;
dtmSubPoints[0].y := 175;
dtmSubPoints[0].AreaSize := 0;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 863541;
dtmSubPoints[0].Tolerance := 15;
dtmSubPoints[1].x := 739;
dtmSubPoints[1].y := 173;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 16249839;
dtmSubPoints[1].Tolerance := 15;
dtmSubPoints[2].x := 744;
dtmSubPoints[2].y := 169;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2976616;
dtmSubPoints[2].Tolerance := 15;
dtmSubPoints[3].x := 737;
dtmSubPoints[3].y := 169;
dtmSubPoints[3].AreaSize := 0;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 2841950;
dtmSubPoints[3].Tolerance := 15;
dtmSubPoints[4].x := 734;
dtmSubPoints[4].y := 173;
dtmSubPoints[4].AreaSize := 0;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 16249839;
dtmSubPoints[4].Tolerance := 15;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
procedure ReportScreen(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 ReportSmart;
begin
ReportScreen(['P1nkys PestController', '', 'Worked For ' + TimeRunning, '', 'Games Played ' + IntToStr(Games)], Point(350, 223), 255);
end;
procedure SPOT1;
begin
Status('Spot 1');
SetRun(True);
MakeCompass('S');
DTMSPOT := Step1;
if DTMRotated(DTMSPOT, X, Y, MMX1, MMY1, MMX2, MMY2) then
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, True);
FFlag(0);
wait(Random(1000) + 500);
end;
procedure SPOT2;
begin
Status('Spot 2');
MakeCompass('S');
DTMSPOT2 := Step2;
if DTMRotated(DTMSPOT2, X, Y, MMX1, MMY1, MMX2, MMY2) then
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, True);
FFlag(0);
wait(1300);
end;
function AwayFromVoid: boolean;
var
C: Integer;
begin
C := 42342;
if not (C > 4) then
begin
result := false;
exit;
TerminateScript;
end
else
result := true;
Spot1;
end;
function Clan: boolean;
var
X, Y: Integer;
begin
Result := (FindColor(X, Y, 3226804, 460, 30, 461, 29));
end;
function RewardBox: Boolean;
begin
if (Clan) then
begin
Mouse(475, 29, 1, 1, True);
end;
if FindColorTolerance(x, y, 986895, 134, 96, 435, 334, 1) then
begin
Result := True;
Mouse(392, 60, 0, 0, true);
Reward := Reward + 1;
end
else
Result := False;
end;
procedure WinOrLose;
begin
Status('Checking if Win Game Or Lose');
RewardBox;
MakeCompass('S');
ReportSmart;
if FindNPCChatText('Congratulations!', True) then
begin
win := win + 1;
stats_IncVariable('PC Points Earned', 2);
exit;
end
else if FindNPCChatText('noticed', True) or FindNPCChatText('lost.', True) then
begin
lost := lost + 1;
exit;
end
else
begin
exit;
end;
end;
function InBoat: Boolean;
begin
result := (getColor(19, 30) = 13421772) and (getColor(19, 51) = 3265113);
end;
function NPC: Boolean;
begin
FindRandoms;
if FindNPCChatText('ritual', True) or FindNPCChatText('Congratulations!', True) or FindNPCChatText('knights', True) or FindNPCChatText('lost.', True) or FindText(x, y, 'attle', UpChars, MCX1, MCY1, MCX2, MCY2) or FindText(x, y, 'defend the Void Knight', UpChars, MCX1, MCY1, MCX2, MCY2) then
begin
Result := True;
Writeln('NPC Message Detected!');
if (FindColorSpiralTolerance(x, y, 540186, 136, 379, 415, 470, 25)) then
Status('NPC Message');
MMouse(x, y, 0, 0);
wait(Random(200) + 20);
Mouse(x, y, 0, 0, true);
WinOrLose;
end
else
Result := False;
end;
procedure RandomButton;
begin
if not (Faster500) then
case Random(3) of
0:
begin
KeyDown(VK_Left);
wait(Random(600) + 500);
KeyUp(VK_Left);
end;
1:
begin
KeyDown(VK_Right);
wait(Random(600) + 500);
KeyUp(VK_Right);
end;
2:
begin
KeyDown(VK_Up);
wait(Random(200) + 500);
KeyUp(VK_Up);
end;
end;
if (Faster500) then
case Random(5) of
0:
begin
KeyDown(VK_Left);
wait(Random(200) + 20);
KeyUp(VK_Left);
end;
1:
begin
KeyDown(VK_Right);
wait(Random(200) + 20);
KeyUp(VK_Right);
end;
2:
begin
wait(Random(100) + 20);
end;
3:
begin
wait(Random(100) + 20);
end;
4:
begin
wait(Random(100) + 20);
end;
end;
end;
procedure Report;
var
Answer, WC: Integer;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
cleardebug;
SRLRandomsReport;
Writeln('||===========================||');
Writeln('|| P1nkys PestController ||');
Writeln('||===========================||');
Writeln('|| ' + TheDate(Date_Formal) + ' ||');
Writeln('||===========================||');
Writeln(' Worked For ' + TimeRunning);
Writeln(' Games Played ' + IntToStr(Games));
Writeln('||===========================||');
ReportSmart;
Stats_Commit;
end;
procedure AntiBan;
var
NoBan: Integer;
begin
Noban := Random(18);
case Move of
0: MMouse(x, y, (10 + random(350)), (10 + random(200)));
1: MMouse(x, y, (10 + random(400)), (10 + random(600)));
2: MMouse(x, y, (10 + random(550)), (10 + random(400)));
3: MMouse(x, y, (10 + random(500)), (10 + random(400)));
4: MMouse(Random(MSX2), Random(MSY2), 0, 0);
5: RandomRclick;
6: RandomButton;
10: setangle(1)
end;
end;
function InGame: Boolean;
begin
result := (getColor(370, 74) = 16711935) and (getColor(404, 70) = 16737894);
end;
procedure BoatWait;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
repeat
Status('Waiting In Boat');
ReportSmart;
RandomButton;
FindRandoms;
Report;
wait(Random(100) + 20);
until (NPC) or (Ingame);
Games := Games + 1;
exit;
end;
function FindBoard(x, y: Integer): Boolean;
var
CTS, I: Integer;
TPA: TPointArray;
ATPA: array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(1);
SetColorSpeed2Modifiers(1, 3);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 4942983, MSX1, MSY1, MSX2, MSY2, 3);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 2, 2);
for I := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 1, 1);
if (IsUpTextMultiCustom(['Gangplank'])) then
begin
Result := True;
GetMousePos(x, y);
Break;
end;
end;
end;
procedure Plank;
begin
if not (LoggedIn) or not (Players[CurrentPlayer].Active) then
NextPlayer(True);
Status('Searching For Plank');
WinOrLose;
FindRandoms;
case WhatBoat of
'N','n','novice','Novice','I','inter','i','Intermediate','intermediate' :
begin
MakeCompass('S');
KeyDown(VK_Down);
wait(Random(650) + 500);
KeyUp(VK_Down);
end;
'A','a','adv','advance','Advance' :
begin
MakeCompass('W');
Setangle(0);
{ KeyDown(VK_Down);
wait(Random(650) + 500);
KeyUp(VK_Down); }
end;
end;
repeat
RewardBox;
ReportSmart;
if not RewardBox then
if FindBoard(x, y) then
Status('Looking for Plank');
wait(200 + random(232));
if Isuptext('angplank') then
ClickMouse2(true);
until (FindBlackChatMessage('You board the lander') or (ingame) or FindBlackChatMessage('reach that') or (InBoat)) Setangle(0);
FindRandoms;
Report;
NPC;
exit;
end;
function Range: Boolean;
begin
if (FindColorSpiralTolerance(x, y, 5372475, 267, 132, 292, 160, 1)) then
begin
Result := True;
Writeln('TRUE');
end
else
Result := False;
Writeln('False');
end;
var
qp: integer;
procedure QPrayer;
begin
if QuickPrayer then
QP := DTMFromString('mbQAAAHicY2VgYFBmZGBQAmItKC0JxGuA4kuBeB0QbwXi9UB88+1dhrVbNoAxiB1h38yADTBiwWAAAKBQDp8=');
if FindDTM(QP, x, y, 701, 52, 733, 79) then
begin
MMouse(x, y, 0, 0);
Mouse(x, y, 0, 0, true);
end
else
exit;
end;
procedure SpecAttack;
begin
if SpecialAttacks then
begin
Writeln('Toggling Special');
Status('Special Attack ON');
MouseBox(528, 179, 545, 195, 1);
begin
if (FindColorSpiralTolerance(x, y, 3566664, 545, 208, 738, 430, 25)) then
Status('Special');
MMouse(x, y, 0, 0);
wait(Random(100) + 20);
Mouse(x, y, 0, 0, true);
end;
end;
end;
function EFindObjCustom(var cx, cy: Integer; Text: TStringArray; Color: TIntegerArray; Tol: Integer): Boolean;
begin
Result := FindObjEx(cx, cy, Text, Color, Tol, 50, 33, 134, 542, 465);
end;
procedure FightPests;
var
Z, R, CTS: Integer;
begin
Status('Fighting Pests');
if not (EFindObjCustom(x, y, ['hifter', 'Shifte', 'Shifter', 'hift'], [2108184, 5051472, 3228504, 4942983,3162776], 3)) then
begin
if (counter > 1000) then
begin
Report;
counter := 0;
end;
R := Random(4);
case R of
0: RandomButton;
1: wait(Random(25) + 20);
2: wait(Random(25) + 20);
3: wait(Random(25) + 20);
end;
Exit;
end
else
Mmouse(x, y, 0, 0);
wait(Random(100) + 20);
if isuptext('ttac') then
begin
if not Faster500 then
begin
Mouse(x, y, 0, 0, False);
ChooseOption('ttack');
end
else
begin
Mouse(x, y, 0, 0, true);
wait(random(500) + 100);
end;
if Faster500 then
begin
wait(Random(100) + 20);
Report;
end
else
wait(2000);
Report;
end;
end;
function Portal(Name: string): Boolean;
begin
case Name of
'red':
if (FindBlackChatMessage('south-western')) then
begin
Result := True;
Writeln('Red Portal Shield Down!');
Exit;
end
else
Result := False;
'yellow':
if (FindBlackChatMessage('south-eastern')) then
begin
Result := True;
Writeln('Yellow Portal Shield Down!');
Exit;
end
else
Result := False;
end;
end;
procedure FreeMem;
begin
FreeDTM(step1);
FreeDTM(step2);
FreeDTM(step3);
end;
begin
Disguise('P1nky PestController');
ClearDebug;
ClearReport;
Smart_Server := 17;
Smart_Members := false;
Smart_Signed := true;
Smart_SuperDetail := false;
begin
if (SRLStats_Username = '') then
SetupSRLStats(654, 'Anonymous', 'anon1337')
else
SetupSRLStats(654, SRLStats_Username, SRLStats_Password);
SetUpSRL;
declareplayerz;
ActivateClient;
counter := 0;
ClearDebug;
LoginPlayer;
Inc(counter);
repeat
begin
FreeMem;
NPC;
Report;
Plank;
BoatWait;
begin
Spot1;
Spot2;
begin
SpecAttack;
QPrayer;
end;
repeat
FightPests
until not (Ingame);
end;
end;
spot2;
until (false);
end;
end.
I did quick fix on Advance and Novice, idk about Intermediate!
There are currently 1 users browsing this thread. (0 members and 1 guests)