SRL Archive - Archive

furuchan64 - SRL Member Application Form


FuruChan

2008-06-27 12:10:49

<!– BEGIN TEMPLATE: formanswers –>
furuchan64 - SRL Member Application Form
furuchan64

What is the meaning to life?


Where you Referred to SRL? If yes, by whom?
no


Programming Knowledge
SCAR, Flash, DarkBasic

Other Communitys
Freddy1990.com

How Long have You Played Runescape
5 years

Are you affilated in anyway with Jagex LTD?
No
—————————————————–
Please write down a paragraph about Yourself.

I am getting well started on scripting, I have taken Flash scripting classes at my school which are very similar to the build of SCAR and I took another class using DarkBasic, a 3-D object video game simulator, which was completely different but good experience. I have been getting more and more into SCAR scripts and I have been using them for about 3 years now and I know the basic build for SRL. I am just now starting to get into more complicated scripting and I will continue to learn and become a better scripter with time.

——————————————————
Please Post a Sample of your Work. Only SCAR Scripts Accepted

This first one was never finished because I dropped it and never found time to redo it but ill add it anyway to show how far I've got with SCAR… (It wont let me use the attachment section so ill post using the script tabs.

program TreeFletchOrDrop;
{This script was made by Furuchan64 as a first script. Tell me how it works
please! Thank you!


Instructions:

Start in Draynor, at the group of tree's by the dungeon with the "!" symbol on
the minimap.

Fill out the setup and press play.

If your fletching have knife if your second inventory slot, and axe in your
first. Other wise you can weild your axe. Do not weild axe if your fletching!

WARNING! This script does NOT have an ent finder! }





{.Include SRL/SRL/Misc/smart.scar}
{.Include SRL/SRL.scar}
{.Include SRL/SRL/Skill/Woodcutting.scar}






var
Antibans, ArrowShafts, Knife, RegLogs,
Loads: Integer;
FoundTree, WalkLog: Boolean;

{~*~*~*~*~*~*~*~*~*~*~*~*~ Setup! ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~}

const
ExclaimRed = 2437360; // Red color in the Dungeon Exclaimation Point by the trees.
TreeColorOne = 3042140; // First Tree Color.
TreeColorTwo = 4493442; // Second Tree Color.
TreeColorThree = 3829092; // Third Tree Color.
ColTolerance = 2; // The Color Tolerance. (Only adjust if it cannot find trees)
WaitTime = 4700; // Time to wait before clicking again, or to next tree. (Milliseconds)
Fletch = True; // Fletch Logs into ArrowShafts? False = Drop logs.
NumLoads = 56; // Number of logs to chop per player.
RunDirection = 'North'; // Direction to run in case of a fight. (North, South, East, West)
SmartWorld = 124; // World you want SMART to log into.
SignedApp = True; // True = Signed, False = Unsigned.

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 0;

// If you get "Out of Range" Error. Then Use "{", that symbol, in the indicated
// Area and close with "}", that symbol. (---> indicated with start and end.)

Players[0].Name := 'Username'; // Runescape Username.
Players[0].Pass := 'Password'; // Runescape Password.
Players[0].Nick := 'sern'; // 3 or 4 letters of the players name. Works better if 1st letter not used.
Players[0].Active := True; // Is this player active? False = No.

