SRL Archive - Archive

nkn - SRL Member Application


NKN

2012-03-28 12:23:50

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
DM(Small Programming language)


Are you a member of any other communities?
MPGH


Tell us about yourself…
From: nkn
My name is Chris, and I'm from Northern Indiana, been there my whole life. I still attend school, been on spring break the last week. A few of my hobbies would be gaming, martial arts, and football. I started programming C++ a few years back, then dropped off to a smaller language called DM mainly for programming 2D games.



Please show us one (or multiple) of your scripts.
program PowerLRC;
{$DEFINE SMART}
{$i srl/srl.simba}
{$i srl/srl/misc/paintsmart.simba}
{$i srl/srl/skill/fighting.simba}
//{$i ObjectDTM/ObjDTMInclude.simba} Keep commented out unless using Object DTM's.
var
Loads,Ore:Integer;
Loc:String;
procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := ''; // Username
Players[0].Pass := ''; // Password
Players[0].Nick := ''; // 3-4 lowercase letters from username
Players[0].Active := True; // Set to true if you want to use Player 0
Players[0].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[0].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Loc := 'Rock One';//Do not touch this.
Loads := 0//Keep to 0 for unlimited.
{
Players[1].Name := ''; // Username
Players[1].Pass := ''; // Password
Players[1].Nick := ''; // 3-4 lowercase letters from username
Players[1].Active := True; // Set to true if you want to use Player 0
Players[1].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[1].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Loc := 'Rock One';
Loads := 0//Keep to 0 for unlimited.}
{
Players[2].Name := ''; // Username
Players[2].Pass := ''; // Password
Players[2].Nick := ''; // 3-4 lowercase letters from username
Players[2].Active := True; // Set to true if you want to use Player 0
Players[2].Pin := ''; // Leave blank if the player doesn't have a bank pin
Players[2].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Loc := 'Rock One';
Loads := 0//Keep to 0 for unlimited.}
{
Players[3].Name := ''; // Username
Players[3].Pass := ''; // Password
Players[3].Nick := ''; // 3-4 lowercase letters from username; used for random event detection
Players[3].Active := True; // Set to true if you want to use Player 0
Players[3].Pin := '';
Players[3].BoxRewards := ['Xp', 'mote', 'ostume', 'oins', 'aphire', 'ssence'];
Loc := 'Rock One';
Loads := 0//Keep to 0 for unlimited.}
end;
////////////////////////////////////////////////////////////////////////////////
// //
// DO NOT TOUCH ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING //
// //
// //
////////////////////////////////////////////////////////////////////////////////

function FindGold(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box : TBox;
begin
if not LoggedIn then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12,0.12);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,2415357,MSX1,MSY1,MSX2,MSY2,4);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(True,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('pos',750))then
begin
x := MP.x; y := MP.y;
Result := True
SMART_ClearCanvas;
Break;
end;
end;

ColorToleranceSpeed(tmpCTS);
SetColorSpeed2Modifiers(0.2,0.2);
end;
function FindLift(var x, y : Integer) : Boolean;
var
a : Integer;
TPA : TPointArray;
ATPA : T2DPointArray;
MP : TPoint;
tmpCTS : Integer;
Box : TBox;
begin
if not LoggedIn then Exit;
tmpCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.12,0.12);
FindColorsSpiralTolerance(MSCX,MSCY,TPA,4616094,MSX1,MSY1,MSX2,MSY2,4);
SortTPAFrom(TPA,point(MSCX,MSCY));
ATPA := TPAtoATPAEx(TPA,15,15);
for a := 0 to High(ATPA) do
begin
MP := MiddleTPA(ATPA[a]);
Box := IntToBox((MP.x - 20),(MP.y - 20),(MP.x + 20),(MP.y + 20));
SMART_DrawBoxEx(True,Box,clYellow);
MMouse(MP.x,MP.y,4,4);
if(WaitUpText('ull',750))then
begin
x := MP.x; y := MP.y;
Result := True
SMART_ClearCanvas;
Break;
end;
end;

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

procedure Progress;
var
OrePH,XPPH:Integer;

begin
OrePH := Round((Ore * 3600) / (GetTimeRunning / 1000));
XPPH := Round(((Ore * 64) * 3600) / (GetTimeRunning / 1000));
ClearDebug;
Writeln('***********Power LRC**********');
Writeln('* ~By NKN~ ');
Writeln('*Ore Mined: ' + IntToStr(Ore) + ' (' + IntToStr(OrePH) + ' P/H)');
Writeln('*XP earned: ' + IntToStr(Ore * 64)+ ' (' + IntToStr(XPPH) + ' P/H)');
Writeln('*Total Time: ' + TimeRunning);
Writeln('********************************');
end;
procedure Antiban;
begin
FindNormalRandoms;
case Random(80) of
0: RandomRClick;
1: HoverSkill('Mining',False);
2: PickUpMouse;
3: RandomMovement;
4: BoredHuman;
5: ExamineInv;
7: SetAngle(SRL_ANGLE_HIGH);
8: Wait(5000)
end;
end;
procedure WalkingSpec(TheWalk:Integer);

begin
if not LoggedIn then Exit;
case TheWalk of
1: RadialWalkTolerance(2636105,159,186,74,5,5,15);
2: RadialWalkTolerance(1979205,136,153,74,5,5,15);
3: RadialWalkTolerance(1517617,140,220,74,5,5,10);
//All Above is Walking to Ore
4: RadialWalkTolerance(2766664,340,327,74,5,5,25);
5: RadialWalkTolerance(2766664,330,357,74,5,5,25);
6: RadialWalkTolerance(2413294,316,267,74,5,5,25);
//All Above is Walking to Bank
7: RadialWalkTolerance(2571333,329,320,74,5,5,25);
8: RadialWalkTolerance(2965067,288,262,74,5,5,25);
9: RadialWalkTolerance(12632256,340,250,45,5,5,25);
//To second rock from rock one.
10: RadialWalkTolerance(3162704,78,94,74,5,5,25);
11: RadialWalkTolerance(2413294,358,351,74,5,5,25);
//To bank, second path.

end;
end;
procedure WalkToOre;
var
i,x,y,TimesWaited,TimesFailed:Integer;
begin
MakeCompass('N')
SetAngle(SRL_ANGLE_HIGH)
if not LoggedIn then Exit;
if(TimesFailed > 1) then
begin
Exit;
end;
if InvCount > 10 then Exit;

for i := 1 to 3 do
begin
if(InFight) then
begin
Writeln('Running from fight!');
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Exit;
end;
FFlag(0);
Wait(750+random(200));
Writeln('On Walk' + IntToStr(i));
WalkingSpec(i);
Loc := 'Rock One';
end;
MakeCompass('S');
repeat
if(TimesWaited > 7) then
if(Loc = 'Rock One') then
begin
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
for i := 7 to 9 do
begin
Writeln('To the backup rock!');
FFlag(0);
Wait(750+random(200));
Writeln('On Backup Walk' + IntToStr(i - 6));
WalkingSpec(i);
Loc := 'RockTwo';
end;
MakeCompass('W');
end else//LRC Miner By NKN @ Villavu.com
begin
Exit;
end;

if(InFight) then
begin
Writeln('Running from fight!');
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
Exit;
end;
if(FindGold(x,y)) then
begin
MMouse(x,y,3,3);
Wait(1000);
if(IsUpText('pos')) then
begin
Writeln('Mining Ore!');
Mouse(x,y,1,1,True);
Antiban;
Wait(20000+random(2000));
TimesWaited := 0
end;
end else;
if(IsUpText('old')) then
begin
Continue;
end;
Antiban;
Wait(5000+random(1000))
TimesWaited := TimesWaited + 1;
TimesFailed := TimesFailed + 1;
until (InvFull)
MakeCompass('N');
SetAngle(SRL_ANGLE_HIGH);
end;
procedure WalkToBank;
var
i,x,y:Integer;
begin
MakeCompass('N')
SetAngle(SRL_ANGLE_HIGH)
if not LoggedIn then Exit;
Antiban;
if(FindSymbol(x,y,'bank')) then
begin
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Wait(1000+random(250));
until (InvCount < 1)
end;
if(Loc = 'Rock One') then
begin
for i := 4 to 6 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 3));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Loc := 'Rock One';
Wait(1000+random(250));
until (InvCount < 1)
end else
begin
for i := 10 to 11 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 9));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Wait(1000+random(250));
until (InvCount < 1)
end;
Loc := 'Rock One';
end;


