SRL Archive - Archive

xtrapsp - SRL Member Application


xtrapsp

2012-04-19 18:01:42

IF YOU VOTE NO I WOULD APPRECIATE AN EXPLANATION PLEASE
Last time some people didn't say why




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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
N/A


What is your general programming knowledge?
Pascal
C#
Java (A Little)
PHP
HTML
CSS


Are you a member of any other communities?
Ex-Moderator (Eric Clapton) at Runedream (Quit due to unfriendly community and corrupt staff)
TheBotNet (Ex-Respected Member - Xtrapsp)
Digitalpoint (Online services, second income)
Just Rejoined Sythe, Account is from 2008


Tell us about yourself…

I own various websites, I code for my stepdad. I work with films and at the moment am working for Michelle Wraight who is making her first Feature Film.

I work at KFC, Although I want to move up in the world (Obviously haha)

My interests are:*
Helping others. I make RS guides etc
Shooting films.
Writing films.
Studying a films cinematography and other aspects such as Mise én scene and sound

I own and designed:
http://bradsblog.co.uk/
http://cheapseo4u.co.uk/
http://rhinosolar.co.uk/

I recently (On the 18th of April) got an apprenticeship with computer programming. what really impressed them was my understand for pascal and various other languages so thank you Villavu :)

Please show us one (or multiple) of your scripts.

Snippet from Private Script (Learning about Timings):
MarkTime(T);
Repeat
FindNPCTPA;
BuyItem;
if(TimeFromMark(T) > 45000 + Random(1000)) then
begin
WriteLn(TimeFromMark(T));
LodeWalk2;
end;
Until(InvFull);

Snippet from Private Script (Learning about TPA's):
function FindVulcanTPA: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.62);
FindColorsSpiralTolerance(x, y, TPA, 3037305, MSX1, MSY1, MSX2, MSY2, 12);
ATPA := SplitTPAEx(TPA, 10, 10);
DebugATPA(ATPA, 'aptatest');

if (Length(ATPA) = 0) then
begin
writeln('Could not find Vulcans colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('Ign', 100) then
begin
Writeln('Found Vulcan!');
DebugATPA(ATPA, 'aptatest');
Mouse(x, y, 3, 3, False);
Result := True;
Wait(500 + Random(1000));
ChooseOption('Trad');
Wait(500 + Random(1000));
end else
Writeln('Couldn''t find the right uptext for Vulcan.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

Now some Scripts:



This is my latest Revision of Xtra-IVY Not public Release (When I have time for it I will re-update and clean it up :) ) Need to add OBJDtm's for walking etc


program xtraivy;

{$DEFINE SMART}
{$i SRL\SRL.simba}
{$i SRL/SRL/skill/woodcutting.simba}
{$i sps/sps.simba}
{$i SRL/SRL/Misc/Debug.simba}

{===================================================================

Instructions:
1. Start by IVY (This script was written for CastleWars but it should work
elsewhere.
2. Make sure hatchet is equiped
3.Leave bot to work it's magic
4. Check every now and again as Simba hasn't done all Randoms!

XtraIVY

Release Date : 17/02/2012

Author : xtrapsp

Support: [url]http://villavu.com/forum/showthread.php?t=75528[/url]

Changelog:
06/03/2012 - Theres been a huge SRL Update so I'm learning source. Tweaking parts of code!
23/02/2012 - Changed around with the Nest Settings
20/02/2012 - Cleaned up script a bit + Setup script for addons
17/02/2012 - Chopping done.
18/02/2012 - Added Various antiban.
19/02/2012 - Added elements which aren't in use yet.


===================================================================}

Const
SRLStats_Username = '';
SRLStats_Password = '';
NumbOfPlayers= 1;
StartPlayer= 0;
Debug = True;


procedure DeclarePlayers;

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

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['amp'];
lampSkill := SKILL_WOODCUTTING;
Member := True;
Active := True;
end;

end;

function ClickNest: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.15, 0.27);

FindColorsSpiralTolerance(x, y, TPA, 5727592, MSX1, MSY1, MSX2, MSY2, 21);

ATPA := SplitTPAEx(TPA, 5, 5);

writeln('TPA split into ' + tostr(length(ATPA)) + ' parts.');

if (Length(TPA) = 0) then
begin
writeln('The TPA was empty, no colours found.');
Exit;
end;

SortATPASize(ATPA, True);
h := High(ATPA);
//writeln('ATPA is ' +tostr(h));
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('est', 100) then
begin
Writeln('Found Nest!');
Mouse(x, y, 2, 2, True);
Result := True;
Wait(8000 + Random(16000));
end else
begin
Writeln('Couldn''t find the right uptext for a Nest.');
wait (100 + Random(1000));
Makecompass('N');
end;
end;

SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;


Procedure AFK;
begin
if not loggedIn then Exit;
Case Random (100) Of
1..15 : Wait(1000 + Random (3050));
16..24 : Wait (1340 + Random (1093));
25..45: Wait (1211 + Random (6000));
46..47: Wait (20000 + Random (10000)); // This looks like you've gone to get a drink
48..67: BoredHuman;
end;
end;

Procedure Birdsnest2;
var
x, y: Integer; //IsChatBoxTextAnyLine(Text: string; TextCol: Integer): Boolean;
begin
if IsChatBoxTextAnyLine('A bird', 255) Then
begin
FindObjEx(x, y, ['ake B', 'Bird', 'nest'], [2767422, 2961972, 3818051], 5, 50, 191, 149, 354, 252);
Mouse(x, y, 0, 0, True);
Wait(1500+Random(500))
end;
end;

procedure Invfull_bank;
var
myPath:TPointArray;
BankSymbol,x,y:integer;
begin
if not LoggedIn then exit else
FindNormalRandoms;
SetColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.07);
if InvFull Then begin
Writeln('Inventory full. Attempting to walk to bank in Castle Wars');
SPS_Setup(RUNESCAPE_SURFACE,['3_10','4_10']);//SPS Areas
myPath :=[ Point(1503, 4368), Point(1564, 4365), Point(1606, 4366),
Point(1635, 4355), Point(1643, 4324), Point(1648, 4300),
Point(1645, 4286), Point(1628, 4279), Point(1605, 4280),
Point(1595, 4309), Point(1575, 4280), Point(1597, 4311)];//Path
SPS_WalkPath(myPath);
BankSymbol := DTMFromString('mggAAAHicY2NgYAhmYmCIAOIgIPYB4kAgjgRiRUYGBjkg'+
'lgJiBSBWB2JlIC4KEmY4cOAAw5bFrmCagYGR4fvbtwzYA'+
'DNYFjuGAAC7xwyd');
if FindDTM(BankSymbol,x, y,1, 1, 200, 200) then
begin
Writeln('looking for DTM Symbol');
Mouse(x,y,1,1,True);
While (IsMoving) do
begin
repeat
OpenBankChestEdge(SRL_BANK_CW);
Until(BankScreen); //there's no failsafe here, but it's fine standards wise
DepositAll;
end;
Writeln('Attempting to walk to back to IVY');
SPS_Setup(RUNESCAPE_SURFACE,['3_10','4_10','3_11']);//SPS Areas
myPath := [Point(1592, 4279), Point(1635, 4279), Point(1645, 4314),
Point(1647, 4351), Point(1594, 4385), Point(1543, 4410),
Point(1517, 4372), Point(1534, 4368), Point(1505, 4370),
Point(1519, 4369), Point(1522, 4372), Point(1514, 4375),
Point(1509, 4372), Point(1518, 4372), Point(1510, 4365),
Point(1528, 4373)];
SPS_WalkPath(myPath);
(* We revert back to the defaults here. *)
SetColorSpeed2Modifiers(0.2, 0.2);
SetColorToleranceSpeed(1);
end;
end;
end;

