SRL Archive - Archive

TsterT - SRL Member Application


TsterT

2012-01-05 07:41:54

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
I'm fairly familiar with Java. Java and C# are basically the same thing, so I guess I could say C# as well. I worked with Visual Basics, as well as a little of C++.


Are you a member of any other communities?
Powerbot


Tell us about yourself…
From: TsterT
My name is Mark, 15 years old. I've taken an interest in programming at an early age of 10 or so. Picking up Java at around 13, and just recently, Simba, due to my also recent interest in Runescape.

Since my discovery of Simba, I absolutely HAD to try making a script. Since then, I create scripts, as well as other programs (not specifically in Simba), as a hobby, and planning on doing so throughout the rest of my life.



Please show us one (or multiple) of your scripts.
program boneSnatcher;
{$DEFINE SMART} //{$i SRL/SRL/misc/smart.scar
{$i SRL/SRL.scar}
{$i SRL/SRL/skill/prayer.scar}
{$i SRL/SRL/misc/stats.simba}

{-----------Don't Touch-----------}
Const
version = '0.2a';
scriptName = 'Bone Snatcher';
{---------------------------------}
Const
Members = False;
boneColor = 14015199; //Color of bones to pickup
boneColor1 = 10330276; //Backup color of bones to pickup
asheColor = 5994092; //Color of ashes to pickup
asheColor1 = 5796457; //Backup color of ashes to pickup

//SRL Stats, view at [url]http://stats.villavu.com/[/url] PLEASE USE
SRLStats_Username = '';
SRLStats_Password = '';

procedure declarePlayers;
begin
HowManyPlayers := 1; //Amount of players you would like to run
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

With Players[0] do
begin
Name :=''; //ID
Pass :=''; //Password
Strings[0] := '' //Name to pick up
Booleans[0] := False; //Picking ashes
Integers[0] := 3; //Color Tolerance
Active := True;
end;
end;

{-----------------------------------------------------------}
{----------------Don't touch anything below!----------------}
{-----------------------------------------------------------}

Var
buryCount, pickCount, antiBanCount : Integer;
xpGained : Extended;
bones : String;
ashes : Boolean;
MyVars: array [0..20] of integer;

procedure AntiBan;
begin
if not LoggedIn then Exit;
Status('Antiban');
case Random(99) of
0: Begin
wait(500+random(3000));
Inc(antiBanCount);
end;
1: Begin
GameTab(tab_Stats)
HoverSkill('random', False)
GameTab(28)
Inc(antiBanCount);
end;
2: Begin
GameTab(tab_Stats)
HoverSkill('Prayer', False)
GameTab(28)
Inc(antiBanCount);
end;
3: Begin
RandomMovement;
Inc(antiBanCount);
end;
end;
end;

procedure report;
begin
MyVars[0] := Round(MyVars[0]*0.6666);
stats_IncVariable('Bones Burried', MyVars[0]);
stats_IncVariable('Bones Collected', MyVars[1]);
stats_IncVariable('Total EXP Gained', MyVars[2]);
if not(players[CurrentPlayer].Booleans[0]) then
begin
Writeln('/----------Bone Snatcher By TsterT----------\');
Writeln('|Bones Picked: ' +IntToStr(pickCount));
Writeln('|Bones Burried: ' +IntToStr(buryCount));
Writeln('|EXP Gained: ' +FloatToStr(xpGained));
Writeln('|AntiBans Performed: ' +IntToStr(antiBanCount));
Writeln('|Time Ran: ' +MsToTime(GetTimeRunning, Time_Abbrev));
Writeln('\-------------------v0.1--------------------/');
end else
Writeln('/----------Bone Snatcher By TsterT----------\');
Writeln('|Ashes Picked: ' +IntToStr(pickCount));
Writeln('|Ashes Sprayed: ' +IntToStr(buryCount));
Writeln('|EXP Gained: ' +FloatToStr(xpGained));
Writeln('|AntiBans Performed: ' +IntToStr(antiBanCount));
Writeln('|Time Ran: ' +MsToTime(GetTimeRunning, Time_Abbrev));
Writeln('\-------------------v0.1--------------------/');
Stats_Commit;
end;

Function pickUp: Boolean;
Var
x, y : Integer;
pickName : String;
Begin
pickName := players[CurrentPlayer].Strings[0];
ashes := players[CurrentPlayer].Booleans[0];
if not LoggedIn then Exit;
if not(ashes) then
begin
Status('Searching for bones');
if FindColorSpiralTolerance(x, y, boneColor, MSX1, MSY1, MSX2, MSY2, players[CurrentPlayer].Integers[0]) then
Status('Picking bones');
MMouse(x, y, 3, 3);
Wait(700 + Random(100));
if(isUpText('ake')) then
begin
Mouse(x, y, 3, 3, false);
if OptionsExist([pickName], True) then
begin
ChooseOption(pickName);
Result := True;
Inc(pickCount);
report;
end;
end else
Result := False;
end;
if (ashes = true) then
begin
Status('Searching for ashes');
if FindColorSpiralTolerance(x, y, asheColor, MSX1, MSY1, MSX2, MSY2, players[CurrentPlayer].Integers[0]) then
Status('Picking ashes');
MMouse(x, y, 3, 3);
Wait(700 + random(100));
if(isUpText('ake')) then
begin
Mouse(x, y, 3, 3, false);
if OptionsExist([pickName], True) then
begin
ChooseOption(pickName);
Result := True;
Inc(pickCount);
report;
end;
end else
Result := False;
end;
if not(Result) then
if ashes then
begin
Status('Searching ashes with backup color');
if FindColorSpiralTolerance(x, y, asheColor, MSX1, MSY1, MSX2, MSY2, players[CurrentPlayer].Integers[0]) then
Status('Picking ashes');
MMouse(x, y, 3, 3);
Wait(700 + random(100));
if(isUpText('ake')) then
begin
Mouse(x, y, 3, 3, false);
if OptionsExist([pickName], True) then
begin
ChooseOption(pickName);
Result := True;
Inc(pickCount);
report;
end;
end;
end else
if FindColorSpiralTolerance(x, y, boneColor1, MSX1, MSY1, MSX2, MSY2, players[CurrentPlayer].Integers[0]) then
Status('Searching bones with backup color');
MMouse(x, y, 3, 3);
Wait(700 + Random(100));
if(isUpText('ake')) then
begin
Mouse(x, y, 3, 3, false);
if OptionsExist([pickName], True) then
begin
ChooseOption(bones);
Result := True;
Inc(pickCount);
report;
end;
end;
wait(1000 + Random(100));
End;

procedure Bury;
var
Slots: TIntegerArray;
i: integer;
begin
ashes := players[CurrentPlayer].Booleans[0];
if not LoggedIn then Exit;
GameTab(Tab_inv);
antiBan;
Slots := [1, 2, 3, 4, 8, 7, 6, 5, 9, 10, 11, 12, 16, 15, 14, 13, 17, 18, 19,
20, 24, 23, 22, 21, 25, 26, 27, 28];
for i := 0 to 27 do
begin
if not ExistsItem(Slots[i]) then Continue;
Status('Burying Bones');
MouseItem(Slots[i], True);
Inc(buryCount);
if not(ashes) then
begin
xpGained := xpGained + 4.5;
end else
xpGained := xpGained + 12.5;
Wait(450 + random(80));
FindNormalRandoms;
report;
end;

end;

procedure startUp;
begin
MouseSpeed := 16+random(3)
SetupSRLStats(381, SRLStats_Username, SRLStats_Password);
if not LoggedIn then
declarePlayers;
Disguise(ScriptName+' v'+Version);
Loginplayer;
if LoggedIn then
setAngle(true);
end;


begin
SetUpSrl;
startUp;
ClearDebug;
ActivateClient;
setAngle(true);
Wait(1000 + Random(500));
repeat
if InvFull then
begin
bury;
end else
antiBan;
pickUp;
until(false);
end.


program BlueDragon; //Not done yet
{$i SRL/SRL/misc/smart.scar}
{$i SRL/SRL.scar}
{$i SPS/SPS.simba}
Const
version = 'v0.1';
scriptName = 'Blue Dragon Collector ';

Const
dHide = 15035717; //Color of Dragon Hide
dScale = 7417122; //Color of Dragon Scale
dInv = 4721418; //Color of Dragon Hide and Scale in inventory
shortColor = 13231081; //Color for wall
shortColor1 = 2713221; //Color for tunnel
caveColor = 5397343; //Color for cave entrance

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

With Players[0] do
begin
Name := ''
Pass := ''
Active := True;
Arrays[0] := [False, False, False];
//Bring food, eat food if full inventory, tele to town when no food
Arrays[1] := [True, False];
//Pick Dragon Hides, pick Dragon Scales
Integers[0] := 5; //Amount of food to bring (Script will not work well if inventory is full of food)
Booleans[0] := False; //Tele when 15% hp
end;
end;

Var
dPickCount, sPickCount, loadCount, antiBanCount, foodAmount : Integer;
eatFood, eatFull, teleFood, pickDHide, pickDScale, teleHP : Boolean;
falToShortP, shortToCaveP, falToBankP : TPointArray;
Reason : String;

procedure AntiBan;
begin
case random(99) of
1: Begin GameTab(tab_Stats) HoverSkill('random', false); Inc(antiBanCount); end;
2: Begin ExamineInv Inc(antiBanCount); end;
3: Begin BoredHuman; Inc(antiBanCount); end;
4: Begin PickUpMouse; Inc(antiBanCount); end;
5: Begin RandomMovement; Inc(antiBanCount); end;
6: Begin RandomAngle(true); Inc(antiBanCount); end;
end;
end;

procedure report;
begin

end;

procedure falToDrag;
Var
x, y : Integer;
begin
MakeCompass('n');
Status('Walking to shortcut');
falToShortP := [Point(3598, 3176), Point(3593, 3227)];
if SPS_WalkPath(falToShortP) then
begin
Writeln('Attempting to use shortcut');
if FindColorSpiralTolerance(x, y, shortColor, MSX1, MSY1, MSX2, MSY2, 2) then
begin
MMouse(x, y, 3, 3);
if(isUpText('rumbling')) then
begin
Mouse(x, y, 3, 3, True);
wait(500 + random(700));
Status('Walking to cave');
shortToCaveP := [Point(3564, 3229), Point(3541, 3180), Point(3509, 3160), Point(3487, 3145), Point(3446, 3110), Point(3425, 3084), Point(3410, 3069), Point(3395, 3076), Point(3377, 3069)];
if SPS_WalkPath(shortToCaveP) then
begin
if FindColorSpiralTolerance(x, y, caveColor, MSX1, MSY1, MSX2, MSY2, 2) then
begin
MMouse(x, y, 3, 3);
if(isUpText('adder')) then
begin
Mouse(x, y, 3, 3, True);
wait(500 + random(700));
Status('Searching for Blue Dragon shortcut');
end;
end;
end;
end;
end;
end;
end;

procedure checkSupplies;
begin

end;

procedure wBank;
begin
if not(BankScreen) then
begin
OpenBank('fwb', False, False);
wait(300 + random(100));
end;
if(BankScreen) then
begin
Withdraw(0, 0, 1); //Law Runes
Withdraw(1, 0, 1); //Water Runes
Withdraw(2, 0, 3); //Air Runes
if players[CurrentPlayer].Booleans[0] then
begin
Withdraw(3, 0, players[CurrentPlayer].Integers[0]);
end;
CloseBank;
Writeln('Withdrawing Done');
checkSupplies;
end;
end;

procedure dBank;
Var
x, y, hideDTM, scaleDTM : Integer;
begin
Status('Banking');
hideDTM := DTMFromString('mlwAAAHicY2dgYMhjYmDIBOJEIE4D4lIgrgXiMiDOZ2RgqALiQiBOBeIkRohYNRBz8XgBdTNhxUYMuAEjHgwFAB2JBtM=');
scaleDTM := DTMFromString('mggAAAHicY2NgYDjAxMCwH4i3Q+mjQHwEiOsYGRhagbgBiMuBuBLK5uENBupiQsGsbOoMcgzYASMODAEAV6gIVA==');
OpenBank('fwb', False, False);
wait(300 + random(100));
if(BankScreen) then
Status('Banking');
repeat
if FindDTM(hideDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
MMouse(x, y, 0, 0);
if (IsUpText('ragon')) then
Mouse(x, y, 0, 0, false);
ChooseOption('ll');
wait(100 + random(100));
until not(FindDTM(hideDTM, x, y, MIX1, MIY1, MIX2, MIY2));
repeat
if FindDTM(scaleDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
MMouse(x, y, 3, 3);
if (IsUpText('ragon')) then
Mouse(x, y, 0, 0, false);
ChooseOption('ll');
wait(100 + random(100));
until not(FindDTM(scaleDTM, x, y, MIX1, MIY1, MIX2, MIY2));
Inc(loadCount);
Writeln('Finsished Depositing');
wBank;
end;

procedure falToBank;
begin
MakeCompass('n');
Status('Walking to Bank');
falToBankP := [Point(3682, 3133), Point(3637, 3152), Point(3618, 3171), Point(3622, 3179)];
if SPS_WalkPath(falToBankP) then
dBank;
end;

procedure tele;
Var
teleDTM, x, y : Integer;
begin
Status('Teleporting');
Writeln('Returning to town due to ' + Reason);
teleDTM := DTMFromString('mbQAAAHicY2VgYPjCzMDwEIhPA7EwC1AAiFOZGBgqgDgGiKOAuAyIHeVjGWR4VRh0+PWB2ADMlmPABIxYMBgAADtYByw=');
GameTab(tab_Magic);
Writeln('Searchin for shit');
if FindDTM(teleDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
Writeln('Found that shit');
MMouse(x, y, 3, 3);
if(isUpText('alador')) then
begin
Mouse(x, y, 0, 0, True);
wait(300 + random(200));
falToBank;
end;
FreeDTM(teleDTM);
end;

procedure eat;
Var
Slots: TIntegerArray;
i: integer;
begin
if not LoggedIn then Exit;
if not(foodAmount = 0) then
begin
Status('Eating');
GameTab(tab_Inv);
antiBan;
Slots := [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 24, 23, 22, 21, 25, 26, 27, 28];
for i := 4 to 27 do
if ExistsItem(Slots[i]) then
begin
MMouseItem(Slots[i]);
if(IsUpText('Eat')) then
begin
MouseItem(Slots[i], True);
Writeln('Food ate');
foodAmount := foodAmount -1;
end;
end;
end else
Writeln('Out of food');
if (eatFull) then
begin
Reason := 'out of food';
tele;
end;
end;

procedure pick;
Var
x, y : Integer;
begin
if not(InvFull) then
begin
if pickDHide then
begin
if FindColorSpiralTolerance(x, y, dHide, MSX1, MSY1, MSX2, MSY2, 2) then
begin
MMouse(x, y, 3, 3);
if(isUpText('ake')) then
begin
Mouse(x, y, 0, 0, False);
if OptionsExist(['ide'], True) then
begin
ChooseOption('ide');
Inc(dPickCount);
end;
end;
end;
end;
if pickDScale then
begin
if FindColorSpiralTolerance(x, y, dScale, MSX1, MSY1, MSX2, MSY2, 2) then
begin
MMouse(x, y, 3, 3);
if(isUpText('ake')) then
begin
Mouse(x, y, 0, 0, False);
if OptionsExist(['cale'], True) then
begin
ChooseOption('cale');
Inc(sPickCount);
end;
end;
end;
end;
end else
if not(eatFull) then
begin
Reason := 'Inventory is full';
tele;
end else
Reason := 'Inventory is full';
eat;
end;

Function HpCheck: boolean;
begin
Status('Checking HP');
if (HPPercent < 15) and (teleHP) then
Reason := 'Emergency Teleport. Low HP';
tele;
if (HPPercent < 50) and (eatFood) then
Reason := 'Food below 50%';
eat;
end;

procedure SetUpPlayer;
begin
if not(LoggedIn) then
begin
DeclarePlayers;
ActivateClient;
LoginPlayer;
end;
if LoggedIn then
begin
setAngle(true);
SPS_Setup(RUNESCAPE_SURFACE, ['8_8', '8_7', '9_7']);
SPS_Continue := True;
eatFood := players[CurrentPlayer].Arrays[0][0]; //Eat Food
eatFull := players[CurrentPlayer].Arrays[0][1]; //Eat food when full inv
teleFood := players[CurrentPlayer].Arrays[0][2]; //Tele when no food
pickDHide := players[CurrentPlayer].Arrays[1][1]; //Pick Dragon Hide
pickDScale := players[CurrentPlayer].Arrays[1][1]; //Pick Dragon Scales
teleHP := players[CurrentPlayer].Booleans[0]; //Tele when 15% hp
if (eatFood) then
foodAmount := players[CurrentPlayer].Integers[0]; //Amount of food to bring
end;
Writeln('Finished setting up');
end;

procedure settingDisplay;
begin
Writeln(scriptName + version + ' by TsterT');
if (eatFood) then
Writeln(players[CurrentPlayer].Name + ' is eating food');
if (eatFull) then
Writeln(players[CurrentPlayer].Name + ' is eating food when full inventory.');
if (teleFood) then
Writeln(players[CurrentPlayer].Name + ' is teleporting when out of food.');
if (teleHP) then
Writeln(players[CurrentPlayer].Name + ' is teleporting when low health.');
if (pickDHide) then
Writeln(players[CurrentPlayer].Name + ' is picking Blue Dragon Hides.');
if (pickDScale) then
Writeln(players[CurrentPlayer].Name + ' is picking Blue Dragon Scales.');
end;

begin
SetUpSRL;
SetUpPlayer;
settingDisplay;
repeat
falToDrag;
wait(300 + random(200));
until(false);
end.

Thanks for reading :).

Kyle Undefined

2012-01-05 09:20:56

Holding my vote until I can look deeper into your code. But doesn't look bad for someone new.

Shuttleu

2012-01-05 09:40:26

there are a few parts where i can see your code failing

if FindColorSpiralTolerance(x, y, asheColor, MSX1, MSY1, MSX2, MSY2, players[CurrentPlayer].Integers[0]) then
Status('Picking ashes');
MMouse(x, y, 3, 3);
in this, if it finds the colour then it will cotinue as you would expect
however if it does not continue then it will still move the mouse and run the rest of the code because you dont have a begin

same again here (apart from it happens several times)

wait(300 + random(100));
if(BankScreen) then
Status('Banking');
repeat
if FindDTM(hideDTM, x, y, MIX1, MIY1, MIX2, MIY2) then
MMouse(x, y, 0, 0);
if (IsUpText('ragon')) then
Mouse(x, y, 0, 0, false);
ChooseOption('ll');
also in the second script you seem to have a couple of empty procedures

you also dont need a begin between if there are two ifs beside each other

shortToCaveP := [Point(3564, 3229), Point(3541, 3180), Point(3509, 3160), Point(3487, 3145), Point(3446, 3110), Point(3425, 3084), Point(3410, 3069), Point(3395, 3076), Point(3377, 3069)];
if SPS_WalkPath(shortToCaveP) then
begin
if FindColorSpiralTolerance(x, y, caveColor, MSX1, MSY1, MSX2, MSY2, 2) then
begin
MMouse(x, y, 3, 3);

you dont seem to have many failsafes, take falToDrag for example

on pickup you have
if (not ashes) then
then further down you had
if ashes then

you could have used a

if (not ashes) then
begin
{some code}
end else
begin
{other code}
end;

on this bit
  if not LoggedIn then
declarePlayers;
you have it only declare players if the user is not logged in, but you want to declare the players whether its logged in or not

and finally, one tiny problem with your standards, when a word is in bold, put it all in lowercase
begin // this
Begin // not this



please take this as positively not negatively. Im going to hold my vote for now while i think about it

~shut

EDIT: oh and you declared a new variable called ashes and pick name, when you could have used the variables which the user filled in

i would also like to see some TPA's and cases

TsterT

2012-01-05 09:54:18

As I stated in the second script, it isn't fully completed. I just figured it would be better to throw it in, as it shows a lot more than the first script.

And thank you for the CC, I'll look into it later today.

Kyle Undefined

2012-01-05 22:36:55

I'm going with no. I'm not looking at your second script since it's not complete. Shutt basically summed up everything. Your progress report can be optimized:


procedure report;
begin
MyVars[0] := Round(MyVars[0]*0.6666);
stats_IncVariable('Bones Burried', MyVars[0]);
stats_IncVariable('Bones Collected', MyVars[1]);
stats_IncVariable('Total EXP Gained', MyVars[2]);

Writeln('/----------Bone Snatcher By TsterT----------\');
if not(players[CurrentPlayer].Booleans[0]) then
begin
Writeln('|Bones Picked: ' +IntToStr(pickCount));
Writeln('|Bones Burried: ' +IntToStr(buryCount));
end else
begin
Writeln('|Ashes Picked: ' +IntToStr(pickCount));
Writeln('|Ashes Sprayed: ' +IntToStr(buryCount));
end;
Writeln('|EXP Gained: ' +FloatToStr(xpGained));
Writeln('|AntiBans Performed: ' +IntToStr(antiBanCount));
Writeln('|Time Ran: ' +MsToTime(GetTimeRunning, Time_Abbrev));
Writeln('\-------------------v0.1--------------------/');
Stats_Commit;
end;

This keeps you from repeating code, which isn't very good.

Keep up the great work though, I can tell you'll be big one day :)

TsterT

2012-01-06 10:07:13

Fair enough. Thanks for the honesty and CC. When I want to re-apply later down the road, would I make a new post, or just dig this one up?

Kyle Undefined

2012-01-06 10:08:47

You'd make a new application.

Hobbit

2012-01-29 18:30:52

The poll has closed and you didn't quite make it this time. Please take the suggestions made here and read some more in the tutorial section and improve your script. You may reapply in 4 weeks time.


Cheers
Hobbit