SRL Archive - Archive

Junkj - SRL Member Application


Mr. Doctor

2009-09-07 23:25:36

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?
SCAR


Are you a member of any other communities?
Moparisthebest, playstation forums and others..


Tell us about yourself…
From: Junkj
13, buy my own stuff. Gonna work soon and have ALOT of free time.



Please show us one (or multiple) of your scripts.
//////JUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRK//////
//////JUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRK//////
//////JUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRK//////
//////JUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRK//////
//////JUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRKJUNKJ LRK//////
///////////////////////////////////////////////////////////////////////////
// JUNK's LRK //
//eating procedure-meat or shrimp infight/keeps fighting if not done //
//Skill setter Stat Progress //
//failsafes/antiban Boner picker and burrier //
//AND FINALLY..............MULTIPLAYER!!!!!!!!!!!!!!!!!!!!!!!!!!!!! //
//////////////////////////////V5.00////////////////////////////////////////


program LRK;
{.include srl/srl.scar}
{.include srl/srl/skill/fighting.scar}


var
x,y,bonesb,bone :integer;

const
///////////////////////////////////////////////////////////////////////////
mousecolor= 9276803; //the very light cyan color of the mouse-recomended //
///////////////////////////////////////////////////////////////////////////
/////////////////////////Thats not all...//////////////////////////////////
procedure DeclarePlayers;
begin
HowManyPlayers:= 1; // Make the inactive players[#] green
NumberOfPlayers(HowManyPlayers); //So you dont get a runtime error :D
CurrentPlayer := 0;
///// fill all of below in
Players[0].Name := ''; //Username
Players[0].Pass := ''; //Password
Players[0].Nick := ''; //Nickname 3-4 letters no first or cap
Players[0].Active := true; //Wanna use?
Players[0].Booleans[0]:= true;//Want to eat?
Players[0].Integers[0]:= 3; //How many rats do you want to kill?
Players[0].Strings[0] := 'attack'; //Attack Strength Defence or Shared, Scims only
Players[0].Strings[1] := 'shrimp'; //shrimp or meat

{Players[1].Name := '1'; //Username
Players[1].Pass := '1'; //Password
Players[1].Nick := '1'; //Nickname 3-4 letters no first or cap
Players[1].Active := true; //Wanna use?
Players[1].Booleans[0]:= true;//Want to eat?
Players[1].Integers[0]:= 1; //How many rat do you want to kill?
Players[1].Strings[0] := ''; //Attack Strength Defence or Shared, Scims only
Players[1].Strings[1] := ''; //shrimp or meat

{Players[2].Name := '1'; //Username
Players[2].Pass := '1'; //Password
Players[2].Nick := '1'; //Nickname 3-4 letters no first or cap
Players[2].Active := true; //Wanna use?
Players[2].Booleans[0]:= true;//Want to eat?
Players[2].Integers[0]:= 1; //How many rat do you want to kill?
Players[2].Strings[0] := ''; //Attack Strength Defence or Shared, Scims only
Players[2].Strings[1] := ''; //shrimp or meat }
end;
///////////////////////////STOP!NO-Further!///////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
function FindBone : Boolean;
begin
Result:= FindDTM(bone, X, Y, MIX1, MIY1, MIX2, MIY2);
end;
//////////////////////////////////////////////////////////////////////////////
Procedure Boner; //LOLZER
var bone :integer;
begin
bone := DTMFromString('78DA637CC6C4C0708A910106803C86FAB2520' +
'611200D1365FC88AA062A8A4402E94740358708A8B94384394F80' +
'6A2EE1570300705B0A09');
If(not(loggedin)) then exit;
if(findbone)then
begin
Freedtm(bone);
repeat
Getmousepos(x,y);
mouse(x,y,3,3,true);
Freedtm(bone);
bonesb:=bonesb+1;
Writeln('Burried');
Disguise('Burried');
wait(2000+random(500));
until not findbone;
end else
begin
Disguise('Done With Bones');
Writeln('Done with bones');
Writeln('Did not find the bone Dtm in your inventory.');
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure Eatmeat;
var meatbmp :integer;
begin
If(not(loggedin)) then exit;
meatbmp := BitmapFromString(13, 12, 'beNpzMpoV7zEpyqU/0rnWV' +
'2BAENBqZERdZbhUEmkaJagn3KkxwGZqjCseK7pCHer8rEs9zBal+A' +
'AjAqvi9mB7oDkQZSsz/Zek+cIVQyIOiIDmAJW1BNlV+1hmAwB9+ZV' +
'I');
if(hppercent<20)then
begin
if(Players[currentplayer].booleans[0])then
begin
Writeln('said yes to eat.');
Disguise('Eating...');
GameTab(tab_Inv);
wait(100+random(20));
if (FindBitmapToleranceIn(meatbmp, x, y, MIX1, MIY1, MIX2, MIY2, 20)) then
begin
freebitmap(meatbmp);
Getmousepos(x,y);
Mouse(x, y, 2, 2, true);
freebitmap(meatbmp)
writeln('Ate Meat successfully!');
Disguise('Ate');
wait(1500+random(200));
end else
if not(FindBitmapToleranceIn(meatbmp, x, y, MIX1, MIY1, MIX2, MIY2, 20))then
begin
writeln('Could not find food running and waiting to restore hp');
Disguise('Running Away');
runaway('n',false,1,60000)
end;
end else
begin
Writeln('Said no to eat');
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure eatshrimp;
var smp :integer;
begin
If(not(loggedin)) then exit;
smp := BitmapFromString(7, 4, 'beNqz4b49TebeDNkHs2Qfz5F9Olf' +
'ucJvk3ByRAy2SQMbWGvEFeSKdcYJ53nxZnrzT0oWXFYlCRIDcNDfe' +
'RGeexkiB1mjBngQhCDfWgScCAK1bHiU=');
if(hppercent<20)then
begin
if(Players[currentplayer].booleans[0])then
begin
Writeln('said yes to eat.');
Disguise('Eating...');
GameTab(tab_Inv);
wait(100+random(20));
if (FindBitmapToleranceIn(smp, x, y, MIX1, MIY1, MIX2, MIY2, 20)) then
begin
freebitmap(smp);
Getmousepos(x,y);
Mouse(x, y, 2, 2, true);
freebitmap(smp);
writeln('Ate Shrimp successfully!');
Disguise('Ate');
wait(1500+random(200));
end else
if not(FindBitmapToleranceIn(smp, x, y, MIX1, MIY1, MIX2, MIY2, 20))then
begin
writeln('Could not find food running and waiting to restore hp');
Disguise('Running Away');
runaway('n',false,1,60000)
end;
end else
begin
Writeln('Said no to eat');
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure eatwhatchooser;
begin
case Lowercase(Players[currentplayer].strings[1]) of
'shrimp': eatshrimp;
'meat': eatmeat;
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure invcheck;
begin
If(not(loggedin)) then exit;
if(invfull)then
begin
Disguise('Inventory Full, Burrying');
boner;
writeln('Inventory full burying bones...');
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure Bonepick;
var pick :integer;
begin
x:=Mscx;
y:=Mscy;
If(not(loggedin)) then exit;
findcolorspiral(x,y,12961212, msx1, msy1, msx2, msy2)
begin
Writeln('Finding Bones')
Disguise('Finding Bones');
mmouse(x,y, 3, 3);
Wait(500);
if isuptext('ake') then
begin
Writeln('Found bones')
Disguise('Found Bones');
Getmousepos(x,y);
mouse(x,y, 0, 0, false);
chooseoption('ones');
Writeln('Took Bones')
Disguise('Took The Bones');
pick:=pick+1
end else
writeln('Bones not found or didnt try.');
Disguise('Didnt find bones');
end;
end;
//////////////////////////////////////////////////////////////////////////////
Procedure Anti;
begin
case random(60) of

0:Sleepandmovemouse(3000+random(1000));

1:Boredhuman;

2:begin
Case random(4) of
0: HoverSkill('strength', false);

1: HoverSkill('attack', false);

2: HoverSkill('defence', false);

3: HoverSkill('prayer', false);

end;
end;

3:Pickupmouse;

4:Begin
Makecompass('w')
wait(1000+random(500))
makecompass('e')
wait(1000+random(500))
Makecompass('w')
end;

5:randomrclick;

end;
end;
//////////////////////////////////////////////////////////////////////////////
function findmouse : boolean;
var tpa : tpointarray;
var kill :integer;
begin
x := mscx;
y := mscy;
If(not(loggedin)) then exit;
begin
findcolorsspiraltolerance(x, y, TPA, mousecolor, msx1, msy1, msx2, msy2, 10);
if(GetArrayLength(TPA) > 0)then
begin
mmouse(tpa[0].x, tpa[0].y, 3, 3);
if(waituptext('ttack',300+random(200)))then
begin
result := true;
Getmousepos(x,y);
mouse(tpa[0].x, tpa[0].y, 3, 3,false);
chooseoption('ttack');
Disguise('Attacking');
Writeln('Mouse is found');
wait(3000+random(1000))
if(infight)then
begin
Disguise('Waiting');
repeat;
Anti;
until not infight;
Disguise('Done with fight');
Kill:=Kill+1
bonepick;
end else
Result:= False;
end;
end;
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure proggy;
var kill,pick,checks :integer;
begin
writeln('---------------------=Proggy=---------------------');
writeln('|------------------------------------------------|');
writeln('|Killed aprroximitely ' + inttostr(kill)+' |');
writeln('|ran for '+ (timerunning)+ ' |');
writeln('|Picked up '+ inttostr(pick) + ' bones |');
writeln('|burried '+ inttostr(bonesb) + ' bones |');
writeln('|Checked for rat '+ inttostr(checks) + ' times |');
writeln('|Junkjs Lumbridge Rat Killer |');
writeln('|end of the script |');
writeln('|Make sure you post a proggy or suggestion |');
writeln('==================================================');
Writeln('|==Skills are below. Att, Str, Def, and prayer.==|');
Writeln('==================================================');
getxp('attack');
getxp('strength');
getxp('defence');
getxp('prayer');
end;
//////////////////////////////////////////////////////////////////////////////
procedure death;
begin
If(not(loggedin)) then exit;
if(finddead)then
begin
logout;
proggy;
Writeln('You died. Next player');
Disguise('Died next player');
nextplayer(false);
end else
if(finddead) and (allplayersinactive) then
begin
writeln('Player dead and no more players available. Terminating');
logout;
proggy;
Terminatescript;
end;
end;
//////////////////////////////////////////////////////////////////////////////
Procedure setskiller;
begin
Disguise('Setting Skill');
case Lowercase(Players[currentplayer].strings[0]) of
'attack': SetFightMode(1);
'strength': SetFightMode(2);
'shared': SetFightMode(3);
'defence': SetFightMode(4);
end;
end;
//////////////////////////////////////////////////////////////////////////////
procedure logcheck;
begin
if (not(loggedin)) then
begin
proggy;
writeln('Logged out somehow... Nextplayer');
Proggy;
nextplayer(false);
end else
if(not(loggedin)) and (allplayersinactive)then
begin
writeln('Logged out somehow and no next player. Terminating');
proggy;
terminatescript;
end;
end;
//////////////////////////////////////////////////////////////////////////////
var
Kill : Integer;

begin
SetupSRL;
DeclarePlayers;
ClearDebug;
ActivateClient;
repeat
Kill := 0;
if not LoggedIn then
LoginPlayer;
SetRun(True)
MakeCompass('w');
SetAngle(True);
SetSkiller;
Retaliate(True);
repeat
FindNormalRandoms;
MakeCompass('w');
FindMouse;
EatWhatChooser;
FindDead;
until(Kill >= Players[CurrentPlayer].Integers[0])
LogOut;
nextplayer(false);
proggy;
until(AllPlayersInactive);
proggy;
Disguise('Successful');
end.
//////////////////////////////////////////////////////////////////////////////
//CREDITS-CREDITS-CREDITS-CREDITS-CREDITS-CREDITS-CREDITS-CREDITS-CREDITS /|
// JAD Feroc1ty Boreas I don't know if they helped me /|
// Marpis Baked Ian but i did know that they had /|
// cohen Tarajunky Evilkitten the time to post in my threads /|
// MasterBB Awkwardsaw richie Thanks guys /|
//////////////////////////////////////////////////////////////////////////////
//Jad-mentor
//marpis- bitmaps
//MasterBB- login help
//feroc1ty- random time with infight;
//Baked- Standards and others
//Tarajunky- Tpa idea
//Awkwardsaw- Tutorial And procedure
//Boreas- Multiplayer and alot of other things.
//Ian- True False infight;
//EvilKitten- Chooseoption
//cohen-Feedback
//richie- Multiplayer help
//Junkj- Making this all happen
//////////////////////////////////////////////////////////////////////////////
//!Not responsible for banned acounts!!!Not responsible for banned acounts! //
//////////////////////////////////////////////////////////////////////////////

Mr. Doctor

2009-09-07 23:27:33

Jad told me that Rasta said i could apply in less then a month, i pmed Rasta the link. Which Jad said to do.

Baked0420

2009-09-07 23:28:33

check your scripts before posting them, you left the password in. Even though only members+ and you can see this script, there can still be untrustworthy people. You are just lucky I saw it first and changed it. I will PM you the new password. Next time be more careful. I am posting this early just so you can see, and then I will edit it with my opinions and vote. Good luck.

Remember: Check your pm's for the new pass

EDIT1: I do remember seeing the last app closed with RM saying to apply back in two weeks instead of the regular month, he's telling the truth.

EDIT2: Did not mean to hit save yet, not done looking over script

-You only free the dtm bone if it is found. Since there is no exit; in that procedure you could just put FreeDtm(bone); right before the last end; statement in that procedure. (referring to Procedure Boner;)

-Again, you only free the bmp of meat if you find it, and when you call not(FindBitmapToleranceIn()) that still searches to see if it finds it or not, then results true if not found, false if found, obviously, but my point being, you still need it to be loaded before the search, which it is not, and still need to free it after, which it is also not.

-In EatMeat; in the last end else, you do not need a begin/end statement after it to just do a writeln, you only need it if there's is more then one line of coding. Since it's just writeln, you coulda just went:


end else
//begin;
writeln('bleh');
//end;

- I believe your eat shrimp is identical to eatmeat, which means all the same problems, also you coulda turned those two procedures into one by going:



procedure EatFood;
var
I: Integer;
Bmp : TIntegerArray;
begin
If(not(loggedin)) then exit;
bmp[0] := BitmapFromString(7, 4, 'beNqz4b49TebeDNkHs2Qfz5F9Olf' +
'ucJvk3ByRAy2SQMbWGvEFeSKdcYJ53nxZnrzT0oWXFYlCRIDcNDfe' +
'RGeexkiB1mjBngQhCDfWgScCAK1bHiU=');
bmp[1] := BitmapFromString(13, 12, 'beNpzMpoV7zEpyqU/0rnWV' +
'2BAENBqZERdZbhUEmkaJagn3KkxwGZqjCseK7pCHer8rEs9zBal+A' +
'AjAqvi9mB7oDkQZSsz/Zek+cIVQyIOiIDmAJW1BNlV+1hmAwB9+ZV' +
'I');
if(hppercent<20)then
begin
if(Players[currentplayer].booleans[0])then
begin
Writeln('said yes to eat.');
Disguise('Eating...');
GameTab(tab_Inv);
wait(100+random(20));
for I:=0 to 1 do
if (FindBitmapToleranceIn(bmp[i], x, y, MIX1, MIY1, MIX2, MIY2, 20)) then
begin
freebitmap(smp);
Getmousepos(x,y);
Mouse(x, y, 2, 2, true);
writeln('Ate Shrimp successfully!');
Disguise('Ate');
wait(1500+random(200));
end else
if not(FindBitmapToleranceIn(bmp[i], x, y, MIX1, MIY1, MIX2, MIY2, 20))then
begin
writeln('Could not find food running and waiting to restore hp');
Disguise('Running Away');
runaway('n',false,1,60000)
end;
end else
begin
Writeln('Said no to eat');
end;
end;
end;


basically all I did was, I took both bmp's, I changed their name to bmp, I took out the other variables you had as integers, I made a new variable named bmp and declared it as a TIntegerArray, I made the shrimp be bmp[0] and meat be bmp[1]. Then where you search for your shrimp, the line before it I added for I:= 0 to 1 do, then I changed it from your variable of shrimp to bmp, which reminds me, I added i as a variable, an integer, for this procedure only. Then I went to when you see if you don't find the bmp and changed what you look for to bmp.

NOTE: I still left all your errors in there that I mentioned, I only switched it from looking for shrimp, to looking for both meat and shrimp all in one procedure so you can see how it's done.

Just saw now after writing all that, eatwhatchooser, now you won't need that, you'll just call EatFood, and it'll search for both, and user won't need to set which food to eat, as long as they have shrimp or meat, the script will find and eat it, they don't need to say which it is though, but saying if they want to eat or not is still a part of the procedure as you made it.

- For BonePick; you have it search for bones and if it finds the color it sees if the uptext is 'ake' that is a very bad uptext, and object laying on the floor that you pick up has the uptext as take that I know of, but even if not all objects, it's still the object for way many more objects then just bones. Also, you do not need to set x and y as MSCX and MSCY, you could've just put them in as MSCX and MSCY, but whatever you prefer.

- MMouse(x, y, 3, 3, False) and chooseoption should have a wait between them and have it be a random time.

- Pick:= Pick+1 can be changed to Inc(Pick);

- Your antiban procedure, after 4: you have Makecompass and wait's without ;'s after them, the script still compiles, but it's a good habit to have them in there after every procedure/function. So I guess that leads me to something I was thinking bout earlier, your standards are a little sloppy, you can improve on them, especially in the EatMeat; EatShrimp; procedures.

- In findmouse; you again don't call wait(x); in between right clicking and chooseoption, could be in other places also, you should really get into a habit of calling it, most people don't right click and instantly without even 1 millisecond of stopping the mouse already go and start moving the mouse to the option. Plus, I don't know, but it may not even right click, because I don't the option comes up right that millisecond, so without waiting even one millisecond, it may not right click, if the chooseoption menu isn't even showing yet. Again, I don't know, but it's a theory that it might not work without a wait, but I never tested it, so don't hold me to my word.

Also in that procedure you call


if(InFight) then
begin
repeat
anti;
until(not(InFight))
{code continues}

which is good and all, but you should have other ways to break out, like make it:

until(not(InFight)) or (not(LoggedIn)) or (TimeFromMark(FailSafe>=15000));

a timer failsafe would be good, and I don't think it should take longer then 15 secs to kill a rat, and before the repeat and after the if/then you would call MarkTime(FailSafe);

and in there, you have kill:= kill+1, again, it can be Inc(Kill);

- Nice proggy, but wasted time making a perfect square in the script, because when it gets written out and there's time and everything, the lines that make up the walls of the square will be ruined. Try searching for pad (padl, padr, and I think there are some others, can't remember, been so long since I've used them). I know there is a tut somewhere here with them, I learned it here.

- Death procedure: you should see if all players are inactive first, then if not do the end else and do nextplayer(false); You only have it check if you are dead and players inactive if you aren't dead, which doesn't make sense, so it won't work as intended, it'll see you are dead and login next player, if you're not dead, it'll see if you're dead and all players inactive. Look over your coding a little better ;)

Same with the logcheck.

- I don't see why you reset kill each time the script loops, I think that'd ruin the proggy when you see how many you have killed in the end.

and now I see why you do it, then there's another loop, because each player can have their own amount to kill. But the last proggy when script ends will only be how many rats the last player kills, you should make a totalkilled variable, and each time before you call Killed:= 0; call TotalKilled:= TotalKilled + Killed; then call Killed:= 0. Then make a procedure called final proggy, and instead of using killed in the proggy for how many it approximately killed, you'd use TotalKilled, and you can see how many rats were killed by all players. :)




Well I named everything I saw in there, hopefully you use this to better your script. With all the mistakes I have seen, some very basic, I think I'm going to submit my first vote and have it be a no, I'm sorry. You are a decent scripter, with good potential. You may make it this time, you may not, either way, good luck. Hope you don't take my criticism the wrong way, and sorry I didn't really say anything good about it, it would've made this post take 2x longer to write, and it already took long enough, so now you can get the usefulness out of it. I don't think you really need the praise anyway.


EDIT: Wow I finished and it's 4:28, original post time is 3:28, I really looked this script over and wrote a lot on it :p

Mr. Doctor

2009-09-07 23:33:45

Thanks Baked.

Sir R. M8gic1an

2009-09-07 23:36:42

Baked, your memory seems to have served you wrong: http://www.villavu.com/forum/showthread.php?t=48867

However, JAD told me he had improved a lot and as it's been 3 weeks already, i let it through.

~RM

Mr. Doctor

2009-09-07 23:40:22

Meh, there's one no. Rack em' up.

Naum

2009-09-08 00:18:31

This app is Cool64,


1) You already call a global variable called 'bones' you can get rid of the local one, in the procedure named, funnily, 'Boner'.