function ClickIVY: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.02, 0.7);
FindColorsSpiralTolerance(x, y, TPA, 4619873, MSX1, MSY1, MSX2, MSY2, 11);
ATPA := SplitTPAEx(TPA, 10, 10);
DebugATPA(ATPA, 'aptatest');

if (Length(ATPA) = 0) then
begin
writeln('Could not find IVY colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('vy', 100) then
begin
Writeln('Found Ivy!');
Mouse(x, y, 2, 2, True);
Result := True;
Wait(8000 + Random(16000));
AFK;
end else
Writeln('Couldn''t find the right uptext for IVY.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

procedure x_Stats_Commit;
var
Gained: Integer;
begin
stats_IncVariable('Woodcutting EXP', (Gained));
Stats_Commit;
Writeln('Updated SRL Stats')
end;

Procedure ProgressReport;
var
startEXP, newExp, Gained : Integer;
begin
startExp := Players[CurrentPlayer].Integers[0];
newExp := GetXPBarTotal;
Gained := newExp - startExp;
WriteLn('Exp gained: ' + ToStr(Gained));
x_Stats_Commit;
end;

Procedure Antiban_Upgrade;
var
I: Integer;
CurrentCompassDegree: Extended;
begin
I := Random(1000);
case (I) of
0..99 :
begin
GameTab(tab_Stats);
HoverSkill('ccWoodcutting', False);
GameTab(28);
end;
100..200 :
begin
SleepAndMoveMouse(7000 + Random(500));
MakeCompass(CurrentCompassDegree-18+Random(32));
end;
200..210 :
begin
GameTab(Tab_Stats);
MakeCompass(CurrentCompassDegree-2+Random(34));
Wait(3000 + Random(500));
GameTab(28);
end;
211..220 :
begin
BoredHuman;
MakeCompass('N');
end;
221..300 :
begin
GameTab(Tab_Stats);
Wait(100 + Random(1000));
end;
end;
end;

Procedure FindNest_old;
var
X, Y: Integer;
Begin
if not LoggedIn then
Exit;
FindNormalRandoms;

If FindObjCustom(x, y, ['Ne', 'st'], [3290938,3883332], 5) Then
begin
Mouse( x, y, 2, 2, True);
Writeln('Found a nest... Attempting to pickup');
MakeCompass(10 + random(50));
end;
End;

Procedure Mainloop;
begin
FindNormalRandoms;
setangle(1)
ClickIVY;
//ClickNest;
Case Random (77) Of
1..15 : Antiban_Upgrade;
end;
end;


begin
SMART_Server := 1;
SetupSRL;
DeclarePlayers;
LoginPlayer;
ToggleXPBar(True);
Players[CurrentPlayer].Integers[0] := GetXPBarTotal;
Writeln('Your using XtraIvy V 2.00');
Writeln('Please report any bugs on the thread');
Writeln('Thanks for using the most flawless IVY script on Simba :)');
MakeCompass('N');
Repeat
Mainloop;
until(Not LoggedIn);
End.


This script was removed due to leechers making up false information etc and purposly trying to ruin my thread

program XtraTeleportAIO;
{$DEFINE SMART}
{$i SRL\SRL.simba}

//Instructions
//1. Have Runes In inventory ready
//2. Run Script


Const
SRLStats_Username = '';
SRLStats_Password = '';
NumbOfPlayers= 1;
StartPlayer= 0;
Debug = True;

Teleport= 'Camelot'; // Camelot, Varrock, Lumbridge, Falador
// Ardougne, Home, Watchtower, Trollheim

var
startXP:Integer;

procedure DeclarePlayers;

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

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['amp'];
lampSkill := SKILL_WOODCUTTING;
Member := True;
Active := True;
end;

with Players[1] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['amp'];
lampSkill := SKILL_WOODCUTTING;
Member := True;
Active := True;
end;

with Players[2] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['amp'];
lampSkill := SKILL_WOODCUTTING;
Member := True;
Active := True;
end;
end;

procedure Tele;
var
x,y, teleportDTM, Teleports:integer;
begin
case teleport of
'Camelot': teleportDTM := DTMFromString('mggAAAHicY2NgYJjLxMCwGIhnAvEUIJ4DxMuB2JWRgcEWil2A2A+I3YDYwyqcwcnKAI5b594AY1yAEQeGAAD+JQw3');
'Varrock': teleportDTM := DTMFromString('mWAAAAHicY2FgYOhkZWDoAeKJQNwPxIcYGRhOM0LoU0DsYRnOYMfryOBhFc7gJB/LgA4Y0TAIAAD6xAhq');
'Lumbridge': teleportDTM:= DTMFromString('mlwAAAHicY2dgYHBhZWDwBWJrILYAYlcoPxCIHzAyMFwF4mtA/BiIXwLxayC+C8QyvCoMTlYGDO72xmDa1d4IzAZhfIARD4YCAATZDMU=');
'Falador': teleportDTM:= DTMFromString('mggAAAHicY2NgYOhlZWDoguJ+KA0Su8cIwbeg+CEUr9//mEGHX58hP7wTjGV4VRic5GMZcAFGHBgCACnhDw4=');
'Ardougne': teleportDTM:= DTMFromString('mbQAAAHicY2VgYChiZWAoBuJSIC4H4gogFmRiYOADYk4g5mWC8NfvfwzGv3//hrOxAUYsGAwArKsO8g==');
'Home': teleportDTM:= DTMFromString('mAAEAAHic42FgYNBlZWDQAmJNINZhhfD1obQhEJtDxZWB2ACIvzMyMPwC4q9A/AWIP0JpkNhPIP4GxG8YIeqYmBgY9h35xCDBKs8Qbl/EkOTTwVAWN4Ph79+/YDEf3TQGJysDMHa3N2ZwtTdiIBUwkoiRAQDUrBo+');
'Watchtower': teleportDTM:= DTMFromString('mbQAAAHicY2VgYIhkZWCIAuJYII4H4kQgVmZiYNAEYlUg1mKC8H///s3gJB8LptfvfwymsQFGLBgMAIrbDp4=');
'Trollheim': teleportDTM:= DTMFromString('mwQAAAHic42RgYChlZWAoAuIKVgi7EogLgLgMiLOBuB6I7ZkYGKyh2BmIHYDYDohNmCByIHzp4VOGv3//grGDUjIY+2jWMzhZGTA4WOiCaWIAIxEYDgCAGhOY');
end;
Gametab(Tab_Magic);
Wait(randomrange(1000,1750));
begin
FindDTM(teleportDTM, x, y, MIX1, MIY1, MIX2, MIY2);
Mouse(x,y, 2, 2, true);
wait(randomrange(100,1000));
Gametab(Tab_Magic);
Writeln('Just Teleported to:' + Teleport);
Teleports := Teleports + 1;
end;
freeDTM(teleportDTM);
end;
Procedure AFK;
begin
if not loggedIn then Exit;
Case Random (100) Of
1..15 : Wait(1000 + Random (3050));
16..24 : Wait (1340 + Random (1093));
25..45: Wait (1211 + Random (6000));
46..47: Wait (20000 + Random (10000)); // This looks like you've gone to get a drink
end;
end;

procedure Report;
var
Teleports:Integer;
begin
Writeln('You have Teleported: ' + IntToStr(Teleports) + ' Times');
Writeln('This has been running for ' + TimeRunning);
Writeln('Experience gained: ' + inttostr( (GetXPBarTotal() - startXP)));
Exit;
end;

begin
SetupSRL;
DeclarePlayers;
LoginPlayer;
startXP:=GetXPBarTotal;
Writeln('Your using Xtra-Camelot Requested Script');
Repeat
FindNormalRandoms;
Tele;
AFK;
Report;
until(Not LoggedIn);
End.

Latest project (Mostly for fun and experimenting):
Xtra-Nats. Making nature runes without needing summoning or to go into abyss :)


program XtraNats;
//{$DEFINE SMART}

{$i SRL/srl.simba}
{$i SPS/sps.simba}
{$i SRL/SRL/Misc/Debug.simba}
Const
//SRL Stats
SRLStats_Username = '';
SRLStats_Password = '';

//General setting
RSName = '';
RSPass = '';
RSPin = '';
RestAt = 20; // Not implemented yet


Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
Name := RSName;
Pass := RSPass;
Pin := RSPin;
BoxRewards := ['XP','xp','lamp'];
LampSkill := Skill_Runecrafting;
Active := True;
end;
end;

Procedure Withdraw_ess;
var
FindBankNPC: Integer;
begin
OpenBankNPC;
If PinScreen then
begin
InPin(Players[CurrentPlayer].Pin);
end;
repeat
wait(randomrange(60,110));
until(BankScreen); //Stops previous procedure start if bankscreen is found
Mouse(655, 224, 3, 3, false);
ChooseOption('All');
Withdraw(9, 0, 999);
wait(randomrange(1200,2000));
CloseBank; //Closes panel for bank
if(BankScreen) then
begin
CloseBank;
end else
Writeln('failed to bank');
end;

Procedure Walktowoodengate;
var
Woodengatepath:TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE,['8_12','8_11','7_12']);
Woodengatepath := [Point(3224, 4823), Point(3222, 4797), Point(3222, 4797),
Point(3248, 4799), Point(3263, 4806), Point(3283, 4818),
Point(3283, 4824),Point(3319, 4787), Point(3221, 4784),
Point(3172, 4809),Point(3175, 4838),Point(3176, 4862),
Point(3260, 4853), Point(3279, 4845),Point(3283, 4833),
Point(3285, 4829)];