{ Players[1].Name := 'Username'; // Runescape Username.
Players[1].Pass := 'Password'; // Runescape Password.
Players[1].Nick := 'Nick'; // 3 or 4 letters of the players name.
Players[1].Active := False; // Is this player active? False = No.

Players[2].Name := 'Username'; // Runescape Username.
Players[2].Pass := 'Password'; // Runescape Password.
Players[2].Nick := 'Nick'; // 3 or 4 letters of the players name.
Players[2].Active := False; // Is this player active? False = No.

Players[3].Name := 'Username'; // Runescape Username.
Players[3].Pass := 'Password'; // Runescape Password.
Players[3].Nick := 'Nick'; // 3 or 4 letters of the players name.
Players[3].Active := False; // Is this player active? False = No. }
end;

{~*~*~*~*~*~*~*~*~*~*~*~ End Setup! ~*~*~*~*~*~*~*~*~*~*~*~*~*~*~}


Procedure LoadBitmaps;
Begin
RegLogs := BitmapFromString(37, 33, 'beNrtll1LG1EQhj13/oDiR' +
'fGrBJFSEUUUQxsUCoISjdqoWCQUQyhVIWAhULEIIS1SRER6LYUiiB' +
'Sk0B/oE16dHnfdxSTd4kUO780edufZmfPO7HZ0tFd7/d/l7ipZ0Fw' +
'6tTw9+HbmxWZ2uJQbSYzoFjIDq6+fF2aHymvjaCc/1gLOxevD0uin' +
'QrqyMYk+rk8giM3iHJXhtSkRhSILVYwdKEQGActk0KZwrpzr2V3ur' +
'eT7qqXMQfHV/ruXFlMgdgJiU7i+rs4Gie7z+rPfp3kEzicaiJ2A2B' +
'SOgjSKEwt9eT8lnAIKpHcISDiOoIliGo56iuiLnbBIHGdyuK3g9tb' +
'6D7em740vKXcdHC66raRryPyGM2IYKgrOwf+AKCMs2nA105WdePIA' +
'oqMaks+yLPxjku3V1xJELkHbfmyarjjzlOC6n2iYE6kXJM5FY4rIf' +
'nC/O2QkvY+yjiC67Wz31cmbi2+5H7WsHofF4wpuiqJIfvrxuFohRf' +
'XA/fw6rzg0O+9g3a1JZSMl0H2+b3Ws8ThK9+f7yuXRouFUTMZLuKm' +
'jQL6L5NUoHAdHdr+Ol84PF+qlyPUEDGMTJgwyljzMpXBUPgpHFpwd' +
'OOopq8Tg7u16sRB1BhQ7YepjmbAUE9xZdS6cXXi8hJMyEA3IdyS2+' +
'+rmvPkWbEzSF/E4f7CYFRv8kbhzsz9bAoPLn13/6Efl72eI7CxB+7' +
'Ql8C90QzSrJEMJEmXs5P/rAgfaXo9mXQMElenf');
{*******************************************************************}
Knife := BitmapFromString(22, 33, 'beNrFlc0KAVEYhs1WuQeXYOs' +
'O3AALiRBimsbfkEJYkchPNH4LmYWNcoXecXRmfd5ZzOndvk9P33zn' +
'TCgU0NF+4eu1YsEolVjIvy4IsWiUqPsgaKIoQxDMSkVmO5sqErRGt' +
'Spz3W5EXYnQ0nURCBB1yzBEIHDb74gJdE0TgYAcoJJAr1FHIAB/53' +
'QkBPqtJgjwt5cLQmBotUGAAPxf1wshAAImAP/zekUIjLod+GOA2OT' +
'3485NQAxQfkElgWQ8jDwPNhb44zxVd1jUJYQWENETET8Css4Rgqh7' +
'hIDq/xWittd7BueTMdaYe8bz6TS60+GAFijnsrgCuImUgEvIpJJ4Q' +
'1gB72fqo+4en3X+fAHyeZXq');
{*******************************************************************}
ArrowShafts := BitmapFromString(30, 28, 'beNrNlksOgCAMBdu1i' +
'dfxAl7CU3j/nRvEUr6lj8SuJOg4faCB6MfFa1B8HZsPHgkSVcOyEZ' +
'tc1MmGLgStK6xeDRFmcYMth6ZwGFpWUy1cUThMzeWQdqqxRuHvkQF' +
'h9gkzSlhiG+QpYe7KI4TJLVzsPRemZQkTTpjklE9Yf4BY4Ui+zx20' +
'JQrD0s9ndA8LsRyY9GXB0nhirwOyZPJw8qKDBTyENYcWRz073URv');

end;


Procedure FightRandoms;
Begin
If (FindFight) Then
Begin
Status('Fighting Random');
Begin
RunAway(RunDirection, True, 1, 7500+random(2575));
end;
end;
end;

Procedure AntiRandoms;
var
Q: Integer;
Begin
For Q:= 0 to 3 do
FindNormalRandoms;
FightRandoms;
FindNonInventoryRandoms;
Wait(10);
end;


Procedure AntiBan;
Begin
if not LoggedIn Then Exit;
Case Random(69) of

0:
Begin
HoverSkill('Woodcutting', False);
Antibans:=Antibans+1;
end;

1:
Begin
HoverSkill('Fletching', False);
Antibans:=Antibans+1;
end;

2:
Begin
BoredHuman;
Antibans:=Antibans+1;
end;

3:
Begin
BoredHuman;
Antibans:=Antibans+1;
end;

4:
Begin
AlmostLogout;
AntiBans:=Antibans+1;
end;
end;
end;

Procedure ProgressReport;
Begin
Writeln('~*~*~*~*~*~*~Progress Report~*~*~*~*~*~*~');
Writeln(' Ran for '+(TimeRunning)+' So far...');
Writeln(' Has Cut '+IntToStr(Loads)+' Logs');
Writeln(' Has done '+IntToStr(Antibans)+' Antibans');
Writeln('~*~*~*~*~*~*~Lets keep it up~*~*~*~*~*~*~');
Writeln('~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~');
end;

Procedure FindTrees;
var
x, y: integer;

Begin
If not LoggedIn then Exit;
Case Random(2) of
0: Begin
If(FindColorTolerance(x, y, TreeColorOne, 0, 0, 700, 500, ColTolerance)) Then
Begin
FoundTree:= True;
MMouse(x, y, 4, 4);
wait(100);
if not FindEnt(x, y, True) then
begin
Mouse(x, y, 4, 4, True);
Wait(WaitTime);
Loads:=Loads+1;
end;
end else
FoundTree:= False;
end;
1:Begin
If(FindColorTolerance(x, y, TreeColorTwo, 0, 0, 700, 500, ColTolerance)) Then
Begin
FoundTree:= True;
MMouse(x, y, 4, 4);
wait(100);
if not FindEnt(x, y, True) then
begin
Mouse(x, y, 4, 4, True);
Wait(WaitTime);
Loads:=Loads+1;
end;
end else
FoundTree:= False;
end;

2:Begin
If(FindColorTolerance(x, y, TreeColorThree, 0, 0, 700, 500, ColTolerance)) Then
Begin
FoundTree:= True;
MMouse(x, y, 4, 4);
wait(100);
if not FindEnt(x, y, True) then
begin
Mouse(x, y, 4, 4, True);
Wait(WaitTime);
Loads:=Loads+1;
end;
end else
FoundTree:= False;
end;
end;
end;


Procedure WalkToExclaimation;
var
x, y: Integer;

begin
if (FoundTree = False) then
Begin
wait(1000);
if (FindColorTolerance(x, y, ExclaimRed, 0, 0, 700, 500, 2)) then
Begin
Mouse(x, y, 0, 0, true);
Wait(5000);
end else
WalkLog:= False;
end;
end;

function DropLogs: Byte;
var
X, Y, I: Integer;

begin
If (Fletch = False) then
Begin
If (InvFull) then
Begin
if not LoggedIn or NoGameTab then exit;
for I := 1 to 28 do
if ExistsItem(I) then
begin
MMouseItem(I);
Wait(150 + random(175));
if Pos('Log', RS_GetUpText) <> 0 then
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, False);
Wait(40 + random(45));
if ChooseOption('rop') then Inc(result);
end;
end;
end;
end;
end;