2) Why? You only need to free it once:

        freebitmap(meatbmp);
Getmousepos(x,y);
Mouse(x, y, 2, 2, true);
freebitmap(meatbmp)

??


3) You don't need the 'begin' and 'end' clause in this part:

      end else
begin
Writeln('Said no to eat');
end;

You can just do:

end else
Writeln('Said no to eat');


4) Dude, you must fix your excessive bitmap freeing :)


5) There is no randomness in your wait, in the pick bone procedure :)


There some other stuff, but your persistent and you come back better. I like to see that, so I'm voting yes! Good Luck!

Baked0420

2009-09-08 00:24:47

From: Rasta Magician
Baked, your memory seems to have served you wrong: http://www.villavu.com/forum/showthread.php?t=48867

However, JAD told me he had improved a lot and as it's been 3 weeks already, i let it through.

~RM


What?!? coulda SWORE it said two weeks. Well, whatever :p he still didn't get anyone mad with posting another app.

You sure you didn't edit that or anything? lol


EDIT: Nauman, pretty sure, not positive, that his bone picking would search for bones, then go to it with wait(500) which has no randomness in it, but it already is random, I doubt it finds the bones at the same speed everytime. Correct me if I'm wrong please.

Mr. Doctor

2009-09-08 00:30:45

I guess none of the tutorials i posted helped nor my activity. I really don't know what you guys expect of me but this it.

Smarter Child

2009-09-08 01:34:10

I voted no, because I do not see any walking, or more advanced usage of TPAs. Also, Baked has found quite a bit of things you need to fix.

By the way:

function findmouse : boolean;
var tpa : tpointarray;
var kill :integer;

This doesn't really matter :p, but i prefer to just do something like

var
TPA: TPointArray;
Kill: integer;

Looks neater in my eyes, but it still works so i guess its okay.

@ Baked - using Number := Number + 1; is okay, you don't really need to use Inc. I mean it doesn't really matter that much, even though its faster.

Good luck in the future, and try making a TPA for bone finding. Use FindColorsSpiralTolerance so it finds the closest bones first ;)

Sir R. M8gic1an

2009-09-08 01:46:53

From: Junkj
I guess none of the tutorials i posted helped nor my activity. I really don't know what you guys expect of me but this it.


Don't give up so fast. Rome wasn't built in a day.


This was one of the latest succesful apps just so you have an idea:
program New;
{.include SRL\SRL.Scar}

