SRL Archive - Archive

Methrend - SRL Member Application


Methrend

2012-01-05 12:33:04

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
N/A


What is your general programming knowledge?
In terms of languages known,
Java, C, C#, C++, Ruby, Perl, PHP, Python, possibly a few others I can't think of at the moment.


Are you a member of any other communities?
None pertaining to runescape and/or runescape botting


Tell us about yourself…
From: Methrend
I'm currently almost 20 years of age, residing in Brisbane, Australia. My major interests lie in all IT work, both hardware and software, with my main love being programming (of any sort, from software through to web development). I'm currently studying a Game Development degree and working as a Junior Developer for a high-status website. I heavily enjoy the challenges presented in coding various projects pertaining to games (anything from simple macros to full-fledged programs) and have become really interested in the runescape botting scene as it provides an almost unique challenge.

Currently the only script I have released is my Dwarven Resource Miner and I'm hoping to work on this a bit more before starting a new project, so that I don't lose focus. This script is posted below for your perusal, and can also be found in the "First Scripts" section
(Direct Link: http://villavu.com/forum/showthread.php?t=70929)



Please show us one (or multiple) of your scripts.
program MethDwarfMiner;
{$define SMART}
{$i srl/srl.simba}

var
numOre, numGems, numLoads, ORE_DTM, GEM_DTM, tempMX, tempMY:integer;

const
SRLStats_Username = 'Anonymous';
SRLStats_Password = 'anon1337';

LOADS = 100; //How many loads per player
DROP_GEMS = False; //Set to true to drop gems, leave false to bank
PICKAXE_EQUIPPED = True; // Set to false if pickaxe is in your inventory
BETA_MINING = False; // Set to true to use a potentially faster, but buggier mining method

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

Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 4 lowercase letters from your character name
Players[0].Active := True;

{
Players[1].Name := '';
Players[1].Pass := '';
Players[1].Nick := '';
Players[1].Active := True;

Players[2].Name := '';
Players[2].Pass := '';
Players[2].Nick := '';
Players[2].Active := True;
}
end;

(* ******************************************************************************
CREDIT TO Mayazcherquoi on IRC / Daniel on Forums

Finds multiple instances of colour, spiralling outwards from (cx, cy). Returns
only points that are not within the bounds of any of the multiple TBox's
specified in parametre, SkipBoxArray.
- by Daniel
****************************************************************************** *)
function FindColorsSpiralToleranceSkipBoxArray(const cx, cy: Integer; var Points: TPointArray; const Colour, x1, y1, x2, y2, Tolerance: Integer; SkipBoxArray: TBoxArray): Boolean;
var
I, arrLen: Integer; { Go through Points array }
sI, sArrLen: Integer; { Go through SkipBoxArray }
addCnt: Integer; { Additions count }
canAdd: Boolean; { Can add to array? }
tempPoints: TPointArray;
begin
Result := FindColorsSpiralTolerance(cx, cy, tempPoints, Colour, x1, y1, x2, y2, Tolerance);
if(not(Result)) then
Exit;

arrLen := High(tempPoints);
SetArrayLength(Points, arrLen + 1);
addCnt := 0;

sArrLen := High(SkipBoxArray);
for I := 0 to arrLen do
begin

canAdd := True;
for sI := 0 to sArrLen do
begin
if(InRange(tempPoints[I].X, SkipBoxArray[sI].X1, SkipBoxArray[sI].X2) and
InRange(tempPoints[I].Y, SkipBoxArray[sI].Y1, SkipBoxArray[sI].Y2)) then
begin
canAdd := False;
Break;
end;
end;

if(canAdd) then
begin
Points[addCnt] := tempPoints[I];
Inc(addCnt);
end;

end;
end;

function FindColorSpiralToleranceSkipBoxArray(var x, y: Integer; const cx, cy: Integer; const Colour, x1, y1, x2, y2, Tolerance: Integer; SkipBoxArray: TBoxArray): Boolean;
var
tempPoints: TPointArray;
begin
Result := FindColorsSpiralToleranceSkipBoxArray(cx, cy, tempPoints, Colour, x1, y1, x2, y2, Tolerance, SkipBoxArray);
Result := (Length(tempPoints) > 0);
if(not(Result)) then
Exit;

x := tempPoints[0].x;
y := tempPoints[0].y;
end;

function FindColorSpiralToleranceSkipBox(var x, y: Integer; const cx, cy: Integer; const Colour, x1, y1, x2, y2, Tolerance: Integer; SkipBox: TBox): Boolean;
begin
Result := FindColorSpiralToleranceSkipBoxArray(x, y, cx, cy, Colour, x1, y1, x2, y2, Tolerance, [SkipBox]);
end;
(* ******************************************************************************
End of code that isn't mine
****************************************************************************** *)

procedure AntiBan;
begin
if(not(LoggedIn)) then
Exit;

If FindNormalRandoms Then
begin
Players[CurrentPlayer].Active := False;
numLoads := 0;
NextPlayer(Players[CurrentPlayer].Active);
Exit;
end;

case Random(80) of
10: RandomRClick;
20: HoverSkill('Mining', False);
30: PickUpMouse;
40: RandomMovement;
50: BoredHuman;
59: ExamineInv;
end;
end;


procedure WalkToBank(atCoal:Boolean);
begin
MakeCompass(0);
wait(1000 + random(666));
if (atCoal) then
begin
RadialWalkTolerance(9931140, 264, 300, 70, 0, 1, 18);
wait(500 + random(227));
end;
RadialWalkTolerance(6778480, 285, 250, 62, 1, 0, 13);
wait(1000 + random(666));
end;


procedure WalkToCoal(atBank:Boolean);
begin
if (atBank) then
begin
RadialWalkTolerance(9931140, 106, 70, 50, 0, 0, 18);
wait(500 + random(227));
end;
RadialWalkTolerance(4808039, 84, 105, 67, -1, 0, 15);
wait(1000 + random(666));
end;


function isMining:Boolean;
var
Box: TBox;
begin
Box := IntToBox(245, 130, 285, 195);
Result := (AveragePixelShift(Box, 250, 500) > 260);
end;


function FindBox(open:Boolean):Boolean;
var
x, y, CTS: Integer;
begin
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.14, 0.58);
while (FindColorSpiralTolerance(x, y, 6653850, MSX1, MSY1, MSX2, MSY2, 3)) do
begin
MMouse(x, y, 2, 2);
if IsUpText('posit') then
begin
if (open) then
begin
Mouse(x, y, 2, 2, mouse_right);
end;
Result := True;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
exit;
end;
end;
Result := False;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;


