Runescapian321
Active Member
- Joined
- Sep 19, 2007
- Sythe Gold
- 0
- Messages
- 179
I'm new to this and I can't get any script to work for me. I have SCAR 3.11 and SRL 4. I've been trying ever SRL4 script I could find, but I can't get them to work. I'm probably putting something in wrong when I have to fill the stuff in on the script. Could somebody fill this script out for me so I will see what I'm doing wrong? (Lets say the 3 guys I want to auto with are Bob1, Bob2, and Bob3, and for the passwords (which you need to put in, right?) are all Bob) Heres the script (oh and where you filled stuff in could you make it in another color so I see what you changed? I'd appreciate it) -
{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-|
| |
| [SRL]PowerChopper Free Version |
| By : Pwnaz0r |
| |
| Updates : September 09, 2007 |
| - Script Released |
| |
| Features : - Stable chopping and dropping |
| |
| Instructions : Fill in player array (Line 37) |
| Locate Players near the tree types |
| Hit Run! |
| |
| Credits : Hy - Asked For it
|
| |
| |
| |
| |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
program SRL_PowerChopper;
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Woodcutting.scar}
Const DebugAll = True; //Debugs every detail
MaxTime = 8; //Max time to cut tree in seconds
DropRandomItems = True; // Drop All items from randoms?
Version = '1.10'; //Dont mess
var
TreeCols: array [0..2] of integer;
TreeName: string;
logs, gems, loads: integer;
strLogs, strGems, PlayerTreeName: String;
procedure ClearVars; forward;
procedure DeclarePlayers;
begin
SRLID := '';
SRLPassword := '';
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Integers[2] := 50; //Loads To Do
Players[0].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Integers[2] := 50; //Loads To Do
Players[1].Strings[1] := 'regular'; // Regular, Oak, Willow
{Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Integers[2] := 50; //Loads To Do
Players[2].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Integers[2] := 50; //Loads To Do
Players[3].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Integers[2] := 50; //Loads To Do
Players[4].Strings[1] := 'regular'; // Regular, Oak, Willow
}
Writeln('Player(s): '+IntToStr(HowManyPlayers)+';');
ClearVars;
end;
var
x,y: integer;
procedure ClearVars;
var
I : integer;
begin
for I := 0 to HowManyPlayers - 1 do
begin
Players.Integers[0] := 0;
Players.Integers[1] := 0;
Players.Integers[6] := 0;
Players.Integers[5] := 0;
Players.Integers[7] := 0;
Players.Active := True;
Players.Loc := '';
Players.Rand := '';
end;
if SRLid = '' then
begin
SRLid := '';
SrlPassword := '';
end;
ScriptId := '274';
logs:= 0;
gems:= 0;
loads:= 0;
strLogs:= '0';
strGems:= '0';
end;
procedure Debug(str: string);
begin
str:= '['+TheTime+']- ' + str;
AddToReport(str);
end;
procedure PlayerDebug(str: string);
begin
str:= 'Player['+IntToStr(CurrentPlayer)+'] - '+Str;
Writeln(str);
end;
Procedure ChatBoxStyle;
begin
If GetColor(17,484) = 1452085 then exit else Mouse(51,496,3,3,true);
SetChat('friends',1);
end;
procedure Tab11Details;
begin
Gametab(11);
if not GetColor(709,229) = 9584920 then Mouse(709,229,3,3,true);
if not GetColor(609,265) = 10172937 then Mouse(609,265,3,3,true);
if not GetColor(608,302) = 10172937 then Mouse(608,302,3,3,true);
if not GetColor(607,339) = 10172937 then Mouse(607,339,3,3,true);
SetRun(true);
end;
function FindAxeEx: boolean; forward;
function SetUpNextPlayer(ChangePlayer, Active: boolean): boolean;
begin
result:= true;
If ChangePlayer then NextPlayer(Active);
TreeName:= 'none';
Case LowerCase(Players[CurrentPlayer].Strings[1]) of
'none': begin
Writeln('Invalid Tree Name! Cutting regulars instead');
PlayerTreename:= 'regular';
end;
'regular','tree','normal': PlayerTreename:= 'regular';
'oak': playertreename:= 'oak';
'willow': Playertreename:= 'willow';
end;
NickNameBMP := CreateBitMapMaskFromtext(Players[CurrentPlayer].Nick,UpChars);
ChatBoxStyle;
Tab11Details;
PerfectNorth;
SetRun(false);
FindAxeEx;
Loads:= 0;
end;
function AxePresent: boolean;
var
axemask: integer;
begin
axemask:= BitmapFromString(12, 6, 'z78DA3330200CDCC060F0A8A19' +
'669C4DB854B3DA92660EA25D50400350956AD');
result:= FindBitmapMaskTolerance(axemask,x,y,547,203,737,467,5,5);
end;
function FindAxeEx: boolean;
var
I: integer;
begin
for i:= 4 to 5 do
begin
GameTab(i);
if axepresent then
begin
result := true;
players[currentplayer].integers[5] := GetColor(x,y);
case I of
4 : Players[currentplayer].booleans[5] := false;
5 : begin
Mouse(x,y,0,0,true);
Wait(1200);
Gametab(4);
Players[CurrentPlayer].Booleans[5] := false;
end;
end;
If DebugAll then
begin
Debug('Axe Found');
PlayerDebug('Axe Color('+IntToStr(players[currentplayer].integers[5])+') Axe Wielded('+BoolToStr(Players[CurrentPlayer].Booleans[5])+')');
end;
exit;
end;
end;
If DebugAll then
begin
Debug('Axe NOT Found');
PlayerDebug('No Axe!');
end;
Players[CurrentPlayer].Loc := 'No Axe';
NextPlayer(false);
end;
function ControlAxe: boolean;
var
rndx,rndy,I: integer;
begin
for I:= 4 to 5 do
begin
Gametab(I);
Result:= FindColorTolerance(rndx,rndy,Players[CurrentPlayer].Integers[5],547,203,737,467,1);
if Result and (I = 5)then
begin
Mouse(rndx,rndy,3,3,true);
PlayerDebug('Axe was Somehow Wielded');
end;
if Result then Exit;
end;
end;
function HandleAxe: boolean;
var
tmptArray: array of Tpoint;
tmpint: integer;
tmpCST: integer;
begin
result:= not ControlAxe;
if result then
begin
tmpCST:= GetColorToleranceSpeed;
SetColorSpeed2Modifiers(0.3,0.3);
ColorToleranceSpeed(2);
FindColorsTolerance(tmptarray,Players[CurrentPlayer].Integers[5],25,25,(MSX2-25),(MSY2-25),10);
for tmpint:= 0 to Length(tmptarray) -1 do
begin
MMouse(tmptarray[tmpint].x,tmptarray[tmpint].y,0,0);
if IsUpTextMulti('ake','ead','xe')then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,true);
Flag;
Wait(800);
ColorToleranceSpeed(tmpCST);
Exit;
end;
end;
ColorToleranceSpeed(tmpCST);
end;
end;
function HandleRandoms(x, y: integer): Boolean;
var
i: Integer;
begin
NickNameBMP:= CreateBitmapMaskFromText(Players[Currentplayer].Nick,UpChars);
for i:= 1 to 3 do
begin
case I of
1: if FindNormalRandoms then result:= true;
2: if HandleAxe then result:= true;
3: if FindEnt(x,y, true) then result:= true;
end;
wait(1);
end;
end;
procedure Reset(var X, Y: integer);
begin
try
X := Round(MSX2/2);
Y := Round(MSY2/2);
except
X := MSCX;
Y := MSCY;
end;
end;
procedure SetData(tree: String);
begin
case Lowercase(tree) of
'regular','tree':
begin
TreeName:= 'ree';
TreeCols[0]:= 1866347;
TreeCols[1]:= 4096372;
TreeCols[2]:= 3633766;
end;
'oak': begin
TreeName:= 'ak';
TreeCols[0]:= 4089180;
TreeCols[1]:= 2317388;
TreeCols[2]:= 1853512;
end;
'willow': begin
TreeName:= 'illo';
TreeCols[0]:= 6125682;
TreeCols[1]:= 2526330;
TreeCols[2]:= 3043941;
end;
end;
end;
function ReturnArray(TPA: array of TPoint; Modifiers: integer): TPointArray; forward;
function FindTree(x1, y1, x2, y2:integer; Move: boolean): boolean;
var
tmp: integer;
tmpt: array of TPoint;
begin
SetColorSpeed2Modifiers(1.0,1.0);
Reset(x,y);
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x,y,tmpt,TreeCols[0],x1,y1,x2,y2,2);
tmpt:= ReturnArray(tmpt,20);
For tmp:= 0 to Length(tmpt) -1 do
begin
x:= tmpt[tmp].x;
y:= tmpt[tmp].y;
If FindColorSpiralTolerance(x,y,TreeCols[1],(x-5),(y-5),(x+5),(y+5),2)then
If FindColorSpiralTolerance(x,y,TreeCols[2],(x-5),(y-5),(x+5),(y+5),2)then
begin
if Move then
begin
MMouse(x,y,0,0);
result:= IsUpText(TreeName);
end else
begin
result:= true;
end;
if result then exit;
end;
end;
end;
procedure ClickTree;
begin
GetMousePos(X,Y);
case random(1) of
0: Mouse(X,Y,0,0,true);
1: begin
Mouse(X,Y,0,0,false);
ChooseOption('hop');
end;
end;
end;
function FollowTree(var x,y: integer): boolean;
begin
SetColorSpeed2Modifiers(1.0,1.0);
ColorToleranceSpeed(2);
result:= FindTree(x - 25, y - 25, x + 25, Y + 25, false);
end;
function TreeChoppedAt(x, y:integer): boolean;
begin
SetColorSpeed2Modifiers(1.0,1.0);
ColorToleranceSpeed(2);
result:= not FindTree(x - 25, y - 25, x + 25, Y + 25, false);
end;
function ReturnArray(TPA: array of TPoint; Modifiers: integer): TPointArray;
var
tmp, tmp1, tmp2: integer;
begin
SetArrayLength(TPA,10);
for tmp:= 0 to Length(TPA) - 1 do
begin
for tmp1:= 0 to Length(TPA) - 1 do
begin
if Max(TPA[tmp].x,TPA[tmp1].x) - Min(TPA[tmp].x,TPA[tmp1].x) >= Modifiers then
if Max(TPA[tmp].y,TPA[tmp1].y) - Min(TPA[tmp].y,TPA[tmp1].y) >= Modifiers then
begin
SetArrayLength(Result,Length(result) + 1);
tmp2:= Length(result) - 1;
result[tmp2].x:= TPA[tmp].x;
result[tmp2].y:= TPA[tmp].y;
end;
end;
end;
Status('done');
end;
function Chop(data: string): boolean;
var
tmpMark: integer;
begin
SetData(data);
If FindTree(0, 0, MSX2, MSY2, true) then
begin
GetMousePos(x, y);
Clicktree;
while FlagPresent do
begin
FollowTree(x, y);
end;
end;
MarkTime(tmpMark);
repeat
if HandleRandoms(x, y) then
begin
If DebugAll then
PlayerDebug('Random Found!');
break;
end;
if TimeFromMark(tmpMark) >= (MaxTime + random(3)) * 1000 then
begin
if DebugAll then
PlayerDebug('Too long to cut tree');
break;
end;
until(TreeChoppedAt(x, y));
result:= true;
end;
function GetInvSlot(x, y: integer): integer;
var
I: integer;
begin
result:= - 1;
for I:= 1 to 28 do
begin
if IntInBox(x, y, invBox(I)) then
begin
result:= I;
exit;
end;
end;
end;
function DropLogs: boolean;
var
LogMask, lx, ly, failsafemark, CurrentLog: Integer;
begin
LogMask := BitmapFromString(19, 14, 'z78DA3330A00E704302067407' +
'F4B777D4C6A16EE3F0F09D1B5E400B9369E7F2E114D7230100008' +
'F6836A8');
Gametab(4);
while FindBitMapMaskTolerance(LogMask, lx, ly, 554, 207, 727, 464, 3, 3) do
begin
CurrentLog:= GetInvSlot(lx, ly);
Mouse(lx, ly, 4, 4, false);
if ChooseOption('rop')then
begin
logs:= logs + 1;
Players[Currentplayer].integers[6]:= Players[Currentplayer].integers[6] + 1;
Reportvars[0]:= 1;
SendSRLReport;
strLogs:= IntToStr(logs);
MarkTime(FailsafeMark);
repeat
wait(1);
If TimeFromMark(FailSafeMark) >= 2300 then
begin
Logs:= Logs - 1;
Players[Currentplayer].integers[6]:= Players[Currentplayer].integers[6] - 1;
StrLogs:= IntToStr(Logs);
break;
end;
until not ExistsItem(CurrentLog);
end;
end;
result:= true;
FreeBitmap(LogMask);
end;
procedure DropGems;
var
GemMask, gx, gy: integer;
begin
GemMask := BitmapFromString(18, 16, 'z78DA3330201FB88181015D00' +
'3DED1ADEBE1BB56BD4AE511FE1D7452A30180503040097E74EE4');
GameTab(4);
While FindBitMapMaskTolerance(GemMask, gx, gy, 554, 207, 727, 464, 3, 3) do
begin
Players[Currentplayer].integers[7] := Players[Currentplayer].integers[7] + 1;
Gems:= Gems + 1;
strGems:= IntToStr(Gems);
end;
FreeBitmap(Gems);
end;
procedure Callibrate;
var
i: integer;
begin
If SRLId = '' then
begin
GetSelf.WindowState:= wsNormal;
ChangeReportWidth(1);
ClearDebug;
For I:= 0 to 9 do
Writeln('Please Register an SRL Stats ID and declare the Name and password in Declareplayers!');
Try GetPage('http://www.stats.srl-forums.com/?action=register');
except
Writeln('http://www.stats.srl-forums.com/?action=register');
end;
Cleardebug;
For I:= 0 to 9 do
Writeln('Please Register an SRL Stats ID and declare the Name and password in Declareplayers!');
Writeln('http://www.stats.srl-forums.com/?action=register');
TerminateScript;
end;
end;
procedure PlayerReport;
var
I, i2, i3: integer;
exp, tmpstr: string;
begin
Writeln(' # | Nick | Logs Chopped | Gems Dropped | Exp Gained');
for I:= 0 to length(Players) - 1 do
begin
i2:= Length(Players.Nick);
tmpStr:= '';
For i3 := 1 to i2 do
tmpstr:= tmpStr+'*';
case Lowercase(Players.Strings[1]) of
'regular','tree': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('tree')));
'oak': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('oak')));
'willow': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('willow')));
end;
Writeln(' '+IntToStr(i)+' | '+tmpStr+' | Logs : '+IntToStr(Players.Integers[6])+' | Gems : '+IntToStr(Players.Integers[7])+' | Exp : '+Exp);
end;
end;
procedure Report;
var
H, M, S: integer;
begin
SRLRandomsReport;
SendSRLReport;
ClearDebug;
Writeln(' /=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\');
Writeln(' | [SRL]PowerChopper V '+Version+' |');
Writeln(' | By : Pwnaz0r |');
Writeln(' \=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=--=/');
Writeln('');
ConvertTime(GetTimeRunning,H,M,S);
Writeln(' Worked For ' + InttoStr(H) + ' hours, ' + IntToStr(M) + ' minutes and '+ IntToStr(S) + ' seconds ');
Writeln(' Chopped '+strLogs+' tree(s) total');
Writeln(' Dropped '+strGems+' gems(s) total');
Writeln('');
PlayerReport;
end;
begin
SetupSRL;
ScriptId:= '296';
DeclarePlayers;
ClearDebug;
ActivateClient;
repeat
SetUpNextPlayer(false, false);
if not LoggedIn then Exit;
repeat
if InvFull then
begin
DropLogs;
If DropRandomItems then
begin
DropGems;
end;
Loads:= Loads + 1;
end;
Chop(PlayerTreeName);
Report;
until(Loads >= Players[CurrentPlayer].Integers[2]);
SetUpNextPlayer(true, false);
until(false);
end.
{=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-|
| |
| [SRL]PowerChopper Free Version |
| By : Pwnaz0r |
| |
| Updates : September 09, 2007 |
| - Script Released |
| |
| Features : - Stable chopping and dropping |
| |
| Instructions : Fill in player array (Line 37) |
| Locate Players near the tree types |
| Hit Run! |
| |
| Credits : Hy - Asked For it
| |
| |
| |
| |
|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-}
program SRL_PowerChopper;
{.include SRL/SRL.scar}
{.include SRL/SRL/Skill/Woodcutting.scar}
Const DebugAll = True; //Debugs every detail
MaxTime = 8; //Max time to cut tree in seconds
DropRandomItems = True; // Drop All items from randoms?
Version = '1.10'; //Dont mess
var
TreeCols: array [0..2] of integer;
TreeName: string;
logs, gems, loads: integer;
strLogs, strGems, PlayerTreeName: String;
procedure ClearVars; forward;
procedure DeclarePlayers;
begin
SRLID := '';
SRLPassword := '';
HowManyPlayers := 2;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Integers[2] := 50; //Loads To Do
Players[0].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :='';
Players[1].Integers[2] := 50; //Loads To Do
Players[1].Strings[1] := 'regular'; // Regular, Oak, Willow
{Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :='';
Players[2].Integers[2] := 50; //Loads To Do
Players[2].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :='';
Players[3].Integers[2] := 50; //Loads To Do
Players[3].Strings[1] := 'regular'; // Regular, Oak, Willow
Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :='';
Players[4].Integers[2] := 50; //Loads To Do
Players[4].Strings[1] := 'regular'; // Regular, Oak, Willow
}
Writeln('Player(s): '+IntToStr(HowManyPlayers)+';');
ClearVars;
end;
var
x,y: integer;
procedure ClearVars;
var
I : integer;
begin
for I := 0 to HowManyPlayers - 1 do
begin
Players.Integers[0] := 0;
Players.Integers[1] := 0;
Players.Integers[6] := 0;
Players.Integers[5] := 0;
Players.Integers[7] := 0;
Players.Active := True;
Players.Loc := '';
Players.Rand := '';
end;
if SRLid = '' then
begin
SRLid := '';
SrlPassword := '';
end;
ScriptId := '274';
logs:= 0;
gems:= 0;
loads:= 0;
strLogs:= '0';
strGems:= '0';
end;
procedure Debug(str: string);
begin
str:= '['+TheTime+']- ' + str;
AddToReport(str);
end;
procedure PlayerDebug(str: string);
begin
str:= 'Player['+IntToStr(CurrentPlayer)+'] - '+Str;
Writeln(str);
end;
Procedure ChatBoxStyle;
begin
If GetColor(17,484) = 1452085 then exit else Mouse(51,496,3,3,true);
SetChat('friends',1);
end;
procedure Tab11Details;
begin
Gametab(11);
if not GetColor(709,229) = 9584920 then Mouse(709,229,3,3,true);
if not GetColor(609,265) = 10172937 then Mouse(609,265,3,3,true);
if not GetColor(608,302) = 10172937 then Mouse(608,302,3,3,true);
if not GetColor(607,339) = 10172937 then Mouse(607,339,3,3,true);
SetRun(true);
end;
function FindAxeEx: boolean; forward;
function SetUpNextPlayer(ChangePlayer, Active: boolean): boolean;
begin
result:= true;
If ChangePlayer then NextPlayer(Active);
TreeName:= 'none';
Case LowerCase(Players[CurrentPlayer].Strings[1]) of
'none': begin
Writeln('Invalid Tree Name! Cutting regulars instead');
PlayerTreename:= 'regular';
end;
'regular','tree','normal': PlayerTreename:= 'regular';
'oak': playertreename:= 'oak';
'willow': Playertreename:= 'willow';
end;
NickNameBMP := CreateBitMapMaskFromtext(Players[CurrentPlayer].Nick,UpChars);
ChatBoxStyle;
Tab11Details;
PerfectNorth;
SetRun(false);
FindAxeEx;
Loads:= 0;
end;
function AxePresent: boolean;
var
axemask: integer;
begin
axemask:= BitmapFromString(12, 6, 'z78DA3330200CDCC060F0A8A19' +
'669C4DB854B3DA92660EA25D50400350956AD');
result:= FindBitmapMaskTolerance(axemask,x,y,547,203,737,467,5,5);
end;
function FindAxeEx: boolean;
var
I: integer;
begin
for i:= 4 to 5 do
begin
GameTab(i);
if axepresent then
begin
result := true;
players[currentplayer].integers[5] := GetColor(x,y);
case I of
4 : Players[currentplayer].booleans[5] := false;
5 : begin
Mouse(x,y,0,0,true);
Wait(1200);
Gametab(4);
Players[CurrentPlayer].Booleans[5] := false;
end;
end;
If DebugAll then
begin
Debug('Axe Found');
PlayerDebug('Axe Color('+IntToStr(players[currentplayer].integers[5])+') Axe Wielded('+BoolToStr(Players[CurrentPlayer].Booleans[5])+')');
end;
exit;
end;
end;
If DebugAll then
begin
Debug('Axe NOT Found');
PlayerDebug('No Axe!');
end;
Players[CurrentPlayer].Loc := 'No Axe';
NextPlayer(false);
end;
function ControlAxe: boolean;
var
rndx,rndy,I: integer;
begin
for I:= 4 to 5 do
begin
Gametab(I);
Result:= FindColorTolerance(rndx,rndy,Players[CurrentPlayer].Integers[5],547,203,737,467,1);
if Result and (I = 5)then
begin
Mouse(rndx,rndy,3,3,true);
PlayerDebug('Axe was Somehow Wielded');
end;
if Result then Exit;
end;
end;
function HandleAxe: boolean;
var
tmptArray: array of Tpoint;
tmpint: integer;
tmpCST: integer;
begin
result:= not ControlAxe;
if result then
begin
tmpCST:= GetColorToleranceSpeed;
SetColorSpeed2Modifiers(0.3,0.3);
ColorToleranceSpeed(2);
FindColorsTolerance(tmptarray,Players[CurrentPlayer].Integers[5],25,25,(MSX2-25),(MSY2-25),10);
for tmpint:= 0 to Length(tmptarray) -1 do
begin
MMouse(tmptarray[tmpint].x,tmptarray[tmpint].y,0,0);
if IsUpTextMulti('ake','ead','xe')then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,true);
Flag;
Wait(800);
ColorToleranceSpeed(tmpCST);
Exit;
end;
end;
ColorToleranceSpeed(tmpCST);
end;
end;
function HandleRandoms(x, y: integer): Boolean;
var
i: Integer;
begin
NickNameBMP:= CreateBitmapMaskFromText(Players[Currentplayer].Nick,UpChars);
for i:= 1 to 3 do
begin
case I of
1: if FindNormalRandoms then result:= true;
2: if HandleAxe then result:= true;
3: if FindEnt(x,y, true) then result:= true;
end;
wait(1);
end;
end;
procedure Reset(var X, Y: integer);
begin
try
X := Round(MSX2/2);
Y := Round(MSY2/2);
except
X := MSCX;
Y := MSCY;
end;
end;
procedure SetData(tree: String);
begin
case Lowercase(tree) of
'regular','tree':
begin
TreeName:= 'ree';
TreeCols[0]:= 1866347;
TreeCols[1]:= 4096372;
TreeCols[2]:= 3633766;
end;
'oak': begin
TreeName:= 'ak';
TreeCols[0]:= 4089180;
TreeCols[1]:= 2317388;
TreeCols[2]:= 1853512;
end;
'willow': begin
TreeName:= 'illo';
TreeCols[0]:= 6125682;
TreeCols[1]:= 2526330;
TreeCols[2]:= 3043941;
end;
end;
end;
function ReturnArray(TPA: array of TPoint; Modifiers: integer): TPointArray; forward;
function FindTree(x1, y1, x2, y2:integer; Move: boolean): boolean;
var
tmp: integer;
tmpt: array of TPoint;
begin
SetColorSpeed2Modifiers(1.0,1.0);
Reset(x,y);
ColorToleranceSpeed(2);
FindColorsSpiralTolerance(x,y,tmpt,TreeCols[0],x1,y1,x2,y2,2);
tmpt:= ReturnArray(tmpt,20);
For tmp:= 0 to Length(tmpt) -1 do
begin
x:= tmpt[tmp].x;
y:= tmpt[tmp].y;
If FindColorSpiralTolerance(x,y,TreeCols[1],(x-5),(y-5),(x+5),(y+5),2)then
If FindColorSpiralTolerance(x,y,TreeCols[2],(x-5),(y-5),(x+5),(y+5),2)then
begin
if Move then
begin
MMouse(x,y,0,0);
result:= IsUpText(TreeName);
end else
begin
result:= true;
end;
if result then exit;
end;
end;
end;
procedure ClickTree;
begin
GetMousePos(X,Y);
case random(1) of
0: Mouse(X,Y,0,0,true);
1: begin
Mouse(X,Y,0,0,false);
ChooseOption('hop');
end;
end;
end;
function FollowTree(var x,y: integer): boolean;
begin
SetColorSpeed2Modifiers(1.0,1.0);
ColorToleranceSpeed(2);
result:= FindTree(x - 25, y - 25, x + 25, Y + 25, false);
end;
function TreeChoppedAt(x, y:integer): boolean;
begin
SetColorSpeed2Modifiers(1.0,1.0);
ColorToleranceSpeed(2);
result:= not FindTree(x - 25, y - 25, x + 25, Y + 25, false);
end;
function ReturnArray(TPA: array of TPoint; Modifiers: integer): TPointArray;
var
tmp, tmp1, tmp2: integer;
begin
SetArrayLength(TPA,10);
for tmp:= 0 to Length(TPA) - 1 do
begin
for tmp1:= 0 to Length(TPA) - 1 do
begin
if Max(TPA[tmp].x,TPA[tmp1].x) - Min(TPA[tmp].x,TPA[tmp1].x) >= Modifiers then
if Max(TPA[tmp].y,TPA[tmp1].y) - Min(TPA[tmp].y,TPA[tmp1].y) >= Modifiers then
begin
SetArrayLength(Result,Length(result) + 1);
tmp2:= Length(result) - 1;
result[tmp2].x:= TPA[tmp].x;
result[tmp2].y:= TPA[tmp].y;
end;
end;
end;
Status('done');
end;
function Chop(data: string): boolean;
var
tmpMark: integer;
begin
SetData(data);
If FindTree(0, 0, MSX2, MSY2, true) then
begin
GetMousePos(x, y);
Clicktree;
while FlagPresent do
begin
FollowTree(x, y);
end;
end;
MarkTime(tmpMark);
repeat
if HandleRandoms(x, y) then
begin
If DebugAll then
PlayerDebug('Random Found!');
break;
end;
if TimeFromMark(tmpMark) >= (MaxTime + random(3)) * 1000 then
begin
if DebugAll then
PlayerDebug('Too long to cut tree');
break;
end;
until(TreeChoppedAt(x, y));
result:= true;
end;
function GetInvSlot(x, y: integer): integer;
var
I: integer;
begin
result:= - 1;
for I:= 1 to 28 do
begin
if IntInBox(x, y, invBox(I)) then
begin
result:= I;
exit;
end;
end;
end;
function DropLogs: boolean;
var
LogMask, lx, ly, failsafemark, CurrentLog: Integer;
begin
LogMask := BitmapFromString(19, 14, 'z78DA3330A00E704302067407' +
'F4B777D4C6A16EE3F0F09D1B5E400B9369E7F2E114D7230100008' +
'F6836A8');
Gametab(4);
while FindBitMapMaskTolerance(LogMask, lx, ly, 554, 207, 727, 464, 3, 3) do
begin
CurrentLog:= GetInvSlot(lx, ly);
Mouse(lx, ly, 4, 4, false);
if ChooseOption('rop')then
begin
logs:= logs + 1;
Players[Currentplayer].integers[6]:= Players[Currentplayer].integers[6] + 1;
Reportvars[0]:= 1;
SendSRLReport;
strLogs:= IntToStr(logs);
MarkTime(FailsafeMark);
repeat
wait(1);
If TimeFromMark(FailSafeMark) >= 2300 then
begin
Logs:= Logs - 1;
Players[Currentplayer].integers[6]:= Players[Currentplayer].integers[6] - 1;
StrLogs:= IntToStr(Logs);
break;
end;
until not ExistsItem(CurrentLog);
end;
end;
result:= true;
FreeBitmap(LogMask);
end;
procedure DropGems;
var
GemMask, gx, gy: integer;
begin
GemMask := BitmapFromString(18, 16, 'z78DA3330201FB88181015D00' +
'3DED1ADEBE1BB56BD4AE511FE1D7452A30180503040097E74EE4');
GameTab(4);
While FindBitMapMaskTolerance(GemMask, gx, gy, 554, 207, 727, 464, 3, 3) do
begin
Players[Currentplayer].integers[7] := Players[Currentplayer].integers[7] + 1;
Gems:= Gems + 1;
strGems:= IntToStr(Gems);
end;
FreeBitmap(Gems);
end;
procedure Callibrate;
var
i: integer;
begin
If SRLId = '' then
begin
GetSelf.WindowState:= wsNormal;
ChangeReportWidth(1);
ClearDebug;
For I:= 0 to 9 do
Writeln('Please Register an SRL Stats ID and declare the Name and password in Declareplayers!');
Try GetPage('http://www.stats.srl-forums.com/?action=register');
except
Writeln('http://www.stats.srl-forums.com/?action=register');
end;
Cleardebug;
For I:= 0 to 9 do
Writeln('Please Register an SRL Stats ID and declare the Name and password in Declareplayers!');
Writeln('http://www.stats.srl-forums.com/?action=register');
TerminateScript;
end;
end;
procedure PlayerReport;
var
I, i2, i3: integer;
exp, tmpstr: string;
begin
Writeln(' # | Nick | Logs Chopped | Gems Dropped | Exp Gained');
for I:= 0 to length(Players) - 1 do
begin
i2:= Length(Players.Nick);
tmpStr:= '';
For i3 := 1 to i2 do
tmpstr:= tmpStr+'*';
case Lowercase(Players.Strings[1]) of
'regular','tree': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('tree')));
'oak': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('oak')));
'willow': exp:= IntToStr(Players.integers[6] * Round(GetTreeExp('willow')));
end;
Writeln(' '+IntToStr(i)+' | '+tmpStr+' | Logs : '+IntToStr(Players.Integers[6])+' | Gems : '+IntToStr(Players.Integers[7])+' | Exp : '+Exp);
end;
end;
procedure Report;
var
H, M, S: integer;
begin
SRLRandomsReport;
SendSRLReport;
ClearDebug;
Writeln(' /=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\');
Writeln(' | [SRL]PowerChopper V '+Version+' |');
Writeln(' | By : Pwnaz0r |');
Writeln(' \=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=--=/');
Writeln('');
ConvertTime(GetTimeRunning,H,M,S);
Writeln(' Worked For ' + InttoStr(H) + ' hours, ' + IntToStr(M) + ' minutes and '+ IntToStr(S) + ' seconds ');
Writeln(' Chopped '+strLogs+' tree(s) total');
Writeln(' Dropped '+strGems+' gems(s) total');
Writeln('');
PlayerReport;
end;
begin
SetupSRL;
ScriptId:= '296';
DeclarePlayers;
ClearDebug;
ActivateClient;
repeat
SetUpNextPlayer(false, false);
if not LoggedIn then Exit;
repeat
if InvFull then
begin
DropLogs;
If DropRandomItems then
begin
DropGems;
end;
Loads:= Loads + 1;
end;
Chop(PlayerTreeName);
Report;
until(Loads >= Players[CurrentPlayer].Integers[2]);
SetUpNextPlayer(true, false);
until(false);
end.