procedure FletchLogs;
var
X, Y, RX, RY, I: Integer;
Begin
If (Fletch = True) then
Begin
If (InvFull) then
Begin
if not LoggedIn or NoGameTab then exit;
for I := 1 to 2 do
if ExistsItem(I) then
begin
MMouseItem(I);
Wait(150 + random(175));
if Pos('nife', RS_GetUpText) <> 0 then
begin
GetMousePos(X, Y);
Mouse(X, Y, 0, 0, True);
Wait(40 + random(45));
for i := 1 to InvCount do
if ExistsItem(I) then
begin
MMouseItem(I);
Wait(150 + random(175));
if Pos('Log', RS_GetUpText) <> 0 then
Begin
GetMousePos(RX, RY);
Mouse(RX, RY, 0, 0, True);
wait(200+random(150));
if FindNPCChatText('hafts', ClickRight) then
Begin
wait(180+random(60));
ChooseOption('ake X');
wait(1400+random(300));
TypeSend('28'+chr(13));
wait(42 * 1000 + random(2 * 1000));
end;
end;
end;
end;
end;
end;
end;
end;




procedure Logoutif;
Begin
if (WalkLog = False) then
Begin
Logout;
end;
end;



Procedure SetUpSmart;
Begin
SmartSetupEx(SmartWorld, False, SignedApp);
While Not (SmartReady) Do
Wait(100);
SetTargetDC(SmartGetDC);
If Not (LoggedIn) Then
While Not (SmartGetColor(386, 249) = 65535) Do
Wait(100);
end;




