SRL Archive - Senior News and General

Guide to Millions per hour in Runescape (members only)


JAD

2009-07-11 01:58:32

It is a simple concept, but I need to sell it over at zasz (and if there's a guide section here when the black market opens up) to help pay for community college. Please don't tell anyone about this, because it will become less profitable the more people who do it.

Anyways, it's simply making unfinished potions using herblore and selling them. I didn't reinvent the wheel, but some simple math reveals otherwise:


Today for example: clean cadantines were selling at minimum price instantly, and you could sell the unfinished potions at max price. Bought 10k clean cadantines at 1562. Sell the unfinished potions at 2007. Add in the 86 gp cost of a vial of water, and the cost comes out to 1648. So that's a total profit of 359 per potion.

By hand I can make a little over 3k potions per hour. 3000 * 359 comes out to like 1.2M per hour. Not bad right?

The other day I had bought clean ranarrs at 9715 each. Add in vial of water and cost comes out to 9800. I sold the unfinished potions for 11k even. 1.2k per potion multiplied by 3k = 3.6M per hour. That's rare though :p

Usually, higher priced potions can be more profitable (like snap dragons, dwarf weeds, ranarrs) because of a larger price range.

Anyways, simple but not many people do it so it's very profitable. You do not make money making unfinished potions though. Also, I have made about 600k per hour cleaning herbs too because I can clean 7k of them per hour.


Everybody thinks herblore looses money, but it doesn't :) I've autoed this for 3 weeks straight, 6 hours a day and didn't get banned. I think that scripts that don't walk are much less bannable then ones that do walk.

If any of you guys want to make a script that's faster then mine (which shouldn't be too hard because mine can be slow at times), post it here please.


Well there it is!

From: n3ss3s
If you post that guide here, I will fucking worship you. And your toes, I don't know if you're into that kind of stuff but anything goes for 3.6m/h ;)


Get on it N3ss3s ;)

Markus

2009-07-11 02:10:22

Loveya.

Cazax

2009-07-11 02:14:12

Epic guides are epic. I wish anything F2P would be that profitable :( or at least something decent. Nice method anyway.

HyperSecret

2009-07-11 02:44:29

Nice gonna test it out right now! Though doing this doesn't give you any herblore experience does it?

JAD

2009-07-11 03:05:50

From: HyperSecret
Nice gonna test it out right now! Though doing this doesn't give you any herblore experience does it?


That's why it's profitable :) Rich people don't feel like wasting the time to do the part that doesn't give experience (making unf potions), but because of this, we quickly become the rich :)

The Claw

2009-07-11 08:27:07

Sounds like the time for a script

JAD

2009-07-11 08:30:55

From: The Claw
Sounds like the time for a script


I was hoping an SRL master could write a super quick one? :) I have one that works fine, but I'm sure there's ways to make it go faster.

Boreas

2009-07-11 08:36:30

You could get the best of both worlds too. Imagine a script that sits by the GE to buy and sell materials, and that can look up prices (not through the GE, but with CurrentPrice). It could then determine that unfinished cadantines result in a profit of 359, and finished super defense potions result in a loss of 1274, and would then make 3.54874652 as many unfinished as finished to get free herblore xp (or more to get xp and profit). There could be a setting for break even, max money, or somewhere in between. I haven't played in a long time, but AFAIK gaining xp triggers randoms, so you might want to just stick with no xp and max money. But on the other hand, you do need to get xp to get the levels required to make unfinished potions that cost more. Anyone know if randoms are triggered by getting lots of xp, or getting lots of xp within a certain time period? If it's the latter, then the right ratio of evenly spaced out finished and unfinished would get xp and gp without many randoms.

JAD

2009-07-11 08:49:41

From: Boreas
You could get the best of both worlds too. Imagine a script that sits by the GE to buy and sell materials, and that can look up prices (not through the GE, but with CurrentPrice). It could then determine that unfinished cadantines result in a profit of 359, and finished super defense potions result in a loss of 1274, and would then make 3.54874652 as many unfinished as finished to get free herblore xp (or more to get xp and profit). There could be a setting for break even, max money, or somewhere in between. I haven't played in a long time, but AFAIK gaining xp triggers randoms, so you might want to just stick with no xp and max money. But on the other hand, you do need to get xp to get the levels required to make unfinished potions that cost more. Anyone know if randoms are triggered by getting lots of xp, or getting lots of xp within a certain time period? If it's the latter, then the right ratio of evenly spaced out finished and unfinished would get xp and gp without many randoms.


When I was autoing 6 hours a day every day, I maybe got 1 random every 3 days, sometimes every other day. So very very few. But I have an okay total level (like 1380 or something). When I started auto cleaning the herbs, I seemed to encounter quite a few more randoms as this gives experience.

Anyways, that sounds awesome though Boreas. The reason I wanted someone to make a super fast script too though was because right now my script does about 3 loads per minute (1 per 18 seconds I think it was, so more like 3 and a half loads per minute). Every second you can take off of 18 though is a 6% increase in profits, and if you're making 2M a hour, each second you take off is an extra 120k. Most people don't even make 120k in an hour of cutting yews.

I think that a better scripter than I could get the load time down to maybe 15 seconds or so, give or take. That really does sound cool though Boreas :)



