Pancakes
2007-07-04 09:45:03
Pancakes - SRL Member Application Form
Pancakes
What is the meaning to life?
Where you Referred to SRL? If yes, by whom?
no
Programming Knowledge
Visual Basic 6, ActionScript
Other Communitys
http://www.vbforums.net, http://www.kirupa.com
How Long have You Played Runescape
3 years on and off.
Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.
Because I come from a family background of computers (My dad is a computer programmer for Telsta, an Australian Company) I have been around and using computers since a young age. I first got into programming at around age 12, just some simple actionscript (which is used with Macromedia, now Adobe Flash). At 14 I bought a book on 'Learn Visual Basic in 21 Days' and studied that. I became very skilled at visual basic, but eventually my interest dropped because I had no real uses for my knowledge. A week and a half ago I discovered this site, and it re-ignited my love for programming. I studied SRL and Scar, asked a few questions around the place, and now I am able to write a fully-fledged script.
——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted
PLEASE Note YoHoJo - I have Wizzups permission to make this application - I am confident that I will be accepted this time. Thanks, Pancakes.
Pancakes Chicken Obliterator - Features Deathwalk!
program ChickenObliterator;
{.include SRL/SRL.scar}
{.include SRL\SRL\Skill\Fighting.scar}
{
___ __ __
/\ _`\ /\ \ __ /\ \ _
\ \ \/\_\\ \ \___ /\_\ ___\ \ \/'\ __ ___
\ \ \/_/_\ \ _ `\/\ \ /'___\ \ , < /'__`\/' _ `\
\ \ \L\ \\ \ \ \ \ \ \/\ \__/\ \ \\`\ /\ __//\ \/\ \
\ \____/ \ \_\ \_\ \_\ \____\\ \_\ \_\ \____\ \_\ \_\
\/___/ \/_/\/_/\/_/\/____/ \/_/\/_/\/____/\/_/\/_/
Pancakes Chicken Obliterator
_____ __ ___ __ __
/\ __`\/\ \ /\_ \ __/\ \__ /\ \__
\ \ \/\ \ \ \____\//\ \ /\_\ \ ,_\ __ _ __ __ \ \ ,_\ ___ _ __
\ \ \ \ \ \ '__`\ \ \ \ \/\ \ \ \/ /'__`\/\`'__\/'__`\ \ \ \/ / __`\/\`'__\
\ \ \_\ \ \ \L\ \ \_\ \_\ \ \ \ \_/\ __/\ \ \//\ \L\.\_\ \ \_/\ \L\ \ \ \/
\ \_____\ \_,__/ /\____\\ \_\ \__\ \____\\ \_\\ \__/.\_\\ \__\ \____/\ \_\
\/_____/\/___/ \/____/ \/_/\/__/\/____/ \/_/ \/__/\/_/ \/__/\/___/ \/_/
}
var MainMark, RunTimeMark, ChickensKilled : Integer;
label ScriptStart;
const LoggedInFor = 5; //Time to be logged in for each player, in MINUTES!
{***************************************************************************************************}
procedure DeclarePlayers;
begin
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := 'Whatever.';
Players[0].Pass := 'Again.Whatever';
Players[0].Nick := 'YourNickName.Whatever';
Players[0].Loc := 'Lumbridge';
Players[0].Active := True;
Players[1].Name := 'Whatever';
Players[1].Pass := 'AgainWhaterv';
Players[1].Nick := 'Yournick...';
Players[1].Loc := 'Chickens';
Players[1].Active := True;
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
end;
{***************************************************************************************************}
function JadSymbol(WhatSymbol: String; Click, Switch: Boolean): Boolean; //By JAD
var I: Integer;
begin
for I := 1 to 25 do
begin
if(FindSymbol(x,y,(WhatSymbol)))then
begin
if(Click)then
Mouse(x,y,2,2,true);
Result := True;
Exit;
end;
wait(750+random(500));
end;
Writeln('Could NOT find symbol.');
Result := False;
if(Switch)then
LogOut;
end;
function CheckLumby : Boolean;
begin
if (JadSymbol('quest', False, False)) then
begin
Result := True;
Exit;
end;
end;
procedure LumbyToChickens;
var x, y : Integer;
begin
HighestAngle;
MakeCompass('N');
RadialRoadWalk(FindRoadColor, 70, 40, 70, -1, 0);
Flag;
RadialRoadWalk(FindRoadColor, 60, 140, 70, +10, +5 );
Flag;
RadialRoadWalk(FindRoadColor, 320, 400, 65, -1, 0);
Flag;
RadialRoadWalk(FindRoadColor, 315, 338, 65, -1, 0);
Flag;
RadialRoadWalk(FindRoadColor, 325, 340, 65, -1, 0);
Flag;
RadialRoadWalk(FindRoadColor, 330, 345, 75, -1, 0);
Flag;
RadialRoadWalk(FindRoadColor, 315, 350, 55, -1, 0);
Flag;
//CHICKENS!
Players[CurrentPlayer].Loc := 'Chickens';
end;
procedure Signature;
begin
ClearDebug;
Writeln('_________ SCRIPT BY: __ ');
Wait(200);
Writeln('\______ \_____ ____ ____ _____ | | __ ____ ______ ');
Wait(200);
Writeln(' | ___/\__ \ / \_/ ___\\__ \ | |/ // __ \ / ___/ ');
Wait(200);
Writeln(' | | / __ \| | \ \___ / __ \| <\ ___/ \___ \ ');
Wait(200);
Writeln(' |____| (____ /___| /\___ >____ /__|_ \\___ >____ > ');
Wait(200);
Writeln(' \/ \/ \/ \/ \/ \/ \/ ');
Wait(200);
Wait(2000);
end;
procedure ProgressReport;
var HoursRun, MinutesRun, SecondsRun : Integer;
begin
ConvertTime(TimeFromMark(RunTimeMark), HoursRun, MinutesRun, SecondsRun);
ClearDebug;
Writeln('[----------------- Chicken Obliterator -----------------]');
Writeln(' Killed: ' + IntToStr(ChickensKilled) + ' chickens.');
Writeln(' Worked for: ' + IntToStr(HoursRun) + ' hours, ' + IntToStr(MinutesRun) + ' minutes and ' + IntToStr(SecondsRun) + ' seconds.');
Writeln('[-------------------------------------------------------]');
end;
procedure MySetFightStyle;
var AttackExp, StrengthExp, DefenceExp : Integer;
begin
if (not(LoggedIn)) then Exit;
GameTab(2);
Wait(200 + random(100));
AttackExp := GetXP('attack');
Writeln('Attack Experience: ' + IntToStr(AttackExp));
Wait(50 + random(50));
StrengthExp := GetXP('strength');
Writeln('Strength Experience: ' + IntToStr(StrengthExp));
DefenceExp := GetXP('defence');
Writeln('Defence Experience: ' + IntToStr(DefenceExp));
Wait(200 + random(100));
GameTab(1);
if (AttackExp < StrengthExp) and (AttackExp < DefenceExp) then SetFightMode(1);
if (StrengthExp < AttackExp) and (StrengthExp < DefenceExp) then SetFightMode(2);
if (DefenceExp < AttackExp) and (DefenceExp < StrengthExp) then SetFightMode(4);
end;
procedure AntiBan;
var RandomNumber : Integer;
var ChatRandom : Integer;
begin
if (not(LoggedIn)) then Exit;
RandomNumber := Random(300);
case RandomNumber of
0: begin HoverSkill('strength', False); Wait(2000 + random(1000)); GameTab(4); end;
1: begin HoverSkill('attack', False); Wait(2000 + random(1000)); GameTab(4); end;
2: begin HoverSkill('defence', False); Wait(2000 + random(1000)); GameTab(4); end;
3: PickUpMouse;
4: RandomRClick;
5: begin GameTab(Random(8) + 1); Wait(600 + random(1000)); GameTab(4); end;
6: Mousebox(MMX1, MMY1, MMX2, MMY2, 0);
7: AntiBan;
8: begin
ChatRandom := Random(3);
case ChatRandom of
0: SetChat('on', Random(2) + 1);
1: SetChat('hide', Random(2) + 1);
2: SetChat('friends', Random(2) + 1);
3: SetChat('off', Random(2) + 1);
end;
end;
9: Mousebox(MMX1, MMY1, MMX2, MMY2, 0);
10: AlmostLogout;
end;
end;
function FindFastRandoms: Boolean; //By WT-Fakawi.
var
i: Integer;
begin
if (not(LoggedIn)) then Exit;
for i := 1 to 8 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
end;
end;
7: begin
if InBlack then
begin
Result := True;
end;
end;
8: RC;
end;
wait(1);
end;
end;
procedure AntiRandoms;
begin
if (not(LoggedIn)) then Exit;
FindTalk;
FindNormalRandoms;
if (FindFastRandoms) then
begin
//We are in an unsolvable random, logout and deactivate player.
Logout;
NextPlayer(False);
end;
end;
procedure FightChickens;
var x, y : Integer;
var ChickenMark : Integer;
var WhiteChickenColor, BrownChickenColor : Integer;
var Attempts : Integer;
label AttackChicken;
label StartChickens;
begin
Attempts := 0;
StartChickens:
if (not(LoggedIn)) then Exit;
WhiteChickenColor := 8695236;
BrownChickenColor := 3038848;
if (FindObj3(x, y, 'ack', WhiteChickenColor, 4)) then
begin
goto AttackChicken;
end;
if (FindObj3(x, y, 'ack', BrownChickenColor, 4)) then
begin
goto AttackChicken;
end;
Attempts := Attempts + 1;
Wait(300);
if (Attempts > 5) then Exit;
goto StartChickens;
AttackChicken:
Mouse(x, y, 3, 3, True);
Wait(300 + Random(500));
MarkTime(ChickenMark);
repeat
if (not(InFight)) then Break;
if (TimeFromMark(ChickenMark) > 30000) then Break;
until(false);
ChickensKilled := ChickensKilled + 1;
if (FindBlackChatMessage('already')) then
begin
Wait(500 + random(200));
OutFight;
end;
end;
begin
MarkTime(RunTimeMark);
Signature;
SetupSRL;
DeclarePlayers;
ActivateClient;
LoginPlayer;
ScriptStart:
MarkTime(MainMark);
Wait(500 + random(300));
HighestAngle;
MakeCompass('N');
MySetFightStyle;
if (CheckLumby) then LumbyToChickens;
repeat
if (not(LoggedIn)) then NextPlayer(False);
FightChickens;
AntiBan;
AntiRandoms;
ProgressReport;
until(TimeFromMark(MainMark) >= LoggedInFor * 60000);
Logout;
NextPlayer(True);
goto ScriptStart;
end.EDIT: Added this one in, because I liked it :p
Pancakes Ban2Fast!
program Ban2Fast;
{.include SRL/SRL.scar}
{
____ ___ ____ __
/\ _`\ /'___`\ /\ _`\ /\ \__
\ \ \L\ \ __ ___ /\_\ /\ \ \ \ \L\_\ __ ____\ \ ,_\
\ \ _ <' /'__`\ /' _ `\ \/_/// /__ \ \ _\/'__`\ /',__\\ \ \/
\ \ \L\ \/\ \L\.\_/\ \/\ \ // /_\ \ \ \ \/\ \L\.\_/\__, `\\ \ \_
\ \____/\ \__/.\_\ \_\ \_\ /\______/ \ \_\ \__/.\_\/\____/ \ \__\
\/___/ \/__/\/_/\/_/\/_/ \/_____/ \/_/\/__/\/_/\/___/ \/__/
Use this program to own Jagex! We can all use
this script to keep Jagex busy, so they'll
look less into banning the real macroers!
This program downloads the strings from a website,
you must allow it to download the strings for
it to work.
If you would like to add to the current list of
banning strings, go to [url]www.freewebs.com[/url] and use
this information to edit the RS2.txt:
Username : rs2banner
Password : runescape
Direct link to txt file : [url]http://www.freewebs.com/rs2banner/rs2.txt[/url]
If you edit it, remember to keep all the
strings on the same line, and use
; in between them.
START LOGGED IN!
}
const NickName = 'USERNAME HERE'; //This is so everyone knows who to report - put your username in here :D
var
BanStrings : array of string;
rs2Text : string;
i : Integer;
MainMark : Integer;
Bannage : Integer;
NickSaid : Integer;
procedure ParseText;
begin
rs2Text := GetPage('http://www.freewebs.com/rs2banner/rs2.txt');
repeat
SetArrayLength(BanStrings, GetArrayLength(BanStrings) + 1);
BanStrings[GetArrayLength(BanStrings)-1] := copy(rs2Text, 1, pos(';', rs2Text) - 1);
rs2Text := Right(rs2Text, Length(rs2Text) - pos(';', rs2Text));
until (pos(';', rs2Text) = 0);
end;
{********************************************************
function JadSymbol(WhatSymbol: String; Click, Switch: Boolean): Boolean;
By: JAD
Description: My symbol finding. Repeats waiting and
looking for symbol until found or took too long. Clicks
the symbol if told to. Will switch players if it doesn't
find the symbol if told to.
********************************************************}
function JadSymbol(WhatSymbol: String; Click, Switch: Boolean): Boolean;
var I: Integer;
begin
for I := 1 to 7 do
begin
if(FindSymbol(x,y,(WhatSymbol)))then
begin
if(Click)then
Mouse(x,y,2,2,true);
Result := True;
Exit;
end;
wait(750+random(500));
end;
Writeln('Could NOT find symbol.');
Result := False;
if(Switch)then
LogOut;
end;
procedure SayRandomBan;
var
RandNum : Integer;
RandNum2 : Integer;
begin
if (ClickToContinue) then
begin
JadSymbol('bank', True, False);
end;
Bannage := Bannage + 1;
RandNum := Random(GetArrayLength(BanStrings));
TypeSend(BanStrings[RandNum]);
Wait(200);
RandNum2 := Random(3);
case RandNum2 of
2: begin
TypeSend('Remember my name loser! - ' + NickName);
NickSaid := NickSaid + 1;
end;
end;
Wait(500 + random(500));
end;
procedure ProgressReport;
begin
ClearDebug;
Writeln('::::::::: PROGRESS REPORT :::::::::');
Writeln('Rules broken ' + IntToStr(Bannage) + ' times.');
Writeln('Nickname said ' + IntToStr(NickSaid) + ' times.')
Writeln(':::::::::::::::::::::::::::::::::::');
end;
procedure RandomClickMouse;
var RandX, RandY : Integer;
begin
RandX := Random((MSX2 - MSX1)) + MSX1;
RandY := Random((MSY2 - MSY1)) + MSY1;
Mouse(RandX, RandY, 0, 0, True);
end;
begin
SetupSRL;
ClearDebug;
ParseText;
ActivateClient;
HighestAngle;
MarkTime(MainMark);
repeat
SayRandomBan;
Wait(1000 + random(5000));
RandomClickMouse;
SayRandomBan;
Wait(1000 + random(5000));
JadSymbol('bank', True, False);
ProgressReport;
until(TimeFromMark(MainMark) > 900000);
end.Pancakes Monk Annihilator
{=========================================================================]
[ Monk Annihilation ]
[ ]
[ NAME : Monk Annihilation ]
[ WRITER : Pancakes ]
[ CATEGORY : Autofighter ]
[ DESCRIPTION : Kills monks, gets them to heal you. Also buries ]
[ : bones. ]
[ USAGE : For training lvl 10+ characters. ]
[ AUTOCOLOR : Yes ]
[ NOTES : - ]
[ CONTACT : <a href="mailto:firenze_69@hotmail.com">firenze_69@hotmail.com</a> ]
[ CREDITS : JAD - Covered symbol finding ]
[ : SANTACLAUSE - Just helped :) ]
[ : WT-Fakawi - Setting Retaliation ]
[ ]
[ ]
[=========================================================================]
[ THIS MONK ANNIHILATOR WILL SEARCH FOR MONKS, THEN DESTROY ]
[ ANY THAT IT FINDS. NONE WILL STAND IN ITS WAY! ]
[=========================================================================]
[ Instructions. ]
[=========================================================================]
[ 1. USE Runescape with Low Detail, Very Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Set Playernames and Passwords in DeclarePlayers. ]
[ 4. SET HOWMANYPLAYERS inside DeclarePlayers. ]
[ 5. Set skill to either 'attack', 'strength', or 'defence'. ]
[ 6. Start script Logged Out! ]
[=========================================================================}
program SRLTemplate;
{.include SRL/SRL.scar}
{.include SRL\SRL\skill\Fighting.scar}
//******************** Set These Constants if Needed *******************//
const StartPlayer = 0; // Determines who will play first
const Loads = 3; // Number of loads before switching Player.
const MonkTolerance = 3; // Default should be fine.
const FightTimeout = 50000; // Milliseconds until
const RunDirection = 'N'; //You should leave it at north.
const TimeLoggedIn = 10; //Time before nextplayer (minutes)
const DangerHealthPercent = 50; //Health to heal at (percent).
const MonkColor = 3169157;//Monk Color
//**********************RuneScape Variables*******************************//
var
HealAttempts, MainMark : Integer;
frmDesign : TForm;
lblStatus : TLabel;
label lblStartMain;
//************************************************************************//
const VersionNumber = 'Version 1'; // Compliant with Rev 568+
//************************************************************************//
procedure DeclarePlayers;
begin
HowManyPlayers :=2; // Set Number of Players here.
NumberOfPlayers(HowManyPlayers); // Sets the Players Array Length;
CurrentPlayer:=StartPlayer; // CurrentPlayer = Array Index
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='yann';
Players[0].Loc :='Monastery';
Players[0].Skill:='Strength';
Players[0].Active:=True;
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='yann';
Players[1].Loc :='Monastery';
Players[1].Skill:='Strength';
Players[1].Active:=True;
writeln(inttostr(HowManyPlayers)+' Players');
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
end;
//************************************************************************//
procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 250;
frmDesign.Top := 114;
frmDesign.BorderStyle := bsToolWindow;
frmDesign.Caption := ' :: MONK ANNIHILATOR ::';
frmDesign.ClientHeight := 86;
frmDesign.ClientWidth := 361;
frmDesign.Color := cl3DDkShadow;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.FormStyle := fsStayOnTop;
frmDesign.Visible := True;
frmDesign.PixelsPerInch := 96;
lblStatus := TLabel.Create(frmDesign);
lblStatus.Parent := frmDesign;
lblStatus.Left := 2;
lblStatus.Top := 22;
lblStatus.Width := 358;
lblStatus.Height := 49;
lblStatus.Alignment := taCenter;
lblStatus.AutoSize := False;
lblStatus.Caption := 'Starting Script.';
lblStatus.Color := clMaroon;
lblStatus.Font.Color := clSilver;
lblStatus.Font.Height := -32;
lblStatus.Font.Name := 'Arial Black';
lblStatus.Font.Style := [fsBold];
lblStatus.ParentColor := False;
lblStatus.ParentFont := False;
lblStatus.Transparent := True;
lblStatus.Layout := tlCenter;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowForm;
begin
frmDesign.Show;
end;
procedure SafeShowForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowForm', v);
end;
procedure SetStatus(Text : String);
begin
lblStatus.Caption := Text;
end;
//************************************************************************//
procedure NotLoggedIn;
begin
// We logged out for some reason. Deactivate the player and log in the
// next one.
if (Not(LoggedIn)) then NextPlayer(False);
end;
//************************************************************************//
function FindFastRandoms: Boolean; //By WT-Fakawi.
var
i: Integer;
begin
for i := 1 to 8 do
begin
case I of
1: if FindDead then
Result := True;
2: if FindMod then
Result := True;
3: if FindMime then
Result := True;
4: if FindMaze then
Result := True;
5: if FindQuiz then
Result := True;
6: if FindDemon then
Result := True;
7: begin
if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
NotLoggedIn;
end;
end;
7: begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
NotLoggedIn;
end;
end;
8: RC;
end;
wait(1);
end;
end;
//************************************************************************//
procedure FindRandoms;
begin
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
FindNormalRandoms;
FindFastRandoms;
end;
{********************************************************
function JadSymbol(WhatSymbol: String; Click, Switch: Boolean): Boolean;
By: JAD
Description: My symbol finding. Repeats waiting and
looking for symbol until found or took too long. Clicks
the symbol if told to. Will switch players if it doesn't
find the symbol if told to.
********************************************************}
function JadSymbol(WhatSymbol: String; Click, Switch: Boolean): Boolean;
var I: Integer;
begin
for I := 1 to 25 do
begin
if(FindSymbol(x,y,(WhatSymbol)))then
begin
if(Click)then
Mouse(x,y,150,150,true); //It is 150 so we move around a bit more... not always in the courtyard :P
Result := True;
Exit;
end;
wait(750+random(500));
end;
Writeln('Could NOT find symbol.');
Result := False;
if(Switch)then
LogOut;
end;
//************************************************************************//
procedure BackToCourtYard; //Finds our way back to the monastery courtyard.
begin
JadSymbol('water', True, False);
end;
//************************************************************************//
procedure Antiban;
var Rand, EmoRand : Integer;
begin
NotLoggedIn;
Rand := Random(400);
case Rand of
0: RandomRClick;
1: begin
MakeCompass('W');
Wait(random(500));
MakeCompass('N');
end;
2: AlmostLogout;
3: begin
EmoRand := 1 + Random(18);
SetStatus('Doing Emote [' + IntToStr(EmoRand) + ']');
DoEmote(EmoRand);
end;
4: PickUpMouse;
5: begin
Hoverskill('Mining', False);
Wait(1500 + random(500));
GameTab(4);
end;
6: BoredHuman;
7: begin
Hoverskill('Woodcutting', False);
Wait(1500 + random(500));
GameTab(4);
end;
8: MouseBox(MMX1, MMY1, MMX2, MMY2, 0);
9: SleepAndMoveMouse(20000 + random(10000));
10: NotLoggedIn;
end;
end;
//************************************************************************//
function HealMe : Boolean;
var x, y, Attempts, StartHp : Integer;
var MonkFound : Boolean;
begin
NotLoggedIn;
SetStatus('Getting Healed...');
Antiban;
FindRandoms;
StartHp := GetHp;
if (InFight) then
begin
Writeln('Were in a fight! Run!');
MakeCompass('N');
RunAwayDirection(RunDirection);
Wait(20000 + random(10000));
RunBack;
HealMe;
end;
Attempts := 0;
MonkFound := False
repeat
if (FindObj3(x, y, 'onk', MonkColor, MonkTolerance)) then
begin
MonkFound := True;
Break;
end;
Attempts := Attempts + 1;
until(Attempts >= 5);
if (Attempts >= 5) then
begin
//COULDNT FIND MONK
Writeln('Couldnt find monk');
Result := False;
Exit;
end;
if (MonkFound) then
begin
//FOUND THE MONK
Mouse(x, y, 3, 3, False);
Wait(200 + random(100));
ChooseOptionEx('alk');
Wait(500 + random(500));
ClickToContinue;
FindRandoms;
Wait(500 + random(200));
ClickNpcChatText('heal');
Wait(500 + random(200));
ClickToContinue;
FindRandoms;
Wait(500 + random(200));
ClickToContinue;
Wait(1500 + random(500));
if (GetHp > StartHp) then
begin
//HEALED.
HealAttempts := 0;
AntiBan;
FindRandoms;
Exit;
end;
Antiban;
FindRandoms;
if (not(GetHp > StartHp)) then
begin
//He didnt heal us. That bitch! Try again.
AntiBan;
HealAttempts := HealAttempts + 1;
if (HealAttempts >= 3) then
begin
BackToCourtYard;
Wait(200 + random(200));
end;
HealMe;
end;
end;
end;
//************************************************************************//
procedure SearchAndDestroy;
var x, y, Attempts : Integer;
var MonkFound : Boolean;
begin
NotLoggedIn;
Attempts := 0;
MonkFound := False;
Antiban;
FindRandoms;
SetStatus('Finding Monk');
repeat
Wait (20 + random(10));
if (FindObj3(x, y, 'onk', MonkColor, MonkTolerance)) then
begin
if(IsFightAt(x, y)) then
begin
Writeln('Monks already fighting');
Exit;
end;
MonkFound := True;
Break;
end;
Attempts := Attempts + 1;
until (Attempts > 30);
if (MonkFound) then
begin
Mouse(x, y, 3, 3, True);
SetStatus('Attacking Monk');
Exit;
end;
if (not(MonkFound)) then BackToCourtYard;
end;
//************************************************************************//
procedure MonkKilling;
begin
Antiban;
SearchAndDestroy;
Wait (2000);
NotLoggedIn;
if (InFight) then
//We're murdering the monk
repeat
Wait(1000 + random(500));
if (HpPercent < DangerHealthPercent) then
begin
//We're getting owned... RUNAWAY!
SetStatus('Run away!');
MakeCompass('N');
RunAwayDirection(RunDirection);
Wait(20000 + random(10000));
Antiban;
RunBack;
BackToCourtYard;
//GET HEALED!
HealMe;
Exit;
end;
until(not(InFight));
AntiBan;
if (HpPercent < DangerHealthPercent) then
begin
//GET HEALED!
HealMe;
end;
NotLoggedIn;
end;
//************************************************************************//
procedure Retaliate(AutoRet:Boolean);
begin
GameTab(1);
if AutoRet then
begin
If not FindColor(x,y,1777020,624, 385, 719,396) then
begin
Mouse(666,381,8,8, True);
end;
end;
if not AutoRet then
begin
If FindColor(x,y,1777020,624, 385, 719,396) then
begin
Mouse(666,381,8,8, True);
end;
end;
end;
//************************************************************************//
procedure SetPlayerUp;
begin
SetStatus('Setting Player Up');
Wait(1000 + random(500));
MakeCompass('N');
HighestAngle;
//SET FIGHTING STYLE! - Did not come up with this, came from forums.
if Lowercase(Players[CurrentPlayer].Skill) = 'attack' then SetFightMode(1);
if Lowercase(Players[CurrentPlayer].Skill) = 'strength' then SetFightMode(2);
if Lowercase(Players[CurrentPlayer].Skill) = 'defence' then SetFightMode(4);
//SET RETALIATE TO TRUE! - WT-Fakawi
Retaliate(True);
SetChat('hide', 1);
SetChat('friends', 2);
SetChat('off', 3);
end;
//*************************************************************************//
{ MAIN LOOP }
begin
SetupSRL;
SafeInitForm;
SafeShowForm;
DeclarePlayers;
ActivateClient;
LoginPlayer;
lblStartMain:
SetPlayerUp;
SafeShowForm;
MarkTime(MainMark);
repeat
MonkKilling;
Wait(1000 + random(500));
FindRandoms;
Antiban;
until(TimeFromMark(MainMark) >= TimeLoggedIn * 60000);
MarkTime(MainMark);
LogOut;
NextPlayer(True);
goto lblStartMain;
end.
Pancakes Treefeller
program PancakesTreefeller;
{.include SRL\SRL.scar}
{.include SRL\SRL\Skill\Woodcutting.scar}
{¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
SCRIPT SETUP
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤}
//[1. USE Runescape with Low Detail, Very Bright. ]
//[ 2. Set your Screen to 32 bit TRUE color. ]
//[ 3. Set Playernames and Passwords in DeclarePlayers. ]
//[ 4. SET HOWMANYPLAYERS inside DeclarePlayers ]
//[ 5. Start script Logged Out!
//Script Setup
const
NormTreeColor = 1730648;
OakTreeColor = 2252880;
WillowTreeColor = 1982520;
TreeTolerance = 3; //Default should work fine, if it doesnt change it.
RunDir = 'N';
TreeName = 'Tree';
TimeOnline = 20; //In minutes.
var
TreeColor, WorkingAxeDTM, LogDTM, BrokenAxeDTM, AxeHandleDTM : Integer;
LogsChopped, StartTime : Integer;
frmDesign : TForm;
FormStatus : TLabel;
MainTimer : TTimer;
EmoteList : array[1..20] of String;
{¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
END SCRIPT SETUP
¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤}
{*******************************************************************************
procedure ProgressReport;
By: Pancakes.
Description: Self Explanatory?
*******************************************************************************}
procedure ProgressReport;
begin
ClearDebug;
Writeln('««««««««««««««« PROGRESS REPORT »»»»»»»»»»»»»»»»»');
Writeln('Cut down ' + IntToStr(LogsChopped) + ' logs total.');
Writeln('Recieved ' + FloatToStr(GetTreeExp(TreeName) * LogsChopped) + ' experience total');
Writeln('Worked for: ' + TimeRunning);
end;
{*******************************************************************************
procedure LoadEmotes;
By: Pancakes.
Description: So we know what emote we are doing.
*******************************************************************************}
procedure LoadEmotes;
begin
EmoteList[1]:= 'Yes';
EmoteList[2]:= 'No';
EmoteList[3]:= 'Bow';
EmoteList[4]:= 'Angry';
EmoteList[5]:= 'Think';
EmoteList[6]:= 'Wave';
EmoteList[7]:= 'Shrug';
EmoteList[8]:= 'Cheer';
EmoteList[9]:= 'Beckon';
EmoteList[10]:= 'Laugh';
EmoteList[11]:= 'Jump For Joy';
EmoteList[12]:= 'Yawn';
EmoteList[13]:= 'Dance';
EmoteList[14]:= 'Jig';
EmoteList[15]:= 'Spin';
EmoteList[16]:= 'Headbang';
EmoteList[17]:= 'Cry';
EmoteList[18]:= 'BlowKiss';
EmoteList[19]:= 'Panic';
EmoteList[20]:= 'Raspberry';
end;
procedure MTimer(sender: TObject);
begin
ProgressReport;
end;
{*******************************************************************************
procedure SetCaption(Status : String);
By: Pancakes.
Description: Sets the caption of our little form.
*******************************************************************************}
procedure SetCaption(Status : String);
begin
FormStatus.Caption := Status;
end;
{*******************************************************************************
procedure DeclarePlayers;
Description: Declare the players.. for multiplayer and randoms and such.
*******************************************************************************}
procedure DeclarePlayers;
begin
HowManyPlayers := 3; //Number of players
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 1;
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='yann';
Players[0].Active:=True;
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='yann';
Players[1].Active:=True;
Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='yann';
Players[2].Active:=True;
end;
{*******************************************************************************
procedure InitForm;
Description: Initialises the Form.
*******************************************************************************}
procedure InitForm;
begin
frmDesign := CreateForm;
frmDesign.Left := 650;
frmDesign.Top := 0;
frmDesign.Align := alNone;
frmDesign.BorderStyle := bsSizeToolWin;
frmDesign.Caption := 'Pancakes TreeFeller v1.0';
frmDesign.ClientHeight := 75;
frmDesign.ClientWidth := 371;
frmDesign.Color := clBlack;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Formstyle := fsStayOnTop;
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
MainTimer := TTimer.Create(frmDesign);
MainTimer.Interval := 10000;
MainTimer.onTimer := @MTimer;
FormStatus := TLabel.Create(frmDesign);
FormStatus.Parent := frmDesign;
FormStatus.Left := 51;
FormStatus.Top := 15;
FormStatus.Width := 262;
FormStatus.Height := 41;
FormStatus.Alignment := taCenter;
FormStatus.Caption := 'Starting Script...';
FormStatus.Enabled := False;
FormStatus.Font.Color := clWindowText;
FormStatus.Font.Height := -29;
FormStatus.Font.Name := 'Arial Black';
FormStatus.Font.Style := [];
FormStatus.ParentFont := False;
FormStatus.Layout := tlCenter;
end;
procedure ShowForm;
begin
frmDesign.Show;
end;
procedure SafeShowForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowForm', v);
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
{*******************************************************************************
function EntThere:Boolean;
By: Yohojo8
Description: Returns true if an ent is there.
*******************************************************************************}
function EntThere:Boolean;
var CX, CY : Integer;
begin
if (IsUpText (TreeName)) then
if FindColorTolerance( CX, CY, 55769, 85, 15, 115, 15, 20) then
Result:=True;
end;
procedure WaitForEnt;
begin
MouseFindFlag(648,83,5,5);
Wait(15000 + Random(5000));
repeat
Wait(5000 + Random(1000));
until(Not(EntThere));
end;
{*******************************************************************************
procedure LoadDTMS;
Description: Loads the DTMS for the scipt. Must be called before any DTM
finding is done.
*******************************************************************************}
procedure LoadDTMS;
begin
Writeln('Setting DTMS');
WorkingAxeDTM := DTMFromString('78DA6314656060E06240013A46EE0CFF81342' +
'310FF07024659208383010D302291405A0E48F012502340843920' +
'330409A801B9571ABF1A007E06067C');
LogDTM := DTMFromString('78DA632C666260E0646440067921460CFF813' +
'448F43F103066314179C880118904D2354035FF19F0AB2905AA11' +
'22604E23500D0F0135C94035DCF8D50000507909F5');
BrokenAxeDTM := DTMFromString('78DA633CCAC4C090C1C8800C9A127919FE036' +
'990E87F2060BC0C54938CAA06220B2381F445A09A04026A8E01D5' +
'C41050B31FA8A698809AB384CD0100CBBD0D20');
AxeHandleDTM := DTMFromString('78DA637CCFC4C0E0C6C8800CCA227819FE036' +
'990E87F2060FC06546389AA06220B2381F473A09A00026ADE00D5' +
'F81350F316A8C685809A97403541F8D50000D0090D3C');
end;
{*******************************************************************************
procedure AntiBan;
By: Pancakes.
Description: Don't ban me! PLEASE! I'm legit, I SWEAR!.
*******************************************************************************}
procedure AntiRandoms; forward;
procedure SkillRandoms; forward;
procedure AntiBan;
var BanRand, RandEmote : Integer;
begin
AntiRandoms;
SkillRandoms;
BanRand := Random(200);
case BanRand of
0: AntiRandoms;
1: SkillRandoms;
2: BoredHuman;
3: begin
RandEmote := 1 + Random(19);
SetCaption('Emote: [' + EmoteList[RandEmote] + ']');
DoEmote(RandEmote);
end;
4: BoredHuman;
5: PickUpMouse;
6: HighestAngle;
7: GameTab(1 + Random(7));
8: HoverSkill('woodcutting', False);
9: HoverSkill('firemaking', False);
10: HoverSkill('mining', False);
11: PickUpMouse;
12: TypeSend('Woodcutting levels?');
13: RandomRClick;
14: SayCurrentLevels('woodcutting');
15: begin
SetCaption('AlmostLogout');
AlmostLogout;
end;
16: RandomRClick;
17: SkillRandoms;
18: AntiRandoms;
end;
end;
{*******************************************************************************
procedure AntiRandoms;
By: Pancakes.
Description: This procedure checks for Randoms and solves them.
*******************************************************************************}
procedure AntiRandoms;
begin
FindTalk;
FindNormalRandoms;
ClickToContinue;
if (FindFight) then
begin
RunAwayDirection(RunDir);
Wait(10000 + random(2000));
RunBack;
end;
end;
{*******************************************************************************
procedure SkillRandoms;
By: Pancakes.
Description: Performs random checking for skills
*******************************************************************************}
procedure SkillRandoms;
begin
Wait(100 + random(50));
if (EntThere) then WaitForEnt;
Wait(100 + random(50));
FindHead;
end;
{*******************************************************************************
procedure BrokenAxe;
Description: Checks for a broken axe.
*******************************************************************************}
procedure BrokenAxe;
begin
Writeln('Checking for broken axe');
if (FindDTM(BrokenAxeDTM, x, y, MIX1, MIY1, MIX2, MIY2)) and (Not(FindDTM(WorkingAxeDTM, x, y, MIX1, MIY1, MIX2, MIY2))) then
begin
Writeln('We broke an axe, next player.');
SetCaption('Next Player');
Wait(100 + random(50));
Logout;
SetCaption('Working...');
Wait(200 + random(200));
NextPlayer(False);
end;
end;
{*******************************************************************************
procedure SetTreeColor;
Description: Set Tree Color.
*******************************************************************************}
procedure SetTreeColor;
begin
Writeln('Setting Tree Color');
case Treename of
'Tree' : TreeColor := NormTreeColor;
'Oak' : TreeColor := OakTreeColor;
'Willow' : TreeColor := WillowTreeColor;
end;
end;
{*******************************************************************************
procedure Signature;
Description: Mmmnnn Pancakes.
*******************************************************************************}
procedure Signature;
begin
ClearDebug;
Writeln('_________ SCRIPT BY: __ ');
Wait(200);
Writeln('\______ \_____ ____ ____ _____ | | __ ____ ______ ');
Wait(200);
Writeln(' | ___/\__ \ / \_/ ___\\__ \ | |/ // __ \ / ___/ ');
Wait(200);
Writeln(' | | / __ \| | \ \___ / __ \| <\ ___/ \___ \ ');
Wait(200);
Writeln(' |____| (____ /___| /\___ >____ /__|_ \\___ >____ > ');
Wait(200);
Writeln(' \/ \/ \/ \/ \/ \/ \/ ');
Wait(200);
Wait(2000);
end;
{*******************************************************************************
function ChooseOptionFast;
By: Pancakes.
Description: Chooses option faster.
*******************************************************************************}
function ChooseOptionFast(x, y, Over: Integer; txt: string): Boolean;
var
x1, y1, x2, y2, LeftCorner, RightCorner: Integer;
begin
LeftCorner := BitmapFromString(4, 4, 'z78DA33753135313137C5' +
'411A600064715CEA914500CACE13F0');
RightCorner := BitmapFromString(4, 4, 'z78DA33753135313137' +
'C5200D30002E35F8C501C9C013F0');
if (FindBitmap(LeftCorner, x1, y1)) and (FindBitmap(RightCorner, x2, y2)) then
begin
if (FindText(x, y, txt, upchars, x1, y1, x2, 502)) then
begin
Result := True;
Mouse(x + Length(txt) * 3 + (Over), y + 3, 2, 2, True);
end
else if (FindText(x, y, 'Cancel', upchars, x1, y1, x2, 502)) then
Mouse(x + 9, y + 3, 2, 2, True);
end;
FreeBitmap(LeftCorner);
FreeBitmap(RightCorner);
end;
{*********************************************************************
procedure DropToFast(StartSlot, EndSlot: Integer);
By: JAD
Description: Drops Fast. FAST!
*********************************************************************}
procedure DropToFast(StartSlot, EndSlot: Integer);
var FastSlot: array[1..28] of Integer;
DropSlot: array[1..28] of TPoint;
I, Q, T: Integer;
begin
T := 1;
for I := 1 to 28 do
begin
FastSlot[i] := T + Q;
Q := Q + 4;
if(Q > 24)then
begin
T := T + 1;
Q := 0;
end;
end;
GameTab(4);
Q := 0;
for I := StartSlot to EndSlot do
begin
if(ExistsItem(FastSlot[i]))then
begin
DropSlot[i] := ItemCoords(FastSlot[i]);
Mouse(DropSlot[i].x,DropSlot[i].y,3,3,false);
if(I > 7)then
ChooseOptionFast(x,y,30,'Drop') else
ChooseOptionFast(x,y,4,'Drop');
LogsChopped := LogsChopped + 1;
end;
end;
end;
{*******************************************************************************
procedure ChoppingProcedure;
By: Pancakes.
Description: Chops the logs until invetory is full.
*******************************************************************************}
procedure ChoppingProcedure;
var
FindTries, x, y : Integer;
begin
AntiRandoms;
SkillRandoms;
repeat
SetCaption('Finding A Tree');
FindTries := 0
repeat
FindTries := FindTries + 1;
Wait(1000 + random(500));
until(FindObj3(x, y, TreeName, TreeColor, TreeTolerance)) or (FindTries > 10);
if (FindTries > 10) then
begin
Writeln('Couldnt find tree, next player');
SetCaption('Next Player');
Logout;
SetCaption('Working...');
Wait(200 + random(100));
NextPlayer(False);
end;
SetCaption('Chopping...');
Mouse(x, y, 1, 1, True);
Wait(100);
SkillRandoms;
AntiRandoms;
AntiBan;
Wait(4000 + random(250));
until(InvFull) or (Not(LoggedIn));
end;
{*******************************************************************************
procedure SetupForm;
By: Pancakes.
Description: Sets up our status form. =D
*******************************************************************************}
procedure SetupForm;
begin
SafeInitForm;
SafeShowForm;
end;
{*******************************************************************************
procedure DestroyForm;
By: Pancakes.
Description: Destroys up our status form. =D
******************************************************************************}
procedure DestroyForm;
begin
FreeForm(frmDesign);
end;
{*******************************************************************************
procedure DropAllLogs;
By: Pancakes.
Description: If invetory is full then drop some logs, else go back to chopping.
*******************************************************************************}
procedure DropAllLogs;
begin
if (InvFull) then
begin
SkillRandoms;
AntiRandoms;
SetCaption('Dropping Logs');
DropToFast(2, 28); //Drops all of our logs.
AntiBan;
if (TimeFromMark(StartTime) >= TimeOnline * 60 * 20) then
begin
SetCaption('Next Player');
LogOut;
SetCaption('Working...');
NextPlayer(True);
end;
end else
begin
ChoppingProcedure;
end;
end;
{*******************************************************************************
procedure SetupChats;
By: Pancakes.
Description: Turns Public to Hide, Private To Off and Trade To Off.
*******************************************************************************}
procedure SetupChats;
begin
Wait(50 + random(30));
ChatsOff;
Wait(50 + random(30));
SetChat('hide', 1);
end;
{*******************************************************************************
procedure CanIAuto;
By: Pancakes.
Description: Checks for broken axe / axe handle.
*******************************************************************************}
procedure CanIAuto;
begin
if (FindDTM(BrokenAxeDTM, x, y, MIX1, MIY1, MIX2, MIY2)) then
begin
SetCaption('Broken Axe!');
Wait(100);
Logout;
Wait(100 + Random(100));
SetCaption('Next Player');
Wait(100);
NextPlayer(False);
end;
if (FindDTM(AxeHandleDTM, x, y, MIX1, MIY1, MIX2, MIY2)) and (Not(FindDTM(WorkingAxeDTM, x, y, MIX1, MIX2, MIY1, MIY2))) then
begin
SetCaption('No Axe Head!');
Wait(100);
Logout;
Wait(100 + Random(100));
SetCaption('Next Player');
Wait(100);
NextPlayer(False);
end;
end;
procedure SetPlayerUp;
begin
SetupChats;
Wait(100 + Random(50));
LoadDTMS;
Wait(100 + Random(50));
FindAxeHeadColor;
Wait(100 + Random(50));
SetTreeColor;
Wait(20 + Random(50));
HighestAngle;
Wait(20 + Random(50));
MakeCompass('N');
end;
begin
SetupSRL;
SetupForm;
Signature;
MarkTime(StartTime);
Wait(100 + Random(50));
SetCaption('Activate Client');
ActivateClient;
Wait(100 + Random(50));
DeclarePlayers;
Wait(100 + Random(50));
SetCaption('Logging In');
LoginPlayer;
Wait(300 + random(200));
SafeShowForm;
Wait(200);
SetCaption('Setting Up');
SetPlayerUp;
SetCaption('Working...');
repeat
ChoppingProcedure;
AntiBan;
DropAllLogs;
until(false);
end.If you are unhappy with my work and vote no, please tell me why!
-Pancakes.
——————————————————
<!– END TEMPLATE: formanswers –>