procedure Mainloop;
var
LoadsLeft,x,y,Pickaxe:Integer;

begin
Antiban;
if not LoggedIn then Exit;
Pickaxe:= DTMFromString('mrAAAAHic42BgYDBiYWDQh2IdIFYHYisgNgFiDSD+DFTzA4'+
'i5GCH4C5D9FYg/QLFzZDKQZMKJ/zPgB4wEMAwAAGt3CYA=');
if(FindDTM(Pickaxe,x,y,MIX1,MIY1,MIX2,MIY2)) then
begin
Writeln('Found pickaxe in inventory!');
Mouse(x,y,3,3,True);
FreeDTM(Pickaxe);
end;
if(Loads > 0) then
begin
LoadsLeft := Loads
end else
LoadsLeft := 2;

While(LoadsLeft > 0) do
begin
Progress;
WalkToOre;
WalkToBank;
LoadsLeft := LoadsLeft - 1
if(Loads = 0) then
begin
LoadsLeft := LoadsLeft + 1
end;
end;
Players[CurrentPlayer].Active := False;
NextPlayer(Players[CurrentPlayer].Active);
end;
begin
Smart_Server := 25;
Smart_Members := False;
Smart_Signed := True;
Smart_SuperDetail := False;

ClearDebug;
SetupSRL;
//ObjDTM_Setup;
DeclarePlayers;
LoginPlayer;
repeat
SetAngle(SRL_ANGLE_HIGH);
MakeCompass('N');
GameTab(tab_Inv);
if(RunEnergy(20)) then
else
RestUntil(80);
Mainloop;
until false
end.
***********Power LRC**********
* ~By NKN~
*Ore Mined: 128 (459 P/H)
*XP earned: 8192 (29402 P/H)
*Total Time: 16 Minutes and 43 Seconds
********************************