function FindOre(mine, moveMouse:Boolean):Boolean;
var
x, y, CTS: Integer;
skipOre: TBox;
pointsA: TPointArray;
begin
skipOre := IntToBox(tempMX - 30, tempMY - 30, tempMX + 30, tempMY + 30);
CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.00, 0.23);
FindColorsSpiralTolerance(x, y, pointsA, 1776668, MSX1, MSY1, MSX2, MSY2, 4)

//while (FindColorSpiralTolerance(x, y, 1776668, MSX1, MSY1, MSX2, MSY2, 4)) do
while (FindColorSpiralToleranceSkipBox(x, y, MSCX, MSCY, 1776668, MSX1 + 10, MSY1 + 10, MSX2, MSY2, 4, skipOre)) do
begin
if (moveMouse) then
MMouse(x, y, 2, 2);
if (IsUpText('ine') or OptionsExist(['ine'], False)) then
begin
Result := True;
if (mine) then
begin
Mouse(x, y, 2, 2, mouse_right);
end;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
exit;
end;
end;
Result := False;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;


procedure FindOreSpot(x, y: Integer);
var
direction, yTrigPoint, xTrigPoint: Integer;
begin
yTrigPoint := (iAbs(256 - x));

if ((x >= MSCX) and (x <= (MSCX + 167))) then
begin
if (y > (MSCY + yTrigPoint)) then
direction := 3
else if (y < (MSCY - yTrigPoint)) then
direction := 1
else
direction := 0
end else if ((x <= MSCX) and (x > (MSCX - 167))) then
begin
if (y > (MSCY + yTrigPoint)) then
direction := 3
else if (y < (MSCY - yTrigPoint)) then
direction := 1
else
direction := 2
end else if (x > (MSCX + 167)) then
direction := 0
else if (x < (MSCX - 167)) then
direction := 2;

