SRL Archive - First Scripts

de B's Urn Maker


mat_de_b

2011-06-01 06:17:31

Description
Makes urns south of Varrock East Bank about 600 urns an hour.
The only non random problem is a door that shuts at random intervals. The script uses reflection to find out its state and then uses find obj to open the door. It has a 100% success rate so far.


Features
- Make any urn
- EXP/hour or Cash/hour you choose which you want the most of
- Members or non members (will make urns appropriately)
- Reflection walking

Unfortunately
- There are very few fail safes :S I can put them in but I didn't need them and it was running fine
- No antiban… All the time you're waiting making anything you mouse just stays still unless you level up.

program UrnMaker;
{$DEFINE SMART}
{$I srl\srl.scar}
{$i reflection\reflection.simba}

Var
x, y, LoadsDone ,BreakLoads, WaitTime, Oven, Tol, Wheel, BreakTime, DoorCol,
Banker, PlayersLevel, EXPGained, EXPGain : Integer;

procedure DeclarePlayers;
begin
Banker := 4272696 ;
DoorCol:= 2440260 ;
Wheel := 8158337 ;
Oven := 1524643 ;
Tol := 4 ;
HowManyPlayers := 1;
CurrentPlayer := 0;
NumberOfPlayers(HowManyPlayers);

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal'];
Active := True;
Booleans[0] := True ; // True -Take Breaks, False- Don't
Booleans[1] := True ; // If you have membership put true
Booleans[2] := False ; // True = Max Cash/hour----False = Max Exp/Hour
Integers[0] := 4001 ; // how much clay in Bank (how many you want Done)
Integers[1] := 30 ; // Break length in minutes (use a 2:1 work:break ratio, 14 urns takes just over 3 minutes)
Integers[2] := 20 ; // Number of Invo's till break
Integers[3] := 56 ; // Crafting level
end;
end;

procedure ProgressReport;
begin
writeLn('======================');
writeLn('= de Bs Fountain User =');
writeLn('----------------------');
WriteLn(' Players Level = '+IntToStr(Players[CurrentPlayer].Integers[3]));
writeLn(' Urns made = '+IntToStr(LoadsDone));
writeLn(' EXP made = '+IntToStr(EXPGained));
WriteLn(' Total Time Running = '+TimeRunning);
WriteLn(' Next Break In '+IntToStr((Players[CurrentPlayer].Integers[2]) - BreakLoads)+' Inventories');
writeLn('----------------------');
writeLn('======================');
end;

Procedure DomsLogout;
Begin
If HowManyPlayers = 1 Then
Begin
Logout;
ProgressReport;
WriteLn('Broke or finished work');
TerminateScript;
End else
Begin
ProgressReport;
NextPlayer(True);
WriteLn('Broke or finished work');
WriteLn('Switching Player');
End;
End;

