SRL Archive - First Scripts

Deadlys' Air Tiara Crafter


Deadly Serious

2012-01-16 04:59:19

It is fully functional with SRL5

You need to download this to be able to use the script: http://villavu.com/forum/showthread.php?t=68112&highlight=objdtm+walking
Follow the instructions at the bottom of this page on how to download and install it correctly.


This is my first script, it crafts air tiaras and runs back to the bank to withdraw more tiaras and air talismans.

Why use this method?
This method is 2.5x faster then air runecrafting and you can do it at level 1 runecrafting!
The downside is it costs around 14.5gp per exp.

Important
Make sure your tiaras and talismans are visible in your bank when you first open it up, make sure there is no other runes visible in the bank/ bank tabs.
Better safe then sorry.

Start Point:

Recommended Set Ups
Light weight gear and air tiara equipped

Current Features
Rests at the musician when run energy is below 50%

Future Updates
Progress Reports (How long the script has been running, how many trips you've made and eventually runecrafting exp gained, Tiaras crafted, cash gained.)
Auto Updater and a downloadable link.

Known Bugs
Currently none!

Current Version:
Version 1: Released!


program Deadlys_Air_Tiara_Crafter;

{$i srl/srl/misc/smart.simba}
{$i SRL/SRL.simba}
//{.Include SRL\SRL\Misc\Debug.simba}
//{$i SRL/SRL/misc/paintsmart.simba}
{$i ObjectDTM/ObjDTMInclude.Simba}



Const //Yoho's
SERVER = ('54'); // Enter "0" to pick a random server.
MEMBERS = False; // Set to True if using a RS-Members account. False if F2P.
SRLStats_Username = ''; // Your SRL Stats Username
SRLStats_Password = ''; // Your SRL Stats Password
NumbOfPlayers= 1; //How many players are you using
StartPlayer= 0; //Player to start auoting with! (0 means first char)
Version = 1.1;

Var
Crafted:Integer;
aFound: Extended;

{*******************************************************************************
procedure DeclarePlayers;
By: SRL
Description: SRL's Player Setup
*******************************************************************************}
procedure DeclarePlayers;
var i:integer;
begin
NumberOfPlayers(2);
CurrentPlayer := 0;
for i := 0 to NumbOfPlayers-1 do
Players[i].BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal', 'une', 'oins'];

with Players[0] do
begin
Name :=''; // Name
Pass :=''; // Pass
Active := True; //True if you want this player to be ran in the script, false if not
* Pin := ''; * * * * * *// Leave blank if you have no pin.

with Players[1] do
begin
Name :=''; // Name
Pass :=''; // Pass
Active := True; //True if you want this player to be ran in the script, false if not
Pin := ''; // Leave blank if you have no pin.

end;
end;
end;

Procedure ObjSetup; //Euph's
begin;
ObjDTM_Setup;
end;

Procedure StatsGuise(wat:String); //Yoho's
Begin
Status(wat);
Disguise(wat);
End;

//Function CheckAndClick(X,Y:Integer):Boolean;
//By: YoHoJo
//Description: Moves mouse to x,y, checks for uptext, and clikcs if found
//*******************************************************************************}
Function CheckAndClick(X,Y:Integer):Boolean;
Begin
MMouse(x, y, 5, 5);
{Wait(100 + Random(50));
If CountUpColor('B', 41, 5, 86, 24, 70, 140) Then}
If WaitUpTextMulti(['Mine','ine'], 150) Then
Begin
Result:=True;
GetMousePos(x, y);
Mouse(x, y, 0, 0,True);
Wait(100+Random(50));
FFlag(0);
End;
End;

Procedure FailSafe(Reason:String); //Yoho's
begin
Players[CurrentPlayer].Loc:=reason;
Logout;
Terminatescript;
end;

Procedure HumanMMouse(eX, eY, ranX, ranY: Integer);
var
randSpeed: extended;
X,Y,X2,Y2,A,Dist,MP: integer;
begin
A := MouseSpeed;
GetMousePos(X, Y);
Dist := Distance(X, Y, eX, eY);
MP := Round(Dist/150);
if MP < 0 then
MP := 1;

randSpeed := (random(MouseSpeed) / 2.0 + MouseSpeed) / 10.0;
X2 := RandomRange(eX-(A*MP), eX+(A*MP));
Y2 := RandomRange(eY-(A*MP), eY+(A*MP));
WindMouse(X, Y, X2, Y2, 11, 8, 10.0 / randSpeed, 12.0 / randSpeed, 10.0 * randSpeed, 10.0 * randSpeed);
GetMousePos(X, Y);
MMouse(eX, eY, ranX, ranY);
MouseSpeed := A;
end;

Procedure Loadvars;
begin;
MouseSpeed := RandomRange(14, 18);
end;


Procedure Antiban; //I liked a few of Yoho's antibans, I implemented them here
Begin
Case Random(192) Of
0: HoverSkill('runecrafting', False);
1: Begin PickUpMouse; SleepAndMoveMouse(3000 + Random(500)); End;
2: IdleTime(100+random(700), 100+Random(100), 0.2+RandomE/2);
3: Begin GameTab(Tab_Stats); Wait(3000 + Random(500)); GameTab(Tab_Inv); End;
4: HoverSkill('random', False);
5: RandomMovement;
End;
end;

Procedure ProgressReport;
begin
Cleardebug;
Writeln('You have been crafting for:' + TimeRunning);
Writeln('Exp gained:' + IntToStr(Crafted*14*25));
end;

Procedure WithdrawTiara1;

var
Talisman, I, x, y:integer;
TPA : TPointArray;
ATPA : T2DPointArray;

begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

Begin;
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('W');
If (FindObjCustom(x,y,['Bank','nk','booth','oot'], [1717052], 5)) Then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(600+random(250));
ChooseOption('uickly');
Wait(2500+random(500));

end;


Talisman := DTMFromString('mlwAAAHicY2dgYDjLxMBwCYivAfEFID4KxSeAuJuRgaEOiDuBeBIQzwLiPiBuBeKywkKgbiasmAtI4sKMeDAUAAAlsQs2');
If FindDTM(Talisman, X, Y, MSX1, MSY1, MSX2, MSY2) Then
begin
Writeln('Withdrawing the Talismans');
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(300+random(250));
ChooseOption('X');
Wait(1000+random(250));
TypeSend('14');
end;


begin
FindColorsTolerance(TPA, 9406857, MSX1, MSY1, MSX2, MSY2, 5); // Thanks to Naums' Tutorial
ATPA := TPAToATPAEx(TPA, 30, 10);
For I := 0 To High(ATPA) Do
Begin
If MiddleTPAEx(ATPA[I], X, Y) Then
begin
Writeln('Withdrawing the Tiaras');
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(300+random(250));
ChooseOption('All');
Wait(500+random(250));
end;
end;
end;
FreeDtm(Talisman)
end;
end;

Procedure WithdrawTiara2;

var
Talisman, I, x, y:integer;
TPA : TPointArray;
ATPA : T2DPointArray;

begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

Begin;
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('W');
If (FindObjCustom(x,y,['Bank','nk','booth','oot'], [1717052], 5)) Then
begin
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(600+random(250));
ChooseOption('uickly');
Wait(2500+random(500));
DepositAll
end;

begin
Talisman := DTMFromString('mlwAAAHicY2dgYDjLxMBwCYivAfEFID4KxSeAuJuRgaEOiDuBeBIQzwLiPiBuBeKywkKgbiasmAtI4sKMeDAUAAAlsQs2');
If FindDTM(Talisman, X, Y, MSX1, MSY1, MSX2, MSY2) Then
begin
Writeln('Withdrawing the Talismans');
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(300+random(250));
ChooseOption('14');
Wait(1000+random(250));
end;


begin
FindColorsTolerance(TPA, 9406857, MSX1, MSY1, MSX2, MSY2, 5); // Thanks to Naums' Tutorial
ATPA := TPAToATPAEx(TPA, 30, 10);
For I := 0 To High(ATPA) Do
Begin
If MiddleTPAEx(ATPA[I], X, Y) Then
begin
Writeln('Withdrawing the Tiaras');
MMouse(X, Y, 5, 5);
ClickMouse2(False);
Wait(300+random(250));
ChooseOption('All');
Wait(500+random(250));
end;
end;
end;
FreeDtm(Talisman)
end;
end;
end;

function Walking(Color, Tolerance: Integer; SortFrom: tpoint): Boolean;
var
i, x, y, rx, ry: Integer;
TPA: TPointArray;
begin
if not LoggedIn then Exit;
FindNormalRandoms;
FindColorsSpiralTolerance(MMCX, MMCY, TPA, Color, MMX1, MMY1, MMX2, MMY2, Tolerance);
SortTPAFrom(TPA, SortFrom);

for i := 0 to High(TPA) do
begin
x := TPA[i].x;
y := TPA[i].y;

rx := RandomRange(-6, 6);
ry := RandomRange(-6, 6);
if (not rs_OnMinimap(x + rx, y + ry)) then
Continue;

Mouse(x + rx, y + ry, 0, 0, true);
FFlag(0);
Wait(200 + Random(500));
Result := True;
Break;
end;
end;

Procedure Walkies;

begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

begin
if (Walking(2570554, 15, Point(583, 38))) then
begin
Wait(1800+Random(500));
end;
end;
end;

procedure Resting;
var
X,Y: Integer;
s: String;
begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

begin
if (Not runenergy(50)) then
begin
If FindObjCustom(x, y, ['Talk', 'alk'], [14464635, 9469760, 4297607], 10) then
begin
Writeln('Listening to the blissful music')
Getmousepos(x, y)
begin;
MMouse(X, Y, 3, 3);
ClickMouse2(False);
Waitoption('isten', 3000);
Wait(8000+Random(5000));
RestUntil(80)
end;
end;
end;
end;
end;

procedure WalkToAlter; //Mine, that's rare
var
Path: TStringArray;
I: Integer;
begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

begin
Path:= ['568:98:5:1:7:613:100:1:7:625:122:1:7:588:117:0:7:647:111:1:7:647:61'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(2000+Random(500));

begin
Resting;
end;

begin
Path:= ['570:120:4:5:7:571:77:1:7:560:99:1:7:581:94:1:7:559:78'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(2000+Random(500));


Path:= ['566:117:4:1:7:576:103:3:7:582:128:1:7:593:103:1:7:606:115'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(3500+Random(1000));
end;
end;
end;

Procedure Enter;
var
X,Y: Integer;

begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

begin
If FindObjCustom(x, y, ['Ent', 'Enter'], [16631951, 16629135, 16171659, 14925721, 16499851], 15) then
begin
Writeln('Entered into the Mysterious rock formation')
Getmousepos(x, y)
if IsUpText('nter') then

Case random(11) of
0..10: begin
MMouse(X, Y, 8, 8);
ClickMouse2(True);
end;
// 9..10: begin;
// MMouse(X, Y, 5, 5);
//ClickMouse2(False);
// Waitoption('nter', 3000);



end;
end;
end;
end;
//end;

Procedure Crafting;
Var
x,y: integer;
begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;
ProgressReport;

begin
If FindObjCustom(x, y, ['raft', 'Rune'], [5591380, 5920344, 5723222, 5525587, 5525843, 5722966, 5723222], 3) then
begin
Writeln('Crafted Air runes')
Getmousepos(x, y)
if IsUpText('raft') then

Case random(11) of
0..10: begin
MMouse(X, Y, 15, 15);
ClickMouse2(True);
end;
// 9..10: begin;
// MMouse(X, Y, 15, 15);
// ClickMouse2(False);
// Waitoption('raft', 3000);

end;
end;
end;
end;
//end;

Procedure Waiting;

begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;

begin
Wait(5500+random(500));
end;
end;

Procedure Leave;
var
X,Y,I: Integer;
TPA : TPointArray;
ATPA : T2DPointArray;

Begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

begin
FindColorsTolerance(TPA, 5081226, MSX1, MSY1, MSX2, MSY2, 10); // Thanks to Naums' Tutorial
ATPA := TPAToATPAEx(TPA, 28, 28);
For I := 0 To High(ATPA) Do
Begin
If MiddleTPAEx(ATPA[I], X, Y) Then
begin
MMouse(X, Y, 2, 2);
ClickMouse2(True);
Writeln('Leaving the Mysterious rock formation');
Wait(4000+random(500));
End;
End;
End;
End;

Procedure BackToTheBank;
var
Path: TStringArray;
Alterarea, X, Y, I: Integer;
Begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;

AlterArea := DTMFromString('mwQAAAHic42RgYKhgYmCIBuIyIJ4GxDVAnAjEU4G4F4gzgTgcqC4CiK0YIOxiIM4F4mwgdoLiolRNhu7qIDCO9DdjiA40Z8hIUmWwNBVnqCnVAYtzAdURwoxEYDgAAF6XES8=');
if FindDTMRotated(AlterArea, x, y, 0, 0, 700, 500, -Pi, Pi, Pi/30, aFound) then
begin
leave;
end;

begin
Path:= ['685:61:4:3:7:631:39:1:7:673:69:1:7:676:39:1:7:661:77'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(2000+Random(500));

Path:= ['684:52:4:1:7:693:78:5:7:634:38:1:7:643:56:1:7:623:39'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(3000+Random(500));
begin
Resting;
end;
begin
Path:= ['675:49:4:1:7:666:69:1:7:678:90:1:7:642:85:1:7:658:104'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(1000+Random(200));


Path:= ['685:56:4:0:7:650:114:1:7:650:66:1:7:635:22:1:7:618:104'];
for I := 0 to 0 do
ObjDTM_Walk(Path[i], 0, 100, 80, True);
Wait(3000+Random(500));
end;
FreeDTM(AlterArea);
end;
end;

begin
Smart_Server := 54;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
Loadvars;
ObjSetup;
Declareplayers;
if not (LoggedIn) then
LoginPlayer;
WithdrawTiara1;
Repeat
Repeat
Walkies;
WalkToAlter;
Enter;
Waiting;
Crafting;
Waiting;
Leave;
Waiting;
BackToTheBank;
WithdrawTiara2;
Until(false) or (not LoggedIn);
NextPlayer(Players[CurrentPlayer].Active);
Until(false)
end.

loser69

2012-01-16 05:26:35

Nice, may I ask what type of map walk method did you use, SPS DDTM?

Deadly Serious

2012-01-16 05:30:51

From: loser69
Nice, may I ask what type of map walk method did you use, SPS DDTM?


I used Object DTMs for most of the walking and a color walking method for one point that Object DTMs weren't able to do, from lack of objects on the minimap.

Er1k

2012-01-16 06:52:50

Why don't you simply combine the air runecrafter with this into one script?

Deadly Serious

2012-01-16 15:48:22

From: nosaj.421
Why don't you simply combine the air runecrafter with this into one script?


I may in the future.
I'll just put a variable in it, that says "True" for air runes and "False" for air tiaras.
I didn't think of that at the time.

hents1230

2012-01-18 14:04:07

Does anyone know the xp per hour?

Deadly Serious

2012-01-18 17:25:28

This is about right:

Method
Creating air tiaras, standard route

Time per run (seconds)
209

XP per run
350

XP per hour
6,050


I'll develop a progress report for it if enough people show an interest. Most people just use my air rune crafter.

Deadly Serious

2012-01-23 23:04:57

Updated, it should work in theory. I haven't tested it out yet.

sander70

2012-02-16 07:17:42

why is the crafting code the same as your air rune crafter becouse i need a air taira crafter for leveling my rc but this one isnt working

sorry for my bad english im dutch

greets sander70

Deadly Serious

2012-02-16 13:51:38

From: sander70
why is the crafting code the same as your air rune crafter becouse i need a air taira crafter for leveling my rc but this one isnt working

sorry for my bad english im dutch

greets sander70


It's almost the same, the only things that are different are the withdrawing procedures and the alter procedure.

sander70

2012-02-16 15:37:33

i cant find any diffrences only the withdrawing the alter is the same or i am maby wrong but i dont know becouse this is the air taira crafting procedure
Procedure Crafting;
Var
x,y: integer;
begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;
ProgressReport;

begin
If FindObjCustom(x, y, ['raft', 'Rune'], [5591380, 5920344, 5723222, 5525587, 5525843, 5722966, 5723222], 3) then
begin
Writeln('Crafted Air runes')
Getmousepos(x, y)
if IsUpText('raft') then

Case random(11) of
0..10: begin
MMouse(X, Y, 15, 15);
ClickMouse2(True);
end;
// 9..10: begin;
// MMouse(X, Y, 15, 15);
// ClickMouse2(False);
// Waitoption('raft', 3000);

end;
end;
end;
end;
and this the air rune
Procedure Crafting;
Var
x,y: integer;
begin
if not loggedin then exit;
FindNormalRandoms;
Antiban;
DidRedClick;
ProgressReport;

begin
If FindObjCustom(x, y, ['raft', 'Rune'], [5591380, 5920344, 5723222, 5525587, 5525843, 5722966, 5723222], 3) then
begin
Writeln('Crafted Air runes')
Getmousepos(x, y)
if IsUpText('raft') then

Case random(11) of
0..10: begin
MMouse(X, Y, 15, 15);
ClickMouse2(True);
end;
// 9..10: begin;
// MMouse(X, Y, 15, 15);
// ClickMouse2(False);
// Waitoption('raft', 3000);

end;
end;
end;
end;
i cant find any diffrences between them

nyancat

2012-02-21 19:14:16

is there anti-leech?