SRL Archive - Archive

Sirenia - SRL Member Application


Sirenia

2012-06-25 11:03:52

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
No


What is your general programming knowledge?
I think I know a quite bit of pascal(script?) as of today. School tried to teach us some html and we made our own page. I know the super very basics of java but other than that, nothing to speak of.


Are you a member of any other communities?
Today is this the only botting community im active in, im a member of Powerbot but arent posting or reading posts over there. I bought the ProDung script from Epicbot so I think I can say I am a member in that community but I aint posting there either.


Tell us about yourself…
From: Sirenia
Okey this is my second shot and I cant really say much have changed with me. Im just a month away from my 17th birthday and finished my first year in college for a couple weeks ago, still listen to the same kind of music and doing the same stuff during the days. Only thing that have changed is that my mother got a new house at the swedish westcoast and we bought a small sized sailingboat wich me and my little brother is learning how to use ;) We had a quick sailing course during summer last year so we have some knowledge about it.

The intro of myself was kinda short because it feels like im repeating myself and if you wish you could read my old app - http://villavu.com/forum/showthread.php?t=82172

Okey now on to the script~!
Last time I think I gathered alot of No'es because of 2 reasons:
1 I didnt use any TPA's
2 It was similar to RyGuys AstralCrafter

So how do I want to avoid this happening again?

Ive been reading through tutorials about TPA's and struggled my way through learning and supplied the script with TPA functions!
And this time I got the idea of my script from my little brother raging on all the blue dragon bots so he complete hes slayer task, I havent looked on any other script to get the idea on how write a script for handling combat so the functions you see in the script is more or less written from scratch!

The scipt ive made is a Baby BlueDragon killer! It doesnt make high profit or a large amount of combat exp but I heard you can kill the baby dragons instead of the adult ones so I think this was a good idea for completing that slayer task.
It also picks up the bones if you want to make a small profit!
I made the script for my own use so it wont bring any food to the dragons but will eat when banking bones. It will however bring food down to the dragons if I choose to make this public.

To use the script you will need TeleTabs to Falador visible in your bank and 70agility since it is using the shortcut to the dragons. I wouldnt attempt to use this on a very low lvled account. The threat from the adult dragons is almost non-existant because of all the other bots (up to 3-4) battling about dragon kills. Start infront of the western Falador bank with the tabs visible and you should be ready for a go!

Heres a small proggy

*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Sirenia's Baby BlueDragon killer!
*Time: 1 Hours, 43 Minutes and 40 Seconds
*We have done 9 Runs!
*We have gathered 245 Bones!
*We have eaten 6 Lobsters!
*We have profited 247450 Coins!
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Please show us one (or multiple) of your scripts.
program BabyBlueDragKiller;
{$DEFINE SMART}
{$i SRL/SRL.simba}
{$i sps/sps.simba}
{$i SRL/SRL/misc/paintsmart.simba}
{$i SRL/SRL/skill/fighting.simba}


Const

EatAt = 400;
TotalHP = 960;
BonesCost = 1010;
PickUpBones = True;

var
x, y, key, tablet, wall, lobster, TeleNumber,
BonesGathered, TimeBegan, LobstersEaten: integer;
aFound: extended;
ToDragonsShort, ToBankPath, ToWall, ToCavePath: TPointArray;

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

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

procedure LoadStuff;
begin

ToDragonsShort := [Point(365, 329), Point(365, 329), Point(368, 345), Point(360, 357), Point(365, 371), Point(368, 384), Point(371, 397), Point(375, 411), Point(380, 422), Point(380, 434), Point(385, 439), Point(387, 450)];
ToBankPath := [Point(3701, 3155), Point(3680, 3193), Point(3626, 3179)];
ToWall := [Point(3597, 3179), Point(3598, 3198), Point(3596, 3218), Point(3582, 3234)];
ToCavePath := [Point(3573, 3218), Point(3565, 3200), Point(3557, 3179), Point(3536, 3162), Point(3514, 3143), Point(3492, 3128), Point(3470, 3125), Point(3448, 3124), Point(3432, 3117), Point(3416, 3108), Point(3398, 3094), Point(3387, 3086), Point(3381, 3069)];