end;
Function WalkToAltar: Boolean;
var
Altarpath:TPointArray;
begin
SPS_Setup(RUNESCAPE_SURFACE,['8_12','7_12','7_11','8_11']);
Altarpath := [Point(3346, 4834), Point(3318, 4865), Point(3237, 4865),
Point(3156, 4867), Point(3095, 4863), Point(3045, 4838),
Point(3010, 4808), Point(3000, 4788), Point(3003, 4717),
Point(3060, 4636), Point(3083, 4615), Point(3125, 4596),
Point(3189, 4586), Point(3221, 4582), Point(3292, 4561)];
end;
Function Nearbank: Boolean;
var
X, Y: Integer;
begin
if not LoggedIn then Exit;
if Findsymbol(x,y,'bank') then
begin
Mouse(x,y,5,5,Mouse_Left);
Writeln('Gone back to the bank');
end;
end;

function Findfence: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.00);
FindColorsSpiralTolerance(x, y, TPA, 1067375, MSX1, MSY1, MSX2, MSY2, 0);
ATPA := SplitTPAEx(TPA, 10, 10);
DebugATPA(ATPA, 'aptatest');

if (Length(ATPA) = 0) then
begin
writeln('Could not find the fence''s colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('wood', 100) then
begin
Writeln('Found the fence!');
DebugATPA(ATPA, 'aptatest');
Mouse(x, y, 3, 3, False);
Result := True;
Wait(500 + Random(1000));
ChooseOption('Open');
Wait(500 + Random(1000));
end else
Writeln('Couldn''t find the right uptext for the fence!.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

Function Findmetalgate: Boolean; //Redo
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.05);
FindColorsSpiralTolerance(x, y, TPA, 6579305, MSX1, MSY1, MSX2, MSY2, 9);
ATPA := SplitTPAEx(TPA, 10, 10);
DebugATPA(ATPA, 'aptatest');

if (Length(ATPA) = 0) then
begin
writeln('Could not find the metal gate colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('Meta', 100) then
begin
Writeln('Found Metalgate!');
DebugATPA(ATPA, 'aptatest');
Mouse(x, y, 3, 3, False);
Result := True;
Wait(500 + Random(1000));
ChooseOption('Ope');
Wait(500 + Random(1000));
end else
Writeln('Couldn''t find the right uptext for Metal Gate.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

Function Findbrokencart: Boolean; //redo
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.12);
FindColorsSpiralTolerance(x, y, TPA, 2834774, MSX1, MSY1, MSX2, MSY2, 7);
ATPA := SplitTPAEx(TPA, 40, 40);
DebugATPA(ATPA, 'aptatest');

if (Length(ATPA) = 0) then
begin
writeln('Could not find The Broken Cart''s colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('Ign', 100) then
begin
Writeln('Found The broken cart!!');
DebugATPA(ATPA, 'aptatest');
Mouse(x, y, 3, 3, False);
Result := True;
Wait(500 + Random(1000));
ChooseOption('Climb');
Wait(500 + Random(1000));
end else
Writeln('Couldn''t find the right uptext for ClimbBrokenCart.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;


function BypassObstacles: Boolean;
begin
if not NearBank then
Exit;
if not Findfence then
Exit;
if not FindMetalGate then
Exit;
if not FindBrokenCart then
Exit;
Result := WalkToAltar;
end;

Procedure Mainloop;
begin
Withdraw_ess;
Walktowoodengate;
BypassObstacles;
WalkToAltar;
end;


begin
SMART_Server := 22;
SetupSRL;
DeclarePlayers;
LoginPlayer;
Players[CurrentPlayer].Integers[0] := GetXPBarTotal;
Writeln('Your using XtraNats V 0.01');
Writeln('Please report important bugs on the thread');
repeat
MainLoop;
until(Not Loggedin);
End.

Start of my Slayer Script Collection:

I decided the Slayer section was too empty… People have automatically assumed it should be AIO… but I felt maybe adding a few individuals would kick it off and maybe at the end I could make an AIO.


So heres the start!

(THIS ONE IS BUGGY HOWEVER THE PRINCIPLE IS HERE)

program CaveKiller;

{$DEFINE SMART}
{$i SRL\SRL.simba}

Const
SRLStats_Username = '';
SRLStats_Password = '';
NumbOfPlayers= 1;
StartPlayer= 0;
ColourTolerance = 3;

var
x, y : Integer;

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

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['Xp', 'mote', 'ostume', 'ssence'];
Member := True;
Active := True;
end;
end;

function Cavecolour: Integer;
var
arP: TPointArray;
arC: TIntegerArray;
tmpCTS, i, arL: Integer;
X, Y, Z: Extended;
begin
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.35, 0.02);

FindColorsSpiralTolerance(MSCX, MSCY, arP, 6185308, MSX1, MSY1, MSX2, MSY2, 21);
if (Length(arP) = 0) then
begin
Writeln('Failed to find the color, no result.');
ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
end;

arC := GetColors(arP);
ClearSameIntegers(arC);
arL := High(arC);

for i := 0 to arL do
begin
ColorToXYZ(arC[i], X, Y, Z);

if (X >= 2.25) and (X <= 27.44) and (Y >= 2.44) and (Y <= 29.49) and (Z >= 2.53) and (Z <= 32.27) then
begin
Result := arC[i];
Writeln('AutoColor = ' + IntToStr(arC[i]));
Break;
end;
end;

ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2, 0.2);

if (i = arL + 1) then
Writeln('AutoColor failed in finding the color.');
end;

Procedure WaitFight;
Var
Time, x, y, WaitFight_Shield, WaitFight_Damage : integer;
begin

WaitFight_Shield := DTMFromString('mrAAAAHic42BgYOAFYgEg5gdiHiBmB2I+IGaBijECMRMQs0LlQOJcUBqkl9XUCS8mBBgJYBgAAK0nBH8='); //Sets DTMs and Names
WaitFight_Damage := DTMFromString('mbQAAAHicY2VgYNBmhGAdINYDYn0glgZiBSBWBmI5IJYA4nQ2NoYEPj4wns3DA6a5gPrRMSMWDAYAIPEEVA==');
SetDTMName(WaitFight_Shield, 'WaitFight Shield DTM');
SetDTMName(WaitFight_Damage, 'WaitFight Damage DTM');

FFlag(0); //Incase you clicked a monster that isn't close by
MarkTime(Time); //marks the time
Repeat
Wait(50+Random(50));
if(FindDTM(WaitFight_Shield, x, y, MSCX - 60, MSCY - 70, MSCX + 60, MSCY + 70))then //if it finds the blue "shield" dtm it resets the time marker
MarkTime(Time);
if(FindDTM(WaitFight_Damage, x, y, MSCX - 60, MSCY - 70, MSCX + 60, MSCY + 70))then //if it finds the res "damage" dtm it resets the time marker
MarkTime(Time);
Until(TimeFromMark(Time) > 3500); //if it hasn't found either for 2000msec then it exits, (i don't play RS much, is there a very slow weapon that this wouldn't work for?)
FreeDTM(WaitFight_Shield);
FreeDTM(WaitFight_Damage);
end;

Function Walkback: Boolean;
var
SummonSymbol,x,y:integer;
begin
Writeln('looking for Summoning Symbol');
SummonSymbol := DTMFromString('mbQAAAHicY2VgYAgG4igo7QujGRkY3IHYBYi9gTgQiPMTnYEyjHC8YMECBmyAEQsGAwCxhwYa');
if FindDTM(SummonSymbol, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Writeln('Walking to Summoning Symbol');
Mouse(x,y,1,1,True);
end;
end;


Procedure Findcave;
var
X, Y, T, Attack: Integer;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
Writeln('Looking for CaveCrawler');
if FindObjEx(X, Y, ['attack', 'Cav','rawl'], [Cavecolour], 5, 50, MSX1, MSY1, MSX2, MSY2) then
Writeln('Found one! Killing it');
Mouse(x, y, 2, 2, true);
wait(1000+ Random (1000));
Writeln('let''s hope its dead :)');
end;

function FindCaveCrawler: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.03, 0.62);
FindColorsSpiralTolerance(x, y, TPA, Cavecolour, MSX1, MSY1, MSX2, MSY2, 5);
ATPA := SplitTPAEx(TPA, 10, 10);
if (Length(ATPA) = 0) then
begin
writeln('Could not find a CaveCrawler... Really?');
Walkback;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('Cave', 100) then
begin
Writeln('Found a caveCrawler!!');
Mouse(x, y, 1, 3, False);
Wait(500 + Random(455));
ChooseOption('Attack');
end else
Writeln('Couldn''t find the right uptext for a cavecrawler.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

Procedure Poisoncheck;
var
x, y, i: Integer;

begin
Writeln('Checking for poison');
for i:=8 downto 1 do
If FindText(x, y, 'You have been', SmallChars, MCX1, MCY1, MCX2, MCY2) Then
begin
Writeln('Your Poisoned! Anti Poisoning now!');
if FindObjEx(x, y, ['Anti', 'pois'], [1951850, 1749598, 1279303, 1211971, 2018925, 1885801], 5, 50, MIX1, MIY1, MIX2, MIY2) then
begin
Writeln('Clicking AntiPoison potion');
Mouse(x, y, 2, 2, True);
Wait(1500+Random(500))
Exit;
end;
end;
exit;
end;

begin
SMART_Server := 1;
SetupSRL;
DeclarePlayers;
LoginPlayer;
Writeln('Your using CaveKillerV0.0.1');
Writeln('Please report any bugs on the thread');
Writeln('*************************************');
Writeln('******It will be buggy!!!!!**********');
Writeln('*************************************');
repeat;
Findcave;
WaitFight;
Poisoncheck;
until(Not Loggedin);
End.

And of course Xtra-Monk.

Now if any of you saw my previous App, You'd realise how TERRIBLE that was with xtra-monk. It's better now. However I need to edit the TPA's a bit more and I'm going to paint monks (Attempt to)

program xtramonk;

{$DEFINE SMART}
{$i SRL\SRL.simba}
{$i SRL/SRL/Misc/Debug.simba}
{include SPS/SPS.simba}

Const
SRLStats_Username = '';
SRLStats_Password = '';
BreakEvery = 120;
BreakFor = 5;
NumbOfPlayers= 1;
StartPlayer= 0;
Debug = True;

var
x, y, T: Integer;

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

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
Pin := '';
BoxRewards := ['Xp', 'mote', 'ostume', 'ssence'];
Member := True;
Active := True;
end;
end;
procedure Retreat;
begin
RunAway('n', True, 1, 2000);
Logout();
end;

function FindMonkattackTPA: Boolean;
var
x, y, i, h : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 1.67);
FindColorsSpiralTolerance(x, y, TPA, 2505542, MSX1, MSY1, MSX2, MSY2, 6);
ATPA := SplitTPAEx(TPA, 10, 10);

if (Length(ATPA) = 0) then
begin
writeln('Could not find monks colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('Mon', 100) then
begin
Writeln('Found monk!');
Mouse(x, y, 0, 2, False);
Result := True;
Wait(200 + Random(1000));
ChooseOption('Attack');
end else
MarkTime(T);
Writeln('Couldn''t find the right uptext for a monk.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

function FindMonkhealTPA: Boolean;
var
x, y, i, h, Next : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
begin
Next := DTMFromString('mJgIAAHicvctNCoJQFAXg44tAh0FGmDQQGlWTKLKgCKWJRhRGma2h1eRObCO2ok6vhzTImnnh4/4crgVgWgcSunxoKqbSIYf6NCKXVrSmgLbk01zlQ+rRho4U0UFwp514zyeKKVK3VxZS8Ef8xZn26j9NbxjMWnjkecFddOGFDsZJQ2b3LIMmaj9ZS12yPaPo5kSHf23L/6pKq0h5PQES0yJI');

if not LoggedIn then Exit;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.11, 1.67);
FindColorsSpiralTolerance(x, y, TPA, 2505542, MSX1, MSY1, MSX2, MSY2, 6);
ATPA := SplitTPAEx(TPA, 10, 10);
DebugATPA(ATPA, 'debugtest');
if (Length(ATPA) = 0) then
begin
writeln('Could not find monks colour');
Exit;
end;
SortATPAFromMidPoint(ATPA, Point(MSCX, MSCY));
h := High(ATPA);
for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
DebugATPA(ATPA, 'debugtest');
MMouse(x, y, 1, 2);
if WaitUpText('Mon', 100) then
begin
Writeln('Found monk!');
Mouse(x, y, 0, 2, False);
Result := True;
Wait(200 + Random(500));
ChooseOption('Talk');
Finddtm(Next,x , y, MSX1, MSX2, MSY1, MSY2);
Mouse(x, y, 0, 2,True);
wait(500+random(100));
PressKey(1);
wait(500+random(100));
Finddtm(Next,x , y, MSX1, MSX2, MSY1, MSY2);
Mouse(x, y, 0, 2,True);
end else
Writeln('Couldn''t find the right uptext for a monk.');
wait (100 + Random(1000));
end;
SetColorSpeed2Modifiers(0.2, 0.2);//Don't forget to reset back to default.
ColorToleranceSpeed(1);
end;

Procedure CheckFight;
Var
Time, x, y, WaitFight_Shield, WaitFight_Damage : integer;
begin

WaitFight_Shield := DTMFromString('mrAAAAHic42BgYOAFYgEg5gdiHiBmB2I+IGaBijECMRMQs0LlQOJcUBqkl9XUCS8mBBgJYBgAAK0nBH8='); //Sets DTMs and Names
WaitFight_Damage := DTMFromString('mbQAAAHicY2VgYNBmhGAdINYDYn0glgZiBSBWBmI5IJYA4nQ2NoYEPj4wns3DA6a5gPrRMSMWDAYAIPEEVA==');
SetDTMName(WaitFight_Shield, 'WaitFight Shield DTM');
SetDTMName(WaitFight_Damage, 'WaitFight Damage DTM');

FFlag(0); //Incase you clicked a monster that isn't close by
MarkTime(Time); //marks the time
Repeat
Wait(50+Random(50));
if(FindDTM(WaitFight_Shield, x, y, MSX1, MSY1, MSX2, MSY2))then //if it finds the blue "shield" dtm it resets the time marker
MarkTime(Time);
if(FindDTM(WaitFight_Damage, x, y, MSX1, MSY1, MSX2, MSY2))then //if it finds the red "damage" dtm it resets the time marker
MarkTime(Time);
Until(TimeFromMark(Time) > 2000); //if it hasn't found either for 2000msec then it exits, (i don't play RS much, is there a very slow weapon that this wouldn't work for?)
FreeDTM(WaitFight_Shield);
FreeDTM(WaitFight_Damage);
end;

procedure CheckHP;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
if (HPPercent > 50) and LoggedIn then
begin
exit;
end;
if (HPPercent < 50) and LoggedIn then
begin
FindMonkHealTPA;
end;
if (HPPercent < 25) and LoggedIn then
begin
Retreat;
end;

end;

Procedure Centerwalk;
var
Fountain: Integer;
begin
Fountain := DTMFromString('mWAAAAHicY2FgYOhiZWDoBOJ2IO4DYn5GBgYeIBZkhLAPnH/J0NDxmuHAgQMMCxYsYEAHjGgYBABCMwsP');
If FindDTM(Fountain, x, y, MMX1, MMY1, MMX2, MMY2) then
begin
Writeln('Walking to Fountain Symbol');
Mouse(x,y,5,5,True);
wait(500+Random(1000));
end;
end;



procedure FindMonkMM;
begin
if not LoggedIn then
Exit;
FindNormalRandoms;
if (HPPercent > 50) and LoggedIn then
begin
exit;
end;
if (HPPercent < 50) and LoggedIn then
begin
FindMonkHealTPA;
end;
if (HPPercent < 25) and LoggedIn then
begin
Retreat;
end;

end;

begin
Smart_Server := 80;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
LoginPlayer;
MarkTime(T);
Writeln('Your using XtraMonk V0.0.1');
Writeln('Please report any bugs on the thread');
Writeln('*************************************');
Writeln('******It will be buggy!!!!!**********');
Writeln('*************************************');
repeat;
FindmonkattackTPA;
Checkfight;
CenterWalk;
CheckHP;
until(Not Loggedin);
WriteLn(TimeFromMark(T));
End.


Previous Application:

http://villavu.com/forum/showthread.php?t=76799

Sin

2012-04-19 18:17:46

I'm on my phone at the moment, so I can't read through the scripts but i'm leaning towards a Yes.
Will see though.

xtrapsp

2012-04-19 18:18:30

From: Sin
I'm on my phone at the moment, so I can't read through the scripts but i'm leaning towards a Yes.
Will see though.


Thank you for your kind words Sin (I take it thats why your not replying on skype ;) haha )

Sin

2012-04-19 18:24:30

Oh god, i looked at my skype through teamviewer and saw 19 unread messages ._.

xtrapsp

2012-04-19 18:31:09

From: Sin
Oh god, i looked at my skype through teamviewer and saw 19 unread messages ._.


haha I think 5 of those might have been me :P

Anyway, I'm off… I don't want to stare at this all night.. especially if I get turned down (Which I hope not haha)

Kyle Undefined

2012-04-19 18:32:59

I vote yes :)

xtrapsp

2012-04-19 18:36:32

From: Kyle Undefined
I vote yes :)


