SRL Archive - Archive

ashaman88 - SRL Member Application


Ashaman88

2012-03-26 15:04:35

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


Are you affilated in anyway with Jagex LTD?
No

Were you Referred to SRL?
No


What is your general programming knowledge?
Pascal
VBA


Are you a member of any other communities?
sythe


Tell us about yourself…
From: ashaman88
My name is Mark Maline and I am in my last semester of a 5 year program at Texas A&M University in College Station, TX. We get a undergrad and masters in Accounting. My focus is in Auditing. We also sit for the CPA exam this semester, so I have been studying for that hardcore (1 part down, 3 to go!). Lived in Austin, TX most of my life. Enjoyed playing on most of the sports teams through high school, although college has eliminated pretty much all of that lol. I've played RS on and off since I was in 8th grade and really got into botting in the past year. When the "bot nuke" happened, I moved over to Simba, and have been learning a lot about Pascal. Part of my program at A&M requires a lot of training in VBA with macros in Excel and a lot of those general principles have been true for Pascal so it has made the transition easier. If there is anything else, just ask!



Please show us one (or multiple) of your scripts.
My Salamander power hunter script. Logged over 172 days on SRL stats so far. The green salamander feature hasn't been released yet so Sin can get some levels :P. But I know he has tested it heavily, and Er1k has used the green sally option as well.
*Note* I had to take out the on screen graphic for this text to fit in here so it may not compile. If you want to see the full version click here

Program Ashaman2IOSalamander;
{$Define SMART}
{$Define Crashsmart}
{$Include SRL/SRL/Misc/SMART.simba}
{$i SRL/SRL.simba}
{$I SRL/SRL/Misc/Debug.simba}
{$I Srl/Srl/Skill/Fighting.Simba}
{$I SRL/SRL/Misc/PaintSmart.Simba}

{
Ashaman2IOSalamander v5.3
-Make sure you have at least 3 nets and ropes (if you can use that many) ---- If doing summoning - recommended 12 pouches and 3 4-dose summoning potions
-Make sure all characters are standing in the area around the three trees. See picture
-Don't be an A hole, find an empty world
}


Const

{*****************************************************************************************

********This is junk for you to fill out!! Make sure you read over it carefully***********

******************************************************************************************}

SRLStats_Username = ''; // ***Leave blank if you don't have a stats account***
SRLStats_Password = '';
OnScreenProggy = True; // ***Set to False if you don't want proggy on screen.***
TimetoRun = 5.0; // ***Enter number of hours to run until SmartManager restarts or time per character (default at 5hrs)***
HealthMin = 300; // ***If health is below this amount script will log out (Only for low levels at green salamanders)***
CatchType = 'Green'; // ***Set to Green if catching green salamanders, Red if catching red salamanders***

Procedure DeclarePlayers;
Begin
HowManyPlayers := 1; // ***Change to however many players you want***
NumberOfPlayers(HowManyPlayers);
CurrentPlayer := 0;

Players[0].Name := ''; // ***Username***
Players[0].Pass := ''; // ***Password***
Players[0].Active := True;

{
Players[1].Name := '';
Players[1].Pass := ''; // ***Delete the brackets to add a player***
Players[1].Nick := '';
Players[1].Active := True;

}

{
Players[2].Name := '';
Players[2].Pass := ''; // ***Delete the brackets to add a player***
Players[2].Nick := '';
Players[2].Active := True;
}
End;

{*******************************************************************************


Don't touch anything below this line unless you know what you are doing!!


*******************************************************************************}

Var
SalamanderCount,XP,StartTime,StartingExperience,SalamandersPH,XPH,Sec,T,T2,Invcnt,NumberofTraps,Level,A,B,C,D,J,K: Integer;
RSpotDTM,GSpotDTM,SalDTM,RopeDTM,CheckDTM,NWDTM,SWDTM,GSalDTM,GCheckDTM,Proggy,Check,Sal,Position,SetTrap: Integer;
aFound,RunTime: Extended;

Const
ScriptVersion = '5.3'; // DON'T CHANGE THIS
UseAutoChecker = True; // ***Checks for script update***

{*******************************************************************************
Function AutoupdateMe;
By: Shuttleu
Edited By: Ashaman88
Description: Autoupdates Script.
*******************************************************************************}
Procedure AutoUpdateMe;
Var
Neifile: Integer;
OnlineVersion, NewScript, NeiFeilNennen: String;
Begin
If UseAutoChecker then
Begin
Writeln('Checking for script updates...');
OnlineVersion := GetPage('http://ashamanredsalamander.googlecode.com/git/Version.txt');
Writeln(OnlineVersion);
Writeln(ScriptVersion)
If (trim(OnlineVersion) > ScriptVersion) Then
Begin
WriteLn('Newer script version online!');
WriteLn('Autoupdating to newer version.');
NewScript := GetPage('http://ashamanredsalamander.googlecode.com/git/AshamanRedSalamander.simba');
NeiFeilNennen := ScriptPath+ 'Ashaman2IOSalamander V'+OnlineVersion+' by Ashaman88.simba';
Neifile := Rewritefile(NeiFeilNennen, true);
Try
WriteFileString(Neifile, NewScript);
Except
Begin
WriteLn('Fatal error writing to '+NeiFeilNennen+'!!');
Terminatescript;
End;
End;
CloseFile(Neifile);
WriteLn('New script downloaded to '+NeiFeilNennen+'!! Please use this one!!');
TerminateScript;
End Else
WriteLn('You have the latest version of the script!');
End Else
WriteLn('!!!!! Not checking for latest version, you may be outdated!');
End;