Procedure StartPlay;
Begin
Repeat
If Loads >= NumLoads then
Begin
if not LoggedIn then Exit;
ProgressReport;
Writeln('Logs Cut. Switching Players...');
NextPlayer(True);
Loads:= Loads-Loads;
StartPlay;
end;
ProgressReport;
ClearDeBug;
FindTrees;
WalkToExclaimation;
AntiRandoms;
FletchLogs;
DropLogs;
AntiBan;
Until(False);
end;


begin
ClearDeBug;
DeclarePlayers;
SetUpSmart;
SetupSRL;
LoginPlayer;
SetAngle(True);
MakeCompass('N');
StartPlay;
end.

And this second one is one of the better ones I've made so far, It's a maple tree cutter…


Program MapleCutter;
{.include SRL/SRL/Misc/smart.scar}
{.include SRL/SRL.scar}
var
TreeSym, Loads, SleepLoads: integer; {


::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::: Thank you for using... :::::::::::::::::::
:::::::::::::::::: Furuchan's :::::::::::::::::::
:::::::::::::::::: Maple Chopper :::::::::::::::::::
:::::::::::::::::: --------------------- :::::::::::::::::::
:::::::::::::::::: INSTRUCTIONS :::::::::::::::::::
:::::::::::::::::: 1. Start in Seers Bank. :::::::::::::::::::
:::::::::::::::::: 2. Have Axe WEILDED. :::::::::::::::::::
:::::::::::::::::: 3. Fill out the Setup. :::::::::::::::::::
:::::::::::::::::: 4. Press Play. :::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::: Please Post Progress Reports :::::::::::::::::::
:::::::::::::::::: And Errors... :::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
}






{::::::::::::::::: Setup :::::::::::::::::::}
const
NumLoads = 3; // Number of Loads to do until sleep.
SleepTime = 4; // Number of minutes to sleep.
SmartWorld = 83; // World you want SMART to login to.
SignedApp = True; // Used a signed application? True, False.

Procedure DeclarePlayers;
begin
HowManyPlayers := 1;
NumberOfPlayers(HowManyPlayers);
CurrentPlayer:= 0;
Players[0].Name := 'Username'; // Username.
Players[0].Pass := 'Password'; // Password.
Players[0].Nick := 'sern'; // Nickname. (3 - 4 letters of name. Use lowercase and keep out first letter.)
Players[0].Active := True;
end;
{:::::::::::::::: End Setup ::::::::::::::::::::}









//SRL's Open Bank Function Modified a little by me to work in Seers.
function RopenBankFast(Location: String): Boolean;
var
x, y, i, l, c, z: Integer;
Info: TIntegerArray;
Booths, t: TPointArray;
begin
Wait(400);
case LowerCase(Location) of
'sb', 'seers bank': Info := [MSCX, MSCY, 5335672, 14, 1];
else
begin
srl_Warn('OpenBankFast', 'Unknown bank: '+Location, warn_AllVersions);
Exit;
end;
end;