Edit: Btw, if someone wants to post the fix for chooseoption for me here (If there is one right now) that would be great because I haven't been able to auto in a couple days :/

R0b0t1

2009-07-11 08:57:06

I honestly don't think it'll be around that long, hasn't Jagex been changing the prices so as to make you gather raw materials?

n3ss3s

2009-07-11 12:23:37

Do you need the same herblore level to make unfinished pots as the finished ones? E.g do you need 38 herblore to make unfinished ranarr pots?

EDIT: Lol at ur sig markus :p

the scar noob

2009-07-11 16:01:16

robot, ur signature is waaaay to big imo xP

Sir R. M8gic1an

2009-07-11 17:56:27

JAD, why not post your version so we can see if we can just simply speed it up, instead of writting it from scratch?

~RM

JAD

2009-07-11 21:10:23

From: Rasta Magician
JAD, why not post your version so we can see if we can just simply speed it up, instead of writting it from scratch?

~RM


Hmm, I suppose.

@R0bot, like I said above, I have been doing this for a little over a year now, and it has actually become more profitable.

My unf maker + cleaner:


//Enter pin on line 56 if you have one
program JADPotionMaker;
{.include srl/srl.scar}

var
x,y, PotNum: Integer;
count: Integer;

const
WhatBank = 'lb';
MaxPots = 9980;
////////////////////////////////////////////////////////////////////////////////

procedure DeclarePlayers;
begin
CurrentPlayer := 0;
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);

Players[0].Name := 'Sir Killler7';
Players[0].Pass := '';
Players[0].Nick := 'llle';
Players[0].Strings[0] := '';
Players[0].Active := True;

end;

procedure SoundAlarm;
begin
repeat
PlaySound('C:\WINDOWS\Media\tada.wav');
wait(5500);
until(False);
end;

function BankOpenCalls: Boolean;
begin
JADOption := true;
if(not(OpenBankGlass(lowercase(WhatBank),false,false)))then
begin
wait(1500+random(2500));
OpenBankQuiet(lowercase(WhatBank));
end;
result := bankScreen or pinScreen;
JADOption := false;
end;

procedure Bankopen;
var
Whatever: String;
c: Integer;
begin
if(not(LoggedIn))then
Exit;
FindNormalRandoms;
Whatever := ''; //Pin here
if(not(BankOpenCalls))then
begin
FindNormalRandoms;
wait(6000+random(10000));
if(not(BankOpenCalls))then
begin
Writeln('Unable to open bank... Terminating...');
SoundAlarm;
end;
end;
if(PinScreen)then
InPin(Whatever);
if(not(getColor(581,229) = 3424328))then
begin
MouseBox(386,300,406,312,1);
c := 0;
repeat //wait until inv empty
wait(80+random(100));
c := c + 100;
if(c > 1800 + random(1200))then
begin
DepositAll;
Break;
end;
until(getColor(581,229) = 3424328); //waits for first slot to be empty
end;
FixBank;
// if(FindColor(x,y,1612219,29,91,114,124))then
// begin
// Writeln('Gold is in first or second bank slot... Done!');
// TerminateScript;
// end;
MouseBox(48,102,60,110,2);
if(not(ChooseOption('14')))then
begin
wait(200+random(200));
ChooseOption('14');
end;
wait(40+random(120));
MouseBox(88,103,102,117,2);
if(not(ChooseOption('14')))then
begin
wait(150+random(200));
ChooseOption('14');
end;
CloseBank;
end;

procedure WaitWhileMaking;
var
TimeMarker: Integer;
randomNum: Integer;
begin
MarkTime(TimeMarker);
randomNum := random(3);
if(FindNormalRandoms)then
Exit;
while(ExistsItem(26))do
begin
if(randomNum > 0) and (TimeFromMark(TimeMarker) > 1+random(2000))then
begin
SleepAndMoveMouse(2500+random(3000));
RandomNum := 0;
end;
if(not(randomNum > 1))then
if(random(65) = 7)then
MouseBox(5,4,738,488,3);
wait(100+random(300));
if(random(6) = 3)then
if(FindNormalRandoms)then
Exit;
if(TimeFromMark(TimeMarker) > 15000 + random(3000))then
Exit;
end;
FindNormalRandoms;
wait(100+random(100));
PotNum := PotNum + 14;
end;



procedure StartPotionMaking;
var
i: Integer;
getOut: Boolean;
begin
if(not(LoggedIn) or (bankscreen))then
Exit;
i := 0;
if(not(ExistsItem(28)))then
begin
if(not(FindNormalRandoms))then
begin
for i := 1 to 16+random(6) do
begin
wait(100+random(100));
if(ExistsItem(27))then
break;
end;
end else
Exit;
end else
if(FindNormalRandoms)then
Exit;
if(not(InvFull))then
Exit;
MouseItem(14,true);
MarkTime(i);
if(not(FindColorTolerance(x,y,16777215,MIX1,MIY1,MIX2,MIY2,2)))then
begin
repeat
wait(100+random(250));
if(TimeFromMark(i) > 2000+random(2000) )then
begin
GetMousePos(x,y);
Mouse(x,y,0,0,true);
break;
end;
until(FindColorTolerance(x,y,16777215,MIX1,MIY1,MIX2,MIY2,2));
end;
MouseItem(15,true);
wait(100+random(250));
MouseBox(226,403,282,430,3);
i := 0;
getOut := false;
repeat
wait(100+random(100));
i := i + 1;
if(i > 16+random(5))then
begin
MouseBox(532,215,561,455,1);
MouseItem(14,true);
MouseItem(15,true);
wait(500+random(800));
MouseBox(226,403,282,430,3);
i := 0;
getOut := true;
end;
until(IsUpText('Make') or getOut = true);
if(not(IsUpText('Make')))then
begin
Writeln('Problem');
count := count + 1;
if(count > 1)then
begin
Writeln('Big problem. Terminating...');
SoundAlarm;
TerminateScript;
end;
Exit;
end else
count := 0;
GetMousePos(x,y);
Mouse(x,y,0,0,false);
if(not(ChooseOption('ll')))then
begin
wait(50+random(200));
ChooseOption('ll');
end;
WaitWhileMaking;
end;