case direction of
0:
begin
x := (MSCX + 40);
y := (MSCY);
end;

1:
begin
x := (MSCX);
y := (MSCY - 40);
end;

2:
begin
x := (MSCX - 40);
y := (MSCY);
end;

3:
begin
x := (MSCX);
y := (MSCY + 40);
end;

end;

tempMX := x;
tempMY := y;
end;


procedure MineOre;
var
i, x, y, prevMX, prevMY: Integer;
begin
while (not InvFull) do
begin
If FindNormalRandoms Then
begin
Players[CurrentPlayer].Active := False;
numLoads := 0;
NextPlayer(Players[CurrentPlayer].Active);
Exit;
end;

if (BETA_MINING) then
begin
if ((FindOre(true, true)) and (not InvFull)) then
begin
while ((FindOre(false, false)) and (not InvFull)) do
begin
while ((OptionsExist(['ine'], False)) and (not InvFull)) do
begin
GetMousePos(prevMX, prevMY);
FindOreSpot(prevMX, prevMY);
ChooseOption('ine');
wait(random(300));
AntiBan;

repeat
wait(random(200));
until (not isMoving)

FindOre(True, True);

//while (MouseTooClose(tempMX, tempMY)) do
while (not OptionsExist(['ine'], False)) do
begin
FindOre(True, True);
end;

repeat
wait(random(100));
until (not isMining);

end;
if (OptionsExist(['ancel'], false)) then
ChooseOption('ancel');
FindOre(True, True);
end;
end;
end else
begin
if FindOre(True, True) then
begin
ChooseOption('ine');
wait(random(200));
AntiBan;
repeat
wait(random(500));
until (not isMining);
end;
end;

if (not InvFull) then
begin
i := i + 1;
if (i = 20) then
begin
i := 0;
if FindBox(False) then
begin
WalkToCoal(True);
end else
begin
WalkToCoal(False);
end;
end;
end;
end;

if (DROP_GEMS) then
begin
while (FindDTM(GEM_DTM, x, y, MIX1, MIY1, MIX2, MIY2)) do
begin
Mouse(x, y, 2, 2, mouse_right);
ChooseOption('rop');
end;
end;
If (Not InvFull) then
begin
MineOre;
end;
end;


procedure DepositOre;
var i, j, d, o, g: integer;
begin
d := 0;
i := 0;
j := 0;

g := CountItems('dtm', GEM_DTM, []);
o := CountItems('dtm', ORE_DTM, []);
repeat
If FindNormalRandoms Then
begin
Players[CurrentPlayer].Active := False;
numLoads := 0;
NextPlayer(Players[CurrentPlayer].Active);
Exit;
end;

if FindBox(False) then
begin
FindBox(True);
ChooseOption('posit');

while ((not DepositScreen) and (j < 20)) do
begin
wait(random(500));
j := j + 1;
end;
if (DepositScreen) then
begin
if (PICKAXE_EQUIPPED) then
begin
DepositAll;
d := 1;
end else
begin
Deposit(2, 28, True);
d := 1;
end;
numOre := numOre + o;
numGems := numGems + g;
numLoads := numLoads + 1;
stats_IncVariable('Loads Done', 1);
stats_IncVariable('Coal Ore (Mined)', o);
stats_IncVariable('Gems (Mined)', g);
end;
if (j >= 20) then
begin
j := 0
end;
end else
begin
i := i + 1;
end;

if (i = 10) then
begin
i := 0;
if FindOre(False, True) then
begin
WalkToBank(True);
end else
begin
WalkToBank(False);
end;
end;

until (d = 1);

wait(1000 + random(750));
end;