Sin

2012-03-28 13:12:11

No from me, too new.
Ill provide an in depth analysis once im on my computer

NKN

2012-03-28 13:16:07

Alright, thanks.

masterBB

2012-03-28 13:22:26

Seems like a great script but I voted no. It seems you put quite some effort into this script yet I think it's not good enough to earn the members rank. I see some code repeated and few failsafes. Also I see ACA used as only method of finding objects on screen. If you keep improving you scripting abilities I'm sure you can get a yes vote from me later on, but at this moment it isn't.

Yago

2012-03-28 15:57:10

I personally see your scripts and your scripting talent, but I would like to see you more active around the forums. Just try to have fun and post around the forums :) I know for sure in some time you'll easily get my vote :)

Raskolnikov

2012-03-28 19:10:19

Hi there!

It seems like your trying to be a great member around here, which is really appreciated. However, there are a couple points where your script isn't very good. First, I'll go down a list of the requirements for members outlined in the "how to get into members" thread.

Definite:

Understandable scripting standards (is your script easy to read?)
Use of TPAs (TPointArrays)
Custom object finding (that means using NO FindObj*, make up your own!)
Use of auto-colouring
Walking (try not to use SPS, but instead try TPA walking/use RadialWalk)
Local variables
Loops (repeat..Until, while..do and for..to..do)
Arrays
Case statements
Randomisation (i.e. use Wait(200 + Random(300)) instead of just Wait(200))

Backups/fail safes (in case something goes wrong, do what?)
Anti-randoms
A script greater than 300 lines



Not required (but nice to show):

Memory management (i.e. don't load and free a DTM in a procedure, then continuously call that procedure. Load it once, then free it at the end of the script)
DTM finding (e.g. for inventory/bank objects, equipped items, etc)
DDTMs
Banking
Multiplayer (try to always include multiplayer unless your script is beast)
Anti-ban
Combining methods (i.e. not having one-liner procedures/functions or a separate method for every single little task)


The lines in red are what I'm really concerned about.

Standards


You need some work here.

begin
MakeCompass('N')
SetAngle(SRL_ANGLE_HIGH)
if not LoggedIn then Exit;
Antiban;
if(FindSymbol(x,y,'bank')) then
begin
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Wait(1000+random(250));
until (InvCount < 1)
end;
if(Loc = 'Rock One') then
begin
for i := 4 to 6 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 3));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Loc := 'Rock One';
Wait(1000+random(250));
until (InvCount < 1)
end else
begin
for i := 10 to 11 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 9));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then //two forward
begin //two forward
if(InvCount > 1) then //four forward
begin //four forward
Ore := Ore + InvCount; //two forward
Mouse(x,y,3,3,True); //two forward
Wait(3000) //two forward
begin //wait... what?
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else //this is fine
begin //you don't need this
Exit;
end; //you don't need this
end; //two forward
Wait(1000+random(250)); //two forward
until (InvCount < 1)
end;
Loc := 'Rock One';
end;