I know I said I would go but this is to good to be true… KYLE voting yes… Achievement :D

Abu

2012-04-19 18:46:53

Voted Yes. You're part of the community and you've showed the ability to code multiple scripts.

xtrapsp

2012-04-19 18:47:30

From: abu_jwka
Voted Yes. You're part of the community and you've showed the ability to code multiple scripts.


Thank you abu :) I've seen you lurking on this thread :P Unsettling but now I feel relieved!

Abu

2012-04-19 18:50:12

From: xtrapsp
Thank you abu :) I've seen you lurking on this thread :P Unsettling but now I feel relieved!


Haha, it's all about building the tension… ;)

Sin

2012-04-19 19:18:34

I'm in half a mind here.
You DO know how to use TPAs, yet I don't see it being used very often in any of the scripts :s
You also like to use an excess of FindObj which although isn't bad, is frowned upon..
Idk, i'll think it over tonight.

I'm at like 55/45, since you asked me for help and all.
That shows you have a good attitude and are willing to swallow your pride to ask for help and all that jazz.

xtrapsp

2012-04-19 19:36:37

From: Sin
I'm in half a mind here.
You DO know how to use TPAs, yet I don't see it being used very often in any of the scripts :s
You also like to use an excess of FindObj which although isn't bad, is frowned upon..
Idk, i'll think it over tonight.