{=========================================================================]
[ ___ ___ ]
[ / __) / __) ]
[ \__ \( (__ ]
[ (___/ \___) ]
[ ]
[ NAME : Flawless FightCaver ]
[ WRITER : Smarter Child ]
[ CATEGORY : Fighting ]
[ DESCRIPTION : AFKs in fight caves, gets u xp and tokkul ]
[ USAGE : Color ]
[ NOTES : Position player right at cave entrance ]
[ CONTACT : Me @ [email]wowplayermaster@hotmail.com[/email] (mail) ]
[ Version : 0.1 ]
[ Status : Alpha stages ]
[=========================================================================]
[ Instructions ]
[=========================================================================]
[ 1. Have your display settings set to 32 bit TRUE color. ]
[ 2. Fill out DeclarePlayers. ]
[ (For further instructions on how to fill it out, visit this thread: ]
[ [url]http://www.villavu.com/forum/showthread.php?t=5410[/url]) ]
[ 3. Please make sure your player is at the cave ]
[ 4. Make sure you have a weapon/bow + arrows equipped ]
[ 5. Start script! ]
[=========================================================================}

Const
Username = ''; //Players username.

Password = ''; //Players password.

Nick = ''; //Players nick [3-4 letters of username].

Range = true; //Would you like the script to range[must set fight style to range too]

FightStyle = 'range'; //Valid Styles are: 'attack','strength','shared','defense','range'\\

{ BankTheTokkul = false; //REMOVED MAY ADD LATER }

PickupTheArrows = false; //Would you like to pickup the arrows?[STABLE]

Special = true; //Would you like the script to occasionally use special attack?

Prayer = false; //Would you like the script to turn on prayers now and then in fight caves?

Runz = 15; //How many runs b4 sleeping for about 30-50 minutes.

Potion = false; //Drink potions now and then in the fight caves

MaxPot = 4; //Max times to drink the potion? [leave as 0 if potion = false]


//---------------------------------------------------------------------------------------------------------------------------\\
//---------------------------------------------------------------------------------------------------------------------------\\
//----------------------------------------------DO NOT TOUCH BELOW-----------------------------------------------------------\\
//---------------------------------------------------------------------------------------------------------------------------\\
//---------------------------------------------------------------------------------------------------------------------------\\
var
Tokkul, runs, Arrows, specials, entrytries, xTokkul, runsEx, PotsDrank, Pot, sleeps, levels: integer;

Const Version = '0.1'; //DO NOT CHANGE

Procedure GetVer;
Var
Ver: string;
begin
Status('Checking Version..');
Ver := GetPage('http://fightcaver.freehostia.com/FightCaveVersion.txt');
if Ver = Version then
begin
ClearDebug;
Writeln('Script is up-to-date');
end;
if Ver <> Version then
begin
ClearDebug;
Writeln('Script is OUTDATED.');
Writeln('New Version: ');
end;
end;

{*******************************************************************************
function FindBank: boolean;
By: Smarter Child
Description: Finds and clicks the TzHaar banker.
*******************************************************************************}
Function FindBanker: boolean;
var
GetCTS, rx, ry, tx, ty, h: integer;
TPA: TPointArray;
aTPA: T2DPointArray;
I: integer;
begin
GetCTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorSpeed2Modifiers(0.06, 1.83);
rx := MSCX;
ry := MSCY; //Declare "r" variable to the center of the client.
if FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3505344, MSX1, MSY1, MSX2, MSY2, 22)then
begin
Writeln('Banker found');
aTPA := SplitTPAEx(TPA, 25, 20);
H := High(aTPA);
For I := 0 to H do
begin
if Length(TPA[i])=0 then Exit;
if MiddleTPAEx(TPA, tx, ty)then
begin
writeln('clicking..');
MMouse(tx, ty, 2, 2);
Wait(100 + Random(200) - random(50));
if IsUpText('TzHaar')then
begin
Mouse(tx, ty, 3, 3, true);
Result := true;
ColorToleranceSpeed(GetCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;
end;
end;
if(not(FindColorsSpiralTolerance(MSCX, MSCY, TPA, 3505344, MSX1, MSY1, MSX2, MSY2, 22)))then
begin
Writeln('Couldn''t find banker');
Result := false;
ColorToleranceSpeed(GetCTS);
SetColorSpeed2Modifiers(0.2, 0.2);
end;
end;

{*******************************************************************************
Procedure LoadDTM;
By: Smarter Child
Description: Loads all DTMs into memory.
*******************************************************************************}
Procedure LoadDTM;
begin
Tokkul := DTMFromString('78DA639CC2CCC060CAC8800CACCCCC18FE036' +
'99828E36CA01A3D5435E6C6C61039989A25403596A86A0C141450D58' +
'0ECB24755E3E160C22089ACA603A8C61C550D4C16AE663E508D217E3' +
'50084C0087F');

Arrows := DTMFromString('78DA63546260609064400142EC0C0CFF81342' +
'310FF070246901A75543582509A114683E41551D5F0A1ABD10112' +
'12A86AB8D1D5180209013435CC0C0CFCC86AA430CDE1634433471' +
'C48A8E07733008F240748');

Pot := DTMFromString('78DA63DCCFCCC020C4C8800C548BFB18FE036' +
'990E87F2060DC0D542383AA06220B2381F409A01A49026A8E03D5' +
'881250B38F198987502380AC6607508D207E7300FA8F0B47');


end;
{*******************************************************************************
Procedure FreeMemory;
By: Smarter Child
Description: Frees all DTMs from memory.
*******************************************************************************}
Procedure FreeMemory;
begin
FreeDTM(Tokkul);
FreeDTM(Arrows);
FreeDTM(Pot);
end;
{*******************************************************************************
Function CountTokkul: integer;
By: Smarter Child
Description: Counts and stores tokkul value in xTokkul.
*******************************************************************************}
Function CountTokkul: integer;
begin
xTokkul := ItemAmount('inv', 'dtm', Tokkul, []);
Result := xTokkul;
end;

{*******************************************************************************
function BankTokkul: boolean;
By: Smarter Child
Description: Banks tokkul, if tokkul isn't found it exits and continues.
*******************************************************************************
Function BankTokkul: boolean;
var
tx, ty: integer;
begin
CountTokkul;
if BankTheTokkul = false then exit;
Status('Banking...');
repeat
FindBanker;
until(BankScreen);
if BankScreen then
begin
Writeln('Bank = open');
Wait(500 + Random(500));
LoadDTM;
if FindDTM(Tokkul, tx, ty, MIX1, MIY1, MIX2, MIY2)then
begin
MMouse(tx, ty, 3, 3);
Wait(500 + Random(750));
if IsUpText('okkul')then
begin
Wait(RandomRange(250, 650) + Random(500));
Mouse(tx, ty, 2, 2, false);
Wait(RandomRange(650, 750) + Random(750));
if ChooseOption('eposit All')then
begin
Writeln('Banked Tokkul');
CloseBank;
FreeMemory;
Result := true;
end;
end;
end;
if(not(FindDTM(Tokkul, tx, ty, MIX1, MIY1, MIX2, MIY2)))then
begin
CloseBank;
Result := false;
FreeMemory;
Exit;
end;
end;
end;
}
{*******************************************************************************
function InCave: boolean;
By: Smarter Child
Description: Detects if you are in the fight caves, can be a little laggy :P.
*******************************************************************************}
Function InCave: boolean;
var sx, sy: integer;
begin
SymbolAccuracy := 0.8;
Result := (not(FindSymbol(sx, sy, 'bank')))or
(not(FindSymbol(sx, sy, 'minigame')))
end;

{*******************************************************************************
function EnterCave: boolean;
By: Smarter Child
Description: Enters fight cave, will change compass if required.
*******************************************************************************}
Function EnterCave: boolean;
var
x, y, i, dg: integer;
TPA, tempTPA, TPAs: TPointArray;
aTPA : T2DPointArray;
TP: TPoint;
begin
if InCave then exit;
dg := Round(rs_GetCompassAngleDegrees);
if(not(InRange(dg, 200, 150)))then
MakeCompass(180 + Random(20) - RandomRange(10, 20));
SetAngle(false);
FindColorsSpiralTolerance(x, y, tempTPA, 9474460, MSX1, MSY1, MSX2, MSY2, 25);
FindColorsSpiralTolerance(x, y, TPA, 8487563, MSX1, MSY1, MSX2, MSY2, 35);
if(not(Length(TPA) > 0)) or (not(Length(tempTPA) > 0)) then
Exit;
TPAs := CombineTPA(tempTPA, TPA);
ATPA := SplitTPA(TPAs, 22);
SortATPASize(ATPA, True);
for i := 0 to High(ATPA) do
begin
TP := MiddleTPA(ATPA[i]);
MMouse(TP.x, TP.y, 6, 6);
Wait(Random(350 + Random(350)));
if IsUpText('ave') or IsUpText('TzHaar') then
begin
Mouse(TP.x, TP.y, 5, 5, false);
if ChooseOption('nter')then
Result := True;
inc(runs);
inc(runsEx);
Exit;
end;
end;
if(not(FindColorsSpiralTolerance(x, y, TPA, 9474460, MSX1, MSY1, MSX2, MSY2, 15))) or
(not(FindColorsSpiralTolerance(x, y, tempTPA, 8487563, MSX1, MSY1, MSX2, MSY2, 25)))then
Result := false;
inc(entrytries);
Exit;
end;

{*******************************************************************************
function SetStyle integer;
By: Smarter Child
Description: Loads the fight stlye according to the const.
*******************************************************************************}
Function SetStyle: integer;
begin
Case FightStyle of
'attack': Result := 1;
'strength': Result := 2;
'shared': Result := 3;
'defense': Result := 4;
'range': Result := 0;
end;
end;

{*******************************************************************************
Procedure Terminate(reason: string);
By: Smarter Child
Description: Logs out and terminates script according to reason.
*******************************************************************************}
Procedure Terminate(reason: string);
begin
//Proggy;
Writeln('Logging out..');
Logout;
Writeln('Termination Reason: ' + reason);
TerminateScript;
end;

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

Players[0].Name := Username;
Players[0].Pass := Password;
Players[0].Nick := Nick;
Players[0].Active := True;
end;

{*******************************************************************************
function ColorArrow: integer;
By: Smarter Child
Description: Autocolors ground arrows in fight caves.
*******************************************************************************}
Function ColorArrow: integer;
var
ArrowColor, rx, ry, HGC, i, r, g, b: integer;
GC: TIntegerArray;
dTPA: TPointArray;
H, S, L: Extended;
x, y, z: extended;
begin
ArrowColor := 990081;
// Writeln('Original Color := ' + IntToStr(ArrowColor)); Was only for testing purposes.
rx := MSCX;
ry := MSCY; //Declares the "r" variable to the center of the main screen.
FindColorsSpiralTolerance(rx, ry, dTPA, ArrowColor, MSX1, MSY1, MSX2, MSY2, 25);
if Length(dTPA)=0 then exit;
GC := GetColors(dTPA);
HGC := High(GC);
For i := 0 to HGC do
begin
ColorToRGB(GC[i], R, G, B);
ColorToHSL(GC[i], H, S, L);
ColorToXYZ(GC[i], X, Y, Z); //YEAH I KNOW WTF, BUT IT WORKS <3.
if (R >= 103) and (R <= 154) and (G >= 21) and (G <= 32) and (B >= 12) and (B <= 18) then
if (H >= 1.63) and (H <= 1.76) and (S >= 77.76) and (S <= 80.02) and (L >= 22.92) and (L <= 33.35) then
if (X >= 6.05) and (X <= 13.75) and (Y >= 3.53) and (Y <= 7.81) and (Z >= 0.73) and (Z <= 1.33) then
begin
Writeln('Arrow Color: ' + IntToStr(GC[i]));
Result := GC[i];
Exit;
end;
end;
end;

{*******************************************************************************
function PickupArrows: boolean;
By: Smarter Child
Description: Picks up the arrows on the ground in the fightcaves.
*******************************************************************************}
Function PickupArrows: boolean;
var
x, y: integer;
begin
if not loggedin then exit;
if PickupTheArrows = false then exit;
if FindColor(x, y, ColorArrow, MSX1, MSY1, MSX2, MSY2)then
begin
MMouse(x, y, 2, 2);
Wait(500 + Random(500));
if IsUpText('rrow')then
begin
Wait(100 + Random(300));
Case Random(3)of
0: begin
Mouse(x, y, 2, 2, false);
Wait(100 + Random(100));
if ChooseOption('ake')then
Result := true;
end;
1: begin
Mouse(x, y, 2, 2, true);
Wait(500 + Random(500));
Result := true;
end;
2: begin
HoldMouse(x, y, true);
Wait(500 + Random(750));
ReleaseMouse(x, y, true);
Result := true;
end;
end;
end;
end;
end;


{function PickupArrows: Boolean;
var
x, y, i: integer;
aTPA: T2DPointArray;
TPA: TPointArray;
begin
Result := False;
if not LoggedIn then exit;
if PickupTheArrows = false then exit;
if FindColorsSpiralTolerance(x, y, TPA, 00, MSX1, MSY1, MSX2, MSY2, 15)then
begin
writeln('col found');
aTPA := SplitTPAEx(TPA, 50, 50);
for i := 0 to High(ATPA) do
begin
MiddleTPAEx(ATPA[i], x, y);
MMouse(x, y, 2, 2);
if IsUpText('rrow') then
begin
Wait(100 + Random(200));
case Random(2) of
0: begin
Mouse(x, y, 2, 2, False);
Wait(400 + Random(200));
ChooseOption('ick');
WriteLn('picked up arrows');;
Break;
Result := true;
end;
1: begin
Mouse(x, y, 2, 2, True);
Wait(100 + Random(100));
WriteLn('picked up arrows');
Break;
Result := true;
end;
end;
end;
end;
end;
end; }

{*******************************************************************************
Function FindArrowsMS(var TPA: TPointArray): boolean;
By: Smarter Child
Description: Results true if detects Arrows on the mainscreen.
*******************************************************************************}
Function FindArrowMS(var TPA: TPointArray): boolean;
begin
Result := FindColors(TPA, ColorArrow, MSX1, MSY1, MSX2, MSY2);
end;

{*******************************************************************************
Function DoPickupArrows: boolean;
By: Smarter Child
Description: Picks up the arrows if PickupTheArrows is true.
*******************************************************************************}
Function DoPickupArrows: boolean;
var
z: integer;
TPA: TPointArray;
begin
if PickupTheArrows = false then exit;
marktime(z);
Alert('Picking up the arrows');
setangle(false);
repeat
PickupArrows;
until((not(FindArrowMS(TPA))) or (TimeFromMark(z) > 20000))
if(not(FindArrowMS(TPA))) or (TimeFromMark(z) > 20000)then
Result := true;
end;

{*******************************************************************************
Function EquipArrows(where: string): boolean;
By: Smarter Child
Description: Will equip the arrows if they are not already equipped.
*******************************************************************************}
Function EquipArrows(where: string): boolean;
var
x, y: integer;
begin
Case where of
'OutOfCave': begin
if Range = false then exit;
if(not(WearingItem(4)))then
begin
LoadDTM;
Writeln('Equipping arrows');
GameTab(tab_inv);
if FindDTM(Arrows, x, y, MIX1, MIX2, MIY1, MIY2) or FindColorTolerance(x, y, 668758, MIX1, MIY1, MIX2, MIY2, 20)then
begin
Writeln('Arrows found');
GameTab(tab_inv);
MMouse(x, y, 3, 3);
if IsupText('rrow')then
begin
Wait(500 + Random(500));
Mouse(x, y, 2, 2, true);
FreeMemory;
Result := true;
end else
if(not(FindDTM(Arrows, x, y, MIX1, MIX2, MIY1, MIY2))) or (not(FindColorTolerance(x, y, 668758, MIX1, MIY1, MIX2, MIY2, 20)))then
begin
if(not(WearingItem(4)))then
Result := false;
Writeln('Failed to equip arrows');
FreeMemory;
Terminate('No arrows');
end;
end;
end;
if WearingItem(4)then
begin
Writeln('Arrows are equipped');
Result := true;
GameTab(tab_inv);
exit;
end;
end;
'InCave': begin
if Range = false then exit;
LoadDTM;
GameTab(tab_inv);
if FindDTM(Arrows, x, y, MIX1, MIX2, MIY1, MIY2) or FindColorTolerance(x, y, 668758, MIX1, MIY1, MIX2, MIY2, 20)then
begin
writeln('Equipping Arrow In Inv');
MMouse(x, y, 2, 2);
if IsUpText('rrow')then
begin
Wait(200 + Random(200));
Mouse(x, y, 2, 2, true);
FreeMemory;
Result := true;
end else
if(not(FindDTM(Arrows, x, y, MIX1, MIX2, MIY1, MIY2))) or (not(FindColorTolerance(x, y, 668758, MIX1, MIY1, MIX2, MIY2, 20)))then
begin
writeln('No arrows - they must be equipped then');
Result := false;
exit;
end;
end;
end;
end;
end;

{*******************************************************************************
function UseSpecial: boolean;
By: Smarter Child
Description: Uses special attack.
*******************************************************************************}
Function UseSpecial: boolean;
var
TPA: TPointArray;
colx, coly: integer;
begin
if Special = false then exit;
if not (InCave) then exit;
if FindColorsTolerance(TPA, 4162877, 564, 410, 612, 444, 10)then
begin
Writeln('Special is availabe');
MouseBox(579, 421, 701, 430, 1);
if FindColorTolerance(colx, coly, 1055619, 1158, 643, 1167, 651, 10)then
begin
Writeln('used special!!');
Inc(Specials);
Result := true;
end;
end;
end;

{*******************************************************************************
function UsePrayer: boolean;
By: Smarter Child/ Idea from Harry's script
Description: Switches on prayer, idea of using if/then/else from Harry.
*******************************************************************************}
Procedure UsePrayer;
var
PrayLvl, P: integer;
PrayColor: string;
begin
if Prayer = false then exit;
if (not(InCave))then exit;
P := GetMMLevels('prayer', PrayColor);
PrayLvl := GetSkillLevel('prayer');
if PrayColor = 'Red' then exit;
Case (LowerCase(FightStyle)) of
'attack','strength','shared','defense':
begin
if PrayLvl > 3 then MouseBox(603, 231, 620, 251, 1)else//Burst of Strength
if PrayLvl > 6 then MouseBox(635, 233, 654, 249, 1)else//Clarity of Thought
if PrayLvl > 12 then MouseBox(696, 264, 623, 290, 1); //Superhuman Strength
if PrayLvl > 15 then MouseBox(632, 269, 658, 286, 1)else//Improved Reflexes
if PrayLvl > 30 then MouseBox(712, 308, 729, 324, 1)else//Ultimate Strength
if PrayLvl > 33 then MouseBox(561, 342, 582, 359, 1);//Incredible Reflexes
end;
'range':
begin
if PrayLvl > 7 then MouseBox(672, 234, 691, 249, 1)else//Sharp Eye
if PrayLvl > 25 then MouseBox(597, 305, 619, 320, 1)else//Hawk Eye
if PrayLvl > 43 then MouseBox(562, 380, 579, 396, 1);//Eagle Eye
end;
end;
end;

Function UsePotion: boolean;
var
c, x, y: integer;
begin
if(not(incave))then exit;
if Potion = false then exit;
if c >= MaxPot then exit;
LoadDtm;
if FindDTM(Pot, x, y, MIX1, MIY1, MIX2, MIY2)then
begin
Wait(500 + Random(500));
MMouse(x, y, 2, 2);
if IsUpText('otion')then
begin
wait(200 + random(600));
case random(2)of
0: begin
Mouse(x, y, 2, 2, false);
ChooseOption('rink');
Result := true;
Writeln('Drank Potion');
inc(c);
inc(potsdrank);
FreeMemory;
end;
1: begin
Mouse(x, y, 3, 3, true);
Result := true;
Writeln('Drank Potion');
inc(c);
Inc(PotsDrank);
FreeMemory;
end;
end;
end;
if(not(IsUpText('otion')))then
begin
Result := false;
FreeMemory;
C := MaxPot;
exit;
end;
end;
if(not(FindDTM(Pot, x, y, MIX1, MIY1, MIX2, MIY2)))then
begin
Result := false;
// FreeMemory;
C := MaxPot;
exit;
end;
end;

{*******************************************************************************
Procedure CBHover;
By: Smarter Child
Description: Hovers over cb skill according to your fight style.
*******************************************************************************}
Procedure CBHover;
begin
Case (LowerCase(FightStyle))of
'range': begin
Writeln('Range hover');
HoverSkill('range', false);
end;
'attack': begin
Writeln('attack hover');
HoverSkill('attack', false);
end;
'strength': begin
Writeln('Strength hover');
HoverSkill('strength', false);
end;
'defense': begin
Writeln('Defense hover');
HoverSkill('defense', false);
end;
'shared': begin
Writeln('shared hover');
Case Random(3) of
0: HoverSkill('attack', false);
1: HoverSkill('strength', false);
3: HoverSkill('defense', false);
end;
end;
end;
end;
{*******************************************************************************
Procedure RWait;
By: Smarter Child
Description: Waits random time.
*******************************************************************************}
Procedure RWait; //only a few options, so i don't use much in the script..
begin
Case Random(50) of
0..10: Wait(750 + Random(750));
11..20: Wait(865 + Random(100));
21..30: Wait(Random(750) + Random(750));
31..40: Wait(Random(1500) + Random(50));
41..50: Wait(500);
end;
end;

{*******************************************************************************
procedure sc_Play;
By: Smarter Child
Description: Antiban method.
*******************************************************************************}
Procedure sc_Play;
begin
Case Random(45) of
0: begin
SetAngle(true);
Wait(750 + Random(750));
MakeCompass(180);
Wait(200 + Random(150));
MakeCompass(1 + Random(20) - Random(20));
Wait(500 + random(600));
end;
1: begin
MakeCompass(-1 + Random(200) - RandomRange(200, Random(50)));
Wait(800 + 750 - Random(500));
SetAngle(false);
Wait(750 + Random(200));
SetAngle(true);
Wait(500 + RandomRange(200, 400));
RandomMovement;
end;
2: begin
MMouse(MSCX - Random(500), MSCY + Random(600), 50, 50);
Wait(2000 - RandomRange(500, 750));
MakeCompass(270 - Random(180) + RandomRange(20, 50));
end;
3: begin
setrun(true);
Wait(500 + Random(999));
setrun(false);
MakeCompass(-1 + Random(20) - RandomRange(15, 20));
Wait(200 + random(200));
MakeCompass(90 + Random(20) - RandomRange(5, 15));
Wait(100 - Random(50) + Random(1000));
MakeCompass('N');
end;
4: begin
// SleepAndMoveMouseSmooth(5000);
GameTab(1);
Wait(2000 - Random(500));
GameTab(2);
Wait(900 + RandomRange(200, 350));
GameTab(tab_Inv);
end;
5: begin
BoredHuman;
Wait(500 + Random(740));
RandomRClick;
end;
6,7: begin
MouseSpeed := RandomRange(10, 20);
MMouse(-303 + Random(100), 162 + RandomRange(200, 500) - Random(100), 25, 25);
Wait(500 + Random(750));
MMouse(Random(600), Random(600), 25, 25);
Wait(5000 - RandomRange(2000, 4000));
MMouse(MSCX - Random(200), MSCY - Random(300), 30, 30);
end;
8: begin
MMouse(MIX1 + Random(75) - random(25),MIX2 + RandomRange(10, 90) - Random(15), 15, 15);
Rwait;
end;
end;
end;

{*******************************************************************************
Procedure QAntiban;
By: Smarter Child
Description: Quick Antiban Method.
*******************************************************************************}
Procedure QAntiban;
begin
//r;
case Random(50) of
0..4: Boredhuman;
5..10: SleepAndMoveMouse(5000);
10..15: RandomRClick;
end;
end;

{*******************************************************************************
Procedure sc_RandomCompass
By: Smarter Child
Description: Randomly moves compass.
*******************************************************************************}
Procedure sc_RandomCompass;
begin
Writeln('Performing random compass movements');
case random(4) of
0:MakeCompass(0 + Random(90) - Random(90));
1:MakeCompass(90 + Random(180) - Random(180));
2:MakeCompass(RandomRange(0, 356));
end;
end;

{*******************************************************************************
function r_tab: boolean
By: Smarter Child
Description: Clicks any tab, then sets it back to the invetory.
*******************************************************************************}
Function r_Tab: boolean;
begin
result := GameTab(RandomRange(1, 16));
Rwait;
GameTab(tab_inv);
end;

{*******************************************************************************
Procedure AB;
By: Smarter Child
Description: Variety of Antiban methods.
*******************************************************************************}
Procedure AB;
begin
Case Random(75)of
0, 20: QAntiban;
5: sc_RandomCompass;
15: sc_Play;
30: UseSpecial;
7: CBHover;
end;
end;
{

Procedure WhileCave;
begin
Retaliate(true);
SetFightMode(SetStyle);
if EnterCave then
begin
Writeln('Performing in-cave functions...');
While InCave Do
begin
AB;
DoPickupArrows;
EquipArrows('InCave');
// UsePrayer;
//Proggy;
end;
end;
end; }

{*******************************************************************************
function HandleChat: boolean;
By: Smarter Child
Description: Handles the chat with tzhaar dude.
*******************************************************************************}
Function HandleChat: boolean;
var
czx, czy: integer;
begin
if FindColorTolerance(czx, czy, 4146314, MIX1, MIY1, MIX2, MIY2, 25) or FindBlackChatMessage('ell done') or FindBlackChatMessage('in the cave')then
begin
ClickToContinue;
Writeln('Handled chat');
Result := true;
end;
if(not(FindColorTolerance(czx, czy, 4146314, MIX1, MIY1, MIX2, MIY2, 15))) or (not(FindBlackChatMessage('ell done'))) or (not(FindBlackChatMessage('in cave')))then
begin
Writeln('No text!');
Result := false;
end;
end;

{*******************************************************************************
Procedure Sleeping;
By: Smarter Child
Description: Sleeps based on your runz in the fight caves.
*******************************************************************************}
Procedure Sleeping;
var
t, minute: integer;
begin
minute := 60000;
if runsEx >= Runz then
begin
runsEx := 0;
t := (minute*30 + RandomRange(minute*10, minute*30));
if LoggedIn then
begin
Writeln('Sleeping...');
Disguise('Sleeping..');
Players[CurrentPlayer].Active := true;
Logout;
Sleep(t);
Inc(sleeps);
LoginPlayer;
end;
end;
end;

Procedure LevelUp;
begin
if not loggedin then exit;
if not incave then exit;
if FindNPCChatText('ongratulations', Clickleft)then inc(levels);
end;

Procedure Proggy;
begin
Writeln('==========================================================');
Writeln(' FLAWLESS FIGHTCAVER ');
Writeln('==========================================================');
Writeln('+ Script has ran for: ' + TimeRunning);
Writeln('+ You have done: ' + IntToStr(runs) + ' runs in the fightcaves');
Writeln('+ Your FightStyle: ' + FightStyle);
Writeln('+ You have earned: ' + IntToStr(xTokkul) + ' tokkul');
Writeln('+ You have gained: ' + IntToStr(levels) + ' ' + FightStyle + ' levels');
Writeln('==========================================================');
Writeln('+ Thanks for using my script +');
Writeln('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
Writeln('++++++++++++++++++++ By Smarter Child ++++++++++++++++++++');
Writeln('++++++++++++++++++++++++++++++++++++++++++++++++++++++++++');
end;
{
Procedure LoopIt;
begin FAIL LOOP
Case Players[CurrentPlayer].Loc of
'start': begin
Sleeping;
EquipArrows('OutOfCave');
Retaliate(True);
SetFightMode(SetStyle);
if EnterCave then
Players[CurrentPlayer].Loc := 'cave';
end;
'cave': begin
Writeln('Incave stuff..');
While InCave do
begin
DoPickupArrows;
EquipArrows('InCave');
Case Random(2) of
0: AB;
//UsePrayer;
end;
if(not(InCave))then Players[CurrentPlayer].Loc := 'handle';
end;
end;
'talk': begin
HandleChat;
Players[CurrentPlayer].Loc := 'start'
end;
end;
end;
}

Procedure Loopey;
begin
Sleeping;
EquipArrows('OutOfCave');
Retaliate(true);
if EnterCave then
begin
While InCave do
begin
LevelUp;
DoPickupArrows;
case Random(20) of
1, 5: AB;
2: UsePotion;
10: EquipArrows('InCave');
end;
if not incave then
begin
Handlechat;
Proggy;
end;
end;
end;
end;

begin
SetupSRL;
ActivateClient;
Wait(500);
Declare;
LoginPlayer;
repeat
Loopey;
until(AllPlayersInactive);
if AllPlayersInactive then Terminate('inactive');
end.


program fish;
{.Include SRL\SRL\Misc\Smart.Scar}
{.Include SRL\SRL.Scar}
{.Include SRL\SRL\Reflection\Reflection.Scar}

{=========================================================================]
[ ___ ___ ]
[ / __) / __) ]
[ \__ \( (__ ]
[ (___/ \___) ]
[ ]
[ NAME : Karamja Fisher & Seller ]
[ WRITER : Smarter Child ]
[ CATEGORY : Fishing (FFA) ]
[ DESCRIPTION : Fishes Lobs/Swordies and sells them to store ]
[ USAGE : Reflection/Color ]
[ NOTES : Position players at karamja dock ]
[ CONTACT : Me @ [email]wowplayermaster@hotmail.com[/email] (mail) ]
[ MULTIPLAYER : Yes ]
[ SMART : Yes, it uses reflection, duh :P ]
[ Version : 2.0 ]
[ Status : Alpha stages ]
[=========================================================================]
[ Instructions ]
[=========================================================================]
[ 1. Have your display settings set to 32 bit TRUE color. ]
[ 2. Fill out DeclarePlayers. ]
[ (For further instructions on how to fill it out, visit this thread: ]
[ [url]http://www.villavu.com/forum/showthread.php?t=5410[/url]) ]
[ 3. Please make sure your players are at the dock ]
[ 4. Make sure you have a lobster pot or harpoon with you ]
[ 5. Start script! ]
[=========================================================================}

Const // ___
ScriptVersion = '2.0'; // Serves no purpose [-.-]
// [ U ]

var
x, y : integer;
Loads, Fishes, Lobsters, Tuna, Swordfish: integer;
DLoads, Switches: integer;

Const
LoadsB4Switch = 5; //Loads b4 switch, if your single player it will merely logout and relogin


procedure Smart; //Change Smart to how you like, if needed.
begin
Smart_Members := FALSE; //Are you on a member world? True = yes / False = no
Smart_Signed := true; //Do you wish to run RS signed? True = yes / False = no
Smart_Server := 77; //What world do you wish to run this script on [recommended world : low amount of players]
Smart_SuperDetail := false; //Do you wish to use Smart with Super Detail? True = yes / False = no
end;

procedure DeclarePlayers;
begin
HowManyPlayers := 1; //How many players will be used in the script
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0; //Which player will start first?

Players[0].Name :='';
Players[0].Pass :='';
Players[0].Nick :=''; //Nick 3 - 4 letters in the username
Players[0].Strings[0] := 'age'; //'age' = Cage fishing(lobsters), 'arpoon' = Harpoon fish(swordies/tuna)
Players[0].Active := True; //Will it be used in the script?
{
Players[1].Name :='';
Players[1].Pass :='';
Players[1].Nick :=''; //Nick 3 - 4 letters in the username
Players[1].Strings[0] := 'arpoon'; //'age' = Cage fishing(lobsters), 'arpoon' = Harpoon fish(swordies)
Players[1].Active := True; //Will it be used in the script?

Players[2].Name :='';
Players[2].Pass :='';
Players[2].Nick :=''; //Nick 3 - 4 letters in the username
Players[2].Strings[0] := 'age'; //'age' = Cage fishing(lobsters), 'arpoon' = Harpoon fish(swordies)
Players[2].Active := True; //Will it be used in the script?

Players[3].Name :='';
Players[3].Pass :='';
Players[3].Nick :=''; //Nick 3 - 4 letters in the username
Players[3].Strings[0] := 'arpoon'; //'age' = Cage fishing(lobsters), 'arpoon' = Harpoon fish(swordies)
Players[3].Active := True; //Will it be used in the script?

Players[4].Name :='';
Players[4].Pass :='';
Players[4].Nick :=''; //Nick 3 - 4 letters in the username
Players[4].Strings[0] := 'age'; //'age' = Cage fishing(lobsters), 'arpoon' = Harpoon fish(swordies)
Players[4].Active := True; //Will it be used in the script?

}

end;

Function SetPos(AngleOrDir: string): boolean;
begin
case AngleOrDir of
'Angle': begin
R_SetAngle(True);
Result := true;
end;
'Dir': begin
R_MakeCompass('n');
Result := true;
end;
'Both': begin
SetPos('Angle');
SetPos('Dir');
end;
end;
end;

Procedure Antiban;
begin
if not LoggedIn then Exit;
case Random(200) of
0..4:RandomRClick;
19..30:SleepAndMoveMouse(7000);
31..56:RandomRClick;
57:BoredHuman;
58..59: MakeCompass(Random(50));//HoverSkill('random',False);
60:RandomMovement;
61:Wait(1500 + Random(750));
62:begin
SetAngle(false);
Wait(Random(560 + Random(450)));
MakeCompass('W');
Wait(Random(560 + Random(450)));
SetAngle(true);
MakeCompass('N');
end;
end;
end;

Procedure RWait;
begin
Case Random(50) of
0..10: Wait(750 + Random(750));
11..20: Wait(865 + Random(100));
21..30: Wait(Random(750) + Random(750));
31..40: Wait(Random(1500) + Random(50));
41..50: Wait(500);
end;
end;

Procedure QAntiban;
begin
//r;
case Random(50) of
0..4: Boredhuman;
5..10: SleepAndMoveMouse(5000);
10..15: RandomRClick;
end;
end;
Procedure RCompass;
begin
Case Random(25)of
0: begin
Rwait;
MakeCompass('E');
RWait;
MakeCompass('N');
end;
1: begin
Rwait;
MakeCompass('S');
Rwait;
MakeCompass('N');
end;
2: begin
Rwait;
MakeCompass('W');
Rwait;
MakeCompass('N');
end;
3: begin
MakeCompass('E');
Rwait;
MakeCompass('S');
RWait;
MakeCompass('W');
Rwait;
RWait;
MakeCompass('N');
end;
end;
end;
{
Procedure RAngle;
begin
Case Random(2) of
0:
}

function DockPath: TPointArray;
begin
Result := [Point(2906, 3149), Point(2907, 3150), Point(2908, 3151),
Point(2911, 3152), Point(2913, 3154), Point(2914, 3155),
Point(2916, 3157), Point(2918, 3160), Point(2919, 3162),
Point(2920, 3165), Point(2922, 3168), Point(2922, 3170),
Point(2923, 3173), Point(2924, 3176), Point(2924, 3179)];
end;

function ShopPath: TPointArray;
begin
Result := [Point(2924, 3174), Point(2922, 3171), Point(2921, 3169),
Point(2919, 3167), Point(2917, 3166), Point(2916, 3164),
Point(2915, 3162), Point(2915, 3160), Point(2914, 3157),
Point(2914, 3155), Point(2914, 3152), Point(2911, 3151),
Point(2908, 3149), Point(2906, 3148)];
end;
{
Procedure DebugPath(Path: TPointArray);
var s: string;
begin
s := tPtArrayToStrEx(Path, ', ');
Writeln('Loading Tile - ' + S);
end;
}

Procedure CountFish;
begin
Lobsters := Lobsters + R_CountItems(378);
Players[CurrentPlayer].Integers[2] := Players[CurrentPlayer].Integers[2] + R_CountItems(378);//lobbies per player
Tuna := Tuna + R_CountItems(360); //o
Players[CurrentPlayer].Integers[3] := Players[CurrentPlayer].Integers[3] + R_CountItems(360);//tuna per player
Swordfish := Swordfish + R_CountItems(372);
Players[CurrentPlayer].Integers[4] := Players[currentplayer].integers[4] + R_CountItems(372);//swordies per player
Fishes := Lobsters + Tuna + Swordfish;
end;

{*******************************************************************************
function CutDownPath(Path: TPointArray; Index : Integer) : TPointArray;
By: Tad
Description: Cuts down a TPointArray so only tiles after the Index and on the MM
are left in the result.
*******************************************************************************}

function CutDownPath(Path: TPointArray; Index : Integer) : TPointArray;
var
i, Size, j : integer;
begin
Size := 0;
for i:=Index+1 to High(Path) do
if TileOnMM(Path[i]) then
Inc(Size)
else
break;
SetArrayLength(result, Size);
j := 0;
for i:=Index+1 to High(Path) do
if TileOnMM(Path[i]) then
begin
result[j] := Path[i];
Inc(j);
if j > High(result) then exit;
end else
break;
end;

{*******************************************************************************
function DistMore(Tiles: TPointArray; MinDist: Integer): TPointArray;
By: Tad
Description: Returns a TPointArray taken from Tiles that contains the TPoints
that are further away than MinDist.
*******************************************************************************}

function DistMore(Tiles: TPointArray; MinDist: Integer): TPointArray;
var
i, j, Size: integer;
begin
for i:=0 to High(Tiles) do
if DistanceFrom(Tiles[i]) > MinDist then
Inc(Size);
SetArrayLength(result, Size);
j := 0;
for i:=0 to High(Tiles) do
if DistanceFrom(Tiles[i]) > MinDist then
begin
result[j] := Tiles[i];
Inc(j);
end;
end;

{*******************************************************************************
function NextGoodTile(Path: TPointArray; CurIndex: Integer; var NTile: TPoint): boolean;
By: Tad
Description: Puts a random, clickable, yet efficient (more than 3 tiles away,
if possible) tile into NTile and returns whether a suitable tile was found.
*******************************************************************************}

function NextGoodTile(Path: TPointArray; CurIndex: Integer; var NTile: TPoint): boolean;
var
i : integer;
AvailTiles, PosTiles : TPointArray;
begin
result := false;
if TileOnMM(Path[High(Path)]) then
begin
result := true;
NTile := Path[High(Path)];
end;
AvailTiles := CutDownPath(Path, CurIndex);
if GetArrayLength(AvailTiles) = 0 then Exit;
result := true;
for i:=8 downto 3 do
begin
PosTiles := DistMore(AvailTiles, i);
if GetArrayLength(PosTiles) <> 0 then break;
end;
if GetArrayLength(PosTiles) <> 0 then
NTile := PosTiles[random(GetArrayLength(PosTiles))]
else
NTile := AvailTiles[random(GetArrayLength(AvailTiles))];
end;

{*******************************************************************************
function R_WalkPath(Path: TPointArray; Randomness: Integer): boolean;
By: Tad
Description: Walks a path of tiles stores in Path
*******************************************************************************}

function R_WalkPath(Path: TPointArray; Randomness: Integer): boolean;
var
i, t, l, fails: integer;
NTile, D : TPoint;
begin
NTile := NextTile(Path, 10);
i := TileToIndex(NTile, Path);
fails := 0;
l := GetSystemTime;
while (i < High(Path)) and (fails < 20) do
begin
// AntiRandoms;
if (Path[i].x = Path[i+1].x) and (Path[i].y = Path[i+1].y) then
begin
Inc(i);
Continue;
end;
t := GetSystemTime;
while not (NextGoodTile(Path, i, NTile)) and (GetSystemTime - t < 20000) do
wait(200+random(100));
if NextGoodTile(Path, i, NTile) then
if WalkToTile(NTile, Randomness, 17+random(10)) then
i := TileToIndex(NTile, Path)
else
Inc(fails)
else
Inc(fails);
end;
result := fails < 20;
if result then
begin
MarkTime(t);
if not GetFlag(D) then Exit;
repeat
if not GetFlag(D) then break;
if DistanceFrom(D) < 2 then break;
if not CharacterMoving then break;
until(TimeFromMark(t) > 30000);
end;
end;



Function Fish: boolean;
Var
FS: TNPC;
FishingSpot: TPoint;
begin
GameTab(tab_inv);
SetPos('Both');
if FindNPC(324, FS)then
begin
{ if(not(TileOnMS(FS.Tile, 0)))then
Writeln('Walking to fishing spot');
WalkToTile(FS.Tile, 1, 0);
} FishingSpot := TileToMS(FS.Tile, 0);
Wait(500 + Random(200));
MMouse(FishingSpot.x, FishingSpot.y, 3, 3);
Wait(199 + RandomRange(100, 400));
if IsUpText('ishing')then
begin
GetMousePos(FishingSpot.x, FishingSpot.y);
Mouse(FishingSpot.X, FishingSpot.Y, 3, 3, False);
Wait(100 + Random(50));
R_ChooseOption(Players[CurrentPlayer].Strings[0]);
if CharacterAnimating Then
begin
Antiban;
Disguise('Fishing...');
Result := True;
end else
Wait(5000);
if(not(TileOnMS(FS.Tile, 0))) and (not(CharacterAnimating))then
Wait(6);
Result := false;
{ Result := False;
Nextplayer(false);
Exit;}
end;
end; ///532, 533
end;

Function FindSK: boolean;
Var
sK: TNPC;
STile: TPoint;
begin
if FindNPC(532, SK) or FindNPC(533, SK)then
begin
Writeln('SK found');
STile := TileToMS(SK.Tile, 104)
Rwait;
MMouse(STile.X - 5, STile.y, 2, 2);
if R_IsupText('Shop')then
begin
Wait(100 + Random(60));
Mouse(STile.X, STile.Y, 1, 1, false);
Wait(100 + Random(100));
if r_chooseoption('rade')then
begin
Writeln('Shop = vaild');
result := true;
end;
end;
end;
end;
//Quick fix :P
Function ValidateShopScreen: boolean;
begin
MouseSpeed := 25;
repeat
FindSK;
until(FindColorTolerance(x, y, 2070783, MSX1, MSY1, MSX2, MSY2, 15));
if FindColorTolerance(x, y, 2070783, MSX1, MSY1, MSX2, MSY2, 15)then
begin
MouseSpeed := 15;
Writeln('success');
result := true;
end;
//Exit;
end;

Procedure SellFish;
Var { Lobster = 377 / Tuna = 359 / Sworfish = 371 }
ItemSlots: TIntegerArray;
Sell: string;
begin
Sell := 'ell 50'; //change
Disguise('Selling..');
if ValidateShopScreen then
begin
repeat
if InventoryContainsMulti([378, 360, 372], ItemSlots)then
begin
MouseItem(ItemSlots[0], false);
RWait;
r_ChooseOption(Sell);
end;
until((not(InventoryContainsMulti([378, 360, 372], ItemSlots))));
if(not(InventoryContainsMulti([378, 360, 372], ItemSlots)))then Exit;
CloseBank;
end;
end;

Function WhilstFishing: boolean; //Also carries out the Fish function.
var
Tries: integer;
begin
Tries := 0;
Fish;
repeat
if CharacterAnimating then
Case Random(72)of
7, 65: Antiban;
1, 4: QAntiban;
2..4: RCompass;
// 0: if Random(6) = 3 then RAngle;
end;
wait(500);
until(not(CharacterAnimating));
repeat
if(not(CharacterAnimating))then
begin
Fish;
Inc(Tries);
end;
until(InvFull or CharacterAnimating);
if InvFull then
begin
Inc(Loads);
Inc(Players[CurrentPlayer].Integers[5]);
Inc(Players[CurrentPlayer].Integers[6]);
Exit;
end;
{ if Tries >= 900000 then
begin
Writeln('Fishing Failed, next player');
Nextplayer(False);
Result := False;
Exit; }
end;

Procedure Proggy;
var
i : integer;
begin
// CountFish;
Writeln('|==============================================================|');
Writeln('|+-------------------Made By: Smarter Child----------------- +|');
Writeln('|'+ Padl('Script has ran for: ', 34) + TimeRunning + Padl('|', 20));
Writeln('|'+ Padl('Script has done: ', 31) + IntToStr(loads) + ' loads'+ Padl('|', 25));
Writeln('|'+ Padl('Script has caught: ', 33) + IntToStr(Fishes) + ' fish' + Padl('|', 24));
Writeln('|'+ Padl('Script has switched: ', 45) + IntToStr(Switches) + ' times' + Padl('|', 23));
Writeln('|--------------------------------------------------------------|');
for i:=0 to High(Players) do
Writeln('| ' + Players[i].Nick + ': Done: ' + IntToStr(Players[i].Integers[5]) + ' loads, Caught: ' + IntToStr(Players[i].Integers[3]) + ' Tuna, ' + IntToStr(Players[i].Integers[2]) + ' Lobsters, ' + IntToStr(Players[i].Integers[4]) + ' Swordies ' + Padl('|', 4));
Writeln('|--------------------------------------------------------------|');
Writeln('| Post all proggies/comments/suggestions/bugs on script thread |');
Writeln('|==============================================================|');
end;

Procedure Switch;
var minute: integer;
begin
if Players[CurrentPlayer].Integers[6] >= LoadsB4Switch then
begin
Writeln('Loads >= to complete');
Players[CurrentPlayer].Active := true;
Logout;
Minute := 60000;
Sleep(Minute*5 + RandomRange(Minute*2, Minute*10));
Inc(Switches);
Dec(Players[CurrentPlayer].Integers[6]);
NextPlayer(True);
end;
end;

Procedure Terminate;
begin
if AllPlayersInactive then
begin
Writeln('Terminating...');
Writeln('Reason: All players inactive');
if LoggedIn then Logout;
Proggy;
TerminateScript;
end;
end;

Procedure Loop;
begin
Players[CurrentPlayer].Integers[6] := 0;
SetPos('Both');
if(not(InvFull)) then WhilstFishing;
if InvFull then
begin
CountFish;
Proggy;
R_WalkPath(ShopPath, 2);
// WalkToTile(Point(2907, 3148), 1, 0);
if isidle then
begin
SellFish;
MouseSpeed := 15;
Proggy;
R_WalkPath(DockPath, 2);
Switch;
end;
end;
end;


BEGIN
Smart;
SetupSRL;
SetupReflection;
DeclarePlayers;
LoginPlayer;
repeat
Loop;
until(AllPlayersInactive);
Terminate;
END.

so yeah, you can use that as something to aim for, if you so wish.

~RM

Smarter Child

2009-09-08 01:48:11

Rasta Magician: I am truly honored :)

Junkj - My reflection fisher, isn't that great, I simply posted it to show I understand multiplayer. But my fight caver is pretty well done, and i got in 27 -2 i think. One vote was simply because, the person didn't like me, and the other guy voted no because he's a real tough cookie. :p

Edit: Just to let you know, age has nothing to do with immaturity, I turned 13 too :p, lol don't beg for votes. I did "advertise" my member application. Only to speed up the process :p lol

3Garrett3

2009-09-08 01:56:30

Junkj, you're way too immature to get in. Trying to guilt us into voting yes? I would have voted no anyway, based on the script, but trying to guilt us in and then saying "wait! I did this and this too!?!?!" just sortof brings out a desperate aspect, but you're going about it all wrong. If you were really that desperate, you could have learned very advanced techniques over 3 weeks, and then made it in, instead of making a last ditch effort to get in..

Sir R. M8gic1an

2009-09-08 02:08:54

From: 3Garrett3
Junkj, you're way too immature to get in. Trying to guilt us into voting yes? I would have voted no anyway, based on the script, but trying to guilt us in and then saying "wait! I did this and this too!?!?!" just sortof brings out a desperate aspect, but you're going about it all wrong. If you were really that desperate, you could have learned very advanced techniques over 3 weeks, and then made it in, instead of making a last ditch effort to get in..


He did improve a lot in three weeks…
http://www.villavu.com/forum/showthread.php?t=48867

…

~RM

Rick

2009-09-08 02:42:59

From: Junkj
I guess none of the tutorials i posted helped nor my activity. I really don't know what you guys expect of me but this it.


If you posted tutorials, and are only active to get in to SRL members then you need to change your attitude. If really focus on learning the advanced stuff, and becoming a part of the community because you want to contribute then I'm positive you will get in.

Yes, you have improved. And you will continue to as time goes by. Don't give up and say "this is it". There's always room for improvement and with each application you are getting better.

I'm not voting this time, just posting some suggestions and hope you follow them :)

3Garrett3

2009-09-08 03:17:23

From: Rasta Magician
He did improve a lot in three weeks…
http://www.villavu.com/forum/showthread.php?t=48867

…

~RM


From: r!ch!e
If you posted tutorials, and are only active to get in to SRL members then you need to change your attitude. If really focus on learning the advanced stuff, and becoming a part of the community because you want to contribute then I'm positive you will get in.



^^

RM, improvement isn't one of the things that I allow someone to get in with.

Someone comes in with a helloworld script first try, a month later they come in with an autologin. Do we let them in because of improvement? :\

I still vote no, no matter what, because of attitude. R!ch!e took the words right out of my mouth.

noidea

2009-09-08 03:25:47




Ok.. Lets not get offencive now because you didnt get what you wanted..
Little children do that. I'm almost certain you're not a little child.



.

Smarter Child

2009-09-08 03:42:33

From: noidea



Ok.. Lets not get offencive now because you didnt get what you wanted..
Little children do that. I'm almost certain you're not a little child.



.


+ 1.

–

^^ : Totally agree with everybody, I got SRL members after I had made a good reputation for myself at SRL. Even if they didn't like my script, they still thought I deserved it, from my growth as a scripter and a person. SRL made me a better person. :)

3Garrett3

2009-09-08 03:46:58

From: Smarter Child
+ 1.

–

^^ : Totally agree with everybody, I got SRL members after I had made a good reputation for myself at SRL. Even if they didn't like my script, they still thought I deserved it, from my growth as a scripter and a person. SRL made me a better person. :)


[offtopic]
You should still take the cocky quotes and "Yayz0rsz g0tz m3 s0m3 srl scr1pt0rz" from it. Still luh ya though.
[/offtopic]

Mr. Doctor

2009-09-08 04:05:15

Don't give up so fast. Rome wasn't built in a day.

Neither was my script. And i tried contributing to the community so people won't think im really a bad guy. But in the end the finger points at me.

Ok.. Lets not get offencive now because you didnt get what you wanted..
Little children do that. I'm almost certain you're not a little child.


I am most certainly are due to my Immaturity.

I got SRL members after I had made a good reputation for myself at SRL. Even if they didn't like my script, they still thought I deserved it, from my growth as a scripter and a person. SRL made me a better person.

A BETTER PERSON!!!!???!?!?
http://www.villavu.com/forum/showthread.php?t=50395

I took that situation like a man, i tried not to curse and call the names. But people take advantage of it. JAD says i was ready, certainly was not.

3Garrett3

2009-09-08 04:17:07

From: Junkj
Neither was my script. And i tried contributing to the community so people won't think im really a bad guy. But in the end the finger points at me.


Fingers aren't pointing at you. You put the script here for us to judge, we judged it. End of story. What you are expecting is an instant membership for trying again, and that isn't how it happens.

From: Junkj

I am most certainly are due to my Immaturity.


That made no sense at all, so I guess I can't comment on that.

From: Junkj

A BETTER PERSON!!!!???!?!?
http://www.villavu.com/forum/showthread.php?t=50395

I took that situation like a man, i tried not to curse and call the names. But people take advantage of it. JAD says i was ready, certainly was not.


At the first point. Thanks for using caps to prove that you can't control yourself. Thanks for the pointless url, showing that you were wrong, but couldn't accept it, and were in no way helping Main in figuring out his problem. Yes, smarterchild may have made a mistake, but you have no right to go yelling at him for mulitple posts telling him that he messed up once, especially when you messed up before him.

(If smarterchild reads this, the "I'm an srl member!??!" sh*t has to end, because the isn't the kind of attitude we should have. You are barely an SRL member, and that does not make you instantly better than any Jr Member.)

JAD is simply one person, one vote. If he thinks that you are ready, it really means nothing to me (no offence JAD) or to my vote, I judge a script/applicant differently than JAD and should have an equal chance to vote. You do not get auto allowed into members just because JAD says.

Blumblebee

2009-09-08 04:20:44

Junkj your over-reacting your way out of SRL members. Whether you deserve it or not with the present attitude your portraying you wont get it regardless. Very few people get in on their first couple trys, it took me about 5 times to get Members and im sure many members can say the same. Best advice I can give you is to collect yourself and if it pisses you off reading the comments here then dont look at this page anymore, vamp up your script and reapply in 2 weeks.

Awkwardsaw

2009-09-08 04:21:39

i'm voting yes, because the other voters are being immature, maby more than you are, and i DO like your attitude to want to be better (based off of the great improvements, and tuts). Naum pretty much said every thing that ca be improved script wise, although i would like to see something more epic, like a woodcut-banker :)

and im also not saying your attitude personally is perfect, it does need work ;\

JAD

2009-09-08 04:28:39

JunkJ,

I gave you a big list of things to work on and talked to you on msn about a lot that has been said above. You didn't fix most of them, and you have really started to show a poor attitude in this thread. I am very disappointed to see this.

However, you have still improved a large amount since your last application, you have been here a while, have written a couple tutorials and have been active. If you take advantage of the advice people give you and make some changes, you will be able to make it in the future.

Right now it is a fairly average script though, but I thought that your attitude and willingness to learn might push people to vote yes. In my opinion, you are lacking in both of those categories right now, which is something that you are going to have to overcome if you want to become a member in the future.

Smarter Child

2009-09-08 04:33:25

K chill people,

3Garret3 - Actually he had pointed that I should learn scar/srl, I said i was an srl member because, that rank should mean that i know some scripting.

I don't really care, junkj, you didn't have to bring that up. Just because I voted no on your member application [with good reasons too], doesn't mean you should go crazy at me. Now I actually tried to be of assistance towards you, and be nice, but you bring old things up…Forgive and forget is what i believe in, but i don't know if i can ever forgive you junkj.


From this day your dead to me.

Edit: I won't vote on any of your future member applications, because my personal reasons will make my vote biased.

3Garrett3

2009-09-08 04:36:47

From: Smarter Child
K chill people,

3Garret3 - Actually he had pointed that I should learn scar/srl, I said i was an srl member because, that rank should mean that i know some scripting.

Your dead to me.


First part. I know, but you should know how to take it, and just leave it alone, and continue help. The whole point of being an srl member is to be more mature and more skilled than a Jr Member, not to say it. Again, I say take the crap out of your sig that is bragging. Show some maturity.

Second part. Rep - even if it is a joke.

Baked0420

2009-09-08 04:56:20

woah that's a little extreme Smarter Child, I'm starting to wonder which of them is more mature….

I think we should just get back to the point, his application. Start looking it over, and give constructive criticism instead of worrying bout background info, as that made this thread get a little out of hand.

EDIT:

From: 3Garrett3
First part. I know, but you should know how to take it, and just leave it alone, and continue help. The whole point of being an srl member is to be more mature and more skilled than a Jr Member, not to say it. Again, I say take the crap out of your sig that is bragging. Show some maturity.

Second part. Rep - even if it is a joke.



I couldn't disagree with you anymore -_-

whole point of being a member is to be a skilled scriptor and contributor and a good person and role model for lower ranks, a helpful person and one who makes the community look better. Not to be better then everyone else. I think some people here have the wrong idea of SRL Members and the wrong attitude. (That last sentence is not specifically aimed at you 3Garret3, and I am not attacking you, but you aren't helping the situation in my opinion)

From: 3Garrett3

(If smarterchild reads this, the "I'm an srl member!??!" sh*t has to end, because the isn't the kind of attitude we should have. You are barely an SRL member, and that does not make you instantly better than any Jr Member.)


You even say this isn't the attitude we should have, hyprocritical? I think so…

And whether your barely Member or been member for 5 years, doesn't matter, you are never better than any Jr.

Jr Memb = Memb = Dev = Mod = Admin etc.

Everyone is equal at SRL.


Now lets this childish stuff go everyone.

Mr. Doctor

2009-09-08 05:09:22

No comment on anything. Im wrong. Im sorry. I'm trying to get help so i can be a better scripter. But people push me to be like this. School is tomorrow and i don't have any time. Really i try but it ends up worse. I really don't know what to say, but reading these comments are pushing me off the edge and i hope they do because i really don't care what people think about me. Im wrong. Im sorry. Is there anything else i should say. Even my brother said i sucks (junior) im nothing like him. And if i was like him i would be a better person. I really liked these forums. Didn't want it to be like this. Im sick and tired of being the bad guy. Im wrong. Im sorry….

3Garrett3

2009-09-08 05:45:28

From: Baked0420
<snipped>
I couldn't disagree with you anymore -_-

whole point of being a member is to be a skilled scriptor and contributor and a good person and role model for lower ranks, a helpful person and one who makes the community look better. Not to be better then everyone else. I think some people here have the wrong idea of SRL Members and the wrong attitude. (That last sentence is not specifically aimed at you 3Garret3, and I am not attacking you, but you aren't helping the situation in my opinion)



You even say this isn't the attitude we should have, hyprocritical? I think so…

And whether your barely Member or been member for 5 years, doesn't matter, you are never better than any Jr.

Jr Memb = Memb = Dev = Mod = Admin etc.

Everyone is equal at SRL.


Now lets this childish stuff go everyone.


I have a few points to go back at what you are saying.

1- You spelled my name wrong :(.
2- I think you got the wrong idea out of what I said. The second quote from me is more what I was trying to say. The first quote, I was actually trying to say what you said, but I didn't word it well at all. I guess you could say I was trying to overgeneralize, in saying that *typically* an SRL member will be a better scripter than a Jr Member.
3- The "barely an SRL Member" part was not saying "After a while, you are better than Jr. Members". You put the words in my mouth, I did not say them. I was trying to help get the point across to him, because I know that when I became an SRL Member, I felt as though I was instantly better, but I know better than that now.
4- I know for a fact that there have been Jr. Members who were better at scripting than I was. When Frt was a Jr Member, he was showing me new things for scripting.
5- If "Jr Memb = Memb = Dev = Mod = Admin etc." then why is there a point to ranks? Give the registered members Admin priviledges. An equal sign to me means equal in all ways, so if you did not mean this (I doubt you did) you should reverse your statement. If "Everyone is equal at SRL", why do some people have more priviledges based on their scripting ability, such as SSRL or Developer? Once again, why are their ranks if "everyone" is the same level. If everyone is the same level, they should all have the same ranks, same priviledges, same access. Same. No matter what. Disagreeing with any parts of this statement means that you disagree with your statements that everyone is equal.

Awkwardsaw

2009-09-08 05:48:36

From: Junkj
No comment on anything. Im wrong. Im sorry. I'm trying to get help so i can be a better scripter. But people push me to be like this. School is tomorrow and i don't have any time. Really i try but it ends up worse. I really don't know what to say, but reading these comments are pushing me off the edge and i hope they do because i really don't care what people think about me. Im wrong. Im sorry. Is there anything else i should say. Even my brother said i sucks (junior) im nothing like him. And if i was like him i would be a better person. I really liked these forums. Didn't want it to be like this. Im sick and tired of being the bad guy. Im wrong. Im sorry….


dont worry about any thing the members say, unless its constructive (so far, only 2-3 posts in this thread is, so far). theyre just a bunch of immature kids.

Baked0420

2009-09-08 05:55:38

From: 3Garrett3
I have a few points to go back at what you are saying.

1- You spelled my name wrong :(.
2- I think you got the wrong idea out of what I said. The second quote from me is more what I was trying to say. The first quote, I was actually trying to say what you said, but I didn't word it well at all. I guess you could say I was trying to overgeneralize, in saying that *typically* an SRL member will be a better scripter than a Jr Member.
3- The "barely an SRL Member" part was not saying "After a while, you are better than Jr. Members". You put the words in my mouth, I did not say them. I was trying to help get the point across to him, because I know that when I became an SRL Member, I felt as though I was instantly better, but I know better than that now.
4- I know for a fact that there have been Jr. Members who were better at scripting than I was. When Frt was a Jr Member, he was showing me new things for scripting.
5- If "Jr Memb = Memb = Dev = Mod = Admin etc." then why is there a point to ranks? Give the registered members Admin priviledges. An equal sign to me means equal in all ways, so if you did not mean this (I doubt you did) you should reverse your statement. If "Everyone is equal at SRL", why do some people have more priviledges based on their scripting ability, such as SSRL or Developer? Once again, why are their ranks if "everyone" is the same level. If everyone is the same level, they should all have the same ranks, same priviledges, same access. Same. No matter what. Disagreeing with any parts of this statement means that you disagree with your statements that everyone is equal.


this is the last time I will talk about this, because now an application thread has nothing to do with the person.

@1 sorry didn't feel like looking to see how your name was spelt, I thought I knew anyway

@2 maybe, I guess typically members are better, but not always the case

@3 ok, I see now, sorry, I didn't meant to put words in your mouth, I thought it's what you were implying though

@4 cool story bro :p

@5, ok "the ranks" jr memb and memb and dev etc. arent all equal, what I meant was, the person with the rank of memb is = to a person whos jr memb is = admin, but I guess you can say the ranks arent equal, because with higher ranks comes more responsibility and more benefits.


@junkj, you aren't completely wrong, people did push you till you snapped, don't completely say your wrong and sorry, you should say sorry, but you aren't 100% wrong for sticking up for yourself. Don't let immature people here make you feel like junkj :p sorry had to say it.

and that's what I'm saying awkward, this thread has gotten way off topic now, and the only good posts are up top before all the stupid crap.

BobboHobbo

2009-09-08 10:37:40

JunkJ, Look you made a script, its not crap, it just may need some fine tunning to get it to a good status.

Dont give up now, once you start you cannot just give up there. Just use the criticism from some of these posts and build your script up from there. Giving up doesn't get you anywhere. Also you have gotten better at scripting, and im sure you will continue to get better.

Good luck and don't give up!

senrath

2009-09-08 12:49:32

As I have had zero interaction with you before now, I shall be ignoring everything that has happened in this thread and instead vote entirely based on your script. That said, let's begin the dissection.

To start things off, let's look at your rather childishly named function, Boner. Quite frankly, it won't work, and for more than one reason. First, you never actually find the location of the bones. You just have the script click in a 3x3 square around where the mouse is currently located. And second, you free the Bone DTM after you find it the first time. But then you continue to call the FindBone function using the Bone DTM, which no longer exists, and as such will cause a Runtime Error. Bad stuff, that. Also, you load the DTM, and then check to see if the player is logged in. If they aren't, the DTM never gets freed.

Next, your EatMeat procedure. Now, this is identical to your EatShrimp procedure, except for the bitmap used, so they could have easily been combined with a parameter used to determine which was eaten. You obviously understand this concept, as shown by your EatWhatChooser procedure, so I'm not entirely sure why you did it the way you did. At any rate, this suffers from a similar problem to your Boner procedure. And that is you don't actually find the location of the food. Well, you do, but then you immediately disregard that information in favor of clicking around wherever the mouse currently is. Also, the second call to FindBitmapToleranceIn is completely superfluous, and can be removed without harming the script.

Next, your InvCheck procedure. Not much to say about this one, except that you probably shouldn't have made it. It's never called in the script.

Next, your BonePick procedure. While most of it should work, it assumes that any uptext consisting of 'ake' will be a bone, despite the fact that it could be any item at all.

Next, your Anti procedure. Nothing all that wrong or right with it, although the standards are atrocious.

Next, your FindMouse procedure. First, it should probably be called FindRat instead, but that's a very minor point. It also probably shouldn't assume that any attackable NPC it finds is a rat, but since I don't think that there are many other NPCs around where you'd be running this, that's not that big of a problem. But the biggest problem is that you call FindColorsSpiralTolerance, but then only use the first point returned. This is identical to calling FindColorSpiralTolerance. Look into using ATPAs for NPC finding.

Next, your Proggy procedure. Seems okay to me. Though does GetXP do more than just get the experience?

Next, your Death procedure. It's a nice idea, but you never call the function in the script, so it's wasted.

Next, your SetSkill procedure. I don't think there is anything really wrong with this. But I might be wrong.

Next, your LogCheck procedure. Again, like your Death procedure, it's a nice idea, but you never use it.

Next, your main loop. I'm really running out of steam, so I just glanced over it. It looks like it should work, although there might be some problems that I missed when I just glanced at it.

So, my vote is going to be: No.

Sorry, but there are a lot of errors that would completely stop this script in its tracks, and at least one that would prevent it from running in the first place.

Better luck next time.

marpis

2009-09-08 16:16:39

No.

Boner
  • var bone :integer; You already have a global variable called bone
  • You should learn more about when to free DTMs and bitmaps, you're not doing it right

Eatmeat
  • You should let user decide the hp percentage (just a hint)
  • if (FindBitmapToleranceIn(meatbmp, x, y, MIX1, MIY1, MIX2, MIY2, 20)) then begin … end else if not(FindBitmapToleranceIn(meatbmp, x, y, MIX1, MIY1, MIX2, MIY2, 20))then begin No need for the second FindBitmapToleranceIn
  • begin Writeln('Said no to eat'); end; Nesting is unnecessary. Here's shortened:

    if condition then
    begin
    ...
    end else
    writeln('Saidno to eat');
  • You should learn more about when to free DTMs and bitmaps, you're not doing it right
  • These 2 eating procedures could easily be combined using parameters:

  • procedure EatFood(Which: string);
    begin
    if lowercase(Which) = 'shrimp' then
    DTMtoClick := DTMFromString('your-shrimp-dtm-here')
    else
    DTMtoClick := DTMFromString('you-meat-dtm-here');
    if FindDTM(DTMtoClick, MIX1, MIY1, MIX2, MIY2) then
    begin
    ...
    end;
    end;

eatwhatchooser
  • It's good that you know how to use cases, but they are efficient only when there are 3 or more cases.

  • case Lowercase(Players[currentplayer].strings[1]) of
    'shrimp': eatshrimp;
    'meat': eatmeat;
    end;
    could be just

    if Lowercase(Players[currentplayer].strings[1]) = 'shrimp' then
    eatshrimp
    else
    eatmeat;

Bonepick
  • if isuptext('ake') then <– 'ake' is not enough to know that it's bones. use uptext 'ones'

Anti
  • I like your antiban, but those standards are hidious!

findmouse

  • mouse(tpa[0].x, tpa[0].y, 3, 3,false);
    chooseoption('ttack');
    I suggest using WaitOption('ttack', 500 + Random(200));
  • TPAs! Excellent! And you even use them pretty well :)

proggy
  • getxp('attack'); getxp('strength'); getxp('defence'); getxp('prayer'); I don't think these print out the value to the debug box, do they?
  • It's nice and detailed, but you should learn about PadR and PadL (check out Naumans tutorial)

Mainloop
  • Possible infinite loop, and you call FindDead where should probably be your custom 'death' procedure.


Overall

+ TPA mousefinding
+ Multiplayer
- Infinite loops
- inefficient use of bitmaps and dtms
- standards
- overall a bit too simple

You have a lot of potential, and I suggest you start writing a whole new script that requires something more advanced :) I hope to see you applying again!

Sir R. M8gic1an

2009-09-08 16:48:35

LOL. Marpis, you really got the Scripting Competition Judging inside of you now xD

Ok guys, let's calm down. I didn't read everything, just enough.

I understand the we are all equal statement. All of us are human, we all do mistakes, we all do good things. However, we also are all different and that is why some people get some ranks, some don't.

Smarter Child, use your own quote. Forgive and Forget.

Remember, many people in these forums are young. Staff and Devs (tend) to be older, which is probably the reason why you won't see them snapping that often, but trust me, we all do.

JunkJ, take a deep breath, relax. The comments on your script were never intended as an attack on your OR your scripting ability, they were made in a purpose of judging it to be member's material or not AND they were posted for your own benefit, for you to learn. You'll have to learn to accept criticism, and do something with it. That's how you learn. SRL Members are usually more experienced scripters than Junior Members, and that is why they'll know what to point out.

You are obviously making an effort. Very obviously. We all noticed that.
I personally value an effort greatly, but as you can compare from your script to the script I posted, it is still a far cry, and therefore I (we) can't allow you in solemly on that effort.
Many people have been allowed in with a not-yet members worthy script because we all had seen the huge effort and activity that was put into it, but over MONTHS, not 3 weeks. We knew that the person would keep on improving and working.

You, in contrary, seem to be willing to give up already. That is also why many members will have voted no.

Your attitude was good, but this outburst you had makes it seem as you were just putting on a mask to achieve members. If you want members, be honest about it. Members have a few more priviledges and things to enjoy than Junior Members, but if it ever is about the scripts, there's a hell lot of good them available to you already.

So if you want to give up, that is your choice. If you truely love it, then you won't give up so fast.

Now, let's all follow marpis' and Senrath's example, and post something constructive. I don't want any more hating in this thread. Make some love people.

~RM

marpis

2009-09-08 18:11:44

From: Rasta Magician
LOL. Marpis, you really got the Scripting Competition Judging inside of you now xD
~RM


This hammer puts so much pressure on me :(

cycrosism

2009-09-09 16:01:58

Voted Yes. Keep up the good work

Simtoon

2009-09-21 01:16:25

Bump, to the top of all those locked threads.

Sir R. M8gic1an

2009-09-21 02:33:21

I am sorry, but it seems like you won't make it in this time. You are getting closer. Practice makes perfect. Take the time to learn some more, develop your script more.

Closed.

~RM