Procedure SetDTM;
Begin
RSpotDTM := DTMFromString('mWAAAAHicY2FgYChkYmDIBuJyIM4D4mCgWCAQBwBxJBD/fsPNUOqhwRAdGQnG/4Fi/EiYEQ2DAADrJwk8');
GSpotDTM := DTMFromString('mWAAAAHicY2FgYMhnYmAoA+IsKA4AivkAsR8QRwKxi7U2Q1R4KBz/B4rxI2FGNAwCAKfPB/U=');
SalDTM := DTMFromString('mQwAAAHicY2ZgYHBiYmDwAGJbIOZiZGBgAmIBIA6S4mFwFOVk8JPkZuAHqoNhRiQMBABmpgJp');
GSalDTM := DTMFromString('mQwAAAHicY2ZgYHBiYmCwAWJ3IH4K5L8B4ntALKQlzCCoLsggoCLAwA/kwzAjEgYCAM+HBIo=');
RopeDTM := DTMFromString('mbQAAAHicY2VgYHBkYmBwAGIPILYGYmcgfgQUv80AoZ9BsbsJF4OfvRKDtb4UQ6iLKoOXtQIDP1AcHTNiwWAAAI72CS0=');
CheckDTM := DTMFromString('mQwAAAHicY2ZgYFgKxMuBeAYQszIyMPwH0oxAut5EiEFOXJDBw1yMgR8oBsOMSBgIAN37BL8=');
GCheckDTM := DTMFromString('mWAAAAHicY2FgYPBkZGBwgmJ/IF4CFFsIxLOAeD4Qq4aoMfBysTOwszIzcHGwMnABxZAxIxoGAQAkOgSy');
Position := DTMFromString('mlwAAAHicY2dgYOgBYnUgdmRkYJgGpHcwQIAkEGcAsTMQiwIxH1T8PBAnArGCogKDk4c5g7OzFYNDZgRDYJgXg7KKMoOahhqDCFAehvnRMCMeDAUAoe4Jkw==');
SWDTM := DTMFromString('mQwAAAHicY2ZgYChiYmAoY4LQYUB+JBAHAvH///8ZomNiwJgfyIdhRiQMBAA7wQe3');
NWDTM := DTMFromString('mQwAAAHicY2ZgYChhYmAoA+IqIA4D8iOBOAmI////zxAdEwPG/EA+DDMiYSAAAEDSB9I=');
If OnScreenProggy Then
Begin
Proggy := BitmapFromString(510, 133, 'meJzsvXd4G8e1N+xd0jYs2WZc' +
'RKtRVKEqVSn2DoDoAAGQ6I0AqyRLsuUqWVbvvXdSIlVIsfembss1c'+
'NvGqfv/fl/xYjGKw==');
End;
End;
Procedure Fr33DTM;
Begin
FreeDTM(RSpotDTM);
FreeDTM(GSpotDTM);
FreeDTM(SalDTM);
FreeDTM(RopeDTM);
FreeDTM(CheckDTM);
FreeDTM(SWDTM);
FreeDTM(NWDTM);
FreeDTM(GSalDTM);
FreeDTM(GCheckDTM);
FreeDTM(Position);
If OnscreenProggy Then
FreeBitmap(Proggy);
End;

{*******************************************************************************
Function HPLevel;
By: ggzz
Edited By: Ashaman88
Description: Gets HP Level.
*******************************************************************************}
Function HPLevel: Integer;
Var
ColourString: String;
Begin
Result:= GetMMLevels('HP', ColourString);
End;

{*******************************************************************************
Function Runaways;
By: ggzz
Edited By: Ashaman88
Description: Runs away when low on health.
*******************************************************************************}
Procedure Runaways;
Begin
If (InFight and (HPLevel < HealthMin)) Then
Begin
Writeln('Ghast beat you up, logging out.');
Logout;
End;
End;

Function OnScreen: Boolean;
Begin
If OnScreenProggy Then
Begin
SMART_DrawBitmap(True, proggy,Point(6,344));
SMART_DrawText(307,356,SmallChars,'v'+ScriptVersion,clWhite);
SMART_DrawText(137,380,StatChars,IntToStr(SalamanderCount),clWhite);
SMART_DrawText(137,396,StatChars,IntToStr(SalamandersPH),clWhite);
SMART_DrawText(83,415,StatChars,IntToStr(XP),clWhite);
SMART_DrawText(83,432,StatChars,IntToStr(XPH),clWhite);
SMART_DrawText(100,449,StatChars,TimeRunning,clWhite);
Result := True;
End
Else
Result := False;
End;
Procedure Release;
Var
X,Y,I,T1: Integer;
Begin
If (Not(LoggedIn)) Then
Exit;

MouseSpeed := RandomRange(18, 23);
MarkTime(T1);

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Releasing Salamanders',clWhite) ;
Writeln('Releasing Salamanders');

For I:=0 to 1 Do
Begin
If FindDTM(Sal,X,Y,MIX1,MIY1,MIX2,MIY2) Then
Begin
Mouse(X,Y,3,3,False);
Wait(RandomRange(750,800));
ChooseOption('ease');
Wait(RandomRange(690,690));
End;
End;

Repeat
Wait(100);
Until (TimeFromMark(T1) > RandomRange(J,K));
End;

Procedure FindEmptyGTree;
Var
X,Y,H,I,CTS: Integer;
pArray: TPointArray;
aPArray: T2DPointArray;
Begin
If Not LoggedIn Then
Exit;

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If ((CountItems('DTM',RopeDTM,[])=(NumberofTraps-Level)) Or (CountItems('DTM',RopeDTM,[])=0)) And (SetTrap=0) Then
Exit;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Finding Empty Trap Spot',clWhite) ;
Writeln('Finding Empty Trap Spot');

