SRL Archive - Archive

banditmeow aka CowFish - SRL Member Application


CowFish

2009-05-21 04:02:58

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
HTML, Is SCAR one?, Is CSS one?


Are you a member of any other communities?
Don't recall so :)


Tell us about yourself…
From: banditmeow aka CowFish
Well, my name is Terry if you didn't know that and I'm 12 years old :D I've been programming lazily for a long time like since I was in first grade which was HTML. My dad and I worked on it together and made a website. Some interests are scripting(not really HTML anymore), sports, music, my friends, etc. I don't think there's really much else to say so yeah :)



Please show us one (or multiple) of your scripts.
program YewCutter;
{.include SRL\SRL.scar}
{.include SRL\SRL\skill\WoodCutting.scar}

const
YewColor1 = 2184522;
YewColor2 = 3039575;
LoadsPerPlayer = 5;//SET MEEEEE!

var
x, y, Loads, AntiBans, CurrentLoadsPerPlayer: Integer;

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

Players[0].Name := ''; //Name of Player
Players[0].Pass := ''; //Password of Player
Players[0].Nick := ''; //3-4 letters from Player's name
Players[0].Active := True;
Players[0].BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal', 'une', 'oins'];

{
Players[1].Name := ''; //Name of Player
Players[1].Pass := ''; //Password of Player
Players[1].Nick := ''; //3-4 letters from Player's name
Players[1].Active := True;
Players[1].BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal', 'une', 'oins'];

Players[2].Name := ''; //Name of Player
Players[2].Pass := ''; //Password of Player
Players[2].Nick := ''; //3-4 letters from Player's name
Players[2].Active := True;
Players[2].BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal', 'une', 'oins'];

Players[3].Name := ''; //Name of Player
Players[3].Pass := ''; //Password of Player
Players[3].Nick := ''; //3-4 letters from Player's name
Players[3].Active := True;
Players[3].BoxRewards := ['mote', 'ostume', 'XP', 'Gem', 'ithril', 'oal', 'une', 'oins'];
}
end;

procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(150) of
1:begin
RandomRClick;
Inc(AntiBans);
Wait(1000);
end;
2:begin
PickUpMouse;
Inc(AntiBans);
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Inc(AntiBans);
Wait(1000);
end;
end;
end;

procedure DoAntiRandoms;
begin
if not LoggedIn then Exit;
FindNormalRandoms;
end;

function CheckUpText: Boolean;
begin
if IsUpText('ew') or IsUpText('Yew') then
begin
Result := True;
Status('Chopping Yews.');
end else
begin
Result := False;
Status('Not chopping Yews.');
end;
end;