procedure CheckAtStart;
begin
if (FindBox(False)) then
begin
WalkToCoal(True);
end;
if not (FindOre(False, True)) then
begin;
WalkToCoal(False);
end;
end;


procedure ProgReport;
begin
Stats_Commit;
Writeln(' ');
Writeln(' Methrends Dwarf Coal Miner ');
Writeln(' Running For: ' + TimeRunning);
Writeln(' Total Ores Deposited: ' + IntToStr(numOre));
If (DROP_GEMS = False) then
Writeln(' Total Gems Deposited: ' + IntToStr(numGems));
Writeln(' ');
end;


begin

Smart_Server := 0;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;

ClearDebug;
SetupSRL;
SetupSRLStats(439, SRLStats_Username, SRLStats_Password);
DeclarePlayers;

ORE_DTM := DTMFromString('mggAAAHicY2NgYHBmYWCwg+IgIDYCYl8gPgKU2wrEl4B4PxCfAOLTQKyiLA0kmTDwfwbsgBEHhgAAwY8HvQ==');
GEM_DTM := DTMFromString('mAAEAAHic42FgYJjBxMCwEIjnA/ECKJ4LxJOAuAeIu4F4KhD3Q/lljBBcBMRVQFwHxA1AXA/ElVDxLCDOBuJcIBYQKgDawkQ0/s9AGmAkESMDAEPLDnQ=');

while (not (AllPlayersInactive)) do
begin
if not LoggedIn then
LoginPlayer;
while(not LoggedIn) do
wait(1000);

MakeCompass(0);
SetAngle(SRL_ANGLE_HIGH);
tempMX := MSCX;
tempMY := MSCY;

while(LoggedIn) do
begin
CheckAtStart;
MineOre;
AntiBan;
WalkToBank(True);
AntiBan;
DepositOre;
ProgReport;
WalkToCoal(True);
if ((numLoads = LOADS) and (length(Players) > 1 )) then
begin
numLoads := 0;
NextPlayer(Players[CurrentPlayer].Active);
end;
end;
end;
end.

Dynamite

2012-01-05 18:06:15

Yes.

PatDuffy

2012-01-05 18:09:52

DTM's, RadialWalk, Good Object Finding, Standards! Oh My, I like it!

You show a clear sense that you know what you are doing.

Yes from me.

Emaziz

2012-01-05 18:46:45

Noone going to comment on the fact that you've only been here for two weeks? Ah well, fine.

^ What they said.

Griff

2012-01-05 18:48:42

Yessir.

Dynamite

2012-01-05 18:50:34

This guy shows a hell of a lot more experience, skill, knowledge than some of the other recent applicants.
Sure activity comes into it but he has a reasonable amount of posts for being here 2 weeks, he has released his script and has started to help other users round the community.
As long as this work is 100% yours, I stick with my solid yes.

-Boom

Sabzi

2012-01-05 18:59:14

From: Emaziz
Noone going to comment on the fact that you've only been here for two weeks?


Oh, My, God! He has only been here for 2 weeks?! And he has less than 100 post?! This is not acceptable, absolutely no, without the need to look at the script to find more reason for voting no.
Of course it's a yes, sillies. I've gone through his posts, as it was not many, nice non-spammish, helping, script-wise posts.

Methrend

2012-01-05 21:57:02

From: Dynamite
This guy shows a hell of a lot more experience, skill, knowledge than some of the other recent applicants.
Sure activity comes into it but he has a reasonable amount of posts for being here 2 weeks, he has released his script and has started to help other users round the community.
As long as this work is 100% yours, I stick with my solid yes.

-Boom


I can guarantee you it's all my work :)

Kyle Undefined

2012-01-05 22:30:29

Dynamite, why will you vote no on some apps that are almost the same? You give the "No for being new" reason, yet you vote yes on his and say that being new isn't always bad.

I'm confused.

Voted no because of being so fresh here, however, you're off to a GREAT start! It's a solid script, but I feel it's not advanced enough to be Members worthy.

Simtoon

2012-01-06 08:35:18

Isnt SRL Members a place where people can be trusted?

It seems so easy to earn the title now..

I voted no.