Wait(RandomRange(400,500));
MouseSpeed := RandomRange(18, 23);

If FindBlackChatMessage('isn') Then
Begin
Writeln('Sorry someone crashed your world...logging out');
Case Random(20) Of
0: Typesend('jerk');
1: Typesend('i hope you get poo in your eyes');
2: Typesend('if only i could rip your heart out');
3: Typesend('i will destroy all that you love');
4: Typesend('i will fart on your face');
End;
Logout;
Exit;
End;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.00, 1.33);
FindColorsSpiralTolerance(MSCX, MSCY, pArray, 2237218, A, B, C, D, 3);
aPArray := TPAtoATPAEx(pArray, 20, 20);

If (Length(aPArray) = 0) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Exit;
End;

H := High(aPArray);
For I := 0 To H Do
Begin
MiddleTPAEx(aPArray[I], X, Y);
MMouse(X, Y, 0, 0);
Wait(RandomRange(200, 300));

If SetTrap=1 Then
Begin
If (IsUpTextMultiCustom(['Dism','sman','mant','antle'])) Then
Begin
Mouse(X,Y,1,1,False);
If WaitOptionMulti(['Dism','sman','mant','antle'],RandomRange(400,500)) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Release;
Exit;
End;
End;
End
Else

Begin
If (IsUpTextMultiCustom(['Set'])) Then
Begin
Mouse(X,Y,0,0,False);
If WaitOption('Set',RandomRange(400,500)) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Release;
Exit;
End;
End;
End;
End;

ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;

Procedure FindEmptyTree;
Var
X,Y,H,I,CTS: Integer;
pArray: TPointArray;
aPArray: T2DPointArray;
Begin
If (Not(LoggedIn)) Then
Exit;

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If ((CountItems('DTM',RopeDTM,[])=(NumberofTraps-Level)) Or (CountItems('DTM',RopeDTM,[])=0)) And (SetTrap=0) Then
Exit;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Finding Empty Trap Spot',clWhite) ;
Writeln('Finding Empty Trap Spot');

Wait(RandomRange(400,500));
MouseSpeed := RandomRange(18, 23);

If FindBlackChatMessage('isn') Then
Begin
Writeln('Sorry someone crashed your world...logging out');
Case RandomRange(0,8) Of
0: Typesend('jerk');
1: Typesend('i hope you get poo in your eyes');
2: Typesend('if only i could rip your heart out');
3: Typesend('i will destroy all that you love');
4: Typesend('i will fart on your face');
End;
Logout;
Exit;
End;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.09, 0.65);
FindColorsSpiralTolerance(MSCX, MSCY, pArray, 2238509, A, B, C, D, 3);
aPArray := TPAtoATPAEx(pArray, 20, 20);

If (Length(aPArray) = 0) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;

H := High(aPArray);
For I := 0 To H Do
Begin
MiddleTPAEx(aPArray[I], X, Y);
MMouse(X, Y, 1, 1);
Wait(RandomRange(200, 300));

If SetTrap=1 Then
Begin
If (IsUpTextMultiCustom(['Dism','sman','mant','antle'])) Then
Begin
Mouse(X,Y,0,0,False);
If WaitOptionMulti(['Dism','sman','mant','antle'],RandomRange(400,500)) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Release;
Exit;
End;
End;
End
Else

Begin
If (IsUpTextMultiCustom(['Set'])) Then
Begin
Mouse(X,Y,0,0,False);
If WaitOption('Set',RandomRange(400,500)) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Release;
Exit;
End;
End;
End;
End;

ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;

{*******************************************************************************
Function ProgressReport;
By: Sin
Edited By: Ashaman88
Description: Will Make a progress report.
*******************************************************************************}
Procedure ProgressReport;
Begin
Sec:= (1+((Getsystemtime-StartTime)/1000));
XP := (GetXPBarTotal - StartingExperience);
XPH := (3600*XP) / (Sec);
SalamandersPH := (3600*SalamanderCount) / Sec;

Writeln('==========================');
Writeln('=====AshamanSalamander=======');
Writeln('=========Version: '+ScriptVersion+'===========');
Writeln('Time Running: ' + TimeRunning);
Writeln('Catching: ' + CatchType+' Salamanders');
Writeln('Salamanders Caught: ' + IntToStr(SalamanderCount));
Writeln('Experience Earned: ' + IntToStr(XP));
Writeln('Experience/Hour: ' + IntToStr(XPH));
Writeln('Salamanders/H: ' + IntToStr(SalamandersPH));
Writeln('===============================');

Stats_IncVariable('Hunter EXP (Gained)', 272);
Stats_IncVariable('Items Picked Up', 1);
Stats_Commit;
End;

Procedure CheckNet;
Var
X,Y: Integer;
Begin
If (Not(LoggedIn)) Then
Exit;

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If Not FindDTMRotated(Check,X,Y,a,b,c,d,-Pi,Pi,Pi/30,aFound) Then
Exit;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Checking for Caught Salamanders',clWhite) ;
Writeln('Checking for Caught Salamanders');

Wait(RandomRange(700,800));
MouseSpeed := RandomRange(18, 23);

If FindDTMRotated(Check,X,Y,a,b,c,d,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X,Y,3,3,False);
Wait(RandomRange(300,400));
If OptionsExist(['Check'],False) Then
Begin
ChooseOption('Check');
InvCnt := InvCount;
MarkTime(T2);

Repeat
Wait(RandomRange(200,300));
If TimeFromMark(T2) > 8000 Then
Exit;
Until (InvCount = InvCnt + 3);

SalamanderCount := SalamanderCount + 1;
ProgressReport;
End;
End;

