program Scarf4cePWC;
{.include SRL\SRL.SCAR}
{.include SRL\SRL\Skill\Woodcutting.SCAR}
const
RunDirec = 'W'; //Run away direction from fights, ents, etc.
AmountofLoads = 10; //How many loads per player
Treecolor = 4094064;
Treename = 'Oak';
var
Loads, LogsCut: Integer;
Log, BrokenAxe, AxeHandle, RegularAxe: Integer;
procedure DeclarePlayers;
begin
Status('Loading Players')
HowManyPlayers := 4;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; // Runescape username
Players[0].Pass := ''; // Runescape password
Players[0].Nick := '';
// 2-4 letters of your Runescape username (No capitals or spaces)
Players[0].Active := True;
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active := True;
Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active := True;
Players[3].Name := '';
Players[3].Pass := '';
Players[3].Nick := '';
Players[3].Active := True;
end;
{
==============================
// \\
|| DTM'S ||
\\ //
===============================
}
procedure LoadDTMs;
begin
Log := DTMFromString('78DA6314646060E06140014ED6120CFF81342' +
'310FF070246903C33031A60442281B418901021A0460A48701050' +
'C34684390240420CBF1A0063A9065A');
BrokenAxe := DTMFromString('78DA633CCAC4C090C1C8800C9A127919FE036' +
'990E87F2060BC0C54938CAA06220B2381F445A09A04026A8E01D5' +
'C41050B31FA8A698809AB384CD0100CBBD0D20');
AxeHandle := DTMFromString('78DA637CCFC4C0E0C6C8800CCA227819FE036' +
'990E87F2060FC06546389AA06220B2381F473A09A00026ADE00D5' +
'F81350F316A8C685809A97403541F8D50000D0090D3C');
RegularAxe := DTMFromString('78DA637461626060676440060DF1BC0CFF813' +
'448F43F10300601D5FC6740038C482490F604AAF94D408D13500D' +
'2B237E35F640358204D4F813618E1F50CD1F02EE0906AA61C26F0' +
'E0099720B7E');
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ ==============================
// \\
|| Anti Ban ||
\\ //
============================== }
{procedure MyAntiBan; //I think these are really outdated;
begin
if (not (LoggedIn)) then
Exit;
case Random(15) of
0: AntiBan;
1:
begin
HoverSkill('Woodcutting', false);
Wait(2092 + random(1021));
GameTab(4);
end;
2:
begin
HoverSkill('Attack', false);
Wait(2092 + random(1021));
GameTab(4);
end;
3:
begin
GameTab(5)
Wait(1092 + random(1021));
GameTab(4)
end;
4: LeaveScreenEvery(6 + Random(4));
5: PickUpMouse;
6: RandomChatEvery(5 + Random(4));
7:
begin
case random(4) of
0:
begin
TypeSend('Woodcutting lvls ppl?')
Wait(2458 + random(1438));
TypeSend('Mines 48');
end;
1: TypeSend('Yay only 200k more exp to go... -.-');
2: TypeSend('Omg Woodcutting is so lame and boring..');
3: TypeSend('Boredd..');
4: TypeSend('Well only 20 more levels to go..');
5:
begin
TypeSend('Cant wait till im lvl 70 wc');
Wait(2438 + random(1589));
TypeSend('Cutting yews is so much faster =]');
end;
6: TypeSend('These guys are autoers.. Or are they? X[)');
7:
begin
TypeSend('Well you ppl are lame..');
Wait(1135 + random(895));
TypeSend('Jk =P');
end;
8: TypeSend('Hmm.. am i bored, or am i bored? =[]');
9:
begin
TypeSend('Anyone see family guy last night?')
Wait(1184 + random(854));
TypeSend('Well i didnt X[) lol');
end;
end;
end;
8: RandomRClickEvery(2 + Random(5));
9:
begin
HoverSkill('Mining', false);
Wait(2092 + random(1021));
GameTab(4);
end;
10: SleepAndMoveMouse(350000 + random(200000));
11:
begin
GameTab(1);
Wait(100 + random(98))
GameTab(2);
Wait(98 + random(87))
GameTab(3);
Wait(110 + random(110))
GameTab(4);
Wait(119 + random(54))
GameTab(5);
Wait(142 + random(67))
GameTab(6);
Wait(155 + random(69))
GameTab(4);
end;
12: RotateEvery(10 + Random(10));
13: MMouse(Random(MSX2), Random(MSY2), 0, 0);
14: HoverSkill('random', false);
end;
end; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ ==================================
// \\
|| Ent ||
|| ||
|| Thanks to Yohojo for this Procedure ||
\\ //
=================================== }
procedure EntFinder;
var
EX, EY: integer;
FX, FY: integer;
SafeEntWait: LongInt;
begin
Status('Checking For Ent')
if (FindObjMultiText(EX, EY, 'Yew', 'Yew', 'Yew', 1990736, 2)) then
begin
MMouse(EX, EY, 0, 0)
if FindColorTolerance(FX, FY, 55769, 85, 15, 115, 15, 20) then
begin
Status('Ent Found');
MouseFindFlag(645, 83, 2, 2);
MarkTime(SafeEntWait)
repeat
FTWait(5)
FindNormalRandoms;
if not (LoggedIn) then
NextPlayer(False);
until TimeFromMark(SafeEntWait) > 29000 + Random(10000)
EntsAvoided := EntsAvoided + 1
end;
end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{
==============================
// \\
|| Anti-Randoms ||
\\ //
==============================
}
function FindFastRandoms: Boolean; //Function 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;
Exit;
end;
end;
7:
begin
if InBlack then
begin
Result := True;
Players[CurrentPlayer].loc := 'InBlack';
Logout;
Exit;
end;
end;
8: RC;
end;
wait(1);
end;
end;
procedure FindRandoms;
begin
FindFastRandoms;
FindNormalRandoms;
Wait(20)
FindTalk;
Wait(20)
EntFinder;
if (FindFight) then
begin
RunAwayDirection(RunDirec);
Wait(8000 + Random(2000));
RunBack;
end;
Wait(20)
FindTalk;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ =============================
// \\
|| Axe Stuff ||
\\ //
============================== }
procedure AxeHeadColors;
begin
Wait(300)
HighestAngle;
MakeCompass('N');
GameTab(4)
FindAxeHeadColor;
end;
procedure IsAxeBroken;
var
FX, FY, TX, TY: Integer;
begin
GameTab(4)
Wait(450 + random(130))
if (FindDTM(RegularAxe, FX, FY, MIX1, MIY1, MIX2, MIY2)) then
begin
Exit;
end;
begin
if (FindDTM(BrokenAxe, TX, TY, MIX1, MIY1, MIX2, MIY2)) then
begin
Writeln('Axe Broken, Switiching Players.')
NextPlayer(False)
end;
end;
end;
procedure FindAxeHead;
begin
Status('Attempting to find the Axe Head')
Findhead;
end;
//---------
function FindObjMultiText2(var cx, cy: Integer; Ut1, UT2, UT3: string; color, // FIndOBjext did not work so added this
tolerance: Integer): Boolean;
var
x, y, a, c, i, x1, y1, x2, y2: Integer;
begin
Color := Color;
if (FindColorTolerance(x, y, color, msx1, msy1, msx2, msy2, tolerance)) then
begin
x1 := 245;
y1 := 165;
x2 := 277;
y2 := 185;
repeat
if (not (Loggedin)) then
Break;
a := a + 1;
if (a = 1) or (a = 3) then
c := c + 1;
for i := 1 to c do
begin
if (a = 1) then
begin
x1 := x1 + 30;
x2 := x2 + 30;
end
else if (a = 2) then
begin
y1 := y1 - 20;
y2 := y2 - 20;
end
else if (a = 3) then
begin
x1 := x1 - 30;
x2 := x2 - 30;
end
else if (a = 4) then
begin
y1 := y1 + 20;
y2 := y2 + 20;
end;
if (x1 = 485) and (x2 = 517) then
x2 := x2 - 2;
if (y1 = 325) and (y2 = 345) then
y2 := y2 - 7;
if (x2 > 515) then
Break;
if (FindColorTolerance(x, y, Color, x1, y1, x2, y2, tolerance)) then
begin
MMouse(x, y, 0, 0)
cx := x;
cy := y;
if (IsUpTextMulti(UT1, UT2, UT3)) then
begin
Result := True;
Break;
end;
end;
end;
if (a = 4) then
a := 0;
until (x2 > 515) or (Result = True);
end;
end;
//-----
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ =============================
// \\
|| Tree Chopping ||
\\ //
=============================== }
Procedure ChopTree;
var
TimeMarker: integer;
TreeFound: boolean;
Begin
If InvFull then exit;
If not LoggedIn then exit;
Repeat
wait(1000+random(1000));
if FindObjMultiText2(X, Y, Treename, Treename, Treename, TreeColor, 12) then
begin
Wait(20 + Random(20))
Mouse(x, y, 2, 2, True);
TreeFound := True;
end Else writeln (' Did not find tree color ')
Wait(1000+random(1000));
IF treeFound then
begin
TreeFound := false;
IsAxeBroken;
// MyAntiBan
MarkTime (TimeMarker);
Repeat
Wait(500+random(100))
FindNormalRandoms;
EntFinder
Until (InvFull) or (TimeFromMark (TimeMarker) > 10000) // Add here time to wait till clicking tree again
end
Else Wait (3000+random(1000));
until (InvFull) or (not LoggedIN)
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ ==============================
// \\
|| Log Dropping ||
\\ //
============================== }
procedure DroppingLogs;
var
bx, by: Integer;
begin
if (InvFull) then
begin
GameTab(4);
repeat
begin
if (FindDTM(Log, bx, by, MIX1, MIY1, MIX2, MIY2)) then
Mouse(x, y, 4, 4, false)
Wait(20 + Random(30))
ChooseOption(bx, by, 'Drop')
LogsCut := LogsCut + 1;
end;
until (not (FindDTM(Log, bx, by, MIX1, MIY1, MIX2, MIY2)))
Loads := Loads + 1;
end;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ ==============================
// \\
|| Progress Report ||
\\ //
============================== }
procedure ProgressReport;
begin
ClearDebug;
Writeln('<<_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_>>')
Writeln('<< Scarf4ce Place/Tree Power Cutter ')
Writeln('<< Worked For: ')
Writeln('<< Chopped:' + IntToStr(LogsCut) + 'Logs')
Writeln('<< Did:' + IntToStr(Loads) + 'Loads ')
Writeln('<< Thanks for using my script ')
Writeln('<<_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_>>')
SRLRandomsReport;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
{ ==============================
// \\
|| Main Setup ||
\\ //
============================== }
procedure Setup;
begin
SetupSRL;
DeclarePlayers;
LoadDTMs;
ActivateClient;
end;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
begin
Wait(2000)
Setup;
begin
if (not (LoggedIn)) then Loginplayer;
HighestAngle;
MakeCompass('N')
repeat
//AxeHeadColors;
Wait(2000 + Random(1000))
ChopTree;
DroppingLogs;
if (Loads = AmountofLoads) then
begin
HighestAngle;
MakeCompass('N');
LogOut;
NextPlayer(True);
Loads := 0
end;
until (false)
end;
end.
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
I think that Antiban is outdated becouse my srl did not recognise moust of the procedures there
I rewrote the choppping procedure becouse it was wrote a little bit wrong
Added FindObjextMUlti to our script becouse findobject never works well
Hmmz , acually i tested it only for a 15 secounds so there still could be bugs
Ahhz Added random even finding in chopping as well but you still need to add FIndFIght
Or just add your procedure FindRandoms
Edit:
Ohh yes and FindAxeHeadColors made me strange errors ….