SRL Archive - Archive

EtherFreak - SRL Member Application


EtherFreak

2012-02-04 15:12:05

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?



What is your general programming knowledge?
Basic, Matlab, HTML


Are you a member of any other communities?
No


Tell us about yourself…
From: EtherFreak
I am a recent college grad, and took up fooling with botting when the game became boring. It now has turned into a game of finding out if I can make a computer play a game for me. I suppose I could do this with other games, but I went with runescape due to the hours I spent (wasted? you decide) playing the game.

I like fooling with electronics prototyping, computer software, wasting my time with video games and tinkering with my vehicles.

I am currently unemployed with the college degree, so fooling with the coding to play the game is, well, relaxing for me. I may not be one of the best script writers, and I know my standards still need work, but I try. In the end, I always have something that works, even if marginaly. I sometimes may bite off too large of a project, but whats the fun if you dont try?



Please show us one (or multiple) of your scripts.

I would encourage you to visit the post for this script as well as look over the script. The reason I am asking this, is I wish to show my progress from where this started, and where I am now.
http://villavu.com/forum/showthread.php?t=67846

// script by EtherFreak
//V1.7
program LogBurner;
//Remove // for smart
{.Include SRL\SRL\Misc\SMART.simba}
{.include SRL/SRL.simba}

Const

// ----------------SETUP-----------------------------
// Start in Selected Bank. Setup log location.
loadcount= 10 ; //how many cycles you need (27 logs per cycle)
BankCol=2 ; //log col in bank
BankRow= 2 ; //log row in bank
threelet='ohn' ;//2-4th letters of name. I.E. Johntrucker='ohn' (optional)
BurnWait= 2500 ;//How long it takes for a log to light and burn.
BankLocation=1 ;//1=VEB, 2=FEB, 3=placeholder for future bank
// ---------------END SETUP----------------------------------------

var
x, y: integer;
BankLoc: string;
counter, count, kill, ydot: Integer;

procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;
with Players[0] do
begin
// ----------------SETUP-----------------------------
Name := ''; // Username
Pass := ''; // Password
Pin := ''; // Bank pin; leave as '' if player doesn't have one
Active := True;

end;
end;
// ---------------END SETUP----------------------------------------

{*******************************************************************************
procedure SetAngle(Highest : Boolean);
By: Raymond, edit by NaumanAkhlaQ
Description: Sets the mainscreen at highest\lowest angle (Depends on the boolean)
*******************************************************************************}
procedure SetAngles(Highest : Boolean);
begin
if (not LoggedIn) then exit;
KeyDown((Integer(not Highest) * 2) + 38);
Sleep(1000 + Random(300));
KeyUp((Integer(not Highest) * 2) + 38);
Wait(500 + Random(100));
end;

Procedure initrun;
begin
Smart_Members := False;
Smart_Server := 1;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
LoginPlayer;
counter:=2;
count:=0;
kill:=0;
wait(4000);
findnormalrandoms;
//bank location setup
if banklocation=1 then //veb
begin
ydot:=10
bankloc:='veb';
roadcolor:=8752779;
end;
if banklocation=2 then //feb
begin
ydot:=7;
bankloc:='feb';
roadcolor:=7702407;
end;
if banklocation=3 then //placeholder for future bank location
begin
ydot:=7;
bankloc:='db';
roadcolor:=4808045;
end;

RoadColorChecker;
if findsymbol(x,y,'bank') then
writeln('initrun complete. You are at the bank. The roadcolor is:'+inttostr(roadcolor)+'.')
else
begin
writeln('cant tell if your at the bank. trying alternite method');
if CountDots('yellow')>ydot then
begin
writeln('yellow dot of '+IntToStr(CountDots('yellow'))+' count indicates at bank')
end else
begin
writeln('Not at bank? Stop Script Now or Verify Working Corectly!');
end;
end;
setangles(true);
setrun(true);
end;