If FindBlackChatMessage('advanced') Then
Begin
WriteLn('Gained a Level!');
HoverSkill('Hunter',False);
Wait(RandomRange(1500,2100));
ExamineInv;
End;
End;

Procedure FailedTrap;
Var
X,Y,X1,Y1,X2,Y2,X3,Y3: Integer;
E,F,G,H,T: Integer;
Begin
If (Not(LoggedIn)) Then
Exit;

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Looking for Failed Traps',clWhite) ;
Writeln('Looking for Failed Traps');

If CatchType = 'Red' Then
Begin
If FindDTM(SWDTM,X1,Y1,MMX1,MMY1,MMX2,MMY2) Or FindDTM(NWDTM,X2,Y2,MMX1,MMY1,MMX2,MMY2) Then
Begin
E := 102;
F := 100;
G := 417; //Large search area
H := 340;
End
Else
Begin
E := 132;
F := 80; //Small search area
G := 333;
H := 265;
End;
End
Else
Begin
E := A;
F := B;
G := C;
H := D;
End;

Wait(RandomRange(500,800));
MouseSpeed := RandomRange(18, 23);

If FindObjEx(X,Y,['Take','heck','Set','antle','Inter'],[1853259],9,50,E,F,G,H) Then
Begin
Mouse(X,Y,2,2,False);
Invcnt := InvCount;

If WaitOption('Take',RandomRange(300,400)) Then
Begin
MarkTime(T2);
Repeat
Wait(RandomRange(150,200));
Until (((Invcount = Invcnt +1) And (Not(IsMoving))) Or (TimeFromMark(T2) > 6000));

If T < 1 Then
Begin
Mouse(261,177,3,3,False);
Invcnt := InvCount;
If WaitOption('Take',RandomRange(300,400)) Then
Begin
MarkTime(T2);

Repeat
Wait(RandomRange(100,200));
Until ((InvCount = Invcnt + 1) Or (TimeFromMark(T2) > 6000));
End
Else
Begin
T := 1;
FailedTrap;
End;
End;
End;
End;

If FindObjEx(X3,Y3,['Take','heck','Set','antle','Inter'],[669259,993843,1519924,1523275,1258044,1258045,1191227,993075],2,50,E,F,G,H) Then
Begin
If T < 1 Then
Begin
Mouse(X3,Y3,2,2,False);
Invcnt := InvCount;

If WaitOption('Take',RandomRange(300,400)) Then
Begin
MouseSpeed := RandomRange(18, 23);

MarkTime(T2);
Repeat
Wait(RandomRange(150,200));
Until (((Invcount = Invcnt +1) And (Not(IsMoving))) Or (TimeFromMark(T2) > 6000));

Mouse(261,177,3,3,False);
Invcnt := InvCount;

If WaitOption('Take',RandomRange(300,400)) Then
Begin
MarkTime(T2);
Repeat
Wait(RandomRange(100,200));
Until ((InvCount = Invcnt + 1) Or (TimeFromMark(T2) > 6000));
End
Else
Begin
T := 1;
FailedTrap;
End;
End;
End;
End;

T := 0;

If OptionsExist(['Exam','mine','Examine','Canc','ncel','Cancel'],False) Then
MMouse(37,32,10,10);
End;

Procedure Walktospot;
Var
X,Y: Integer;
Begin
If (Not(LoggedIn)) Then
Exit;

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;

If OnScreen Then
SMART_DrawText(225,462,StatChars,'Repositioning',clWhite) ;

If CatchType = 'Red' Then
Begin
If FindDTM(RSpotDTM,X,Y,MMX1,MMY1,MMX2,MMY2) Then
Begin
Mouse(X,Y,2,2,True);
Wait(RandomRange(600,700));

If IsMoving Then
Begin
Repeat
Wait(100);
Until(Not IsMoving);
Writeln('You are now in the correct spot, good luck!');
End;
End;
End
Else
Begin
If FindDTM(GSpotDTM,X,Y,575,45,680,127) Then
Begin
Mouse(X,Y,2,2,True);
Wait(RandomRange(600,700));

If IsMoving Then
Begin
Repeat
Wait(100);
Until(Not IsMoving);
Writeln('Repositioned.');
End;
End
Else
Begin
Mouse(187,304,3,3,False);
WaitOptionMulti(['Walk','Wal','alk','here'],RandomRange(500,700));
End;
End;
End;

Procedure WorldHop;
Begin
Repeat
If Length(GetMiniMapDotsIn('w',610,74,642,102))>0 Then
Begin
If OnScreen Then
SMART_DrawText(225,462,StatChars,'Someone is in this spot, hopping.',clWhite);
WriteLn('Someone is in this spot, hopping.');

ExitToLobby;
Wait(RandomRange(5000,6000));
MMouse(100,100,100,100);
ChangeWorld(RandomWorld(True,False));
Wait(RandomRange(30000,45000));

If FindNormalRandoms Then
Begin
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);
End;
End;
Until (Length(GetMiniMapDotsIn('w',615,75,642,102))=0);

StartTime:=GetSystemTime;
End;

Procedure CorrectPOS;
Var
X,Y:Integer;
Begin
If FindDTMRotated(Position,X,Y,MSX1,MSY1,MSX2,MSY2,-Pi,Pi,Pi/30,aFound) Then
Walktospot;
End;

Procedure Setup;
Begin
ClearDebug;
AutoUpdateMe;
Smart_Server := 10;
Smart_Members := True;
Smart_Signed := True;

SetupSRL;
SmartSetRefresh(75);

If (SRLStats_Username = '') Then
SetupSRLStats(754, 'Anonymous', 'anon1337')
Else
SetupSRLStats(754, SRLStats_Username, SRLStats_Password);