procedure FindYew;
var
x, y: Integer;
begin
if not LoggedIn then
Exit;
if FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
begin
Mouse(x, y, 0, 0, True);
GetMousePos(x, y);
while CheckUpText = True do
repeat
Wait(100);
AntiBan;
DoAntiRandoms;
MMouse(x, y, 0, 0);
CheckUpText;
if InChat('full to') then
Exit;
until(CheckUpText = False or InvFull);
end else
begin
if FindObjTPA(x, y, YewColor2, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
Mouse(x, y, 0, 0, True);
GetMousePos(x, y);
while CheckUpText = True do
repeat
Wait(100);
AntiBan;
DoAntiRandoms;
CheckUpText;
MMouse(x, y, 0, 0);
if InChat('full to') then
Exit;
until(CheckUpText = False or InvFull);
end;
end;

procedure NewTree;
var
x, y, DirtRoad: Integer;
begin
if not LoggedIn then
Exit;
DirtRoad := BitmapFromString(7, 8, 'beNoriugsGgoIAHc8Sik=');
begin
if not FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
MakeCompass('N');
Status('Going to the far tree :)');
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 101, 106, 59, 0, 0);
FFlag(5);
else
begin
FindYew;
repeat
if IsUpText('ew') then
Wait(100);
until(IsUpText('alk'));
end else
//RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 260, 270, 65, 0, 0);
Mouse(570, 70, 0, 0, True);
FFlag(5);
repeat
Wait(100);
until(FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']));
end;
end;


procedure AxeFinder;
var
Axe, x, y: Integer;
begin
if not LoggedIn then
Exit;
begin
Axe := DTMFromString('78DA6334676660D8CCC8800C3A33841844803' +
'448F43F103082D4AC415503918591401AA466270135AE44986302' +
'547300B71AA02C0300E00409DB');
if FindDTM(Axe, x, y, 0, 0, 700, 700) then
begin
GameTab(4);
WriteLn('Axe is in Inventory.');
Players[CurrentPlayer].Booleans[0] := False;
FreeDTM(Axe);
end else
begin
GameTab(5);
if FindDTM(Axe, x, y, 0, 0, 700, 700) then
WriteLn('Axe is equipped.');
Players[CurrentPlayer].Booleans[0] := True;
FreeDTM(Axe);
end;
GameTab(4);
end;
end;

procedure BankYews;
begin
if not LoggedIn then
Exit;
begin
repeat
Wait(100);
until(FindObjTPA(x, y, 5133396, 5, 121, 60, 1, 5, ['ank', 'ker', 'Banker']));
Status('Banking');
Mouse(x, y, 0, 0, False);
Wait(700 + Random(300));
ChooseOption('ank Banker');
if(Players[CurrentPlayer].Booleans[0] = True) then
DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);
if(Players[CurrentPlayer].Booleans[0] = False) then
Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);
if not FindObj(x, y, 'anker', 879767, 5) then
SymbolAccuracy := 0.5;
if FindSymbol(x, y, 'bank') then
Mouse(x, y, 0, 0, True);
FFlag(5);
if FindObjTPA(x, y, 5133396, 5, 121, 60, 1, 5, ['ank', 'ker', 'Banker']) then
begin
Mouse(x, y, 0, 0, False);
Wait(700 + Random(300));
ChooseOption('ank Banker');
if(Players[CurrentPlayer].Booleans[0] = True) then
DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);
if(Players[CurrentPlayer].Booleans[0] = False) then
Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);
end;
end;
end;

procedure WalkToBank;
var
x, y,DirtRoad, GeFloor, SymbolDTM: Integer;
begin
if not LoggedIn then
Exit;
begin
DirtRoad := BitmapFromString(7, 8, 'beNoriugsGgoIAHc8Sik=');
GeFloor := BitmapFromString(9, 7, 'beNqrLKysHLIIAG4gV14=');
if InvFull or InChat('full to') then
if FindSymbol(x, y, 'Tree') then
Status('Walking to bank');
MakeCompass('N');
SymbolAccuracy := 0.5;
Mouse(x, y, 0, 0, True);
Wait(3000 + Random(500));
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 236, 234, 55, 0, 0);
Wait(1000 + Random(300));
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 236, 234, 55, 0, 0);
Wait(100 + Random(300));
RadialWalk(AutoColorThis(GeFloor, 20, MMX1, MMY1, MMX2, MMY2) , 267, 273, 60, 0, 0);
FreeBitmap(DirtRoad);
FreeBitmap(GeFloor);
WriteLn('Walked to Bank!');
end;
end;

procedure WalkBackToYews;
var
x, y, DirtRoad, SymbolDTM: Integer;
begin
if not LoggedIn then
Exit;
begin
MakeCompass('N');
DirtRoad := BitmapFromString(7, 8, 'beNoriugsGgoIAHc8Sik=');
if FindSymbol(x, y, 'bank') then
Status('Returning to yews');
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2) , 85, 92, 72, 0, 0);
FFlag(2);
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2) , 42, 46, 70, 0, 0);
if FindSymbol(x, y, 'Tree') then
Mouse(x+3, y-4, 0, 0, True);
WriteLn('Walked back to trees!');
FreeBitmap(DirtRoad);
end;
end;

