oh okay, thanks for the info:)
Printable View
Currently getting this error
Error: Out Of Range at line 509
The following DTMs were not freed: [SRL - Lamp bitmap, SRL - Book of Knowledge, 2]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Minimap Mask bitmap, 3]
Any idea why?
Also, where do i put the SMART files I downloaded?
you know im getting the same error on everything I have been running, and I mean the Out Of Range at line 509 part of it, from al kad smealter, to your woodcutter, fisher, and hoods fighter reflection script
yeah I think everybody is getting these issues.
All working now! Is there a way to disable the antirandoms now that randoms are completely optional?
This is not currently a available option with any old school scripts, but im sure within a few weeks time, a few of the scrips will have been updated to support it.
Found some more trees that are not working. The magics at seers says "Unknown".
where is the script, i keep getting please open script
Right now im getting the error that line 515 in misc is out of range. any idea what is causing this?
This is looking promising. Ill try it soon and give feedback
hmmmm for the last 3 days when i run this this its giving me a Error: Exception: Invalid variant type cast at line 477 in the login code, in other words it gets to the login screen and a second tab opens highlighting line 477, any help in fixing this will be massively appreciated:)
The reflection include IMO really hitting the bricks. Anyway, I'm going to wait for a lape include before I do anywork on scripting.
Well first of all, its in pascalScript, and the latest version of simba discards that. So an update is indeed needed.
I didn't mind the late hook updates. Honestly I just manually added in the updated hooks from rs-hacking myself.
Seeing that pascalScript is being discarded, its very discouraging if any scripting being done in pascalScript will have to be rewritten.
I'm not saying that the include is bad, but saying its becoming outdated.
You may want to take another look at the latest simba, as of course pascal script is supported. I would never consider moving our include over to lape, when there isn't a official SRL include that is compatible with it. Not sure where you got the impression that they stopped supporting it. They wouldn't even think about doing that when there is still a official include that requires it!
To make it antiban more often, do i set the number higher or lower?
Thanks.
[Error] C:\Users\shawn\Downloads\[SRL-OSR][Reflection][v1.2] ineedbots AIO Woodcutter.simba(49:10): Unknown identifier 'R_GetTileGlobal' at line 50
Compiling failed. :O? anyone can help me out?
For some reason, whenever I try to run the script, it says, Fatal Error: Unable to spawn a SMART client do you know what the problem could be?
seers both magic tree scripts are broken and do not work
I used this one time and got banned :(
Code:program treeCutter;
{$DEFINE SMART}
{$I SRL-OSR/SRL.Simba}
{$I SRL-OSR/SRL/misc/al_functions.simba}
{$I SRL-OSR/SRL/Reflection/Reflection.simba}
{$I SRL-OSR/SRL/misc/SmartGraphics.simba}
const Version = 1.2;
VersionPage = 'http://pastebin.com/raw.php?i=yH94SN3X';
PicturePage = 'http://pastebin.com/raw.php?i=mJtA7u8d';
ScriptPage = 'http://pastebin.com/raw.php?i=F1FAurL5';
ForumPage = 'https://villavu.com/forum/showthread.php?t=100300';
//Feel free to use code, GIVE CREDIT WHERE DUE! -ineedbot
type R_TTreeObject = record Tile : TPoint; AliveObjectID, DeadObjectID : integer; Name:string; Index:integer; end;
R_TTreeObjectArray = array of R_TTreeObject;
function R_MakeTTreeObject(Loc:TPoint;_AliveObjectID,_DeadObjectID:integer;_name:string;_index:integer):R_TTreeObject;
begin
with Result do begin
Tile := Loc;
AliveObjectID := _AliveObjectID;
DeadObjectID := _DeadObjectID;
Name := _name;
Index := _index;
end;
end;
function R_MakeNullTTreeObject:R_TTreeObject;
begin
result := R_MakeTTreeObject(Point(-1, -1), -1, -1, '', -1);
end;
function R_IsValidTTreeObject(tree:R_TTreeObject):boolean;
begin
result := false;
if (tree.tile <> Point(-1, -1)) then
result := true;
end;
function R_getClosestTTreeObject(_array:R_TTreeObjectArray):R_TTreeObject;
var i:integer;
loc:TPoint;
begin
result := R_MakeNullTTreeObject;
loc := R_GetTileGlobal;
for i:=0 to high(_array) do begin
if(R_IsValidTTreeObject(result))then begin
if(R_DistanceFromTile(_array[i].tile) < R_DistanceFromTile(result.tile))then begin
result := _array[i];
end;
end else begin
result := _array[i];
end;
end;
end;
function R_getAliveTTreeObjects(_array:R_TTreeObjectArray):R_TTreeObjectArray;
var i, j:integer;
loc:TPoint;
TempObject:TRSObject;
begin
loc := R_GetTileGlobal;
for i:=0 to high(_array) do begin
TempObject := R_GetObjectAt(0, _array[i].Tile);
if(TempObject.ID = _array[i].AliveObjectID)then begin
inc(j);
SetLength(result, j);
result[high(result)] := _array[i];
end;
end;
if(high(result) < 0)then
result := [R_MakeNullTTreeObject];
end;
function R_getClosestAliveTTreeObject(_array:R_TTreeObjectArray):R_TTreeObject;
var i:integer;
loc:TPoint;
TempObject:TRSObject;
begin
result := R_MakeNullTTreeObject;
loc := R_GetTileGlobal;
for i:=0 to high(_array) do begin
TempObject := R_GetObjectAt(0, _array[i].Tile);
if(TempObject.ID = _array[i].AliveObjectID)then begin
if(R_IsValidTTreeObject(result))then begin
if(R_DistanceFromTile(_array[i].tile) < R_DistanceFromTile(result.tile))then begin
result := _array[i];
end;
end else begin
result := _array[i];
end;
end;
end;
end;
function R_getTTreeObjectWithIndex(_index:integer; _array:R_TTreeObjectArray):R_TTreeObject;
var i:integer;
begin
result := R_MakeNullTTreeObject;
for i:=0 to high(_array) do begin
if(_array[i].Index = _index)then begin
result := _array[i];
exit;
end;
end;
end;
function R_isAliveTTreeObject(TTree:R_TTreeObject):boolean;
var TempObject : TRSObject;
begin
TempObject:=R_GetObjectAt(0, TTree.Tile);
result := false;
if(TempObject.ID = TTree.AliveObjectID)then begin
result := true;
end;
end;
function R_isDeadTTreeObject(TTree:R_TTreeObject):boolean;
var TempObject : TRSObject;
begin
TempObject:=R_GetObjectAt(0, TTree.Tile);
result := false;
if(TempObject.ID = TTree.DeadObjectID)then begin
result := true;
end;
end;
function R_getNextTTreeObject(_array:R_TTreeObjectArray; PTree:R_TTreeObject):R_TTreeObject;
var CurrentTree : R_TTreeObject;
begin
CurrentTree := R_getClosestTTreeObject(_array);
result := CurrentTree;
if (high(_array) < 1) or not R_IsValidTTreeObject(PTree) then
exit;
if(CurrentTree.Index < PTree.Index) or (CurrentTree.Index = high(_array)) then begin
result := R_getTTreeObjectWithIndex(CurrentTree.Index-1, _array);
end else begin
result := R_getTTreeObjectWithIndex(CurrentTree.Index+1, _array);
end;
end;
function R_ConvertTRSObjectToR_TTreeObject(Obj:TRSObject):R_TTreeObject;
begin
with Result do begin
Tile := Obj.Tile;
Name := '';
DeadObjectID := 0;
AliveObjectID := Obj.ID;
Index := 0;
end;
end;
var LocationTreeObjects : R_TTreeObjectArray;
PreviousTree : R_TTreeObject;
Status, ProggieLocation : string;
LogsChopped, LogID, EnergyToTurnOnRun, ShopDTM, AntiBanOften, HowMuchToChop, Nests, StartingFletchXP, MoneyID, TypeOfJob, StartingWoodXP, ShaftsID, StartingWoodLevel, LastXPXPCheck, LastXPCheck, KnifeID, FletchID : integer;
AnimationIDs, AxeIDs, NestIDs, customIDs : array of integer;
PathToBank, PathToTrees, customLocations, customPath1, customPath2, customPath3 : TPointArray;
ForceDisableBank, MouseKeys, CanBank, Updating, customBank, FarTrees, started, UseDAxeSpec, PowerChop, Fletch : boolean;
BankLocation, TreesLocation : TPoint;
MainForm:TForm;
UsernameBox,PasswordBox,PinBox,WorldBox,RunBox,AntibanBox,ChopBox, CurVerBox, LatVerBox: TEdit;
BGImage: TImage;
PlayButton,SaveButton,LoadButton, InfoButton, UpdateButton: TButton;
MouseKeysBox, BankBox, SpecBox: TCheckBox;
CurVerLabel, LatVerLabel : TLabel;
JobBox, LocationBox: TComboBox;
bmps0: TMufasaBitmap;
bmp0: TBitmap;
procedure doUpdate; //thanks shuttleu
var NetworkVersion : extended;
NewScript, FileNew : string;
ThisFile : integer;
begin
sleep(5000);
try
NetworkVersion := strToFloat(GetPage(VersionPage));
except
begin
writeln('Failed get update version from: '+VersionPage);
exit;
end;
end;
writeln('Local Version: '+FloatToStr(Version)+' Network Version: '+FloatToStr(NetworkVersion));
if(Version < NetworkVersion)then begin
writeln('Getting script from: '+ScriptPage);
try
NewScript := GetPage(ScriptPage);
except
begin
writeln('Failed to get script from: '+ScriptPage);
exit;
end;
end;
FileNew := ScriptPath + '[SRL-OSR][Reflection][v'+FloatToStr(NetworkVersion)+'] ineedbots AIO Woodcutter.simba';
writeln('Writing script from '+ScriptPage+' to '+FileNew);
ThisFile := Rewritefile(FileNew, true);
try
WriteFileString(ThisFile, NewScript);
except
begin
writeLn('Failed writing to: '+FileNew);
CloseFile(ThisFile);
exit;
end;
end;
CloseFile(ThisFile);
writeLn('Successfully downloaded new script to ' + FileNew + '. Please open this script.');
end else begin
if(Version = NetworkVersion)then begin
writeln('You are already up to date.');
end else begin
writeln('You have a higher version than network?');
end;
end;
end;
procedure OnChange(Sender: TObject);
begin
JobBox.TEXT := 'Trees';
JobBox.ITEMINDEX := -1;
JobBox.ITEMS.Clear;
case LocationBox.ITEMINDEX of
0:begin //draynor
JobBox.ITEMS.Add('Oaks');
JobBox.ITEMS.Add('Willows');
JobBox.ITEMS.Add('Yews');
end;
1:begin //seers
JobBox.ITEMS.Add('Willows');
JobBox.ITEMS.Add('Maples');
JobBox.ITEMS.Add('Yews');
JobBox.ITEMS.Add('Magics');
JobBox.ITEMS.Add('Magics (2)');
end;
2:begin //catherby
JobBox.ITEMS.Add('Willows');
JobBox.ITEMS.Add('Yews');
end;
3:begin //varrock
JobBox.ITEMS.Add('Oaks (west)');
JobBox.ITEMS.Add('Yews (palace)');
end;
4:begin //Falador
JobBox.ITEMS.Add('Oaks');
JobBox.ITEMS.Add('Yews');
end;
5:begin //Rimmington
JobBox.ITEMS.Add('Willows (p.s.)');
JobBox.ITEMS.Add('Yews');
end;
6:begin //tree gnome village
JobBox.ITEMS.Add('Yews');
JobBox.ITEMS.Add('Magics');
end;
7:begin //lumbridge
JobBox.ITEMS.Add('Oaks (sell)');
JobBox.ITEMS.Add('Yews');
JobBox.ITEMS.Add('Willows (sell)');
JobBox.ITEMS.Add('Yews (sell)');
end;
8:begin //edgeville
JobBox.ITEMS.Add('Willows');
JobBox.ITEMS.Add('Yews');
end;
9:begin //powerchop
JobBox.ITEMS.Add('Normal Trees');
JobBox.ITEMS.Add('Oaks');
JobBox.ITEMS.Add('Willows');
end;
end;
end;
procedure YourClickProcedure(Sender: TObject);
begin
if(sender = PlayButton)then begin
writeln('Starting...');
MainForm.CLOSE;
started := true;
end;
if(sender = LoadButton)then begin
if(FileExists(ScriptPath+'ineedbots AIO Woodcutter user details.ini'))then begin
writeln('Loading...');
UserNameBox.Text := ReadINI('username', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
PasswordBox.Text := ReadINI('password', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
PinBox.Text := ReadINI('pin', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
ChopBox.Text := ReadINI('chop', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
LocationBox.ITEMINDEX := strToInt(ReadINI('location', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini'));
OnChange(LocationBox);
JobBox.ITEMINDEX := strToInt(ReadINI('trees', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini'));
AntiBanBox.TEXT := ReadINI('antiban', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
runBox.TEXT := ReadINI('run', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
WorldBox.TEXT := ReadINI('world', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini');
BankBox.CHECKED := strToBool(ReadINI('bank', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini'));
SpecBox.Checked := strToBool(ReadINI('spec', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini'));
MouseKeysBox.CHECKED := strToBool(ReadINI('mouse', '0', ScriptPath+'ineedbots AIO Woodcutter user details.ini'));
end else begin
writeln(ScriptPath+'ineedbots AIO Woodcutter user details.ini'+' cannot be found...');
end;
end;
if(sender = SaveButton)then begin
writeln('Saving to '+ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('username', '0', UserNameBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('password', '0', passwordBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('pin', '0', PinBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('chop', '0', ChopBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('trees', '0', IntToStr(JobBox.ITEMINDEX), ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('location', '0', IntToStr(LocationBox.ITEMINDEX), ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('antiban', '0', AntibanBox.TEXT, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('run', '0', RunBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('world', '0', WorldBox.Text, ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('spec', '0', boolToStr(SpecBox.CHECKED), ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('bank', '0', boolToStr(BankBox.CHECKED), ScriptPath+'ineedbots AIO Woodcutter user details.ini');
writeINI('mouse', '0', boolToStr(MouseKeysBox.CHECKED), ScriptPath+'ineedbots AIO Woodcutter user details.ini');
end;
if(sender = InfoButton)then begin
ShowMessage('Script will stop once it banked/sold/dropped more than this value, make it -1 for infinite.');
end;
if(sender = UpdateButton)then begin
writeln('Attempting to update...');
MainForm.CLOSE;
Updating := true;
end;
end;
procedure OnlyPostiveNumbers(Sender: TObject; var Key:Char);
begin
case toStr(key) of
#8, '0'..'9':begin
end;
else begin
Key := #0;
end;
end;
end;
procedure OnlyNumbers(Sender: TObject; var Key: Char);
begin
case toStr(key) of
#8, '0'..'9', '-':begin
if(toStr(key) = '-')then begin
if(ChopBox.SELSTART <> 0)then begin
Key := #0;
end;
end;
end;
else begin
Key := #0;
end;
end;
end;
procedure NoKeys(Sender: TObject; var Key: Char);
begin
Key := #0;
end;
procedure InitForm;
var PictureString, VersionString : string;
begin
//MainForm\\
MainForm:=TForm.Create(nil);
with MainForm do
begin
Caption:='ineedbots AIO Woodcutter';
Left:=213;
Top:=324;
Width:=512;
Height:=333;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
BORDERSTYLE:=bsSingle;
Font.Size:=0;
end;
//UsernameBox\\
UsernameBox:=TEdit.Create(MainForm);
with UsernameBox do
begin
Parent:=MainForm;
Text:='Username or eMail';
Left:=3;
Top:=37;
Width:=257;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
//UsernameBox.MaxLength:=x;
//UsernameBox.PasswordChar:=*;
end;
//PasswordBox\\
PasswordBox:=TEdit.Create(MainForm);
with PasswordBox do
begin
Parent:=MainForm;
Text:='Password';
Left:=270;
Top:=37;
Width:=234;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
MaxLength:=20;
PasswordChar:='*';
end;
//PinBox\\
PinBox:=TEdit.Create(MainForm);
with PinBox do
begin
Parent:=MainForm;
Text:='';
Left:=47;
Top:=82;
Width:=80;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@OnlyPostiveNumbers;
Font.Size:=0;
MaxLength:=4;
PasswordChar:='*';
end;
//WorldBox\\
WorldBox:=TEdit.Create(MainForm);
with WorldBox do
begin
Parent:=MainForm;
Text:='';
Left:=67;
Top:=116;
Width:=80;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@OnlyPostiveNumbers;
Font.Size:=0;
MaxLength:=2;
//WorldBox.PasswordChar:=*;
end;
//RunBox\\
RunBox:=TEdit.Create(MainForm);
with RunBox do
begin
Parent:=MainForm;
Text:='50';
Left:=118;
Top:=152;
Width:=80;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@OnlyPostiveNumbers;
Font.Size:=0;
MaxLength:=3;
//RunBox.PasswordChar:=*;
end;
//SpecBox\\
SpecBox:=TCheckBox.Create(MainForm);
with SpecBox do
begin
Parent:=MainForm;
Caption:='Use DAxe Spec?';
Checked:=false;
Left:=350;
Top:=270;
Width:=64;
Height:=19;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
end;
//AntibanBox\\
AntibanBox:=TEdit.Create(MainForm);
with AntibanBox do
begin
Parent:=MainForm;
Text:='7500';
Left:=134;
Top:=227;
Width:=80;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@OnlyPostiveNumbers;
Font.Size:=0;
MaxLength:=6;
//AntibanBox.PasswordChar:=*;
end;
//ChopBox\\
ChopBox:=TEdit.Create(MainForm);
with ChopBox do
begin
Parent:=MainForm;
Text:='-1';
Left:=167;
Top:=188;
Width:=80;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@OnlyNumbers;
Font.Size:=0;
MaxLength:=6;
//ChopBox.PasswordChar:=*;
end;
//BGImage\\
BGImage:=TImage.Create(MainForm);
with BGImage do
begin
Parent:=MainForm;
Left:=0;
Top:=0;
Width:=512;
Height:=333;
try
PictureString := GetPage(PicturePage);
except
begin
writeln('Failed to get picture string from: '+PicturePage);
end;
end;
bmps0:=GetMufasaBitmap(BitmapFromString(512,333,PictureString));
bmp0:=bmps0.ToTBitmap;
Picture.Bitmap.handle:=bmp0.handle;
end;
//PlayButton\\
PlayButton:=TButton.Create(MainForm);
with PlayButton do
begin
Parent:=MainForm;
Caption:='Play';
Left:=432;
Top:=302;
Width:=75;
Height:=25;
OnClick:=@YourClickProcedure;
//Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//InfoButton\\
InfoButton:=TButton.Create(MainForm);
with InfoButton do
begin
Parent:=MainForm;
Caption:='?';
Left:=257;
Top:=187;
Width:=17;
Height:=25;
OnClick:=@YourClickProcedure;
//Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//SaveButton\\
SaveButton:=TButton.Create(MainForm);
with SaveButton do
begin
Parent:=MainForm;
Caption:='Save';
Left:=87;
Top:=302;
Width:=75;
Height:=25;
OnClick:=@YourClickProcedure;
//Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//LoadButton\\
LoadButton:=TButton.Create(MainForm);
with LoadButton do
begin
Parent:=MainForm;
Caption:='Load';
Left:=5;
Top:=301;
Width:=75;
Height:=25;
OnClick:=@YourClickProcedure;
//Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
//UpdateButton\\
UpdateButton:=TButton.Create(MainForm);
with UpdateButton do
begin
Parent:=MainForm;
Caption:='Update';
Left:=350;
Top:=100;
Width:=75;
Height:=25;
OnClick:=@YourClickProcedure;
//Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
end;
CurVerLabel:=TLabel.Create(MainForm);
with CurVerLabel do
begin
Parent:=MainForm;
Caption:='Local Version:';
Left:=194;
Top:=85;
Width:=42;
Height:=16;
Font.Name:='Comic Sans MS';
Font.Color:=clAqua;
Font.Size:=0;
end;
//CurVerBox\\ //i
CurVerBox:=TEdit.Create(MainForm);
with CurVerBox do
begin
Parent:=MainForm;
Text:=toStr(version);
Left:=300;
Top:=85;
Width:=40;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@NoKeys;
Font.Size:=0;
MaxLength:=6;
//ChopBox.PasswordChar:=*;
end;
LatVerLabel:=TLabel.Create(MainForm);
with LatVerLabel do
begin
Parent:=MainForm;
Caption:='Network Version:';
Left:=170;
Top:=120;
Width:=42;
Height:=16;
Font.Name:='Comic Sans MS';
Font.Color:=clAqua;
Font.Size:=0;
end;
//LatVerBox\\
LatVerBox:=TEdit.Create(MainForm);
with LatVerBox do
begin
Parent:=MainForm;
try
VersionString := GetPage(VersionPage);
except
begin
writeln('Failed getting version text from: '+VersionPage);
end;
end;
Text:=VersionString;
Left:=300;
Top:=120;
Width:=40;
Height:=23;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
ONKEYPRESS:=@NoKeys;
Font.Size:=0;
MaxLength:=6;
//ChopBox.PasswordChar:=*;
end;
//MouseKeysBox\\
MouseKeysBox:=TCheckBox.Create(MainForm);
with MouseKeysBox do
begin
Parent:=MainForm;
Caption:='Mouse Keys?';
Checked:=false;
Left:=210;
Top:=270;
Width:=99;
Height:=19;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
end;
//BankBox\\
BankBox:=TCheckBox.Create(MainForm);
with BankBox do
begin
Parent:=MainForm;
Caption:='Force Disable Bank?';
Checked:=false;
Left:=33;
Top:=270;
Width:=65;
Height:=19;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
end;
//JobBox\\
JobBox:=TComboBox.Create(MainForm);
with JobBox do
begin
Parent:=MainForm;
Left:=360;
Top:=4;
Width:=150;
Height:=23;
Caption:='Trees';
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
ONKEYPRESS:=@NoKeys;
end;
LocationBox:=TComboBox.Create(MainForm);
with LocationBox do
begin
Parent:=MainForm;
Left:=205;
Top:=4;
Width:=150;
Height:=23;
Caption:='Location';
//add your items here
Items.Add('Draynor');
Items.Add('Seers');
Items.Add('Catherby');
Items.Add('Varrock');
Items.Add('Falador');
Items.Add('Rimmington');
Items.Add('Gnome Tree Village');
Items.Add('Lumbridge');
Items.Add('Edgeville');
Items.Add('Powerchop');
//End items
OnChange:=@OnChange;
Font.Name:='Comic Sans MS';
Font.Color:=clDefault;
Font.Size:=0;
ONKEYPRESS:=@NoKeys;
end;
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
writeln('Starting form...');
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
started := false;
Updating := false;
end;
procedure ShowFormModal;
begin
MainForm.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
FreeBitMap(0);
end;
procedure DeclarePlayers;
var KeepThingsClean : integer;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := UsernameBox.TEXT;//Username
Players[0].Pass := PasswordBox.Text;//Password
Players[0].Pin := PinBox.TEXT;//Bank Pin (if none,leave blank)
Players[0].WorldInfo := [WorldBox.TEXT]; //Enter a desired world or leave blank for random
Players[0].Active := true;//used for logging n stuff - ineedbot
Players[0].Nick := 'Goau';//Short chunk of IGN//unused anymore...
Players[0].Member := True;//Keep true
Players[0].LampSkill := SKILL_Woodcutting;
if(Players[0].WorldInfo[0] <> '') then begin
SMART_World := Players[0].WorldInfo[0];
Players[0].WorldInfo := ['3'+WorldBox.Text];
end;
case LocationBox.ITEMINDEX of
0:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=18;//draynor oaks
1:KeepThingsClean:=0;//dranor willows
2:KeepThingsClean:=1;//draynor yews
end;
end;
1:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=17; //seers willows
1:KeepThingsClean:=2; //seers maples
2:KeepThingsClean:=3; //seers yews
3:KeepThingsClean:=4; //seers magics
4:KeepThingsClean:=5; //seers magics(2)
end;
end;
2:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=16; //catherby willows
1:KeepThingsClean:=6; //catherby yews
end;
end;
3:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=12; //varrock west oaks
1:KeepThingsClean:=7; //varrock west yews
end;
end;
4:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=15; //falador oaks
1:KeepThingsClean:=8; //falador yews
end;
end;
5:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=14; //rimmington willows (port sarim)
1:KeepThingsClean:=9; //rimmington yews
end;
end;
6:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=19; //gnome yews
1:KeepThingsClean:=20; //gnome magics
end;
end;
7:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=21;//lumbridge oaks
1:KeepThingsClean:=24;//lumbridge yews
2:KeepThingsClean:=25;//lumbridge willows no fletch
3:KeepThingsClean:=26;//lumbridge yews sell
end;
end;
8:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=23;//edgeville willows
1:KeepThingsClean:=22;//edgeville yews
end;
end;
9:begin
case JobBox.ITEMINDEX of
0:KeepThingsClean:=10;//powerchop trees
1:KeepThingsClean:=13; //powerchop oaks
2:KeepThingsClean:=11;//powerchop willows
end;
end;
end;
AntiBanOften := strToInt(AntiBanBox.Text);
EnergyToTurnOnRun := strToInt(RunBox.Text);
TypeOfJob := KeepThingsClean;
HowMuchToChop := strToInt(ChopBox.Text);
MouseKeys := MouseKeysBox.CHECKED;
ForceDisableBank := BankBox.CHECKED;
UseDAxeSpec := SpecBox.Checked;
end;
procedure DeclareVars;
var i : integer;
begin
status := 'Setting up...';
StartingWoodXP := R_GetSkillExp(Skill_Woodcutting);
StartingWoodLevel := R_GetMaxSkillLevel(Skill_Woodcutting);
LastXPXPCheck := StartingWoodXP;
StartingFletchXP := R_GetSkillExp(Skill_Fletching);
Marktime(LastXPCheck);
LogsChopped := 0;
Nests := 0;
for i:=0 to 1000 do begin
if(not FileExists(ScriptPath+'ineedbots AIO Woodcutter proggy '+toStr(i)+'.png'))then begin
ProggieLocation := ScriptPath+'ineedbots AIO Woodcutter proggy '+toStr(i)+'.png';
i:=1000;
end;
end;
ShopDTM := DTMFromString('maQEAAHicE2RgYEgB4lggDgFiXyD2AmJnIHYD4iAgzgfiPCAuA+I6IK4F4iogzgDiJCBOBmJ9RgYGQyA2RsIgMW0gNgNiIyDWBWI9qJweVA7ENgViTSD+P0MejJGBh50xCg1Tg4xBcjDMD1RDKWakAsYAAFUXGnk=');
AddOnTerminate('FreeDTMZ');
R_CombatRandoms := false;
SRL_CombatRandoms := false;
AnimationIDs := [879, 877, 875, 873, 871, 869, 867, 2846];
AxeIDs := [1353, 6739, 1359];
NestIDs := [5070, 5071, 5072, 5073, 5074, 5075, 7413, 11966];
PreviousTree := R_MakeNullTTreeObject;
KnifeID := 946;
FletchID := 1248;
ShaftsID := 53;
MoneyID := 996;
BankLocation := Point(-1, -1);
LocationTreeObjects := [R_MakeTTreeObject(Point(-1, -1), -1, -1, '', 0)];
PathToBank := [Point(-1, -1)];
PathToTrees := [Point(-1, -1)];
TreesLocation := Point(-1, -1);
LogID := -1;
CanBank := false;
customBank := false;
FarTrees := false;
customIDs := [-1];
customLocations := [Point(-1, -1)];
customPath1 := [Point(-1, -1)];
customPath2 := [Point(-1, -1)];
customPath3 := [Point(-1, -1)];
PowerChop := false;
Fletch := false;
case TypeOfJob of
0:begin //draynor willows
BankLocation := Point(3091, 3245);
LocationTreeObjects := [R_MakeTTreeObject(Point(3084, 3237), 11763, 9471, 'Willow', 0), R_MakeTTreeObject(Point(3085, 3236), 11759, 9471, 'Willow', 1), R_MakeTTreeObject(Point(3088, 3235), 11755, 9711, 'Willow', 2), R_MakeTTreeObject(Point(3088, 3232), 11759, 9471, 'Willow', 3), R_MakeTTreeObject(Point(3088, 3228), 11761, 9471, 'Willow', 4)];
PathToBank := [Point(3086, 3237), Point(3087, 3242), Point(3087, 3247), Point(3092, 3247), Point(3093, 3244)];
PathToTrees := [Point(3093, 3244), Point(3089, 3247), Point(3087, 3242), Point(3086, 3237)];
TreesLocation := Point(3086, 3237);
LogID := 1520;
CanBank := true;
end;
1:begin //draynor yews
BankLocation := Point(3091, 3245);
LocationTreeObjects := [R_MakeTTreeObject(Point(3147, 3255), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(3152, 3231), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(3166, 3220), 11758, 9714, 'Yew', 2), R_MakeTTreeObject(Point(3185, 3227), 11758, 9714, 'Yew', 3)];
PathToBank := [Point(3152, 3229), Point(3147, 3229), Point(3142, 3229), Point(3137, 3229), Point(3132, 3229), Point(3127, 3228), Point(3122, 3228), Point(3117, 3228), Point(3112, 3230), Point(3108, 3234), Point(3104, 3238), Point(3105, 3243), Point(3104, 3248), Point(3099, 3250), Point(3094, 3248), Point(3093, 3243)];
PathToTrees := [Point(3093, 3244), Point(3096, 3249), Point(3101, 3250), Point(3105, 3246), Point(3105, 3241), Point(3105, 3236), Point(3109, 3233), Point(3113, 3230), Point(3118, 3228), Point(3123, 3228), Point(3128, 3228), Point(3133, 3228), Point(3138, 3228), Point(3143, 3228), Point(3148, 3229)];
TreesLocation := Point(3152, 3231);
LogID := 1516;
CanBank := true;
FarTrees := true;
end;
2:begin //seers maples
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2721, 3502), 11762, 9712, 'Maple', 0), R_MakeTTreeObject(Point(2727, 3502), 11762, 9712, 'Maple', 1), R_MakeTTreeObject(Point(2730, 3502), 11762, 9712, 'Maple', 2), R_MakeTTreeObject(Point(2732, 3500), 11762, 9712, 'Maple', 3)];
PathToBank := [Point(2725, 3501), Point(2720, 3499), Point(2718, 3494), Point(2720, 3489), Point(2724, 3486), Point(2725, 3491)];
PathToTrees := [Point(2725, 3491), Point(2725, 3486), Point(2720, 3489), Point(2718, 3494), Point(2721, 3499), Point(2726, 3499)];
TreesLocation := Point(2728, 3500);
LogID := 1518;
CanBank := true;
end;
3:begin //seers yews
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2715, 3460), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(2706, 3460), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(2706, 3465), 11758, 9714, 'Yew', 2)];
PathToBank := [Point(2714, 3462), Point(2718, 3465), Point(2719, 3470), Point(2723, 3474), Point(2725, 3479), Point(2724, 3484), Point(2725, 3489), Point(2725, 3491)];
PathToTrees := [Point(2726, 3491), Point(2726, 3486), Point(2727, 3481), Point(2726, 3476), Point(2724, 3471), Point(2723, 3466), Point(2718, 3463), Point(2714, 3462)];
TreesLocation := Point(2710, 3462);
LogID := 1516;
CanBank := true;
end;
4:begin //seers magics
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2692, 3425), 11764, 9713, 'Magic', 0), R_MakeTTreeObject(Point(2691, 3428), 11764, 9713, 'Magic', 1), R_MakeTTreeObject(Point(2696, 3424), 11764, 9713, 'Magic', 2)];
PathToBank := [Point(2695, 3425), Point(2700, 3425), Point(2702, 3430), Point(2702, 3435), Point(2701, 3440), Point(2704, 3444), Point(2708, 3448), Point(2713, 3451), Point(2717, 3454), Point(2719, 3459), Point(2719, 3464), Point(2719, 3469), Point(2722, 3473), Point(2725, 3478), Point(2727, 3483), Point(2726, 3488), Point(2725, 3491)];
PathToTrees := [Point(2726, 3490), Point(2726, 3485), Point(2727, 3480), Point(2727, 3475), Point(2727, 3470), Point(2728, 3465), Point(2727, 3460), Point(2725, 3455), Point(2721, 3452), Point(2721, 3447), Point(2719, 3442), Point(2714, 3440), Point(2713, 3435), Point(2711, 3430), Point(2707, 3426), Point(2702, 3425), Point(2697, 3425), Point(2693, 3424)];
TreesLocation := Point(2693, 3425);
LogID := 1513;
CanBank := true;
end;
5:begin //seers magics 2
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2705, 3397), 11765, 9713, 'Magic', 0), R_MakeTTreeObject(Point(2705, 3399), 11765, 9713, 'Magic', 1), R_MakeTTreeObject(Point(2699, 3397), 11765, 9713, 'Magic', 2), R_MakeTTreeObject(Point(2699, 3399), 11765, 9713, 'Magic', 3)];
PathToBank := [Point(2701, 3396), Point(2704, 3392), Point(2709, 3392), Point(2714, 3393), Point(2714, 3398), Point(2716, 3403), Point(2715, 3408), Point(2715, 3413), Point(2714, 3418), Point(2714, 3423), Point(2713, 3428), Point(2713, 3433), Point(2713, 3438), Point(2710, 3442), Point(2712, 3447), Point(2717, 3449), Point(2720, 3453), Point(2720, 3458), Point(2720, 3463), Point(2720, 3468), Point(2722, 3473), Point(2725, 3478), Point(2727, 3483), Point(2726, 3488), Point(2726, 3491)];
PathToTrees := [Point(2725, 3491), Point(2726, 3486), Point(2727, 3481), Point(2726, 3476), Point(2724, 3471), Point(2723, 3466), Point(2723, 3461), Point(2719, 3457), Point(2716, 3453), Point(2713, 3448), Point(2710, 3444), Point(2710, 3439), Point(2711, 3434), Point(2713, 3429), Point(2713, 3424), Point(2713, 3419), Point(2715, 3414), Point(2715, 3409), Point(2716, 3404), Point(2716, 3399), Point(2715, 3394), Point(2710, 3393), Point(2705, 3392), Point(2701, 3395), Point(2702, 3397)];
TreesLocation := Point(2700, 3397);
LogID := 1513;
CanBank := true;
end;
6:begin //catherby yews
BankLocation := Point(2809, 3442);
LocationTreeObjects := [R_MakeTTreeObject(Point(2758, 3434), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(2756, 3431), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(2761, 3432), 11758, 9714, 'Yew', 2), R_MakeTTreeObject(Point(2755, 3434), 11758, 9714, 'Yew', 3), R_MakeTTreeObject(Point(2760, 3428), 11758, 9714, 'Yew', 4), R_MakeTTreeObject(Point(2766, 3428), 11758, 9714, 'Yew', 5)];
PathToBank := [Point(2760, 3430), Point(2765, 3430), Point(2770, 3431), Point(2775, 3433), Point(2780, 3435), Point(2785, 3432), Point(2790, 3432), Point(2795, 3433), Point(2800, 3433), Point(2805, 3433), Point(2808, 3437), Point(2809, 3439)];
PathToTrees := [Point(2809, 3439), Point(2805, 3436), Point(2801, 3433), Point(2796, 3433), Point(2791, 3433), Point(2786, 3432), Point(2781, 3434), Point(2776, 3435), Point(2771, 3433), Point(2766, 3431), Point(2761, 3430), Point(2759, 3430)];
TreesLocation := Point(2758, 3432);
LogID := 1516;
CanBank := true;
end;
7:begin //varrock west yews
BankLocation := Point(3186, 3436);
LocationTreeObjects := [R_MakeTTreeObject(Point(3205, 3504), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(3209, 3500), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(3222, 3503), 11758, 9714, 'Yew', 2)];
PathToBank := [Point(3201, 3503), Point(3197, 3500), Point(3195, 3495), Point(3195, 3490), Point(3195, 3485), Point(3195, 3480), Point(3194, 3475), Point(3194, 3470), Point(3195, 3465), Point(3197, 3460), Point(3198, 3455), Point(3203, 3454), Point(3205, 3449), Point(3208, 3445), Point(3211, 3441), Point(3212, 3436), Point(3208, 3432), Point(3204, 3428), Point(3199, 3430), Point(3194, 3430), Point(3189, 3430), Point(3184, 3431), Point(3184, 3436)];
PathToTrees := [Point(3184, 3436), Point(3184, 3431), Point(3189, 3430), Point(3194, 3430), Point(3199, 3430), Point(3204, 3428), Point(3208, 3432), Point(3212, 3436), Point(3211, 3441), Point(3208, 3445), Point(3205, 3449), Point(3203, 3454), Point(3198, 3455), Point(3197, 3460), Point(3195, 3465), Point(3194, 3470), Point(3194, 3475), Point(3195, 3480), Point(3195, 3485), Point(3195, 3490), Point(3195, 3495), Point(3197, 3500), Point(3201, 3503)];
TreesLocation := Point(3207, 3502);
LogID := 1516;
CanBank := true;
end;
8:begin //falador yews
BankLocation := Point(3012, 3354);
LocationTreeObjects := [R_MakeTTreeObject(Point(2997, 3312), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(3020, 3316), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(3042, 3320), 11758, 9714, 'Yew', 2)];
PathToBank := [Point(3006, 3317), Point(3006, 3322), Point(3006, 3327), Point(3006, 3332), Point(3006, 3337), Point(3006, 3342), Point(3006, 3347), Point(3006, 3352), Point(3006, 3357), Point(3011, 3359), Point(3013, 3357)];
PathToTrees := [Point(3012, 3355), Point(3009, 3359), Point(3008, 3354), Point(3008, 3349), Point(3008, 3344), Point(3008, 3339), Point(3008, 3334), Point(3008, 3329), Point(3008, 3324), Point(3007, 3319), Point(3002, 3319), Point(2998, 3315), Point(2997, 3314)];
TreesLocation := Point(2997, 3314);
LogID := 1516;
CanBank := true;
FarTrees := true;
end;
9:begin //rimmington yews
BankLocation := Point(3045, 3234); //'deposit'
LocationTreeObjects := [R_MakeTTreeObject(Point(2936, 3230), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(2941, 3233), 11758, 9714, 'Yew', 1), R_MakeTTreeObject(Point(2934, 3234), 11758, 9714, 'Yew', 2), R_MakeTTreeObject(Point(2935, 3226), 11758, 9714, 'Yew', 3)];
PathToBank := [Point(2935, 3228), Point(2940, 3228), Point(2945, 3229), Point(2950, 3228), Point(2955, 3228), Point(2960, 3227), Point(2965, 3225), Point(2970, 3225), Point(2975, 3225), Point(2980, 3225), Point(2985, 3223), Point(2990, 3223), Point(2995, 3222), Point(3000, 3222), Point(3005, 3219), Point(3009, 3215), Point(3014, 3215), Point(3019, 3217), Point(3024, 3217), Point(3027, 3221), Point(3027, 3226), Point(3027, 3231), Point(3029, 3236), Point(3034, 3236), Point(3039, 3236), Point(3044, 3236), Point(3045, 3235)];
PathToTrees := [Point(3045, 3235), Point(3040, 3236), Point(3035, 3236), Point(3030, 3236), Point(3028, 3231), Point(3028, 3226), Point(3028, 3221), Point(3024, 3218), Point(3019, 3218), Point(3014, 3216), Point(3009, 3215), Point(3004, 3215), Point(2999, 3214), Point(2994, 3214), Point(2989, 3213), Point(2984, 3213), Point(2979, 3211), Point(2975, 3214), Point(2971, 3217), Point(2966, 3217), Point(2961, 3217), Point(2956, 3217), Point(2951, 3219), Point(2946, 3220), Point(2943, 3224), Point(2939, 3228), Point(2938, 3229)];
TreesLocation := Point(2938, 3229);
LogID := 1516;
CanBank := true;
customBank := true;
end;
10:begin //power chop tres
customIDs := [1278, 1276, 1286, 1282];
LogID := 1512;
Fletch := true;
PowerChop := true;
end;
11:begin //powerchop willows
customIDs := [11755, 11763, 11759, 11761];
LogID := 1520;
Fletch := true;
PowerChop := true;
end;
12:begin //varrock west oaks
BankLocation := Point(3186, 3436);
LocationTreeObjects := [R_MakeTTreeObject(Point(3168, 3421), 11756, 1356, 'Oak', 0), R_MakeTTreeObject(Point(3166, 3412), 11756, 1356, 'Oak', 1), R_MakeTTreeObject(Point(3162, 3417), 11756, 1356, 'Oak', 2)];
PathToBank := [Point(3170, 3422), Point(3174, 3425), Point(3178, 3428), Point(3182, 3432), Point(3184, 3436)];
PathToTrees := [Point(3184, 3436), Point(3181, 3432), Point(3177, 3429), Point(3173, 3426), Point(3170, 3421), Point(3170, 3423)];
TreesLocation := Point(3170, 3422);
LogID := 1522;
CanBank := true;
end;
13:begin //powerchop oaks
customIDs := [11756];
LogID := 1522;
Fletch := true;
PowerChop := true;
end;
14:begin //port sarim willows
BankLocation := Point(3045, 3234); //'deposit'
LocationTreeObjects := [R_MakeTTreeObject(Point(3057, 3255), 11755, 9711, 'Willow', 0), R_MakeTTreeObject(Point(3062, 3255), 11755, 9711, 'Willow', 1), R_MakeTTreeObject(Point(3063, 3253), 11755, 9711, 'Willow', 2), R_MakeTTreeObject(Point(3057, 3252), 11755, 9711, 'Willow', 3)];
PathToBank := [Point(3059, 3252), Point(3054, 3252), Point(3052, 3247), Point(3047, 3246), Point(3042, 3245), Point(3042, 3240), Point(3042, 3235), Point(3045, 3235)];
PathToTrees := [Point(3045, 3235), Point(3042, 3239), Point(3042, 3244), Point(3047, 3246), Point(3052, 3247), Point(3054, 3252), Point(3059, 3253)];
TreesLocation := Point(3059, 3252);
LogID := 1520;
CanBank := true;
customBank := true;
end;
15:begin //falador oaks
BankLocation := Point(3012, 3354);
LocationTreeObjects := [R_MakeTTreeObject(Point(3001, 3367), 11756, 1356, 'Oak', 0)];
TreesLocation := Point(3001, 3365);
LogID := 1522;
CanBank := true;
end;
16:begin //catherby willows
BankLocation := Point(2809, 3442);
LocationTreeObjects := [R_MakeTTreeObject(Point(2786, 3430), 11755, 9711, 'Willow', 0), R_MakeTTreeObject(Point(2783, 3427), 11755, 9711, 'Willow', 1), R_MakeTTreeObject(Point(2781, 3428), 11755, 9711, 'Willow', 2), R_MakeTTreeObject(Point(2768, 3427), 11755, 9711, 'Willow', 3), R_MakeTTreeObject(Point(2771, 3428), 11755, 9711, 'Willow', 4)];
TreesLocation := Point(2783, 3428);
LogID := 1520;
CanBank := true;
end;
17:begin //seers willows
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2719, 3506), 11755, 9711, 'Willow', 0), R_MakeTTreeObject(Point(2711, 3512), 11755, 9711, 'Willow', 1), R_MakeTTreeObject(Point(2709, 3511), 11755, 9711, 'Willow', 2), R_MakeTTreeObject(Point(2712, 3509), 11755, 9711, 'Willow', 3), R_MakeTTreeObject(Point(2708, 3514), 11755, 9711, 'Willow', 4)];
TreesLocation := Point(2711, 3510);
LogID := 1520;
CanBank := true;
end;
18:begin //draynor oaks
BankLocation := Point(3091, 3245);
LocationTreeObjects := [R_MakeTTreeObject(Point(3103, 3243), 11756, 1356, 'Oak', 0)];
TreesLocation := Point(3102, 3245);
LogID := 1522;
CanBank := true;
end;
19:begin //gnome yews
LocationTreeObjects := [R_MakeTTreeObject(Point(2433, 3426), 11758, 9714, 'Yew', 2), R_MakeTTreeObject(Point(2439, 3436), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(2433, 3441), 11758, 9714, 'Yew', 1)];
customLocations := [Point(2445, 3435){plane 0 stairs}, Point(2445, 3434){plane 1 stairs}];
BankLocation := Point(2447, 3427);
TreesLocation := Point(2441, 3435);
canBank := true;
customBank := true;
logID:=1516;
end;
20:begin //gnome magics
writeln('Gnome Magics are not yet completed.');
end;
21:begin //lumbridge oaks
BankLocation := Point(3212, 3246);
LocationTreeObjects := [R_MakeTTreeObject(Point(3204, 3247), 11756, 1356, 'Oak', 0), R_MakeTTreeObject(Point(3205, 3240), 11756, 1356, 'Oak', 1)];
TreesLocation := Point(3206, 3242);
LogID := 1521;
CanBank := true;
customBank := true;
customIDs := [506, 507 {general store guys}];
customLocations := [Point(3215, 3245){closed door object}];
{TPA of inside general}
customPath1 := [Point(3214, 3244), Point(3214, 3245), Point(3214, 3247), Point(3213, 3250), Point(3213, 3249), Point(3213, 3248), Point(3213, 3247), Point(3213, 3246), Point(3213, 3245), Point(3212, 3249), Point(3212, 3248), Point(3212, 3247), Point(3212, 3246), Point(3212, 3245), Point(3212, 3244), Point(3211, 3243), Point(3211, 3244), Point(3211, 3245), Point(3211, 3246), Point(3211, 3247), Point(3211, 3248), Point(3211, 3249), Point(3211, 3250), Point(3210, 3249), Point(3210, 3244), Point(3210, 3243), Point(3209, 3244), Point(3209, 3245), Point(3209, 3246), Point(3209, 3247), Point(3209, 3248), Point(3209, 3249), Point(3209, 3250)];
Fletch := False;
end;
22:begin //edgeville yews
BankLocation := Point(3095, 3491);
LocationTreeObjects := [R_MakeTTreeObject(Point(3086, 3469), 11758, 9714, 'Yew', 0), R_MakeTTreeObject(Point(3086, 3481), 11758, 9714, 'Yew', 1)];
PathToBank := [Point(3094, 3470), Point(3094, 3475), Point(3094, 3480), Point(3093, 3485), Point(3090, 3489), Point(3093, 3491)];
PathToTrees := [Point(3093, 3491), Point(3090, 3487), Point(3093, 3483), Point(3093, 3478), Point(3094, 3473), Point(3093, 3470)];
TreesLocation := Point(3087, 3471);
LogID := 1516;
CanBank := true;
customBank := true;
customLocations := [Point(3091, 3470) {closed door object}];
{TPA of inside yew area}
customPath1 := [Point(3091, 3473), Point(3091, 3472), Point(3091, 3471), Point(3091, 3470), Point(3091, 3469), Point(3091, 3468), Point(3090, 3468), Point(3090, 3469), Point(3090, 3470), Point(3090, 3471), Point(3090, 3472), Point(3090, 3473), Point(3089, 3468), Point(3089, 3469), Point(3089, 3470), Point(3089, 3471), Point(3089, 3472), Point(3089, 3473), Point(3089, 3474), Point(3089, 3475), Point(3089, 3476), Point(3089, 3479), Point(3089, 3480), Point(3088, 3482), Point(3088, 3481), Point(3088, 3480), Point(3088, 3479), Point(3088, 3478), Point(3088, 3477), Point(3088, 3476), Point(3088, 3475), Point(3088, 3474), Point(3088, 3473), Point(3088, 3472), Point(3088, 3471), Point(3088, 3470), Point(3088, 3469), Point(3088, 3468), Point(3087, 3471), Point(3087, 3472), Point(3087, 3476), Point(3087, 3477), Point(3087, 3478), Point(3087, 3479), Point(3086, 3479), Point(3086, 3478), Point(3086, 3477), Point(3086, 3476), Point(3086, 3472), Point(3086, 3471), Point(3085, 3471), Point(3085, 3472), Point(3085, 3473), Point(3085, 3474), Point(3085, 3475), Point(3085, 3476), Point(3085, 3477), Point(3085, 3478), Point(3085, 3479)];
end;
23:begin //edgeville willows
BankLocation := Point(3095, 3491);
LocationTreeObjects := [R_MakeTTreeObject(Point(3113, 3495), 11755, 9711, 'Willow', 0)];
TreesLocation := Point(3112, 3495);
LogID := 1520;
CanBank := true;
end;
24:begin //lumb yew
BankLocation := Point(3208, 3221);
LocationTreeObjects := [R_MakeTTreeObject(Point(3250, 3202), 11758, 9714, 'Yew', 0)];
TreesLocation := Point(3248, 3202);
LogID := 1516;
CanBank := true;
PathToBank := [Point(3248, 3202), Point(3243, 3201), Point(3238, 3201), Point(3236, 3206), Point(3236, 3211), Point(3234, 3216), Point(3229, 3218), Point(3224, 3218), Point(3219, 3218), Point(3215, 3215), Point(3214, 3210), Point(3209, 3210), Point(3206, 3209)];
PathToTrees := [Point(3206, 3210), Point(3211, 3210), Point(3215, 3213), Point(3215, 3218), Point(3220, 3218), Point(3225, 3218), Point(3230, 3218), Point(3232, 3213), Point(3234, 3208), Point(3236, 3203), Point(3241, 3201), Point(3246, 3201), Point(3248, 3201)];
customBank := true;
customLocations := [Point(3205, 3208){'Climb-'}];
end;
25:begin //lumbridge willows
BankLocation := Point(3212, 3246);
LocationTreeObjects := [R_MakeTTreeObject(Point(3234, 3238), 11755, 9711, 'Willow', 0), R_MakeTTreeObject(Point(3233, 3245), 11755, 9711, 'Willow', 1)];
TreesLocation := Point(3234, 3242);
LogID := 1519;
CanBank := true;
customBank := true;
customIDs := [506, 507 {general store guys}];
customLocations := [Point(3215, 3245){closed door object}];
{TPA of inside general}
customPath1 := [Point(3214, 3244), Point(3214, 3245), Point(3214, 3247), Point(3213, 3250), Point(3213, 3249), Point(3213, 3248), Point(3213, 3247), Point(3213, 3246), Point(3213, 3245), Point(3212, 3249), Point(3212, 3248), Point(3212, 3247), Point(3212, 3246), Point(3212, 3245), Point(3212, 3244), Point(3211, 3243), Point(3211, 3244), Point(3211, 3245), Point(3211, 3246), Point(3211, 3247), Point(3211, 3248), Point(3211, 3249), Point(3211, 3250), Point(3210, 3249), Point(3210, 3244), Point(3210, 3243), Point(3209, 3244), Point(3209, 3245), Point(3209, 3246), Point(3209, 3247), Point(3209, 3248), Point(3209, 3249), Point(3209, 3250)];
end;
26:begin //lumbridge yews
BankLocation := Point(3212, 3246);
LocationTreeObjects := [R_MakeTTreeObject(Point(3185, 3227), 11758, 9714, 'Yew', 0)];
TreesLocation := Point(3186, 3229);
LogID := 1516;
CanBank := true;
customBank := true;
customIDs := [506, 507 {general store guys}];
customLocations := [Point(3215, 3245){closed door object}];
{TPA of inside general}
customPath1 := [Point(3214, 3244), Point(3214, 3245), Point(3214, 3247), Point(3213, 3250), Point(3213, 3249), Point(3213, 3248), Point(3213, 3247), Point(3213, 3246), Point(3213, 3245), Point(3212, 3249), Point(3212, 3248), Point(3212, 3247), Point(3212, 3246), Point(3212, 3245), Point(3212, 3244), Point(3211, 3243), Point(3211, 3244), Point(3211, 3245), Point(3211, 3246), Point(3211, 3247), Point(3211, 3248), Point(3211, 3249), Point(3211, 3250), Point(3210, 3249), Point(3210, 3244), Point(3210, 3243), Point(3209, 3244), Point(3209, 3245), Point(3209, 3246), Point(3209, 3247), Point(3209, 3248), Point(3209, 3249), Point(3209, 3250)];
end;
end;
if ForceDisableBank then
CanBank := false;
end;
procedure FreeDTMZ;
begin
FreeDTMs([ShopDTM]);
writeln('Status: '+status);
SMART_ClearCanvas;
end;
procedure DoOnScreenPaint;
var CurrentWoodXP, CurrentWoodLevel, CurrentRunningTime, tempInt, i, CurrentFletchXP : integer;
Job, CurrentRunTime, Drop, BuildString : string;
_point : TPoint;
TempObject : TRSObject;
begin
CurrentWoodXP := R_GetSkillExp(Skill_Woodcutting);
CurrentWoodLevel := R_GetMaxSkillLevel(Skill_Woodcutting);
CurrentRunTime := TimeRunning;
CurrentRunningTime := GetTimeRunning;
CurrentFletchXP := R_GetSkillExp(Skill_Fletching);
case TypeOfJob of
0: Job := 'Draynor Willows';
1: Job := 'Draynor Yews';
2: Job:= 'Seers Maples';
3: Job:= 'Seers Yews';
4: Job:= 'Seers Magics';
5: Job:= 'Seers Magics(2)';
6: Job:= 'Catherby Yews';
7: Job:= 'Varrock Palace Yews';
8: Job:= 'Falador Yews';
9: Job:= 'Rimmington Yews';
10: Job:= 'Normal Trees';
11: Job:= 'Willow Trees';
12: Job:= 'Varrock West Oaks';
13: Job:= 'Oak Trees';
14: Job:= 'Port Sarim Willows';
15: Job:= 'Falador Oaks';
16: Job:= 'Catherby Willows';
17: Job:= 'Seers Willows';
18: Job:= 'Draynor Oaks';
19: Job:= 'Tree Gnome Village Yews';
20: Job:= 'Tree Gnome Village Magics';
21: Job:= 'Lumbridge Oaks (sell)';
22: Job:= 'Edgeville Yews';
23: Job:= 'Edgeville Willows';
24: Job:= 'Lumbridge Yews';
25: Job:= 'Lumbridge Willows (sell)';
26: Job:= 'Lumbridge Yews (sell)';
end;
if canBank then begin
Drop:='banked';
end else begin
Drop:='dropped';
end;
BuildString := 'Tree details: ';
SMART_ClearCanvas;
tempInt := 5;
SMART_DrawText(5, tempInt, 'upchars07', ' ', 65280);
tempInt := tempInt + 15;
SMART_DrawText(5, tempInt, 'upchars07', 'Current job: ' + Job + ' Banking: '+boolToStr(canBank), 65280);
tempInt := tempInt + 15;
SMART_DrawText(5, tempInt, 'upchars07', 'Status: ' + status, 65280);
tempInt := tempInt + 15;
SMART_DrawText(5, tempInt, 'upchars07', 'Woodcutting XP Gained: ' + InttoStr(round(CurrentWoodXP - StartingWoodXP))+', per hour '+InttoStr(round(((CurrentWoodXP - StartingWoodXP))*3600)/(CurrentRunningTime / 1000))+', current level '+intTostr(CurrentWoodLevel)+', gained '+InttoStr(CurrentWoodLevel - StartingWoodLevel), 65280);
tempInt := tempInt + 15;
SMART_DrawText(5, tempInt, 'upchars07', 'XP Gained / 67: ' + InttoStr(round((CurrentWoodXP - StartingWoodXP) / 67))+' Nests collected: '+intToStr(Nests), 65280);
tempInt := tempInt + 15;
SMART_DrawText(5, tempInt, 'upchars07', 'Ran for ' + CurrentRunTime + '.' + ' Script version: '+FloatToStr(version), 65280);
tempInt := tempInt + 15;
if(Fletch)then begin
SMART_DrawText(5, tempInt, 'upchars07', 'Fletching XP Gained: ' + InttoStr(round(CurrentFletchXP - StartingFletchXP))+', per hour '+InttoStr(round(((CurrentFletchXP - StartingFletchXP))*3600)/(CurrentRunningTime / 1000)), 65280);
tempInt := tempInt + 15;
end;
for i:=0 to high(LocationTreeObjects) do begin
BuildString := BuildString + ' tree' + intToStr(LocationTreeObjects[i].Index) + ':';
TempObject := R_GetObjectAt(0, LocationTreeObjects[i].tile);
if(TempObject.ID = LocationTreeObjects[i].AliveObjectID)then begin
BuildString := BuildString + 'alive ';
_point := R_TileToMS(LocationTreeObjects[i].tile);
if(PointInBox(_point, MSBox))then begin
SMART_DrawText(_point.x, _point.y, 'upchars07', 'Alive ' + LocationTreeObjects[i].Name, clAqua);
end;
end else begin
if(TempObject.ID = LocationTreeObjects[i].DeadObjectID)then begin
BuildString := BuildString + 'dead ';
_point := R_TileToMS(LocationTreeObjects[i].tile);
if(PointInBox(_point, MSBox))then begin
SMART_DrawText(_point.x, _point.y, 'upchars07', 'Dead ' + LocationTreeObjects[i].Name, clAqua);
end;
end else begin
if(TempObject.id = 0)then begin
_point := R_TileToMS(LocationTreeObjects[i].tile);
if(PointInBox(_point, MSBox))then begin
SMART_DrawText(_point.x, _point.y, 'upchars07', 'Unloaded ' + LocationTreeObjects[i].Name, clAqua);
end; //useless to paint an unloaded tile??
BuildString := BuildString + 'unloaded ';
end else begin
_point := R_TileToMS(LocationTreeObjects[i].tile);
if(PointInBox(_point, MSBox))then begin
SMART_DrawText(_point.x, _point.y, 'upchars07', 'Unknown ' + LocationTreeObjects[i].Name, clAqua);
end;
BuildString := BuildString + 'unknown ';
end;
end;
end;
end;
SMART_DrawText(5, tempInt, 'upchars07', BuildString, 65280);
end;
procedure UpdateScreen(_string:string);
begin
if (_string <> '') then begin
status := _string;
end;
DoOnScreenPaint;
end;
procedure doFindAllRandoms;
begin
//SetScreenName(R_GetPlayerName);
if(R_FindNormalRandoms{ or FindNormalRandoms})then begin
UpdateScreen('Found random...');
end;
end;
function R_TryMakeTileOnMS(tile:TPoint;time:integer;reset:boolean):boolean;
var FailSafeTime : integer;
ResetAngle, ResetHeight : extended;
begin
if(reset)then begin
ResetAngle := R_GetMinimapAngleDeg;
ResetHeight := R_GetCameraZ;
end;
markTime(FailSafeTime);
while((TimeFromMark(FailSafeTime) < time) and (not PointInBox(R_TileToMS(tile), MSBox))) do begin
R_RotateCameraToTile(tile);
if(not PointInBox(R_TileToMS(tile), MSBox)) then begin
keyDown(VK_Down);
sleep(50+random(20));
keyUp(VK_Down);
end;
end;
if(PointInBox(R_TileToMS(tile), MSBox))then begin
Result := true;
end else begin
Result := false;
end;
if(reset)then begin
MakeCompass('W');
markTime(FailSafeTime);
while((TimeFromMark(FailSafeTime) < time) and (abs(R_GetCameraZ - ResetHeight) > 100))do begin
keyDown(VK_Up);
sleep(50+random(20));
keyUp(VK_Up);
end;
end;
end;
function R_OnTileArray(TP:TpointArray):Boolean; //does R_Ontile on an array of tiles
var
Loc: TPoint;
i: integer;
begin
Loc := R_GetTileGlobal;
Result := false;
for i:=0 to high(TP) do
begin
if loc = TP[i] then
begin
result := true;
i := high(TP);
end;
end;
end;
function R_ArrayOfItemsInInv(_array:array of integer):boolean;//does R_InventoryContains with an array of item ids
var i : integer;
begin
result := false;
for i:=0 to high(_array) do begin
if(R_InventoryContains(_array[i]))then
result := true;
end;
end;
function R_TileOnMS(tile:TPoint):boolean;
begin
result := PointInBox(R_TileToMS(tile), MSBox);
end;
function R_TileOnMSHeight(tile:Tpoint;height:integer):boolean;
begin
result := PointInBox(R_TileToMSHeight(tile, height), MSBox);
end;
procedure RandomALMouse(x, y, ranx, rany: integer);
var xs, ys: Integer;
begin
GetMousePos(xs, ys);
AL_SetMouseSpeed(RandomRange(15, 25));
case random(5) of
0: AL_MissMouse(Point(x, y), ranx, rany);
1: AL_AccurateMMouse(Point(x, y), ranx, rany);
2: AL_HumanMMouse(Point(x, y), ranx, rany);
3: AL_ShiftWindMouse(xs, ys, x, y, 4 + Random(15), 2 + Random(18), 5, 10, 20, 5);
4: AL_BrakeWindMouse(xs, ys, x, y, 7 + Random(13), 3 + Random(17), 5, 10, 5, True);
5: AL_HumanWindMouse(xs, ys, x, y, 7 + Random(15), 2 + Random(20), 5, 10, 5);
end;
end;
function R_MouseTileHeight(Tile: TPoint; ranx, rany, ClickType, Height: Integer): Boolean;
var
Tilex, Tiley: Integer;
Tile2: TPoint;
begin
Result:= false;
Tile2.x:= 0;
Tile2.y:= 0;
Tile2:= R_TileToMsHeight(Tile, Height);
if (Tile2.x = 0) or (Tile2.y = 0) or (Tile2.x > 40000) or (Tile2.y > 40000) or (Tile2.x < -40000) or (Tile2.y < -40000) then
Exit;
Tilex:= iAbs(Tile2.x);
Tiley:= iAbs(Tile2.y);
//MouseBoxEdit(Tilex-ranx, Tiley-rany, Tilex+ranx, Tiley+rany, ClickType);
RandomALMouse(Tilex, Tiley, ranx, rany);
AL_FastClick(ClickType);
Result:= true;
end;
function R_GetClosestObjectIDs(ObjType:integer;Distance:integer;ObjIDs:array of integer):TRSObject;
var
Objects, FObjects: TRSObjectArray;
I, J: Integer;
begin
result := RSObject(-1, -1, Point(-1, -1));
Objects := R_GetObjectsDistance(ObjType, Distance);
for i:=0 to high(objects) do begin
if(inIntArray(ObjIDs, Objects[i].ID))then begin
Inc(J);
SetLength(FObjects, J);
FObjects[high(FObjects)] := Objects[i];
end;
end;
for i:=0 to high(FObjects) do begin
if(result.id = -1)then begin
result := FObjects[i];
end else begin
if(R_DistanceFromTile(FObjects[i].Tile) < R_DistanceFromTile(Result.Tile))then begin
result := FObjects[i];
end;
end;
end;
end;
function r_getGItemDistanceIDs(distance:integer;IDs:array of Integer):TGroundItem;
var GItems : TGroundItemArray;
i : integer;
begin
GItems := R_GetGroundItemsDistance(distance);
result := GroundItem(-1, -1, Point(-1, -1));
for i:=0 to high(GItems) do begin
if(inIntArray(IDs, GItems[i].ID))then begin
result := GItems[i];
exit;
end;
end;
end;
function R_InteractTileWaitHeight(Tile: TPoint; Option: String; Timeout, Height: Integer): Boolean;
var
i: Integer;
deg: Extended;
begin
Result:= false;
deg:= (360-R_GetMinimapAngleDeg);
i := GetSystemTime;
repeat
if (BankScreen) then
Exit;
R_MouseTileHeight(Tile, 15, 15, Mouse_Move, Height);
wait(100 + random(50));
Result:= R_SelectOption(Option);
if (((GetSystemTime - i) < Timeout) and not(Result) and (random(100) > 50)) then
R_RandomMovement;
until (((GetSystemTime - i) > Timeout) or (Result));
R_MakeCompass(deg);
end;
function R_InteractNPC(_npc:TNPC; action:string):boolean;
begin
result := false;
if(R_IsValidTNPC(_npc))then begin
if(not R_TryMakeTileOnMS(_npc.tile, 5000, false))then begin
R_BlindWalk(_npc.tile);
Flag;
Sleep(random(2000));
end;
if(R_TryMakeTileOnMS(_npc.tile, 5000, false))then begin
RandomALMouse(R_TileToMS(_npc.tile).x, R_TileToMS(_npc.tile).y, 5, 5);
if(R_OptionExists(action))then begin
result := true;
if(R_IsUpTextMulti([action]))then begin
Al_FastClick(mouse_left);
Flag;
doFindAllRandoms;
Sleep(random(2000));
end else begin
Al_FastClick(mouse_right);
R_selectOption(action);
Flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
end;
end;
function R_TryInteractNPCID(NpcID:integer;action:string;tries:integer;var returnNPC:TNPC):boolean;
var i:integer;
_npcs:TNPCArray;
begin
result := false;
returnNPC := NULL_NPC;
for i:=0 to tries do begin
_npcs := R_SortNPCs(R_getNPCs(NpcID));
if(high(_npcs) > -1)then begin
returnNPC := _npcs[0];
end;
if(R_InteractNPC(returnNPC, action))then begin
result := true;
i:=tries;
end;
end;
end;
function ChooseOptionMultiExFast(Texts: TStringArray; TextType: String; Action: fnct_ActionOptions): Boolean;
var
B: TBox;
i, H, x, R: Integer;
T: TPoint;
Options: array of TOptions;
begin
Result := False;
Options := GetChooseOptions();
if (Length(Options) < 1) then
Exit;
H := High(Options);
for i := 0 To H do
begin
if ArrInStr(Texts, Options[i].Str) then
begin
Result := True;
B := Options[i].Bounds;
GetMousePos(T.x, T.y);
R:= Min(((B.X2 - B.X1) shr 1), 5); //Prevents x2 passed to MouseBoxEx being smaller than x1
case Action of
ClickLeft:
if PointInBox(T, B) then
ClickMouse2(true)
else
ClickMouse(randomRange(B.x1 + R, B.x2 - R),RandomRange(B.Y1, B.Y1 + 5), mouse_left);
Move:
if not PointInBox(T, B) then
MoveMouse(randomRange(B.x1 + R, B.x2 - R),RandomRange(B.Y1, B.Y1 + 5));
Nothing:
begin
end;
else
srl_warn('ChooseOptionMultiEx', 'ClickRight not a valid click for RS menus!', warn_AllVersions);
end;
Exit;
end;
end;
B := Options[0].BigBox;//to mmouse away
if Action <> Nothing then
begin
x := Max(B.X1 - 52, 0);
if x = 0 then
x := B.X2+10; //n
MMouse(x, Max(B.Y1 - 50, 0), 40, B.Y2-B.Y1);
Wait(200 + Random(100));
end;
end;
procedure DoRun;
begin
if((R_GetRunEnergy > EnergyToTurnOnRun) and (not R_IsRunOn)) then begin
AL_MouseBoxEx(572, 130, 590, 144, 7, Mouse_left);
sleep(2500+ random(500));
end;
end;
procedure DoLogin;
begin
if(not LoggedIn)then begin
LogInPlayer;
MakeCompass('W');
SetAngle(0);
end;
end;
procedure AdjustCamera;
begin
SetAngle(0);
MakeCompass('W');
end;
procedure AntiBan;
begin
case random(AntiBanOften) of
1..5:BoredHuman;
6..10:HoverOnlineFriend;
11..15:SmallRandomMouse;
16..20:PickUpMouse;
21..30:MMouseOffClient('Random');
//31..40:Logout;
41..60:HoverSkill(Skill_Woodcutting, False);
61..70:HoverSkill(random(SKILL_COUNT), False);
71..80:AL_AccurateMMouse(Point(MSCX, MSCY), 100, 100);
81..90:AL_HumanMMouse(Point(MSCX, MSCY), 100, 100);
91..100:AL_MissMouse(Point(MSCX, MSCY), 100, 100);
101..110:ExamineInv;
111..120:RandomFKeys(true);
121..130:HoverMovingObject;
131..140:RandomTab(true);
141..160:RandomAlMouse(RandomRange(-1000, 1000), RandomRange(-1000, 1000), 100, 100);
end;
end;
procedure doProggy;
var w, h : integer;
bmp : TBitmap;
begin
getClientDimensions(w, h);
bmp := bitmapFromClient(0, 0, w-1, h-1);
SetTransparentColor(smart_Canvas.index, 0);
fastDrawTransparent(0, 0, smart_Canvas.index, bmp);
saveBitmap(bmp, ProggieLocation);
writeln('Saving Proggy to '+ProggieLocation);
freeBitmap(bmp);
end;
procedure doCount;
begin
LogsChopped := LogsChopped + R_InventoryContainsCount([LogID]);
doProggy;
end;
procedure DoDropping;
var items : TInventoryItemArray;
i : integer;
box : TBox;
begin
doCount;
UpdateScreen('Dropping items...');
items := R_GetInventoryItems;
while(R_InvFull and not R_UnderAttack)do begin //ee
for i:=0 to high(items) do begin
if(not InIntArray(AxeIDs, items[i].ID) and R_InventoryContains(items[i].ID) and not R_UnderAttack and (items[i].ID <> ShaftsID) and (items[i].ID <> KnifeID) and (items[i].ID <> 0))then begin
if not MouseKeys then begin
box := invBox(items[i].Slot);
RandomALMouse(randomRange(box.x1, box.x2), randomRange(box.y1, box.y2), 0, 0);
sleep(random(100));
Al_FastClick(mouse_right);
sleep(random(100));
R_selectOption('Drop');
sleep(random(100));
end else begin
box := invBox(items[i].Slot);
MoveMouse(randomRange(box.x1, box.x2), randomRange(box.y1, box.y2));
sleep(random(100));
Al_FastClick(mouse_right);
sleep(random(100));
ChooseOptionMultiExFast(['Drop'], 'All', ClickLeft);
sleep(random(100));
end;
end;
items := R_GetInventoryItems;
end;
end;
end;
procedure doNormalSelling;
var items : TInventoryItemArray;
i, nullINT, j : integer;
box : TBox;
begin
if(FindDTM(ShopDTM, nullINT, nullINT, MSX1, MSY1, MSX2, MSY2))then
begin
doCount;
UpdateScreen('Selling items...');
items := R_GetInventoryItems;
while(FindDTM(ShopDTM, nullINT, nullINT, MSX1, MSY1, MSX2, MSY2) and R_InvFull)do begin
for j:=0 to 10 do begin
for i:=0 to high(items) do begin
if(not InIntArray(AxeIDs, items[i].ID) and not InIntArray(NestIDs, items[i].ID) and R_InventoryContains(items[i].ID) and FindDTM(ShopDTM, nullINT, nullINT, MSX1, MSY1, MSX2, MSY2) and (items[i].ID <> ShaftsID) and (items[i].ID <> MoneyID) and (items[i].ID <> KnifeID) and (items[i].ID <> 0))then begin
box := invBox(R_GetItemSlot(items[i].ID));
RandomALMouse(randomRange(box.x1, box.x2), randomRange(box.y1, box.y2), 0, 0);
sleep(random(100));
Al_FastClick(mouse_right);
sleep(random(100));
R_selectOption('Sell 10');
sleep(750+random(250));
end;
items := R_GetInventoryItems;
end;
end;
end;
end;
end;
procedure GoToNormalTreesSpot;
begin
UpdateScreen('Going to trees spot...');
DoRun;
if((canBank) and (PathToTrees[0] <> Point(-1, -1)) and (R_DistanceFromTile(PathToTrees[0]) < 25) and (R_DistanceFromTile(PathToTrees[high(PathToTrees)]) > R_DistanceFromTile(PathToTrees[0])))then begin
R_WalkPath(PathToTrees);
end else begin
if not PowerChop then begin
R_BlindWalk(TreesLocation);
end else begin
end;
end;
Flag;
Sleep(random(2000));
end;
procedure doLumbYewCheck(banking:boolean);
begin
if(R_GetPlane = 2)then begin
if banking then begin
end else begin
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going down stairs.');
if(R_InteractTileWait(customLocations[0], 'Climb-down', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end else begin
if(R_GetPlane = 1)then begin
if banking then begin
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going up stairs.');
if(R_InteractTileWait(customLocations[0], 'Climb-up', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end else begin
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going down stairs.');
if(R_InteractTileWait(customLocations[0], 'Climb-down', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end else begin
if banking then begin
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going up stairs.');
if(R_InteractTileWait(customLocations[0], 'Climb-up', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end else begin
end;
end;
end;
if(banking)then begin
if(R_GetPlane <> 2)then
doLumbYewCheck(true);
end else begin
if(R_GetPlane <> 0)then
doLumbYewCheck(false);
end;
end;
procedure doLumbGenDoorCheck(banking:boolean);
var tempObject : TRSObject;
begin
if ((banking and not R_OnTileArray(customPath1)) or (not banking and R_OnTileArray(customPath1))) then begin
tempObject := R_GetObjectAt(3, customLocations[0]);
if(tempObject.ID <> 0)then begin
UpdateScreen('Door closed!');
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to door...');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Opening door.');
if(R_OpenDoor(customLocations[0], 'w'))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
end;
procedure doEdgeDoorCheck(banking:boolean);
var tempObject : TRSObject;
begin
if ((banking and R_OnTileArray(customPath1)) or (not banking and not R_OnTileArray(customPath1))) then begin
tempObject := R_GetObjectAt(3, customLocations[0]);
if(tempObject.ID <> 0)then begin
UpdateScreen('Door closed!');
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to door...');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Opening door.');
if(R_OpenDoor(customLocations[0], 'e'))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
end;
procedure doGnomeCheck(banking:boolean);
begin
if(R_GetPlane = 0)then begin
if banking then begin
if(not R_TileOnMS(customLocations[0]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[0]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going up stairs.');
if(R_InteractTileWait(customLocations[0], 'Climb-up', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end else begin
end;
end else begin
if banking then begin
end else begin
if(not R_TileOnMS(customLocations[1]))then begin
UpdateScreen('Going to stairs.');
R_BlindWalk(customLocations[1]);
flag;
Sleep(random(2000));
end;
UpdateScreen('Going down stairs.');
if(R_InteractTileWait(customLocations[1], 'Climb-down', 5000))then begin
flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
end;
procedure GoToTreesSpot;
begin
if not customBank then begin
GoToNormalTreesSpot;
end else begin
case TypeOfJob of
9, 14:begin //deposit box
GoToNormalTreesSpot;
end;
21:begin //sell
doLumbGenDoorCheck(false);
GoToNormalTreesSpot;
end;
22:begin //door
doEdgeDoorCheck(false);
GoToNormalTreesSpot;
end;
19, 20:begin //gnome
doGnomeCheck(false);
GoToNormalTreesSpot;
end;
24:begin //lumb yew
doLumbYewCheck(false);
GoToNormalTreesSpot;
end;
25:begin //sell
doLumbGenDoorCheck(false);
GoToNormalTreesSpot;
end;
26:begin //sell
doLumbGenDoorCheck(false);
GoToNormalTreesSpot;
end;
end;
end;
end;
procedure doNormalBanking;
var items : TInventoryItemArray;
i : integer;
box : TBox;
firstTime : boolean;
begin
if(PinPending) then
begin
ConfirmPin;
end;
if(PinScreen) then
begin
InPin(Players[0].Pin);
end;
if(BankScreen) then
begin
doCount;
UpdateScreen('Banking items...');
items := R_GetInventoryItems;
firstTime := true;
while(BankScreen and (R_InvFull or firstTime))do begin
if not R_ArrayOfItemsInInv(AxeIDs) and (not R_InventoryContains(KnifeID) or not Fletch) then begin
QuickDeposit('inventory');
end else begin
for i:=0 to high(items) do begin
if(not InIntArray(AxeIDs, items[i].ID) and R_InventoryContains(items[i].ID) and BankScreen and (items[i].ID <> KnifeID) and (items[i].ID <> 0))then begin
box := invBox(items[i].Slot);
RandomALMouse(randomRange(box.x1, box.x2), randomRange(box.y1, box.y2), 0, 0);
sleep(random(100));
Al_FastClick(mouse_right);
sleep(random(100));
R_selectOption('Deposit-All');
sleep(500+random(500));
end;
items := R_GetInventoryItems;
end;
end;
firstTime := false;
if(random(2) = 1)then
closeBank;
end;
GoToTreesSpot;
end;
end;
procedure doDepositBox;
begin
if(DepositScreen)then begin
doCount;
UpdateScreen('Depositing items...');
Deposit(2, 28, true); //no deposit reflection...
sleep(1500+random(500));
end;
end;
procedure doBanking;
begin
if not customBank then begin
doNormalBanking;
end else begin
case TypeOfJob of
9, 14:begin
doDepositBox;
end;
21:begin //sell
doNormalSelling;
end;
22:begin //door
doNormalBanking;
end;
19, 20:begin //gnome
doNormalBanking;
end;
24:begin //lumb yew
doNormalBanking;
end;
25:begin //sell
doNormalSelling;
end;
26:begin //sell
doNormalSelling;
end;
end;
end;
end;
procedure GoToNormalBank;
begin
if CanBank then begin
UpdateScreen('Going to bank...');
if(not(R_TileOnMS(BankLocation)))then begin
DoRun;
if(PathToBank[0] <> Point(-1, -1))then begin
if(R_DistanceFromTile(PathToBank[0]) > 25) or (R_DistanceFromTile(PathToBank[high(PathToBank)]) > 25)then
R_BlindWalk(PathToBank[0]);
R_WalkPath(PathToBank);
Flag;
Sleep(random(2000));
end else begin
R_BlindWalk(BankLocation);
Flag;
Sleep(random(2000));
end;
end;
end else begin
UpdateScreen('Running..');
if not PowerChop then begin
R_BlindWalk(Point(TreesLocation.x, TreesLocation.y - 10));
end else begin
R_BlindWalk(Point(R_GetTileGlobal.x, R_GetTileGlobal.y - 10));
end;
Flag;
Sleep(random(2000));
end;
end;
procedure GoToBank;
begin
if not customBank then begin
GoToNormalBank;
end else begin
case TypeOfJob of
9, 14:begin
GoToNormalBank; //d
end;
21:begin //sell
doLumbGenDoorCheck(true);
GoToNormalBank;
end;
22:begin //door
doEdgeDoorCheck(true);
GoToNormalBank;
end;
19, 20:begin //gnome
doGnomeCheck(true);
GoToNormalBank;
end;
24:begin //lumb yew
GoToNormalBank;
doLumbYewCheck(true);
end;
25:begin //sell
doLumbGenDoorCheck(true);
GoToNormalBank;
end;
26:begin //sell
doLumbGenDoorCheck(true);
GoToNormalBank;
end;
end;
end;
end;
procedure OpenBankNormalUp;
begin
if(not BankScreen) and (not PinPending) and (not PinScreen)then begin
UpdateScreen('Opening bank...');
if(R_TryMakeTileOnMS(BankLocation, 5000, false))then begin
R_InteractTileWait(BankLocation, 'Bank B', 5000);
Flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
procedure OpenDepositBoxUp;
begin
if(not DepositScreen)then begin
UpdateScreen('Opening deposit box...');
if(R_TileOnMS(BankLocation))then begin
R_InteractTileWait(BankLocation, 'Deposit', 5000);
Flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
procedure OpenGeneral;
var NullINT:integer;
_npc : TNPC;
begin
if(not(FindDTM(ShopDTM, nullINT, nullINT, MSX1, MSY1, MSX2, MSY2)))then begin
UpdateScreen('Opening general store sell interface...');
if(R_TryInteractNPCID(customIDs[0], 'Trade', 15, _npc))then begin
Flag;
doFindAllRandoms;
Sleep(random(2000));
end;
end;
end;
procedure OpenBankUp;
begin
if not customBank then begin
OpenBankNormalUp;
end else begin
case TypeOfJob of
9, 14:begin
OpenDepositBoxUp;
end;
21:begin //sell
OpenGeneral;
end;
22:begin //door
OpenBankNormalUp;
end;
19, 20:begin //gnome
OpenBankNormalUp;
end;
24:begin //lumb yew
OpenBankNormalUp;
end;
25:begin //sell
OpenGeneral;
end;
26:begin //sell
OpenGeneral;
end;
end;
end;
end;
procedure doSafeChecks;
var NestItem : TGroundItem;
begin
doFindAllRandoms;
DoRun;
UpdateScreen('');
sleep(50);
if(ActivatedItem <> -1)then
AL_MouseBoxEx(InvBox(ActivatedItem).x1, InvBox(ActivatedItem).y1, InvBox(ActivatedItem).x2, InvBox(ActivatedItem).y2, 0, Mouse_left);
if(bankScreen)then
CloseBank;
NestItem := r_getGItemDistanceIDs(10, NestIDs);
if(inIntArray(NestIDs, NestItem.ID) and not R_InvFull)then begin
writeln('Found nest!');
if(R_TileOnMS(NestItem.Tile))then begin
if(R_InteractTileWait(NestItem.Tile, 'Take Bird nest', 5000))then begin
Inc(Nests);
Flag;
Sleep(random(2000));
end;
end else begin
R_BlindWalk(NestItem.Tile); //b
Flag;
Sleep(random(2000));
end;
end;
if(R_UnderAttack)then begin
UpdateScreen('UNDER ATTACK!!!');
writeln('UNDER ATTACK RUN! TO BANK!');
GoToBank;
if(canBank)then begin
OpenBankUp;
DoBanking;
end;
sleep(5000);//wait for the hostile to leave us alone
end;
if(timeFromMark(LastXPCheck) > 360000)then begin //xp check
MarkTime(LastXPCheck);
SetAngle(0);
MakeCompass('W');
if(R_GetSkillExp(Skill_Woodcutting) <= LastXPXPCheck)then begin
UpdateScreen('No woodcutting xp gained within 6 mins...');
writeln('Didnt gain exp in 6 minutes... Logging out...');
Logout;
TerminateScript;
end;
LastXPXPCheck := R_GetSkillExp(Skill_Woodcutting);
end;
end;
procedure doFletch;
var p : TPoint;
begin
if(R_InventoryContains(KnifeID) and R_InventoryContains(LogID))then begin
UpdateScreen('Going to fletch');
Gametab(tab_Inv);
if(ActivatedItem = -1)then begin
R_ClickItemBy(KnifeID, 'Use');
sleep(500 + random(500));
end;
if(ActivatedItem <> -1)then begin
R_ClickItemBy(LogID, 'Use');
sleep(1250 + random(500));
end;
if(LogID = 1512)then begin
p := Point(76, 410);
end else begin
if(LogID = 1514)then begin
p := Point(377, 410);
end else begin
p := Point(261, 411);
end;
end;
RandomAlMouse(p.x, p.y, 10, 10);
sleep(random(500));
AL_FastClick(mouse_right);
if(R_ChooseOption('Make X'))then begin
sleep(1000 + random(500));
TypeSend('99');
sleep(1250 + random(500));
end;
while(not R_UnderAttack and (R_GetAnimation = FletchID))do begin
doSafeChecks;
UpdateScreen('Fletching...');
antiBan;
end;
end;
end;
procedure doExtraChecks;
begin
if not customBank then begin
end else begin
case TypeOfJob of
21:begin//lumb door
doLumbGenDoorCheck(false);
end;
22:begin//door
doEdgeDoorCheck(false);
end;
19, 20:begin //gnome
doGnomeCheck(false);
end;
24:begin //lumb yew
doLumbYewCheck(false);
end;
25:begin//lumb door
doLumbGenDoorCheck(false);
end;
26:begin//lumb door
doLumbGenDoorCheck(false);
end;
end;
end;
end;
procedure ChopTree;
var TempObject : TRSObject;
TreeObject, NextTree : R_TTreeObject;
firstTime : boolean;
begin
doExtraChecks;
firstTime := true;
UpdateScreen('Looking for tree...');
if not PowerChop then begin
TreeObject := R_getClosestAliveTTreeObject(LocationTreeObjects);
end else begin
TreeObject := R_ConvertTRSObjectToR_TTreeObject(R_GetClosestObjectIDs(0, 25, customIDs));
end;
if(not R_isValidTTreeObject(TreeObject))then begin
UpdateScreen('No Tree! D:');
if FarTrees then begin
NextTree := R_getNextTTreeObject(LocationTreeObjects, PreviousTree);
PreviousTree := R_getClosestTTreeObject(LocationTreeObjects);
UpdateScreen('Going to next tree...');
if(not R_TileOnMS(NextTree.Tile))then begin
R_BlindWalk(NextTree.Tile);
Flag;
Sleep(random(2000));
end;
end else begin
GoToNormalTreesSpot;
end;
end else begin
if UseDAxeSpec and (R_GetSpecPercent >= 100)then begin
GameTab(tab_Combat);
RandomALMouse(645, 432, 5, 5);
AL_FastClick(mouse_left);
end;
UpdateScreen('Found tree! :D');
PreviousTree := R_getClosestTTreeObject(LocationTreeObjects);
if(not R_TileOnMSHeight(TreeObject.Tile, 100))then begin
UpdateScreen('Going to tree...');
R_BlindWalk(TreeObject.Tile);
Flag;
Sleep(random(2000));
end;
if(R_TileOnMSHeight(TreeObject.Tile, 100))then begin
UpdateScreen('Going to chop tree...');
if(R_InteractTileWaitHeight(TreeObject.Tile, 'Chop down '+TreeObject.Name, 5000, 100))then begin
Flag;
doFindAllRandoms;
sleep(1500 + random(500));
TempObject := R_GetObjectAt(0, TreeObject.Tile);
while((TempObject.ID = TreeObject.AliveObjectID) and InIntArray(AnimationIDs, R_GetAnimation) and not R_InvFull)do begin
TempObject := R_GetObjectAt(0, TreeObject.Tile);
UpdateScreen('Chopping tree...');
doSafeChecks;
if(FirstTime)then begin
firstTime := false;
if(random(round(AntiBanOften/5000)) = 1)then
MMouseOffClient('Random');
end;
AntiBan;
end;
if(TempObject.ID <> TreeObject.AliveObjectID) and (TempObject.ID <> TreeObject.DeadObjectID) and InIntArray(AnimationIDs, R_GetAnimation) then begin
RandomAlMouse(R_TileToMM(R_GetTileGlobal).x, R_TileToMM(R_GetTileGlobal).y, 0, 0);
Al_FastClick(mouse_left);
UpdateScreen('Ent tree...!');
end;
end;
end;
end;
end;
begin
SafeInitForm;
SafeShowFormModal;
if(started and (JobBox.ITEMINDEX > -1)) then begin
DeclarePlayers; //o
ClearDebug;
SetupSRL;
SetupReflection;
ActivateClient;
SMART_ClearCanvas;
DoLogin;
DeclareVars;
repeat
if((R_GetLoginState > 10) and (R_GetLoginState <= 30))then begin
doSafeChecks;
if R_InvFull then begin
if Fletch then
doFletch;
if canBank then begin
GoToBank;
OpenBankUp;
doBanking;
end else begin
DoDropping;
end;
end else begin
ChopTree;
end;
end else begin
DoLogin;
end; //t
until((HowMuchToChop <> -1) and (HowMuchToChop >= LogsChopped));
LogOut;
writeln('Stopping because chopped more than '+toStr(HowMuchToChop)+' logs.');
end;
if(Updating)then
doUpdate;
end.
I added some jobs; 'Lumbridge Willows (sell)', and 'Lumbridge Yews (sell)'. They are great for getting Ultimate Ironman mode to lvl 60 wc without getting banned.
So far so good:
http://i.gyazo.com/bf98ba5c59dfb6e44ee83a352018092a.png
damn.. this has no teak powerchop on it.. I can't find one :s
Best proggy yet:
http://i.imgur.com/1epBYHW.png
Great Script.
guys how did you start it? when the download link for it is an updater?
so i copied and pasted the code, now it says starting and succesful execute but it never starts? when i click the play
Ahh.. The link for al_functions is broken for me? Just me or am I missing something?
You need to download al_functions
The link on OP for al_functions leads to a page that supposedly doesn't exist, I can't download it
I'm really uncertain how to fix the ID's for these tree's!!
http://i.imgur.com/tdOrHZO.pngCode://seers magics 2
BankLocation := Point(2727, 3494);
LocationTreeObjects := [R_MakeTTreeObject(Point(2705, 3397), 2123, 9713, 'Magic', 0), R_MakeTTreeObject(Point(2705, 3399), 2123, 9713, 'Magic', 1), R_MakeTTreeObject(Point(2699, 3397), 2123, 9713, 'Magic', 2), R_MakeTTreeObject(Point(2699, 3399), 2123, 9713, 'Magic', 3)];
PathToBank := [Point(2701, 3396), Point(2704, 3392), Point(2709, 3392), Point(2714, 3393), Point(2714, 3398), Point(2716, 3403), Point(2715, 3408), Point(2715, 3413), Point(2714, 3418), Point(2714, 3423), Point(2713, 3428), Point(2713, 3433), Point(2713, 3438), Point(2710, 3442), Point(2712, 3447), Point(2717, 3449), Point(2720, 3453), Point(2720, 3458), Point(2720, 3463), Point(2720, 3468), Point(2722, 3473), Point(2725, 3478), Point(2727, 3483), Point(2726, 3488), Point(2726, 3491)];
PathToTrees := [Point(2725, 3491), Point(2726, 3486), Point(2727, 3481), Point(2726, 3476), Point(2724, 3471), Point(2723, 3466), Point(2723, 3461), Point(2719, 3457), Point(2716, 3453), Point(2713, 3448), Point(2710, 3444), Point(2710, 3439), Point(2711, 3434), Point(2713, 3429), Point(2713, 3424), Point(2713, 3419), Point(2715, 3414), Point(2715, 3409), Point(2716, 3404), Point(2716, 3399), Point(2715, 3394), Point(2710, 3393), Point(2705, 3392), Point(2701, 3395), Point(2702, 3397)];
TreesLocation := Point(2700, 3397);
LogID := 1514;
CanBank := true;
Edit: Attachment 24710
It goes to log in and I get this error
Error: Exception: Invalid variant type cast at line 477
The following DTMs were not freed: [SRL - Lamp bitmap, SRL - Book of Knowledge]
The following bitmaps were not freed: [SRL - Mod bitmap, SRL - Admin bitmap, SRL - Minimap Mask bitmap, 3]
Any idea?