Posts: 37
Join Date: Dec 2011

Like to see more activity

Harry

2012-01-06 08:53:47

Would you please post a legit proggy please with a decent runtime of the script?

Methrend

2012-01-06 09:04:33

From: Harry
Would you please post a legit proggy please with a decent runtime of the script?



This is from Version 5.1 of the script (now on Version6):
[Methrends Dwarf Coal Miner 
Running For: 1 Hours, 14 Minutes and 34 Seconds
Ores Deposited: 221

It's the longest one I have saved, since most of the time I've been running it it's been stop/start for testing purposes.
I am under the opinion that I can get a much longer runtime, and will be testing the current version without stopping tomorrow.
No one else who's used it has posted a proggy, but the commits to SRLStats show that others have been using it for extended periods (all under Anonymous…)
http://stats.villavu.com/script/439/commits

Daniel

2012-01-06 10:06:06

I thought you were going to bed? :p

It's a yes from me by the way. He is very eager to learn, is a fast learner, very good attitude, I like his language and I like him quite a lot in the first day (today) I met him :)

Methrend

2012-01-06 10:14:38

From: Daniel
I thought you were going to bed? :p

It's a yes from me by the way. He is very eager to learn, is a fast learner, very good attitude, I like his language and I like him quite a lot in the first day (today) I met him :)


I may have gotten distracted
>_>
<_<
>_>
Thanks for the yes (and again for the help earlier :))

Running a full-blown non-babysat run at the moment, just to see how long it can go without needing human interaction.

Methrends Dwarf Coal Miner 
Running For: 58 Minutes and 45 Seconds
Total Ores Deposited: 280
Total Gems Deposited: 0

That's so far and still going strong….

P1nky

2012-01-06 15:58:01

Yes. DTMs/RRW/ and got some decent Object Finding Funcs.

Good Job Mate.

Dynamite

2012-01-06 16:10:59

From: Kyle Undefined
Dynamite, why will you vote no on some apps that are almost the same? You give the "No for being new" reason, yet you vote yes on his and say that being new isn't always bad.

I'm confused.

Voted no because of being so fresh here, however, you're off to a GREAT start! It's a solid script, but I feel it's not advanced enough to be Members worthy.


Because I didn't understand the system anymore.
Now that we have sorted it.

I am sorry but I am going to have to change my vote to a no.
Your script is advanced enough but your activity isn't.

-Boom

Markus

2012-01-06 17:39:47

Guy has more posts and registration time than me when I got members, and the script is better.
Yes.

Methrend

2012-01-06 20:28:53

For those who want a proggy report, left it UNATTENDED over night and got this one:
[Methrends Dwarf Coal Miner 
Running For: 4 Hours, 58 Minutes and 22 Seconds
Total Ores Deposited: 1222
Total Gems Deposited: 10

Only stopped working cause it hit an unsolvable random. :)

Sir R. M8gic1an

2012-01-06 20:35:21

you sure could do with a lot more if not LoggedIn then exit …

and for anyone who dropped to their knees at the sight of RW…

procedure WalkToBank(atCoal:Boolean);
begin
MakeCompass(0);
wait(1000 + random(666));
if (atCoal) then
begin
RadialWalkTolerance(9931140, 264, 300, 70, 0, 1, 18);
wait(500 + random(227));
end;
RadialWalkTolerance(6778480, 285, 250, 62, 1, 0, 13);
wait(1000 + random(666));
end;


procedure WalkToCoal(atBank:Boolean);
begin
if (atBank) then
begin
RadialWalkTolerance(9931140, 106, 70, 50, 0, 0, 18);
wait(500 + random(227));
end;
RadialWalkTolerance(4808039, 84, 105, 67, -1, 0, 15);
wait(1000 + random(666));
end;

This sort of RadialWalk has no failsafes whatsoever. Certainly it hasn't been that long that you've done it?

but the script looks good imo..

-RM

WT-Fakawi

2012-01-06 20:36:54

Yes.

cause

2012-01-08 12:44:12

Looks good, yes.

nielsie95

2012-01-13 14:48:35

Welcome in!