I'm at like 55/45, since you asked me for help and all.
That shows you have a good attitude and are willing to swallow your pride to ask for help and all that jazz.


Everything which has FindObj is 70% of the time left there from previous versions. (As in it's there but not used).
Also if it uses FindObj, It's probably from where I was experimenting before and forgot to change it back to TPA's haha.

Just sayin ;)

I didn't post any OBJDTM examples though… I'l post one up asap im in bed now haha

Just realised It's because I posted the wrong version of Cavecrawler. I will re-upload the newer one tomorrow which DOES have TPA's as for Xtra-IVY Those FindObj's aren't in use in the newer one :) they're there for refering to if i ever need them

As I said on Skype Sin I re-uploaded the newer version but it still uses FindObj for items in Inv. Will update that soon :P I got bored of the script though

mika

2012-04-19 20:50:08

Congratulations, yes, im impressed with your amount of knowledge. Keep up the good work, hope to see some slayer scripts in the members section.

DemiseScythe

2012-04-19 21:08:01

Tried more than 99% of the people who apply, I approve of code, yes

xtrapsp

2012-04-19 21:09:56

Thank you for your kind words everybody :)

m34tcode

2012-04-19 22:49:12

I really like your activity on the forums, big plus there.

I also like how you have steadily progressed over the last few months. You have gone far, and shown commitment to SRL. Another big plus.

