SRL Archive - OSR Help

Help with my chopping procedure


Scarf4ce

2007-06-03 02:18:21

My chopping procedure looks a little odd to me.. Could someone check it over and see if it is fine and would work good?

Also, right after this is my dropping procedure and when it gets to it, I get:

Line 428: [Error] (18143:1): Identifier expected in script

and

line 428 is: procedure DroppingLogs;

So I think it has to do with the chopping procedure below.


procedure ChopTree;

var
x, y : Integer;

begin
repeat
if (not (LoggedIn)) then
Exit;
begin
IsAxeBroken;
If (InvFull) then
begin
Exit;
begin
EntFinder;
Wait(200+Random(100))
begin
if (FindColorTolerance(x, y, TreeColor, 160, 97, 516, 209, 4)) then
begin
MMouse(x, y, 3, 3);
if (IsUpText('illow')) then
begin
Wait(20+Random(20))
Mouse(x, y, 2, 2, True);
repeat
begin
if (InvFull) then
Exit;
end;
begin
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
end;
Until(InvFull)
end;

jhildy

2007-06-03 02:38:22

yea your missin like 15 ends in this procedure

procedure ChopTree;

var
x, y : Integer;

begin
repeat
if (not (LoggedIn)) then
Exit;
begin
IsAxeBroken;
If (InvFull) then
begin
Exit;
begin
EntFinder;
Wait(200+Random(100))
begin
if (FindColorTolerance(x, y, TreeColor, 160, 97, 516, 209, 4)) then
begin
MMouse(x, y, 3, 3);
if (IsUpText('illow')) then
begin
Wait(20+Random(20))
Mouse(x, y, 2, 2, True);
repeat
begin
if (InvFull) then
Exit;
end;
end;
begin
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
end;
end;
end;
end;
end;
end;
end;
Until(InvFull)
end;

edit: i doubt this is how you intended for this procedure to be but thats how many ends you were missing

Pentti

2007-06-03 03:04:05

Scarf4ce, You don't need like 50% of those end's and begins in your script.


procedure ChopTree;

var
x, y : Integer;

begin
repeat
if (not (LoggedIn)) then
Exit;
IsAxeBroken;
If (InvFull) then
Exit;
EntFinder;
Wait(200+Random(100))
if (FindColorTolerance(x, y, TreeColor, 160, 97, 516, 209, 4)) then
begin
MMouse(x, y, 3, 3);
if (IsUpText('illow')) then
begin
Wait(20+Random(20))
Mouse(x, y, 2, 2, True);
repeat
if (InvFull) then
Exit;
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
Until(InvFull)
end;
end;
until(InvFull)
end;

Scarf4ce

2007-06-03 03:08:41

From: jhildy
yea your missin like 15 ends in this procedure


Yeah I posted the wrong one but the right one had about that many ends.

From: jhildy
edit: i doubt this is how you intended for this procedure to be but thats how many ends you were missing


Yeah thats why I posted it since it seemed a little odd lol =/.

I tried yours but it just gave me Identifier Expected errors where your put the ends

Scarf4ce

2007-06-03 03:20:17

From: Pentti
Scarf4ce, You don't need like 50% of those end's and begins in your script.


Yeah I didn't think so when I just went through the procedure I noticed I could have put them together instead of adding begins:duh:. Thanks for the help.

EDIT: Thanks Pentti finally got past that part. My script finally compiles =]. Now I just need to run it and find out where it screws up :P.

Scarf4ce

2007-06-03 03:30:55

EDIT: Sorry for double post, pressed it twice by accident.

Pentti

2007-06-03 03:33:47

From: Scarf4ce
Yeah I didn't think so when I just went through the procedure I noticed I could have put them together instead of adding begins:duh:. Thanks for the help.

EDIT: Thanks Pentti finally got past that part. My script finally compiles =]. Now I just need to run it and find out where it screws up :P.

Alright, thats good.

From now, remember to use less begins and ends! :D

Scarf4ce

2007-06-03 03:59:41

Could you or someone look at the procedure below and tell me why the the script isn't clicking the tree when it finds it? Thanks.


procedure ChopTree; //Thanks to Pentti for fixing this procedure

var
x, y : Integer;

begin
repeat
if (not (LoggedIn)) then
Exit;
IsAxeBroken;
If (InvFull) then
Exit;
EntFinder;
Wait(200+Random(100))
if (FindColorTolerance(x, y, TreeColor, 160, 97, 516, 209, 4)) then
begin
MMouse(x, y, 3, 3);
if (IsUpText('illow')) then
begin
Wait(20+Random(20))
Mouse(x, y, 2, 2, True);
repeat
if (InvFull) then
Exit;
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
Until(InvFull)
end;
end;
until(InvFull)
end;

rkroxpunk

2007-06-03 04:45:46

FindColorTolerance(x, y, TreeColor, 160, 97, 516, 209, 4)