begin
DeclarePlayers;
SetupSRL;
ActivateClient;
ClearDebug;
wait(400+random(400));
if(invFull)then
begin
StartPotionMaking;
WaitWhileMaking;
end;
repeat
BankOpen;
StartPotionMaking;
until(PotNum > MaxPots);
Writeln('Done!');
end.


program JADHerbCleaner;
{.include srl/srl.scar}

var
x,y, HerbNum: integer;
timesNotHerb: Integer;

const
WhatBank = 'fwb';
MaxHerbs = 1620;
////////////////////////////////////////////////////////////////////////////////
procedure DeclarePlayers;
begin
CurrentPlayer := 0;
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);

Players[0].Name := 'Sir Killler7';
Players[0].Pass := '';
Players[0].Nick := 'llle';
Players[0].Strings[0] := '';
Players[0].Active := True;

end;

procedure LoginCheck;
begin
if(LoggedIn)then Exit;
Writeln('Not Logged In... Terminating...');
TerminateScript;
end;

function BankOpenCalls: Boolean;
begin
JADOption := true;
if(not(OpenBankQuiet(lowercase(WhatBank))))then
begin
wait(1500+random(2500));
OpenBankFast(WhatBank);
end;
JADOption := false;
result := bankScreen or pinScreen;
end;

procedure Bankopen;
var c: Integer;
begin
LoginCheck;
FindNormalRandoms;

if(not(BankOpenCalls))then
begin
FindNormalRandoms;
wait(6000+random(11000));
if(not(BankOpenCalls))then
begin
Writeln('Unable to open bank... Terminating...');
TerminateScript;
end;
end;
//if(PinScreen)then
// InPin(Whatever);
if(not(getColor(581,229) = 3424328))then
begin
MouseBox(386,300,406,312,1);
c := 0;
repeat //wait until inv empty
wait(80+random(100));
c := c + 100;
if(c > 1800 + random(1200))then
begin
DepositAll;
Break;
end;
until(getColor(581,229) = 3424328); //waits for first slot to be empty
end;
FixBank;
if(FindColor(x,y,1612219,29,91,114,124))then
begin
Writeln('Gold is in first or second bank slot... Done!');
TerminateScript;
end;

MouseBox(48,102,60,110,2);
if(not(ChooseOption('All')))then
begin
wait(150+random(200));
ChooseOption('All');
end;
wait(300+random(400));
CloseBank;
end;