Looking at your use of players, I notice this:
  repeat;
FindmonkattackTPA;
Checkfight;
CenterWalk;
CheckHP;
until(Not Loggedin);

To properly allow for multiple players, use 'until AllPlayersInactive;', as this will allow multiple characters to run through the script., That way if one fails(or finishes), the next will begin running.

This is not a huge problem, and I'm sure you will fix it ;]

Now standards, Muuch improvement. I did see this though:
    for i := 0 to h do
begin
Writeln('Length: ' + IntToStr(Length(ATPA[i])));
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 4, 4);
if WaitUpText('vy', 100) then
begin
Writeln('Found Ivy!');
Mouse(x, y, 2, 2, True);
Result := True;
Wait(8000 + Random(16000));
AFK;
end else
Writeln('Couldn''t find the right uptext for IVY.');
wait (100 + Random(1000));
end;

that last wait should not be indented, or you are missing a begin end block.
Your standards are very good throughout most of your Ivy script though.

I see Find Object functions though =\. These are very unreliable if your computer lags even a little, so I would remove them. You did demonstrate your ability to write custom Object finding code, which I like.

I vote yes. Keep up the good work =]

Jakkle

2012-04-20 01:09:53

From: DemiseScythe
Tried more than 99% of the people who apply, I approve of code.