Procedure Burn;
Var
I,K:integer;
Begin
K:=0;
Wait(RandomRange(BurnWait,1000));
if bankscreen then
exit;
For I:= 1 to 28 do
Begin
findnormalrandoms;
if ExistsItem(I) then
begin
invmouse(I,0); //clicking log
wait(RandomRange(100,100));
WaitOptionMulti(['ight','ght','ancel'], 1500);
Wait(RandomRange(BurnWait,1000));
end;
if IsChatBoxTextBetween ('ere',clBlack,8,8) then //fire not allowed
begin
inc(k);
if banklocation=1 then
RadialRoadWalk(RoadColor,268,280,24,-2,0);
if banklocation=2 then
RadialRoadWalk(RoadColor,15,90,34,-2,0);
if banklocation=3 then //placeholder
RadialRoadWalk(RoadColor,80,100,34,-2,0);
Wait(RandomRange(2850,1000));
dec(I);
writeln('Cant light a fire here, trying a different spot');
if k=4 then
begin
//Writeln('Issue making fire, Going back to bank...');
//exit;
Writeln('Fire Issue, logging out...');
logout;
terminatescript;
end;
end;
if ExistsItem(I) then
begin
invmouse(I,0); //clicking log
wait(RandomRange(200,100));
WaitOptionMulti(['ight','ght','ancel'], 1500);
writeln('ReBurning #'+IntToStr(I)+' log.');
Wait(RandomRange(BurnWait,1000));
end;
if IsChatBoxTextAnyLine (threelet,clBlue) then //name detection
begin
writeln('Someone said your name, logging out to be safe');
logout;
TerminateScript;
end;
end;
if invcount=0 then
writeln('Burned correctly') else
Burn;
End;

Procedure Bank;
Begin
writeln('Banking kill is:'+inttostr(kill)+'.');
mousespeed:=(7+random(3));
inc(kill);
findnormalrandoms;
Wait(RandomRange(850,1000));
openbankfast(BankLoc);
Wait(RandomRange(2000,2500));
withdraw(BankCol,BankRow,0);
Wait(RandomRange(2000,2500));
if kill=4 then
Begin
closewindow;
writeln('Banking failed, logging out...');
logout;
TerminateScript;
end;
if invfull then
writeln('Banked corectly')
else
bank;
kill:=0;
End;

Procedure toburn;
Begin
findnormalrandoms;
writeln('Walking to burn. The roadcolor is:'+inttostr(roadcolor)+'.');
if banklocation=1 then
RadialRoadWalk(RoadColor,0,75,60,-2,0);
if banklocation=2 then
RadialRoadWalk(RoadColor,45,75,45,-2,0);
if banklocation=3 then
RadialRoadWalk(RoadColor,0,75,30,-2,0);
Wait(RandomRange(1500,1500));
if bankscreen then
begin
writeln('Bankscreen still open! The roadcolor is:'+inttostr(roadcolor)+'.');
toburn;
end;
End;

Procedure tobank;
Var
TPA:TPointArray;
L,BL,S,I:Integer;
Begin
GetNewRoadColor(mmx1,mmy1,mmx2,mmy2,6);
BL:=0;//for other banks...
repeat
findnormalrandoms;
if banklocation=2 then
begin
//from slr By: nielsie95 modified by ZephyrsFury
MFNF(Trunc(35 * Sin(Radians(FixD(Rs_GetCompassAngleDegrees + 90))) + MMCX + Random(5)),
Trunc(-35 * Cos(Radians(FixD(Rs_GetCompassAngleDegrees + 90))) + MMCY + Random(5)), 1, 1);
FFlag(0);
Wait(500 + Random(1500));
end;
setrun(true);
RadialRoadWalk(RoadColor,70,120,70,-2,0);
writeln('Walking to bank. The roadcolor is:'+inttostr(roadcolor)+'.');
if kill=3 then
begin
writeln('Walking to bank failed, logging out...');
logout;
TerminateScript;
end;
inc(kill);
writeln(countdots('yellow'));
if findsymbol(x,y,'bank') then
if banklocation>1 then
BL:=1;
until (CountDots('yellow') > ydot) or (BL=1)
BL:=0;
//bank
kill:=0;
//wait(RandomRange(1000,1000));
//writeln(countdots('yellow'));
findsymbol(x,y,'bank');
if banklocation=3 then
writeln('using bank symbol for drainer')else
begin
writeln('Using yellow dots for bankers');
TPA:=GetMinimapDotsIn('yellow', MMX1, MMY1, MMX2, MMY2);
L:=length(TPA);
S:=0;
I:=0;
repeat
inc(I);
if (TPA[I].y)=(TPA[I+1].y) then
if (TPA[I].y)=(TPA[I+2].y) then
S:=I;
if (I+3)>L then //failsafe in case yellow dots not in row for bankers
begin
writeln('Yellow dots for bankers failed, trying to work off bank symbol');
if findsymbol(x,y,'bank') then
begin
writeln('found bank symbol, your in luck');
S:=I;
TPA[S].x:=x;
TPA[S].y:=y+9;
end else
begin
writeln('Cant find bank symbol, loging out...');
logout;
terminatescript;
end;
end;
until S>0
//writeln(S)
//writeln(TPA);
x:=TPA[S].x;
y:=(TPA[S].y)-9;
end;
mouse(x,y,7,7,true);
wait(RandomRange(8000,9000));
End;