procedure CleanHerbs;
var i: Integer;
begin
LoginCheck;
if(not(ExistsItem(28)))then
begin
for i := 1 to 16+random(6) do
begin
wait(100+random(100));
if(ExistsItem(28))then
break;
end;
end;
FindNormalRandoms;
if(not(ExistsItem(1)) or not(ExistsItem(28)))then
begin
timesNotHerb := timesNotHerb + 1;
if(timesNotHerb > 1)then
begin
Writeln('Inv slot 1 isn''t a herb. Terminating...');
TerminateScript;
end;
Exit;
end else
timesNotHerb := 0;
MMouseItem(1);
if(not(IsUpText('lean')))then
begin
wait(100+random(200));
if(not(IsUpText('lean')))then
begin
wait(700+random(1500));
if(not(IsUpText('lean')))then
begin
FindNormalRandoms;
Writeln('Inv slot 1 isn''t a herb. Exiting...');
Exit;
end;
end;
end;
GetMousePos(x,y);
Mouse(x,y,0,0,true);
MouseItem(5,true);
MouseItem(9,true);
if(random(3) = 1)then
FindNormalRandoms;
MouseItem(13,true);
MouseItem(17,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(21,true);
MouseItem(25,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(26,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(22,true);
MouseItem(18,true);
MouseItem(14,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(10,true);
MouseItem(6,true);
MouseItem(2,true);
MouseItem(3,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(7,true);
MouseItem(11,true);
if(random(4) = 2)then
begin
MMouseItem(15);
if(not(IsUpText('lean')))then
begin
wait(700+random(1500));
if(not(IsUpText('lean')))then
begin
Writeln('Item 1 isn''t a herb. Terminating...');
TerminateScript;
end;
end;
GetMousePos(x,y);
Mouse(x,y,0,0,true);
end else
MouseItem(15,true);
MouseItem(19,true);
if(random(9) = 1)then
FindNormalRandoms;
MouseItem(23,true);
MouseItem(27,true);
if(random(8) = 1)then
FindNormalRandoms;
MouseItem(28,true);
MouseItem(24,true);
MouseItem(20,true);
if(random(9) = 1)then
FindNormalRandoms;
MouseItem(16,true);
MouseItem(12,true);
MouseItem(8,true);
if(random(9) = 1)then
FindNormalRandoms;
MouseItem(4,true);
HerbNum := HerbNum + 28;
end;

begin
DeclarePlayers;
SetupSRL;
ActivateClient;
ClearDebug;
wait(400+random(400));
if(invfull)then
CleanHerbs;
repeat
BankOpen;
CleanHerbs;
until(HerbNum > MaxHerbs);
Writeln('Done!');
end.

Since they were for me I didn't really make any DTM checks or anything. Just first 2 bank slots for unf, first for cleaner.


One thing that happens a lot is when it lags when it's at the bank screen, the mouse will choose the options to withdraw 14 of each, but since it was lagging, it didn't get the items. So then the script thinks it did, and closes the bank without the herbs/vials. That ends up wasting like 25 seconds of time.

Also, when I have it click the deposit all button, I have it wait until all the items are out of the inventory before going and withdrawing the first item. If it quickly right clicked the first item, moved to choose 14, and waited until the inventory emptied then that would be faster. Just noticed this.

JADOption is something I just put in SRL so that when banking I could have it right click the bank, move to use quickly, and wait until inventory was empty. This wasn't working out for some reason though (I don't remember why) so I stopped using it.

Markus

2009-07-12 00:29:08

I edited your pass out

n3ss3s

2009-07-12 01:16:31

This works pretty well, got 38 herblore today, too bad vials of waters ain't buying today…

EDIT: JAD what do u mean by this
You do not make money making unfinished potions though.
? You just proved you do lol

EDIT EDIT: This gets a whole lotta more efficient when you have 10M or something, so u dont have to be buying and selling all the time…

HyperSecret

2009-07-12 19:02:11

Have you guys noticed the rise in clean ranarr and ranarr unfishined potions? :)

JAD

2009-07-12 20:16:55

From: HyperSecret
Have you guys noticed the rise in clean ranarr and ranarr unfishined potions? :)


Yeah, they've been doing that before I even released this guide. Maybe an increase in demand for prayer potions for some reason caused this.

@N3ss3s, yes, it definitely helps when you can buy 10k of the herb and leave your auto go for a few hours. And I don't see where I said that above, but it was probably a typo; or sarcasm :p

R0b0t1

2009-07-13 00:47:34

So wait, I didn't read the guide before, but it's selling unfinished potions? Yeah, that's not new, although I did think Jagex nuked it with some price updates.


EDIT: Also there's this weird thing that makes people want to leak stuff if they buy it.

JAD

2009-07-13 00:52:23

From: R0b0t1
So wait, I didn't read the guide before, but it's selling unfinished potions? Yeah, that's not new, although I did think Jagex nuked it with some price updates.


EDIT: Also there's this weird thing that makes people want to leak stuff if they buy it.


I need the money more then I need the pixels, so I am really not too concerned about it being leaked. I've only been selling it to trusted people for the most part (belgin fish, Da 0wner is going to buy, Runescapian might buy unless he gets in here before then, and some others).

n3ss3s

2009-07-13 18:00:11

Well, to support your college funding, I'd say it'd be only fair to stall the process up a bit until he buys it ;)

Sir R. M8gic1an

2009-07-16 05:22:49

well here's my small version of the pot maker:

{==============================================================================]
[==============================================================================]
[ RM Default Script ]
[ By: Rasta Magician ]
[==============================================================================]
[ Features ]
[==============================================================================]
[ 1. Debug ]
[ 2. AntiRandoms ]
[ 3. AntiBan ]
[ 4. Multiplayer ]
[ 5. Resting ]
[ 6. Progress Report ]
[ 7. Local Control ]
[ 8. Responder ]
[ 9. Proggy To File ]
[ 10. ]
[==============================================================================]
[ Description ]
[==============================================================================]
[ ]
[ ]
[ ]
[ ]
[ ]
[==============================================================================]
[ How To Use ]
[==============================================================================]
[ ]
[ ]
[ ]
[==============================================================================]
[ Credits ]
[==============================================================================]
[ SRL Team ]
[==============================================================================]
[ RM Script by Rasta Magician ]
[==============================================================================]
[==============================================================================}


program RMScript;
//{.include srl/srl/misc/Smart.scar}
{.include srl/srl.scar}


Const
WorkTime = (30*60*1000); //10 mins
RestTime = (3*60*1000); //3 mins

SmartServer = 0;
SmartSigned = true;

UseDebug = True;
SaveProggyToFile = True;

ScriptName = 'RM Unf Pot Maker';
Version = '1.0';
BankName = 'veb';
var
Rested, Worked, Loads, Responses:integer;
ProggyStr: string;


//Declaring players
Procedure DeclarePlayers;
begin

NumberOfPlayers(1);
CurrentPlayer := 0;

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :='';
Players[0].Active := True;


end;

//Used for debugging and finding errors
Procedure RMDebug(s:string);
var name:string;
begin
if not UseDebug then exit;
try name := Players[CurrentPlayer].Name +' : '; except name:= '' end;
writeln(name+TheTime+' - '+s);
end;

Procedure Proggy; Forward;

//making sure we solve those annoying randoms :)
Function NoRandoms: boolean;
var
x, y:integer;
s:string;
begin
if not LoggedIn then exit;
Result := False;
GetMousePos(x, y);
if ClickToContinue then
begin
MMouse(x, y, 3, 3);
Result := True;
end;
if FindNormalRandoms then Result:=true;
if FindFight then
begin
//none of the run aways check for randoms....

case random(4) of
0: s:='n';
1: s:='w';
2: s:='s';
3: s:='e';
end;

RMDebug('running to ' + s + ' and waiting for 8 - 10 s');
RunTo(s, True);
SleepAndMoveMouse(RandomRange(8000, 10000));

case s of
'n': s:= 'S';
's': s:= 'N';
'w': s:= 'E';
'e': s:= 'W';
end;

RMDebug('Returning to ' + s);
RunTo(s, True);

Result:=True;

NoRandoms;
end;
end;



//Progress report
procedure Proggy;
var
JX2, i, i2:integer;
str: string;
begin
ClearReport;
SRLRandomsReport;

AddToReport('');
AddToReport('[====== '+Padr(ScriptName+' '+Version, 27)+' ======]');
AddToReport('[ By Rasta Magician ]');
AddToReport('[=========================================]');
AddToReport('[ ' + Padr('Written ' + (TheTime) + ' on ' + (TheDate(3)) + '.', 40) + ']')
AddToReport('[ '+ Padr(TimeRunning, 40)+']');
AddToReport('[ ' + Padr('Players: ' + IntToStr(PlayersActive)+ ' / ' + IntToStr(HowManyPlayers), 40) + ']');
AddToReport('[ ' + Padr('Current Player: ' + Players[CurrentPlayer].Nick, 40) + ']');
AddToReport('[ '+ Padr('Loads: '+IntToStr(Loads), 40)+']');
AddToReport('[ '+Padr('Rested: '+IntToStr(Rested), 40)+']');
AddToReport('[================== RM ===================]');

ProggyStr := '';
ProggyStr := ProggyStr + chr(13) + ('[====== '+Padr(ScriptName+' '+Version, 27)+' ======]');
ProggyStr := ProggyStr + chr(13) + ('[ By Rasta Magician ]');
ProggyStr := ProggyStr + chr(13) + ('[=========================================]');
ProggyStr := ProggyStr + chr(13) + ('[ ' + Padr('Written ' + (TheTime) + ' on ' + (TheDate(3)) + '.', 40) + ']');
ProggyStr := ProggyStr + chr(13) + ('[ '+ Padr(TimeRunning, 40)+']');
ProggyStr := ProggyStr + chr(13) + ('[ ' + Padr('Players: ' + IntToStr(PlayersActive)+ ' / ' + IntToStr(HowManyPlayers), 40) + ']');
ProggyStr := ProggyStr + chr(13) + ('[ '+ Padr('Loads: '+IntToStr(Loads), 40)+']');
ProggyStr := ProggyStr + chr(13) + ('[ '+Padr('Rested: '+IntToStr(Rested), 40)+']');
ProggyStr := ProggyStr + chr(13) + ('[================== RM ===================]');


AddToReport('[ P | A | L | Mins | Rand ' + Padl(']', 13));
AddToReport('[-----------------------------------------]');

ProggyStr := ProggyStr + chr(13) + ('[ P | A | L | Mins | Rand ' + Padl(']', 13));
ProggyStr := ProggyStr + chr(13) + ('[-----------------------------------------]');

for i:= 0 to HowManyPlayers - 1 do
begin
str := '[ ' + Padr(Players[i].Nick, 4) + ' | ';
if Players[i].Active then
str := str + 'T | '
else
str := str + 'F | ';

str := str + Padr(IntToStr(Players[i].Banked), 2) + ' | ' + Padr(IntToStr(Players[i].Worked), 5) +'| ';
str := str + Padr(Players[i].Rand, 16) + ' ]';
AddToReport(str);
ProggyStr := ProggyStr + chr(13) + str;
end;

str := ScriptName+' '+Version
i := length(str);
if (i mod 2) <> 0 then
i2 := 1;

AddToReport('[-----------------------------------------]');
AddToReport('[====== '+Padl('', 14 - Trunc(i/2)) + str + Padr('', 13 + i2 - Trunc(i/2))+' ======]');
AddToReport('[~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]');

ProggyStr := ProggyStr + chr(13) + ('[-----------------------------------------]');
ProggyStr := ProggyStr + chr(13) + ('[====== '+Padl('', 14 - Trunc(i/2)) + str + Padr('', 13 + i2 - Trunc(i/2))+' ======]');
ProggyStr := ProggyStr + chr(13) + ('[~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~]');

if SaveProggyToFile then
begin
JX2 := ReWriteFile((ScriptPath + ScriptName +' '+ Version + '.txt'), False);
WriteFileString(JX2, ProggyStr);
CloseFile(JX2);
RMDebug('Progress report saved to: ' + ScriptPath + ScriptName + ' ' + Version + '.txt');
end;
Disguise(' A: '+IntToStr(PlayersActive) + '/' + IntToStr(HowManyPlayers) +
' Loads: ' + IntToStr(Loads));
end;

//Antiban, basically just picks up the mouse, increases mouse speed
//clicks a tab and resets everything back to the original.
//just to make sure we stay logged in.
procedure FastSwitchTabs;
var x, y, i, h:integer;
begin
if not LoggedIn then exit;
RMDebug('Inactive Move');
GetMousePos(x, y);
PickUpMouse;
IncEx(MouseSpeed, 10);
i := GetCurrentTab;
repeat
h := 1+Random(12);
until(h <> i)
GameTab(h);
wait(500+Random(500));
GameTab(i);
MMouse(x, y, 3, 3);
DecEx(MouseSpeed, 10);
end;

//will take "Time" + Random(1000) to complete the action, will return to original angle
// By Rasta Magician, heavily based on RandomMovement by Krazy_Meerkat
// will always move the compass around unlike in RandomMovement
procedure CompassMove(Time:Integer);
var
Keys: array of Integer;
I: Integer;
Deg: Extended;
begin
if not LoggedIn then exit;
Keys := [VK_RIGHT, VK_LEFT];
I := Random(2);
ActivateClient;
Deg := rs_GetCompassAngleDegrees;
Wait(100 + random(50));
KeyDown(Keys[I]);
Wait(Round(Time/2) + random(500));
KeyUp(Keys[I]);
Wait(Round(Time/2) + random(500));
MakeCompass(FloatToStr(Deg));
end;

//Random Right Click Return by Rasta Magician,
//Will right-click anywhere on he main map, choose "Cancel" and return the
//mouse to it's original position
procedure RRClickReturn;
var x, y:integer;
begin
if not LoggedIn then exit;
IncEx(MouseSpeed, 7);
GetMousePos(x, y);
ActivateClient;
Mouse(MSX1, MSY1, MSX2, MSY2, False);
wait(100 + Random(50));
ChooseOption('ancel');
wait(50 + Random(100));
MMouse(x, y, 3, 3);
DecEx(MouseSpeed, 7);
end;

//just antiban with a percentage
Procedure AntiBan(percentage: integer);
var p: integer;
begin
if not Loggedin then exit;
if random(100) <= percentage then
begin
case random(14) of
0, 1: FastSwitchTabs;
2, 3: CompassMove(1000);
4, 5: RRClickReturn;
6, 7: SleepAndMoveMouse(2000);
8, 9: HoverSkill('random', false);
10, 11: DoEmote(Random(37)+1);
12, 13: PickUpMouse;
end;
RMDebug('Antiban');
end;
end;

//Used to set up all the necessary things before the script starts running
Procedure SetupScript;
begin
ClearDebug;
Disguise(ScriptName + ' ' + Version);

{$IFDEF srl_SMART}
Smart_Server := SmartServer;
Smart_Signed := SmartSigned;
Smart_Members := true;
Smart_SuperDetail := false;
{$ENDIF}

SetupSRL;
DeclarePlayers;



ActivateClient;
LoginPlayer;
end;


//for prepqring the playe and making sure he has all the requirements
procedure SetupPlayer;
begin
if not LoggedIn then exit;
SetGraphics(4, 'current', 'always', 'off', 'low', 'few', 'off', 'few', 'off');
MarkTime(Worked);
end;

//switching palyers, or in case of jsut one player making it rest
// "not playing" for a while decreases the chance of getting a lot of randoms
procedure SwitchPlayers;
begin
if TimeFromMark(Worked) >= (WorkTime + Random(3*60*1000)) then
begin
if PlayersActive > 1 then
NextPlayer(LoggedIn)
else begin
if not LoggedIn then exit;
LogOut;
RMDebug('resting....');
wait(RestTime);
ActivateClient;
LoginPlayer;
Inc(Rested);
MarkTime(Worked);
end;
SetupPlayer;
end;
end;

//Just a few things it does when the script ends.
procedure ScriptTerminate;
begin
Proggy;
writeln('');
writeln('Thank for using my script, Rasta Magician');
writeln('Script stopped at ' + TheTime + ' ' + TheDate(3));
end;

Function WaitInvCount(Count, MaxTime: integer): boolean;
var
T : integer;
begin
Result := false;
T := GetSystemTime + Maxtime;
while GetSystemTime < T do
begin
wait(10);
if InvCount = Count then
begin
Result := true;
break;
end;
end;
end;

begin
SetupScript;
LoginPlayer;
SetupPlayer;
SetAngle(true);
repeat
repeat
OpenBankQuiet(BankName);
if WaitFunc(@BankScreen, 1500) then break;
until(false);
DepositAll;
Withdraw(0, 0, 14);
wait(300 + Random( 300 ) );
Withdraw(1, 0, 14);
wait(350+random(200));
CloseWindow;
if not WaitInvCount(28, 1000) then
begin
LogOut;
TerminateScript;
end;

repeat
MouseItem(random(14)+1, true);
wait(350+random(200));
MouseItem(random(14)+15, true);
wait(400+ random(100));
Mouse((MCX1 + MCX2)/2, (MCY1 + MCY2)/2, 5, 5, false);
wait(200+random(100));
ChooseOption('All');
repeat
wait(500);
if GetColor(252, 463) = 16711680 then
begin
ClickToContinue;
break;
end;
until(InvCount <= 14);
until(InvCount <= 14);
SwitchPlayers;
until(false)
end.

but i just did 1k ranarr pots and they don't really seem to sell….

~RM

JAD

2009-07-16 05:29:09

From: Rasta Magician
but i just did 1k ranarr pots and they don't really seem to sell….

~RM


I haven't used ranarrs in a little while, but HyperSecret was telling me yesterday that he was making like 2.2M/Hour with them.

It's tough with them right now though because they are still going up in price so much.

And does anyone know why chooseoption is lagging my computer so much? My script and RM's both take about 8 seconds to choose an option each time. I don't understand it. I've never had this problem before, it just started happening with these new fonts and since I downloaded newest scar + srl. I don't think I've updated SRL before a few days ago since we started using subversion :p

But what could be causing this? It shouldn't be a computer problem, it's not the scripts fault, and I got a .rar file of Zeph's SCAR 3.21 folder (from Da 0wner who got it from Zeph), but that didn't help anything. I don't understand it…

HyperSecret

2009-07-17 00:09:38

Ranarr has been my choice of potion. I've been buying them at mid (10,806) and it takes a couple hours buying 4k-5k of them. Then I sell them the unfinished pots above mid at about 11,400 and leave those to sell for a day, if they don't ALL sell within 24 hours I drop the price down to 11,300 and the remaining sell. I sold 45M of unfinished pots @ 11,400. They sell just takes some time.

The Claw

2009-07-17 07:55:45

Hmm, how much profit did you make and how much cash did you start off with HyperSecret? I've got 30m to throw around, this might be a good idea

JAD

2009-07-17 07:59:27

From: The Claw
Hmm, how much profit did you make and how much cash did you start off with HyperSecret? I've got 30m to throw around, this might be a good idea


After getting scammed for all of my money on sythe except a few hundred k, I autoed 4-6 hours a day for 3 and a half weeks straight and got up to like 108M. So you can pretty easily pull in almost 30M a week if you auto pretty hard core :p

HyperSecret

2009-07-17 17:45:45

Well in the 4-5 days I did it I made easily 2-3M a day and that was just with spending an hour or two a day…I started with 4M and got up to 15M or so then I got my main banned from autoing (was doing this legitly).

Then I did it on my friends character, who already has 200M+. I made about 10M or so in another 3-4 days on that character.

Boreas

2009-09-13 07:27:18

Did the update affect this?

JAD

2009-09-13 07:43:43

http://itemdb-rs.runescape.com/results.ws?query=cadantine&price=all&members=

Cadantines = about 2M/hr right now

n3ss3s

2009-09-13 13:31:56

From: JAD
http://itemdb-rs.runescape.com/results.ws?query=cadantine&price=all&members=

Cadantines = about 2M/hr right now


Do you buy grimy or clean ones? Gonna make an investment for 66 herblore today :norris:

JAD

2009-09-13 20:19:18

From: n3ss3s
Do you buy grimy or clean ones? Gonna make an investment for 66 herblore today :norris:


Depends if I want experience, and if grimy are selling for cheaper than clean.

Just a tip to anybody who tries this, make sure to do your math!
-Buy 1 herb at instant
-Buy 1 vial of water at instant
-Make the unf
-Sell the unf at instant
-Calculate profits.

To maximize profits, you can buy for a little under what the instant buying price is, and sell a little above. This involves a little waiting, though.

Boreas

2009-09-14 03:07:01

What does buying at instant mean? Canceling an order that doesn't get filled instantly and then adjusting price until it does?

Ejjman

2009-09-14 03:40:41

From: Boreas
What does buying at instant mean? Canceling an order that doesn't get filled instantly and then adjusting price until it does?


I think so because then you can keep making money really fast. If you must wait for your things to sell/buy them cheap, you won't make money really fast.

JAD

2009-09-14 08:35:15

Well the ge works like this:

If you put in an offer for something at maximum price, and somebody already had an offer in to sell an item for less then that, then you will get the item right away, and get the difference back in gp.

So lets say you put in an offer for an item for 1k (max price). Somebody is already selling it at 900 gp. The GE will automatically give you 100 gp back. Same goes for selling. Put it in at minimum, and if somebody already had an offer in to buy for higher, the GE will give you more money.

Just see how much you can buy at max for, and how much you can sell at min for, by buying 1 at maximum (you should get money back in most cases), and selling 1 unf at min (you should get more money back then min in most cases).

Widget

2009-09-14 10:41:38

I think it's actually between the two, because I've sold things and gotten more than I put it up for.

Widget

2009-09-22 10:53:22

I swear, I'm too lazy to even open up SMART to write a script for this, but I wrote this part since it didn't directly involve RS :p
program ProfitChecker;
const
VialOfWater = 192;
var
Grimys, Unfinished: array of integer;
PGrimy, PUnfinished: array of integer;
Names: array of string;
Page: string;
i: integer;
begin
Grimys := [211, 215, 217, 199, 205, 209, 213, 2485, 201, 207, 3051, 12174,
203, 3049, 219]
Unfinished := [103, 107, 109, 91, 97, 101, 105, 2483, 93, 99, 3004, 12181,
95, 3002, 111]
SetArrayLength(Names, Length(Grimys));
SetArrayLength(PGrimy, Length(Grimys));
SetArrayLength(PUnfinished, Length(Grimys));
for i := 0 to High(Grimys) do
begin
page := GetPage('http://itemdb-rs.runescape.com/Guam_potion(unf)/viewitem.ws?obj='+intToStr(Grimys[i]))
PGrimy[i] := StrToIntDef(Trim(Replace(Replace(Replace(Between('<b>Market price:</b> ', #10, page), ',', ''), 'k', '00'), '.', '')), -1);
Writeln('Got '+Between('<div class="subsectionHeader">'+#10, #10, page));
Names[i] := Between('<div class="subsectionHeader">'+#10+'Grimy ', #10, page)

page := GetPage('http://itemdb-rs.runescape.com/Guam_potion(unf)/viewitem.ws?obj='+intToStr(Unfinished[i]))
PUnfinished[i] := StrToIntDef(Trim(Replace(Replace(Replace(Between('<b>Market price:</b> ', #10, page), ',', ''), 'k', '00'), '.', '')), -1);
Writeln('Got '+Between('<div class="subsectionHeader">'+#10, #10, page));
end;

ClearDebug;

Writeln('+--------------+--------+--------+--------+-------+');
Writeln('| Name | Grimy | Unf. | Profit | %Pft. |');
for i := 0 to High(Grimys) do
Writeln('| '+Padr(Names[i], 12)+' | '+Padr(IntToStr(PGrimy[i]), 6)+' | '+
Padr(IntToStr(PUnfinished[i]), 6)+' | '+Padl(IntToStr(PUnfinished[i]-PGrimy[i]-VialOfWater), 6)+' | '+
Padl(IntToStr(Round((PUnfinished[i]*1.0-PGrimy[i]-VialOfWater)/PUnfinished[i]*100)), 4)+'% |');
Writeln('+--------------+--------+--------+--------+-------+');
end.

n3ss3s

2009-09-25 20:58:22

Man, this is ownage, doing Cadantine Potions :) ~1,5m /h

Widget - I think the first GetPage string is wrong :p

Widget

2009-09-26 02:22:58

Er, didn't notice that, but it works anyway :p

marpis

2009-09-29 21:33:00

So this requires 66 herbalism and nothing else?
How come everyones not doing this because it's so simple?

JAD

2009-09-29 22:39:06

From: marpis
So this requires 66 herbalism and nothing else?
How come everyones not doing this because it's so simple?


Because not many have looked into it enough and do the math. This does require a little bit of thinking and calculations.

I've made over 3M/hr with only 30 herblore. 30+ herblore is required. The higher the better obviously, because it allows for more opportunities with different herbs.

marpis

2009-09-29 22:58:18

From: JAD
Because not many have looked into it enough and do the math. This does require a little bit of thinking and calculations.

I've made over 3M/hr with only 30 herblore. 30+ herblore is required. The higher the better obviously, because it allows for more opportunities with different herbs.


Amazing. Well now I know which skill I will level up first when I subscribe :)
Hope this still works in a month or two…

_ChArMz

2009-09-30 00:25:37

i dunno, it seems slow now, i invested 40m into dwarf weeds, now i cant sell the unf pots :(, been there for a day

marpis

2009-09-30 02:27:09

From: _ChArMz
i dunno, it seems slow now, i invested 40m into dwarf weeds, now i cant sell the unf pots :(, been there for a day


you should have tried which potions sell quickly :(

JAD

2009-09-30 04:27:08

From: _ChArMz
i dunno, it seems slow now, i invested 40m into dwarf weeds, now i cant sell the unf pots :(, been there for a day


Perfect example of why you MUST do your math. Buy 1 herb at instant, buy vial of water at instant, sell unf at instant. If the 1 unf doesn't sell, do a different herb.

I don't know how the shop update is going to affect this, due to rising vials of water prices. Good thing I had 180k of them stocked up before the update, but that will run out quickly..

_ChArMz

2009-09-30 05:21:48

From: JAD
Perfect example of why you MUST do your math. Buy 1 herb at instant, buy vial of water at instant, sell unf at instant. If the 1 unf doesn't sell, do a different herb.

I don't know how the shop update is going to affect this, due to rising vials of water prices. Good thing I had 180k of them stocked up before the update, but that will run out quickly..


I did my math first, and I did a fast 1k before this, sold instant @ above mid..

EDIT: LUCKY how much did u pay for those 180k vials

JAD

2009-09-30 05:34:47

From: _ChArMz
I did my math first, and I did a fast 1k before this, sold instant @ above mid..

EDIT: LUCKY how much did u pay for those 180k vials


Like 90 gp or less :p

That's unfortunate that happened with the dwarves. I rarely have that problem, but when I do, I just put the unfs up at min and do a different herb. It really does even out though, because sometimes the potions end up selling for less than you intended, and sometimes for more.

I would suggest taking a look at cadantines and lantadymes. Those are 2 pretty solid herbs usually.

_ChArMz

2009-09-30 06:11:01

From: JAD
Like 90 gp or less :p

That's unfortunate that happened with the dwarves. I rarely have that problem, but when I do, I just put the unfs up at min and do a different herb. It really does even out though, because sometimes the potions end up selling for less than you intended, and sometimes for more.

I would suggest taking a look at cadantines and lantadymes. Those are 2 pretty solid herbs usually.


well i buy vials @ 229 :(..so lantadymes would only be about 200 gp profit each, so ill have to go back to cads