Key := BitmapFromString(24, 20, 'meJwzcfAwwYYMrZ2xcpkYGITimy' +
'FINGuiROUyqeatUq3bsBqCB8HN4XGIECuYBeQCEcQcYwc3NMVWLl5' +
'AhN8cPo9kiCEQhFUxHkOQ/YWMyPAR2ebgcoZIRr9o9mTR3GnAgCLP' +
'GSJpPUC9YvkzgIaAjMqaiCdAsDpDMLJaJKULOYTRwhlhlB1OjwhGV' +
'AondwClFBQM0BCRHuH3ThcML4eYj6kRnnLgjgEqk6hagWwCj20In2' +
'eqYGgpsjMgKRyeyNHMwXQJt3UQPL2hOQMt48DNwZU80JxBavIQK5w' +
'DDBAuM2+IOXi0QzyIJ5XiClWsCNMZwKSF5ili0jyaOcDIEi9bLFY0' +
'F81VRJoDDAqgCcB0DtEoXr4EiND8iN8cuC9A2ssWi5fMh7CBTgJyQ' +
'WkpupZD2wa7B+0QsQ/yRcEshFEl84F6eZ2igGxQRi6cw++TiSe0gS' +
'kQEl8AVC9b7Q==');

Tablet := BitmapFromString(9, 11, 'meJw7oSh7Ai8KDAzBhWbNbENGaFJ' +
'4dJEnhccuXBrJk8KKAFTIbkw=');

Wall := DTMFromString('mggAAAHicY2NgYHjNxMDwnglCvwViIWYGhr9A2pyRgcESiK2B2ASInwHVvgDiZw+OMzy9d4zh/s2DDG+enmFYsXgiw7JFExi4gXLYMCMODAEA21IVrg==');
Lobster := DTMFromString('mlwAAAHicY2dgYBBmhGBJIJYAYj4gZoeyM4HyVUBcBMQ5QFwKxIVAXAbECwLEgSQTVszPgBsw4sFQAAAAAATZ');

end;

procedure FreeStuff;
begin
FreeBitmap(Key);
FreeBitmap(Tablet);
FreeDTM(Wall);
FreeDTM(Lobster);
end;

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

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

procedure Eat;
var
x, y, Tried: integer;
begin
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;

procedure ClimbWall;
var
Tried: integer;
begin
repeat
if FindDTMRotated(Wall, x, y, MSX1, MSY1, MSX2, MSY2, -Pi, Pi, Pi/30, aFound)then
begin
MMouse(x, y, 5, 5);
Inc(Tried);
if WaitUptext('limb', 500) then
ClickMouse2(true);
end;
until((DidRedClick) or (Tried > 5));
Wait(1500 + random(200));
end;

function ClimbDown: Boolean;
var
CTS, i: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.17, 0.05);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 5065801, msx1, msy1, msx2, msy2, 25);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 50, 100);

for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 10, 10);
If WaitUpTextMulti(['own', 'eps'], 1000) then
begin
Result := True;
ClickMouse2(true);
Wait(500 + random(50));
While IsMoving do Wait(100);
Break;
end;
end;
end;

function DragonFinder: Boolean;
var
CTS, i: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 0.52);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 7231303, msx1, msy1, msx2, msy2, 18);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 50, 50 );

SMART_DrawDotsMulti(False, ATPA);

for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 7, 7);
If WaitUpTextMulti(['aby', 'ragon'], 1000) then
begin
Result := True;
ClickMouse2(true);
Wait(500 + random(50));
SMART_ClearCanvasArea(IntToBox(MSX1, MSY1, MSX2, MSY2));
While IsMoving do Wait(100);
Break;
end else
Exit;
end;
Wait(2000 + random(200));
While InFight do Wait(100);
end;

function FindBones: boolean;
var
I, CTS: Integer;
myPoint: TPoint;
Points: TPointArray;
aPoints: T2DPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.33, 2.60);
FindColorsSpiralTolerance(MSCX, MSCY, Points, 11913193, msx1, msy1, msx2, msy2, 18);
ColorToleranceSpeed(CTS);
aPoints := TPAtoATPAEx(Points, 20, 20);

SetLength(Points, 0);
for I := 0 to High(aPoints) do
begin
if Length(aPoints[i]) < 50 then
Continue;
myPoint := MiddleTPA(aPoints[i]);
MMouse(myPoint.X, myPoint.Y, 7, 7);
if WaitUpTextMulti(['ones', 'aby'], 1000) then
begin
Result := True;
ClickMouse2(true);
Inc(BonesGathered);
Wait(500 + random(50));
While IsMoving do Wait(100);
Wait(750 + random(200));
Break;
end;

if WaitUpTextMulti(['usty', 'key'], 1000) then
begin
Result := True;
ClickMouse2(false);
WaitOptionMulti(['abydragon', 'bones'], 1000);
Inc(BonesGathered);
Wait(500 + random(50));
While IsMoving do Wait(100);
Wait(750 + random(200));
Break;
end;
end;
end;