procedure Proggy;
begin
ClearDebug;
WriteLn('************************************');
WriteLn(' Yew Cutter ');
WriteLn(' by banditmeow aka CowFish ');
WriteLn(' ');
WriteLn('Worked for ' + TimeRunning + '!');
WriteLn('Did ' + IntToStr(Loads) + ' loads! ');
WriteLn('Performed ' + IntToStr(AntiBans) + ' antibans!');
WriteLn('Gained ' + IntToStr(Loads * 175) + ' experience!');
WriteLn('************************************');
end;

procedure Startup;
begin
ClearDebug;
WriteLn('_____.___. _________ __ __ ');
WriteLn('\__ | | ______ _ __ \_ ___ \ __ ___/ |__/ |_ ___________ ');
WriteLn(' / | |/ __ \ \/ \/ / / \ \/| | \ __\ __\/ __ \_ __ \');
WriteLn(' \____ \ ___/\ / \ \___| | /| | | | \ ___/| | \/');
WriteLn(' / ______|\___ >\/\_/ \______ /____/ |__| |__| \___ >__| ');
WriteLn(' \/ \/ \/ \/ ');
Wait(5000);
end;

procedure ScriptTerminate;
begin
Proggy;
end;

procedure MainLoop;
begin
DeclarePlayers;
LoginPlayer;
AxeFinder;
SetRun(True);
repeat
repeat
FindYew;
NewTree;
until(InvFull or InChat('full to'));
AntiBan;
DoAntiRandoms;
WalkToBank;
BankYews;
Proggy;
AntiBan;
DoAntiRandoms;
WalkBackToYews;
if CurrentLoadsPerPlayer = LoadsPerPlayer then
begin
NextPlayer(True);
end;
if not LoggedIn then
NextPlayer(False);
until(IsFKeyDown(12));
end;

begin
StartUp;
SetupSRL;
MouseSpeed := RandomRange(12, 18);
ActivateClient;
repeat
MainLoop;
until(AllPlayersInactive);
end.

Dynamite

2009-05-21 04:20:30

if FindFight then
RunAway('W', True, 1, 5000 + Random(2500));
You dont need that, all talking and fighting randoms are gone.
begin
if not LoggedIn or FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
Exit;
DirtRoad := BitmapFromString(7, 8, 'beNoriugsGgoIAHc8Sik=');
begin
if not FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
MakeCompass('N');
Status('Going to the far tree :)');
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 101, 106, 59, 0, 0);
FFlag(5);
if FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['Yew', 'ew']) then
begin
FindYew;
Change to
begin
if not LoggedIn or FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
Exit;
DirtRoad := BitmapFromString(7, 8, 'beNoriugsGgoIAHc8Sik=');
begin
if not FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
MakeCompass('N');
Status('Going to the far tree :)');
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 101, 106, 59, 0, 0);
FFlag(5);
else
begin
FindYew;
Also I think there is already autocolor for DirtRoad.

But i swear
if not LoggedIn or FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
Exit;
That will stop script if it doesnt find the yew and then you have
if not FindObjTPA(x, y, YewColor1, 5, 121, 115, 1, 5, ['ew', 'Yew']) then
MakeCompass('N');
blah...
but you have already exited? So you cant do this?
Only half of the script and this on my phone ;)
So at the moment I am holding my vote :)

T~M

CowFish

2009-05-21 04:22:29

Will change those, I'm not sure why I added that part to it because it will already find if it's not there…. also the Exit would not stop the script it would simply skip the procedure because if it can find the yew then it is unnecessary to move around. Not sure about the autocolor but I also had to find the grand exchange floor.

Dynamite

2009-05-21 04:28:16

if not FindDTM(Axe, x, y, 0, 0, 700, 700) then
Another 'else' should be used.

Your BankYews procedure is awfully ugly!
If you havent already I will pretty it up in the morning

Also add as many failsafes to your walking and stuff as possible!

Hope this helps
Good Luck

T~M

NCDS

2009-05-21 05:30:09

Instead of using all these Inc(AntiBans);

procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(150) of
1:begin
RandomRClick;
Inc(AntiBans);
Wait(1000);
end;
2:begin
PickUpMouse;
Inc(AntiBans);
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Inc(AntiBans);
Wait(1000);
end;
end;
end;
You can just do:

procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(150) of
1:begin
RandomRClick;
Wait(1000);
end;
2:begin
PickUpMouse;
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Wait(1000);
end;
end;
Inc(AntiBans);
end;


Wait(3000 + Random(500));
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 236, 234, 55, 0, 0);
Wait(1000 + Random(300));
RadialWalk(AutoColorThis(DirtRoad, 30, MMX1, MMY1, MMX2, MMY2), 236, 234, 55, 0, 0);
Wait(100 + Random(300));
RadialWalk(AutoColorThis(GeFloor, 20, MMX1, MMY1, MMX2, MMY2) , 267, 273, 60, 0, 0);
Pretty much everytime you use RadialWalk or RadialRoadWalk it should be a if..then so you can make sure it doesn't fail.


begin
repeat
Wait(100);
until(FindObjTPA(x, y, 5133396, 5, 121, 60, 1, 5, ['ank', 'ker', 'Banker']));
Possible endless loop?
If the script never finds the object then it will be stuck waiting there until the user stop's it.


if(Players[CurrentPlayer].Booleans[0] = True) then
DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);
if(Players[CurrentPlayer].Booleans[0] = False) then
Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);
Try and use else/end else when possible. I see you did in other places.

Overall from what I can see it's not too bad, but I think there are areas you need to work on which I mentioned above.

Take your time when your scripting and take pride in it.

Your well on your way to Member's but I haven't been shown enough to press "yes" yet.

I wont press "No" either though. ;)

Good Luck!

P1nky

2009-05-21 05:56:24

i like it though I don't think its enough for SRL members.

instead of FindObjTPA , you should make your own TPA and add DDTM's make it more like uhmmm *pizazz* like more advance.

Thanks

Griff

2009-05-21 06:42:26

I like what you have, but I don't think you are ready for members yet. Try learning a more advanced object finding, and dtms, or ddtms for walking. I'm going o have o vote no for now, but I like your attitude, and I almost guarantee you will get members if you apply again and you don't make it this time.

Sir R. M8gic1an

2009-05-21 13:46:02

no. and I am quite disappointed with the members that posted.

let's take a small example:

if(Players[CurrentPlayer].Booleans[0] = True) then
DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);
if(Players[CurrentPlayer].Booleans[0] = False) then
Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);

when you use if or else or… well, most scar commands it will only check one line bellow it, unless you have a begin.
I will now bold what your ifs will affect.


if(Players[CurrentPlayer].Booleans[0] = True) then
[INDENT] DepositAll;[/INDENT]
CloseBank;
Inc(CurrentLoadsPerPlayer);

if(Players[CurrentPlayer].Booleans[0] = False) then
[INDENT] Deposit(2,28, True);[/INDENT]
CloseBank;
Inc(CurrentLoadsPerPlayer);



this means that it'd do CloseBank and Inc() twice, independantly of the ifs. you need begins and ends.


if(Players[CurrentPlayer].Booleans[0] = True) then
begin
[INDENT] DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);[/INDENT]
end;

if(Players[CurrentPlayer].Booleans[0] = False) then
begin
[INDENT] Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);[/INDENT]
end;



finally, when using if bool = true and bool = false it is good practice to use if / else


if(Players[CurrentPlayer].Booleans[0] = True) then
begin
DepositAll;
CloseBank;
Inc(CurrentLoadsPerPlayer);
end else begin
Deposit(2,28, True);
CloseBank;
Inc(CurrentLoadsPerPlayer);
end;

and lastly, avoid repeating as much code as possible; have a look at this:

if(Players[CurrentPlayer].Booleans[0] = True) then
DepositAll
else
Deposit(2,28, True);

CloseBank;
Inc(CurrentLoadsPerPlayer);

see? it'll deposit according to your boolean, and it'll do CloseBank; and Inc() independantly of the boolean.

edit:i hope you appreciate the effort that it took to get those quote tags to show stuff properly :p

~RM

Dervish

2009-05-21 14:05:09

What is inc() ?

Idk, yet.

Naike

2009-05-21 14:12:40

From: Dr D. Dervish
What is inc() ?