This^

Your very good around the forums from what I've seen, like your attitude.
I like a lot how you have presented this application, put alot of thought in to it. 100% YES from me :).
Good luck, all tho I don't think you'll need it ;)

xtrapsp

2012-04-20 04:12:49

Thanks guys, Will repair those issues asap ;)

Gala

2012-04-20 10:08:11

Seems to be pretty clear, yes.

xtrapsp

2012-04-20 10:48:26

Thanks for all your support guys :)

superuser

2012-04-20 10:52:44

Yes, yes, yes.

xtrapsp

2012-04-20 11:29:14

Thankyou,thankyou,thankyou … This app is aweshum

bg5

2012-04-22 05:21:24

I'm not impressed :P ,but you show enough to get in. Yes.

xtrapsp

2012-04-22 13:34:04

13 - 0 :P I'm impressed :P

Thanks btw :)

EtherFreak

2012-04-23 19:54:10

From: xtrapsp
13 - 0 :P I'm impressed :P

Thanks btw :)


Must be your picture… ;)

xtrapsp

2012-04-24 02:01:18

From: EtherFreak
Must be your picture… ;)


haha, can't be! Had it on my last app :3

Echo_

2012-04-24 10:05:57

Voting yes, although it's pretty clear you'll get in anyways :p

xtrapsp