Make sure your TreeColor is up to date and I bet it's not finding the color in that box…..just use MSX1,MSY1,MSX2,MSY2 instead of those numbers. that will look on the whole screen u don't really need to look in a box.

Also you use findcolor and IsUpText. If I were you I would use findobj.

This combines FindColor and IsUpText into one.

E.g.

FindObj(x,y,'illow',TreeColor,<put ur tolerance here>)

hope that's right lol i'm a shocka when it comes to parametres my memory sux

it also moves the mouse but doesn't click :D so ya just get rid of findcolor and isuptext and replace with that

shaunthasheep

2007-06-03 07:26:36

because you have this in the middle of your script

                repeat
if (InvFull) then
Exit;
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
Until(InvFull)

once it finds the tree it will get stuck in this loop. lol

Scarf4ce

2007-06-03 15:10:07

Thanks for the help guys. My script isn't working properly, the first time it hovers over the trees, then when you execute it and try starting it up again, it compiles then executes itself. Could someone take a quick look at it and see the dumb mistakes I made? :P.


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 = 1982520;
Treename = 'Willow';

var
Loads, LogsCut : Integer;
Log, BrokenAxe, AxeHandle, RegularAxe : Integer;

Procedure DeclarePlayers;
begin
Status('Loading Players')

HowManyPlayers := 4;
NumberOfPlayers( HowManyPlayers );
CurrentPlayer := 0;

Players[0].Name := 'Example'; // Runescape username
Players[0].Pass := 'Password'; // Runescape password
Players[0].Nick := 'xam'; // 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;

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;

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



{ =============================
// \\
|| Tree Chopping ||
\\ //
=============================== }

procedure ChopTree; //Thanks to Pentti for fixing this procedure

var
x, y : Integer;

begin
repeat
if (not (LoggedIn)) then
Exit;
IsAxeBroken;
If (InvFull) then
Exit;
EntFinder;
Wait(200+Random(100))
if FindObj(x,y,'illow',TreeColor,4) then
begin
Wait(20+Random(20))
Mouse(x, y, 2, 2, True);
repeat
if (InvFull) then
Exit;
Wait(10+Random(30))
FindRandoms;
Wait(10+Random(30))
MyAntiBan;
Wait(10+Random(30))
EntFinder;
Until(InvFull)
end;
until(InvFull)
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
begin
Loginplayer;
begin
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;
end;
end.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


DevilCheater

2007-06-03 16:09:19


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 ….

Scarf4ce

2007-06-03 16:18:12

From: DevilCheater


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 ….


Kk thanks for your help, I'll see how it runs now and the script uses Srl 3.6 so I think that must have caused most of your problems.

Scarf4ce

2007-06-03 18:13:58

I have another problem. Once the inventory is full of logs, the cursor goes to the top left of the runescape screen and just sits there moving a bit around that same area. Everything else seems to be running fine except for the dropping procedure.


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 := False;

Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active := False;

Players[3].Name := '';
Players[3].Pass := '';
Players[3].Nick := '';
Players[3].Active := False;

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;

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, Treename, Treename, Treename, Treecolor, 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,
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;
AxeHeadColors;
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))
FindRandoms;
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
Wait(2000 + Random(1000))
ChopTree;
DroppingLogs;
if (Loads = AmountofLoads) then
begin
HighestAngle;
MakeCompass('N');
LogOut;
NextPlayer(True);
Loads := 0
end;
until (false)
end;
end.

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

shaunthasheep

2007-06-03 18:35:30

Try remaking the dtm of the log, it might help, and only select the black border if your not already.

Scarf4ce

2007-06-03 19:03:57

From: The_Rs_Monkey
Try remaking the dtm of the log, it might help, and only select the black border if your not already.


I made tried two different ones including one taken from a working script yet none of them dropped the logs let alone make it into the inventory.

shaunthasheep

2007-06-03 19:09:34

nvm i found the problem

here. this should work:
u have the begin in the rong place, and also u use bx, by to find the dtm, but put x, y in the mouse procedure


procedure DroppingLogs;

var
bx, by: Integer;

begin
if (InvFull) then
begin
GameTab(4);
repeat
if (FindDTM(Log, bx, by, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(bx, by, 4, 4, false)
Wait(500+ 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;

Scarf4ce

2007-06-03 19:28:09

From: The_Rs_Monkey
nvm i found the problem

here. this should work:
u have the begin in the rong place, and also u use bx, by to find the dtm, but put x, y in the mouse procedure


procedure DroppingLogs;

var
bx, by: Integer;

begin
if (InvFull) then
begin
GameTab(4);
repeat
if (FindDTM(Log, bx, by, MIX1, MIY1, MIX2, MIY2)) then
begin
Mouse(bx, by, 4, 4, false)
Wait(500+ 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;


Bleh didn't notice that XD. Thanks pointing that out rs monkey.

shaunthasheep

2007-06-03 19:31:08

np, got to look more careful when you get errors like that, i didn't even notice it the first checkover, looked fine for me, thats why i thought it was the DTM cause i couldn't think of anything else :redface: