SRL Archive - Archive

Sirenia - SRL Member Application


Sirenia

2012-05-12 12:22:45

How Long have You Played Runescape?
6 Year(s)


Are you affilated in anyway with Jagex LTD?
No.

Were you Referred to SRL?
No not really, Erke was my other account but it was a old username name I never use anymore and I discovered the Name Change thread a little late.


What is your general programming knowledge?
It was actually none before I joined this forum, Ive never made a script or understood any code in my life. We are learning some html in school at the moment.


Are you a member of any other communities?
The only botting community I was a member of is Powerbot. I was a leech in general until I came here where learning is higly encouraged.


Tell us about yourself…
From: Sirenia
Im soon 17 years old, living in Sweden with my family. Going first year in college and I kinda like it. I like music alot (more or less and genres in metal). My fav. Bands are The Unguided, Sonic Syndicate, Silverstein and Sirenia (duh). I also like computer games and hanging around with friends. I play mostly mmo games of diffrent kinds like WoW, HoN and ofc Runescape.

I have no plans at all for the future and I got no idea what I want to do after school. I like to just take every day as it comes and dont plan too much.

Okay now on to the script…

It started with that I about one month ago found myself hacked and 550m poorer than I was the last day, I tried to decide if I should quit Runescape or try to rebuild again. Anyways I attempted to rebuild and focused on Runecrafting and made myself a AstralCrafter.

This script has rebuilt a big part of my bank and I think it works pretty nice! Im 91 runecrafting now so next step will maybe be a NatureCrafter?

The script works very simple; Have everything needed visible in the bank. Runes for repairing pouches, Pure ess and lobsters if you need to eat. Start it near the Lunar bank, it tried to blind walk to the bank so you dont have to stand ontop of the bank but somewhere near would be good. Have a Earth staff equiped for moonclan tele and please note that the script only uses NpcContact since thats the only spell I can use.

Kk I think we are ready to see the script itself :) It got a nice proggy so if you choose to test it ingame then you can see Runes per hour etc, I usually get around 4.4k-4.5k astrals per hour!



Please show us one (or multiple) of your scripts.
program AstralCrafter;
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i sps/sps.simba}

// Hey this is my AstralCrafter, got inspired by RyGuy's crafter and decided to make my own
// I used hes crafter as a example when I made my own since ive never done a runecrafting script before
// Please tell me what you think, don't spit on me too much however.


var
TimeBegan, StartingXP, TeleNumber, Stuck, RuneCount, LobstersEaten, PouchesRepaired: integer;
S: String;
aFound: extended;

Const
SPouch = 1; // Inv Slot, 0 to disable.
MPouch = 2; // Inv Slot, 0 to disable.
LPouch = 3; // Inv Slot, 0 to disable.
GPouch = 4; // Inv Slot, 0 to disable.

RestAt = 60;
EatAt = 400;
TotalHP = 940;

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

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

procedure AntiBan;
begin
case Random(150)of
0: HoverSkill('RuneCrafting', false);
1: PickUpMouse;
2: RandomMovement;
3: RandomRClick;
4: ExamineInv;
end;
end;

Function AstralCounter: Integer;
Var
Astral, X, Y:Integer;
begin

Astral := BitmapFromString(4, 6, 'meJw7tf7UKQyUkZELYaSkZAARhJ2Q' +
'kJKUlAZkxMQkxMUlAblAdlRUHIQLAKx3KfU=');

If FindBitMapTolerancein(Astral, X, Y, MIX1, MIY1, MIX2, MIY2, 45) then
Result:= GetAmount(X, Y);

FreeBitMap(Astral);
end;

function CurrentHP: integer;
var
S: string;
begin
Result := GetMMLevels('health', S);
end;

procedure ToBank;
var
x, y, Clicked, Bank: integer;
begin

SPS_Setup(RUNESCAPE_SURFACE,['0_2']);

Bank := DTMFromString('mggAAAHicY2NgYKgAYg1GBjAoBuJcIN4LxJJAnAnEshAphrNQXJkXy5CdEsSQH2fIkB5myVCX7w7GXEA5ESDmB2IQmw+KQUYzYcEQAACa5Aud');

if BankScreen then
begin
FreeDTM(Bank);
Exit;
end;

if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
repeat
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
Inc(Clicked);
until (BankScreen) or (PinScreen) or (Clicked = 5);
end;

if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)

else

begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given')
TerminateScript;
end;

if not (BankScreen)then
begin
SPS_BlindWalk(Point(237, 955));
Flag;
MakeCompass('N');
Wait(750 + random(200));
end;

FreeDTM(Bank);
end;


procedure OpenLunar;
var
x, y, Tried, Bank: integer;

begin

Bank := DTMFromString('mggAAAHicY2NgYKgAYg1GBjAoBuJcIN4LxJJAnAnEshAphrNQXJkXy5CdEsSQH2fIkB5myVCX7w7GXEA5ESDmB2IQmw+KQUYzYcEQAACa5Aud');

if (BankScreen)then
begin
FreeDTM(Bank);
Exit;
end;

begin
repeat
Inc(Tried);
Wait(150 + random(100));
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
end;
until (BankScreen) or (PinScreen) or (Tried > 10);
end;

begin
if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given');
TerminateScript;
end;
end;

FreeDTM(Bank);

end;

Procedure DepositRunes;
Var
Astral, X, Y, CosmicRune, AirRune:integer;
begin

Astral := BitmapFromString(4, 6, 'meJw7tf7UKQyUkZELYaSkZAARhJ2Q' +
'kJKUlAZkxMQkxMUlAblAdlRUHIQLAKx3KfU=');

CosmicRune := BitmapFromString(17, 11, 'meJx90uEKgjAUBeBH8aEKExGRIS' +
'JmmomZFiImycqMoicLep8OjC5jWnD+uO3Du6Pa6619k2y2abrLsjL' +
'PD0VRlftak3aPLUc4v8mLIrJStpqmO1/uY0KZVJMkXmc0obJV16e+' +
'f8grQRCHYRJFKZSA/4nnLX1/BUVQOY82QIbhadtMrLiujxCE+kUsy' +
'8Gj47gIYx4p5TzuhSrQGAYzTRsBxOtIjTshgu+i66ZhWLKaLBwFon' +
'MM1nXX2XwxVvKEuBTaE6SqWvwAH/YIHxg=');

AirRune := BitmapFromString(10, 5, 'meJy7fv3B9esPMjJyr4MZEFRYVF5' +
'cXAFEQHZKSgayVF5ecX5BKYSdkJCCLJWVlZ+TUwjnxsUlwdlpadlo' +
'VsTEJAAVAE1ISkpDswKIAPPuZ90=');

Wait(500 + random(200));
If FindBitMapTolerancein(Astral, X, Y, MIX1, MIY1, MIX2, MIY2, 45) then
begin
Mouse(X, Y, 7, 7, false);
WaitOption('ll', 1500);
Wait(500 + random(200));
end;



if FindBitmapToleranceIn(CosmicRune, x, y, MIX1, MIY1, MIX2, MIY2, 15)then
begin
Mouse(X, Y, 5, 5, true);
Wait(500 + random(199));
end;

if FindBitMapTolerancein(AirRune,X,Y,MIX1, MIY1, MIX2, MIY2,55)then
begin
Mouse(X, Y, 5, 5, true);
Wait(500 + random(200));
end;
FreeBitmap(AirRune);
Freebitmap(CosmicRune);
FreeBitMap(Astral);
end;

procedure NpcContact; //Do not have a account with RepairPouch spell so Conctact will do :)
var
X, Y, CosmicRune, AirRune, Pouch, Astral, Clicked: integer;
begin

Astral := BitmapFromString(4, 6, 'meJw7tf7UKQyUkZELYaSkZAARhJ2Q' +
'kJKUlAZkxMQkxMUlAblAdlRUHIQLAKx3KfU=');

Pouch := BitmapFromString(8, 8, 'meJyztHOytHMyt7YHIiMzKwMTCz1D' +
'U00dfUuwOETKxNIWIq6tbwQXByKgOFALRNzawQVZPcQoiDhEClkcq' +
'AWrejLEAQsPKpE=');

CosmicRune := BitmapFromString(9, 8, 'meJxTuH5TARUVF1cAUWlpFbJgTk5h' +
'Xl5xfkFpYVE5UBYunpGRm5WVjyybkJACkUpLy0aTjYtLAoonJaWlp' +
'GQgywIFY2ISgLJAvciyEHOiouLQZOG2R0TEoMnCtQMAH95kyw==')

AirRune := BitmapFromString(10, 5, 'meJy7fv3B9esPMjJyr4MZEFRYVF5' +
'cXAFEQHZKSgayVF5ecX5BKYSdkJCCLJWVlZ+TUwjnxsUlwdlpadlo' +
'VsTEJAAVAE1ISkpDswKIAPPuZ90=');

if FindBitmapToleranceIn(Pouch, X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
Wait(500 + random(100));
WriteLn('Broken pouch detected!');
end else
begin
FreeBitmap(Pouch);
FreeBitmap(Astral);
FreeBitmap(CosmicRune);
FreeBitmap(AirRune);
Exit;
end;

begin
If FindBitMapTolerancein(CosmicRune, X, Y, MSX1, MSY1, MSX2, MSY2, 45) then
begin
Mouse(X, Y, 7, 7, True);
Wait(100 + random(25));
end else
begin
FreeBitmap(Pouch);
WriteLn('Cannot find Cosmic Rune');
FreeBitmap(CosmicRune);
FreeBitmap(Astral);
FreeBitmap(AirRune);
exit;
end;

If FindBitMapTolerancein(Astral, X, Y, MSX1, MSY1, MSX2, MSY2, 45) then
begin
MMouse(X, Y, 7, 7);
ClickMouse2(True);
Wait(RandomRange(200, 300));
end else
begin
FreeBitmap(Pouch);
WriteLn('Cannot find Astral Rune');
FreeBitmap(Astral);
FreeBitmap(AirRune);
FreeBitmap(CosmicRune);
end;

If FindBitMapTolerancein(AirRune, X, Y, MSX1, MSY1, MSX2, MSY2, 55)then
begin
Mouse(X, Y, 7, 7, True);
Wait(400 + random(25));
ClickMouse2(True);
Wait(1000 + random(100));
end else
begin
FreeBitmap(Pouch);
WriteLn('Cannot find Air Rune');
FreeBitmap(CosmicRune);
FreeBitmap(AirRune);
FreeBitmap(Astral);
exit;
end;
end;

begin
CloseBank;
Wait(500);
GameTab(Tab_Magic);
Mouse(696, 229, 4, 4, True);
Wait(1500 + random(100));
Mouse(487, 280, 3, 3, true);
Wait(500 + random(200));
Mouse(434, 130, 7, 7, true);
Wait(6000 + random(200));
end;

if FindNPCChatText('ello', Nothing)then
begin
repeat
ClickContinue(True, True);
ChatWait;
Inc(Clicked);
until FindNPCChatText('pouches', nothing) or (Clicked = 15)
end;

if FindNPCChatText('ouches', nothing)then
begin
Wait(250 + random(100));
TypeSendEx('1', False);
Wait(500 + random(100));
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
Inc(PouchesRepaired);
end;

OpenLunar;
FreeBitmap(AirRune);
FreeBitmap(CosmicRune);
FreeBitmap(Pouch);
FreeBitmap(Astral);
end;

procedure WithdrawEss;
var
x, y, PureEss, Tried: integer;
A: extended;
begin
PureEss := BitmapFromString(16, 14, 'meJyN0NEKgkAUBNBfE3oQM7HMRE' +
'REZDE100xEij6+oYFluWYE8ziHubtK1WV5Qarq2jQ90rZD141If5u' +
'Q4T6P4wOZpuc8v/JcFcVZqVp9IBQhFKFQWVaQUP3YAkHSNCf5Zwj9' +
'JMlI1oa0IonjlEQMiS09FEUJian0lrgNCcMYhMqEguiVIDghUCZcE' +
'j3keQd/f0SoRF98Hfqu6yNUS2Iq9m176zi7NWIqTOCkr31NtNJ9y9' +
'osiVDs8xVv+6X+WQ==');
repeat
Inc(Tried);
Wait(20);

if FindNormalRandoms then
begin
ClickNorth(SRL_ANGLE_HIGH);
OpenLunar;
end;

until (BankScreen) or (Tried > 15);

begin
if FindDeformedBitmapToleranceIn(PureEss, x, y, MSX1, MSY1, MSX2, MSY2, 20, 0, false, A)then
Mouse(X, Y, 8, 8, False);
WaitOption('All P', 1500);
FreeBitmap(PureEss);
end;

end;

procedure FillPouches;
var
Waiting: integer;
begin
repeat
Inc(Waiting);
Wait(250 + random(10));
FindNormalRandoms;
until (BankScreen) or (Waiting = 40);

if (BankScreen)then
begin
begin
if not (SPouch = 0) then
begin
WithdrawEss;
MouseItem(SPouch, mouse_right);
(WaitOption('ill', 1500));
end;
end;

begin
if not (MPouch = 0) then
begin
MouseItem(MPouch, mouse_right);
WaitOption('ill', 1500);
end;
end;

begin
if not (LPouch = 0) then
begin
MouseItem(LPouch, mouse_right);
(WaitOption('ill', 1500));
end;
end;

begin
if not (GPouch = 0) then
begin
WithdrawEss;
MouseItem(GPouch, mouse_right);
WaitOption('ill', 1500);
end;
end;

WithdrawEss;
Wait(750 + random(200));

if not (InvFull) then
begin
WithdrawEss;
end;
end else exit;


if (CurrentHP < 200) then
begin
Logout;
WriteLn('Low HP, logging t_t');
TerminateScript;
end;

end;



procedure ToAltar;
var
ToAltarPath: TPointArray;
begin

SPS_Setup(RUNESCAPE_SURFACE, ['0_2']);
ToAltarPath := [Point(284, 972), Point(284, 1026), Point(297, 1072), Point(331, 1104), Point(363, 1138), Point(380, 1183), Point(422, 1173), Point(463, 1176)];

if (InvCount > 9)then
begin
SPS_WalkPath(ToAltarPath);
AntiBan;
Flag;
end;
end;

procedure AltarCheck; //If SPS doesnt run all all the way to the altar then this will hopefully
var
X, Y, Altar, Altar1, Altar2, Altar3, Altar4: integer;
begin

Altar := DTMFromString('mggAAAHicdcxBCkBQFEbh/03YKxsQScpTnju4LMVEygqUPTllyqlvejJJZ5AO3LiwY0MPg6NAiRpN1WpdZrlPMhsVY6eUBuW8voQfbw+hkxEq');
Altar1 := DTMFromString('mlwAAAHicY2dgYFjPxMCwF4i3A/FxID4FxEeA+AIQ2wOxJRBHQLErEMcDsRcQT5zYzTChv5Nh8uReMBsZcwLNxYUZ8WAoAABXhBOE');
Altar2 := DTMFromString('mlwAAAHicY2dgYOgH4i4ovQSIFwDxJCCeA8SJQJwBxBVAHA7E/kDsB8TZQFxVVsMwYUIXw9y50xi6u1vBuKW5jqG/r4OBHSiPCzPiwVAAAMCwEkA=');
Altar3 := DTMFromString('mbQAAAHicY2VgYBBhYWDQAmJlFghbA4jtmRgYrIHYGIo9gbimppyhra0BjEHspqYaBnagfnTMiAWDAQBIugmI');
Altar4 := DTMFromString('mwQAAAHic42RgYPjEzMDwD4i5WBgYfgBpZiD9Cki/BWIWIPsPkLZkYmBQBGIPII4C4iAgdgZiVSA2huKayjqGtrYGhs7OZoaZMyczdHe3MvT2tjPU1VUyNDXVMBTnlzKwA+0jhBmJwHAAALfNFks=');

if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2)or
FindDTM(Altar1, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar2, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar3, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar4, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
FreeDTM(Altar);
FreeDTM(Altar1);
FreeDTM(Altar2);
FreeDTM(Altar3);
FreeDTM(Altar4);
Exit;
end;

if not FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2)or
FindDTM(Altar1, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar2, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar3, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar4, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
if FindSymbol(X, Y, 'runecrafting') then
begin
Mouse(X, Y, 7, 7, true);
flag;
Wait(1000 + random(200));
end;
end;

FreeDTM(Altar);
FreeDTM(Altar1);
FreeDTM(Altar2);
FreeDTM(Altar3);
FreeDTM(Altar4);
end;


procedure CraftRunes;
var
x, y, Altar, Altar1, WaitCount, Failed, Altar2, Altar3, Altar4: integer;
begin
Wait(750 + random(200));

Altar := DTMFromString('mggAAAHicdcxBCkBQFEbh/03YKxsQScpTnju4LMVEygqUPTllyqlvejJJZ5AO3LiwY0MPg6NAiRpN1WpdZrlPMhsVY6eUBuW8voQfbw+hkxEq');
Altar1 := DTMFromString('mlwAAAHicY2dgYFjPxMCwF4i3A/FxID4FxEeA+AIQ2wOxJRBHQLErEMcDsRcQT5zYzTChv5Nh8uReMBsZcwLNxYUZ8WAoAABXhBOE');
Altar2 := DTMFromString('mlwAAAHicY2dgYOgH4i4ovQSIFwDxJCCeA8SJQJwBxBVAHA7E/kDsB8TZQFxVVsMwYUIXw9y50xi6u1vBuKW5jqG/r4OBHSiPCzPiwVAAAMCwEkA=');
Altar3 := DTMFromString('mbQAAAHicY2VgYBBhYWDQAmJlFghbA4jtmRgYrIHYGIo9gbimppyhra0BjEHspqYaBnagfnTMiAWDAQBIugmI');
Altar4 := DTMFromString('mwQAAAHic42RgYPjEzMDwD4i5WBgYfgBpZiD9Cki/BWIWIPsPkLZkYmBQBGIPII4C4iAgdgZiVSA2huKayjqGtrYGhs7OZoaZMyczdHe3MvT2tjPU1VUyNDXVMBTnlzKwA+0jhBmJwHAAALfNFks=');


repeat
if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar1, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar2, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar3, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar4, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Stuck := 0;
Inc(Failed);
Mouse(x-25, y, 25, 25, True);
end;
until (DidRedClick) or (Failed = 5);

repeat
Wait(1700 + random(100));
FindNormalRandoms;
Inc(WaitCount);
until (InvCount < 10) or (WaitCount > 10);

begin
if not (SPouch = 0)then
begin
MouseItem(SPouch, mouse_left);
Wait(300 + random(200));
end;
end;

begin
if not (MPouch = 0)then
begin
MouseItem(MPouch, mouse_left);
Wait(300 + random(200));
end;
end;

begin
if not (LPouch = 0)then
begin
MouseItem(LPouch, 1);
Wait(300 + random(200));
end;
end;

begin
if not (GPouch = 0)then
begin
if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar1, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar2, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar3, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar4, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(X, Y, 25, 25, True);
end;
Wait(1900 + random(50));
MouseItem(GPouch, mouse_left);
end;
end;

if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar1, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar2, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar3, x, y, MSX1, MSY1, MSX2, MSY2) or
FindDTM(Altar4, x, y, MSX1, MSY1, MSX2, MSY2) then
begin
Mouse(X, Y, 25, 25, True);
Wait(2000 + random(100));
AntiBan;
end;
FreeDTM(Altar);
FreeDTM(Altar1);
FreeDTM(Altar2);
FreeDTM(Altar3);
FreeDTM(Altar4);
end;

procedure Teleport;
var
WaitTime: integer;
begin

repeat
Inc(WaitTime);
FindNormalRandoms;
Wait(500 + random(150));
until (InvCount < 10) or (WaitTime = 5);

begin
GameTab(tab_magic);
Mouse(662, 260, 6, 6, True);
Wait(250 + random(500));
Inc(TeleNumber);
GameTab(tab_inv);
AntiBan;
Wait(3500 + random(100));

if FindBlackChatMessage('w rune')then
begin
WriteLn('Out of Law Runes!!');
Logout;
TerminateScript;
end;

end;

end;

procedure Rest;
begin
if GetMMLevels('run',S) < RestAt then
RestUntil(RandomRange(85, 95));
end;

procedure Report;
var
RCExp, RCExpHr, TimeRan, AstralsHr, TeleNumberHr, LobstersHr, PouchesHr: integer;
begin

TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
RCExp := ((GetXPBarTotal - StartingXP) - (TeleNumber * 67));
RCExpHr := Round((RCExp * 3600) / (TimeRan));
AstralsHr := Round((RuneCount * 3600) / (TimeRan));
TeleNumberHr := Round((TeleNumber * 3600) / (TimeRan));
LobstersHr := Round((LobstersEaten * 3600) / (TimeRan));
PouchesHr := Round((PouchesRepaired * 3600) / (TimeRan));

WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*Sirenia''s Astral Runecrafter Report');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have done ' + IntToStr(TeleNumber) + ' Runs! (' + IntToStr(TeleNumberHr) + ' per Hour)');
WriteLn('*We have gained ' + IntToStr(RCExp) + ' Runecrafting Experience! (' + IntToStr(RCExpHr) + ' per Hour)');
Writeln('*We have crafted ' +IntToStr(RuneCount) + ' Astral Runes!(' + IntToStr(AstralsHr) + ' per Hour)');
WriteLn('*We have eaten ' +IntToStr(LobstersEaten) + ' Lobsters!(' + IntToStr(LobstersHr) + ' per Hour)');
WriteLn('*We have repaired ' +IntToStr(PouchesRepaired) + ' Pouches!(' + IntToStr(PouchesHr) + ' per Hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;

procedure Eat;
var
Lobster, X, Y, Tried: integer;
begin

Lobster := DTMFromString('mlwAAAHicY2dgYBBmhGBJIJYAYj4gZoeyM4HyVUBcBMQ5QFwKxIVAXAbECwLEgSQTVszPgBsw4sFQAAAAAATZ');

if CurrentHP < EatAt then
begin
FindDTM(Lobster, X, Y, MSX1, MSY1, MSX2, MSY2);
Mouse(X, Y, 7, 7, false);
WaitOption('10', 1500);
Wait(1000 + random(200));
repeat
FindDTM(Lobster, X, Y, MIX1, MIY1, MIX2, MIY2);
Mouse(X, Y, 7, 7, false);
WaitOption('at', 1500);
Wait(1000 + random(200));
Inc(Tried);
Inc(LobstersEaten);
until (CurrentHP = TotalHP) or (Tried > 10)

if FindDTM(Lobster, X, Y, MIX1, MIY1, MIX2, MIY2)then
begin
Mouse(X, Y, 7, 7, false);
WaitOption('ll', 1500);
Wait(500 + random(200));
end;
end;
end;



begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetUpSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;

ToggleXPBar(True);
StartingXP := (GetXPBarTotal);


ClickNorth(SRL_ANGLE_HIGH);
TimeBegan := GetSystemTime;

repeat
FindNormalRandoms;
if not (LoggedIn)then
TerminateScript;


ToBank;
OpenLunar;
DepositRunes;
NpcContact;
Eat;
FillPouches;
Rest;
ToAltar;
AltarCheck;
CraftRunes;
Teleport;
IncEx(RuneCount, AstralCounter);
Report;

until(AllPlayersInactive);

end.

xtrapsp

2012-05-12 12:29:17

Im on my phone , would you mind pm'ing me the script without simba tags :)

Sirenia

2012-05-12 12:42:10

From: xtrapsp
Im on my phone , would you mind pm'ing me the script without simba tags :)


Done :)

Gucci

2012-05-12 12:45:45

Definitely very well done script you have here. I like your use of DTM's for finding and for walking and your extensive use of bitmaps, shows you know what your doing. The script is easily readable and overall a nice application. Although your activity is not really up to where I believe others would like it to be. I am holding my vote for now

xtrapsp

2012-05-12 13:03:50

Holding my vote purely because i couldn't see anything related to TPA's. I may be mistaken as im on my phone for the weekend.

[XoL]

2012-05-12 13:25:14

This is good enough for me, Yes from me!

cause

2012-05-12 13:29:48

I really like how you have backup walking! An easy yes from me.

masterBB

2012-05-12 15:14:04

I voted no. I see you spend time working on this script. I just think it is not challenging enough to become a srl member. I missed the FindColor functions.

I also cleaned some of your code. Placed all the bitmaps, dtms and pouches in arrays. And I wondered why you got two banking function who are the same. Note I didn't test it because I wrote it in notepad.

program AstralCrafter;
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i sps/sps.simba}

// Hey this is my AstralCrafter, got inspired by RyGuy's crafter and decided to make my own
// I used hes crafter as a example when I made my own since ive never done a runecrafting script before
// Please tell me what you think, don't spit on me too much however.


var
TimeBegan, StartingXP, TeleNumber, Stuck, RuneCount, LobstersEaten, PouchesRepaired: integer;
S: String;
aFound: extended;
Pouches, Bitmaps, DTMs:TIntegerArray;

Const
RestAt = 60;
EatAt = 400;
TotalHP = 940;

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

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

SetLength(Pouches,4);
Pouches[0] = 1; // Small puch inv Slot, 0 to disable.
Pouches[1] = 2; // Medium puch inv Slot, 0 to disable.
Pouches[2] = 3; // Large puch inv Slot, 0 to disable.
Pouches[3] = 4; // Giant puch inv Slot, 0 to disable.
end;

const
bmpASTRAL = 0;
bmpCOSMIC = 1;
bmpAIR = 2;
bmpPOUCH = 3;
bmpPUREESS = 4;

dtmBANK = 0;
dtmALTAR1 = 1;
dtmALTAR2 = 2;
dtmALTAR3 = 3;
dtmALTAR4 = 4;
dtmALTAR5 = 5;
dtmLOBSTER = 6;

procedure AntiBan;
begin
case Random(150)of
0: HoverSkill('RuneCrafting', false);
1: PickUpMouse;
2: RandomMovement;
3: RandomRClick;
4: ExamineInv;
end;
end;

procedure LoadBitmaps;
begin
setLength(Bitmaps, 5);
Bitmaps[bmpASTRAL] := BitmapFromString(4, 6, 'meJw7tf7UKQyUkZELYaSkZAARhJ2Q' +
'kJKUlAZkxMQkxMUlAblAdlRUHIQLAKx3KfU=');
Bitmaps[bmpCOSMIC] := BitmapFromString(17, 11, 'meJx90uEKgjAUBeBH8aEKExGRIS' +
'JmmomZFiImycqMoicLep8OjC5jWnD+uO3Du6Pa6619k2y2abrLsjL' +
'PD0VRlftak3aPLUc4v8mLIrJStpqmO1/uY0KZVJMkXmc0obJV16e+' +
'f8grQRCHYRJFKZSA/4nnLX1/BUVQOY82QIbhadtMrLiujxCE+kUsy' +
'8Gj47gIYx4p5TzuhSrQGAYzTRsBxOtIjTshgu+i66ZhWLKaLBwFon' +
'MM1nXX2XwxVvKEuBTaE6SqWvwAH/YIHxg=');
Bitmaps[bmpAIR] := BitmapFromString(10, 5, 'meJy7fv3B9esPMjJyr4MZEFRYVF5' +
'cXAFEQHZKSgayVF5ecX5BKYSdkJCCLJWVlZ+TUwjnxsUlwdlpadlo' +
'VsTEJAAVAE1ISkpDswKIAPPuZ90=');
Bitmaps[bmpPOUCH] := BitmapFromString(8, 8, 'meJyztHOytHMyt7YHIiMzKwMTCz1D' +
'U00dfUuwOETKxNIWIq6tbwQXByKgOFALRNzawQVZPcQoiDhEClkcq' +
'AWrejLEAQsPKpE=');
Bitmaps[bmpPUREESS] := BitmapFromString(16, 14, 'meJyN0NEKgkAUBNBfE3oQM7HMRE' +
'REZDE100xEij6+oYFluWYE8ziHubtK1WV5Qarq2jQ90rZD141If5u' +
'Q4T6P4wOZpuc8v/JcFcVZqVp9IBQhFKFQWVaQUP3YAkHSNCf5Zwj9' +
'JMlI1oa0IonjlEQMiS09FEUJian0lrgNCcMYhMqEguiVIDghUCZcE' +
'j3keQd/f0SoRF98Hfqu6yNUS2Iq9m176zi7NWIqTOCkr31NtNJ9y9' +
'osiVDs8xVv+6X+WQ==');
end;

procedure LoadDTMS;
begin
setLength(DTMS, 7);
DTMS[dtmBANK] := DTMFromString('mggAAAHicY2NgYKgAYg1GBjAoBuJcIN4LxJJAnAn' +
'EshAphrNQXJkXy5CdEsSQH2fIkB5myVCX7w7GXEA5ESDmB2IQmw+KQUYzYcEQAACa5Aud');
DTMS[dtmALTAR1] := DTMFromString('mggAAAHicdcxBCkBQFEbh/03YKxsQScpTnju4LMVEygqUPTllyqlvejJJZ5AO3LiwY0MPg6NAiRpN1WpdZrlPMhsVY6eUBuW8voQfbw+hkxEq');
DTMS[dtmALTAR2] := DTMFromString('mlwAAAHicY2dgYFjPxMCwF4i3A/FxID4FxEeA+AIQ2wOxJRBHQLErEMcDsRcQT5zYzTChv5Nh8uReMBsZcwLNxYUZ8WAoAABXhBOE');
DTMS[dtmALTAR3] := DTMFromString('mlwAAAHicY2dgYOgH4i4ovQSIFwDxJCCeA8SJQJwBxBVAHA7E/kDsB8TZQFxVVsMwYUIXw9y50xi6u1vBuKW5jqG/r4OBHSiPCzPiwVAAAMCwEkA=');
DTMS[dtmALTAR4] := DTMFromString('mbQAAAHicY2VgYBBhYWDQAmJlFghbA4jtmRgYrIHYGIo9gbimppyhra0BjEHspqYaBnagfnTMiAWDAQBIugmI');
DTMS[dtmALTAR5] := DTMFromString('mwQAAAHic42RgYPjEzMDwD4i5WBgYfgBpZiD9Cki/BWIWIPsPkLZkYmBQBGIPII4C4iAgdgZiVSA2huKayjqGtrYGhs7OZoaZMyczdHe3MvT2tjPU1VUyNDXVMBTnlzKwA+0jhBmJwHAAALfNFks=');
DTMS[dtmLOBSTER] := DTMFromString('mlwAAAHicY2dgYBBmhGBJIJYAYj4gZoeyM4HyVUBcBMQ5QFwKxIVAXAbECwLEgSQTVszPgBsw4sFQAAAAAATZ');
end;

Function AstralCounter: Integer;
Var
X, Y:Integer;
begin
If FindBitMapTolerancein(Bitmaps[ASTRAL], X, Y, MIX1, MIY1, MIX2, MIY2, 45) then
Result:= GetAmount(X, Y);
end;

function CurrentHP: integer;
var
S: string;
begin
Result := GetMMLevels('health', S);
end;

procedure ToBank;
var
x, y, Clicked: integer;
begin
if BankScreen then
Exit;

if FindDTMRotated(DTMs[dtmBANK], x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
repeat
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
Inc(Clicked);
until (BankScreen) or (PinScreen) or (Clicked = 5); //this doesn't work
end;

if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
Logout;
WriteLn('No pin given')
TerminateScript;
end;

if not (BankScreen)then
begin
SPS_Setup(RUNESCAPE_SURFACE,['0_2']);
SPS_BlindWalk(Point(237, 955));
Flag;
MakeCompass('N');
Wait(750 + random(200));
end;
end;


procedure OpenLunar;
var
x, y, Tried: integer;

begin
if (BankScreen)then
begin
Exit;
end;

repeat
Inc(Tried);
Wait(150 + random(100));
if FindDTMRotated(DTMS[dtmBANK], x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
end;
until (BankScreen) or (PinScreen) or (Tried > 10);

if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
Logout;
WriteLn('No pin given');
TerminateScript;
end;
end;

Procedure DepositRunes;
Var
X, Y:integer;
begin
Wait(500 + random(200));
If FindBitMapTolerancein(Bitmaps[bmpASTRAL], X, Y, MIX1, MIY1, MIX2, MIY2, 45) then
begin
Mouse(X, Y, 7, 7, false);
WaitOption('ll', 1500);
Wait(500 + random(200));
end;

if FindBitmapToleranceIn(Bitmaps[bmpCOSMIC], x, y, MIX1, MIY1, MIX2, MIY2, 15)then
begin
Mouse(X, Y, 5, 5, true);
Wait(500 + random(199));
end;

if FindBitMapTolerancein(Bitmaps[bmpAIR],X,Y,MIX1, MIY1, MIX2, MIY2,55)then
begin
Mouse(X, Y, 5, 5, true);
Wait(500 + random(200));
end;
end;

procedure NpcContact; //Do not have a account with RepairPouch spell so Conctact will do :)
var
X, Y, Clicked: integer;
begin
if FindBitmapToleranceIn(Bitmaps[bmpPOUCH], X, Y, MIX1, MIY1, MIX2, MIY2, 15) then
begin
Wait(500 + random(100));
WriteLn('Broken pouch detected!');
end else
Exit;

begin
If FindBitMapTolerancein(Bitmaps[bmpCOSMIC], X, Y, MSX1, MSY1, MSX2, MSY2, 45) then
begin
Mouse(X, Y, 7, 7, True);
Wait(100 + random(25));
end else
begin
WriteLn('Cannot find Cosmic Rune');
exit;
end;

If FindBitMapTolerancein(Bitmaps[bmpASTRAL], X, Y, MSX1, MSY1, MSX2, MSY2, 45) then
begin
MMouse(X, Y, 7, 7);
ClickMouse2(True);
Wait(RandomRange(200, 300));
end else
WriteLn('Cannot find Astral Rune');

If FindBitMapTolerancein(Bitmaps[bmpAIR], X, Y, MSX1, MSY1, MSX2, MSY2, 55)then
begin
Mouse(X, Y, 7, 7, True);
Wait(400 + random(25));
ClickMouse2(True);
Wait(1000 + random(100));
end else
begin
WriteLn('Cannot find Air Rune');
exit;
end;
end;

CloseBank;
Wait(500);
GameTab(Tab_Magic);
Mouse(696, 229, 4, 4, True);
Wait(1500 + random(100));
Mouse(487, 280, 3, 3, true);
Wait(500 + random(200));
Mouse(434, 130, 7, 7, true);
Wait(6000 + random(200));

if FindNPCChatText('ello', Nothing)then
begin
repeat
ClickContinue(True, True);
ChatWait;
Inc(Clicked);
until FindNPCChatText('pouches', nothing) or (Clicked = 15)
end;

if FindNPCChatText('ouches', nothing)then
begin
Wait(250 + random(100));
TypeSendEx('1', False);
Wait(500 + random(100));
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
Inc(PouchesRepaired);
end;

OpenLunar;
end;

procedure WithdrawEss;
var
x, y, Tried: integer;
A: extended;
begin
repeat
Inc(Tried);
Wait(20);

if FindNormalRandoms then
begin
ClickNorth(SRL_ANGLE_HIGH);
OpenLunar;
end;
until (BankScreen) or (Tried > 15);

if FindDeformedBitmapToleranceIn(Bitmaps[bmpPUREESS], x, y, MSX1, MSY1, MSX2, MSY2, 20, 0, false, A)then
Mouse(X, Y, 8, 8, False);

WaitOption('All P', 1500); // shouldn't this be in a begin...end ?
end;

procedure FillPouches;
var
Waiting: integer;
begin
repeat
Inc(Waiting);
Wait(250 + random(10));
FindNormalRandoms;
until (BankScreen) or (Waiting = 40);

if (BankScreen)then
begin
for i := 0 to High(Pouches) do
if not (Pouches[i] = 0) then
begin
WithdrawEss;
MouseItem(Pouches[i], mouse_right);
WaitOption('ill', 1500);
end;

WithdrawEss;
Wait(750 + random(200));

if not (InvFull) then
WithdrawEss;
end else
exit;

if (CurrentHP < 200) then
begin
Logout;
WriteLn('Low HP, logging t_t');
TerminateScript;
end;
end;

procedure ToAltar;
var
ToAltarPath: TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE, ['0_2']);
ToAltarPath := [Point(284, 972), Point(284, 1026), Point(297, 1072), Point(331, 1104), Point(363, 1138), Point(380, 1183), Point(422, 1173), Point(463, 1176)];

if (InvCount > 9)then
begin
SPS_WalkPath(ToAltarPath);
AntiBan;
Flag;
end;
end;

procedure AltarCheck; //If SPS doesnt run all all the way to the altar then this will hopefully
var
X, Y, i: integer;
begin

for i := dtmALTAR1 to dtmALTAR5 do
if FindDTM(DTMS[i], x, y, MSX1, MSY1, MSX2, MSY2)then
Exit;

if FindSymbol(X, Y, 'runecrafting') then
begin
Mouse(X, Y, 7, 7, true);
flag;
Wait(1000 + random(200));
end;
end;


procedure CraftRunes;
var
x, y, i, WaitCount, Failed: integer;
begin
Wait(750 + random(200));

repeat
for i := dtmALTAR1 to dtmALTAR5 do
if FindDTM(DTMS[i], x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Stuck := 0;
Inc(Failed);
Mouse(x-25, y, 25, 25, True);
end;
until (DidRedClick) or (Failed = 5);

repeat
Wait(1700 + random(100));
FindNormalRandoms;
Inc(WaitCount);
until (InvCount < 10) or (WaitCount > 10);

for i := 0 to High(pouches)-1 do
if not (pouches[i] = 0)then
begin
MouseItem(SPouch, mouse_left);
Wait(300 + random(200));
end;

if not (pouches[4] = 0)then //giant pouch
begin
for i := dtmALTAR1 to dtmALTAR5 do
if FindDTM(DTMS[i], x, y, MSX1, MSY1, MSX2, MSY2)then
Mouse(X, Y, 25, 25, True);
Wait(1900 + random(50));
MouseItem(GPouch, mouse_left);
end;

for i := dtmALTAR1 to dtmALTAR5 do
if FindDTM(DTMS[i], x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Mouse(X, Y, 25, 25, True);
Wait(2000 + random(100));
AntiBan;
end;
end;

procedure Teleport;
var
WaitTime: integer;
begin

repeat
Inc(WaitTime);
FindNormalRandoms;
Wait(500 + random(150));
until (InvCount < 10) or (WaitTime = 5);

begin
GameTab(tab_magic);
Mouse(662, 260, 6, 6, True);
Wait(250 + random(500));
Inc(TeleNumber);
GameTab(tab_inv);
AntiBan;
Wait(3500 + random(100));

if FindBlackChatMessage('w rune')then
begin
WriteLn('Out of Law Runes!!');
Logout;
TerminateScript;
end;

end;

end;

procedure Rest;
begin
if GetMMLevels('run',S) < RestAt then
RestUntil(RandomRange(85, 95));
end;

procedure Report;
var
RCExp, RCExpHr, TimeRan, AstralsHr, TeleNumberHr, LobstersHr, PouchesHr: integer;
begin

TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
RCExp := ((GetXPBarTotal - StartingXP) - (TeleNumber * 67));
RCExpHr := Round((RCExp * 3600) / (TimeRan));
AstralsHr := Round((RuneCount * 3600) / (TimeRan));
TeleNumberHr := Round((TeleNumber * 3600) / (TimeRan));
LobstersHr := Round((LobstersEaten * 3600) / (TimeRan));
PouchesHr := Round((PouchesRepaired * 3600) / (TimeRan));

WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*Sirenia''s Astral Runecrafter Report');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have done ' + IntToStr(TeleNumber) + ' Runs! (' + IntToStr(TeleNumberHr) + ' per Hour)');
WriteLn('*We have gained ' + IntToStr(RCExp) + ' Runecrafting Experience! (' + IntToStr(RCExpHr) + ' per Hour)');
Writeln('*We have crafted ' +IntToStr(RuneCount) + ' Astral Runes!(' + IntToStr(AstralsHr) + ' per Hour)');
WriteLn('*We have eaten ' +IntToStr(LobstersEaten) + ' Lobsters!(' + IntToStr(LobstersHr) + ' per Hour)');
WriteLn('*We have repaired ' +IntToStr(PouchesRepaired) + ' Pouches!(' + IntToStr(PouchesHr) + ' per Hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;

procedure Eat;
var
X, Y, Tried: integer;
begin
if CurrentHP < EatAt then
begin
FindDTM(DTMS[dtmLOBSTER], X, Y, MSX1, MSY1, MSX2, MSY2);
Mouse(X, Y, 7, 7, false);
WaitOption('10', 1500);
Wait(1000 + random(200));
repeat
FindDTM(DTMS[dtmLOBSTER], X, Y, MIX1, MIY1, MIX2, MIY2);
Mouse(X, Y, 7, 7, false);
WaitOption('at', 1500);
Wait(1000 + random(200));
Inc(Tried);
Inc(LobstersEaten);
until (CurrentHP = TotalHP) or (Tried > 10)

if FindDTM(DTMS[dtmLOBSTER], X, Y, MIX1, MIY1, MIX2, MIY2)then
begin
Mouse(X, Y, 7, 7, false);
WaitOption('ll', 1500);
Wait(500 + random(200));
end;
end;
end;



begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetUpSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;

ToggleXPBar(True);
StartingXP := (GetXPBarTotal);

ClickNorth(SRL_ANGLE_HIGH);
TimeBegan := GetSystemTime;

LoadBitmaps;
LoadDTMs;

repeat
FindNormalRandoms;
if not (LoggedIn)then
TerminateScript;

ToBank;
OpenLunar;
DepositRunes;
NpcContact;
Eat;
FillPouches;
Rest;
ToAltar;
AltarCheck;
CraftRunes;
Teleport;
IncEx(RuneCount, AstralCounter);
Report;

until(AllPlayersInactive);
end.

Kyle Undefined

2012-05-12 15:16:20

You say you used RyGuys as an example, could you post his script for comparison?

Sirenia

2012-05-13 10:24:53

From: Kyle Undefined
You say you used RyGuys as an example, could you post his script for comparison?

ofc i will it was a long time however since i got it in the first place so it might not be 100% original
program AstralCrafter;
//////////////////////////WRITTEN BY RYGUY//////////////////////////////

////////////////////////////VERSION 1.0/////////////////////////////////
{$DEFINE SMART}
{$i SRL/srl.simba}
{$i sps/sps.simba}

var
TimeBegan, StartingXP, TeleNumber, Slot, Stuck: integer;

aFound: extended;

RunToAltarPath: TPointArray;


///////////////////////////PLAYER SETUP//////////////////////////////////
Const
SP = 1; // Which inventory slot for Small Pouch. 0 to disable.
MP = 2; // Which inventory slot for Medium Pouch. 0 to disable.
LP = 3; // Which inventory slot for Large Pouch. 0 to disable.
GP = 4; // Which inventory slot for Giant Pouch. 0 to disable.

Method = 'contact'; //RepairSpell or Contact
//RepairSpell highly recommended!

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

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

////////////////////DO NOT TOUCH BELOW THIS LINE/////////////////////////



procedure AntiBan;
begin

if not(LoggedIn)then
begin
Exit;
end;

case Random(150)of
0: HoverSkill('RuneCrafting', false);
1: PickUpMouse;
2: RandomMovement;
3: RandomRClick;
4: ExamineInv;
5: HoverSkill('RuneCrafting', false);
6: HoverSkill('RuneCrafting', false);
end;

end;



procedure RunToBank;
var
x, y, WalkToBank, Tried, Bank: integer;
begin

Bank := DTMFromString('mggAAAHicY2NgYKgAYg1GBjAoBuJcIN4LxJJAnAnEshAphrNQXJkXy5CdEsSQH2fIkB5myVCX7w7GXEA5ESDmB2IQmw+KQUYzYcEQAACa5Aud');

if (BankScreen)then
begin
FreeDTM(Bank);
Exit;
end;

if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
repeat
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
Inc(Tried);
end;
until (BankScreen) or (PinScreen) or (Tried > 5);
end;

if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given')
TerminateScript;
end;

if not (BankScreen)then
begin

WalkToBank := DTMFromString('mWAAAAHicY2FgYOBigABOIGYFYj4GVHDgwAGGnz8Z4Pg/UEwOCTMCMTMSBgEAq6wJpA==');

begin
if FindDTMRotated(WalkToBank, x, y, MMX1, MMY1, MMX2, MMY2, -Pi, Pi, Pi/30, aFound)then
Mouse(x, y, 3, 3, True);
AntiBan;
MakeCompass('N');
Wait(200 + random(50));
while (IsMoving) do (WaitNone);

end;

FreeDTM(WalkToBank);

end else exit;

FreeDTM(Bank);

end;



procedure OpenBankBooth;
var
x, y, Tried, Bank: integer;

begin

Bank := DTMFromString('mggAAAHicY2NgYKgAYg1GBjAoBuJcIN4LxJJAnAnEshAphrNQXJkXy5CdEsSQH2fIkB5myVCX7w7GXEA5ESDmB2IQmw+KQUYzYcEQAACa5Aud');

if (BankScreen)then
begin
FreeDTM(Bank);
Exit;
end;

begin
repeat
Inc(Tried);
Wait(150 + random(100));
if FindDTMRotated(Bank, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
Mouse(x, y, 5, 5, True);
Flag;
Wait(1000 + random(100));
end;
until (BankScreen) or (PinScreen) or (Tried > 10);
end;

begin
if PinScreen then
if (Players[CurrentPlayer].Pin <> '')then
InPin(Players[CurrentPlayer].Pin)
else
begin
FreeDTM(Bank);
Logout;
WriteLn('No pin given');
TerminateScript;
end;
end;

FreeDTM(Bank);

end;



procedure NPCContact;
var
x, y, CosmicRune, AirRune, Pouch: integer;
begin

Pouch := BitmapFromString(8, 8, 'meJyztHOytHMyt7YHIiMzKwMTCz1D' +
'U00dfUuwOETKxNIWIq6tbwQXByKgOFALRNzawQVZPcQoiDhEClkcq' +
'AWrejLEAQsPKpE=');

if FindBitmapToleranceIn(Pouch, x, y, MIX1, MIY1, MIX2, MIY2, 15)then
begin
MMouse(x, y, 5, 5);
Slot := CoordsToItem(x, y);
Wait(500 + random(100));
WriteLn('Broken pouch in slot ' + IntToStr(Slot));
end else
begin
FreeBitmap(Pouch);
Exit;
end;

CosmicRune := BitmapFromString(17, 11, 'meJx90uEKgjAUBeBH8aEKExGRIS' +
'JmmomZFiImycqMoicLep8OjC5jWnD+uO3Du6Pa6619k2y2abrLsjL' +
'PD0VRlftak3aPLUc4v8mLIrJStpqmO1/uY0KZVJMkXmc0obJV16e+' +
'f8grQRCHYRJFKZSA/4nnLX1/BUVQOY82QIbhadtMrLiujxCE+kUsy' +
'8Gj47gIYx4p5TzuhSrQGAYzTRsBxOtIjTshgu+i66ZhWLKaLBwFon' +
'MM1nXX2XwxVvKEuBTaE6SqWvwAH/YIHxg=');

AirRune := DTMFromString('m6wAAAHic42ZgYMhkZGDIB+JUIE4E4hwgTgPiZCCuAuJyII4B4gggzmZA4CwgLgDifCDOA+IMIK6AYpDc9XPncGIrYx0GKxMdBksjHTBbDqieWAx0BgMTkRgJAAD4qx4w');


begin
if FindBitmapToleranceIn(CosmicRune, x, y, MSX1, MSY1, MSX2, MSY2, 15)then
begin
Mouse(x, y, 5, 5, True);
Wait(20 + random(10));
end else
begin
FreeBitmap(Pouch);
WriteLn('Unable to find Cosmic Rune');
FreeBitmap(CosmicRune);
FreeDTM(AirRune);
exit;
end;

if FindDTM(AirRune, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Mouse(x, y, 5, 5, True);
Wait(20 + random(10));
ClickMouse2(True);
Wait(1000 + random(100));
end else
begin
FreeBitmap(Pouch);
WriteLn('Unable to find Air Rune');
FreeBitmap(CosmicRune);
FreeDTM(AirRune);
exit;
end;
end;

if FindBitmapToleranceIn(CosmicRune, x, y, MIX1, MIY1, MIX2, MIY2, 15) and FindDTM(AirRune, x, y, MIX1, MIY1, MIX2, MIY2)then
begin
CloseBank;
Wait(500);
GameTab(Tab_Magic);
Mouse(696, 229, 4, 4, True);
Wait(1500 + random(100));
Mouse(487, 280, 3, 3, true);
Wait(500 + random(200));
Mouse(434, 130, 7, 7, true);
Wait(6000 + random(200));
end else
begin
FreeBitmap(Pouch);
FreeBitmap(CosmicRune);
FreeDTM(AirRune);
exit;
end;

if FindNPCChatText('ello', Nothing)then
begin
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
ChatWait;
Wait(500 + random(100));
end;

if FindNPCChatText('pouches', ClickLeft)then
begin
Wait(500 + random(100));
ClickContinue(True, True);
ChatWait;
ClickContinue(True, True);
end;

FreeBitmap(Pouch);
OpenBankBooth;
FreeDTM(AirRune);
FreeBitmap(CosmicRune);
end;



procedure Spell;
var
x, y, CosmicRune, Pouch: integer;
begin

Pouch := BitmapFromString(8, 8, 'meJyztHOytHMyt7YHIiMzKwMTCz1D' +
'U00dfUuwOETKxNIWIq6tbwQXByKgOFALRNzawQVZPcQoiDhEClkcq' +
'AWrejLEAQsPKpE=');


CosmicRune := BitmapFromString(17, 11, 'meJx90uEKgjAUBeBH8aEKExGRIS' +
'JmmomZFiImycqMoicLep8OjC5jWnD+uO3Du6Pa6619k2y2abrLsjL' +
'PD0VRlftak3aPLUc4v8mLIrJStpqmO1/uY0KZVJMkXmc0obJV16e+' +
'f8grQRCHYRJFKZSA/4nnLX1/BUVQOY82QIbhadtMrLiujxCE+kUsy' +
'8Gj47gIYx4p5TzuhSrQGAYzTRsBxOtIjTshgu+i66ZhWLKaLBwFon' +
'MM1nXX2XwxVvKEuBTaE6SqWvwAH/YIHxg=');

if FindBitmapToleranceIn(Pouch, x, y, MIX1, MIY1, MIX2, MIY2, 15)then
begin
MMouse(x, y, 5, 5);
Slot := CoordsToItem(x, y);
Wait(500 + random(100));
WriteLn('Broken pouch in slot ' + IntToStr(Slot));
end else
begin
FreeBitmap(Pouch);
FreeBitmap(CosmicRune);
Exit;
end;

if FindBitmapToleranceIn(CosmicRune, x, y, MSX1, MSY1, MSX2, MSY2, 15)then
begin
Mouse(x, y, 5, 5, True);
Wait(250 + random(100));
CloseBank;
end else
begin
FreeBitmap(Pouch);
FreeBitmap(CosmicRune);
Exit;
end;

begin
Wait(250 + random(100));
GameTab(tab_Magic);
Wait(250 + random(100));
MMouse(600, 320, 5, 5);
Wait(250 + random(50));
end;

if IsUpText('epair')then
begin
ClickMouse2(True);
Wait(250 + random(100));
MouseItem(Slot, Mouse_Left);
end else
begin
FreeBitmap(Pouch);
FreeBitmap(CosmicRune);
Exit;
end;

Wait(1000 + random(100));
OpenBankBooth;
FreeBitmap(CosmicRune);
FreeBitmap(Pouch);

end;



procedure RepairPouches;
begin

if not(BankScreen)then
begin
Exit;
end;

Case Lowercase(Method) of
'repairspell':
begin
Spell;
end;

'contact':
begin
NPCContact;
end;

end;

end;




procedure WithdrawEss;
var
x, y, PureEssBank, Tried: integer;
A: extended;
begin

PureEssBank := BitmapFromString(16, 14, 'meJyN0NEKgkAUBNBfE3oQM7HMRE' +
'REZDE100xEij6+oYFluWYE8ziHubtK1WV5Qarq2jQ90rZD141If5u' +
'Q4T6P4wOZpuc8v/JcFcVZqVp9IBQhFKFQWVaQUP3YAkHSNCf5Zwj9' +
'JMlI1oa0IonjlEQMiS09FEUJian0lrgNCcMYhMqEguiVIDghUCZcE' +
'j3keQd/f0SoRF98Hfqu6yNUS2Iq9m176zi7NWIqTOCkr31NtNJ9y9' +
'osiVDs8xVv+6X+WQ==');

repeat

Inc(Tried);
Wait(20);

if FindNormalRandoms then
begin
ClickNorth(SRL_ANGLE_HIGH);
OpenBankBooth;
end;

until (BankScreen) or (Tried > 15);

begin
if FindDeformedBitmapToleranceIn(PureEssBank, x, y, MSX1, MSY1, MSX2, MSY2, 20, 0, false, A)then
Mouse(x, y, 5, 5, False);
WaitOption('All P', 1500);
FreeBitmap(PureEssBank);
end;

end;

procedure FillPouches;
var
Tried: integer;
begin
repeat
Inc(Tried);
Wait(25 + random (10));
FindNormalRandoms;
until (BankScreen) or (Tried > 100);

if (BankScreen)then
begin
begin
if not (SP = 0)then
begin
WithdrawEss;
MouseItem(SP, mouse_right);
(WaitOption('ill', 1500));
end;
end;

begin
if not (MP = 0)then
begin
MouseItem(MP, mouse_right);
WaitOption('ill', 1500);
end;
end;

begin
if not (LP = 0)then
begin
MouseItem(LP, mouse_right);
(WaitOption('ill', 1500));
end;
end;

begin
if not (GP = 0)then
begin
WithdrawEss;
MouseItem(GP, mouse_right);
WaitOption('ill', 1500);
end;

end;
WithdrawEss;

end else exit;

end;



procedure RunToAltar;
begin

if (SP = 0) and (MP = 0) and (LP = 0) and (GP = 0)then

begin
SPS_WalkPath(RunToAltarPath);
AntiBan;
Wait(1500 + random(100));
end else;

begin
if (InvCount > 9)then
SPS_WalkPath(RunToAltarPath);
AntiBan;
Flag;
end;

end;



procedure CraftRunes;
var
x, y, Altar, WaitCount, TimesFailed: integer;
begin

if not (InvCount = 28)then
begin
exit;
end;

Altar := DTMFromString('mKgEAAHic42NgYOAGYi0gNgNiISA2AGIVIBZkgABGIJYCYkkgVgNiJSAWBmI5IOaC8i2A2ASIbaF6QPLKQCwPZYP0a0LxpEk9DHV1FQwtzXUMU6b0MrS2NoDFmppqGPr6OsDs5oZWMI2M+YB6CWF+LGKMZGJUAAAWjxrO');

if not FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Sps_walktopos(Point(463, 1176));
while (IsMoving) do (WaitNone);
end;

begin
if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2) or FindColorSpiralTolerance(X, Y, 8288380, MSX1, MSY2, MSX2, MSY2, 15) then
begin

repeat
if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2) or FindColorSpiralTolerance(X, Y, 8288380, MSX1, MSY2, MSX2, MSY2, 15) then
begin
Stuck := 0;
Inc(TimesFailed);
Mouse(x-25, y, 10, 10, True);
end;
until (DidRedClick) or (TimesFailed > 5);

repeat
Wait(1700 + random(100));
FindNormalRandoms;
Inc(WaitCount);
until (InvCount < 10) or (WaitCount > 10);
end;
end;

begin
if not (SP = 0)then
begin
MouseItem(SP, mouse_left);
Wait(300 + random(200));
end;
end;

begin
if not (MP = 0)then
begin
MouseItem(MP, mouse_left);
Wait(300 + random(200));
end;
end;

begin
if not (LP = 0)then
begin
MouseItem(LP, 1);
Wait(300 + random(200));
end;
end;

begin
if not (GP = 0)then
begin
if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Mouse(x, y, 10, 10, True);
end;
Wait(1900 + random(50));
MouseItem(GP, mouse_left);
end;
end;

if FindDTM(Altar, x, y, MSX1, MSY1, MSX2, MSY2)then
begin
Mouse(x, y, 10, 10, True);
Wait(2000 + random(100));
AntiBan;
end;
FreeDTM(Altar);
end;



procedure Teleport;
var
WaitCount: integer;
begin

repeat
Inc(WaitCount);
FindNormalRandoms;
Wait(50 + random(25));
until (InvCount < 10) or (WaitCount > 20);

begin

Inc(Stuck);
FTab(28);
Mouse(663, 259, 3, 3, True);
Inc(TeleNumber);
FTab(25);
AntiBan;
Wait(3500 + random(100));

if FindBlackChatMessage('nes to')then
begin
WriteLn('No law runes, logging out');
Logout;
TerminateScript;
end;

end;

end;



procedure Report;
var
MageExp, RCExp, RunesCrafted, RunesHr, RCExpHr, MageExpHr, TimeRan: integer;
begin

TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
RCExp := ((GetXPBarTotal - StartingXP) - (TeleNumber * 67));
MageExp := (TeleNumber * 67);
RCExpHr := Round((RCExp * 3600) / (TimeRan));
MageExpHr := Round((MageExp * 3600) / (TimeRan));
RunesCrafted := Round(RCExp / 8.7);
RunesHr := Round(RCExpHr / 8.7);

WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*RyGuys Astral Runecrafter Report');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have gained ' + IntToStr(MageExp) + ' Magic Experience! (' + IntToStr(MageExpHr) + ' per Hour)');
WriteLn('*We have gained ' + IntToStr(RCExp) + ' Runecrafting Experience! (' + IntToStr(RCExpHr) + ' per Hour)');
WriteLn('*We have crafted ' + IntToStr(RunesCrafted) + ' Pure Ess! (' + IntToStr(RunesHr) + ' per Hour)');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;

function CurrentHP: integer;
var
s: string;
begin
Result := GetMMLevels('health', s);
end;



begin
Smart_Server := 86;
Smart_Members := True;
Smart_Signed := True;
Smart_SuperDetail := False;

SetUpSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;

ToggleXPBar(True);
StartingXP := (GetXPBarTotal);

SPS_Setup(RUNESCAPE_SURFACE, ['0_2']);
RunToAltarPath := [Point(284, 972), Point(284, 1026), Point(297, 1072), Point(331, 1104), Point(363, 1138), Point(380, 1183), Point(422, 1173), Point(463, 1176)];

ClickNorth(SRL_ANGLE_HIGH);
TimeBegan := GetSystemTime;

repeat

if not (LoggedIn)then
begin
TerminateScript;
end;

RunToBank;
OpenBankBooth;
RepairPouches;
FillPouches;
RunToAltar;
CraftRunes;
Teleport;
Report;

if (Stuck > 4) then
begin
Logout;
TerminateScript;
end;

if (FindNormalRandoms) then
begin
ClickNorth(SRL_ANGLE_HIGH);
end;

if (CurrentHP < 150)then (Logout);

until(AllPlayersInactive);

end.

People vote no and im 100% ok with that but could you guys explain what I should improve when you vote please?

bg5

2012-05-13 10:33:30

I like your code ,it's easy to read ,but you didn't show ability to use TPA functions.. I will hold my vote for now ,but I'm rather into direction to no.

Sirenia

2012-05-13 10:45:35

From: beginner5
I like your code ,it's easy to read ,but you didn't show ability to use TPA functions.. I will hold my vote for now ,but I'm rather into direction to no.


Thanks for giving helpfull advice, I will learn those and hopefully have better activity in my next shot :P

Er1k

2012-05-13 10:56:45

Do you mind telling me apart from the astral crafter what have you been working on recently? I recall seeing you around, but I think I need my memory refreshed in order to have a more comprehensive judgement.

Sirenia

2012-05-13 11:04:05

From: Er1k
Do you mind telling me apart from the astral crafter what have you been working on recently? I recall seeing you around, but I think I need my memory refreshed in order to have a more comprehensive judgement.


Invalid and I made a kebab buyer together and back on Erke I made a herblore script… Both can be found in the first script section :)

Abu

2012-05-13 11:09:01

Voted no purely based on the fact that your script is waaayyy too identical to RyGuy's

I have them open side-by-side and to be honest, it looks like his is Version 1 and yours is just Version 2.

Gucci

2012-05-14 00:07:54

From: abu_jwka
Voted no purely based on the fact that your script is waaayyy too identical to RyGuy's

I have them open side-by-side and to be honest, it looks like his is Version 1 and yours is just Version 2.


I'm gonna have to go with Abu on this one they are very identical, like the overall setup and the procedures seems very identical. Like Abu said yours just seems like an updated version

Sirenia

2012-05-14 02:21:42

From: Gucci
I'm gonna have to go with Abu on this one they are very identical, like the overall setup and the procedures seems very identical. Like Abu said yours just seems like an updated version

Yea I see that too now and I feel like an idiot for posting this :/
But I got valueable feedback however and will for sure do better :)

xtrapsp

2012-05-14 02:41:24

Sirenja ,use what you have learnt to make a runespan script or something, maybe an aio power fisher? Just try something a bit different then comeback and expand on the script you've submitted here.

:)

Sirenia

2012-05-14 05:46:57

From: xtrapsp
Sirenja ,use what you have learnt to make a runespan script or something, maybe an aio power fisher? Just try something a bit different then comeback and expand on the script you've submitted here.

:)

Thanks alot! You have no idea how good that encouragement feels :)

Nava2

2012-05-29 23:42:56

I hope you take the advice of the others in mind, I look forward to seeing you apply again soon. :)

Careful with examples ;)