SCAR Code:
{========================This is my first script===============================]
[ Twistedvip50 ]
[ ]
[ Port Sarim Willower ]
[ Made for Scar 13, SRL 4 #10 ] ]
[ 15 15 ]
[ CREDITS GO TO: ]
[ Me, for making the script. ]
[ [-Jesus-], and for some people for their TUTS ]
[=================================SETUP========================================]
[ 1. USE RuneScape with Low Detail, VERY Bright. ]
[ 2. Set your Screen to 32 bit TRUE color. ]
[ 3. Set Playernames and Passwords. ]
[ 4. Drag CROSSHAIR on RuneScape client. ]
[ 5. Make sure to start with a axe in your first inventory slot. ]
[==============================================================================}
Program PORTSARIMWILLOWER;
{.include SRL/SRL/Misc/Smart.Scar}
{.include SRL/SRL.Scar}
{.include SRL/SRL/Skill/Woodcutting.Scar}
Var
Quest, AxeBroke, BankSpot, willowbmp, WillowLog : Integer;
TotalWillows, Banked, x, y: Integer;
const
Version = '1.00';
YourSRLId = '';
YourSRLPassword = '';
MSpeed = 13;
Procedure DeclarePlayers;
begin
HowManyPlayers:= 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 0;
Players[0].Name := 'USERNAME'; //UserName
Players[0].Pass := 'PASSWORD'; //Password
Players[0].Nick := 'SER'; //Nickname
Players[0].Integers[0]:= 1000; //Number of loads
Players[0].Strings[0]:= 'false'; //Axe wielded?
Players[0].Active := True; //Active
Writeln('Using '+IntToStr(HowManyPlayers)+' Players');
end;
Procedure LoadStuff;
begin
Quest := BitmapFromString(15, 5, 'z78DA8D90410A80300C04BF94' +
'B49A36475BD3FF3F497011564AC5CB1042322C2B4954B46B1B2D9' +
'8D53C45F1DEFCCC25D51206629FCBD69F9B437DF8EB576EA74C66' +
'DC83B0B19F9DCC6F33675B71DBCDC257FC9F993BC12F3263E61B7' +
'402AECC73CF9839DBDC33B70DE70515B06618');
WillowLog := DTMFromString('78DA6314666060E067400121DEB2609A11CA6' +
'704715919D00023AA1A0E20C149841A3E026A5880842801353C40' +
'429A801A31202149408D3C901027A0469108F728010901026A406' +
'1C843408D20906027A006E41636026A0488081F2E2021815F0D00' +
'F1CB030A');
willowbmp := BitmapFromString(8, 8, 'beNqz4feygSJRF04Igovw6' +
'bEBEVBENYgfiJQduOCCQATkQsQhiKC4ngYDBEEUAEUgtuhIMAAR3E' +
'a47cjiyAhFHACOzRxW');
BankSpot := DTMFromString('78DA632C63666070636440065F3EBF67F80FA' +
'441A2FF8180310FA8C60355CD9F3F4C601A260A561340404D2E50' +
'4D087E3500C60B10C9');
end;
Procedure LoggingIn;
begin
if (not(LoggedIn)) then
LoginPlayer;
end;
procedure Chats;
begin
LoggingIn;
SetChat('on', 1);
SetChat('off', 2);
SetChat('off', 3);
SetChat('off', 4);
end;
Procedure BankWalk; Forward;
procedure Starter;
begin
writeln(' ______ _ __ __ _ __________ ');
writeln(' /_ __/ __(_)____/ /____ ____/ / __(_)___ / ____/ __ \ ');
writeln(' / / | | /| / / / ___/ __/ _ \/ __ / | / / / __ \/___ \/ / / / ');
writeln(' / / | |/ |/ / (__ ) /_/ __/ /_/ /| |/ / / /_/ /___/ / /_/ / ');
writeln('/_/ |__/|__/_/____/\__/\___/\__,_/ |___/_/ .___/_____/\____/ ');
writeln(' /_/ ');
Wait(1500);
writeln(' ____ __ __ ');
writeln(' / __ \_________ ____/ /_ _______/ /______ ');
writeln(' / /_/ / ___/ __ \/ __ / / / / ___/ __/ ___/ ');
writeln(' / ____/ / / /_/ / /_/ / /_/ / /__/ /_(__ ) ');
writeln('/_/ /_/ \____/\__,_/\__,_/\___/\__/____/ ');
Wait(1000 +random(3500));
end;
function AxeExist: Boolean;
begin
If(Not(LoggedIn)) then Exit;
FindNormalRandoms;
If (LowerCase(Players[CurrentPlayer].Strings[0])='true') then
GameTab(5);
MMouse(585, 303, 5, 5);
If (IsUpText('roke')) then
begin
Status('Broke Axe');
AxeBroke := AxeBroke +1;
NextPlayer(False);
Result := False;
end else
Writeln('NOT Broken');
GameTab(4);
Result := True;
If (LowerCase(Players[CurrentPlayer].Strings[0])= 'false') then
GameTab(4);
If FindAxe then
begin
Writeln('Found Axe');
Result := True;
end;
end;
procedure AntiBan;
begin
if (not(LoggedIn)) then
Exit;
FindNormalRandoms;
case Random(30) of
0: RandomMovement;
1: HoverSkill('Woodcutting', False);
2: RandomRClick;
3: SayCurrentLevels('woodcutting');
4: PickUpMouse;
5: begin
case Random(20) of
0: TypeSend('wc lvls?');
1: TypeSend('How many willows do you guys have?');
2: TypeSend('Boy, this is boring');
end;
end;
6: AlmostLogout;
end;
end;
function RandomRotate:Boolean; //Author: IP-Drowne
begin
case random(15) of
0: begin
MakeCompass('N');
Result:=True;
end;
1: begin
MakeCompass('S');
Result:=True;
end;
2: begin
MakeCompass('E');
Result:=True;
end;
3: begin
MakeCompass('W');
Result:=True;
end;
end;
end;
{Fail Safe}
{Needs lots of help}//Maybe not(Revised)
{BY: Twistedvip50}
procedure Checker1;
begin
If (Not(LoggedIn)) then Exit;
If (FindSymbol(x, y, 'bar')) then
begin
writeln('Uh-oh, somehow we didn''t make it to the other side.');
SymbolAccuracy := 0.6;
If (FindSymbol(x, y, 'Quest')) then
begin
Mouse(x, y, 4, 4, true);
FTWait(4);
Flag;
If (FindSymbol(x, y, 'bar')) then
begin
Mouse(658, 56, 5, 5, true);
FFlag(3);
FindNormalRandoms;
BankWalk;
end;
end;
end;
end;
procedure EntFinder;
var
EX, EY: integer;
FX, FY: integer;
SafeEntWait: LongInt;
begin
if (not (LoggedIn)) then
Exit;
begin
Status('Checking For Ent')
if (FindObjCustom(EX, EY, ['Willow'], [4690821], 5)) then
begin
MMouse(EX, EY, 0, 0)
if FindColorTolerance(FX, FY, 55769, 85, 15, 115, 15, 20) then
begin
Writeln('Ent Found');
MakeCompass('N');
Mouse(620, 91, 3, 3, true);
MarkTime(SafeEntWait);
repeat
FTWait(4);
FindNormalRandoms;
if (not(LoggedIn)) then
NextPlayer(False);
until TimeFromMark(SafeEntWait) > 29000 + Random(10000);
EntsAvoided := EntsAvoided +1;
ReportVars[1]:= ReportVars[1] +1;
end;
end;
end;
end;
procedure FindAndChop;
var
CuttingTime : integer;
begin
MarkTime(CuttingTime);
repeat
if (not(LoggedIn)) then Exit;
RandomRotate;
if (FindObj(x, y, 'illow', 1593157, 8)) then
begin
MMouse(x, y, 4, 4);
EntFinder;
FindEnt(x, y, True);
if (IsUpText('illow')) then
begin
GetMousePos(x, y);
Mouse(x, y, 1, 1, true);
Wait(4000 +Random(3000));
FindNormalRandoms;
end;
end;
until (InvFull) or (TimeFromMark(CuttingTime) > 600000+random(60000));
TotalWillows := TotalWillows +27;
ReportVars[0]:= ReportVars[0] +27;
Writeln('Chopped a full load of willows, now heading for the bank');
end;
procedure WillowsWalk;
begin
if (Not(LoggedIn)) then Exit;
Makecompass('N');
SetAngle(True);
FindNormalRandoms;
RoadColor := FindRoadColor;
begin
RadialRoadWalk(RoadColor, 285, 305, 53, 2, 2);
FFlag(0);
If (FindBitmapToleranceIn(Quest, x, y, MMX1, MMY1, MMX2, MMY2, 5)) then
begin
Mouse(x, y, 5, 5, true);
FFlag(1);
FindNormalRandoms;
if (FindBitmap(willowbmp, x, y)) then
begin
Mouse(x, y, 5, 5, true);
Wait2(25000, true);
FFlag(5);
end else
Mouse(589, 86, 2, 2, true);
Wait2(10000, true);
FFlag(5);
FindNormalRandoms;
if (FindBitmap(willowbmp, x, y)) then
Mouse(x, y, 4, 4, true);
FFlag(10);
end;
end;
end;
procedure BankWalk;
begin
if (Not(LoggedIn)) then Exit;
MakeCompass('N');
FindNormalRandoms;
SetRun(true);
GameTab(4);
Wait(500 +random(150));
RoadColor := FindRoadColor;
If (FindColorTolerance(x, y, 7303031, MMX1, MMY1, MMX2, MMY2, 18)) then
begin
RadialRoadWalk(RoadColor, 73, 115, 63, 2, 2);
FFlag(1);
FTWait(4);
FindNormalRandoms;
Wait(2500 +random(1500));
Flag;
SymbolAccuracy := 0.6;
If (FindSymbol(x, y,'quest')) then
begin
Mouse(x, y, 5, 5, true);
FFlag(0);
Wait(500 +random(250));
FindNormalRandoms;
Checker1;
if (Not(FindSymbol(x, y, 'bank'))) then
repeat
RadialRoadWalk(RoadColor, 138, 160, 43, 2, 2);
until FindSymbol(x, y, 'bank');
Mouse(x,y, 3, 3, true);
FFlag(5);
FindNormalRandoms;
SetRun(false);
If (DTMRotated(BankSpot, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
Mouse(x, y, 1, 1, true);
FFlag(1);
FindNormalRandoms;
end;
end;
end else
If (Not(FindColorTolerance(x, y, 7303031, MMX1, MMY1, MMX2, MMY2, 18))) then
begin
Mouse(687, 90, 5, 5, true);
FFlag(1);
FTWait(4);
FindNormalRandoms;
Wait(2500 +random(500));
Flag;
SymbolAccuracy := 0.6;
If (FindSymbol(x, y,'quest')) then
begin
Mouse(x, y, 5, 5, true);
FFlag(5);
Wait(500 +random(250));
Checker1;
if (Not(FindSymbol(x, y, 'bank'))) then
repeat
RadialRoadWalk(RoadColor, 138, 160, 43, 2, 2);
until FindSymbol(x, y, 'bank');
Mouse(x,y, 3, 3, true);
FFlag(5);
SetRun(false);
If (DTMRotated(BankSpot, x, y, MMX1, MMY1, MMX2, MMY2)) then
begin
Mouse(x, y, 1, 1, true);
FFlag(1);
FindNormalRandoms;
end;
end;
end;
end;
function BankIt: Boolean;
var
I : Integer;
begin
if (InvFull) then
begin;
OpenBankFast('db');
Flag;
wait(500 + random(500));
FixBank;
Case LowerCase(Players[CurrentPlayer].Strings[0]) of
'true':
begin
Deposit(2,28,2);
end else
begin
DepositAll;
end;
end;
for I:= 2 to 28 do
begin
if ExistsItem(I) then MouseItem(I, true);
end;
CloseBank;
MakeCompass('N');
Banked := Banked +1;
end;
end;
procedure Proggie;
begin
Writeln('=======================================') ;
Writeln(' PS Willower ');
Writeln(' Version: '+Version);
Writeln('BY: Twistedvip50');
Writeln('=======================================') ;
Wait(500);
Writeln('Worked For : '+ (TimeRunning));
If(TotalWillows > 0)then
Writeln('Chopped: ' + IntToStr(TotalWillows) + ' Logs');
If(Banked > 0)then
Writeln('Bank Trips: ' + IntToStr(Banked) + ' Trips Made');
If(EntsAvoided > 0) then
Writeln('Advoided: ' + IntToStr(EntsAvoided) + ' Number Of Ents');
If(AxeBroke > 0) then
Writeln('Broke ' + IntToStr(AxeBroke) + ' Axes.');
Writeln('=======================================');
end;
begin
SetUpSRL;
SetupWoodcutting;
ScriptID := '316';
SRLId := YourSRLID;
SRLPassword := YourSRLPassword;
Starter;
Wait(2500 +random(500));
ActivateClient;
DeclarePlayers;
LoadStuff;
If LoggedIn then Logout;
Wait(500 +random(750));
LoggingIn;
SetAngle(True);
Chats;
if AxeExist then
MouseSpeed := MSpeed;
repeat
WillowsWalk;
repeat
FindAndChop;
until (InvFull);
AntiBan;
FindNormalRandoms;
Wait(500 +random(750));
BankWalk;
BankIt;
FindNormalRandoms;
SRLRandomsReport;
Proggie;
until Players[CurrentPlayer].Integers[1] = Banked;
NextPlayer(False);
end.