MakeCompass('N');
z := GetColorToleranceSpeed;
ColorToleranceSpeed(Info[4]);
FindColorsSpiralTolerance(Info[0], Info[1], Booths, Info[2], MSX1, MSY1, MSX2, MSY2, Info[3]);
ColorToleranceSpeed(z);
SetArrayLength(t, 0);
t := Booths;
SetArrayLength(Booths, 0);
Booths := ReArrangeAndShortenArray(t, 14);
l := GetArrayLength(Booths) -1;
for i := 0 to l do
begin
if (not LoggedIn) or BankScreen or PinScreen then
Break;
if (LowerCase(Location) = 'vwb') or (LowerCase(Location) = 'varrock west') then
begin
Booths[i].X := Booths[i].X + 5;
Booths[i].Y := Booths[i].Y - 20;
end;
MMouse(Booths[i].X, Booths[i].Y, 3, 3);
Wait(75 + Random(75));
if IsUpText('ooth') Then
begin
GetMousePos(x, y);
Mouse(x, y, 0, 0, False);
Wait(70 + Random(75));
if ChooseOption('uickly') then
begin
FFLag(0);
MarkTime(c);
repeat
Wait(100);
until (BankScreen) or (PinScreen) or (TimeFromMark(c) > 3000);
end;
end;
end;
Result := (BankScreen) or (PinScreen);
end;


//SRL's Function for Ent Finding. Used in here instead of adding Woodcutting include.
//Woodcutting include messed with the script for some reason =/.
function FindEnt(fx, fy: Integer; AvoidWhenFound: Boolean): Boolean;
var
arUpTextEntColorPoints: TPointArray;
x, y, EntTime, tcts: Integer;
begin
if not(LoggedIn)then
Exit;
GetMousePos(x, y);
if(x <> fx)or(y <> fy)then
MMouse(fx, fy, 0, 0);
if(IsUpText('Chop'))then
begin
tcts := GetColorToleranceSpeed;
ColorToleranceSpeed(2);
SetColorspeed2Modifiers(0.4, 0.4);
FindColorsTolerance(arUpTextEntColorPoints, 51657, 80, 6, 127, 20, 5);
Result := Length(arUpTextEntColorPoints) > 10;
ColorToleranceSpeed(tcts);
end;
if(Result)then
begin
WriteLn('Ent Found!!');
if(AvoidWhenFound)then
begin
Writeln('Waiting for it to go away.');
MFNF(MMCX, MMCY, -1, 1);
MarkTime(EntTime);
while(TimeFromMark(EntTime) < 35000)do
if(Random(20) > 15)then
IdleTime(500, 500, 0.4)
else
Wait(500 + Random(500));
EntsAvoided := EntsAvoided + 1;
end;
end;
end;




Procedure FightRandoms;
Begin
If (FindFight) Then
Begin
Status('Fighting Random');
Begin
RunAway('South', True, 1, 7500+random(2575));
end;
end;
end;

Procedure AntiRandoms;
var
Q: Integer;
Begin
For Q:= 0 to 3 do
FindNormalRandoms;
FightRandoms;
FindNonInventoryRandoms;
Wait(10);
end;


procedure FindTreeMM;
var
x, y, q, r: Integer;

begin
if FindSymbolIn(x, y, 'tree', MMX1, MMY1, 714, 86) then
begin
Mouse(X, Y, 3, 3, True);
FFlag(0);
end else
begin
writeln('Couldn`t find Tree Symbol, trying failsafe...');
if (FindColorTolerance(q, r, 1330031, MMX1, MMY1, 710, 100, 5)) then
begin
wait(1000);
Mouse(q, r, 2, 2, True);
FFlag(0);
end else
begin
writeln('Failsafe failed!');
logout;
end;
end;
end;


Procedure FindTreeMS;
var
x, y: integer;

Begin
If not LoggedIn then Exit;
Repeat
Case Random(3) of
0:
Begin
If(FindColorTolerance(x, y, 12393, MSX1, MSY1, MSX2, MSY2, 4)) Then
Begin
MMouse(x, y, 0, 0);
FindEnt(x, y, True);
wait(100);
Mouse(x, y, 4, 4, True);
Wait(5000);
AntiRandoms;
end;
end;

1:
Begin
If(FindColorTolerance(x, y, 10844, MSX1, MSY1, MSX2, MSY2, 4)) Then
Begin
MMouse(x, y, 0, 0);
FindEnt(x, y, True);
wait(100);
Mouse(x, y, 4, 4, True);
Wait(5000);
AntiRandoms;
end;
end;

