Fwd Motion
2012-02-29 00:19:09
How Long have You Played Runescape?
6 Year(s)
Are you affilated in anyway with Jagex LTD?
Nope
Were you Referred to SRL?
What is your general programming knowledge?
Pascal
JavaScript
C
Are you a member of any other communities?
Was an active member of RSCA as 'A-Sug[A T L Man]'
Tell us about yourself…
Please show us one (or multiple) of your scripts.
My Summoner (Still needs a little bit of work): http://villavu.com/forum/showthread.php?t=74439
My HerbCleaner(Based On MouseKeys)
This is the fastest herb cleaner on the site and its even faster than any herb cleaner i've ever used, including during refelection. Its a pretty popular script with over 350 Downloads on the most recent Version: http://villavu.com/forum/showthread.php?t=72584
I also write the "MouseBankSlot" procedure that's in the core bank include:
I also got the info for the new bank in taverly for the OpenBankFast include:
I've also written an UNF Potion maker, which I have no released to the public to keep prices from diving. (Will release in members if I am accepted though, obvously):
I've also been working on an AIO Thiever, but its still practically a skeleton.
Along with all of that, I also was able to figure out how to get the proper updates for the sps images: http://villavu.com/forum/showthread.php?t=74442
6 Year(s)
Are you affilated in anyway with Jagex LTD?
Nope
Were you Referred to SRL?
What is your general programming knowledge?
Pascal
JavaScript
C
Are you a member of any other communities?
Was an active member of RSCA as 'A-Sug[A T L Man]'
Tell us about yourself…
From: Fwd Motion
My name is Adam Sugden, I'm from Atlanta, Georgia, I'm 18 years old and I love to learn new things! I know a bunch of random facts, for no reason whatsoever.
I love to just browse wikipedia and learn whatever I can about different bands, people, etc…
I love music, I listen to Metal-ish type music (Screamo, if you will).
I will be going to GA State University this coming fall to get my general education and a degreen in Architecture and Engineering, then I plan on joining the Air Force as a Developmental Engineer.
Please show us one (or multiple) of your scripts.
My Summoner (Still needs a little bit of work): http://villavu.com/forum/showthread.php?t=74439
program FwdsSummoner;
//{$DEFINE SMART}
{$i srl/srl.simba}
{$i sps/sps.simba}
var
x,y,Server1,b,NumberOfInventories,WhatToDo,LookingForBank,startingxp,Failsafe,Failsafe2,inventories,antibans:integer;
ToObelisk,totheBank:TPointArray;
frmDesign: TForm;
Button1: TButton;
Label1,UserLabel,PassLabel,NickLabel,PinLabel,ServerLabel,InventoryLabel: TLabel;
User,Pass,Nick,BankPin,Server,Inventory: TEdit;
User1,Pass1,Nick1,BankPin1:String;
List1: TListBox;
StartReady: Boolean;
Image1: TImage;
Procedure ButtonClick(Sender: TObject);
Begin
WriteLn('Getting Ready!');
frmDesign.ModalResult:= mrOk;
StartReady := true;
User1 := user.TEXT;
Pass1 := Pass.TEXT;
Nick1 := Nick.TEXT;
BankPin1 := BankPin.Text;
Server1 := StrToInt(Server.text);
NumberOfInventories := strtoint(Inventory.text);
WhatToDo := list1.ItemIndex;
Writeln (inttostr(list1.ItemIndex));
End;
procedure InitForm;
begin
frmDesign := CreateForm; // This will create your form. MUST be called first.
frmDesign.Left := 100; // How many pixels from the left must the form be vissible?
frmDesign.Top := 100; // How many pixels from the top must the form be vissible?
frmDesign.Width := 500; // The width of you form in pixels
frmDesign.Height := 250; // The height of you form in pixels
frmDesign.Caption := 'Fwd Motion`s Summoner'; // The name of your form? This will be shown in the upper left balk
frmDesign.Font.Color := ClBlack; // The color of the text (Tlabels) when you have those
frmDesign.Font.Name := 'Calibri'; // The name of the font you want the Tlabels to be
frmDesign.Color := ClBlack;
Button1 := TButton.Create(FrmDesign); // This will create the button. Must be called.
Button1.Parent := FrmDesign; // The parent is very important. Without the parrent set to the formname the button won't be visible
Button1.Left := 215; // how many pixels from the left
Button1.Top := 220; // how many pixels from the top
Button1.Height := 30; // the height of the button
Button1.Width := 60; // the width of the button
Button1.Caption := 'START!'; // The text on the button!
Button1.OnClick := @ButtonClick;
Label1 := TLabel.Create(FrmDesign); // This will create the label. Must Be called.
Label1.Parent := FrmDesign; // The parent is very important. Without the parrent set to the formname the label wont be visible
Label1.Left := 130; // how many pixels from the top
Label1.Top := 10; // how many pixels from the left
Label1.Caption := 'Fwd Motion`s Summoner'; // What does your label need to say?
Label1.Font.Size := 18; // The size of your text
Label1.Font.Color := ClLime; // The color of your text
Label1.Font.Name := 'Calibri'; // The font name of your text
User := TEdit.Create(FrmDesign); // This will create the editbox. Must be called.
User.Parent := FrmDesign; // without this your editbox wont be visible
User.Top := 60; // how many pixels from the top
User.Left := 80; // how many pixels from the left
User.Width := 125; // the width of your editbox
User.Height := 20;
User.TEXT := 'UserName';
UserLabel := TLabel.Create(FrmDesign);
UserLabel.Parent := FrmDesign;
UserLabel.Top := 60;
UserLabel.Left := 5;
UserLabel.Caption := 'Username';
UserLabel.FONT.Color := ClWhite;
Pass := TEdit.Create(FrmDesign); // This will create the editbox. Must be called.
Pass.Parent := FrmDesign; // without this your editbox wont be visible
Pass.Top := 90; // how many pixels from the top
Pass.Left := 80; // how many pixels from the left
Pass.Width := 125; // the width of your editbox
Pass.Height := 20; // the height of you editbox
Pass.Text := 'Password';
Pass.PASSWORDCHAR := '*';
PassLabel := TLabel.Create(FrmDesign);
PassLabel.Parent := FrmDesign;
PassLabel.Top := 90;
PassLabel.Left := 5;
PassLabel.Caption := 'Password';
PassLabel.FONT.Color := ClWhite;
Nick := TEdit.Create(FrmDesign); // This will create the editbox. Must be called.
Nick.Parent := FrmDesign; // without this your editbox wont be visible
Nick.Top := 120; // how many pixels from the top
Nick.Left := 80; // how many pixels from the left
Nick.Width := 125; // the width of your editbox
Nick.Height := 20; // the height of you editbox
Nick.Text := 'Nick';
NickLabel := TLabel.Create(FrmDesign);
NickLabel.Parent := FrmDesign;
NickLabel.Top := 120;
NickLabel.Left := 5;
NickLabel.Caption := 'Nick';
NickLabel.FONT.Color := ClWhite;
BankPin := TEdit.Create(FrmDesign); // This will create the editbox. Must be called.
BankPin.Parent := FrmDesign; // without this your editbox wont be visible
BankPin.Top := 150; // how many pixels from the top
BankPin.Left := 80; // how many pixels from the left
BankPin.Width := 125; // the width of your editbox
BankPin.Height := 20; // the height of you editbox
BankPin.Text := '0000';
BankPin.MaxLength := 4;
PinLabel := TLabel.Create(FrmDesign);
PinLabel.Parent := FrmDesign;
PinLabel.Top := 150;
PinLabel.Left := 5;
PinLabel.Caption := 'Bank Pin';
PinLabel.FONT.Color := ClWhite;
Server := TEdit.Create(FrmDesign); // This will create the editbox. Must be called.
Server.Parent := FrmDesign; // without this your editbox wont be visible
Server.Top := 180; // how many pixels from the top
Server.Left := 80 // how many pixels from the left
Server.Width := 125; // the width of your editbox
Server.Height := 20; // the height of you editbox
Server.Text := '6';
ServerLabel := TLabel.Create(FrmDesign);
ServerLabel.Parent := FrmDesign;
ServerLabel.Top :=180;
ServerLabel.Left := 5;
ServerLabel.Caption := 'Server';
ServerLabel.FONT.Color := ClWhite;
Inventory := TEdit.Create(FrmDesign);
Inventory.Parent := FrmDesign;
Inventory.Top := 210;
Inventory.Left := 80;
Inventory.Width := 125;
Inventory.Height := 20;
Inventory.TEXT := '2000';
InventoryLabel := TLabel.Create(FrmDesign);
InventoryLabel.Parent := FrmDesign;
InventoryLabel.Top := 210;
InventoryLabel.Left := 5;
InventoryLabel.Caption := 'Inventories';
InventoryLabel.FONT.Color := ClWhite;
List1 := TListBox.Create(FrmDesign); // This will create the combobox. Must be called.
List1.Parent := FrmDesign; // without this your combobox wont be visible
List1.Top := 60; // how many pixels from the top
List1.Left := 290; // how many pixels from the left
List1.Width := 200; // the width of your combobox
List1.Height := 70; // the height of you combobox
List1.Items.Add('Charms to Pouches');
List1.Items.Add('Charms to Pouches to Scrolls');
List1.Items.Add('Pouches to Scrolls');
end;
procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
function PouchScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x,y,'Pouch Creation', UpCharsEx,248,27,440,53);
end;
function ScrollScreen: Boolean;
var
X, Y: Integer;
begin
Result := FindText(x,y,'Scroll Creation', UpCharsEx,248,27,440,53);
end;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := User1; // Username?
Players[0].Pass := Pass1; // Password?
Players[0].Nick := Nick1; // 3 letters of your username (not the first letter)
Players[0].Active := True;
end;
Function XPPerHour(runtime,gained:integer):String;
begin
result:=inttostr(Round((gained * 3600) / (runtime / 1000)));
end;
Function GainedXP:integer;
begin
result:= GetXPBarTotal - startingxp;
end;
procedure antiban;
begin
case random(800) of
0..25:
begin
HoverSkill('summoning',false);
antibans:=antibans+1;
end;
26..51:
begin
sleep(2000+random(3000));
antibans:=antibans+1;
end;
52..77:
begin
SleepAndMoveMouse(2000+random(2000));
antibans:=antibans+1;
end;
end;
end;
procedure SPSPaths;
begin
SPS_Setup(RUNESCAPE_SURFACE,['8_7','8_6']);
ToObelisk := [Point(3341, 2983), Point(3357, 2984), Point(3369, 2982), Point(3385, 2985), Point(3397, 2989), Point(3415, 2993), Point(3431, 2992), Point(3446, 2992), Point(3465, 2986), Point(3475, 2975), Point(3488, 2963), Point(3501, 2955), Point(3519, 2946), Point(3526, 2932), Point(3528, 2916), Point(3531, 2897), Point(3531, 2875), Point(3531, 2857), Point(3543, 2856), Point(3557, 2863)];
totheBank := [Point(3554, 2856), Point(3542, 2856), Point(3528, 2858), Point(3529, 2872), Point(3529, 2883), Point(3529, 2897), Point(3529, 2908), Point(3527, 2922), Point(3522, 2931), Point(3516, 2942), Point(3505, 2951), Point(3494, 2957), Point(3483, 2967), Point(3475, 2978), Point(3465, 2987), Point(3451, 2994), Point(3438, 2994), Point(3419, 2993), Point(3402, 2990), Point(3386, 2988), Point(3371, 2984), Point(3353, 2984), Point(3340, 2983)];
end;
Procedure Bank;
begin
sleep(500+random(500));
OpenBankFast('tavb');
sleep(500+random(250));
if (PinScreen) then
InPin(BankPin1);
if not(WaitFunc(@BankScreen,25,2000)) then
OpenBankFast('tavb');
if (WaitFunc(@BankScreen,25,2000)) then
begin
if (WhatToDo = 0) then
InvMouse(4+random(12), 3);
if (WhatToDo > 0) then
InvMouse(4, 3);
repeat
sleep(200+random(250));
GetMousePos(x,y);
ClickMouse2(false);
WaitOptionMulti(['Deposit-All', 'All'], 100);
until InvCount=3;
if (WhatToDo <= 1) then
MMouse(55,108,8,8);
if (WhatToDo = 2) then
MMouse(97,106,8,8);
GetMousePos(x,y);
Mouse(x,y,0,0,false);
sleep(50+random(250));
WaitOptionMulti(['Withdraw-All', 'All'], 100);
(*if(IsUpText(SecondaryItem)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,false);
sleep(200+random(250));
WaitOptionMulti(['Withdraw-All', 'All'], 200);
sleep(500+random(100));
end else
if not(IsUpText(SecondaryItem)) then
begin
MMouse(55,108,8,8);
sleep(5000+random(250));
writeln(GetUpText);
if(IsUpText(SecondaryItem)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,false);
WaitOptionMulti(['Withdraw-All', 'All'], 200);
sleep(500+random(250));
end else
if not(IsUpText(SecondaryItem)) then
begin
Writeln('Out Of SecondaryItem');
if (BankScreen) then
CloseBank;
ExitToLobby;
TerminateScript;
end;
end;*)
end;
case random(100) of
0..60: begin CloseBank; sleep(200+random(200)); end;
0..75: ClickNorth(0);
end;
end;
Procedure CheckInv;
begin
sleep(50+random(250));
if not(invfull) then
begin
Bank;
CheckInv;
end;
end;
Procedure ClickObelisk;
begin
failsafe:=0
MMouse(x,y,20,20);
sleep(1500+random(200));
repeat
FindColorTolerance(x, y, 11384245, 275, 100, 480, 250, 3);
MMouse(x,y,20,20);
Sleep(200+random(250));
if (isuptextmulticustom(['ouch','Obelisk','belisk','elisk'])) then
begin
failsafe2 := 10
GetMousePos(x,y);
Mouse(x,y,0,0,1);
Sleep(200+random(250));
Break;
end;
failsafe:= failsafe + 1
until (failsafe > 10);
if (failsafe > 10) then
begin
while (failsafe2 = 0) do
begin
writeln('Could not find the obelisk after 10 tries, trying one more time');
MMouse(630,66,5,5);
SPS_WalkToPos(Point(3559, 2857));
failsafe2:=failsafe2+1
Flag;
ClickObelisk;
end;
while (failsafe2 < 2) do
begin
MMouse(630,66,5,5);
FindColorSpiralTolerance(x, y, 6236160, 576, 30, 686, 70, 3);
Mouse(x,y,0,0,true);
failsafe2:=failsafe2+1
ClickObelisk;
end;
while (failsafe2 < 4) do
begin
writeln('Once again couldn`t find obelisk, starting over');
sleep(200+random(200));
SPS_WalkPath(ToTheBank);
Bank;
SPS_WalkPath(ToObelisk);
SPS_WalkToPos(Point(3560, 2858));
failsafe2 := 5
ClickObelisk;
end;
while (failsafe2 = 5) do
begin
writeln('Something is wrong, logging out');
ExitToLobby;
TerminateScript;
end;
end;
end;
Procedure Infuse;
begin
if WaitFunc(@PouchScreen,100,2000) then
begin
repeat
if PouchScreen then
MMouse(63,82,10,10);
if (WaitUpTextMulti(['pouch','ouch','uch','fuse'],2000)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,false);
WaitOptionMulti(['Infuse-All', 'All'], 2000);
failsafe2 := 10
Break;
end;
failsafe:= failsafe + 1
until (failsafe > 20);
while (failsafe2 = 0) do
begin
writeln('couldn`t make the pouches for some reason, maybe we didn`t click the obelisk?');
SPS_WalkPath(ToObelisk);
ClickObelisk;
failsafe2 := 1;
Infuse;
end;
while (failsafe2 = 1) do
begin
writeln('couldn`t make the pouches for some reason, starting over.');
SPS_WalkPath(ToTheBank);
Bank;
SPS_WalkPath(ToObelisk);
ClickObelisk;
failsafe2 := 2;
Infuse;
end;
while (failsafe2 = 2) do
begin
writeln('still couldn`t infuse the pouch, logging out');
ExitToLobby;
TerminateScript;
end;
sleep(500+random(250));
case random(100) of
0..30:
begin
HoverSkill('Summoning',false);
antibans:=antibans+1;
end;
end;
end else
begin
ClickObelisk;
Infuse;
end;
end;
Procedure ToScroll;
begin
if WaitFunc(@PouchScreen,100,2000) then
begin
WaitFunc(@ScrollScreen,50,1000);
Mouse(130,40,20,5,true);
repeat
MouseBox(53,69,77,95,mouse_move);
if (WaitUptextMulti(['transform','form','croll'],2000)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,false);
WaitOptionMulti(['Transform-All', 'All'], 2000);
Break;
end;
failsafe:= failsafe + 1
until (failsafe > 10);
if (failsafe > 10) then
begin
Writeln('Could not transform pouches after 10 tries. Did we Infuse?');
InvMouse(28,3);
sleep(200+random(250));
if (IsUpText('ouch')) then
begin
Writeln('Can`t make scrolls for some reason. Banking.');
SPS_WalkPath(totheBank);
Bank;
SPS_WalkPath(ToObelisk);
ClickObelisk;
if (WhatToDo = 1) then
begin
Infuse;
end;
ToScroll
end;
end else
begin
ClickObelisk;
ToScroll;
end;
end;
end;
begin
SafeInitForm;
SafeShowFormModal;
Freeform(frmdesign);
Smart_Members := True;
Smart_Server := SERVER1;
SetupSRL;
DeclarePlayers;
if not(LoggedIn) then
LogInPlayer;
while not(LoggedIn) do
sleep(5000);
if (bankscreen) then
CloseBank;
if not(IsXPBarOpen) then
begin
sleep(2500);
ToggleXPBar(True);
end;
startingxp:= GetXPBarTotal;
MouseSpeed := 16
writeln(GetXPBarTotal);
SetAngle(0);
SPSPaths;
//SPS_WalkPath(ToTheBank);
if (WhatToDo = 0) then
repeat
AntiBan;
GameTab(tab_inv)
Sleep(200+random(250));
Bank;
CheckInv;
SPS_WalkPath(ToObelisk);
failsafe := 0
failsafe2 := 0
ClickObelisk;
sleep(500+random(200));
failsafe2 := 0
Infuse;
ClearDebug;
inventories:=inventories+1
Writeln('Running for: ' + TimeRunning);
Writeln('Inventories Done: ' + inttostr(inventories));
Writeln('Experience Gained: ' + inttostr(GainedXP));
Writeln('Experience/Hour: ' + XPPerHour(GetTimeRunning,GainedXP));
Writeln('Antibans: ' + inttostr(antibans));
SPS_WalkPath(ToTheBank);
until (inventories>= NumberOfInventories);
if (WhatToDo = 1) then
repeat
AntiBan;
GameTab(tab_inv)
Sleep(200+random(250));
Bank;
CheckInv;
SPS_WalkPath(ToObelisk);
failsafe := 0
failsafe2 := 0
ClickObelisk;
sleep(500+random(200));
failsafe2 := 0
Infuse;
ClickObelisk;
sleep(500+random(200));
ToScroll;
ClearDebug;
inventories:=inventories+1
Writeln('Running for: ' + TimeRunning);
Writeln('Inventories Done: ' + inttostr(inventories));
Writeln('Experience Gained: ' + inttostr(GainedXP));
Writeln('Experience/Hour: ' + XPPerHour(GetTimeRunning,GainedXP));
Writeln('Antibans: ' + inttostr(antibans));
SPS_WalkPath(ToTheBank);
until (inventories >= NumberOfInventories);
if (WhatToDo = 2) then
repeat
AntiBan;
GameTab(tab_inv)
{Bank;
CheckInv;
SPS_WalkPath(ToObelisk);
failsafe := 0
failsafe2 := 0 }
ClickObelisk;
sleep(500+random(200));
ToScroll;
ClearDebug;
inventories:=inventories+1
Writeln('Running for: ' + TimeRunning);
Writeln('Inventories Done: ' + inttostr(inventories));
Writeln('Experience Gained: ' + inttostr(GainedXP));
Writeln('Experience/Hour: ' + XPPerHour(GetTimeRunning,GainedXP));
Writeln('Antibans: ' + inttostr(antibans));
SPS_WalkPath(ToTheBank);
until (inventories >= NumberOfInventories);
end.My HerbCleaner(Based On MouseKeys)
This is the fastest herb cleaner on the site and its even faster than any herb cleaner i've ever used, including during refelection. Its a pretty popular script with over 350 Downloads on the most recent Version: http://villavu.com/forum/showthread.php?t=72584
program FwdsMKHerbCleaner;
{$DEFINE SMART}
{.include srl/srl.simba}
var x,y,c1,r1,sx,sy,runHorV,startingxp,inventories,herbscleaned,antibans:integer;
const
(************--------------------SETUP-----------------------------************)
Server = 6; // What world?
NumberOfInventories = 315; // How many inventories? # of herbs/28
HorV = 3; // Horizontal=1, Vertical=2, Random=3
CleanSpeed = 70; // 60-200 recommended; Lower=Faster; 60=Max xp/hr
CustomMouseSpeed = 17; // This is the MouseSpeed that will be used while banking suggested 10-20
BankPin = '0000'; // Enter you bankpin here, leave if you don't have one.
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := 'Name'; // Username?
Players[0].Pass := 'Pass'; // Password?
Players[0].Nick := 'ick'; // 3 letters of your username (not the first letter)
Players[0].Active := True;
end;
(************---------------------END SETUP------------------------************)
// FUNCTIONS
function OpenBankChestEdge2(Location: Integer): Boolean;
var
bo, i, l, z: Integer;
Info: TVariantArray;
Chests: TPointArray;
AChests: T2DPointArray;
UpText: TStringArray;
B: TBox;
begin
result := false;
if (not LoggedIn) then
Exit;
if BankScreen or PinScreen then
begin
Result := True;
Exit;
end;
UpText := ['Bank', 'chest', 'nk che'];
{ 0 1 2 3 4 5 6 7 8 9 10 }
case Location of { Sort X Sort Y Color Tol Hue Sat Count SplitTPA? W H Compass}
SRL_BANK_SW : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 's'];
SRL_BANK_CW : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 'n'];
SRL_BANK_B : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 'n'];
SRL_BANK_GG : Info := [MSCX , MSCY, 5921630, 9 , 0.47, 0.08, 50, True , 10, 10, 'n'];
else
begin
srl_Warn('OpenBankChestEdge', 'Unknown bank: '+IntToStr(Location), warn_AllVersions); //will output loc as int (no longer string)
Exit;
end;
end;
MakeCompass(Info[10]);
//SetAngle(SRL_ANGLE_HIGH); //??
z := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(Info[4], Info[5]);
FindColorsSpiralTolerance(Info[0], Info[1], Chests, Info[2], MSX1, MSY1, MSX2, MSY2, Info[3]);
ColorToleranceSpeed(z);
SetColorSpeed2Modifiers(0.2, 0.2);
{ Split to ATPA. }
if Info[7] then
AChests := SplitTPA(Chests, 3)
else
AChests := TPAtoATPA(Chests, 10);
Chests := [];
{ Go through ATPA. }
l := GetArrayLength(AChests) -1;
for i := 0 to l do
begin
{ Too few pixels. }
if (Length(AChests[i]) < Info[6]) then
Continue;
{ Too small TPA bounds. }
B := GetTPABounds(AChests[i]);
If ((B.X2 - B.X1) < Info[8]) Or ((B.Y2 - B.Y1) < Info[9]) Then
Continue;
Inc(bo);
SetArrayLength(Chests, bo);
Chests[bo-1] := MiddleBox(GetTPABounds(AChests[i]));
end;
SortTPAFrom(Chests, Point(Info[0], Info[1]));
l := GetArrayLength(Chests) -1;
for i := 0 to l do
begin
MMouse(Chests[i].X, Chests[i].Y, 3, 3);
if WaitUpTextMulti(UpText, 1000) Then
begin
GetMousePos(Chests[i].X, Chests[i].Y);
Case Random(9) of
0..7: Mouse(Chests[i].X, Chests[i].Y, 0, 0, mouse_left);
8: begin
Mouse(Chests[i].X, Chests[i].Y, 0, 0, mouse_right);
if not WaitOptionMulti(['Use', 'se'], 1000) then Exit;
end;
end;
end;
end;
end;
Function XPPerHour(runtime,gained:integer):String;
begin
result:=inttostr(Round((gained * 3600) / (runtime / 1000)));
end;
Function GainedXP:integer;
begin
result:= GetXPBarTotal - startingxp;
end;
Procedure OpenChest;
begin
case random(200) of
0..25:
MissMouse(245+random(25),192+random(15));
else
begin
MouseBox(245,192,280,215,Mouse_move);
end;
end;
if not(BankScreen) then
begin
case random(2000) of
0..200: MissMouse(255,200);
end;
if(WaitUpTextMulti(['ban','hes','hest','est'],1000)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,true);
end else
begin
OpenBankChestEdge2(SRL_BANK_SW);
end;
end;
case random(1000) of
0..500:
begin
if InvCount > 1 then
MMouse(370,305,30,30)
end;
end;
end;
Procedure Proggy;
begin
ClearDebug;
Writeln('***************Mouse Keys Herb Cleaner***************');
Writeln('********************By Fwd Motion********************');
Writeln('Running for: ' + TimeRunning);
Writeln('Herbs Cleaned: ' + inttostr(HerbsCleaned));
Writeln('Herbs Cleaned/Hour: ' + XPPerHour(GetTimeRunning,HerbsCleaned));
Writeln('Experience Gained: ' + inttostr(GainedXP));
Writeln('Experience/Hour: ' + XPPerHour(GetTimeRunning,GainedXP));
Writeln('Antibans: ' + inttostr(antibans));
Writeln('*****************************************************');
end;
// PROCEDURES
procedure antiban;
begin
case random(1500) of
0..25:
begin
HoverSkill('herblore',false);
MouseBox(644,168,669,202,1);
antibans:=antibans+1;
Proggy;
end;
26..51:
begin
sleep(2000+random(3000));
antibans:=antibans+1;
Proggy;
end;
60..75:
begin
GameTab(tab_Friends);
sleep(100+random(250));
MouseBox(644,168,669,202,1);
antibans:=antibans+1;
Proggy;
end;
80..95:
begin
Mouse(260,160,5,6,false);
sleep(200+random(100));
MMouse(190,276,10,30);
sleep(250+random(100));
MMouse(495,45,50,50);
antibans:=antibans+1;
Proggy;
end;
120..125:
begin
ToggleMoneyPouch(true);
sleep(200+random(250));
Mouse(532,98,10,10,false);
WaitOptionMulti(['Examine money','money pouch'],200);
sleep(500+random(200));
ToggleMoneyPouch(false);
end;
800..825:
begin
SleepAndMoveMouse(2000+random(2000));
antibans:=antibans+1;
Proggy;
end;
end;
end;
procedure FMMouse(x, y, rx, ry: integer);
var
cx, cy: integer;
randSpeed: Extended;
{$IFDEF UseLaptopMouse}
seg, e, f, g, nx, ny, hypo: Integer;
a, b, c: Extended;
Miss: Boolean;
{$ENDIF}
begin
GetMousePos(cx, cy);
{$IFDEF UseLaptopMouse}
miss := (Random(LMouse_MissChance) = 0);
e:= 0;
a:= x - cx;
b:= y - cy;
c:= Pow(a,2) + Pow(b,2)
hypo:= Round(Sqrt(c));
case hypo of
0: Exit;
1..225: seg:=1;
226..600: seg:= Random(2) + 1;
601..1800: seg:= random(3) + 2;
else seg := 5;
end;
f := Round( a / seg);
g := Round( b / seg);
repeat
{Begin: Modified from MMouse by Benland100}
randSpeed := (random(MouseSpeed) + MouseSpeed);
if randSpeed = 0.0 then
randSpeed := 0.1;
getMousePos(cx,cy);
nx:= (cx + (f * e)) + random(rx);
ny:= (cy + (g * e)) + random(ry);
{End: Modified from MMouse by Benland100}
if Miss then
begin
nx:= nx + RandomRange(rx, rx * 2);
ny:= ny + RandomRange(ry, ry * 2);
end;
WindMouse(cx,cy,nx,ny,11.0,8.0,0.1,3,10.0*randSpeed,10.0*randSpeed);
e:= e + 1;
until(e = seg);
GetMousePos(cx, cy);
if not PointInBox(Point(cx, cy), IntToBox(x, y, x + rx, y + ry)) then
begin
WindMouse(cx,cy,(x + random(rx)),(y + random(ry)),11.0,6.0,0.1,3,10.0*randSpeed,10.0*randSpeed);
end;
{$ELSE}
randSpeed:= (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
if randSpeed = 0.0 then
randSpeed := 0.1;
X := x + random(rx);
Y := y + random(ry);
WindMouse(cx,cy,x,y,9.0,3.0,0.1,3,10.0*randSpeed,10.0*randSpeed);
{$ENDIF}
end;
procedure FClickMouse2(button: variant);
var
a,b,c : integer;
iButton: Integer;
begin
{ Eventually, should be made to just use Integers }
if (varType(button) = varBoolean) then
begin
if (button) then
iButton := mouse_left
else
iButton := mouse_right;
end else
iButton := button;
if (iButton = mouse_move) then Exit; { we aren't actually clicking! }
GetMousePos(b, c);
HoldMouse(b, c, iButton);
repeat
a := a + 1;
until (a > 4);
GetMousePos(b, c);
ReleaseMouse(b, c, iButton);
end;
procedure FMouse(mousex, mousey, ranx, rany: Integer; button: variant);
begin
FMMouse(mousex, mousey, ranx, rany);
FClickMouse2(button);
end;
Procedure Setup;
begin
if(BankScreen) then
begin
CloseBank;
sleep(300+random(300));
end;
MouseBox(644,168,669,202,1);
SetAngle(0);
end;
Procedure Bank;
begin
if (PinScreen) then
InPin(BankPin);
if (WaitFunc(@BankScreen,50,2000)) then
begin;
if InvCount > 1 then
QuickDeposit(SRL_DEPOSIT_ALL);
Sleep(20+random(100));
FixBank;
MouseBankSlot(1,mouse_right);
case random(2000) of
0..100:
begin
if (WaitOptionMulti(['Withdraw-X Grimy','X Grimy'],10000)) then
begin
sleep(200+random(250));
MouseBankSlot(1,mouse_right);
case random(100) of
0..50:
begin
if (WaitOptionMulti(['All but one Grimy','one Grimy','but one Grimy'],10000)) then
begin
sleep(10+random(20));
end;
end;
else
begin
if (WaitOptionMulti(['Withdraw-All Grimy','All Grimy'],10000)) then
begin
sleep(20+random(20));
end;
end;
end;
end else
begin
MouseBankSlot(1,mouse_right);
if(WaitOptionMulti(['Withdraw-X Grimy','X Grimy'],10000)) then
begin
MouseBankSlot(1,mouse_right);
case random(100) of
0..50:
begin
if (WaitOptionMulti(['All but one Grimy','one Grimy','but one Grimy'],10000)) then
begin
sleep(10+random(20));
end;
end;
else
begin
if (WaitOptionMulti(['Withdraw-All Grimy','All Grimy'],10000)) then
begin
sleep(20+random(20));
end;
end;
end;
end else
begin
Writeln('Out of Herbs, logging out');
Writeln('Successfully Cleaned ' + inttostr(inventories) + ' inventories of herbs.');
if (BankScreen) then
CloseBank;
ExitToLobby;
TerminateScript;
end;
end;
end;
101..500:
begin
if (WaitOptionMulti(['All but one Grimy','one Grimy','but one Grimy'],10000)) then
begin
sleep(10+random(20));
end else
begin
MouseBankSlot(1,mouse_right);
if (WaitOptionMulti(['All but one Grimy','one Grimy','but one Grimy'],10000)) then
begin
sleep(10+random(20));
end else
begin
Writeln('Out of Herbs, logging out');
Writeln('Successfully Cleaned ' + inttostr(inventories) + ' inventories of herbs.');
if (BankScreen) then
CloseBank;
ExitToLobby;
TerminateScript;
end;
end;
end;
else
begin
if (WaitOptionMulti(['Withdraw-All Grimy','All Grimy'],10000)) then
begin
sleep(20+random(20));
end else
begin
MouseBankSlot(1,mouse_right);
if (WaitOptionMulti(['Withdraw-All Grimy','All Grimy'],10000)) then
begin
sleep(20+random(20));
end else
begin
Writeln('Out of Herbs, logging out');
Writeln('Successfully Cleaned ' + inttostr(inventories) + ' inventories of herbs.');
if (BankScreen) then
CloseBank;
ExitToLobby;
TerminateScript;
end;
end;
end;
end;
case random(200) of
0..10:
begin
MouseBankSlot(1,mouse_right);
WaitOptionMulti(['Withdraw-All', 'All'],2000);
end;
end;
end;
if not(BankScreen) then
begin;
OpenChest();
Bank;
CloseBank;
end;
end;
Procedure CleanHerb;
begin
if (HorV=1) then
RunHorV:=1;
if (HorV=2) then
RunHorV:=2;
if (HorV=3) then
RunHorV:=(random(2)+1);
if not InvFull then
begin;
OpenChest();
Bank;
CloseBank;
sleep(150+random(200));
end;
if invfull then
begin
FMMouse(580,226,10,10);
GetMousePos(x,y);
sleep(100+random(50));
if (RunHorV=1) then
begin
c1:=0;
r1:=0;
FMouse(x,y,0,0,true);
sx:=x;
sy:=y;
HerbsCleaned:=HerbsCleaned+1
sleep(CleanSpeed+random(10));
MouseSpeed:=30;
repeat
repeat
sx:=sx+43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
c1:=c1+1;
HerbsCleaned:=HerbsCleaned+1
until (c1=3);
sy:=sy+36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
c1:=0;
HerbsCleaned:=HerbsCleaned+1
repeat
sx:=sx-43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
c1:=c1+1;
HerbsCleaned:=HerbsCleaned+1
until (c1=3);
sy:=sy+36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
c1:=0;
r1:=r1+1;
HerbsCleaned:=HerbsCleaned+1
until (r1=3);
repeat
sx:=sx+43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
c1:=c1+1;
HerbsCleaned:=HerbsCleaned+1
until (c1=3);
end;
Proggy;
if (RunHorV=2) then
begin
GetMousePos(x,y);
FMouse(x,y,0,0,true);
MouseSpeed:=30;
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=0;
r1:=0;
sx:=x;
sy:=y;
repeat
sy:=sy+36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=c1+1;
until (c1=6);
sx:=sx+43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=0;
repeat
sy:=sy-36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=c1+1;
until (c1=6);
sx:=sx+43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=0;
repeat
sy:=sy+36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=c1+1;
until (c1=6);
sx:=sx+43;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=0;
repeat
sy:=sy-36;
FMouse(sx,sy,0,0,true);
sleep(CleanSpeed+random(10));
HerbsCleaned:=HerbsCleaned+1
c1:=c1+1;
until (c1=6);
proggy;
end;
if (HorV>3) then
begin
writeln('HORV must be 1 or 2');
if (BankScreen) then
CloseBank;
ExitToLobby;
TerminateScript;
end;
inventories:=inventories+1;
MouseSpeed:=CustomMouseSpeed;
antiban;
sleep(200+random(200));
end;
end;
Procedure CheckInv;
begin
WaitInvCount(28,1000,(ExactCT));
if not(InvFull) then
begin
OpenChest;
Bank;
CloseBank;
CheckInv;
end;
end;
begin
Smart_Members := True;
Smart_Server := SERVER;
SetupSRL;
DeclarePlayers;
if not(LoggedIn) then
LogInPlayer;
while not(LoggedIn) do
sleep(2500);
if not(IsXPBarOpen) then
ToggleXPBar(True);
startingxp:= GetXPBarTotal;
writeln(GetXPBarTotal);
Setup;
repeat
OpenChest();
Bank;
CloseBank;
AntiBan;
CheckInv;
CleanHerb;
until (inventories >= NumberOfInventories);
Writeln('Successfully Cleaned ' + inttostr(NumberOfInventories) + ' inventories of herbs!');
ExitToLobby;
end.I also write the "MouseBankSlot" procedure that's in the core bank include:
(*
MouseBankSlot
~~~~~~~~~~~~~
.. code-block:: pascal
procedure MouseBankSlot(BankSlot, Action: integer);
.. note::
by Fwd Motion
Last Modified: Feb. 09, 2012 by Fwd Motion
Example:
.. code-block:: pascal
MouseBankSlot(1, mouse_Right);
if (WaitOption('ithdraw-All', 500)) then
Writeln('Withdrew item');
*)
procedure MouseBankSlot(BankSlot, Action: integer);
var
BankBox: TBox;
X, Y: Integer;
begin
BankBox := BankIndexToMSBox(BankSlot);
GetMousePos(X, Y);
if (not PointInBox(Point(X, Y), BankBox)) then
MouseBox(BankBox.X1, BankBox.Y1, BankBox.X2, BankBox.Y2, Action);
end;I also got the info for the new bank in taverly for the OpenBankFast include:
'tavb', 'taverly bank': begin UpText := ['ount','unte','oun','unter'];
Info := [MSCX, MSCY, 3556433, 7, 0.20, 0.20, 100, False, 10, 10];
end;I've also written an UNF Potion maker, which I have no released to the public to keep prices from diving. (Will release in members if I am accepted though, obvously):
program UNFMaker;
{$DEFINE SMART}
{.include srl/srl.simba}
var x,y,startingxp,inventories,Unfs,antibans,OpeningChest,MakingUNFs,MakingUNFs2:integer;
const
(************--------------------SETUP-----------------------------************)
Server = 6; // What world?
NumberOfInventories = 4936; // How many inventories?
CustomMouseSpeed = 14; // Custom MouseSpeed
BankPin = '0000'; // Enter you bankpin here, leave if you don't have one.
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
Players[0].Name := ''; // Username?
Players[0].Pass := ''; // Password?
Players[0].Nick := ''; // 3 letters of your username (not the first letter)
Players[0].Active := True;
end;
(************---------------------END SETUP------------------------************)
Function XPPerHour(runtime,gained:integer):String;
begin
result:=inttostr(Round((gained * 3600) / (runtime / 1000)));
end;
function OpenBankChestEdge2(Location: Integer): Boolean;
var
bo, i, l, z: Integer;
Info: TVariantArray;
Chests: TPointArray;
AChests: T2DPointArray;
UpText: TStringArray;
B: TBox;
begin
result := false;
if (not LoggedIn) then
Exit;
if BankScreen or PinScreen then
begin
Result := True;
Exit;
end;
UpText := ['Bank', 'chest', 'nk che'];
{ 0 1 2 3 4 5 6 7 8 9 10 }
case Location of { Sort X Sort Y Color Tol Hue Sat Count SplitTPA? W H Compass}
SRL_BANK_SW : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 's'];
SRL_BANK_CW : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 'n'];
SRL_BANK_B : Info := [MSCX , MSCY, 10198185, 21, 0.08, 0.25, 50, True , 10, 10, 'n'];
SRL_BANK_GG : Info := [MSCX , MSCY, 5921630, 9 , 0.47, 0.08, 50, True , 10, 10, 'n'];
else
begin
srl_Warn('OpenBankChestEdge', 'Unknown bank: '+IntToStr(Location), warn_AllVersions); //will output loc as int (no longer string)
Exit;
end;
end;
MakeCompass(Info[10]);
//SetAngle(SRL_ANGLE_HIGH); //??
z := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(Info[4], Info[5]);
FindColorsSpiralTolerance(Info[0], Info[1], Chests, Info[2], MSX1, MSY1, MSX2, MSY2, Info[3]);
ColorToleranceSpeed(z);
SetColorSpeed2Modifiers(0.2, 0.2);
{ Split to ATPA. }
if Info[7] then
AChests := SplitTPA(Chests, 3)
else
AChests := TPAtoATPA(Chests, 10);
Chests := [];
{ Go through ATPA. }
l := GetArrayLength(AChests) -1;
for i := 0 to l do
begin
{ Too few pixels. }
if (Length(AChests[i]) < Info[6]) then
Continue;
{ Too small TPA bounds. }
B := GetTPABounds(AChests[i]);
If ((B.X2 - B.X1) < Info[8]) Or ((B.Y2 - B.Y1) < Info[9]) Then
Continue;
Inc(bo);
SetArrayLength(Chests, bo);
Chests[bo-1] := MiddleBox(GetTPABounds(AChests[i]));
end;
SortTPAFrom(Chests, Point(Info[0], Info[1]));
l := GetArrayLength(Chests) -1;
for i := 0 to l do
begin
MMouse(Chests[i].X, Chests[i].Y, 3, 3);
if WaitUpTextMulti(UpText, 1000) Then
begin
GetMousePos(Chests[i].X, Chests[i].Y);
Case Random(9) of
0..7: Mouse(Chests[i].X, Chests[i].Y, 0, 0, mouse_left);
8: begin
Mouse(Chests[i].X, Chests[i].Y, 0, 0, mouse_right);
if not WaitOptionMulti(['Use', 'se'], 1000) then Exit;
end;
end;
end;
end;
end;
function WaitBankScreen(Time:integer): Boolean;
var
T: Integer;
begin
Result := false;
T := GetSystemTime + Time;
while (GetSystemTime < T) do
begin
if (BankScreen) then
begin
Result := True;
Exit;
end;
Wait(20 + Random(20));
end;
end;
Procedure OpenChest;
begin
MarkTime(OpeningChest);
repeat
MakeCompass('S');
case random(200) of
0..25:
MissMouse(240+random(25),190+random(15));
else
begin
MouseBox(245,190,280,215,Mouse_move);
end;
end;
if not(BankScreen) then
begin
if(WaitUpTextMulti(['ban','hes','hest','est'],1000)) then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,true);
end;
end;
case random(1000) of
0..500:
MMouse(370,305,30,30)
end;
until (WaitFunc(@BankScreen,50,1000)) or (TimeFromMark(OpeningChest) > 5000)
if (TimeFromMark(OpeningChest) > 5000) then
begin
MakeCompass('S');
MouseBox(245,190,280,215,Mouse_move);
sleep(200+random(150));
ClickMouse2(mouse_right);
WaitOptionMulti(['Use Bank','Bank Chest','nk Chest'],5000);
sleep(1000+random(200));
if (BankScreen) then
begin
Exit;
end else
begin
writeln('Couldn`t open chest, please tell Fwd Motion that his method didn`t work :P');
ExitToLobby;
TerminateScript;
end;
end;
end;
procedure antiban;
begin
case random(1500) of
0..25:
begin
MissMouse(255,200);
antibans:=antibans+1;
end;
26..51:
begin
sleep(2000+random(3000));
antibans:=antibans+1;
end;
800..825:
begin
SleepAndMoveMouse(2000+random(2000));
antibans:=antibans+1;
end;
end;
end;
Procedure Setup;
begin
if(BankScreen) then
begin
CloseBank;
sleep(300+random(300));
end;
MouseBox(644,168,669,202,1);
SetAngle(0);
MakeCompass('s');
end;
Procedure Bank;
begin
if (PinScreen) then
InPin(BankPin);
if (WaitBankScreen(2000)) then
begin
QuickDeposit(SRL_DEPOSIT_ALL)
FixBank;
MouseBankSlot(1,mouse_Right);
if (WaitOptionMulti(['Withdraw-14 Clean','14 Clean'],2000)) then
begin
MouseBankSlot(2,mouse_Right);
case random(3000) of
0..1000:
begin
WaitOptionMulti(['Withdraw-14 Vial','14 Vial'],2000)
end;
1001..2000:
begin
WaitOptionMulti(['All but one Vial','but one Vial', 'one Vial'],2000);
end;
else
begin
WaitOptionMulti(['Withdraw-All Vial','All Vial'],2000);
end;
end;
end else
begin
MouseBankSlot(1,mouse_Right);
if (WaitOptionMulti(['Withdraw-X Clean','X Clean'],2000)) then
begin
sleep(1000+random(500));
TypeSend('14');
WaitInvCount(14,2000,ExactCt);
MouseBankSlot(2,mouse_Right);
if (WaitOptionMulti(['Withdraw-14 Vial','14 Vial'],2000)) then
begin
sleep(10+random(40));
end;
end;
end;
end else
begin
OpenChest;
Bank;
end;
end;
Procedure CheckInv;
begin
WaitInvCount(28,1000,(ExactCT));
if not(InvFull) then
begin
OpenChest();
Bank;
CloseBank;
CheckInv;
end;
end;
Procedure MakeUNFs;
begin
MarkTime(MakingUNFs);
repeat
InvMouse(9+random(5),3);
sleep(10+random(300));
if (WaitUpTextMulti(['clean','lean','ean','uam','till','omin','ander','narr','flax','eed','rit','gali','toe','arm','ragon','ntine','dyme','stol','talk'],1000)) then
begin
ClickMouse2(true);
end else
begin
OpenChest();
Bank;
CloseBank;
MakeUNFs;
end;
InvMouse(15+random(5),3);
if (WaitUpTextMulti(['vial','ial','ater','water','ter','of'],1000)) then
begin
ClickMouse2(true);
end else
begin
OpenChest();
Bank;
CloseBank;
MakeUNFs;
end;
MMouse(255,430,50,20);
if (WaitUpTextMulti(['Make All','ake','All'],2000)) then
begin
GetMousePos(x,y);
ClickMouse2(true);
end else
begin
OpenChest();
Bank;
CloseBank;
MakeUNFs;
end;
sleep(2000+random(1000));
until not(InvFull) or (TimeFromMark(MakingUNFs) > 10000);
If (TimeFromMark(MakingUNFs) > 10000) then
Exit;
MarkTime(MakingUNFs2);
repeat
case random(3500) of
0..10:
begin
HoverSkill('random',false);
antibans:=antibans+1;
end;
50..100:
begin
MMouse(240,240,200,200);
antibans:=antibans+1
end;
101..350:
begin
MouseBox(245,190,280,215,Mouse_move);
antibans:=antibans+1
end;
351..420:
begin
SleepAndMoveMouse(1000+random(200));
antibans:=antibans+1
end;
end;
if InvFull then
begin
OpenChest;
Bank;
CloseBank;
CheckInv;
MakeUNFs;
Exit;
end;
until (InvCount=14) or (TimeFromMark(MakingUNFs2) > 8500);
UNFs:=UNFs+14
inventories:=inventories+1
ClearDebug;
case random(2000) of
0..25: sleep(5000+random(10000));
end;
Writeln('******************UNF Potion Creator*****************');
Writeln('********************By Fwd Motion********************');
Writeln('Running for: ' + TimeRunning);
Writeln('UNFs Created: ' + inttostr(unfs));
Writeln('UNFs Created/Hour: ' + XPPerHour(GetTimeRunning,unfs));
Writeln('Antibans: ' + inttostr(antibans));
Writeln('*****************************************************');
end;
begin
Smart_Members := True;
Smart_Server := SERVER;
SetupSRL;
DeclarePlayers;
if not(LoggedIn) then
LogInPlayer;
while not(LoggedIn) do
sleep(2500);
MouseSpeed:=CustomMouseSpeed;
Setup;
repeat
OpenChest();
Bank;
CloseBank;
CheckInv;
MakeUNFs;
antiban;
until (inventories >= NumberOfInventories);
Writeln('Successfully Created ' + inttostr(NumberOfInventories) + ' inventories of UNFs!');
ExitToLobby;
end.
I've also been working on an AIO Thiever, but its still practically a skeleton.
Along with all of that, I also was able to figure out how to get the proper updates for the sps images: http://villavu.com/forum/showthread.php?t=74442