SCAR Code:
program Tvs_Farm_Boy;
{.include SRL/SRL/Misc/Smart.scar}
{.include SRL/SRL.scar}
Var
RakePosX, RakePosY, BuckPosX, BuckPosY, CanCut, LogsChopped : Integer;
TvAxeType,Player_1_Username,Player_1_Password,Player_1_Nickname : String;
Player_2_Username,Player_2_Password,Player_2_Nickname : String;
Player_3_Username,Player_3_Password,Player_3_Nickname : String;
Your_Username,Your_Password,Your_Nickname : String;
Const
SmWorld = 111;
Player_1_UsernameC = 'Tv-XxXs';
Player_1_PasswordC = 'Farming';
Player_1_NicknameC = 'Script';
Player_2_UsernameC = '';
Player_2_PasswordC = '';
Player_2_NicknameC = '';
Player_3_UsernameC = '';
Player_3_PasswordC = '';
Player_3_NicknameC = '';
Procedure TvRandoms;
Begin
FindNormalRandoms;
Wait(10)
FindFight;
Wait(10)
FindDead;
end;
Procedure TvAntiBan;
Begin
case 20 of
0: TypeSend('Grrr At The Weeds');
2: HoverSkill('random',False);
4: begin
MouseSpeed := 17 + Random(10);
Writeln('MouseSpeed changed to: '+IntToStr(MouseSpeed)+'.');
end;
6: Wait(1+Random(100));
8: begin
GameTab(1+Random(6));
Wait(Random(100));
Writeln('Switched to GameTab '+IntToStr(GetCurrentTab)+'.');
Wait(100+Random(6000));
GameTab(4);
FindNormalRandoms;
end;
10: begin
MouseSpeed := 20 + Random(10);
Writeln('MouseSpeed changed to: '+IntToStr(MouseSpeed)+'.');
end;
12: TypeSend('Wooooo Farming Lvl');
14: begin
Mouse(random(MSX2),random(MSY2),0,0, False);
Wait(10+Random(100));
if ChooseOption('xamine') then
begin
Writeln('Examined something...');
end else
begin
Writeln('Faled to Examine an Object.');
end;
end;
end;
End;
Procedure TvLogin(UserName,Password,Nickname: string);
begin
Getapplication.minimize;
ActivateClient;
Begin
NumberOfPlayers(1);
Players[0].Name := UserName;
Players[0].Pass := Password;
Players[0].nick := Nickname;
Players[0].Active := True;
cleardebug;
clearreport;
AddToReport('===========USERS============')
AddToReport('Player One = '+Player_1_Username)
AddToReport('Player Two = '+Player_1_Username)
AddToReport('Player Three = '+Player_1_Username)
AddToReport('============================')
If Not LoggedIn Then Loginplayer;
SetAngle(True);
MakeCompass('n');
GameTab(4)
TvRandoms;
End;
end;
Procedure TvSetup;
begin
Player_1_Username:= Player_1_UsernameC
Player_1_Password:= Player_1_PasswordC
Player_1_Nickname:= Player_1_NicknameC
Player_2_Username:= Player_2_UsernameC
Player_2_Password:= Player_2_PasswordC
Player_2_Nickname:= Player_2_NicknameC
Player_3_Username:= Player_3_UsernameC
Player_3_Password:= Player_3_PasswordC
Player_3_Nickname:= Player_3_NicknameC
If(Player_1_Username = '')Then Begin Writeln('No Username Is Set For Player One'); TerminateScript; End;
If(Player_1_Password = '')Then Begin Writeln('No Password Is Set For Player One'); TerminateScript; End;
If(Player_1_Nickname = '')Then Begin Writeln('No Nickname Is Set For Player One'); TerminateScript; End;
If(Player_2_Username = '')Then Player_2_Username:= Player_1_Username;
If(Player_2_Password = '')Then Player_2_Password:= Player_1_Password;
If(Player_2_Nickname = '')Then Player_2_NickName:= Player_1_Nickname;
If(Player_3_Username = '')Then Player_3_Username:= Player_1_Username;
If(Player_3_Password = '')Then Player_3_Password:= Player_1_Password;
If(Player_3_Nickname = '')Then Player_3_NickName:= Player_1_Nickname;
Case 3 of
1: Your_Username:=Player_1_Username;
2: Your_Username:=Player_2_Username;
3: Your_Username:=Player_3_Username;
end;
Case 3 of
1: Your_Password:=Player_1_Password;
2: Your_Password:=Player_2_Password;
3: Your_Password:=Player_3_Password;
End;
Case 3 of
1: Your_Nickname:=Player_1_Nickname;
2: Your_Nickname:=Player_2_Nickname;
3: Your_Nickname:=Player_3_Nickname;
End;
TvLogin(Your_Username,Your_Password,Your_Nickname);
end;
Procedure CheckFarm;
Var
Tx,Ty,Rake,Bucket : Integer;
Begin
If FindSymbol(Tx,Ty,'farming spot')then
Begin
Writeln('You Are At The Farming Spot')
Mouse(Tx,Ty,4,4,True)
Flag;
End
Else
Begin
If(FindObjCustom(Tx,Ty,['Allotment','ment','otme','Patch','tch'],[746066,812885,2518366,2707802],10))Then
Begin
Writeln('You Are At The Farming Spot')
TvRandoms;
End
Else
Begin
Writeln('You Are Not At The Farming Spot')
TerminateScript;
End;
End;
Rake := DTMFromString('78DA632C666160C867644006E5C5F9601A26C' +
'A980554538CAA06260B579307545346404D11504D390135D54035' +
'2504D480DC9347404D39504D167E3500C05107C5');
If(DTMRotated(Rake,Tx,Ty,545,200,738,465))Then
Begin
Writeln('Found A Rake By DTM')
RakePosX := Tx
RakePosY := Ty
AddToReport('Rake Position = '+IntToStr(RakePosX)+', '+IntToStr(RakePosY))
TvAntiBan;
TvRandoms;
End
Else
Begin
If(FindColorSpiralTolerance(Tx,Ty,7040883,545,200,738,465,3))Then
Begin
MMouse(Tx,Ty,4,4)
Wait(500+random(100))
If(IsUpText('ake'))Then
Begin
Writeln('Found A Rake By Object Search')
RakePosX := Tx
RakePosY := Ty
AddToReport('Rake Position = '+IntToStr(RakePosX)+', '+IntToStr(RakePosY))
TvAntiBan;
TvRandoms;
End
Else
Begin
Writeln('Could Not Find A Rake')
TerminateScript;
End;
End
Else
Begin
Writeln('Could Not Find A Rake')
TerminateScript;
End;
End;
Wait(1000+random(500))
Bucket := DTMFromString('78DA635CC4C2C090CDC8800C7A4B9CC1344C9' +
'4712E504D39AA1A982C5CCD4AA09A12026A6603D5C41350B302A8' +
'2681809A19986E465703001AC107B7');
If(DTMRotated(Bucket,Tx,Ty,545,200,738,465))Then
Begin
Writeln('Found A Bucket By DTM')
BuckPosX := Tx
BuckPosY := Ty
AddToReport('Bucket Position = '+IntToStr(BuckPosX)+', '+IntToStr(BuckPosY))
TvRandoms;
End
Else
Begin
If(FindColorSpiralTolerance(Tx,Ty,7040883,545,200,738,465,3))Then
Begin
MMouse(Tx,Ty,4,4)
Wait(500+random(100))
If(IsUpText('ket'))Then
Begin
Writeln('Found A Bucket By Object Search')
RakePosX := Tx
RakePosY := Ty
AddToReport('Bucket Position = '+IntToStr(RakePosX)+', '+IntToStr(RakePosY))
TvRandoms;
End;
End
Else
Begin
Writeln('Could Not Find A Bucket')
TerminateScript;
End;
End;
End;
Procedure CheckRake;
Var
Tx, Ty, RakeHead : Integer;
Begin
TvAntiBan;
MMouse(RakePosX,RakePosY,4,4)
wait(500+random(100))
If(IsUpText('dle'))then
Begin
writeln('Rake Is Broken')
If(FindObjCustom(Tx,Ty,['ake','Rake'],[7764864,6053987,7896450],10))then
begin
Wait(500+random(100))
Mouse(Tx,Ty,4,4,true)
wait(500+random(100))
RakeHead := DTMFromString('78DA639CCAC4C0B087910119D4941731FC07D' +
'220D1FF40C0381BA8662BAA9A207F1F300D1305AB398CAA263E3A' +
'02554D1F50CD2E54353191A1A86A2600D51C4455D3DDDE88AA661' +
'6A69BD1ED02005486141B');
If(DTMRotated(RakeHead,Tx,Ty,0,0,0,0))Then
Begin
Mouse(Tx,Ty,4,4,True)
wait(100+random(500))
Mouse(RakePosX,RakePosY,4,4,True)
TvRandoms;
Wait(1000+random(1000))
Writeln('Fixed The Rake')
End
Else
Begin
Writeln('Sorry, Something Went Wrong')
TerminateScript;
End;
end
else
begin
Writeln('Im Afraid I Cant Find The Rake Head')
TerminateScript;
end;
End;
End;
Procedure WeedTheFarm;
Var
Tx,Ty,Ti : Integer;
Begin
Ti:=0
Repeat
Wait(1000+random(1000))
Mouse(RakePosx,RakePosY,4,4,True)
Wait(500+random(500))
If(FindObjCustom(Tx,Ty,['ment','otme','Patch','tch'],[2650209,2716772,881504,880476],4))Then
Begin
MMouse(Tx,Ty,4,4)
wait(500+random(100))
If(IsUpText('ment')or IsUpText('tch'))Then
Begin
Mouse(Tx,Ty,2,2,True);
Wait(2000+random(5000));
CheckRake;
TvRandoms;
TvAntiBan;
Wait(10000+random(5000));
End
Else
Begin
Wait(1000+random(1000));
If FindSymbol(Tx,Ty,'farming spot')then
Begin
Mouse(Tx,Ty,10,10,True)
Flag;
Ti:= Ti+1
Writeln('Weed Check = '+IntToStr(Ti))
TvRandoms;
End
Else
Begin
Wait(1000+random(1000))
End;
End;
End
Else
Begin
Wait(100+random(500))
Mouse(RakePosX,RakePosY,4,4,True)
Wait(1000+random(1000));
TvAntiBan;
TvRandoms;
End;
If invfull then Ti:= 10;
Until(Ti>5);
Writeln('Weeded All The Patches')
TvAntiBan;
TvRandoms;
end;
Procedure CompostWeeds;
Var
Tx,Ty,Weed,Tc, CompFullBMP : Integer;
Begin
If FindSymbol(Tx,Ty,'farming spot')then
Begin
Mouse(Tx,Ty,4,4,True)
Flag;
End;
SetAngle(False);
Weed := DTMFromString('78DA636461616098C9C8800CFCA214C1344C9' +
'49107A86605AA1A982C5CCD77660686B904D4FC06AAE927A0860B' +
'68D764026A18806A96E05703006A2B06A7');
Tc:=0;
Repeat
If(DTMRotated(Weed,Tx,Ty,545,200,738,465))Then
Begin
Mouse(Tx,Ty,4,4,True)
Wait(100+random(100))
TvRandoms;
Tc:=1;
End
Else
Begin
If(FindColorSpiralTolerance(Tx,Ty,2053449,545,200,738,465,3))Then
Begin
MMouse(Tx,Ty,4,4)
Wait(500+random(100))
If(IsUpText('eeds'))Then
Begin
Writeln('Found Weeds By Object Search')
TvRandoms;
Mouse(Tx,Ty,4,4,True)
Tc:= 1;
End
Else
Begin
Writeln('Could Not Find Weeds')
TerminateScript;
End;
End;
End;
If(FindObjCustom(Tx,Ty,['Comp','ost','Bin'],[3498352,4022122,5142663],10))Then
Begin
Mouse(Tx,Ty,4,4,False)
Wait(100+random(500))
ChooseOption('in')
Flag;
Wait(500+random(100))
End;
TvAntiBan;
If(FindBlackChatMessage('compost'))Then Tc:= 1;
Until(Tc=1)
CompFullBMP := BitmapFromString(26, 10, 'beNqNktENgCAMRNl/D' +
'n50EoNuoB+OIqbxeTnEQIg5W/o4a8t0lO4+t/knG3tfMgI9XkIh5f' +
'och9xu1xyeW0saSc8ClTqLKl4tFZC4xc4rHGFAi7dCb2lpbRBdmxC' +
'ClHkzsh7r0dQ/9qwDnzSmiDhA+oAfbQKfYDbs9w3Oic5zFbToTV09' +
'98zN');
If(findBitmap(CompFullBMP,Tx,Ty))Then
Begin
Writeln('Compost Is Already Full')
ClickToContinue;
end
else
Begin
Writeln('Compost Filled, Shutting Lid...')
If(FindObjCustom(Tx,Ty,['Comp','ost','Bin'],[3498352,4022122,5142663],10))Then
Begin
Mouse(Tx,Ty,4,4,False)
Wait(100+random(500))
ChooseOption('ose')
Flag;
Wait(500+random(100))
End;
end;
End;
Procedure GetAxeType;
Begin
If(IsUpText('onze'))then TvAxeType:='Bronze';
If(IsUpText('ron'))then TvAxeType:='Iron';
If(IsUpText('eel'))then TvAxeType:='Steel';
If(IsUpText('eral'))then TvAxeType:='Mith';
If(IsUpText('ment'))then TvAxeType:='Addy';
If(IsUpText('une'))then TvAxeType:='Rune';
If(IsUpText('agon'))Then TvAxeType:='Dragon';
If(IsUpText('oken'))Then TvAxeType:='Broken';
End;
Procedure CanCutTrees;
Var
Tx, Ty, EqAxe : Integer;
Begin
Mouse(675,185,4,4,True)
Wait(1000+random(500))
EqAxe := DTMFromString('78DA636C60616058CDC8800C82722AC0344C9' +
'4B10DA86613AA1A982C5C4D2750CD2A026A6A816A5610505349D8' +
'2E003C910744');
If(DTMRotated(EqAxe,Tx,Ty,545,200,738,465))Then
Begin
MMouse(Tx,Ty,4,4)
wait(500+random(100))
GetAxeType;
CanCut:=1;
AddToReport('You Have A '+TvAxeType+' Axe Weilded')
End
Else
Begin
MMouse(586,305,4,4)
Wait(500+random(500))
If(IsUpText('axe'))Then
Begin
GetAxeType;
MMouse(Tx,Ty,4,4)
wait(500+random(100))
CanCut:=1;
AddToReport('You Have A '+TvAxeType+' Axe Weilded')
If(TvAxeType = 'Broken')Then CanCut:=0;
End
Else
Begin
CanCut := 0;
Writeln('No Axe Found')
End;
End;
Mouse(645,185,4,4,True)
Wait(1000+random(1000))
End;
Procedure TvChopTrees;
Var
Tx,Ty : integer;
Begin
Repeat
If(FindObjCustom(Tx,Ty,['ree','Tre','ee'],[1797467,727573,2706759,1530708,4353163,2572371],10))Then
Begin
MMouse(Tx,Ty,4,4)
Wait(100+random(100))
If(IsUpText('ree'))Then
Begin
Mouse(Tx,Ty,4,4,True)
LogsChopped:= LogsChopped + 1
Wait(5000+random(10000))
End;
end
else
Begin
Writeln('Looking For Trees')
End;
Until(InvFull)
End;
Procedure CutWhilstWeWait;
Var
Tx,Ty,Ti : Integer;
Begin
Writeln('Well Lets Cut Some Trees')
SetAngle(True);
Ti:=0
Repeat
If(FindColorSpiralTolerance(Tx,Ty,2053449,545,200,738,465,3))Then
Begin
MMouse(Tx,Ty,4,4)
Wait(100+random(100))
If(IsUpText('eeds'))Then
Begin
Writeln('Found Weeds By Object Search')
TvRandoms;
Mouse(Tx,Ty,4,4,False)
Wait(200+random(300))
Chooseoption('rop')
wait(1000+random(1000))
End
Else
Begin
Writeln('Dropped All Weeds')
Ti:=1
End;
end
else
Begin
Writeln('Dropped All Weeds')
Ti:=1
End;
Until(Ti=1)
Mouse(629,63,10,10,true);
Flag;
TvChopTrees;
End;
begin
SmartSetupEx(SmWorld, false, true);
SetTargetDC(SmartGetDC);
SetupSRL;
TvSetup;
CheckFarm;
CanCutTrees;
Repeat
WeedTheFarm;
CompostWeeds;
If(CanCut=1)Then
Begin
CutWhilstWeWait;
End
Else
Begin
Writeln('Logging Out Whilst Compost Rots')
LogOut;
Wait(300000+random(300000))
TvSetup;
TvLogin(Your_Username,Your_Password,Your_Nickname);
End;
Until(false)
end.