procedure PickBones;
begin

if InvFull then
Exit;
if PickUpBones = False then
Exit;

repeat
FindBones;
if not FindBones then
Exit;
until(InvFull);
end;

procedure Pipe;
var
Waited: integer;
begin
repeat
Wait(100 + random(10));
Inc(Waited);
until((PercentBlackMM > 30) or (Waited > 50));

MouseBox(284, 22, 301, 35, Mouse_Left);
Wait(750 + random(500));
While IsMoving do Wait(100);
Wait(500 + random(200));

if FindBlackChatMessage('used') then
begin
Wait(6500 + random(200));
MouseBox(288, 150, 295, 169, Mouse_Left);
end;

Wait(7000 + random(200));
end;

procedure ToCave;
begin
SPS_Setup(runescape_surface, ['8_7','8_8']);

SPS_WalkPath(ToWall);
While IsMoving do Wait(100);
ClimbWall;
SPS_WalkPath(ToCavePath);
While IsMoving do Wait(100);
ClimbDown;
end;

procedure FightDragons;
begin

begin
SPS_Setup(runescape_other,['taverly_dungeon']);
ToDragonsShort := [Point(365, 329), Point(365, 329), Point(368, 345), Point(360, 357), Point(365, 371), Point(368, 384), Point(371, 397), Point(375, 411), Point(380, 422), Point(380, 434), Point(385, 439), Point(387, 450)];
SPS_WalkPath(ToDragonsShort);
end;

repeat
DragonFinder;
AntiBan;
PickBones;
AntiBan;
FindNormalRandoms;
until(InvFull) or (CurrentHp < 150);
end;

procedure ToBank;
var
Waited: integer;
begin
SPS_Setup(runescape_surface, ['9_7']);

if FindBitmapToleranceIn(tablet, x, y, mix1, miy1, mix2, miy2, 45)then
begin
Mouse(x, y, 7, 7, true);
Inc(TeleNumber);
end;

repeat
Wait(100 + random(200));
Inc(Waited);
until(FindSymbol(x, y, 'shield') or (Waited > 50));

SPS_WalkPath(ToBankPath);
Wait(2000 + random(200));

end;

procedure HandleBank;
begin
OpenBankFast('fwb');
if BankScreen then
begin
DepositAll;
Wait(500 + random(200));
if FindBitmapToleranceIn(tablet, x, y, msx1, msy1, msx2, msy2, 45)then
begin
Mouse(x, y, 7, 7, true);
end else
begin
WriteLn('Out of Teles, exiting...');
TerminateScript;
end;
Eat;
CloseBank;
if CurrentHp < 150 then
begin
WriteLn('Low hp, exiting...');
TerminateScript;
end;
end;
end;

procedure Proggy;
var
TimeRan, Profit: integer;
begin

TimeRan := (1+((GetSystemTime - TimeBegan) / 1000));
Profit := (BonesGathered * BonesCost);


WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
WriteLn('*Sirenia''s Baby BlueDragon killer!');
WriteLn('*Time: ' + TimeRunning);
WriteLn('*We have done ' + IntToStr(TeleNumber) + ' Runs!');
Writeln('*We have gathered ' +IntToStr(BonesGathered) + ' Bones!');
WriteLn('*We have eaten ' +IntToStr(LobstersEaten) + ' Lobsters!');
WriteLn('*We have profited ' +IntToStr(Profit) + ' Coins!');
WriteLn('*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');

end;

procedure MainLoop;
begin
HandleBank;
Proggy;
ToCave;
Pipe;
FightDragons;
Tobank;
end;

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

SetUpSRL;
ActivateClient;
DeclarePlayers;
LoginPlayer;
LoadStuff;
AddOnTerminate('FreeStuff');
ClickNorth(0);

repeat
mainloop;
until(False);
end.

Tniffoc

2012-06-25 11:24:05

Its a yes from me. I've attached a list of reasons and room for improvement. Good luck with your future ventures.

TPAs
[indent]Although in a pretty standard manner, you do use TPAs, and thats enough to allow you to teach yourself to use them in more advanced ways once you're a member.[/indent]

DTMs
[indent]You use DTMs which are pretty much a necessity in any script these days.[/indent]

Standards
[indent]From what I've looked at, your indenting and standards are better than what I see in most applications. I'm a big fan of this and it helps make your code readable. There are some mistakes though, so you'll want to clean those up. I know I saw a while loop in there somewhere that wasn't indented properly.[/indent]

