SCAR Code:
{ YOHOJO8's ENT FINDER IS IN HERE
INSTRUCTIONS v 5
1. Declare your players starting at line 27 of script.
2. Hit play then fill out Setup Form.
3. You must enter the tree name EXACTLY 'Willow' not 'willow'
4. Trees can be either 'Tree' 'Oak' or 'Willow
5. Hit OK and Watch. }
{.include SRL\SRL.SCAR}
{.include SRL\SRL\Skill\woodcutting.SCAR}
Var
x, y: integer;//added x, y as GLOBAL VARS
TreeColor,Loats,cx,cy: Integer;
Setup : TForm;
Label1 : TLabel;
Label2 : TLabel;
Label3 : TLabel;
Label4 : TLabel;
Edit1 : TEdit;
Edit2 : TEdit;
Button1 : TButton;
NameofTree : string;
Loads : integer;
Logg : integer;
brokenaxe : integer;
axehandle : integer;
WClevel : integer;
totallogs : integer;
logcount : integer;
workingaxe : integer;
//[][][][][][][][][][][][][][][][][][][][]
//Declare Players <======================
//[][][][][][][][][][][][][][][][][][][][]
Procedure DeclarePlayers;
begin
HowManyPlayers := 6;
NumberOfPlayers( HowManyPlayers );
CurrentPlayer := 0;
Players[0].Name := 'Username';
Players[0].Pass := 'Password';
Players[0].Nick := 'Nickname'; // 2-4 letters of username
Players[0].Active := True;
Players[1].Name := 'Username';
Players[1].Pass := 'Password';
Players[1].Nick := 'Nickname'; // 2-4 letters of username
Players[1].Active := True;
Players[2].Name := 'Username';
Players[2].Pass := 'Password';
Players[2].Nick := 'Nickname'; // 2-4 letters of username
Players[2].Active := True;
Players[3].Name := 'Username';
Players[3].Pass := 'Password';
Players[3].Nick := 'Nickname'; // 2-4 letters of username
Players[3].Active := True;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
setup.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
Procedure InitForm;
Begin
Setup := CreateForm;
Setup.Left := 321;
Setup.Top := 193;
Setup.Width := 328;
Setup.Height := 227;
Setup.Caption := 'Fours Setup';
Setup.Color := clBtnFace;
Setup.Font.Color := clWindowText;
Setup.Font.Height := -11;
Setup.Font.Name := 'MS Sans Serif';
Setup.Font.Style := [];
Setup.Visible := False;
Setup.PixelsPerInch := 96;
Label1 := TLabel.Create(Setup);
Label1.Parent := Setup;
Label1.Left := 80;
Label1.Top := 0;
Label1.Width := 156;
Label1.Height := 33;
Label1.Caption := 'Fours Power Cutter';
Label1.Font.Color := clBlue;
Label1.Font.Height := -24;
Label1.Font.Name := 'Mandela';
Label1.Font.Style := [];
Label1.ParentFont := False;
Label2 := TLabel.Create(Setup);
Label2.Parent := Setup;
Label2.Left := 4;
Label2.Top := 54;
Label2.Width := 187;
Label2.Height := 20;
Label2.Caption := 'What tree are you cutting?';
Label2.Font.Color := clWindowText;
Label2.Font.Height := -16;
Label2.Font.Name := 'MS Sans Serif';
Label2.Font.Style := [];
Label2.ParentFont := False;
Label3 := TLabel.Create(Setup);
Label3.Parent := Setup;
Label3.Left := 4;
Label3.Top := 105;
Label3.Width := 198;
Label3.Height := 20;
Label3.Caption := 'How many loads per player?';
Label3.Font.Color := clWindowText;
Label3.Font.Height := -16;
Label3.Font.Name := 'MS Sans Serif';
Label3.Font.Style := [];
Label3.ParentFont := False;
Label4 := TLabel.Create(Setup);
Label4.Parent := Setup;
Label4.Left := 4;
Label4.Top := 74;
Label4.Width := 141;
Label4.Height := 13;
Label4.Caption := 'Exactly like RS '#39'Oak'#39' not '#39'oak'#39;
Edit1 := TEdit.Create(Setup);
Edit1.Parent := Setup;
Edit1.Left := 220;
Edit1.Top := 54;
Edit1.Width := 90;
Edit1.Height := 22;
Edit1.Font.Color := clWindowText;
Edit1.Font.Height := -11;
Edit1.Font.Name := 'Arial';
Edit1.Font.Style := [fsBold];
Edit1.ParentFont := False;
Edit1.TabOrder := 8;
Edit1.Text := 'Oak';
Edit2 := TEdit.Create(Setup);
Edit2.Parent := Setup;
Edit2.Left := 220;
Edit2.Top := 105;
Edit2.Width := 25;
Edit2.Height := 21;
Edit2.OEMConvert := True;
Edit2.TabOrder := 9;
Edit2.Text := '4';
Button1 := TButton.Create(Setup);
Button1.Parent := Setup;
Button1.Left := 120;
Button1.Top := 139;
Button1.Width := 75;
Button1.Height := 25;
Button1.Caption := 'Ok, Start';
Button1.ModalResult := 1;
Button1.TabOrder := 10;
end;
Procedure Convert2;
Begin
NameofTree := Edit1.text
Loads := StrToInt(Edit2.text)
end;
//[][][][][][][][][][][][][][][][][][][][]
//Load DTMs <============================
//[][][][][][][][][][][][][][][][][][][][]
procedure loadDTM;
begin
logg := DTMFromString('78DA632C666260E0646440067921460CFF8 13' +
'448F43F103066314179C880118904D2354035FF19F0AB2905 AA11' +
'22604E23500D0F0135C94035DCF8D50000507909F5');
BrokenAxe := DTMFromString('78DA633CCAC4C090C1C8800C9A127919FE0 36' +
'990E87F2060BC0C54938CAA06220B2381F445A09A04026A8E 01D5' +
'C41050B31FA8A698809AB384CD0100CBBD0D20');
axehandle := DTMFromString('78DA637CCFC4C0E0C6C8800CCA227819FE0 36' +
'990E87F2060FC06546389AA06220B2381F473A09A00026ADE 00D5' +
'F81350F316A8C685809A97403541F8D50000D0090D3C');
workingaxe := DTMFromString('78DA637461626060676440060DF1BC0CFF8 13' +
'448F43F10300601D5FC6740038C482490F604AAF94D408D13 500D' +
'2B237E35F640358204D4F813618E1F50CD1F02EE0906AA61C 26F0' +
'E0099720B7E');
end;
//[][][][][][][][][][][][][][][][][][][][]
//MySetup <==============================
//[][][][][][][][][][][][][][][][][][][][]
Procedure MySetup;
Begin
Status ('Setup')
SetupSrl;
UseBoxSolver := True
wait(10)
UseCerterSolver := True
wait(10)
UseSandwichSolver :=True
ClearDebug;
MouseSpeed := (12-Random(3))
cx:=x;
cy:=y;
end;
//[][][][][][][][][][][][][][][][][][][][]
//Second Setup <=========================
//[][][][][][][][][][][][][][][][][][][][]
Procedure SecondSetup;
Begin
Status('Second Setup')
If NameofTree = ('Oak') then
TreeColor := (2252880)
If NameofTree = ('Willow') then
TreeColor := (1982520)
If NameofTree = ('Tree') then
TreeColor := (1730648)
WriteLn('You are cutting a[n] '+(NameofTree) + ' and the color of it is ' +IntToStr(TreeColor) + '.')
WriteLn('You are cutting '+ InttoStr(Loads) +' load[s] of logs per login.')
end;
//[][][][][][][][][][][][][][][][][][][][]
//Progress Report <======================
//[][][][][][][][][][][][][][][][][][][][]
Procedure ProgressReport;
Begin
ClearDebug;
WriteLn('')
WriteLn('<---------------------------------------------------------------->')
WriteLn('<Scrips has been running for ' + TimeRunning + '.')
WriteLn('<---------------------------------------------------------------->')
WriteLn('<Script has chopped and dropped ' +IntToStr(TotalLogs) + ' logs.')
WriteLn('<---------------------------------------------------------------->')
end;
//[][][][][][][][][][][][][][][][][][][][]
//Yohojo8's Ent finder <=================
//[][][][][][][][][][][][][][][][][][][][]
Function EntThere:Boolean;
var CX, CY : Integer;
begin
Status('Yohojo8s Searching For Ent');
if (IsUpText (NameOfTree)) then
if FindColorTolerance( CX, CY, 55769, 85, 15, 115, 15, 20) then
Result:=True;
end;
Procedure StandStill;
Begin
Status('Ent Found, Standing Still');
MouseFindFlag(648,83,5,5);
Wait(15000+Random(5000));
end;
Procedure WaitForit;
var w:integer;
Begin
Status('Waiting For Ent');
Repeat
FTWait(7000+Random(1000));
W:=W+1;
Until (W>7) or EntThere=False
end;
Procedure solveentt;
Begin
If (EntThere) then
Begin
StandStill;
WaitForIt;
end;
end;
//[][][][][][][][][][][][][][][][][][][][]
//BrokenAxe <============================
//[][][][][][][][][][][][][][][][][][][][]
Procedure AxeBroken;
Begin
Status('Checking for broken axe')
If (FindDTM(BrokenAxe,x,y,MIX1,MIY1,MIX2,MIY2)) and (not(FindDTM(BrokenAxe,x,y,MIX1,MIY1,MIX2,MIY2))) then
Begin
WriteLn('Broke an axe')
LogOut;
NextPlayer(False)
end;
end;
//[][][][][][][][][][][][][][][][][][][][]
//AntiRandoms Procedure <================
//[][][][][][][][][][][][][][][][][][][][]
Procedure MyAntiRandoms;
Begin
Status('AntiRandom Check')
FindNormalRandoms;
wait(10)
solveentt;
wait(10)
FindTalk;
wait(10)
AxeBroken;
wait(10)
If (FindDTM(BrokenAxe,x,y,MIX1,MIY1,MIX2,MIY2)) then
Begin
wait(10)
//FindHead;//not anymore in SRL 4.0 BETA
end;
wait(10)
FindMaze;
wait(10)
Solvepinball;
Wait(10)
if (FindFight) then
begin
RunAwayDirection('E');
Wait(8500 + random(3500));
RunBack;
end;
Wait(10);
FindTalk;
end;
Procedure MyAntiRandoms2;
Begin
Status('Droping Anti Randoms')
FindNormalRandoms;
wait(10)
wait(1)
wait(10)
FindMaze;
wait(10)
Solvepinball;
Wait(10)
if (FindFight) then
begin
RunAwayDirection('E');
Wait(8500 + random(3500));
RunBack;
end;
Wait(10);
FindTalk;
end;
//[][][][][][][][][][][][][][][][][][][][]
//AntiBan Procedure <====================
//[][][][][][][][][][][][][][][][][][][][]
Procedure MyAntiban;
var
DONTBAN : Integer;
begin
MyAntiRandoms;
status('My Antiban')
if ( not ( LoggedIn )) then Exit;
DONTBAN:=Random(18)
case DONTBAN of
//1: RandomRClickEvery(2 + Random(10));
//we hsould use {.include srl/srl/extended/xAntiban.scar} but it has errors
2: HoverSkill('woodcutting', false);
3: HoverSkill('random', false);
4: DoEmote(1 + Random(20));
//5: BoredEvery(9 + Random (21));
//we hsould use {.include srl/srl/extended/xAntiban.scar} but it has errors
6: PickUpMouse;
//7: LeaveScreenEvery(10 + Random(5));
//we hsould use {.include srl/srl/extended/xAntiban.scar} but it has errors
//8: RotateEvery(20 + Random(5));
9: MMouse(MSX1,MSX2,10,10)
//we hsould use {.include srl/srl/extended/xAntiban.scar} but it has errors
10: MakeCompass('N')
11: MakeCompass('S')
12: GameTab(1+random(7))
13: HighestAngle;
14: GetSkillLevel('Woodcutting')
14: WCLevel := GetSkillLevel('Woodcutting')
14: TypeSend('Lol my wc lvl is ' +IntToStr (WClevel) + '.')
15: GetSkillLevel('Woodcutting')
15: WCLevel := GetSkillLevel('Woodcutting')
15: TypeSend('Wc lvl ' +IntToStr (WClevel) + '! Sweet!')
16: GetSkillLevel('Woodcutting')
16: WCLevel := GetSkillLevel('Woodcutting')
16: TypeSend('Grr, my wc lvl is only ' +IntToStr (WClevel) + '')
17: GetSkillLevel('WoodCutting')
18: GameTab(1+Random(7))
end;
MyAntiRandoms;
end;
//[][][][][][][][][][][][][][][][][][][][]
//Chopping Procedure <===================
//[][][][][][][][][][][][][][][][][][][][]
Procedure Chopping;
Begin
Status('Chopping')
Repeat
If FindObj(x,y,NameofTree,TreeColor,3) then
Begin
Mouse(x,y,1,1,true)
wait(100)
If (EntThere) then
Begin
StandStill;
WaitForIt;
end;
If InvFull then exit;
MyAntiRandoms;
ChooseOption('Chop')
MyAntiRandoms;
If InvFull then exit;
MyAntiBan;
If InvFull then exit;
Wait(6000+random(3000))
If(Not(LoggedIn)) then NextPlayer(False);
end;
Until InvFull;
GameTab(4)
end;
//[][][][][][][][][][][][][][][][][][][][]
//Droping Procedure <====================
//[][][][][][][][][][][][][][][][][][][][]
Procedure Drop;
Begin
//logcount := CountItemDtm(logg) no more too
Repeat
If (FindDTM(Logg,x,y,MIX1,MIY1,MIX2,MIY2)) then
begin
Mouse(x,y,0,0,false)
ChooseOption('Drop')
MyAntiRandoms2;
wait(100+random(100))
end;
Until (FindDTM(Logg,x,y,MIX1,MIY1,MIX2,MIY2)) = false
Loats:=Loats+1
totallogs := totallogs + logcount
ProgressReport;
end;
//[][][][][][][][][][][][][][][][][][][][]
//MAIN THING <===========================
//[][][][][][][][][][][][][][][][][][][][]
Begin
MySetup;
SafeInitForm;
SafeShowFormModal;
Convert2;
loadDTM;
DeclarePlayers;
SecondSetup;
Loats := 0
TotalLogs := 0
logcount := 0
Wait(3000+random(1000))
LoginPlayer;
Repeat
Repeat
DisGuise('[' + IntToStr(Loats) + '/' +IntToStr(Loads) + '] ' +(Players[CurrentPlayer].name) + '')
MakeCompass('N')
HighestAngle;
Chopping;
If(Not(LoggedIn)) then NextPlayer(False);
Drop;
SrlRandomsReport;
Until (Loads = Loats)
LogOut;
Status('Logged Out.')
Wait(60000+random(60000))
Status('Logging in.')
NextPlayer(True)
Loats:=0
If(Not(LoggedIn)) then NextPlayer(False);
Until False;
end.
//THANK YOU ALL!
//Fours.