I can't even read your script, to be completely honest. I'm going to fix your standards then tell you the amount of things i found wrong here.

procedure WalkToBank;
var
i,x,y:Integer;
begin
MakeCompass('N')
SetAngle(SRL_ANGLE_HIGH)
if not LoggedIn then Exit;
Antiban;
if(FindSymbol(x,y,'bank')) then
begin
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Wait(1000+random(250));
until (InvCount < 1)
end;
if(Loc = 'Rock One') then
begin
for i := 4 to 6 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 3));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then
begin
if(InvCount > 1) then
begin
Ore := Ore + InvCount;
Mouse(x,y,3,3,True);
Wait(3000)
begin
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else
begin
Exit;
end;
end;
Loc := 'Rock One';
Wait(1000+random(250));
until (InvCount < 1)
end else
begin
for i := 10 to 11 do
begin
FFlag(0);
Wait(500+random(200));
Writeln('On way back to bank, number' + IntToStr(i - 9));
WalkingSpec(i);
end;
if(FindSymbol(x,y,'bank')) then
begin
Mouse(x,y,3,3,True);
Writeln('Symbol Finding, God Bless it');
end;
repeat
if(FindLift(x,y)) then //two forward
begin //two forward
if(InvCount > 1) then //four forward
begin //four forward
Ore := Ore + InvCount; //two forward
Mouse(x,y,3,3,True); //two forward
Wait(3000) //two forward
begin //wait... what?
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;
end else //this is fine
begin //you don't need this
Exit;
end; //you don't need this
end; //two forward
Wait(1000+random(250)); //two forward
until (InvCount < 1)
end;
Loc := 'Rock One';
end;

Ok. That's mostly fixed. The first thing i notice is:

          begin                    //wait... what?
Writeln('Depositing...');
QuickDeposit(SRL_DEPOSIT_ALL);
end;

Why the random begin and end? I don't understand why it's there, and it shouldn't be there.

        end else
begin
Exit;
end;

If there's only one line, you don't need a begin and end. This would be:

end else
Exit;

Please please please go read a tutorial on standards. It's the main reason i voted you down.

Walking

Not really as concerned, but you need to watch your walking procedures. You need to be careful to use failsafes just in case.

Failsafes

I have one major problem here.

until false

Why? That's quite unnerving. It should be

until AllPlayersInactive

Or whatever the function is. Just watch your failsafes.

Really, I'm voting no because your standards are really bad and you have these really bizarre random begins and ends. Not only this, but you don't really demonstrate you know scripting at the level we need. Sorry. Don't be deterred though, just fix your standards, and clear up these inefficiencies. This will make your script members worthy.

Thanks, and good luck next time.

rice

2012-03-30 05:58:41

Im voting no, standards arent quite met. also your too new

NKN

2012-03-30 14:45:01

Alright, thanks for the feedback, I can only improve from here. :D

[XoL]

2012-03-30 18:48:55

Nothing more to explain, but it seems you are on your way. I am confident you can do this next time, you need to add a few things to the script and clean it up.

Your activity seems solid for only a month.

NKN

2012-03-30 20:46:47

Thanks, what else should I add, death walking?

Abu

2012-04-08 19:37:16

I voted yes.

I love your activity around the forums and I've seen that you can be helpful at times. The script you have posted - though not perfect seems to be in full working order.

My advice is that you take on board the feedback from this thread and update the script to show no feedback has been ignored :)

Markus

2012-04-10 06:14:39

Hey, I'm sorry but it looks like you aren't getting in this time, though you sure are on the right track. You can reapply in 2 weeks, looking forward to it. Good luck!