SPS
[indent]You use SPS. Enough said there.[/indent]

Failsafes
[indent]I didn't see too many failsafes in there. Might want to buff those up a little bit.[/indent]

Anyways, good luck with your application!

NKN

2012-06-25 11:55:16

I'll do a detailed report also:

Walking
You use SPS as walking, which is alright, but it's not that advanced.
DTMs & Bitmaps
You call your DTMs and Bitmaps in one procedure, saving time. Good job here.
Memory Leaks
You release your DTM's and Bitmaps at the end of the script.
TPA's
It seems you understand the basics of TPA's, and more in-depth knowledge of them will come later on.
Global variables
You use a lot of global variables. It's considered better if you have as little as possible. Progress Report variables should be about the only ones.
Failsafes
You don't have many failsafes, and this part here:
repeat
mainloop;
until(False);
until(False) should be until(AllPlayersInactive)


I voted yes. Good luck.

Sirenia

2012-06-29 02:02:31

Thanks alot for the feedback guys! Im going off for the weekend but hope this thread get reviewed a couple more time while im gone :)

Jakkle

2012-07-04 12:47:31

I'm voting yes.
One thing I see tho that I think would be a problem.
When clicking moving objects with left click you need to check to see if you DidRedClick.

You have,
function DragonFinder: Boolean;
var
CTS, i: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 0.52);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 7231303, msx1, msy1, msx2, msy2, 18);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 50, 50 );

SMART_DrawDotsMulti(False, ATPA);

for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 7, 7);
If WaitUpTextMulti(['aby', 'ragon'], 1000) then
begin
Result := True;
ClickMouse2(true);
Wait(500 + random(50));
SMART_ClearCanvasArea(IntToBox(MSX1, MSY1, MSX2, MSY2));
While IsMoving do Wait(100);
Break;
end else
Exit;
end;
Wait(2000 + random(200));
While InFight do Wait(100);
end;
This would be better,
function DragonFinder: Boolean;
var
CTS, i: Integer;
TPA: TPointArray;
ATPA: Array of TPointArray;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 0.52);
FindColorsSpiralTolerance(MSCX, MSCY, TPA, 7231303, msx1, msy1, msx2, msy2, 18);
ColorToleranceSpeed(CTS);
ATPA := TPAToATPAEx(TPA, 50, 50 );

SMART_DrawDotsMulti(False, ATPA);

for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 1, 1);
If WaitUpTextMulti(['aby', 'ragon'], 1000) then
begin
ClickMouse2(true);
if DidRedClick then
Result := True;
Wait(500 + random(50));
SMART_ClearCanvasArea(IntToBox(MSX1, MSY1, MSX2, MSY2));
While IsMoving do Wait(100);
Break;
end else
Exit;
end;
end;
I would then put this,
if DragonFinder then
while InFight do
begin
Wait(100);
FindNormalRandoms;
if (not LoggedIn) then
Exit;
Antiban;
if NeedFood then
EatFood;
end;
In a fighting procedure.

Good luck with your app :)

Gucci

2012-07-07 12:04:04

Voting yes for reasons already stated. Good luck

Sirenia

2012-07-10 17:12:43

May I ask for how long the poll is open? I think it was 2 weeks but I am not sure :)

[XoL]

2012-07-10 21:45:26

Yes two weeks, you will need to wait for an admin to make the final decision :D.

Sirenia

2012-07-11 02:57:15

From: R4nd0m
Yes two weeks, you will need to wait for an admin to make the final decision :D.

Okey thanks :)

Justin

2012-07-11 13:38:45

Activity is nice, script shows you have a good understanding of the SRL include.

Yes from me!

Edit: didn't notice poll was closed.

Sirenia

2012-07-26 12:11:21

I dont want to seem impantient but I think its been over 2 weeks the poll was closed so I would like a report on whats going to happend :)

Caotom

2012-07-26 12:16:21

From: Sirenia
I dont want to seem impantient but I think its been over 2 weeks the poll was closed so I would like a report on whats going to happend :)


Applications can take quite some time to be processed. Every so often an admin will make a sweep of the applications that have a much clearer result to them (eg. 30-1). The ones that are closer (10-4) can take more time as the admin may have to review the app in depth or even take a look through the persons profile to make a final decision on yes or no.

You seem to know your scripting well enough and I have seen to around the place and your attitude looks good, you seem to have a fairly good chance ;)

~Caotom

BraK

2012-07-26 19:09:31

Awaiting admin Action Closed ;)