Procedure MainLoop;
begin
initrun;
//toburn;
//burn;
//tobank;
repeat
Bank;
toburn;
burn;
tobank;
inc(count);
writeln('There are '+IntToStr(loadcount-count)+' loads to go.');
until (count=loadcount)
writeln('Completed without error!');
logout;
end;

Begin
MainLoop;
end.

Also, some have thought the following was different, or unusual:
    if IsChatBoxTextAnyLine (threelet,clBlue) then    //name detection
begin
writeln('Someone said your name, logging out to be safe');
logout;
TerminateScript;
end;
My thought process is I have seen a lot of players reported for not responding directly to their name, and so this is something that I feel will help prevent your player from being reported. This may seem wierd, but the reason for it is a lot of people spot possible bot like activity, and then try to engage the bot in conversation. They then may report based on no response. Another possibility is that you try to make an auto responder. It needs to be perfect, or it will guaranteeing you receiving a report. My best example was a person that had detection of "wc" and would state his wc level. the only problem was it did not have a timer. so you could say wc level multiple times, and it would be the same response.

Sin

2012-02-04 15:14:22

Yes.

masterBB

2012-02-04 16:16:24

No.

No use of any find color function. (except for radial walk)

Bad standards.

No failsafes.

I see you put some effort in it, good job. But I don't think this is members worthy.

EtherFreak

2012-02-04 16:29:18

As masterbb has brought to my attention, my log burner script has little color finding functionality. I have attached another of my scripts that is older, the standards are poor and the fail safes are close to non existent. I included it to show my understanding of color finding.

The script works in the crafting guild. it will mine clay, soften, throw pots, fire, drop and repeat.
// Script by EtherFreak
//Version 1
program bowl;
//Remove "//" for smart
{.Include SRL\SRL\Misc\SMART.simba}
{.include SRL/SRL.simba}


Const
RockColor=8042201 ; //color picker for rock
WheelColor=9211026 ;// color picker for wheel
sinkwater= 15968903 ;//water color in sink
loadcount=7;
var
x, y,kill,count: integer;
TPA:TPointArray;
ATPA:T2DPointArray;
I: Integer;

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

with Players[0] do
begin
Name := '';
Pass := '';
Nick := '';
Active := True;

end;
end;

procedure findtpa(Color: integer);
begin
mousespeed:=(7+random(3));
FindColorsspiralTolerance(MSX2/2,MSY2/2,TPA, Color, MSX1, MSY1, MSX2,MSY2,4);
ATPA := TPAToATPAEx(TPA, 20, 20);
end;

procedure findtpalrg(Color: integer);
begin
mousespeed:=(7+random(3));
FindColorsTolerance(TPA, Color, MSX1, MSY1, MSX2,MSY2,4);
ATPA := TPAtoATPAEx(TPA, 40, 40);
SortATPASize(ATPA,True);
end;

procedure getxy;
begin
if length(ATPA)=0 then
exit;
SortATPAFrom(ATPA, Point(MSCX, MSCY));
MiddleTPAEx(ATPA[i], x, y);
end;