2012-04-24 16:10:51

From: Echo_
Voting yes, although it's pretty clear you'll get in anyways :p


Thanks :P 999th post of yours btw ;)

edit: COME ON SRL YELLOW NAME :D

'Toxin

2012-04-24 18:16:12

Yes from me as well, great work!

[XoL]

2012-04-24 18:50:01

Yes from me as well :)

cause

2012-04-25 12:34:55

I agree with Sin here, but you do have the activity and attitude needed so a yes :)

xtrapsp

2012-04-25 18:47:44

From: cause
I agree with Sin here, but you do have the activity and attitude needed so a yes :)


which part? with Findobj? Did you read the convo :P


19-0 I am happy :) Can't wait for yellow name!

Justin

2012-04-26 09:07:01

Your work is very good, Nice activity, Yes from me :)

xtrapsp

2012-04-26 14:03:49

From: [J]ustin
Your work is very good, Nice activity, Yes from me :)


:P Thanks Justin, I only just realised your skype name is exactly the same as on the forum -.- lol

xtrapsp

2012-05-01 13:25:47

Hope you haven't forgotten me :3

EtherFreak

2012-05-01 23:26:08

(in reference to your pic) All in good time Simba…

xtrapsp

2012-05-02 17:06:57

From: EtherFreak
(in reference to your pic) All in good time Simba…


it's been 2 weeks :3

Gala

2012-05-02 18:33:59

Just be patient. For me it was three weeks, cruel three weeks ;)

xtrapsp

2012-05-02 19:06:41

From: Gala
Just be patient. For me it was three weeks, cruel three weeks ;)


Just don't want my thread pushed to the bottom so you guys forget :3

Daniel

2012-05-03 01:27:30

From: xtrapsp
Just don't want my thread pushed to the bottom so you guys forget :3


The oldest stay at the top ;)

xtrapsp

2012-05-06 07:40:25

17 days :'( It's over half way to a month haha

Abu

2012-05-06 10:25:14

From: xtrapsp
17 days :'( It's over half way to a month haha


Patience is a virtue my friend and by posting on the thread, you have moved your application to the bottom.

Er1k

2012-05-06 10:36:24

From: abu_jwka
Patience is a virtue my friend and by posting on the thread, you have moved your application to the bottom.


I liked how the appliance section is completely the opposite of other boards to discourage bumping ;)

Just be patient, eventually an admin/ staff will get back to you.

nielsie95

2012-05-06 11:50:46

Sorry it took so long. Welcome in!