Dark Arcana
2009-04-20 09:49:02
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?
I know Visual Basic and Scar.
Are you a member of any other communities?
No I am not member of any other community
Tell us about yourself…
Please give show us one of your scripts.
3 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
What is your general programming knowledge?
I know Visual Basic and Scar.
Are you a member of any other communities?
No I am not member of any other community
Tell us about yourself…
From: Dark Arcana
My realy name is Daniel, I am 12 years old, I like playing sport, and love learning new things.
Please give show us one of your scripts.
program Da_Willow_Crusher;
{.Include SRL/SRL/Misc/Smart.Scar}
{.Include SRL/SRL.Scar}
{.Include SRL/SRL/Misc/Users.Scar}
{.Include SRL/SRL/Misc/Trade.Scar}
var
x, y, LoadsDone, TotalLoads, Responded, Lvls, Bank,
Trades, i, TotalWillows, AntiBans, NestsFound, Willow: integer;
const
YourSRLID = ''; // Your SRL ID
YourSRLPass = ''; // Your SRL Pass
procedure Sig;
begin
ClearDebug;
Writeln('________ ____ _____ ');
Wait(500);
Writeln('\______ \ _____ _______| | __ / _ \_______ ____ _____ ____ _____');
Wait(500);
Writeln(' | | \\__ \\_ __ \ |/ / / /_\ \_ __ \_/ ___\\__ \ / \\__ \');
Wait(500);
Writeln(' | ` \/ __ \| | \/ < / | \ | \/\ \___ / __ \| | \/ __ \');
wait(500);
Writeln('/_______ (____ /__| |__|_ \ \____|__ /__| \___ >____ /___| (___ /');
Wait(500);
Writeln(' \/ \/ \/ \/ \/ \/ \/ \/ ');
Wait(500);
Writeln(' Dark Arcana ');
Wait(500);
end;
procedure SetUpPlayer;
begin
if not (LoggedIn) then
LogInPlayer;
if LoggedIn then
begin
SetAngle(True);
SetRun(True);
SetChat('On', 1);
SetChat('Off', 2);
Wait(500 + Random(500));
Players[CurrentPlayer].integers[2] := GetSkillInfo('Woodcutting', False);
WriteLn('Players Woodcutting level is ' + IntToStr(Players[CurrentPlayer].integers[2]));
Gametab(4);
end;
end;
function SearchBirdsNest: Boolean; //Credits to Deathscytex for this
var
CTS, I, X, Y: Integer;
NestATPA: T2DPointArray;
NestTPA: TPointArray;
Nest: TPoint;
Timer: LongInt;
begin
if (FindText(x, y, 'nest falls', SmallChars, 0, 400, 495, 460)) then
begin
MarkTime(Timer);
repeat
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
X := MSCX;
Y := MSCY;
FindColorsSpiralTolerance(X, Y, NestTPA, 3952984, MSCX - 100, MSCY - 100, MSCX + 100, MSCY + 100, 15);
NestATPA := TPAtoATPAEx(NestTPA, 5, 5);
for I := 0 to Length(NestATPA) - 1 do
begin
if (TimeFromMark(Timer) >= (10000)) then
Exit;
Nest := MIddleTPA(NestATPA[I]);
X := 0;
Y := 0;
MMouse(Nest.X, Nest.Y, 5, 5);
Wait(250);
if (IsUpText('ird')) then
begin
Mouse(Nest.X, Nest.Y, 5, 5, True);
Result := True;
Inc(NestsFound);
ReportVars[4] := ReportVars[4] + 1;
Wait(250 + Random(150));
Writeln('We Have Found a Bird Nest!');
case (Random(8)) of
0: TypeSend('Found a Birds nest');
1: TypeSend('Cool, I got a bird nest.');
2: TypeSend('Sweet, Found a nest');
3: TypeSend('Yay, a bird nest');
4: TypeSend('Whew, got a nest.');
end;
Exit;
end;
end;
until (TimeFromMark(Timer) >= (10000)) or (Result);
Exit;
end else
Exit;
end;
procedure PlayerForm;
begin
SRLPlayerForm(True, ['Is Axe Wielded?', 'Use Responder?'], ['Pin Number?', 'Loads Each Player?'], [], []);
end;
function LevelUp: Boolean;
begin
Result := FindNPCChatText('gratu', Nothing);
if not Result then
Result := FindNPCChatText('atio', Nothing);
if Result then
begin
while ClickContinue(True, True) do
Wait(500);
Writeln(' We have lvled up!');
Inc(Lvls);
end;
end;
procedure AutoTrader;
begin
if (SomeoneTrades) then
begin
AcceptTrade;
Wait(4000 + random(1000));
Decline;
Inc(Trades);
case Random(4) of
0: Typesend('go away');
1: Typesend('go trade with someone else');
2: TypeSend('leave me alone');
3: TypeSend('No thank you');
end;
end;
end;
function InChatArr(Text: array of string): Boolean;
var
I, H: integer;
s: string;
begin
H := High(Text);
if (not (GetLastChatText(s))) then
LastChatter(s);
for I := 0 to H do
begin
if (Pos(Lowercase(Text[i]), (Lowercase(s))) > 0) then
begin
Result := true;
Exit;
end;
end;
end;
procedure Responder;
var
Question, Thanking: TStringArray;
S: Integer;
begin
if not (Players[CurrentPlayer].Booleans[1]) then
Exit;
Question := ['cut', 'wc', 'lvl', 'cutting lvl', 'wood', 'lvls', 'oodc'];
for I := 0 to 8 do
begin
if InChatArr(Question) then
begin
inc(Responded);
S := GetSkillInfo('Woodcutting', False);
case Random(8) of
0: TypeSend('only ' + IntToStr(S));
1: TypeSend(IntToStr(S));
2: TypeSend((IntToStr(S)) + ' you?');
3: TypeSend(IntToStr(S) + ' lol');
4: TypeSend((IntToStr(S)) + ' here');
5: TypeSend('only ' + IntToStr(S));
8: TypeSend('Nearly ' + IntToStr(S + 1));
7: begin
TypeSend('only ' + IntToStr(S + 1));
Wait(500 + random(500));
TypeSend('I mean ' + IntToStr(S));
end;
end;
Wait(1000 + Random(500));
end;
Thanking := ['nice', 'cool', 'awesome', 'sweet', 'good', 'kool'];
for I := 0 to 8 do
begin
if InChatArr(Thanking) then
begin
inc(Responded);
case Random(4) of
0: TypeSend('thx');
1: TypeSend('thank you');
2: TypeSend('ty');
3: TypeSend('thanks');
end;
end;
for I := 0 to 8 do
begin
if InChatArr([Players[CurrentPlayer].Nick]) then
begin
Inc(Responded);
case Random(4) of
0: Typesend('What do you want');
1: Typesend('im busy');
2: Typesend('Leave me alone...');
3: Typesend('Go away');
end;
end;
end;
end;
end;
end;
procedure FindRandoms;
begin
LampSkill := 'runecrafting';
FindNormalRandoms;
if FindFight then
RunAway('N', True, 1, 15000);
end;
procedure ProgressReport;
begin
ClearDebug;
WriteLn('***************************************************');
WriteLn('* Da Willow Crusher *');
WriteLn('***************************************************');
WriteLn('* Been Crushing for | ' + TimeRunning);
Writeln('* Gained | ' + IntToStr(Lvls) + ' Levels');
WriteLn('* Did | ' + IntToStr(TotalLoads) + ' Loads');
WriteLn('* Crushed | ' + IntToStr(TotalWillows) + ' Willows');
Writeln('* Responded | ' + IntToStr(Responded) + ' Times');
Writeln('* Performed | ' + IntToStr(AntiBans) + ' AntiBans');
Writeln('* Traded | ' + IntToStr(Trades) + ' Times');
Writeln('* Found | ' + IntTOStr(NestsFound) + ' Bird Nests');
WriteLn('* Gained | ' + IntToStr(TotalWillows * 68) + ' Exps');
WriteLn('***************************************************');
Writeln(' Thank you for using my script ^-^ ');
Writeln('***************************************************');
SendSRLReport;
SRLRandomsReport;
end;
procedure AntiBan;
begin
if (not (LoggedIn)) then
Exit;
case Random(10) of
0:
begin
HoverSkill('woodcutting', false);
Wait(100 + Random(200));
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
1:
begin
PickUpMouse;
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
2:
begin
RandomMovement;
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
3:
begin
RandomRClick;
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
4:
begin
BoredHuman;
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
5:
begin
SleepAndMoveMouse(4000 + Random(3000));
AntiBans := AntiBans + 1;
ReportVars[3] := ReportVars[3] + AntiBans;
end;
end;
end;
procedure WhileChopping;
begin
if not loggedin then
Exit;
FindRandoms;
AntiBan;
Responder;
AutoTrader;
SearchBirdsNest;
LevelUp;
end;
procedure CrushWillow;
var
a, Mrk: Integer;
begin
if not LoggedIn then
Exit;
SetRun(True);
WhileChopping;
Writeln('Crushing Willows');
MarkTime(Mrk);
Status('Crushing Willows');
repeat
FindObjCustom(x, y, ['Willow', 'Will', 'illo', 'llow'], [2181686, 6193521, 3755332, 3234376], 7);
if (isuptext('illo')) then
Mouse(x, y, 2, 2, True);
FFlag(7);
wait(500);
if (isuptext('illo')) then
begin
repeat
repeat
Wait(400);
WhileChopping;
until (not IsUpText('ew')) or Invfull or (TimeFromMark(mrk) > 130000 + Random(30000));
Wait(500 + random(500));
if not FindObjCustom(x, y, ['Willow', 'Will', 'illo', 'llow'], [2181686, 6193521, 3755332, 3234376], 7) then
Inc(A);
until FindObjCustom(x, y, ['Willow', 'Will', 'illo', 'llow'], [2181686, 6193521, 3755332, 3234376], 7) or (a = 50);
if (a = 50) then
begin
ProgressReport;
NextPlayer(False);
LoginPlayer;
end;
end;
until (InvFull);
end;
procedure SetUpSmart;
begin
Status('Loading Smart...');
ClearDebug;
Writeln('Please wait...');
Wait(500);
Writeln('Setting Up Smart');
SMARTSetupEx(133, False, True, False);
Wait(5000);
SetTargetDC(SmartGetDC);
repeat
Wait(100);
until (SmartGetColor(253, 233) <> 1118604);
end;
procedure WalkToBank;
begin
if not Loggedin then
Exit;
Bank := DTMFromString('78DA63AC636260F0664001E909090CFF81342' +
'310FF0702C62CA01A4F881C0B54CD9F3F4C609A11CA672C22528D' +
'2B116A6CF1AB0100517A11CC');
Writeln('Going To Draynor Bank');
Status('Going to Bank');
SetAngle(True);
SetRun(true);
if FindDTM(Bank, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Mouse(x, y, 5, 5, True);
Wait(1000 + random(1000));
FreeDTM(Bank);
FFlag(4);
Writeln('We Have Arrived at Draynor Bank!');
Exit;
end else
begin
FindColorTolerance(x, y, 10089719, MMX1, MMY1, MMX2, MMY2, 40);
Mouse(x, y, 4, 4, true);
FFlag(7);
Writeln('We Have Arrived at Draynor Bank');
end;
if not FindColorTolerance(x, y, 10089719, MMX1, MMY1, MMX2, MMY2, 40) then
begin
if (FindColorTolerance(x, y, 60909, 643, 15, 687, 47, 3)) then
Mouse(x, y, 2, 2, true);
FFlag(7);
Writeln('We Have Arrived at Draynor Bank');
if not (FindColorTolerance(x, y, 60909, 643, 15, 687, 47, 3)) then
begin
FindSymbol(x, y, 'fishing spot');
Mouse(x + 40, y - 50, 4, 4, true);
FFlag(4);
Writeln('We Have Arrived at Draynor Bank');
end;
end;
end;
function CountDTM(DTM: Integer): Integer;
var
I, X, Y: Integer;
TB: Tbox;
begin
if not loggedin then
Exit;
GameTab(4);
for I := 1 to 28 do
begin
TB := InvBox(I);
if ExistsItem(I) then
if FindDTM(DTM, X, Y, TB.X1, TB.Y1, TB.X2, TB.Y2) then
Inc(Result);
end;
end;
procedure Banking;
var
Exps: Integer;
begin
if not (LoggedIn) then
Exit;
Willow := DTMFromString('78DA6374626660E8606440062EB6920C4C401' +
'A24FA1F08181D816AEA51D54064612490F603AA69465563A0A080' +
'AAC615A8661201356640351308D8650E54D3865F0D00FF630A55');
Status('Banking Willows');
FFlag(7);
MakeCompass('n');
OpenBankQuiet('db');
Wait(500 + random(500));
if (PinScreen) then
begin
Writeln('Entering Pin Number');
InPin(IntToStr(Players[CurrentPlayer].Integers[0]));
end;
if (BankScreen) then
begin
EXPs := CountDTM(Willow);
ReportVars[2] := ReportVars[2] + (EXPs * 68);
ReportVars[1] := ReportVars[1] + EXPs;
TotalWillows := TotalWillows + EXPs;
if (Players[CurrentPlayer].Booleans[0] = False) then
begin
Writeln('Banking Willows');
Deposit(2, 28, True);
Closebank;
end else
Writeln('Banking Willows');
DepositAll;
Closebank;
ReportVars[0] := ReportVars[0] + 1;
Inc(TotalLoads);
Inc(LoadsDone);
FreeDTM(Willow);
Writeln('We Have Banked the Willows');
end;
end;
procedure WalkToWillows;
begin
if not loggedin then
Exit;
Status('Going to Willows');
Writeln('Going to Willows');
SetAngle(True);
SetRun(true);
if (findSymbol(x, y, 'fish')) then
begin
Mouse(x, y - 23, 1, 1, true);
FFlag(4);
Writeln('Arrived at Willows');
end else
begin
if (FindSymbol(x, y, 'Bank')) then
Mouse(x - 35, y + 30, 1, 1, true);
FFlag(4);
Writeln('Arrived at Willows');
end;
end;
procedure Mainloop;
begin
Sig;
PlayerForm;
SetUpSRL;
ScriptID := '1211'; //Do not touch!
SetUpSmart;
SRLID := YourSRLID;
SRLPassword := YourSRLPass;
SetUpPlayer;
repeat
repeat
WalkToWillows;
CrushWillow;
WalkToBank;
Banking;
ProgressReport;
until (LoadsDone >= Players[CurrentPlayer].Integers[1]) or (not (LoggedIn));
NextPlayer(Players[CurrentPlayer].Active);
until (False);
ProgressReport;
end;
begin
Mainloop;
end.