procedure clickxy(text: string);
begin
if length(ATPA)=0 then
exit;
MMouse(x, y, 20, 20);
MMouse(x, y, 8, 5);
wait(random(300)+300);
getmousepos(x,y);
begin
if ( WaitUpTextMulti([text], 200) ) then
begin
writeln('Clicking');
Mouse(x,y,1,1,true);
wait(500);
end else
begin
findtpa(RockColor);
getxy;
clickxy(text);
end;
end;
end;

Procedure water;
var
IT:TInvenItem;
begin
findnormalrandoms;
findsymbol(x,y,'water');
mouse(x-4,y,8,8,true);
wait(5000+random(4000));
kill:=1+kill;
invmouse(1+random(13),1);
if (FindObjCustom(X, Y, ['ink','Sink'], [sinkwater], 3)) then
begin
writeln('Making Soft Clay');
mouse(x,y,1,1,true);
wait(3000);
mmouse(359,408,200,200);
mmouse(259,408,25,25);
getmousepos(x,y);
mouse(x,y,1,1,true);
wait(5000);
IT:=GetInven(28);
writeln('begining repeat');
repeat
wait(1000)
until IT<>GetInven(28)
writeln('Done softening clay');
wait(random(5000));
kill:=0;
end else
begin
writeln('Failed to find the sink, trying again');
if kill=5 then
begin
writeln('failed at water, logging out');
logout;
exit;
writeln('went past exit');
end;
water;
end;
end;


Procedure mineclay;
begin
findsymbol(x,y,'mine');
mouse(x-5,y-5,10,15,true);
wait(5000);
repeat
FindNormalRandoms;
findtpa(rockcolor);
getxy;
clickxy('ine');
repeat
kill:=kill+1;
wait(100);
until (IsChatBoxTextBetween('swing',clblack,8,8))or (kill=20)
kill:=0;
repeat
kill:=kill+1;
wait(100);
until (IsChatBoxTextBetween('clay',clblack,8,8))or (kill=20)
kill:=0;
wait(100+random(2000));
until invfull
end;

Procedure towheel;
begin
FindNormalRandoms;
findsymbols(TPA,'pot');
ATPA := SplitTPAEx(TPA, 2, 2);
writeln(ATPA);
MiddleTPAEx(ATPA[1], x, y);
mouse(x+5,y,5,5,true);
writeln('going to throw');
wait(5000);
end;

procedure makebowl;
var
IT:TInvenItem;
begin
FindNormalRandoms;
kill:=1+kill;
wait(1000);
if (FindObjCustom(X, Y, ['orm','otter','heel'], [2968934, 9277076, 7566200,3298930], 3)) then
begin
mouse(x,y,1,1,true);
writeln('clicked wheel');
wait(2000);
mmouse(359,408,200,200);
mmouse(340,408,30,30);
getmousepos(x,y);
mouse(x,y,1,1,true);
writeln('Started Throwing');
IT:=GetInven(28);
repeat
wait(1000)
until IT<>GetInven(28)
writeln('Done Throwing');
wait(random(5000));
end else
begin
writeln('failed to find wheel, trying again');
if kill=2 then
begin
mouse(20+(MSX2/2),MSY2/2,5,5,true);
end;
if kill=3 then
towheel;
if kill=5 then
begin
writeln('failed at throwing, logging out');
logout;
exit;
writeln('went past exit');
end;
mouse(x,y,0,0,true);
makebowl;
end;
kill:=0
end;