DeclarePlayers;
LoginPlayer;

AddOnTerminate('FR33DTM');
SetDTM;

SMART_ClearMS;
SMART_ClearCanvas;

RunTime := TimetoRun * 60 * 60 * 1000 + Random(30000);
SetTrap:=0;
Wait(RandomRange(4000,5000));

SetRun(True);

NumberofTraps := CountItems('DTM',RopeDTM,[]);
Writeln('You have '+IntToStr(NumberofTraps)+' traps in your inventory.');

If GetSkillLevel(Skill_Hunter) < 40 Then
Level:= 2 Else
Level:= 3;
Writeln('You can use '+IntToStr(Level)+' trap spots with my scipt at your level.');

GameTab(Tab_Inv);
ToggleXPBar(True);
StartingExperience := GetXPBarTotal;

If CatchType = 'Red' Then
Begin
A := 102;
B := 100; // Area to look for sallys
C := 417;
D := 340;
J := 2450;
K := 2550;
Check := CheckDTM;
Sal := SalDTM;
End
Else
Begin
A := 1;
B := 23; // Area to look for sallys
C := 498;
D := 312;
Check := GCheckDTM;
Sal := GSalDTM;
J := 2750; // Increased wait time for green sally
K := 2950;
End;
End;

Procedure MainLoop;
Begin
If CatchType = 'Red' Then
FindEmptyTree Else
Begin
Runaways;
CorrectPOS;
FindEmptyGTree;
End;

CheckNet;
FailedTrap;
End;

Begin
Setup;

Repeat
If CatchType = 'Red' Then
MakeCompass('N') Else
MakeCompass('S');
SetAngle(SRL_ANGLE_HIGH);

Walktospot;

WorldHop;

MarkTime(T);
Repeat
Mainloop;
Until (RunTime < TimeFromMark(T)) or (Not(LoggedIn));

If LoggedIn Then
Begin
SetTrap:=1;

MarkTime(T);
Repeat
Mainloop;
Until ((CountItems('DTM',RopeDTM,[])=(NumberofTraps)) Or (TimeFromMark(T)> RandomRange(65000,70000)));

Logout;

If HowManyPlayers <= 1 Then
{$IFDEF SMARTManager}
Fr33DTM;
SMARTManager;
{$ENDIF}
End;

NextPlayer(Players[CurrentPlayer].Active);
MarkTime(T);
Until (AllPlayersInactive);

Fr33DTM;
End.

Here is my oak larder script. It's in pretty good shape now. Lots of progress reports posted on my thread (didn't put srl stats in it though).
Program AshamanLarder;
{$define SMART}
{$Define Crashsmart}
{$include srl/srl/misc/smart.simba}
{$i srl/srl.simba}
{$i SRL\SRL\misc\paintsmart.simba}
{$I SRL/SRL/Misc/Debug.simba}

{

AshamanLarder v5.4
-Make sure you have a full load of Oak Planks on you
-Make sure you have already told the Butler to get 20 Oak Planks or if using demon butler, 26
}

//Fill these in.
Const
SRLStats_Username = ''; // Leave blank if you don't have a stats account
SRLStats_Password = '';
Direction = 'N' ; // Set this to whatever direction your larder is facing so that your butler will be on your right, and you are up against the wall (like the picture)
DemonButler = True; // Set to true if you are using the demon butler (False if you are using regular butler)

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

Players[0].Name := ''; //Username
Players[0].Pass := ''; //Password
Players[0].Active := True;
End;

//////////////////////////////////////////////////////////////////////////////////////////////////////
// //
// //
// Don't touch below this line unless you know what you're doing!! //
// //
//////////////////////////////////////////////////////////////////////////////////////////////////////

Var
LarderCount, XP, StartTime,StartingExperience, LardersPH, XPH, Sec:Integer;
ButlerDTM, DButlerDTM, MessCount, Count, Counts, POSDTM,Choose: Integer;
aFound: Extended;

Const
A=258;
B=108; // No touchy
C=277;
D=137;

ScriptVersion = '5.4';

Procedure SetDTM;
Begin
ButlerDTM := DTMFromString('mQwAAAHicY2ZAAEYozQ3EAkC8vD6eIVhOCoxFgHwYZkTCQAAAaLUC+g==');
DButlerDTM := DTMFromString('mQwAAAHicY2ZgYNBkhGAtIJ4O5C8E4pVAbCLGz7B6yWKG8qIiBn4gH4YZkTAQAADyswY6');
POSDTM := DTMFromString('mAAEAAHic42FgYCgE4hIgzgbiGig7DYhzgTgHiKuBOB2IG4B4EhCvBeI2IF4MxEuBeAsQb4XK7QPi3UC8GojXA3EfEPt72TLs3rSewdfDmiHIxw7M93azZGiuLYWLgfghfg4MsyZ3M/AD9ZCCGUnEyAAAY5Ea2g==');
End;

Procedure Fr33DTM;
Begin
FreeDTM(ButlerDTM);
FreeDTM(DButlerDTM);
FreeDTM(POSDTM);
End;

Function FindButler:Boolean;
Var
X,Y,T: Integer;
Begin
Result := False;

If MessCount > 20 Then
Begin
Writeln('Messed up somewhere, logging off');
Logout;
Fr33DTM;
Terminatescript;
End;

If(Not(LoggedIn)) Then
Exit;

If FindDTMRotated(Choose,X,Y,196,141,240,176,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X,Y,4,4,False);
WaitOption('ere',RandomRange(700,900)) //fix wrong position
Wait(RandomRange(1000,2000));
End;

If ((Not FindDTMRotated(Choose,X,Y,281,135,322,194,-Pi,Pi,Pi/30,aFound)) And (OptionsExist(['Exam','mine','Examine','Canc','ncel','Cancel'],False))) Then
Begin
MMouse(200,200,100,100); //close option popup
End;

If FindDTMRotated(Choose,X,Y,281,135,322,194,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X,Y,4,4,False);

If WaitOptionMulti(['etch','from','bank'],RandomRange(700,900)) Then
Begin
MarkTime(T);

Repeat
Wait(Random(200));
Until ((FindNPCChatText('coins',Nothing)) Or (FindNPCChatText('nother', Nothing)) Or (TimeFromMark(T) > 8000));

If (FindNPCChatText('coins',Nothing)) Then
Begin
ClickContinue(True, True);
TypeSendEx('1',False);
Wait(RandomRange(800,1000));
Mouse(X,Y,4,4,False);
WaitOption('etch',RandomRange(700,900));
Wait(RandomRange(900, 1100));
End;

If (FindNPCChatText('nother', Nothing)) Then
Begin
TypeSendEx('1',False);
Wait(RandomRange(500,700));
Count := 0;
Result := True;
End;
End;
End;
End;

Function FindEmpty:Boolean;
Var
X,Y,H,H2,I,CTS,T,X1,Y1: Integer;
pArray: TPointArray;
aPArray: T2DPointArray;
Begin
If(Not(LoggedIn)) Then
Exit;

If FindDTMRotated(Choose,X1,Y1,196,141,240,176,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X1,Y1,3,3,False);
WaitOption('ere',RandomRange(700,900)) //fix position
Wait(RandomRange(1000,2000));
End;

CTS := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.25, 0.18);
FindColorsSpiralTolerance(MSCX, MSCY, pArray, 10791346, A, B, C, D, 12);
aPArray := TPAtoATPAEx(pArray, 20, 20);

If (Length(aPArray) = 0) Then
Begin
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := False;
MessCount := MessCount + 1;
End;

H := High(aPArray);
If H < 1 Then
H2 := H Else
H2 := 1;

For I := 0 To H2 Do
Begin
MiddleTPAEx(aPArray[I], X, Y);
MMouse(X, Y, 5, 5);

If (WaitUpTextMulti(['Wal','alk'],300)) Then
Begin
GetMousePos(X,Y);
Mouse(X,Y,0,0,False);

If InvCount < 8 Then
Begin
Marktime(T);
Writeln('Low on inventory, waiting for Butler.');

Repeat
Wait(100)
Until ((InvCount > 8) or (TimeFromMark(T) > 8000));
End;

If InvCount < 8 Then
Begin
MMouse(50,50,100,100);
Wait(400);

FindButler;

Marktime(T);
Repeat
Wait(100);
Until ((InvCount > 8) or (TimeFromMark(T) > 30000));
End;

If InvCount < 8 Then
Begin
Writeln('Out of supplies. Goodbye!');
Logout;
Fr33DTM;
Terminatescript;
End;

If WaitOptionMulti(['uild','Buil'],RandomRange(700,900)) Then
Begin
Wait(RandomRange(300,400));
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := True;
Exit;
End Else
Result := False;
End;
End;
ColorToleranceSpeed(CTS);
SetColorSpeed2Modifiers(0.2, 0.2);
End;

{*******************************************************************************
Function PrintonSmart;
By: Shuttleu
Edited By: Ashaman88
Description: Will put progress report on screen.
*******************************************************************************}
Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
var
mx, my, Pic, I, E, H, TPH, Numb: Integer;
TTP: TPointArray;
Canvas: TCanvas;
begin
SmartSetDebug(True);
GetClientDimensions(mx, my);
Pic := BitmapFromString(mx, my, '');
TPH := High(TP);
for I := 0 to TPH do
begin
TTP := LoadTextTPA(TP[i], UpChars, H);
for E := 0 to High(TTP) do
begin
Numb := ((I + 1) * 13);
FastSetPixel(Pic, TTP[E].x + 1, TTP[E].y + Numb + 1,131072);
FastSetPixel(Pic, TTP[E].x, TTP[E].y + Numb, Colour);
end;
end;
Canvas := TCANVAS.Create;
Canvas.Handle := SmartGetDebugDC;
DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
FreeBitmap(Pic);
end;

{*******************************************************************************
Function ProgressReport;
By: Sin and parts by Shuttleu
Edited By: Ashaman88
Description: Will Make a progress report.
*******************************************************************************}
Procedure ProgressReport;
Var
SmartLines: TStringArray;
Begin
Sec:= (1+((Getsystemtime-StartTime)/1000));
XP := (GetXPBarTotal - StartingExperience);
XPH := (3600 / SeC * (XP));
LardersPH := (3600*LarderCount) / Sec;

SetArrayLength(SmartLines, 9);

SmartLines[0]:= '==========================';
SmartLines[1]:= '=====AshamanLarderV'+ScriptVersion+'=====';
SmartLines[2]:= 'Time Running: ' + TimeRunning;
SmartLines[3]:= 'Larders Made: ' + IntToStr(LarderCount);
SmartLines[4]:= 'Experience Earned: ' + IntToStr(XP);
SmartLines[5]:= 'Experience/Hour: ' + IntToStr(XPH);
SmartLines[6]:= 'Larders/H: ' + IntToStr(LardersPH);
SmartLines[7]:= '===========================';
SmartLines[8]:= '===========================';

PrintOnSmart(SmartLines,Point(15,200),clRed);

Writeln('==========================');
Writeln('=======AshamanLarderV'+ScriptVersion+'===========');
Writeln('Time Running: ' + TimeRunning);
Writeln('Larders Made: ' + IntToStr(LarderCount));
Writeln('Experience Earned: ' + IntToStr(XP));
Writeln('Experience/Hour: ' + IntToStr(XPH));
Writeln('Larders/H: ' + IntToStr(LardersPH));
Writeln('===========================');
Writeln('===========================');

Stats_IncVariable('Oak Larders (Constructed)', 1);
Stats_Commit;
End;

Function FindBuild:Boolean;
Var
X,Y: Integer;
X1,Y1: Integer;
Begin
Result := False;

If(Not(LoggedIn)) then
Exit;

MouseBox(98, 128, 127, 150, Mouse_Move);
GetMousePos(X,Y);

If WaitUpTextMulti(['uild','Oak','rder','lard'],RandomRange(1300,1500)) Then
Begin
Mouse(X,Y,0,0,True);
Wait(400);

If FlagPresent Then
Begin
Mouse(261,177,3,3,True);

Repeat
Wait(100);
Until (Not(Ismoving));

If FindDTMRotated(POSDTM,X1,Y1,MSX1,MSY1,MSX2,MSY2,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X1,Y1,2,2,True);
Wait(600);

Repeat
Wait(100);
Until (Not(Ismoving));
End;
End Else
Begin
Count := Count + 1;
LarderCount := LarderCount + 1;
MessCount := 0;
Result:=True;
ProgressReport;
End;
End;
End;

Function FindLarder: Boolean;
Var
X,Y,H,H2,I,CTS1,T,X1,Y1: Integer;
pArray2: TPointArray;
aPArray2: T2DPointArray;
Begin
Result:= False;

If(Not(LoggedIn)) Then
Exit;

If FindDTMRotated(Choose,X1,Y1,196,141,240,176,-Pi,Pi,Pi/30,aFound) Then
Begin
Mouse(X1,Y1,4,4,False);
WaitOption('ere',RandomRange(700,900)) //fix position
Wait(RandomRange(1000,2000));
End;

If Count >= Counts Then
Begin
MarkTime(T);
Repeat
Wait(100);
Until ((FindButler) Or (TimeFromMark(T) > 10000));
End;

CTS1 := GetColorToleranceSpeed;
ColorToleranceSpeed(2);

SetColorSpeed2Modifiers(0.06, 0.37);
FindColorsSpiralTolerance(MSCX, MSCY, pArray2, 4616332, A, B, C, D, 17);
aPArray2 := TPAtoATPAEx(pArray2, 20, 20);

If (Length(aPArray2) = 0) Then
Begin
ColorToleranceSpeed(CTS1);
SetColorSpeed2Modifiers(0.2, 0.2);
Result := False;
End;

H := High(aPArray2);
If H < 1 Then
H2 := H Else
H2 := 2;

For I := 0 To H Do
Begin
MiddleTPAEx(aPArray2[I], X, Y);
MMouse(X, Y, 5, 5);

If (WaitUpTextMulti(['earc','Sear','arch','arder'],400)) Then
Begin
GetMousePos(X,Y);
Mouse(X,Y,0,0,False);

If WaitOption('emove',RandomRange(700,900)) Then
Begin
MarkTime(T);
Repeat
Wait(Random(200));
If TimeFromMark(T) > 4000 Then
FindLarder;
Until (FindNPCChatText('Yes',Nothing));

TypeSendEx('1',False);
Wait(randomRange(900, 1000));

ColorToleranceSpeed(CTS1);
SetColorSpeed2Modifiers(0.2, 0.2);

Result := True;
Exit;
End;
End;
End;

ColorToleranceSpeed(CTS1);
SetColorSpeed2Modifiers(0.2, 0.2);
End;

Procedure MainLoop;
Begin
If WaitFunc(@FindEmpty,100,7000) Then
Begin

If WaitFunc(@FindBuild,100,7000) Then
WaitFunc(@FindLarder,100,7000) Else
FindLarder;

End Else

If FindBuild Then
WaitFunc(@FindLarder,100,7000) Else
FindLarder;
End;

Procedure Setup;
Begin
Smart_Server := 10;
Smart_Members := True;
Smart_Signed := True;

SetupSRL;
If (SRLStats_Username = '') Then
SetupSRLStats(947, 'Anonymous', 'anon1337')
Else
SetupSRLStats(947, SRLStats_Username, SRLStats_Password);
SmartSetRefresh(75);

SMART_ClearMS;
SMART_ClearCanvas;
ClearDebug;

DeclarePlayers;

AddOnTerminate('Fr33DTM');
SetDTM;

If (Not LoggedIn) Then
Writeln('Please log in and setup the position as needed');

Repeat
Wait(randomRange(500,1500));
Until (LoggedIn);

If InvCount < 28 Then
Repeat
Writeln('Please get a full inventory of planks');
Wait(RandomRange(3000,4000));
Until (InvCount = 28);

MakeCompass(Direction);
SetAngle(SRL_ANGLE_HIGH);

ToggleXPBar(True);
StartingExperience := GetXPBarTotal;
StartTime:=GetSystemTime;

If DemonButler Then
Begin
Choose := DButlerDTM;
Counts := 3;
End Else
Begin
Choose := ButlerDTM;
Counts := 2;
End;
End;

Begin
Setup;
FindButler;
Repeat
Mainloop;
Until (AllPlayersInactive);
Fr33DTM;
End.

I also have a working oak doorer script, but it is still breakable with slow internet connections. I also worked with GGzz to make a pretty good LRC Miner script, but he also put in a good amount of work on it so I can't claim as my own. If you want to see either of those scripts just click them in my sig :) or Oak doorer LRC Miner

Please let me know if there is anything else.

Sin

2012-03-26 15:12:00

You know my vote ;)

Raskolnikov

2012-03-26 15:25:55

Yes

DTMs, Walking, TPAs… you know what you're doing.

Your standards are a bit messed up in places, but that doesn't really matter. Probably just me being old and not up to date in all ways.

Ashaman88

2012-03-26 17:30:28

From: Cut em2 it
Yes

DTMs, Walking, TPAs… you know what you're doing.

Your standards are a bit messed up in places, but that doesn't really matter. Probably just me being old and not up to date in all ways.


From: Sin
You know my vote ;)


Thanks guys :) but yeah standards def not my strong suite :redface:

Brandon

2012-03-26 17:42:37

I agree on the standards; Voted Yes.

Sin

2012-03-26 17:43:08

Yup, standards are not an issue, i'll help him out in my spare time! :)

Er1k

2012-03-26 21:48:15

Yes for the good quality of scripts and continued participation in the community.

Ashaman88

2012-03-27 00:55:28

Thanks for the feedback yall!

Flight

2012-03-27 01:07:19

I really like your activity around the forums, that's a big plus for me. You've picked up part of script and released scripts before hand of applying for Members so that's good (you'd be surprised how many apply with their first script).

I used your Red Salamander Hunter script to get a few Hunter levels myself. I edited a bit for my own liking, but I do like the script. :) One thing that bothers me is your heavy dependency on stand-alone DTMs. It's kind of a shame with all of the available methods of mainscreen object-finding you use, for the majority, a single method. I would surely like to see some more usage of TPAs and T2DPointArrays. They're really a blast to experiment with. ;)

I vote Yes.


Kyle Undefined

2012-03-27 01:30:20

I voted yes :) I like your attitude and activity. You've been here kind of short, but you stand out from the rest!

Ashaman88

2012-03-27 01:37:01

From: Flight
I really like your activity around the forums, that's a big plus for me. You've picked up part of script and released scripts before hand of applying for Members so that's good (you'd be surprised how many apply with their first script).

I used your Red Salamander Hunter script to get a few Hunter levels myself. I edited a bit for my own liking, but I do like the script. :) One thing that bothers me is your heavy dependency on stand-alone DTMs. It's kind of a shame with all of the available methods of mainscreen object-finding you use, for the majority, a single method. I would surely like to see some more usage of TPAs and T2DPointArrays. They're really a blast to experiment with. ;)

I vote Yes.



Thanks Flight :) I do know what you mean about the DTMs. The salamander script was my first one and DTM's were easier for me to understand. Been slowly going away from relying on them though. I think my larder script only uses DTMs to find the butlers and one for a failsafe in case of a missclick.

Also I forgot to mention that there are a lot of improvements in that salamander script in my app vs the current public one. I fixed a bunch of bugs and streamlined a lot of it. I also made it compatible with smartmanager, so that after a set amount of time, like 5 hours, it will collect back all your traps and then restart smart. I also made it world hop until it finds an empty world.

Finally if anyone feels inclined to use the green sally option, you need to make sure you are at the northeastern-most spot, the one with 3 trap spots. All those upgrades will be released once sin finishes his power leveling :P

Edit: Thanks Kyle!

BobboHobbo

2012-03-27 01:55:25

Yes. Good work, I hope to see plenty of scripts from you :).

Jagex_Fagex

2012-03-27 08:37:04

You have been here a short time, but your activity is great, and the scripts look good. Yes from me :)

Mat

2012-03-27 08:44:24

Yes <3

Harry

2012-03-27 09:27:58

Gave you some tips on your scripts before. You seem to be a decent learner, yes.

Ashaman88

2012-03-27 12:08:49

Thanks guys :)

rice

2012-03-30 06:08:53

hmm… NO! Reasoning, I have none. I voted yes Keep it up I like your scripts

Frement

2012-03-30 06:22:57

Voted yes. All the reasons have been stated above.

Ashaman88

2012-03-30 14:29:21

From: rice
hmm… NO! Reasoning, I have none. I voted yes Keep it up I like your scripts


From: Frement
Voted yes. All the reasons have been stated above.


Thanks guys, I appreciate it.

[XoL]

2012-03-30 14:35:39

Wow haven't seen something we all agreed on so much in a while, agreed. Yes.

Ashaman88

2012-03-31 01:56:34

From: R4nd0m
Wow haven't seen something we all agreed on so much in a while, agreed. Yes.


Thank ya much :)

Er1k

2012-04-04 05:41:16

From: R4nd0m
Wow haven't seen something we all agreed on so much in a while, agreed. Yes.


Yeah this is very impressive.

Asha: It might be early to congratulate you, but I am sure its next to impossible for you not to get in :) Nice work.

Ashaman88

2012-04-04 10:27:40

From: Er1k
Yeah this is very impressive.

Asha: It might be early to congratulate you, but I am sure its next to impossible for you not to get in :) Nice work.


Thanks Er1k :)

Justin

2012-04-04 11:10:39

I voted yes.

Good scripting skills and nice attitude to the community.
Would be more then happy to have you on the SRL Member side

Ashaman88

2012-04-04 15:00:59

From: [J]ustin
I voted yes.

Good scripting skills and nice attitude to the community.
Would be more then happy to have you on the SRL Member side


Thanks man, I appreciate it!

P1nky

2012-04-04 18:54:28

Yes. Good Job.

BraK

2012-04-05 21:59:21

Voted Yes.

Ashaman88

2012-04-06 00:51:56

Thanks guys :)

Sin

2012-04-06 00:58:01

Get on Skype broski!

Ashaman88

2012-04-06 01:13:30

From: Sin
Get on Skype broski!


I am :P where are you!?

WT-Fakawi

2012-04-08 18:54:27

In!