cycrosism
2009-04-20 13:43:32
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
No
What is your general programming knowledge?
Visual Basic and A little bit of java
Are you a member of any other communities?
RSbot, Scythe, MoparScape, rs-hacking and Freddy1990.
Tell us about yourself…
Please give show us one of your scripts.
6 Year(s)
Are you affilated in anyway with Jagex LTD?
No
Were you Referred to SRL?
No
What is your general programming knowledge?
Visual Basic and A little bit of java
Are you a member of any other communities?
RSbot, Scythe, MoparScape, rs-hacking and Freddy1990.
Tell us about yourself…
From: cycrosism
My name is Mark and for a hobby I enjoy using computers and gardening. For my school electives I chose Programming, Animation, Agricultue and IT. Last year I got an A in computer programming and A+ in IT. In my spare time I go on my computer or tend to my garden which has various plants in it. I also play 2 sports which is Cricket and Basketball which I also enjoy and I play with my friends during school too.
Please give show us one of your scripts.
{My latest script (and my best one too) would have to be "Drain Willows" Which is my Draynor willow chopper and banker.
The best progress report posted so far is
Worked for 15 Hours, 23 Minutes and 6 Seconds
Gained 665280 Exp
Chopped 9856 Willows
Gained 10 Levels}
//Main Script is below
program Drain_willows; {Version 5.4}
{.include SRL/SRL/Misc/Smart.scar}
{.Include SRL\SRL.SCAR}
{.Include SRL\SRL\skill\WoodCutting.scar}
Var
logs,logxp,Levels,dtm,x,y:Integer;
const
member = false; //True if using a member world
procedure DeclarePlayers;
begin
HowManyPlayers := 1; //How many players?
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; //username
Players[0].Pass := ''; //password
Players[0].Nick := ''; //3-4 letters of name
Players[0].Pin := ''; //bank Pin
Players[0].Booleans[0] := true; //true if weilding an axe
Players[0].Booleans[1] := true; //true if using sleep
Players[0].Integers[1] := 10; //Switch players/relog after how many loads?
Players[0].BoxRewards := ['XP']; //Use the random event box on what?
Players[0].Active := True;
{
Players[1].Name := ''; //username
Players[1].Pass := ''; //password
Players[1].Nick := ''; //3-4 letters of name
Players[1].Pin := ''; //Bank Pin
Players[1].Booleans[0] := true; //true if weilding the axe
Players[1].Booleans[1] := true; //true if using sleep
Players[1].BoxRewards := ['XP']; //Use the random event box on what?
Players[1].Active := True;
}{
Players[2].Name := ''; //username
Players[2].Pass := ''; //password
Players[2].Nick := ''; //3-4 letters of name
Players[2].Pin := ''; //Bank Pin
Players[2].Booleans[0] := true; //true if weilding the axe
Players[2].Booleans[1] := true; //true if using sleep
Players[2].BoxRewards := ['XP']; //Use the random event box on what?
Players[2].Active := True;
}{
Players[3].Name := ''; //username
Players[3].Pass := ''; //password
Players[3].Nick := ''; //3-4 letters of name
Players[3].Pin := ''; //Bank Pin
Players[3].Booleans[0] := true; //true if weilding the axe
Players[3].Booleans[1] := true; //true if using sleep
Players[3].BoxRewards := ['XP']; //Use the random event box on what?
Players[3].Active := True;}
end;
procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(240) of
0: Begin
RandomRClick;
wait(1000+random(1000));
end;
1: HoverSkill('random', False);
2: HoverSkill('Woodcutting', False);
3: RandomMovement;
4: BoredHuman;
5: If (Players[CurrentPlayer].Booleans[1] = true) then
Begin
Writeln('Sleeping');
SleepAndMoveMouse(1000+random(9000));
Writeln('Finished sleeping');
end;
end;
end;
Procedure AntiRandom;
begin
FindNormalRandoms;
If (FindFight = True) then
begin
runaway('E',true,1,5000+random(2000));
end;
end;
procedure DeathWalk;
Var
x,y,hometele:integer;
begin
If not loggedin then exit;
Cleardebug;
Writeln('Unable to find water color or bank symbol or fishing symbol');
If(TabExists(7)) then
begin
Writeln('Death walk activated');
GameTab(7);
wait(700+random(700));
end else AntiRandom;
HomeTele := DTMFromString('78DA63FCC3CCC07087910119FCFDF70F4CC34' +
'4197F01D53C4655D3D7FB1955CD4FA09AEBA86AAAAA7EA0AA6160214' +
'ECD03026AFE12E19EAF98FEC2500332E7320135AC40F7DCC6AF06003' +
'B5820DA');
if FindDTM(HomeTele, X, Y, 557, 214, 605, 259) then
begin
Mouse(X, Y, 10, 10,true);
Writeln('Found Home Teleport DTM!');
FreeDTM(HomeTele);
wait(1000);
End else begin
Writeln('Could not find Home Teleport DTM!');
wait(500+random(500));
end;
If (FindBlackChatMessage('need to wait')) then
Repeat
Writeln('We need to wait before casting this spell');
FreeDTM(HomeTele);
Logout;
Writeln('Waiting 5 minutes');
wait(60000*5);
Loginplayer;
if FindDTM(HomeTele, X, Y, 557, 214, 605, 259) then
begin
Mouse(X, Y, 10, 10,true);
end else
if(FindBitmap(Hometele,x,y)) then
begin
Mouse(X+(11), Y+(10), 10, 10,true);
end else
begin
Mouse(571,228,12,12,true);
end;
wait(1000+random(500));
Until(not(FindBlackChatMessage('need to wait')));
begin
Writeln('Looking for Home Teleport Bitmap');
wait(200+random(200));
HomeTele := BitmapFromString(24, 24, 'beNpzMPFwGDKIgYE' +
'RDZFtSF/vZzgi1ShME8gwDdkQUSF9NESkUZiGVFX9gCPijUI2BNkE' +
'NNPgRuF3DLJLTE3y4AjNVVidhMuQv//+QaSADGKMwvQRUBdEO9wcI' +
'IlsFFbfoZkDMQTTHLhRZJgDR2SYQ56/vFysqBXOZMc70A3USocQo5' +
'ANpCRfAM2BGOVsbQhEVMmn5JQbduSXY3Av0K1cJck6sk3AogYAZGI' +
'N/w==');
if(FindBitmap(Hometele,x,y)) then
begin
Mouse(X+(11), Y+(10), 10, 10,true);
Writeln('Clicked Bitmap');
FreeBitmap(HomeTele);
end else begin
Writeln('Could not find Bitmap!');
FreeBitmap(HomeTele);
wait(500+random(500));
Writeln('Using last resort');
Mouse(571,228,12,12,true);
If (FindBlackChatMessage('need to wait')) then
Repeat
Writeln('We need to wait before casting this spell');
Logout;
Writeln('Waiting 5 minutes');
wait(60000*5);
Loginplayer;
if FindDTM(HomeTele, X, Y, 557, 214, 605, 259) then
begin
Mouse(X, Y, 10, 10,true);
end else
begin
Mouse(571,228,12,12,true);
end;
wait(1000+random(500));
Until(not(FindBlackChatMessage('need to wait')));
end;
wait(17500+Random(5000));
Writeln('Walking Back');
Makecompass('n');
SetAngle(True);
Setrun(true);
RadialRoadWalk(FindLumbyRoadColor,30,80,65,1,1);
RadialRoadWalk(FindLumbyRoadColor,340,0,50,1,1);
RadialRoadWalk(FindLumbyRoadColor,270,345,60,1,1);
RadialRoadWalk(FindLumbyRoadColor,240,330,40,1,1);
RadialRoadWalk(FindLumbyRoadColor,240,330,40,1,1);
RadialWalk(FindDirtRoadColor,200,300,60,1,1);
RadialWalk(FindDirtRoadColor,200,300,60,1,1);
RadialWalk(FindDirtRoadColor,200,300,60,1,1);
RadialWalk(FindDirtRoadColor,200,300,60,1,1);
RadialWalk(FindDirtRoadColor,180,300,60,1,1);
RadialWalk(FindDirtRoadColor,180,300,60,1,1);
RadialWalk(FindDirtRoadColor,180,300,60,1,1);
RadialRoadWalk(FindRoadColor,270,360,60,1,1);
RadialRoadWalk(FindRoadColor,270,360,60,1,1);
Cleardebug;
SymbolAccuracy := 0.4;
If(FindSymbol(x, y, 'bank')) then
Begin
Writeln('We returned to the Draynor bank');
Mouse(x, y, 4, 4, True);
FFlag(10);
symbolAccuracy := 0.4;
if(FindSymbol(x, y, 'bank')) then
begin
mouse(x-30,y+30,6,6,true);
FFlag(10);
end else RadialWalk(FindWaterColor, 180, 270, 60, -1, 0);
Gametab(4);
end else
begin
Writeln('Could not find the bank symbol');
wait(500+random(500));
Writeln('Switching Players');
Players[CurrentPlayer].Active := False;
Logout;
Exit;
end;
end;
end;
procedure ChopWillow;
var
Tree: array [0..3] of integer;
x, y, z:Integer;
begin
AntiRandom;
Tree[0] := 3757641
Tree[1] := 3301454
Tree[2] := 2834486
if not (LoggedIn) then Exit;
if (InvFull) then
Begin
If(Players[CurrentPlayer].Booleans[0] = true) Then
Begin
Logs:= Logs+28;
Logxp := Round(Logs*67.5);
End Else
Begin
Logs:= Logs+27;
Logxp := Round(Logs*67.5);
end;
end;
SetRun(True);
Repeat
if (FindObj(x, y, 'illo', Tree[z],20)) then
begin
MMouse(x, y, 5, 5);
end;
if(isuptext('illo')) then
begin
Mouse(x,y,1,1,true);
wait(2000);
end;
Repeat
If (Not(Loggedin)) Then exit;
FindBirdsNest;
wait(500);
Antiban;
Antirandom;
If (ClickContinue(true, true)) then
begin
Levels:= Levels+1;
ClickContinue(true, true);
end;
If (FindBlackChatMessage('you are dead')) then
Begin
Writeln('You died');
Deathwalk;
end;
Until(not(isuptext('illo'))) or (InvFull)
Until(InvFull)
If(Players[CurrentPlayer].Booleans[0] = true) Then
Begin
Logs:= Logs+28;
Logxp := Round(Logs*67.5);
End Else
Begin
Logs:= Logs+27;
Logxp := Round(Logs*67.5);
end;
end;
procedure ProgressReport;
Begin
ClearDebug;
Writeln('-------------------------------');
Writeln('Worked for '+TimeRunning);
If(Players[CurrentPlayer].Booleans[0] = true) Then Begin
Writeln('Gained ' + FloatToStr(Logxp) + ' Exp');
End Else Begin
Writeln('Gained ' + FloatToStr(Logxp) + ' Exp');
End;
Writeln('Chopped '+IntToStr(Logs)+' Willows');
Writeln('Gained ' + IntToStr(Levels) + ' Levels');
Writeln('-------------------------------');
end;
function SetDDTM: Integer;
var
dtmMainPoint: TDTMPointDef;
dtmSubPoints: Array [0..4] of TDTMPointDef;
TempTDTM: TDTM;
begin
MakeCompass('n');
dtmMainPoint.x := 666;
dtmMainPoint.y := 180;
dtmMainPoint.AreaSize := 0;
dtmMainPoint.AreaShape := 0;
dtmMainPoint.Color := FindRockColor;
dtmMainPoint.Tolerance := 0;
dtmSubPoints[0].x := 666;
dtmSubPoints[0].y := 180;
dtmSubPoints[0].AreaSize := 0;
dtmSubPoints[0].AreaShape := 0;
dtmSubPoints[0].Color := 6643801;
dtmSubPoints[0].Tolerance := 60;
dtmSubPoints[1].x := 674;
dtmSubPoints[1].y := 181;
dtmSubPoints[1].AreaSize := 0;
dtmSubPoints[1].AreaShape := 0;
dtmSubPoints[1].Color := 2262385;
dtmSubPoints[1].Tolerance := 65;
dtmSubPoints[2].x := 668;
dtmSubPoints[2].y := 175;
dtmSubPoints[2].AreaSize := 0;
dtmSubPoints[2].AreaShape := 0;
dtmSubPoints[2].Color := 2262385;
dtmSubPoints[2].Tolerance := 65;
dtmSubPoints[3].x := 658;
dtmSubPoints[3].y := 180;
dtmSubPoints[3].AreaSize := 0;
dtmSubPoints[3].AreaShape := 0;
dtmSubPoints[3].Color := 2262385;
dtmSubPoints[3].Tolerance := 65;
dtmSubPoints[4].x := 665;
dtmSubPoints[4].y := 187;
dtmSubPoints[4].AreaSize := 0;
dtmSubPoints[4].AreaShape := 0;
dtmSubPoints[4].Color := 2262385;
dtmSubPoints[4].Tolerance := 65;
TempTDTM.MainPoint := dtmMainPoint;
TempTDTM.SubPoints := dtmSubPoints;
Result := AddDTM(TempTDTM);
end;
Procedure WalkToWillow;
begin
If (not(loggedin)) then exit;
If(FindDTM(SetDDTM,x,y,MMX1,MMY1,MMX2,MMY2)) then
begin
FindDTM(SetDDTM,x,y,MMX1,MMY1,MMX2,MMY2);
Mouse(x-(10),y,12,12,true);
FFlag(10);
end else begin
Writeln('Could not find DDTM');
symbolAccuracy := 0.7;
if(FindSymbol(x, y, 'bank')) then
begin
mouse(x-30,y+30,6,6,true);
FFlag(10);
end else
begin
Writeln('Could not find willows');
wait(700);
writeln('Looking for water color');
RadialWalk(FindWaterColor, 180, 270, 60, -1, 0);
if (not(RadialWalk(FindWaterColor, 180, 270, 60, -1, 0))) then
begin
If(FindSymbol(x,y, 'Bank')) then
begin
Mouse(x,y,7,7,true);
FFlag(10);
end else
if (FindSymbol(x, y, 'fishing spot')) then
begin
Mouse(x,y,7,7,true);
FFlag(10);
end else
begin
ClearDebug;
DeathWalk;
end;
end;
end;
end;
end;
procedure Bank;
begin
if not loggedin then exit;
Setrun(true);
symbolAccuracy := 0.7;
if (FindSymbol(x, y, 'bank')) then
begin
Mouse(x, y, 5, 5, True);
Writeln('Found Bank Symbol');
FFlag(7);
OpenBankQuiet('db');
If(Players[CurrentPlayer].Booleans[0] = true) Then
Begin
DepositAll;
Closebank;
ProgressReport;
End Else
Begin
Deposit(2, 28, True);
CloseBank;
ProgressReport;
end;
end else
begin
writeln('Could not find bank symbol');
Wait(600);
Writeln('Trying again');
begin
symbolAccuracy := 0.2;
if (FindSymbol(x, y, 'bank')) then
Begin
Mouse(x, y, 5, 5, True);
FFlag(7);
OpenBankQuiet('db');
If(Players[CurrentPlayer].Booleans[0] = true) Then
Begin
DepositAll;
Closebank;
ProgressReport;
End Else
Begin
Deposit(2, 28, True);
CloseBank;
ProgressReport;
end;
end else
begin
ClearDebug;
DeathWalk;
end;
end;
end;
end;
Procedure SetupSmart;
Begin
Writeln('Loading SMART');
SmartSetupEx(23, member, true, false);
wait(3000);
SetTargetDC(SmartGetDC);
repeat
wait(100);
until(SmartGetColor(253, 233)<>1118604);
Cleardebug;
Writeln('SMART loaded');
end;
procedure MainLoop;
var
Reps:Integer;
begin
If(not(loggedin)) then loginplayer;
Reps:=0;
repeat
Reps:=Reps+1;
Walktowillow;
ChopWillow;
Bank;
until(Reps>=Players[0].Integers[1]) or (AllPlayersInactive) or (not(loggedin));
if (AllPlayersInactive) then
begin
Logout;
Cleardebug;
ProgressReport;
Writeln('All players are inactive');
wait(500+random(500));
Writeln('Thank you for using Drain Willows!');
TerminateScript;
end;
If (Reps>=Players[0].Integers[1]) then
begin
Reps:=0;
Nextplayer(True);
end;
If(not(loggedin)) then
Begin
If (AllPlayersInactive) then
begin
ClearDebug;
ProgressReport;
Writeln('All players are inactive');
wait(500+random(500));
Writeln('Thank you for using Drain Willows!');
TerminateScript;
end else
loginplayer;
end;
end;
Procedure SetupScript;
Begin
Cleardebug;
SetupSRL;
Cleardebug;
SetupSmart;
DeclarePlayers;
If (not(loggedin)) then
begin
Loginplayer;
end;
makecompass('n');
SetAngle(True);
end;
begin
Setupscript;
Repeat
Mainloop;
Until(AllPlayersInactive);
end.