procedure firebowl;
var
IT:TInvenItem;
begin
FindNormalRandoms;
kill:=1+kill;
findsymbols(TPA,'pot');
ATPA := TPAToATPAEx(TPA, 20, 20);
MiddleTPAEx(ATPA[0], x, y);
mouse(x,y,15,15,true);
writeln('going to fire');
wait(5000);
findtpa(856665);
getxy;
mmouse(x,y-10,5,5);
getmousepos(x,y);
wait(100);
if ( WaitUpTextMulti(['ven'], 200) ) then
begin
writeln('Clicking oven');
Mouse(x,y,1,1,true);
wait(2000);
mmouse(359,408,200,200);
mmouse(259,408,25,30);
getmousepos(x,y);
mouse(x,y,1,1,true); //Needs Failsafe
writeln('Started Firing');
wait(5000);
IT:=GetInven(28);
repeat
wait(1000)
until IT<>GetInven(28)
writeln('Done Firing');
wait(random(10000));
end else
begin
if kill=5 then
begin
writeln('failed at firing, logging out');
logout;
exit;
writeln('went past exit');
end;
writeln('failed to click oven, trying again');
firebowl;
end;
kill:=0;
end;

Procedure checkfire;
begin
invmouse(1+random(27),3);
wait(1400);
if ( WaitUpTextMulti(['unf'], 200) ) then
begin
writeln('failed firing, trying again');
firebowl;
end else
writeln('bowls fired correctly');
end;

procedure SetAngles(Highest : Boolean);
begin
if (not LoggedIn) then exit;
KeyDown((Integer(not Highest) * 2) + 38);
Sleep(1000 + Random(300));
KeyUp((Integer(not Highest) * 2) + 38);
Wait(500 + Random(100));
end;

procedure initrun;
begin
wait(200);
Smart_Members := False;
Smart_Server := 77;
Smart_Signed := True;
Smart_SuperDetail := False;
SetupSRL;
DeclarePlayers;
LoginPlayer;
kill:=0;
count:=0;
wait(5000);
SetAngles(true);
SymbolAccuracy := 0.5;
mousespeed:=(7+random(3));
FindNormalRandoms;
writeln('Initrun complete');
end;

Procedure mainloop;
begin
initrun;
writeln('ini run com');
//mineclay;
//water;
//towheel;
//makebowl;
//firebowl;
repeat
count:=count+1;
dropall;
wait(200);
dropall;
writeln('finished the drop');
mineclay;
water;
towheel;
makebowl;
firebowl;
checkfire;
writeln(loadcount-count);
writeln('loads to go');
until loadcount=count
dropall;
wait(3000);
writeln('ran complete');
logout;
end;

begin
mainloop;
end.

Chris

2012-02-04 17:26:02

Your logburner was the first script I ever used here at villavu ^^
Walking back to the bank didnt work for me but you did as much as possible to help :)
I also learned a lot from editting your script.

Yes.

masterBB

2012-02-04 17:32:39

Standards are still a bit off. But I like the simple TPA sorting. I love that to be honest. I already voted no. But just imagine a no less and a yes more to get your poll results :).

EtherFreak

2012-02-04 17:57:05

Chris, I am glad my script helped you learn. I once was too relient on symbol finding for walking, which leaves no failsafes. Now I use the yellow dots in a row, and the bank symbol for a failsafe, which may still not be perfect, but is better then it once was…

masterBB, I should shake the dust off my crandor adamantium miner, and bar maker. It worked quite well as a miner and superheater bar maker, but the walking was poor at best. I plan to revamp it, but I need to rethink how I did some stuff in it.

EtherFreak

2012-02-10 13:40:56

Hmm, it would seem that the following script may be of some use on this decision. (joke intended)

program EtherFreaksMember;

Procedure Fate;
Begin
if random(2)=0 then
Writeln('Accept Etherfreak as a Member ')
else
WriteLn('Do not accept EtherFreak as a member ');
Writeln('Have a nice day!');
end;

begin
Fate;
end.

EtherFreak

2012-02-13 00:16:11

This is a request to all the users that voted:
If you voted no, please tell me why you voted no, so that I may improve my skills further.
If you voted yes, please tell me what you liked, so I can do more of it!

And thank you for your vote!

[XoL]

2012-02-15 17:46:54

Please don't triple post, at least not in a section where post count matters.
–

Anyway, what I think is you would make a decent addition I like your fire-maker. I wish you would be a little more active on other categories other than your script thread. Voted yes, I believe (I voted a while ago).

EtherFreak

2012-02-17 04:01:09

Just out of curiosity, how long until the voting is complete?

Hobbit

2012-02-23 12:56:33

In!

Welcome :)