Procedure Cooking;
Begin
Mouse(90, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Fishing;
Begin
Mouse(193, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Mining;
Begin
Mouse(302, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Smelting;
Begin
Mouse(408, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Woodcutting;
Begin
Mouse(478, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Prayer;
Begin
MoveMouse(497, 424);
Wait(1000+Random(100));
Mouse(427, 430, 10,10, true);
Wait(1200+Random(100));
End;

Procedure Slot1;
Begin
Mouse(100, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Slot2;
Begin
Mouse(220, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Slot3;
Begin
Mouse(340, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Slot4;
Begin
Mouse(470, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Slot5;
Begin
MoveMouse(496, 430);
Wait(2000+Random(100));
Mouse(420, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Prayer2;
Begin
Mouse(258, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure Prayer3;
Begin
Mouse(343, 430, 10,10, true);
Wait(200+Random(100));
End;

Procedure MakeUrns;
Var Tries, WaitLength : integer;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
WriteLn('Making Urns');
WaitLength := 0
Tries := 0
EXPGain := 0
Repeat
FindObj(x, y, 'otter', Wheel, Tol);
Wait(1000);
Tries := Tries + 1
Until(FindObj(x, y, 'otter', Wheel, Tol) or (Tries = 5));
If Tries = 5 Then DomsLogout;
InvMouse(5,1);
FindObj(x, y, 'otter', Wheel, Tol);
Mouse(x, y, 0, 0, True);
Wait(2000+Random(500));
Mouse(135, 430, 10, 10, True);
Wait(1000+Random(100));
Case PlayersLevel of

1: Begin
Smelting;
Slot1;
EXPGain := (286/10)
End;

2..3: Begin
Cooking;
Slot1;
EXPGain := 30
End;

4..11: Begin
WoodCutting;
Slot1;
EXPGain := (385/10)
End;

12..14: Begin
Cooking;
Slot2;
EXPGain := 40
End;

15..16: Begin
Fishing;
Slot2;
EXPGain := 50
End;

17..25: Begin
Mining;
Slot2;
EXPGain := 53
End;

26..31: Begin
Prayer;
Prayer2;
EXPGain := (625/10)
End;

32..34: Begin
Mining;
Slot3;
EXPGain := 68
End;

35: Begin
Smelting;
Slot3;
EXPGain := 70
End;

36..41: Begin
Cooking;
Slot3;
EXPGain := (714/10)
End;

42..43: Begin
Fishing;
Slot3;
EXPGain := 78
End;

44..48: Begin
Woodcutting;
Slot3;
EXPGain := 80
End;

49..50: Begin
Smelting;
Slot4;
EXPGain := (846/10)
End;

51..52: Begin
Cooking;
Slot4;
EXPGain := (908/10)
End;

53..58: Begin
Fishing;
Slot4;
EXPGain := 92
End;

59..60: Begin
Mining;
Slot5;
EXPGain := 95
End;

61: Begin
Woodcutting;
Slot4;
EXPGain := 92
End;

62..75: Begin
Prayer;
Slot3;
EXPGain := 100
End;

76..80: Begin
Fishing;
Slot5;
EXPGain := 120
End;

81..99: Begin
Cooking;
Slot5;
EXPGain := 130
End;
End;
Repeat
Wait(500);
WaitLength := WaitLength +500
FindNormalRandoms;
FindNonInventoryRandoms;
If ClickContinue(False,False) Then
Begin
ClickToContinue;
WaitLength := WaitLength -500
Players[CurrentPlayer].Integers[3] := Players[CurrentPlayer].Integers[3] +1
End;
Until(WaitLength = 18500);
End;

Procedure FireUrns;
Var Tries, WaitLength : integer;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
WriteLn('Firing Urns');
WaitLength := 0
Tries := 0
MakeCompass('S');
Repeat
FindObj(x, y, 'ottery', Oven, Tol);
Wait(1000);
Tries := Tries + 1
Until(FindObj(x, y, 'ottery', Oven, Tol) or (Tries = 5));
If Tries = 5 Then DomsLogout;
InvMouse(5,1);
FindObj(x, y, 'ottery', Oven, Tol);
Mouse(x, y, 0, 0, True);
Wait(2000+Random(500));
MouseBox(283, 449,240, 401,1);
Repeat
Wait(500);
WaitLength := WaitLength +500
FindNormalRandoms;
FindNonInventoryRandoms;
If ClickContinue(False,False) Then
Begin
ClickToContinue;
WaitLength := WaitLength -500
Players[CurrentPlayer].Integers[3] := Players[CurrentPlayer].Integers[3] +1
End;
Until(WaitLength = 51500);
End;

Procedure OpenDoor;
var Door: TRSObject;
Begin
WriteLn('Checking Door State');
Door := GetWallObjectAt(Point(3259, 3400));
If Door = NULL_RSOBJECT Then
Begin
WriteLn('Door Is Open');
End
Else
Begin
WriteLn('Seems to be a door in the way');
MakeCompass('W');
Wait(800+Random(100));
FindObj(x, y, 'oor', DoorCol, Tol);
Mouse(x, y, 0, 0, True);
MakeCompass('N');
WriteLn('Door Is Open');
Wait(1000+Random(200));
End;
End;

function ToTheRoom: TPointArray;
begin
SetLength(Result, 3);

Result[0] := Point(3255, 3421);
Result[1] := Point(3259, 3408);
Result[2] := Point(3259, 3399);
end;

function ToTheBank: TPointArray;
begin
SetLength(Result, 3);

Result[0] := Point(3259, 3399);
Result[1] := Point(3259, 3408);
Result[2] := Point(3255, 3421);
end;

Procedure WalkToBank;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
WriteLn('Walking to the bank');
OpenDoor;
MakeCompass('N');
WalkPath(ToTheBank);
End;

Procedure WalkToRoom;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
WriteLn('Walking to the room');
MakeCompass('N');
WalkPath(ToTheRoom);
OpenDoor;
End;

Procedure OpenBanker;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
Repeat
R_OpenBankBooth('veb');
Wait(1000);
Until(R_Bankscreen);
End;

Procedure WithdrawClay;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
If Not Bankscreen then
Begin
WriteLn('opening Bank');
OpenBanker;
Wait(1000+Random(100));
End;
Repeat
R_WithdrawItem(1761,0);
Until(R_InvFull);
End;

Procedure DepositUrns;
Begin
FindNormalRandoms;
FindNonInventoryRandoms;
If Not Bankscreen then
Begin
WriteLn('opening Bank');
OpenBanker;
Wait(1000+Random(100));
End;
WriteLn('Depositing Urns');
Repeat
R_DepositAll(True);
Until(R_InvEmpty);
End;

Procedure CheckEXP;
Begin
EXPGained := EXPGained + EXPGain
EXPGain := 0
End;

Procedure CheckLevel;
Begin
If (Players[CurrentPlayer].Booleans[3]) And (Players[CurrentPlayer].Booleans[1]) Then
Begin
If (Players[CurrentPlayer].Integers[3]) >= 51 Then PlayersLevel := 51 ;
If (Players[CurrentPlayer].Integers[3]) <= 51 Then PlayersLevel := (Players[CurrentPlayer].Integers[3]);
End;

If (Players[CurrentPlayer].Booleans[3]) And (Players[CurrentPlayer].Booleans[1]) = False Then
Begin
If (Players[CurrentPlayer].Integers[3]) >= 36 Then PlayersLevel := 36 ;
If (Players[CurrentPlayer].Integers[3]) <= 36 Then PlayersLevel := (Players[CurrentPlayer].Integers[3]);
End;

If Not (Players[CurrentPlayer].Booleans[3]) And (Players[CurrentPlayer].Booleans[1]) Then
Begin
PlayersLevel := (Players[CurrentPlayer].Integers[3]);
End;

If Not(Players[CurrentPlayer].Booleans[3]) And Not(Players[CurrentPlayer].Booleans[1]) Then
Begin
If (Players[CurrentPlayer].Integers[3]) >= 44 Then PlayersLevel := 44 ;
If (Players[CurrentPlayer].Integers[3]) <= 44 Then PlayersLevel := (Players[CurrentPlayer].Integers[3]);
End;

End;

Procedure Setup;
Begin
Smart_Server := 24;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
WriteLn('SRL Setup');
DeclarePlayers;
LogInPlayer;
Wait(3000);
MakeCompass('N');
setRun(True);
SetAngle(True);
FindNormalRandoms;
FindNonInventoryRandoms;
LoadsDone := 0 ;
BreakLoads := 0 ;
EXPGained := 0 ;
End;

Procedure TakeABreak;
Begin
If (Players[CurrentPlayer].Booleans[0]) And (BreakLoads >= (Players[CurrentPlayer].Integers[2])) Then
Begin
BreakTime := ((Players[CurrentPlayer].Integers[1])*1000*60+(RandomRange(10,30)*1000*60));
ProgressReport;
Logout;
WriteLn('Waiting for '+IntToStr(WaitTime/1000/60)+' Minutes');
Wait(WaitTime);
LogInPlayer;
BreakLoads := 0 ;
Wait(3000);
FindNormalRandoms;
FindNonInventoryRandoms;
End;
End;

begin
Setup;
CheckLevel;
Repeat
WithdrawClay;
WalkToRoom;
MakeUrns;
FireUrns;
WalkToBank
DepositUrns;
LoadsDone := LoadsDone +14;
BreakLoads := BreakLoads +1;
CheckEXP;
CheckLevel;
ProgressReport;
TakeABreak;
Until (LoadsDone = (Players[CurrentPlayer].Integers[0]));
ProgressReport;
DomsLogout;
end.

I have run this for multiple stretches I think a couple of hours each. Unfortunately urns don't sell as well as I thought on the GE. However this does make you around 30K or more an hour if you have a high crafting level.

Yeah so if you could check this out, perhaps run it yourselves it would be appreciated.

Thanks, Dom