Idk, yet.


It's the same as
Integer := Integer + 1;
But in a smaller way.

Yes btw.

Dynamite

2009-05-21 14:35:58

Its a no from me, but you are on the right path ;)
Good luckk though.

T~M

CowFish

2009-05-21 17:55:59

Yay a yes ty N1ke although I don't think this is the right script for the job, also thank you RM I had a begin and end for some of those ifs and what not but end else really confuses me :P I just do not understand where to put it. Anyway thanks for all your feedback I think I will use it on another script I will start making :) NCDS the reason I had all those Inc's was because I only wanted it to record how many times it actually did the antiban since the chance is really quite small.

footballjds

2009-05-21 18:10:49

From: NCDS
Instead of using all these Inc(AntiBans);

procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(150) of
1:begin
RandomRClick;
Inc(AntiBans);
Wait(1000);
end;
2:begin
PickUpMouse;
Inc(AntiBans);
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Inc(AntiBans);
Wait(1000);
end;
end;
end;
You can just do:

procedure AntiBan;
begin
if not LoggedIn then Exit;
case Random(150) of
1:begin
RandomRClick;
Wait(1000);
end;
2:begin
PickUpMouse;
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Wait(1000);
end;
end;
Inc(AntiBans);
end;

sorry, but you are sOOOO wrong NCDS! ;)
if he does what you said even if he doesn't do an anti ban it will inc it ;)
!!!
this is what should really be done!!!
procedure AntiBan;
begin
if not LoggedIn then Exit;
Inc(AntiBans);
case Random(150) of
1:begin
RandomRClick;
Wait(1000);
end;
2:begin
PickUpMouse;
Wait(1000);
end;
3:begin
MakeCompass('N');
Wait(1000 + Random(500));
case Random(3) of
0:MakeCompass('S');
1:MakeCompass('W');
2:MakeCompass('E');
end;
Wait(1000);
end;
else Dec(AntiBans);
end;
end;

CowFish

2009-05-21 18:15:53

That should work, I definitely don't want it to count the antiban it would theoretically be outputting every 1/10 second lol. Users would get far too suspicious…

footballjds

2009-05-21 18:18:44

exactly ;)
can't believe NCDS didn't catch that!! :p

he musta been on something or tired xD

marpis

2009-05-21 19:13:56

Sorry lad, it's a no, although i like some parts.
AutoColorThis() was a great idea, but you need failsafes to your walking. RRW isn't that reliable.

I think you don't have to make your own Yew finding function, but it would show that you could do it and that you know about TPAs.

procedure WalkBackToYews;

begin
begin
DoThis;
DoThat;
end;
end;
no need for the other begin … end;

To do list:
- Some TPAs (not tree finder necessarily, maybe some MM functions?)
- DDTM walking
- failsafes
- more failsafes

Nava2

2009-05-21 20:09:18

Work on your nesting.. Uhm.. Custom TPA's might be a better app for you.

Try and work out some more efficiency. Calling AutoColorThis might be slow when you should just set the Result to an Integer and use that..

Sorry, its a no. I do like you though. :)

Dynamite

2009-05-21 20:10:16

Sorry to be offtopic.
But i like your new avvy Nava ;)

T~M

CowFish

2009-05-21 21:12:59

Yay Nava2 loves me! Anyways what's nesting? Is it a branch of standards?

NCDS

2009-05-21 22:19:23

From: footballjds
exactly ;)
can't believe NCDS didn't catch that!! :p

he musta been on something or tired xD


Yeah sorry about that, I was talking to my friend / late at night / in a hurry :o

and a "Nest" is:

begin
doit;
end;
Every Begin .. End; is referred to as a "Nest".

CowFish

2009-05-21 23:00:11

So then nesting is how well you do your begins and ends?

NCDS

2009-05-21 23:07:33

For the most part, yes.

footballjds

2009-05-22 03:58:33

but not only begins and ends are nests ;)

;)

repeat
//nested ;)
until false;
is nest

CowFish

2009-05-22 04:05:33

K so any two related things will be a nest or indent between them?