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…
Please show us one (or multiple) of your scripts.
*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
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).
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.
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.