2:
Begin
If(FindColorTolerance(x, y, 27282, MSX1, MSY1, MSX2, MSY2, 4)) Then
Begin
MMouse(x, y, 0, 0);
FindEnt(x, y, True);
wait(100);
Mouse(x, y, 4, 4, True);
Wait(5000);
AntiRandoms;
end;
end;
end;
until(InvFull);
end;


Procedure BankWalk;
var
x, y, q, r: Integer;
begin
if (InvFull) then
begin
if FindSymbol(x, y, 'bank') then
begin
Mouse(X, Y, 3, 3, True);
FFlag(0);
end else
begin
Writeln('Couldn`t find Bank Symbol, trying failsafe...');
if (FindColorTolerance(q, r, FindLadderColor, MMX1, MMY1, 688, 145, 3)) then
begin
wait(1000);
Mouse(q, r, 2, 2, True);
FFlag(0);
end else
Writeln('Failsafe failed!');
logout;
end;
end;
end;


Procedure DepositLogs;
begin
RopenBankFast('seers bank');
If (BankScreen) then
Deposit(1, 28, True);
wait(200);
CloseBank;
Loads := Loads +1;
SleepLoads := SleepLoads +1;
end;


Procedure Proggy;
begin
writeln(':::::::::::::::::::::::::::::::::::::::::');
writeln('::Thanks for using Furuchan`s Maple Chopper');
writeln('::We`ve been going for '+TimeRunning);
writeln('::We`ve done '+intToStr(Loads)+' loads');
writeln('::We`ve avoided '+intToStr(EntsAvoided)+' Ents');
writeln('::Chop til we drop! =P');
writeln(':::::::::::::::::::::::::::::::::::::::::');
end;



Procedure MainLoop;
begin
Repeat
If not (LoggedIn) then exit;
MakeCompass('S');
wait(20);
MakeCompass('N');
FindTreeMM;
FindTreeMS;
BankWalk;
DepositLogs;
Proggy;
if (SleepLoads >= NumLoads) then
begin
If not (LoggedIn) then exit;
Logout;
wait(2000);
status('Sleeping...');
writeln('Don`t worry, just taking a little nap...');
wait(SleepTime * 60000 * random(3 * 60000));
status('Starting...');
SleepLoads := 0;
LoginPlayer;
end;
Until(False);
end;


Procedure SetUpSmart;
begin
SmartSetupEx(SmartWorld, False, SignedApp);
While Not (SmartReady) Do
Wait(100);
SetTargetDC(SmartGetDC);
If Not (LoggedIn) Then
While Not (SmartGetColor(386, 249) = 65535) Do
Wait(100);
end;



Begin
ClearDebug
DeclarePlayers;
SetUpSmart;
SetupSRL;
LoginPlayer;
SetAngle(True);
MakeCompass('N');
MainLoop;
End.

——————————————————
<!– END TEMPLATE: formanswers –>

MasterKill

2008-06-27 12:26:11

sorry, a no, not good enough yet :(
your standaards are way off. and don't use findcolortolerance for object finding! try to use FindObjectTPA in Object.Scar

What factors do you need:

  • DTMs / DDTMs
  • Decent complex working script.
  • FailSafes
  • MultiPlayer
  • Break out of potential endless loops
  • Standards! Required to get people read your script.
  • RadialWalk / DDTM Walking
if you allready have some points don't mind them :)


How do we judge it?

looking at the code, standaards. and whe imagen if it's working yes or no.


How many lines of code do you need

I would say 300+.
Make sure you got fail saves for evry possible option that could be going wrong.


well….

I hope this helped ya. good luck scripting!

Negaal

2008-06-27 18:23:48

Have to agree with MK.

Scaper

2008-06-29 17:58:56

same agree with mk

you seem to know what you doing i think bit no from me this time sorry

Raskolnikov

2008-07-01 01:59:18

Well stated above

Good Luck and improve on those things.

Cut em2 it

Starblaster100

2008-07-02 05:42:57

Its a no for now i'm afraid