SCAR Code:
{ ---------------------------------------------------------------------------- ]
[ .________ _______.__ .__.__ .__ ]
[ \_____ \______ _ __ ___________/ ____/ | _|__| | | | ______ ]
[ | ___/ _ \ \/ \/ // __ \_ __ \____ \| |/ / | | | | / ___/ ]
[ | | ( <_> ) /\ ___/| | \/ \ <| | |_| |__\___ \ ]
[ |___| \____/ \/\_/ \___ \|__| /______ /__|_ \__|____/____/____ / ]
[ \/ \/ \/ \/ ]
[ By Starblaster100 ]
[ ---------------------------------------------------------------------------- ]
[ >> DESCRIPTION << ]
[ ---------------------------------------------------------------------------- ]
[ This Script is Designed to Power Auto a Specific Skill on a Specific Char ]
[ until a Certain Number of Loads have been Power Autoed. This will then ]
[ Switch Character and Power Auto the next Players Specific Skill. This will ]
[ Keep Repeating until all Players are Inactive, or the script is Terminated ] ]
[ ---------------------------------------------------------------------------- ]
[ >> SUPPORTED SKILLS << ]
[ ---------------------------------------------------------------------------- ]
[ o Mining - Must have a Pick and be near Minable Rocks ]
[ o Woodcutting - Must have an Axe and be near Cuttable Trees ]
[ o Fishing - Must have Fishing Equipment and be near a Fish Spot ]
[ o Bone Burying - Must be near Bones, or a Bank if Withdrawing from Bank ]
[ o Fletching - Must be in a Bank, and have a Knife if Cutting any Logs ]
[ Place All Fletching Items in First Few Bank Slots ]
[ ---------------------------------------------------------------------------- ]
[ >> SETUP INSTRUCTIONS << ]
[ ---------------------------------------------------------------------------- ]
[ o For each Individual Player, Equip the *Specific Equipment* needed to ]
[ Power the Specific Skill Selected ]
[ o *Place* Each Individual Player in the *Specific Spots* where they are ]
[ going to work ]
[ o Run the Script and Fill in the Setup ]
[ o Do not Change Anything in the Script Itself. Hit the Run Button Now! ]
[ o Make sure you are using SCAR 3.0+ ]
[ ---------------------------------------------------------------------------- ]
[ Script by Starblaster100 ]
[ Please Post Progress Reports, Bugs and Suggestions in my Thread! ]
[ ---------------------------------------------------------------------------- }
program PowerSkills_By_Starblaster100;
{.include SRL/SRL.scar}
{.include SRL/SRL/Extended/xMapWalk.scar}
{.include SRL/SRL/Extended/xInventory.scar}
{.include SRL/SRL/Extended/xDTM.scar}
{.include SRL/SRL/Extended/xAutoTalk.scar}
{.include SRL/SRL/Extended/xAntiban.scar}
{.include SRL/SRL/Extended/xText.scar}
{.include SRL/SRL/Skill/Mining.scar}
{.include SRL/SRL/Skill/Woodcutting.scar}
{.include SRL/SRL/Skill/Fishing.scar}
Const
VerNumber = '3.0'; //Version number. No need to Change
DebugNumber = 1; //How to Display Progress. To See all Debug, Set as 2, Otherwise 1 is Recommended.
PrintReport = 1; //How Often in minutes to Print the Progress Report. 1-5 Recommended.
AntiBanRandomness = 5; //The Bigger the Number, the less Chance of Antiban Procedures Occuring. 5 Recomended.
Var
TitleLabel, UsernameLabel, PasswordLabel, LampSkillLabel, ColorsLabel, TripsLabel, MiningSecsLabel : TLabel;
LeftButton, RightButton, StartButton, CreatePlayerButton, DeletePlayerButton, DonateButton : TButton;
String1ComboBox, String2ComboBox, String3ComboBox, LampSkillComboBox, FletchComboBox : TComboBox;
UsernameEdit, PasswordEdit, ColorsEdit, LoadsEdit, MiningSecsEdit : TEdit;
DTMBones, DTMBigBones, Report2, BrokenAxeMask, DTMLog, FIC: Integer;
IsActive, ColorCheckBox, BankCheckBox, GemsCheckBox: TCheckBox;
DTMFletching: Array[1..4] of Integer;
DTMFishing: Array[1..7] of Integer;
DTMMining: Array[1..2] of Integer;
SkipItems: Array[1..21] of String;
PowerMainSkillsFileName: String;
FletchString: Array of String;
StartScript: Boolean;
frmDesign : TForm;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure StarDebug(S: String; How: Integer); ]
[ >> How to Display the Debug. For my use Really, you can Change if You Want ]
[ ---------------------------------------------------------------------------- }
Procedure StarDebug(S: String; How: Integer);
Begin
Case How of
1: Status(s);
2: Writeln(s);
3: Players[CurrentPlayer].loc := S;
4: Begin
Status(S);
Players[CurrentPlayer].loc := S;
end;
else Exit;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure Intro; ]
[ >> Script name, Version and Author ]
[ ---------------------------------------------------------------------------- }
Procedure Intro;
Begin
Status('Script Created by Starblaster100');
Writeln('');
Writeln(' .________ _______.__ .__.__ .__ ');
Writeln(' \_____ \______ _ __ ___________/ ____/ | _|__| | | | ______ ');
Writeln(' | ___/ _ \ \/ \/ // __ \_ __ \____ \| |/ / | | | | / ___/ ');
Writeln(' | | ( <_> ) /\ ___/| | \/ \ <| | |_| |__\___ \ ');
Writeln(' |___| \____/ \/\_/ \___ \|__| /______ /__|_ \__|____/____/____ / ');
Writeln(' \/ \/ \/ \/ ');
Writeln(' Ver '+VerNumber+' By Starblaster100 ');
Writeln('');
ReportVars[0] := ReportVars[0] + 1;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure WriteNews; ]
[ >> Downloads the Latest News from the Server ]
[ ---------------------------------------------------------------------------- }
Procedure WriteNews;
Var
Timer, i, x, y, Temp, HowMany: integer;
News : Array of String;
New, TheNews : String;
Begin
ChangeReportWidth(390);
ClearReport;
Status('Downloading Latest News...');
Writeln('Please Wait whilst the Latest PowerSkills News is Downloaded...');
Wait(1);
TheNews := Getpage('http://starblaster.freehostia.com/powerskills/PowerSkillsNews.txt');
AddToReport(' >> Latest PowerSkills News:');
AddToReport(' ========================');
For Temp := 1 to Length(TheNews) do
If(Copy(TheNews, Temp, 1) = ',') then
HowMany := HowMany + 1;
x := 0;
y := 1;
SetArrayLength(News, HowMany+1);
For i := 1 to HowMany do
Begin
MarkTime(Timer);
repeat
x := x + 1;
new := copy(TheNews, x, x+1);
until(copy(new, 1, 1) = ',')or(TimeFromMark(Timer) >= 2000);
news[i]:= copy(TheNews, y, (x-y));
y := x + 1;
Wait(1);
end;
For i := 1 to HowMany do
AddToReport(' :: '+news[i]);
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure CheckVersion; ]
[ >> Checks SCAR and Script Version to see if you have the Latest ]
[ ---------------------------------------------------------------------------- }
Procedure CheckVersion;
Var
Version : String;
Begin
ClearDebug;
If not(GetSCARVersion >= 305) then
begin
Writeln(' >> You Need SCAR Divi 3.05 or above to Run this Script!');
Writeln(' >> Please Download it from http://www.freddy1990.com/scar.php');
TerminateScript;
end;
Writeln('Checking Script Version');
Wait(1);
Version := Copy(Getpage('http://starblaster.freehostia.com/powerskills/PSCurrentVersion.txt'), 1, 3);
If not(VerNumber = Version) and not(Version = '')then
Begin
Writeln('');
Writeln(' ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ');
Writeln(' PowerSkills Ver ' +Version+ ' Released!');
Writeln(' Your Version :: '+VerNumber );
Writeln(' It is Recommended that you Update your Script! ');
Writeln(' ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ');
Writeln(''); //http://starblaster.freehostia.com/update_script.php
If(GetApplication.MessageBox('PowerSkills Ver ' +Version+ ' Released!' +Chr(13)+ 'Press "OK" to Cancel the Script Run and Download the new Version!', 'New Version Released', 1) = 1) then
TerminateScript;
end else
Writeln('Latest Version... OK!');
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure SendPSStats(Skill: String); ]
[ >> Updates the Stats to the SRL Server ]
[ ---------------------------------------------------------------------------- }
Procedure SendPSStats(Skill: String);
Begin
StarDebug('Sending Stats', DebugNumber);
Case Lowercase(Skill) of
'mining' : begin
If (EquipPick) then
ReportVars[4] := ReportVars[4] + 28
else
ReportVars[4] := ReportVars[4] + 27;
end;
'woodcutting' : begin
If (EquipAxe) then
ReportVars[5] := ReportVars[5] + 28
else
ReportVars[5] := ReportVars[5] + 27;
end;
'fishing' : ReportVars[6] := ReportVars[6] + 27;
'bone burying': ReportVars[7] := ReportVars[7] + 28;
'fletching' : case (Lowercase(Players[CurrentPlayer].String2)) of
'logs --> (u) shortbow' : ReportVars[8] := ReportVars[8] + 27;
'logs --> (u) longbow' : ReportVars[8] := ReportVars[8] + 27;
'(u) shortbow --> (s) shortbow' : ReportVars[8] := ReportVars[8] + 14;
'(u) longBow --> (s) longbow' : ReportVars[8] := ReportVars[8] + 14;
'logs --> (s) shortbow' : ReportVars[8] := ReportVars[8] + 13;
'logs --> (s) longbow' : ReportVars[8] := ReportVars[8] + 13;
end;
else Writeln('Unsupported Skill, Stats could not be Sent');
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Function ExpPerItem(Skill, ItemName: string): Extended; ]
[ >> Loads the Exp for Each Skill and Each Item in the Specific Skill ]
[ ---------------------------------------------------------------------------- }
Function ExpPerItem: Extended;
begin
Case LowerCase(Players[CurrentPlayer].String1) of
'woodcutting' : Begin
case LowerCase(Players[CurrentPlayer].String2) of
'tree' : Result := 25;
'oak' : Result := 37.5;
'willow' : Result := 62.5;
'maple' : Result := 100;
'mahogany': Result := 125;
'yew' : Result := 175;
'magic' : Result := 250;
else Begin Writeln('Unsupported WC Item'); Result := 0; end;
end;
end;
'mining' : Begin
case LowerCase(Players[CurrentPlayer].String2) of
'tin' : Result := 17.5;
'copper' : Result := 17.5;
'iron' : Result := 35;
'coal' : Result := 50;
'mith' : Result := 80;
'gold' : Result := 65;
'silver' : Result := 40;
'addy' : Result := 95;
'rune' : Result := 125;
else Begin Writeln('Unsupported Mining Item'); Result := 0; end;
end;
end;
'fishing' : Begin
case LowerCase(Players[CurrentPlayer].String2) of
'smallnet' : Result := 25;
'cage' : Result := 90;
'harpoon' : Result := 90;
else Begin Writeln('Unsupported Fishing Item'); Result := 0; end;
end;
end;
'bone burying': Begin
case LowerCase(Players[CurrentPlayer].String2) of
'bones' : Result := 4.5;
'big bones' : Result := 15;
else Begin Writeln('Unsupported Bone Burying Item'); Result := 0; end;
end;
end;
'fletching' : begin
case Lowercase(Players[CurrentPlayer].String2) of
'logs --> (u) shortbow',
'(u) shortbow --> (s) shortbow' :
begin
case Lowercase(FletchString[CurrentPlayer]) of
'normal' : Result := 5;
'oak' : Result := 16.5;
'willow' : Result := 33.3;
'maple' : Result := 50;
'yew' : Result := 66.5;
'magic' : Result := 83.3;
else Writeln('Fletching Log Type not Recognised!');
end;
end;
'logs --> (u) longbow',
'(u) longbow --> (s) longbow' :
begin
case Lowercase(FletchString[CurrentPlayer]) of
'normal' : Result := 10;
'oak' : Result := 25;
'willow' : Result := 41.5;
'maple' : Result := 58.3;
'yew' : Result := 75;
'magic' : Result := 91.5;
else Writeln('Fletching Log Type not Recognised!');
end;
end;
'logs --> (s) shortbow' :
begin
case Lowercase(FletchString[CurrentPlayer]) of
'normal' : Result := 10;
'oak' : Result := 33;
'willow' : Result := 66.6;
'maple' : Result := 100;
'yew' : Result := 133;
'magic' : Result := 166.6;
else Writeln('Fletching Log Type not Recognised!');
end;
end;
'logs --> (s) longbow' :
begin
case Lowercase(FletchString[CurrentPlayer]) of
'normal' : Result := 20;
'oak' : Result := 50;
'willow' : Result := 83;
'maple' : Result := 116.6;
'yew' : Result := 150;
'magic' : Result := 183;
else Writeln('Fletching Log Type not Recognised!');
end;
end;
else Writeln('Unknown Fletching Type!');
end;
end;
else Begin Writeln('Unsupported Skill'); Result := 0; end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure ProgressReport; ]
[ >> Prints The Progress Report every "PrintReport" Minutes ]
[ ---------------------------------------------------------------------------- }
Procedure ProgressReport(ForceProgress: Boolean);
Var
i, TempLoads: Integer;
TempExp: Extended;
Begin
If (GetSystemTime - Report2 >= PrintReport * 60000) or (ForceProgress) then
Begin
StarDebug('Progress Report', DebugNumber);
For i := 0 to (HowManyPlayers-1) do
TempLoads := TempLoads + Players[i].Banked;
For i := 0 to (HowManyPlayers-1) do
TempExp := TempExp + (ExpPerItem * Players[i].Banked * 28);
Writeln('<---------------------------------------------->');
Writeln('¦ PowerSkills Ver '+VerNumber+' By Starblaster100 ¦');
Writeln('<---------------------------------------------->');
Writeln(' Total Running Time : ' +TimeRunning);
Writeln(' Total Loads Done : ' +IntToStr(TempLoads));
Writeln(' Total Exp Gained : ' +FloatToStr(TempExp));
Writeln('<---------------------------------------------->');
Writeln(' Current Player No. : ' +IntToStr(CurrentPlayer+1)+ '/' +IntToStr(HowManyPlayers));
Writeln(' Current Player Name : ' +Players[CurrentPlayer].Name);
Writeln(' Player Power Skilling : ' +Players[CurrentPlayer].String1);
Writeln(' Player Running Time : ' +IntToStr(Players[CurrentPlayer].Worked)+ ' Minutes');
Writeln(' Current Player Loads : ' +IntToStr(Players[CurrentPlayer].Banked));
If (LoggedIn) then
begin
Case Lowercase(Players[CurrentPlayer].String1) of
'woodcutting' : Writeln(' WC Levels Gained : ' +IntToStr(GetSkillLevel('woodcutting')-Players[CurrentPlayer].Level[20]));
'mining' : Writeln(' Mining Levels Gained : ' +IntToStr(GetSkillLevel('mining')-Players[CurrentPlayer].Level[15]));
'fishing' : Writeln(' Fishing Levels Gained : ' +IntToStr(GetSkillLevel('fishing')-Players[CurrentPlayer].Level[17]));
'bone burying': Writeln(' Prayer Levels Gained : ' +IntToStr(GetSkillLevel('prayer')-Players[CurrentPlayer].Level[5]));
'fletching' : Writeln(' Fletch Levels Gained : ' +IntToStr(GetSkillLevel('fletching')-Players[CurrentPlayer].Level[13]));
end;
end;
Writeln(' Exp Approx Gained : ' +FloatToStr(ExpPerItem * Players[CurrentPlayer].Banked * 28));
Writeln(' Player Worked for : '+IntToStr(Players[CurrentPlayer].Worked)+' Minutes');
Writeln(' Player Currently : '+Players[CurrentPlayer].loc);
Writeln('<---------------------------------------------->');
For i := 0 to HowManyPlayers-1 do
Writeln(' ' +IntToStr(i)+ ' : '+Players[i].Name+' = '+BoolToStr(Players[i].Active)+
', Skill: '+ Players[CurrentPlayer].String1 +', '+IntToStr(Players[i].Worked)+
' Minutes, Loads: '+IntToStr(Players[i].Banked)+', Curently: '+Players[i].Loc);
Writeln('<---------------------------------------------->');
SRLRandomsReport;
Report2 := GetSystemTime;
GameTab(4);
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> function Randoms(Skill: String): Boolean; ]
[ >> Finds and Solves Randoms, Courtesy of SRL ]
[ ---------------------------------------------------------------------------- }
function Randoms(Skill: String): Boolean;
var
TX, TY, i: Integer;
begin
for i := 1 to 17 do
begin
case I of
1: CloseWindow;
2: if FindTalk then
Result := True;
3: if FindDead then
Result := True;
4: if FindMod then
Result := True;
5: if FindMime then
Result := True;
6: if FindMaze then
Result := True;
7: if FindQuiz then
Result := True;
8: if FindDemon then
Result := True;
9: if FindScapeRune then
Result := True;
10: if FindTalk then
Result := True;
11: if FindLamp(Players[CurrentPlayer].Skill) then
Result := True;
12: if (FindNewBox) then
begin
Result := True;
if (UseBoxSolver) then
SolveBox
else
GambleNewBox;
end;
13: if FindTrade then
Result := True;
14: if NoGameTab then
begin
Result := True;
Players[CurrentPlayer].loc := 'No GameTab';
Logout;
Exit;
end;
15: if (FindFight) then
begin
result := true;
RunAwayDirection(Players[CurrentPlayer].String3);
Wait(5000 + Random(2500));
RunBack;
end;
16: If not(Skill = '') then
begin
If(FindNpcChatText('ongr'))then
begin
ClickToContinue;
Result := True;
ReportVars[1] := ReportVars[1] + 1;
end;
end;
17: ProgressReport(False);
end;
Wait(1);
end;
case Lowercase(Skill) of
'' : Wait(1);
'woodcutting': Begin
For i := 0 to 1 do
Begin
Case i of
0: If (InChat('do not') or InChat('have axe')) then
begin
if ( EquipAxe ) then
GameTab ( 2 )
else
GameTab ( 4 );
Wait(400 + Random(200));
if FindBitmapMaskTolerance ( BrokenAxeMask, TX, TY, MIX1, MIY1, MIX2, MIY2, 10, 2 ) then
Begin
Result := True;
Logout;
Players[CurrentPlayer].Loc := 'Broken Axe';
Players[CurrentPlayer].Active := False;
Exit;
end;
If not(FindHead) then
begin
Result := True;
Logout;
Players[CurrentPlayer].Loc := 'Lost Axe Head';
Players[CurrentPlayer].Active := False;
Exit;
end;
end;
1: FindBirdsNest;
end;
Wait(1);
end;
end;
'mining' : Begin
For i := 0 to 1 do
Begin
Case i of
0: if not (FindPick) then
begin
Result := True;
Logout;
Players[CurrentPlayer].Loc := 'Lost Mining Equipment';
end;
1: Begin
GetMousePos(x, y);
If (x < MMX2) and (y < MMY2) and (x > MMX1) and (y > MMY1+21)then
GasCheck(x, y-20);
end;
end;
Wait(1);
end;
end;
'fishing' : Begin
For i := 0 to 2 do
Begin
Case i of
0: if not (FindFishingEquipment(FIC, Copy(Players[CurrentPlayer].String2, 2, 4))) then //Doesn't Work!
begin
Result := True;
Logout;
Players[CurrentPlayer].Loc := 'Lost Fishing Equipment';
end;
1: HandleWhirlPool;
2: If (FindPlant) then
Result := True;
end;
Wait(1);
end;
end;
else Writeln('Randoms are Incorrect Star! Recode the Script!');
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure DoAntiBan; ]
[ >> Does some Random AntiBan Procedures ]
[ ---------------------------------------------------------------------------- }
Procedure DoAntiBan(Extras: Boolean);
Begin
If not(LoggedIn) then Exit;
If (Extras) then
Begin
Case Random(20) of
0: RandomRClickEvery(2 + Random(8));
1: HoverSkill('random', false);
2: RotateEvery(20 + Random(10));
3: LeaveScreenEvery(5 + Random(5));
4: PickUpMouse;
5: BoredEvery(9 + Random(24));
6: Begin
GameTab(1 + Random(12));
Wait(1500 + Random(500));
GameTab(4);
end;
7: SleepAndMoveMouse(1000 + Random(1000));
8: MMouse(Random(MSX2), Random(MSY2), 0, 0);
end;
end else
begin
Case Random(10) of
0 : IdleTime(1000 + Random(350), 500, 1.0);
1 : IdleTime(1000 + Random(350), 1000, 1.0);
2 : IdleTime(1000 + Random(350), 750, 0.5);
3 : SleepAndMoveMouse(2500 + Random(2500));
4 : SleepAndMoveMouse(1500 + Random(1500));
5 : SleepAndMoveMouse(500 + Random(500));
end;
end;
FindTalk;
end;
{ ---------------------------------------------------------------------------- ]
[ >> procedure LoadNullWords; ]
[ >> Loads Words which cannot be your Nickname - by Mad Cow ]
[ ---------------------------------------------------------------------------- }
procedure LoadNullWords;
begin
SkipItems[1] := 'the';
SkipItems[2] := 'but';
SkipItems[3] := 'yes';
SkipItems[4] := 'lol';
SkipItems[5] := 'brb';
SkipItems[6] := 'gtg';
SkipItems[7] := 'cya';
SkipItems[8] := 'how';
SkipItems[9] := 'hey';
SkipItems[10] := 'wat';
SkipItems[11] := 'umm';
SkipItems[12] := 'him';
SkipItems[13] := 'she';
SkipItems[14] := 'man';
SkipItems[15] := 'wow';
SkipItems[16] := 'god';
SkipItems[17] := 'nub';
SkipItems[18] := 'nop';
SkipItems[19] := 'did';
SkipItems[20] := 'you';
SkipItems[21] := 'ing';
end;
{ ---------------------------------------------------------------------------- ]
[ >> function CreateNick(Username : String) : String; ]
[ >> Creates your Nickname from your Username - by Mad Cow ]
[ ---------------------------------------------------------------------------- }
function CreateNick(Username : String) : String;
var
UserLength, NickStart, INick, A : Integer;
Nicks, Temp : String;
BadNick : Boolean;
begin
UserLength := Length(Username);
INick := 0;
LoadNullWords;
repeat
BadNick := False;
NickStart := 2 + INick;
Nicks := Nicks + Copy(Username, NickStart, 3);
for A := 1 to 3 do
begin
Temp := Copy(Nicks, A, 1);
if(Temp = ' ') or (Temp = '_')then
begin
INick := INick + 1;
Nicks := '';
BadNick := True;
end;
end;
for A := 1 to 21 do
begin
if(Nicks = SkipItems[A]) then
begin
INick := INick + 1;
Nicks := '';
BadNick := True;
end;
end;
until((not(BadNick)) or (NickStart >= 15))
Result := Nicks;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure GenerateNickNames; ]
[ >> Saves Nicknames, and Sets Default Locations, by Mad Cow Edited by Star ]
[ ---------------------------------------------------------------------------- }
Procedure GenerateNickNames;
Begin
Writeln('');
Writeln('Creating Nicknames:');
Status('Creating Nicknames');
For X := 0 to HowManyPlayers - 1 do
begin
if(Players[X].Nick = '') then
begin
Players[X].Nick := CreateNick(Players[X].Name);
WriteLn(' Players[' + IntToStr(X) + '].Nick := ' + Players[X].Nick + ';');
Wait(1);
end;
end;
Writeln('');
Status('Setting Players Current Location:');
For X := 0 to HowManyPlayers - 1 do
Players[X].Loc := 'Not Yet Started Autoing';
Status('If you see this Message for Longer than 3 Seconds, Stop the Script and Restart Straight Away!');
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Mining ]
[ >> Procedure AutoRockColor; ]
[ >> Automatically gets the Rock Color. If this Fails, Set it Yourself ]
[ ---------------------------------------------------------------------------- }
Procedure AutoRockColor;
var
OreTol, i : integer;
begin
StarDebug('Picking Ore Colors', DebugNumber);
If not(Loggedin) then Exit;
If (Players[CurrentPlayer].Integer1 > 0) then Exit;
Case Lowercase(Players[CurrentPlayer].String2) of
'copper' : Begin Players[CurrentPlayer].Integer1 := 3824768; OreTol := 35; end;
'tin' : Begin Players[CurrentPlayer].Integer1 := 7829375; OreTol := 35; end;
'iron' : Begin Players[CurrentPlayer].Integer1 := 2305870; OreTol := 25; end;
'coal' : Begin Players[CurrentPlayer].Integer1 := 2834753; OreTol := 13; end;
'mith' : Begin Players[CurrentPlayer].Integer1 := 7359564; OreTol := 20; end;
'gold' : Begin Players[CurrentPlayer].Integer1 := 1881051; OreTol := 20; end;
'silver' : Begin Players[CurrentPlayer].Integer1 := 12434885; OreTol := 20; end;
'addy' : Begin Players[CurrentPlayer].Integer1 := 6322272; OreTol := 20; end;
'rune' : Begin Players[CurrentPlayer].Integer1 := 0; OreTol := 20; end;
end;
Repeat
If(FindOreColors(Players[CurrentPlayer].Integer1, 5, OreTol))then Break;
If(Not(Loggedin))then Break;
i := i + 1;
KeyDown(VK_LEFT);
Wait(100 + random(100));
KeyUp(VK_LEFT);
If(i > 49) then
Begin
Writeln('Could not find Ore Color --> Switching player.')
Logout;
end;
Until(i > 49)
MakeCompass('N');
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Mining ]
[ >> Procedure ChangeGasPixels(Var Gasx,GasY:Integer); ]
[ >> Changes the Gas Color so that it can be Found if Present ]
[ ---------------------------------------------------------------------------- }
Procedure ChangeGasPixels(Var Gasx, GasY: Integer); //Courtesy of Wizzup? Thanks dude!
Var
TempX, TempY: Integer;
Begin
Wait(100);
StarDebug('Changing Gas Pixels', DebugNumber);
If FlagPresent Then
Begin
FFlag(0);
If FindColorSpiralTolerance(x, y, OreColor, MSX1, MSY1, MSX2, MSY2, 4) Then
Begin
x := TempX;
y := TempY;
If CheckOre(x, y, OreColor, 4) > 2 Then
Begin
If Distance(MSCX, MSCY, TempX, Tempy) < 40 Then
Begin
GasX := x;
GasY := y;
end;
end;
end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Mining ]
[ >> Function GasFound(CheckForGas: Boolean; cx, cy: Integer): Boolean; ]
[ >> Checks for and Handles Gas. Will also just move if Needed ]
[ ---------------------------------------------------------------------------- }
Function CheckGas(S: String; CheckForGas: Boolean; cx, cy: Integer): Boolean;
Var
Mark, c: Integer;
Begin
If (CheckForGas) then
begin
If GasCheck(cx, cy-20) or FindGas(cx, cy-20)then
Begin
Repeat
c := c + 1;
Result := True;
Mouse(648, 83, 2, 2, True);
Wait(400 + Random(400));
until(c >= 2)
MarkTime(Mark);
end;
end else
Begin
Repeat
c := c + 1;
Result := True;
Mouse(648, 83, 2, 2, True);
Wait(400 + Random(400));
until(c >= 2)
MarkTime(Mark);
end;
If (Result) then
Begin
Case Lowercase(S) of
'gas' : ReportVars[2] := ReportVars[2] + 1;
'ent' : ReportVars[3] := ReportVars[3] + 1;
end;
While (TimeFromMark(Mark) < 15000) do
begin
StarDebug(Capitalize(S) + ' Found!', 4);
SleepAndMoveMouse(1000);
Randoms('');
end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Mining ]
[ >> Procedure MineRock(SecondsToWait: Integer); ]
[ >> Starts Mining a Rock and Waits for it to be Mined ]
[ ---------------------------------------------------------------------------- }
Procedure MineRock(SecondsToWait: Integer);
Var
Current, Mark, cx, cy: Integer;
Begin
If not(Loggedin) then Exit;
StarDebug('Mining Ore', DebugNumber);
If (OreColor1 > 0) and (OreColor2 > 0) and (OreColor3 > 0)then
begin
Case Random(3) of
0: Players[CurrentPlayer].Integer1 := OreColor1;
1: Players[CurrentPlayer].Integer1 := OreColor2;
2: Players[CurrentPlayer].Integer1 := OreColor3;
end;
end;
While not(FindColorSpiralTolerance(x, y, Players[CurrentPlayer].Integer1, MSX1, MSY1, MSX2, MSY2, 5)) do
Begin
If not(LoggedIn) then Exit;
Randoms('mining');
Wait(100);
end;
Current := InvCount;
If (FindObj(cx, cy, 'Mine', Players[CurrentPlayer].Integer1, 5))then
begin
If not(CheckGas('Gas', True, cx, cy))then
begin
If not(Random(10) = 7) then
Mouse(cx, cy, 0, 0, True)
else
Begin
Mouse(cx, cy, 0, 0, False);
Wait(100 + Random(100));
ChooseOption(x, y, 'Mine');
end;
ChangeGasPixels(cx, cy);
GetMousePos(x, y);
If(x < MSX1) or (x > MSX2) or (y < MSY1) or (y > MSY2) then
MMouse(Random(MSCX), Random(MSCY), 0, 0);
MarkTime(Mark);
Repeat
Status('Waiting for "You Swing your Pick..."');
If Randoms('mining') then Exit;
If (GetColor(103, 421) = 0) and (GetColor(195, 426) = 0)then Break;
If (InChat('You swing')) then Break;
If (InChat('There is')) then Break;
Until(TimeFromMark(Mark) >= 1500)
MarkTime(Mark);
Repeat
Status('Waiting for "You Managed to Mine..."');
If Randoms('Mining')then Exit;
Wait(50);
If CheckGas('Gas', True, cx, cy) then Exit;
If (GetColor(77, 421) = 0) and (GetColor(131, 422) = 0) and (GetColor(146, 421) = 0)then Break;
If (InChatMulti('There is', 'You man', 'currently no')) then Break;
Wait(50);
Until(TimeFromMark(Mark) > SecondsToWait * 1000) or
(InventoryCount >= 28) or (not(GetColor(109, 430) = 0) and (not(GetColor(195, 426) = 0)))
If (TimeFromMark(Mark) > SecondsToWait * 1000) then
If(Random(AntiBanRandomness) = 0) then
DoAntiBan(True);
If(InvCount > Current)then
StarDebug('Mined an Ore!', 4);
end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Woodcutting ]
[ >> Procedure AutoTreeColor(TreeTypeColor : String); ]
[ >> Automatically gets the Tree Color. If this Fails, Set it Yourself ]
[ ---------------------------------------------------------------------------- }
Procedure AutoTreeColor(TreeTypeColor : String);
Var
C, TempTreeColor : Integer;
Begin
If not(Loggedin) then Exit;
Case Lowercase(TreeTypeColor)of
'tree','' : TempTreeColor := 3504232;
'oak' : TempTreeColor := 3106904;
'willow' : TempTreeColor := 4417632;
'maple' : TempTreeColor := 32928;
'mahogany': TempTreeColor := 3697506;
'yew' : TempTreeColor := 3371104;
'magic' : TempTreeColor := 14678264;
End;
If(Players[CurrentPlayer].Integer1 > 0)Then
Exit;
StarDebug('Getting Tree Color', DebugNumber);
For C := 0 to 30 do
Begin
If(Findobj(x, y, 'Chop down '+Capitalize(TreeTypeColor), TempTreeColor, C))Then
Begin
GetMousePos(x, y);
Players[CurrentPlayer].Integer1 := Getcolor(x, y);
Writeln('Tree Color Successfully Found: '+IntToStr(Players[CurrentPlayer].Integer1)+' at: ('+IntToStr(x)+', '+IntToStr(y)+') with Tolerance: '+IntToStr(c));
Break;
end;
end;
If(Players[CurrentPlayer].Integer1 = 0)Then
Begin
Writeln('Tree Color not Found');
Writeln('Player is Inactive!');
Players[CurrentPlayer].Active := False;
Players[CurrentPlayer].Loc := 'Tree AutoColor Failed!';
Logout;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Woodcutting ]
[ >> Function StarFindEnt(TreeName: String): Boolean; ]
[ >> Returns True if an Ent is Found ]
[ ---------------------------------------------------------------------------- }
Function StarFindEnt(TreeName: String): Boolean;
Var
H, S, L: Extended;
R, G, B: Integer;
cx, cy, ax, ay, i: Integer;
Temp: Array[0..5] of Integer;
Begin
if (IsTextInAreaEx(7, 7, 180, 25, cx, cy, TreeName, 100, UpChars, True,
True, 0, 2, -1)) then
Begin
For i := 0 to 5 do
Begin
ax := cx + i;
ay := cy + 3;
Temp[i] := GetColor(ax, ay);
//Writeln(IntToStr(Temp[i])+' '+IntToStr(ax)+' '+IntToStr(ay));
end;
For i := 0 to 5 do
Begin
ColorToHSL(Temp[i], H, S, L);
ColorToRGB(Temp[i], R, G, B);
If ((H >= 10) and (H <= 20) and
(S >= 80) and (S <= 100) and
(L >= 35) and (L <= 55)) then
Begin
Result := True;
Exit;
end else
If ((R > 190) and (R < 225) and
(G > 190) and (G < 225) and
(B >= 0) and (B < 25)) then
Begin
Result := True;
Exit;
end
Wait(1);
end;
if(FindColorTolerance(cx, cy, 122333, 60, 1, 123, 15, 15))then
Result := True;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Function UpdateCoords(Var ax, ay: Integer; TheColor: Integer): Boolean; ]
[ >> Updates Color Coords When you are Moving after a Click ]
[ >> Huge Thanks to Sumillion and Lorax for the Function - modified by Star ]
[ ---------------------------------------------------------------------------- }
Function UpdateCoords(Var cx, cy: Integer; ax, ay, TheColor, Tol: Integer): Boolean;
var
//ax, ay,
Counter: Integer;
Begin
StarDebug('Updating Color Coords ...', DebugNumber);
//GetMousePos(ax, ay);
If (ax < 20) then ax := 20; If (ay < 20) then ay := 20;
While (FlagPresent) and (FindColorSpiralTolerance(cx, cy, TheColor, ax-20, ay-20, ax+20, ay+20, Tol)) do
begin
ax := cx; ay := cy;
Wait(10);
end;
If (ax < 10) then ax := 10; If (ay < 10) then ay := 10;
While (FindColorSpiralTolerance(cx, cy, TheColor, ax-10, ay-10, ax+10, ay+10, Tol)) and (Counter < 100) do
begin
ax := cx; ay := cy;
Counter := Counter + 1;
Wait(10);
end;
Result := FindColorSpiralTolerance(cx, cy, TheColor, ax-10, ay-10, ax+10, ay+10, Tol);
if (not Result) then
StarDebug('We lost the Color while Updating it', DebugNumber)
else
StarDebug('Updated Color Coords', Debugnumber);
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Woodcutting ]
[ >> Function StartChopping(Click: Boolean): Boolean; ]
[ >> Starts Cutting the Tree, Returning a Boolean ]
[ ---------------------------------------------------------------------------- }
Function StartChopping(var cx, cy, TreeColor: Integer; Click: Boolean): Boolean;
Begin
If not(LoggedIn)then Exit;
StarDebug('Finding '+Players[CurrentPlayer].String2, 4);
Randoms('');
While not(FindColorSpiralTolerance(cx, cy, Players[CurrentPlayer].Integer1, MSX1, MSY1, MSX2, MSY2, 5)) do
Begin
If not(Loggedin) then Exit;
Randoms('woodcutting');
Wait(100);
end;
Repeat
If not(LoggedIn) then Exit;
If(FindObj(cx, cy, Capitalize(Players[CurrentPlayer].String2), Players[CurrentPlayer].Integer1, 2))and
not (StarFindEnt(Capitalize(Players[CurrentPlayer].String2))) then
Begin
GetMousePos(x, y);
TreeColor := GetColor(x, y);
If (Click) then
begin
If (Random(5) = 0) then
Begin
Mouse(x, y, 0, 0, False);
Wait(100 + Random(100));
ChooseOption(x, y, 'Chop');
end else
Mouse(x, y, 0, 0, True);
end else
MMouse(x, y, 0, 0);
Result := True;
end;
Wait(100 + Random(100));
until(Result = True)
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Woodcutting ]
[ >> Procedure WaitWhilstChopping; ]
[ >> Waits Whilst the tree is Being Cut, Searching for Randoms ]
[ ---------------------------------------------------------------------------- }
Procedure Chopping;
Var
cx, cy, Counter, CountUntil, Current, Mark, TreeColor: Integer;
begin
If StartChopping(cx, cy, TreeColor, True) then
begin
If UpdateCoords(x, y, cx, cy, TreeColor, 10)then
MMouse(x, y, 0, 0) //MMouse(cx, cy, 0, 0)
else
Begin
Flag;
Wait(400 + Random(200));
StartChopping(x, y, TreeColor, False)
end;
Current := InvCount;
MarkTime(Mark);
CountUntil := 64 + Random(20);
Counter := 0;
repeat
If not(LoggedIn) then Exit;
Counter := Counter + 1;
Status('Chopping ' +Capitalize(Players[CurrentPlayer].String2)+ ': '+intToStr(Counter)+'/'+IntToStr(CountUntil));
Players[CurrentPlayer].Loc := 'Chopping '+Capitalize(Players[CurrentPlayer].String2);
If Randoms('woodcutting')then Exit;
Wait(10);
If (StarFindEnt(Capitalize(Players[CurrentPlayer].String2)))then
begin
EntsAvoided := EntsAvoided + 1;
Writeln('Ent Number '+IntToStr(EntsAvoided)+' Found');
If ScreenShots then
TakeScreen('Ent Avioded', EntsAvoided);
CheckGas('Ent', False, cx, cy);
Exit;
end;
Wait(10);
If (TimeFromMark(Mark) >= 20*1000) and (Current = InvCount) then
Break
else
begin
Current := InvCount;
MarkTime(Mark);
end;
Wait(10);
until not(IsUpText(Capitalize(Players[CurrentPlayer].String2))) or (Counter >= CountUntil) or (InventoryCount >= 28)
If (Counter >= CountUntil) then
If (Random(AntiBanRandomness) = 0) then
DoAntiBan(True);
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Fishing ]
[ >> function FindFish(var cx, cy: Integer) : Boolean; ]
[ >> Finds a Fishing Spot Depending on the Type Chosen ]
[ ---------------------------------------------------------------------------- }
function FindFish(var cx, cy: Integer) : Boolean;
var
a, c, i, x1, y1, x2, y2, ix, iy: Integer;
begin
If not(Loggedin) then Exit;
StarDebug('Finding Fish', 4);
if(FindColorSpiralTolerance(x, y, 15714472, MSX1, MSY1, MSX2, MSY2, 30))then //15515800
begin
x1:= 245;
y1:= 165;
x2:= 277;
y2:= 185;
repeat
a:=a+1;
if(a=1)then
c:= c + 1;
if(a=3)then
c:= c + 1;
for i:=1 to c do
begin
if(a=1)then
begin
x1:= x1 + 30;
x2:= x2 + 30;
end else
if(a=2)then
begin
y1:= y1 - 20;
y2:= y2 - 20;
end else
if(a=3)then
begin
x1:= x1 - 30;
x2:= x2 - 30;
end else
if(a=4)then
begin
y1:= y1 + 20;
y2:= y2 + 20;
end;
if(x1=485)and(x2=517)then
x2:= x2 - 2;
if(y1=325)and(y2=345)then
y2:= y2 - 7;
if(x2>515)then
Break;
if(FindColorSpiralTolerance(ix, iy, 15714472, x1, y1, x2, y2, 30))then
begin
MMouse(ix, iy, 3, 3)
Wait(100 + random(100))
if((Option2('Cage'))and(Players[CurrentPlayer].String2 = 'Cage')) or
((Option2('Net')) and (Players[CurrentPlayer].String2 = 'SmallNet'))then
begin
Mouse(ix, iy, 0, 0, True);
wait(100 + random(100));
Result := True;
cx := ix; cy := iy;
Exit;
end else
if ((Option2('Cage')) and (Players[CurrentPlayer].String2 = 'Harpoon'))then
begin
Result := True;
cx := ix; cy := iy;
Mouse(ix, iy, 0, 0, False);
wait(100 + random(100));
ChooseOption(x, y, 'Harpoon');
Wait(100 + Random(50));
Exit;
end;
end;
end;
if(a = 4)then a:= 0;
until(x2>515) or (Result = True)
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Fishing ]
[ >> Function FishSpotPresent(cx, cy: Integer): Boolean; ]
[ >> Checks if a Fishing Spot is Still Present ]
[ ---------------------------------------------------------------------------- }
Function FishSpotPresent(cx, cy: Integer): Boolean;
Var
i : integer;
Begin
If not(Loggedin) then Exit;
For i := 1 to 10 do
Begin
If (cx < 10) then cx := 10; If (cy < 10) then cy := 10;
If(FindColorSpiralTolerance(x, y, 15515800, cx-10, cy-10, cx+10, cy+10, 30))then
Result := True;
If(Result = True)then
Break;
Wait(10);
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Fishing ]
[ >> Procedure DoFishing; ]
[ >> Waits Whilst Fishing Occurs ]
[ ---------------------------------------------------------------------------- }
Procedure DoFishing;
Var
q, e, ax, ay, cx, cy, Mark, Current : integer;
i : Extended;
Begin
If not(Loggedin) then Exit;
Current := InvCount;
If (FindFish(ax, ay)) then
begin
UpdateCoords(cx, cy, ax, ay, 15714472, 30)
e := 70 + Random(30)
StarDebug('Fishing', 4);
MarkTime(Mark);
Repeat
If not(Loggedin) then Exit;
i := i + 1;
Status('Fishing: ' +FloatToStr(I)+ '/' +IntToStr(E));
If Randoms('fishing')then Exit;
Wait(50);
If (Random(6) = 0) then
For q := 1 to 4 do
Begin
i := i + 0.25;
If (Random(AntiBanRandomness) = 0) then DoAntiBan(False);
end;
Wait(50);
If (TimeFromMark(Mark) >= 22*1000) and (Current = InvCount) then
Break
else
begin
Current := InvCount;
MarkTime(Mark);
end;
Wait(50);
Until( I >= E ) or (InventoryFull) or not(FishSpotPresent(cx, cy))
end else StarDebug('Fish Not Found', DebugNumber);
end;
{ ---------------------------------------------------------------------------- ]
[ >> Function StarOpenBank(LookForColor: integer): Boolean; ]
[ >> Opens the Bank, Looking for a Specific Color ]
[ ---------------------------------------------------------------------------- }
Function StarOpenBank(LookForColor: Integer): Boolean;
var
c: Integer;
begin
If not(Loggedin)then Exit;
if(FindObjMultiText(x, y, 'Use B', 'Bank', 'booth', LookForColor, 12))then
begin
Mouse(x, y, 1, 1, false);
if(ChooseOption(x, y, 'quickly')) or (ChooseOption(x, y, 'Bank Banker'))then
begin
Flag;
repeat
Wait(100);
c := c + 1
until(BankScreen) or (c >= 50) or (PinScreen)
If (BankScreen) then
begin
If not(Getcolor(475, 75) = 5531254)then
Mouse(475, 77, 0, 0, true);
Result := True
Exit;
end else
If (PinScreen) then
begin
CloseBank;
Logout;
Players[CurrentPlayer].Loc := 'Pin Screen Detected!';
Players[CurrentPlayer].Active := False;
Exit;
end else
If (C >= 50) then
begin
CloseBank;
Logout;
Players[CurrentPlayer].Loc := 'Timed out when Opening Bank';
Players[CurrentPlayer].Active := False;
Exit;
end;
end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Prayer ]
[ >> Function GrabBones(Bank: Boolean): Boolean; ]
[ >> Waits for Bones to Appear and Picks up Bones off of the Floor OR ]
[ Opens the banks and Withdraws any Bones found in the First Few Slots ]
[ ---------------------------------------------------------------------------- }
Function GrabBones(Bank: Boolean): Boolean;
var
Searchfor2, Dx, Dy, Current, Mark: Integer; //1 = Text
SearchFor1: String; //2 = Bitmap
begin
If not(LoggedIn) then Exit;
If InventoryFull then Exit;
Current := InvCount;
StarDebug('Grabbing Bones', 4);
If((Players[CurrentPlayer].Integer1) = 0) then
Players[CurrentPlayer].Integer1 := 13355985;
Case Lowercase(Players[CurrentPlayer].String2) of
'bones' : SearchFor2 := DTMBones;
'big bones' : SearchFor2 := DTMBigBones;
else Begin Writeln('Something Wrong with SearchFor2'); Exit; end;
end;
If not(Bank) then
Begin
while not(FindColorSpiralTolerance(dx, dy, Players[CurrentPlayer].Integer1, MSX1+20, MSY1+20, MSX2-20, MSY2-20, 20))do
begin
Randoms('');
Wait(10);
end;
If(FindObj(dx, dy, 'Take', Players[CurrentPlayer].Integer1, 20))then
begin
Mouse(dx, dy, 0, 0, False);
Wait(100 + Random(100));
Case Lowercase(Players[CurrentPlayer].String2) of
'bones' : SearchFor1 := 'Bones';
'big bones' : SearchFor1 := 'Big bones';
else Begin Writeln('Something Wrong with SearchFor1'); SearchFor1 := 'ones'; end;
end;
If (FindText(dx, dy, 'ke '+SearchFor1, UpChars, MSX1, MSY1, MSX2, MSY2))then
begin
Mouse(dx + 5 + Random(5), dy + 2 + Random(1), 0, 0, True);
Flag;
MarkTime(mark);
while (Current = InvCount) do
begin
Wait(200 + Random(100));
If(TimeFromMark(Mark) > 3000) then Break;
end;
Wait(100 + Random(100));
end else
Begin
MMouse(Random(MSCX), Random(MSCY), 0, 0);
If (Random(AntibanRandomness) = 0) then DoAntiBan(True);
end;
end else
begin
Wait(200 + Random(200));
If (Random(AntibanRandomness) = 0) then DoAntiBan(True);
end;
end else
begin
If (StarOpenBank(7113112)) then
begin
Wait(100);
If(FindDTM(SearchFor2, dx, dy, MSX1, MSY1, MSCX, MSCY))then
begin
Mouse(dx, dy, 2, 2, False);
Wait(100 + Random(100));
If (FindText(dx, dy, 'draw Al', UpChars, MSX1, MSY1, MSX2, MSY2))then
begin
Mouse(dx + 5 + Random(5), dy + 2 + Random(1), 0, 0, True);
while (InvCount = 0) do
begin
Wait(200 + Random(100));
If(TimeFromMark(Mark) > 3000) then Break;
end;
Wait(100 + Random(100));
CloseBank;
Result := True;
end else
begin
CloseBank;
Logout;
Players[CurrentPlayer].Loc := 'No Bones in bank!';
Players[CurrentPlayer].Active := False;
end;
end else
begin
CloseBank;
Logout;
Players[CurrentPlayer].Loc := 'No Bones in bank!';
Players[CurrentPlayer].Active := False;
end;
end;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Prayer ]
[ >> Procedure BuryBones(BoneType: String); ]
[ >> Buries the Specified Type of Bones ]
[ ---------------------------------------------------------------------------- }
Procedure BuryBones(BoneType: String);
Var
i, SearchFor, Current, cx, cy: Integer;
Coords: TPoint;
Begin
If not(LoggedIn) then Exit;
StarDebug('Burying Bones', 4);
Case Lowercase(BoneType) of
'bones' : SearchFor := DTMBones;
'big bones' : SearchFor := DTMBigBones;
else Begin Writeln('Something Wrong with SearchFor'); Exit; end;
end;
For i := 1 to 28 do
begin
FindTalk;
If (ExistsItem(i)) then
begin
Current := InvCount;
Coords := ItemCoords(i);
If(FindDTM(SearchFor, cx, cy, Coords.x-30, Coords.y-20, Coords.x+30, Coords.y+30))then
Begin
Mouse(Coords.x, Coords.y+5, 3, 3, True);
While(InvCount = Current) do
Wait(100);
Wait(550 + Random(150));
end else
MMouse(MSCX, MSCY, MSCY, MSCY);
end
Wait(1);
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure Drop2; ]
[ >> Drops All Items in the Inventory, Leaving out some Specific Ones ]
[ ---------------------------------------------------------------------------- }
Procedure Drop(DTM: Integer);
Var
cx, cy, Current, i: integer;
Coords: TPoint;
Begin
If not(LoggedIn) then Exit;
GameTab(4);
For i := 1 to 28 do
begin
StarDebug('Checking If Item Exists', DebugNumber);
If (ExistsItem(i)) then
begin
Current := InvCount;
Coords := ItemCoords(i);
StarDebug('Finding DTM', DebugNumber);
If(FindDTM(DTM, cx, cy, Coords.x-30, Coords.y-20, Coords.x+30, Coords.y+30))then
Begin
Mouse(Coords.x, Coords.y+5, 3, 3, False);
Wait(50 + Random(50));
StarDebug('Finding Drop Text', DebugNumber);
If(FindText(cx, cy, 'Drop', UpChars, MIX1, MIY1, MIX2, MIY2))then
Begin
Mouse(cx + 10 + Random(10), cy + 4, 5, 1, True);
Wait(200);
While(InvCount = Current) do
Wait(100);
Wait(250 + Random(100));
end else
ClickText('Cancel', MIX1, MIY1, MIX2, MIY2);
end;
end;
Wait(1);
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Fletching ]
[ >> Function GrabForFletching: Boolean; ]
[ >> Opens Bank and Grabs Material needed for Fletching the Specific Item ]
[ ---------------------------------------------------------------------------- }
Function GrabForFletching: Boolean;
Var
LookFor: Array of Integer;
cx, cy, i, Amount, Current: Integer;
Error: Boolean;
begin
If not(LoggedIn) then Exit;
StarDebug('Grabbing Items for Fletching', 4);
case Lowercase(Players[CurrentPlayer].String2) of
'logs --> (u) shortbow' : begin
SetArrayLength(LookFor, 1);
LookFor[0]:= DTMLog;
Amount := 27;
end;
'logs --> (u) longbow' : begin
SetArrayLength(LookFor, 1);
LookFor[0]:= DTMLog;
Amount := 27;
end;
'(u) shortbow --> (s) shortbow': begin
SetArrayLength(LookFor, 2);
LookFor[0]:= DTMFletching[3];
LookFor[1]:= DTMFletching[1];
Amount := 14;
end;
'(u) longbow --> (s) longbow' : begin
SetArrayLength(LookFor, 2);
LookFor[0]:= DTMFletching[4];
LookFor[1]:= DTMFletching[1];
Amount := 14;
end;
'logs --> (s) shortbow' : begin
SetArrayLength(LookFor, 2);
LookFor[0]:= DTMLog;
LookFor[1]:= DTMFletching[1];
Amount := 13;
end;
'logs --> (s) longbow' : begin
SetArrayLength(LookFor, 2);
LookFor[0]:= DTMLog;
LookFor[1]:= DTMFletching[1];
Amount := 13;
end;
else begin Writeln('Error in GrabForFletching!'); TerminateScript; end;
end;
If (StarOpenBank(7113112)) then
begin
Wait(200 + Random(200));
If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 3) = '(u)') then
Deposit(1, 28, 2)
else
Deposit(2, 28, 2);
For i := 0 to GetArrayLength(LookFor)-1 do
begin
Current := InvCount;
Wait(500 + Random(250));
If (FindDTM(LookFor[i], cx, cy, MSX1, MSY1, MSX2, MSY2))then
begin
Mouse(cx, cy, 5, 5, False);
Wait(100 + Random(50));
If (Amount >= 27) then
begin
If (FindText(cx, cy, 'draw Al', UpChars, MSX1, MSY1, MSX2, MSY2))then
begin
Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True)
While (Current = InvCount) do
Wait(150);
Wait(200 + Random(100));
Result := true;
end else
Error := True;
end else
If (FindText(cx, cy, 'draw X', UpChars, MSX1, MSY1, MSX2, MSY2))then
begin
Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True);
While (GetColor(214, 434) = 0) and (GetColor(439, 434) = 0) and (LoggedIn)do
Wait(100);
Wait(200 + Random(100));
TypeSend(IntToStr(Amount));
While (Current = InvCount) and (Loggedin) do
Wait(150);
Wait(200 + Random(100));
Result := True;
end else
Error := True;
end else
begin
Error := True;
StarDebug('DTM LookFor[' +IntToStr(i)+ '] was not Found!', DebugNumber);
end;
If (Error = True) then
begin
Players[CurrentPlayer].Loc := 'Could not Withdraw Items!';
Players[CurrentPlayer].Active := False;
CloseBank;
Logout;
Exit;
end;
end;
CloseBank;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Part of Fletching ]
[ >> Procedure Fletch; ]
[ >> Fletches the Specific Item into the Desired Item ]
[ ---------------------------------------------------------------------------- }
Procedure Fletch;
var
cx, cy, dx, dy, Number, Current, Mark: Integer;
Error: Boolean;
LookForText: String;
begin
If not(LoggedIn) then Exit;
StarDebug('Fletching Items', 4);
GameTab(4);
Wait(200 + Random(100));
//Cut Logs
If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 2) = 'lo') then
begin
If (FindDTM(DTMFletching[2], cx, cy, MIX1, MIY1, MIX2, MIY2))then
begin
Mouse(cx, cy, 5, 5, True);
Wait(200 + Random(100));
end else
Error := True;
If (FindDTM(DTMLog, cx, cy, MIX1, MIY1, MIX2, MIY2)) and not(Error) then
begin
Mouse(cx, cy, 5, 5, True);
Wait(200 + Random(100));
end else
Error := True;
While (GetColor(214, 434) = 0) and (GetColor(439, 434) = 0) and (loggedIn) and not(Error) do
Wait(100);
Wait(200 + Random(100));
case Lowercase(Players[CurrentPlayer].String2) of
'logs --> (u) shortbow', 'logs --> (s) shortbow' : LookForText := 'hort';
'logs --> (u) longbow', 'logs --> (s) longbow' : LookForText := 'ong';
else begin Writeln('Error in Fletch 1'); Exit; end;
end;
If (FindNPCChatText(LookForText)) and not(Error) then
begin
Mouse(x, y-30, 8, 8, False);
Wait(100 + Random(50));
If (FindText(cx, cy, 'ake X', UpChars, MCX1, MCY1, MCX2, MCY2))then
begin
Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True);
While not(GetColor(256, 410) = 8388608) and (LoggedIn) do
Wait(100);
Wait(200 + Random(100));
TypeSend(IntToStr(28 + Random(1000)));
MarkTime(Mark);
repeat
If not(LoggedIn) then Exit;
Wait(10);
If (Random(AntibanRandomness) = 0) then DoAntiBan(False);
If (Randoms('')) then Exit;
until (InChat('ave run')) or not (FindDTM(DTMLog, cx, cy, MIX1, MIY1, MIX2, MIY2)) or (TimeFromMark(Mark) > 60*1000)
end else
begin
Mouse(MSCX, MSCY, MSCX, MSCY, False);
MMouse(MSCX, MSCY, MSCX, MSCY);
Error := True;
end;
end else
Error := True;
If (Error) then
begin
Players[CurrentPlayer].loc := 'Could not Fletch 1!';
Players[CurrentPlayer].active := False;
Logout;
Exit;
end;
end;
// Unstrung to Strung.
If (Pos('(s)', Lowercase(Players[CurrentPlayer].String2)) > 0) then
begin
case Lowercase(Players[CurrentPlayer].String2) of
'(u) shortbow --> (s) shortbow', 'logs --> (s) shortbow': Number := 3;
'(u) longbow --> (s) longbow', 'logs --> (s) longbow': Number := 4;
else begin Writeln('Error in Fletch 2!'); Exit; end;
end;
Repeat
Current := 0;
Current := InvCount;
If (FindDTM(DTMFletching[1], cx, cy, MIX1, MIY1, MIX2, MIY2))then
begin
Mouse(cx, cy, 5, 5, True);
Wait(200 + Random(100));
end else
Error := True;
If (FindDTM(DTMFletching[Number], dx, dy, MIX1, MIY1, MIX2, MIY2)) and not(Error) then
begin
Mouse(dx, dy, 5, 5, True);
Wait(200 + Random(100));
end else
Error := True;
MarkTime(Mark);
While (Current = InvCount) and not(Error) and (TimeFromMark(Mark) < 20*1000) do
Wait(100);
Wait(100 + Random(100));
until (Error)
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Procedure LoadDTMs; ]
[ >> Loads all DTMs needed into the Memory ]
[ ---------------------------------------------------------------------------- }
Procedure LoadDTMsandBitmaps;
Begin
DTMFletching[1] := DTMFromString('78DA637CC5C0C0E0C780029ACA23181E02694' + //String
'620FE0F048CF7808C080634C0884402E9B740228A809AEF402294' +
'809ABB40C29B809A2F986EC650F394B07B0036370EED');
DTMFletching[2] := DTMFromString('78DA63F460626078C28002CAF272181E02694' + //Knife
'620FE0F048C7640359F18D000231209A441E6DC27A0C61FA8E61A' +
'01353E40358F08A87103AA798D5F0D00E5B80D52');
DTMFletching[3] := DTMFromString('78DA639CC7C4C0F08C01057495E6313C04D28' + //Shortbow
'C40FC1F08189702D53C6640038C4824909E0954F38A809AA94035' +
'AF09A8E903AA794740CD74A09A1704D42C04AA794A40CD02C2FE0' +
'200F0A71285');
DTMFletching[4] := DTMFromString('78DA63EC636060F0644001735A6A191E02694' + //Longbow
'620FE0F048CD3808C080634C088440269909A60026A2601091F02' +
'6A40EEF126A0662A900824A0A607D35F186A66008970FC6A00FFA' +
'D0DA1');
DTMMining[1] := DTMFromString('78DA639CC4C4C060CBC8800CBC7415191E026' + //Ores
'990E87F20606C04AA7144550391859140BA17A8C680809A794035' +
'A604D4CC01AA7121A0A607A8C69B809A36A01A73026AA603D518E' +
'257030091BF0C02');
DTMMining[2] := DTMFromString('78DA632C66626078C6800278AB84181E02694' + //Gems
'620FE0F048C19986A20B2301248E703D57C20A0A61AA8E61D0135' +
'5540350F08A82902AAB98D5F0D00E0910DAA');
DTMLog := DTMFromString('78DA638C676060F0634001EEA69C0C0F81342' + //Logs
'310FF0702C64420239C010D302291403A0C48441050E30F248208' +
'A8C905128104D464821C49404D3A9008C5AF06005AEA0A55');
DTMBones := DTMFromString('78DA639CC3C4C0F09401059C3E7298E104906' + //Normal Bones
'604E2FF40C0381DA8E635031A60442281F402A09A6704D42C06AA' +
'B94F40CD244CF760A8590154F304BF1A0094DB1042');
DTMBigBones := DTMFromString('78DA637467626098CEC8800C76AD5FCF70024' + //Big Bones
'88344FF0301630050CD02543510591809A4ED806A661350130C54' +
'3393801A3722CCF103AA998C5F0D00A32B0C55');
BrokenAxeMask := BitmapFromString(9, 10, 'z78DA7373230D1890' + //Broken Axe Mask
'05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307225');
DTMFishing[1] := DTMFromString('78DA632C65626078C28002762608333C04D28' + //Lobster
'C40FC1F081853806A5E30A0014624124883CCF944404D3550CD33' +
'026A6A816AAE1350530254731FBF1A0050520E3B');
DTMFishing[2] := DTMFromString('78DA632C666260606564400687269D667808A' + //SwordFish
'441A2FF81803119A84614550D44164602E93CA09AFF0CF8D55402' +
'D5701030A78A098987434D2661730014E20AE8');
DTMFishing[3] := DTMFromString('78DA639CCDC4C0F08201051CDCB19DE121906' + //Tuna
'604E2FF40C03819A8E609031A60442281743F50CD07026A6611A1' +
'6629A67B30D42C03AAB98D5F0D008B78103C');
DTMFishing[4] := DTMFromString('78DA63DCC1C0C0D0CA8002525272181E02694' + //Anchovies
'620FE0F048CEB808C260634C0884402E93D4062220135A780440B' +
'0135078144157E350025E10C63');
DTMFishing[5] := DTMFromString('78DA638C65606068634001E5172B191E02694' + //Sardine
'620FE0F048CE1404607031A604422817402906827A0260E483412' +
'50930624EAF1AB0100BC150B1A');
DTMFishing[6] := DTMFromString('78DA63EC666060686740014776EF667808A41' + //herring
'981F83F1030B600197D0C6880118904D29D40A291809AE940A292' +
'809A2940A215BF1A0068080C7D');
DTMFishing[7] := DTMFromString('78DA637CCDC0C0D0CE8002B6AF59C3F010483' + //Trout, pike, Salmon
'302F17F20607C0464F433A001462412487F0112CD04D43C0112AD' +
'04D47C001275F8D5000017520E2C');
end;
{ ---------------------------------------------------------------------------- ]
[ >> The Form Procedures ]
[ >> The Following is a Huge list of Form Procedures to Allow the Form to ]
[ Work. They are all Based off of Yakmans Player Manager from SRL ]
[ >> Big Thanks to Ron for helping me fix a stupid error in my Form =) ]
[ ---------------------------------------------------------------------------- }
Procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
{ ---------------------------------------------------------------------------- ]
[ >> Saves Current Options Selected for Switching Players ]
[ ---------------------------------------------------------------------------- }
Procedure SavePlayersInForm;
Begin
Players[CurrentPlayer].Name := UsernameEdit.Text;
Players[CurrentPlayer].Pass := PasswordEdit.Text;
Players[CurrentPlayer].Skill := LampSkillComboBox.Text;
Players[CurrentPlayer].String1 := String1Combobox.Text;
Players[CurrentPlayer].String2 := String2Combobox.Text;
Players[CurrentPlayer].String3 := String3Combobox.Text;
Players[CurrentPlayer].Active := IsActive.Checked;
Players[CurrentPlayer].Boolean1 := ColorCheckBox.Checked;
Players[CurrentPlayer].Boolean2 := BankCheckBox.Checked;
Players[CurrentPlayer].Boolean3 := GemsCheckBox.Checked;
Players[CurrentPlayer].Integer1 := StrToIntDef(ColorsEdit.Text, 0);
Players[CurrentPlayer].Integer2 := StrToIntDef(LoadsEdit.Text, 0);
Players[CurrentPlayer].Integer3 := StrToIntDef(MiningSecsEdit.Text, 0);
FletchString[CurrentPlayer] := FletchComboBox.Text;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Loads Current Options Selected for Switching Players ]
[ ---------------------------------------------------------------------------- }
Procedure LoadPlayersInForm;
Begin
try
UsernameEdit.text := Players[CurrentPlayer].Name;
PasswordEdit.Text := Players[CurrentPlayer].Pass;
LampSkillComboBox.Text := Players[CurrentPlayer].Skill;
String1Combobox.Text := Players[CurrentPlayer].String1;
String2Combobox.Text := Players[CurrentPlayer].String2;
String3Combobox.Text := Players[CurrentPlayer].String3;
IsActive.Checked := Players[CurrentPlayer].Active;
ColorCheckBox.Checked := Players[CurrentPlayer].Boolean1;
BankCheckBox.Checked := Players[CurrentPlayer].Boolean2;
GemsCheckBox.Checked := Players[CurrentPlayer].Boolean3;
ColorsEdit.Text := IntToStr(Players[CurrentPlayer].Integer1);
LoadsEdit.Text := IntToStr(Players[CurrentPlayer].Integer2);
MiningSecsEdit.Text := IntToStr(Players[CurrentPlayer].Integer3);
FletchComboBox.Text := FletchString[CurrentPlayer];
except
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Saves Current Options To File ]
[ ---------------------------------------------------------------------------- }
procedure SaveUs2;
var
f, CharsFile: Integer;
begin
If (PowerMainSkillsFileName = '') then PowerMainSkillsFileName := 'PowerSkills'
CharsFile := RewriteFile(ScriptPath + PowerMainSkillsFileName + '.dat', False)
For f := 0 to GetArrayLength(players) - 1 do
begin
WriteFileString(CharsFile, 'name' +IntToStr(f)+ '=' +players[f].name+ Chr(13))
WriteFileString(CharsFile, 'pass' +IntToStr(f)+ '=' +players[f].pass+ Chr(13))
WriteFileString(CharsFile, 'skill' +IntToStr(f)+ '=' +players[f].skill+ Chr(13))
WriteFileString(CharsFile, 'string1' +IntToStr(f)+ '=' +players[f].string1+ Chr(13))
WriteFileString(CharsFile, 'string2' +IntToStr(f)+ '=' +players[f].string2 + Chr(13))
WriteFileString(CharsFile, 'string3' +IntToStr(f)+ '=' +players[f].string3 + Chr(13))
WriteFileString(CharsFile, 'integer1' +IntToStr(f)+ '=' +IntToStr(players[f].Integer1) + Chr(13))
WriteFileString(CharsFile, 'integer2' +IntToStr(f)+ '=' +IntToStr(players[f].Integer2) + Chr(13))
WriteFileString(CharsFile, 'integer3' +IntToStr(f)+ '=' +IntToStr(players[f].Integer3) + Chr(13))
WriteFileString(CharsFile, 'active' +IntToStr(f)+ '=' +BoolToStr(players[f].Active) + Chr(13))
WriteFileString(CharsFile, 'boolean1' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean1) + Chr(13))
WriteFileString(CharsFile, 'boolean2' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean2) + Chr(13))
WriteFileString(CharsFile, 'boolean3' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean3) + Chr(13))
WriteFileString(CharsFile, 'fletchstring' +IntToStr(f)+ '=' +fletchstring[f] + Chr(13))
//Writeln('Saved Player: '+IntToStr(f));
end;
CloseFile(charsfile)
end;
{ ---------------------------------------------------------------------------- ]
[ >> Loads Current Options from File ]
[ ---------------------------------------------------------------------------- }
procedure LoadUs2;
var
f, CharsFile, Temp: Integer;
CharsFileString: String;
begin
if (PowerMainSkillsFileName = '') then PowerMainSkillsFileName := 'PowerSkills';
CharsFile := OpenFile(ScriptPath + PowerMainSkillsFileName + '.dat', False)
if (CharsFile < 0) then
begin
SaveUs2;
CharsFile := OpenFile(AppPath + filename + '.dat', False)
if (CharsFile < 0) then
begin
WriteLn('Error Loading Chars');
Exit;
end
end
ReadFileString(CharsFile, CharsFileString, FileSize(CharsFile))
CloseFile(CharsFile)
Temp := CountPlayers(CharsFileString);
If (Temp <= 0) then Temp:= 1;
SetArrayLength(players, Temp);
SetArrayLength(fletchstring, Temp);
HowManyPlayers := GetArrayLength(players)
for f := 0 to HowManyPlayers - 1 do
begin
players[f].Name := Between('name' + IntToStr(f) + '=', chr(13), CharsFileString);
players[f].Pass := Between('pass' + IntToStr(f) + '=', chr(13), CharsFileString);
players[f].Skill := Between('skill' + IntToStr(f) + '=', chr(13), CharsFileString);
players[f].String1 := Between('string1' + IntToStr(f) + '=', chr(13), CharsFileString);
players[f].String2 := Between('string2' + IntToStr(f) + '=', chr(13), CharsFileString);
players[f].String3 := Between('string3' + IntToStr(f) + '=', chr(13), CharsFileString);
try
players[f].Integer1 := StrToInt(Between('integer1' + IntToStr(f) + '=', chr(13), CharsFileString));
except
end;
try
players[f].Integer2 := StrToInt(Between('integer2' + IntToStr(f) + '=', chr(13), CharsFileString));
except
end;
try
players[f].Integer3 := StrToInt(Between('integer3' + IntToStr(f) + '=', chr(13), CharsFileString));
except
end;
players[f].Active := StrToBool(Between('active' + IntToStr(f) + '=', chr(13), CharsFileString));
players[f].Boolean1 := StrToBool(Between('boolean1' + IntToStr(f) + '=', chr(13), CharsFileString));
players[f].Boolean2 := StrToBool(Between('boolean2' + IntToStr(f) + '=', chr(13), CharsFileString));
players[f].Boolean3 := StrToBool(Between('boolean3' + IntToStr(f) + '=', chr(13), CharsFileString));
fletchstring[f] := Between('fletchstring' + IntToStr(f) + '=', chr(13), CharsFileString);
//Writeln('Loading Player: '+IntToStr(f));
end;
CloseFile(CharsFile);
end;
{ ---------------------------------------------------------------------------- ]
[ >> Changes Options Depending on Skill Chosen ]
[ ---------------------------------------------------------------------------- }
Procedure String1Change(Sender: TObject);
Begin
Case Lowercase(String1ComboBox.Text) of
'woodcutting': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Tree');
String2ComboBox.Items.Add('Oak');
String2ComboBox.Items.Add('Willow');
String2ComboBox.Items.Add('Maple');
String2ComboBox.Items.Add('Yew');
String2ComboBox.Items.Add('Magic');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'mining': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Tin');
String2ComboBox.Items.Add('Copper');
String2ComboBox.Items.Add('Iron');
String2ComboBox.Items.Add('Coal');
String2ComboBox.Items.Add('Mith');
String2ComboBox.Items.Add('Gold');
String2ComboBox.Items.Add('Silver');
String2ComboBox.Items.Add('Addy');
String2ComboBox.Items.Add('Rune');
MiningSecsLabel.Visible := True
MiningSecsEdit.Visible := True;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := True;
end;
'bone burying':Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Bones');
String2ComboBox.Items.Add('Big bones');
MiningSecsLabel.Visible := False;
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := True;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'fishing' : Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('SmallNet');
String2ComboBox.Items.Add('Cage');
String2ComboBox.Items.Add('Harpoon');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'fletching': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Logs --> (U) Shortbow');
String2ComboBox.Items.Add('Logs --> (U) Longbow');
String2ComboBox.Items.Add('(U) Shortbow --> (S) Shortbow');
String2ComboBox.Items.Add('(U) Longbow --> (S) Longbow');
String2ComboBox.Items.Add('Logs --> (S) Shortbow');
String2ComboBox.Items.Add('Logs --> (S) Longbow');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := True;
GemsCheckBox.Visible := False;
end;
'' : Begin
String2ComboBox.Clear;
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
Else String2ComboBox.Clear;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Changes Options Depending on Skill Chosen Again ]
[ ---------------------------------------------------------------------------- }
Procedure String1Change2;
Begin
Case Lowercase(Players[CurrentPlayer].String1) of
'woodcutting': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Tree');
String2ComboBox.Items.Add('Oak');
String2ComboBox.Items.Add('Willow');
String2ComboBox.Items.Add('Maple');
String2ComboBox.Items.Add('Yew');
String2ComboBox.Items.Add('Magic');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'mining': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Tin');
String2ComboBox.Items.Add('Copper');
String2ComboBox.Items.Add('Iron');
String2ComboBox.Items.Add('Coal');
String2ComboBox.Items.Add('Mith');
String2ComboBox.Items.Add('Gold');
String2ComboBox.Items.Add('Silver');
String2ComboBox.Items.Add('Addy');
String2ComboBox.Items.Add('Rune');
MiningSecsLabel.Visible := True
MiningSecsEdit.Visible := True;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := True;
end;
'bone burying':Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Bones');
String2ComboBox.Items.Add('Big bones');
MiningSecsLabel.Visible := False;
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := True;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'fishing' : Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('SmallNet');
String2ComboBox.Items.Add('Cage');
String2ComboBox.Items.Add('Harpoon');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
'fletching': Begin
String2ComboBox.Clear;
String2ComboBox.Items.Add('Logs --> (U) Shortbow');
String2ComboBox.Items.Add('Logs --> (U) Longbow');
String2ComboBox.Items.Add('(U) Shortbow --> (S) Shortbow');
String2ComboBox.Items.Add('(U) Longbow --> (S) Longbow');
String2ComboBox.Items.Add('Logs --> (S) Shortbow');
String2ComboBox.Items.Add('Logs --> (S) Longbow');
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := True;
GemsCheckBox.Visible := False;
end;
'' : Begin
String2ComboBox.Clear;
MiningSecsLabel.Visible := False
MiningSecsEdit.Visible := False;
BankCheckBox.Visible := False;
FletchComboBox.Visible := False;
GemsCheckBox.Visible := False;
end;
Else String2ComboBox.Clear;
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Adds a New User to The Player Array ]
[ ---------------------------------------------------------------------------- }
Procedure CreateNewUser(sender: Tobject);
var
n : integer;
begin
SavePlayersInForm;
n := GetArrayLength(Players);
SetArrayLength(Players, n + 1)
SetArrayLength(FletchString, n + 1)
CurrentPlayer := n;
//WriteLn('Players: ' + IntToStr(GetArrayLength(Players)) + ' | Current: ' + IntToStr(CurrentPlayer));
UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
LoadPlayersInForm;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Deletes a Player from the Player Array ]
[ ---------------------------------------------------------------------------- }
Procedure DeleteAPlayer(sender: tobject);
var
n : integer;
Begin
n := GetArrayLength(Players);
if (n < 2) then Exit;
SetArrayLength(players, n - 1);
SetArrayLength(FletchString, n - 1);
CurrentPlayer := n - 2;
//WriteLn('Players: ' + IntToStr(GetArrayLength(Players)) + ' | Current: ' + IntToStr(CurrentPlayer));
UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
LoadPlayersInForm;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Goes to Next Player in the Player Array ]
[ ---------------------------------------------------------------------------- }
Procedure PressNextButton(sender: TObject);
begin
try
players[currentplayer + 1].name := players[currentplayer + 1].name
except
Exit;
end
SavePlayersInForm;
CurrentPlayer := CurrentPlayer + 1;
UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
String1Change2;
LoadPlayersInForm;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Goes to Previous Player in the Player Array ]
[ ---------------------------------------------------------------------------- }
Procedure PressBackButton(sender: tobject);
begin
if (CurrentPlayer <> 0) then
begin
SavePlayersInForm;
CurrentPlayer := CurrentPlayer - 1;
UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
String1Change2;
LoadPlayersInForm;
end
end;
{ ---------------------------------------------------------------------------- ]
[ >> Saves Options when the Form closes ]
[ ---------------------------------------------------------------------------- }
procedure FormClose2(sender: TObject; var CanClose: Boolean);
begin
SavePlayersInForm;
SaveUs2;
HowManyPlayers := GetArrayLength(players);
CanClose := True
end;
{ ---------------------------------------------------------------------------- ]
[ >> Makes Labels Visible or Invisible Depending on the Options Chosen ]
[ ---------------------------------------------------------------------------- }
procedure ChangeLabels(sender: TObject);
begin
If (ColorCheckBox.Checked) then
Begin
ColorsLabel.Visible := True;
ColorsEdit.Visible := True;
end else
Begin
ColorsLabel.Visible := False;
ColorsEdit.Visible := False;
Players[CurrentPlayer].Integer1 := 0;
ColorsEdit.Text := '0';
end;
end;
{ ---------------------------------------------------------------------------- ]
[ >> Closes the Form and Starts the Script ]
[ ---------------------------------------------------------------------------- }
Procedure StartClicked(Sender: TObject);
var
v: TVariantArray;
begin
SetArrayLength ( V, 0);
frmDesign.ModalResult:= mrOk;
StartScript := True;
SavePlayersInForm;
SaveUs2;
HowManyPlayers := GetArrayLength(Players);
//Writeln(IntToStr(HowManyPlayers));
end;
{ ---------------------------------------------------------------------------- ]
[ >> Opens the Donations Page. DOnation are always Appreciated! ]
[ ---------------------------------------------------------------------------- }
Procedure DonateClicked(Sender: TObject);
begin
OpenWebPage('https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=starblaster100%40gmail'+
'%2ecom&item_name=Starblaster100s%20SCAR%20Scripts&no_shipping=1&no_note=1&tax=0&'+
'currency_code=GBP&lc=GB&bn=PP%2dDonationsBF&charset=UTF%2d8');
For x := 0 to 7 do
Writeln(' --> Thank You! <-- ');
end;
{ ---------------------------------------------------------------------------- ]
[ >> Displays the Main Form for the First Time ]
[ ---------------------------------------------------------------------------- }
Procedure InitForm;
Begin
LoadUs2;
frmDesign := CreateForm;
frmDesign.Position := poDesktopCenter;
frmDesign.Width := 313;
frmDesign.Height := 285;
frmDesign.Caption := 'PowerSkills by Starblaster100';
frmDesign.Color := clInactiveCaption;
frmDesign.Font.Color := clWindowText;
frmDesign.Font.Height := -11;
frmDesign.Font.Name := 'MS Sans Serif';
frmDesign.Font.Style := [];
frmDesign.Visible := False;
frmDesign.PixelsPerInch := 96;
frmDesign.OnCloseQuery := @FormClose2;
TitleLabel := TLabel.Create(frmDesign);
TitleLabel.Parent := frmDesign;
TitleLabel.Left := 28;
TitleLabel.Top := 10;
TitleLabel.Width := 277;
TitleLabel.Height := 20;
TitleLabel.Caption := 'PowerSkills by Starblaster100';
TitleLabel.Font.Color := clWindowText;
TitleLabel.Font.Height := -17;
TitleLabel.Font.Name := 'MS Sans Serif';
TitleLabel.Font.Style := [fsBold, fsUnderline];
TitleLabel.ParentFont := False;
CreatePlayerButton := TButton.Create(frmDesign);
CreatePlayerButton.Parent := frmDesign;
CreatePlayerButton.Left := 60;
CreatePlayerButton.Top := 35;
CreatePlayerButton.Width := 83;
CreatePlayerButton.Height := 29;
CreatePlayerButton.Hint := 'Click to Create a New Player';
CreatePlayerButton.Caption := 'Create Player';
CreatePlayerButton.ParentShowHint := False;
CreatePlayerButton.ShowHint := True;
CreatePlayerButton.TabOrder := 13;
CreatePlayerButton.OnClick := @CreateNewUser;
DeletePlayerButton := TButton.Create(frmDesign);
DeletePlayerButton.Parent := frmDesign;
DeletePlayerButton.Left := 150;
DeletePlayerButton.Top := 35;
DeletePlayerButton.Width := 83;
DeletePlayerButton.Height := 29;
DeletePlayerButton.Hint := 'Click to Delete the Current Player';
DeletePlayerButton.Caption := 'Delete Player';
DeletePlayerButton.ParentShowHint := False;
DeletePlayerButton.ShowHint := True;
DeletePlayerButton.TabOrder := 13;
DeletePlayerButton.OnClick := @DeleteAPlayer;
LeftButton := TButton.Create(frmDesign);
LeftButton.Parent := frmDesign;
LeftButton.Left := 15;
LeftButton.Top := 35;
LeftButton.Width := 38;
LeftButton.Height := 29;
LeftButton.Hint := 'Click to go to the Previous Player';
LeftButton.Caption := '<---';
LeftButton.ParentShowHint := False;
LeftButton.ShowHint := True;
LeftButton.TabOrder := 13;
LeftButton.OnClick := @PressBackButton;
RightButton := TButton.Create(frmDesign);
RightButton.Parent := frmDesign;
RightButton.Left := 239;
RightButton.Top := 35;
RightButton.Width := 38;
RightButton.Height := 29;
RightButton.Hint := 'Click to go to the Next Player';
RightButton.Caption := '--->';
RightButton.ParentShowHint := False;
RightButton.ShowHint := True;
RightButton.TabOrder := 14;
RightButton.OnClick := @PressNextButton;
UsernameLabel := TLabel.Create(frmDesign);
UsernameLabel.Parent := frmDesign;
UsernameLabel.Left := 16;
UsernameLabel.Top := 73;
UsernameLabel.Width := 63;
UsernameLabel.Height := 16;
UsernameLabel.Font.Color := clWindowText;
UsernameLabel.Font.Height := -15;
UsernameLabel.Font.Name := 'MS Sans Serif';
UsernameLabel.Font.Style := [];
UsernameLabel.ParentFont := False;
UsernameLabel.Caption := '0. Username';
PasswordLabel := TLabel.Create(frmDesign);
PasswordLabel.Parent := frmDesign;
PasswordLabel.Left := 16;
PasswordLabel.Top := 96;
PasswordLabel.Width := 60;
PasswordLabel.Height := 16;
PasswordLabel.Font.Color := clWindowText;
PasswordLabel.Font.Height := -15;
PasswordLabel.Font.Name := 'MS Sans Serif';
PasswordLabel.Font.Style := [];
PasswordLabel.ParentFont := False;
PasswordLabel.Caption := '0. Password';
LampSkillLabel := TLabel.Create(frmDesign);
LampSkillLabel.Parent := frmDesign;
LampSkillLabel.Left := 16;
LampSkillLabel.Top := 120;
LampSkillLabel.Width := 62;
LampSkillLabel.Height := 16;
LampSkillLabel.Font.Color := clWindowText;
LampSkillLabel.Font.Height := -15;
LampSkillLabel.Font.Name := 'MS Sans Serif';
LampSkillLabel.Font.Style := [];
LampSkillLabel.ParentFont := False;
LampSkillLabel.Caption := '0. Lamp Skill';
TripsLabel := TLabel.Create(frmDesign);
TripsLabel.Parent := frmDesign;
TripsLabel.Left := 16;
TripsLabel.Top := 144;
TripsLabel.Width := 62;
TripsLabel.Height := 16;
TripsLabel.Font.Color := clWindowText;
TripsLabel.Font.Height := -15;
TripsLabel.Font.Name := 'MS Sans Serif';
TripsLabel.Font.Style := [];
TripsLabel.ParentFont := False;
TripsLabel.Caption := '0. Loads';
UsernameEdit := TEdit.Create(frmDesign);
UsernameEdit.Parent := frmDesign;
UsernameEdit.Left := 100;
UsernameEdit.Top := 71;
UsernameEdit.Width := 121;
UsernameEdit.Height := 21;
UsernameEdit.Hint := 'Type in your Username here';
UsernameEdit.ParentShowHint := False;
UsernameEdit.ShowHint := True;
UsernameEdit.TabOrder := 8;
UsernameEdit.Text := Players[0].Name;
PasswordEdit := TEdit.Create(frmDesign);
PasswordEdit.Parent := frmDesign;
PasswordEdit.Left := 100;
PasswordEdit.Top := 94;
PasswordEdit.Width := 121;
PasswordEdit.Height := 21;
PasswordEdit.Hint := 'Type in your Password here';
PasswordEdit.ParentShowHint := False;
PasswordEdit.PasswordChar := '*';
PasswordEdit.ShowHint := True;
PasswordEdit.TabOrder := 9;
PasswordEdit.Text := Players[0].Pass;
LampSkillComboBox := TComboBox.Create(frmDesign);
LampSkillComboBox.Parent := frmDesign;
LampSkillComboBox.Left := 100;
LampSkillComboBox.Top := 117;
LampSkillComboBox.Width := 121;
LampSkillComboBox.Height := 21;
LampSkillComboBox.Hint := 'Type in the Skill you want to use a Lamp on if Found';
LampSkillComboBox.ItemHeight := 13;
LampSkillComboBox.ParentShowHint := False;
LampSkillComboBox.ShowHint := True;
LampSkillComboBox.TabOrder := 10;
LampSkillComboBox.Text := Players[0].Skill;
LampSkillComboBox.Items.Add('Strength');
LampSkillComboBox.Items.Add('Attack');
LampSkillComboBox.Items.Add('Ranged');
LampSkillComboBox.Items.Add('Magic');
LampSkillComboBox.Items.Add('Defence');
LampSkillComboBox.Items.Add('Hitpoints');
LampSkillComboBox.Items.Add('Prayer');
LampSkillComboBox.Items.Add('Agility');
LampSkillComboBox.Items.Add('Herblore');
LampSkillComboBox.Items.Add('Thieving');
LampSkillComboBox.Items.Add('Crafting');
LampSkillComboBox.Items.Add('Runecrafting');
LampSkillComboBox.Items.Add('Slayer');
LampSkillComboBox.Items.Add('Farming');
LampSkillComboBox.Items.Add('Mining');
LampSkillComboBox.Items.Add('Smithing');
LampSkillComboBox.Items.Add('Fishing');
LampSkillComboBox.Items.Add('Cooking');
LampSkillComboBox.Items.Add('Firemaking');
LampSkillComboBox.Items.Add('Woodcutting');
LampSkillComboBox.Items.Add('Fletching');
LampSkillComboBox.Items.Add('Construction');
LampSkillComboBox.Items.Add('Hunting');
LoadsEdit := TEdit.Create(frmDesign);
LoadsEdit.Parent := frmDesign;
LoadsEdit.Left := 100;
LoadsEdit.Top := 140;
LoadsEdit.Width := 121;
LoadsEdit.Height := 21;
LoadsEdit.Hint := 'Type in how many Loads to PowerSkill before Switching Char.';
LoadsEdit.ParentShowHint := False;
LoadsEdit.ShowHint := True;
LoadsEdit.TabOrder := 10;
LoadsEdit.Text := IntToStr(Players[0].Integer2);
IsActive := TCheckBox.Create(frmDesign);
IsActive.Parent := frmDesign;
IsActive.Left := 225;
IsActive.Top := 71;
IsActive.Width := 53;
IsActive.Height := 20;
IsActive.Caption := 'Active?';
IsActive.ParentShowHint := False;
IsActive.ShowHint := True;
IsActive.Hint := 'Should this Player be Active?';
IsActive.Checked := Players[0].Active;
ColorCheckBox := TCheckBox.Create(frmDesign);
ColorCheckBox.Parent := frmDesign;
ColorCheckBox.Left := 225;
ColorCheckBox.Top := 94;
ColorCheckBox.Width := 53;
ColorCheckBox.Height := 20;
ColorCheckBox.Caption := 'Colors?';
ColorCheckBox.ParentShowHint := False;
ColorCheckBox.ShowHint := True;
ColorCheckBox.Hint := 'Do you want to pick Your Own Colors?';
ColorCheckBox.Checked := Players[0].Boolean1;
ColorCheckBox.OnClick := @ChangeLabels;
String1ComboBox := TComboBox.Create(frmDesign);
String1ComboBox.Parent := frmDesign;
String1ComboBox.Left := 10;
String1ComboBox.Top := 165;
String1ComboBox.Width := 80;
String1ComboBox.Height := 21;
String1ComboBox.Hint := 'Select the Skill to Power Auto';
String1ComboBox.ItemHeight := 13;
String1ComboBox.ParentShowHint := False;
String1ComboBox.ShowHint := True;
String1ComboBox.TabOrder := 11;
String1ComboBox.Text := Players[0].String1;
String1ComboBox.Items.Add('Woodcutting');
String1ComboBox.Items.Add('Mining');
String1ComboBox.Items.Add('Fishing');
String1ComboBox.Items.Add('Bone Burying');
String1ComboBox.Items.Add('Fletching');
String1ComboBox.OnChange := @String1Change;
String2ComboBox := TComboBox.Create(frmDesign);
String2ComboBox.Parent := frmDesign;
String2ComboBox.Left := 95;
String2ComboBox.Top := 165;
String2ComboBox.Width := 120;
String2ComboBox.Height := 21;
String2ComboBox.Hint := 'Select the Specific thing to Power Auto';
String2ComboBox.ItemHeight := 13;
String2ComboBox.ParentShowHint := False;
String2ComboBox.ShowHint := True;
String2ComboBox.TabOrder := 12;
String2ComboBox.Text := Players[0].String2;
String2ComboBox.OnDropDown := @String1Change;
String3ComboBox := TComboBox.Create(frmDesign);
String3ComboBox.Parent := frmDesign;
String3ComboBox.Left := 220;
String3ComboBox.Top := 165;
String3ComboBox.Width := 70;
String3ComboBox.Height := 21;
String3ComboBox.Hint := 'Select the Direction to Run in if we are Attacked';
String3ComboBox.ItemHeight := 13;
String3ComboBox.ParentShowHint := False;
String3ComboBox.ShowHint := True;
String3ComboBox.TabOrder := 12;
String3ComboBox.Items.Add('N');
String3ComboBox.Items.Add('E');
String3ComboBox.Items.Add('S');
String3ComboBox.Items.Add('W');
String3ComboBox.Text := Players[0].String3;
GemsCheckBox := TCheckBox.Create(frmDesign);
GemsCheckBox.Parent := frmDesign;
GemsCheckBox.Left := 225;
GemsCheckBox.Top := 117;
GemsCheckBox.Width := 78;
GemsCheckBox.Height := 20;
GemsCheckBox.Caption := 'Save Gems?';
GemsCheckBox.ParentShowHint := False;
GemsCheckBox.ShowHint := True;
GemsCheckBox.Hint := 'Do you want to save the Gems you Mine?';
GemsCheckBox.Checked := Players[0].Boolean3;
If (String1ComboBox.Text = 'Mining') then
GemsCheckBox.Visible := True
else
GemsCheckBox.Visible := False;
FletchComboBox := TComboBox.Create(frmDesign);
FletchComboBox.Parent := frmDesign;
FletchComboBox.Left := 182;
FletchComboBox.Top := 193;
FletchComboBox.Width := 100;
FletchComboBox.Height := 21;
FletchComboBox.Hint := 'Select What Type of Log the Item is';
FletchComboBox.ItemHeight := 13;
FletchComboBox.ParentShowHint := False;
FletchComboBox.ShowHint := True;
FletchComboBox.TabOrder := 12;
FletchComboBox.Items.Add('Normal');
FletchComboBox.Items.Add('Oak');
FletchComboBox.Items.Add('Willow');
FletchComboBox.Items.Add('Maple');
FletchComboBox.Items.Add('Yew');
FletchComboBox.Items.Add('Magic');
FletchComboBox.Text := FletchString[0];
If (String1ComboBox.Text = 'Fletching') then
FletchComboBox.Visible := True
else
FletchComboBox.Visible := False;
ColorsLabel := TLabel.Create(frmDesign);
ColorsLabel.Parent := frmDesign;
ColorsLabel.Left := 10;
ColorsLabel.Top := 194;
ColorsLabel.Width := 80;
ColorsLabel.Height := 12;
ColorsLabel.Font.Color := clWindowText;
ColorsLabel.Font.Height := -12;
ColorsLabel.Font.Name := 'MS Sans Serif';
ColorsLabel.Font.Style := [];
ColorsLabel.ParentFont := False;
ColorsLabel.Caption := 'Picked Color:';
If (ColorCheckBox.Checked) then
ColorsLabel.Visible := True
else
ColorsLabel.Visible := False;
ColorsEdit := TEdit.Create(frmDesign);
ColorsEdit.Parent := frmDesign;
ColorsEdit.Left := 77;
ColorsEdit.Top := 191;
ColorsEdit.Width := 80;
ColorsEdit.Height := 21;
ColorsEdit.Hint := 'Put in the Color of the Item you are Autoing. Leave as 0 for AutoPick';
ColorsEdit.ParentShowHint := False;
ColorsEdit.ShowHint := True;
ColorsEdit.TabOrder := 8;
ColorsEdit.Text := IntToStr(Players[0].Integer1);
If (ColorCheckBox.Checked) then
ColorsEdit.Visible := True
else
ColorsEdit.Visible := False;
MiningSecsLabel := TLabel.Create(frmDesign);
MiningSecsLabel.Parent := frmDesign;
MiningSecsLabel.Left := 162;
MiningSecsLabel.Top := 194;
MiningSecsLabel.Width := 80;
MiningSecsLabel.Height := 12;
MiningSecsLabel.Font.Color := clWindowText;
MiningSecsLabel.Font.Height := -12;
MiningSecsLabel.Font.Name := 'MS Sans Serif';
MiningSecsLabel.Font.Style := [];
MiningSecsLabel.ParentFont := False;
MiningSecsLabel.Caption := 'Seconds:';
If (String1ComboBox.Text = 'Mining') then
MiningSecsLabel.Visible := True
else
MiningSecsLabel.Visible := False;
MiningSecsEdit := TEdit.Create(frmDesign);
MiningSecsEdit.Parent := frmDesign;
MiningSecsEdit.Left := 210;
MiningSecsEdit.Top := 191;
MiningSecsEdit.Width := 80;
MiningSecsEdit.Height := 21;
MiningSecsEdit.Hint := 'Number of Seconds you are willing to Wait for a rock to Mine before Clicking Again';
MiningSecsEdit.ParentShowHint := False;
MiningSecsEdit.ShowHint := True;
MiningSecsEdit.TabOrder := 8;
MiningSecsEdit.Text := IntToStr(Players[0].Integer3);
If (String1ComboBox.Text = 'Mining') then
MiningSecsEdit.Visible := True
else
MiningSecsEdit.Visible := False;
BankCheckBox := TCheckBox.Create(frmDesign);
BankCheckBox.Parent := frmDesign;
BankCheckBox.Left := 164;
BankCheckBox.Top := 192;
BankCheckBox.Width := 125;
BankCheckBox.Height := 20;
BankCheckBox.Caption := 'Withdraw From Bank?';
BankCheckBox.ParentShowHint := False;
BankCheckBox.ShowHint := True;
BankCheckBox.Hint := 'Click to Withdraw Bones from Bank and Bury. Otherwise it will pick up from Floor';
BankCheckBox.Checked := Players[0].Boolean2;
If (String1ComboBox.Text = 'Bone Burying') then
BankCheckBox.Visible := True
else
BankCheckBox.Visible := False;
StartButton := TButton.Create(frmDesign);
StartButton.Parent := frmDesign;
StartButton.Left := 60;
StartButton.Top := 220;
StartButton.Width := 75;
StartButton.Height := 25;
StartButton.Hint := 'Click to Start the Script';
StartButton.Caption := 'Start Script';
StartButton.ParentShowHint := False;
StartButton.ShowHint := True;
StartButton.TabOrder := 15;
StartButton.OnClick := @StartClicked;
DonateButton := TButton.Create(frmDesign);
DonateButton.Parent := frmDesign;
DonateButton.Left := 150;
DonateButton.Top := 220;
DonateButton.Width := 75;
DonateButton.Height := 25;
DonateButton.Hint := 'Donations are always Appreciated!';
DonateButton.Caption := 'Donate!';
DonateButton.ParentShowHint := False;
DonateButton.ShowHint := True;
DonateButton.TabOrder := 15;
DonateButton.OnClick := @DonateClicked;
end;
{ ---------------------------------------------------------------------------- ]
[ >> The Main Loop ]
[ >> Pretty Self Explanitory ;-) ]
[ ---------------------------------------------------------------------------- }
Begin
SetupSRL;
SetupSRLMining;
SetupSRLFishing;
ScriptID := '67';
CheckVersion;
WriteNews;
Intro;
try
SafeInitForm;
SafeShowFormModal;
except
Writeln('Error in InitForm!');
finally
FreeForm(frmDesign);
end;
If not(StartScript) then TerminateScript;
BenMouse := False;
ActivateClient;
Wait(200 + Random(300));
GenerateNickNames;
LoadDTMsandBitmaps;
Repeat
NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
If not(Loggedin)then LoginPlayer;
GetAllLevels;
Report2 := GetSystemTime;
Status('Preparing Character');
GameTab(4);
Case Lowercase(Players[CurrentPlayer].String1) of
'woodcutting' : Begin
FindAxeHeadColor;
AutoTreeColor(Players[CurrentPlayer].String2);
end;
'mining' : Begin
FindPickHeadColor;
AutoRockColor;
end;
'fishing' : Begin
FIC := FindFishingEquipmentColor(Players[CurrentPlayer].String2);
If (FIC <= 0) then
Begin
Players[CurrentPlayer].Loc := 'No Fishing Equipment Found!';
Players[CurrentPlayer].Active := False;
Logout;
end;
end;
'bone burying': Wait(1);
'fletching' : If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 2) = 'lo') then
Begin
GameTab(4);
If not(FindDTM(DTMFletching[2], x, y, MIX1, MIY1, MIX2, MIY2))then
Begin
Players[CurrentPlayer].Loc := 'No Knife Found!';
Players[CurrentPlayer].Active := False;
Logout;
end;
end;
else Begin Writeln('Error in Main Loop 1!'); TerminateScript; end;
end;
Repeat
Repeat
If not(LoggedIn) then Break;
Case Lowercase(Players[CurrentPlayer].String1) of
'woodcutting' : Chopping;
'mining' : MineRock(Players[CurrentPlayer].Integer3);
'fishing' : DoFishing;
'bone burying': If (GrabBones(Players[CurrentPlayer].Boolean2)) then Break;
'fletching' : If GrabForFletching then Break;
else Begin Writeln('Error in Main Loop 2!'); TerminateScript; end;
end;
Wait(100);
Until(InventoryCount >= 28) or not (LoggedIn)
Case Lowercase(Players[CurrentPlayer].String1) of
'woodcutting' : Drop(DTMLog);
'mining' : If (Players[CurrentPlayer].Boolean3 = False) then
begin
Drop(DTMMining[1]); //For some reason the "for do" loop doesn't work here :(
Drop(DTMMining[2]);
end else
Drop(DTMMining[1]);
'fishing' : begin
Drop(DTMFishing[1]);
Drop(DTMFishing[2]);
Drop(DTMFishing[3]);
Drop(DTMFishing[4]);
Drop(DTMFishing[5]);
Drop(DTMFishing[6]);
Drop(DTMFishing[7]);
end;
'bone burying': BuryBones(Players[CurrentPlayer].String2);
'fletching' : Fletch;
else Begin Writeln('Error in Main Loop 3!'); TerminateScript; end;
end;
Players[CurrentPlayer].Extended1 := Players[CurrentPlayer].Extended1 + 1;
Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
SendPSStats(Players[CurrentPlayer].String1);
until(Players[CurrentPlayer].Extended1 >= Players[CurrentPlayer].Integer2)or not(LoggedIn)
ProgressReport(True);
SRLRandomsReport;
Players[CurrentPlayer].Extended1 := 0;
FreeBitmap(NickNameBMP);
NextPlayer(LoggedIn)
Until(False)
end.
SCAR Code:
{.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' /\ '
' P \ ASCii Created by Aki '
' ### \ * and Starblaster100 '
' OOAOO \ __ * '
' ### \##/ / / * '
' AOA \ _AA ___ * '
' ### \ / ##/ /| ______ __ ____ _________ _________ '
' ### \OO##OOO |/ /| / /|___ / /|/ /|/ /| '
' _/AOA/AA##AAA/ OOAAOO | ##/ /| #### |###aAa### |aAa###aAa | '
' ## \### OO |__ AAOOAA |_ ###OOO/ #OA# |###OAO### |###OAO### | '
' OOAOO OO/ /|##/ ##/ /|OOAA #AO# |###AOA### |###AOA### | '
' ### ##AA# |AAOOAA## |AA | #OA# |#O# | #O# |#O# | #O# | '
' P ##OO#/ OOAAOO##/ AA/ #### |#A# | #A# |#A# | #A# | '
' ______ #OA# |#O# | #O# |#O# | #O# | '
' / /\ #AO# |#A# | #A# |#A# | #A# | '
' ###O### \ * #### __ | #O# |#O# |_#O# | '
' OOA#AOOO \ ______ / /| | #A# |#A#/ #A# | '
' AA |_AAAA/ ___ * / /| _AA |__ ### |######### | '
' OO/ OOO / /| ______ ##AO##/ / ##/ /|###____####__ / '
' #######\ ### | / /| AO |___ OO##OOO | / /\ / /____ '
' ####### \ #A# | OOAAOO | OA/ /|AA##AAA/ /OAAO /| ##/ /|'
' OO |_OOO \ #O# |__ AAOOAA |_ ##OA## | OO |__ O# |#O | ###OOO/ '
' AA/ AAAA/ #A#/ /|##/ ##/ /| ___AO | OO/ /| O#/ #O/_ OOAA/ '
' OOA#AOOO #O##O# |OOAAOO## |/ OA | ##AA# | A##A/ /|AA | '
' ###O### ####O#/ OOAAOO##/ ##AO##/ ##OO#/ ####/ AA/ '
' '
' * > [ Productions Presents ] < * '
[.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
_____ ' ' _____
| ----' ULTIMATE POWER CHOPPER '----|
| __/ ' ' | o |
<====|___ |====' Will Cut Specified Trees until '====| _/====>
/ | ' You stop the script ' | o
_____|----' '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' > [ INSTRUCTIONS ] < '
' '
' = Have all the correct includes '
_____ ' = Start next to the trees ' _____
| ----' = No Good items incase of Death '----|
| __/ ' (Except Axe) ' | o |
<====|___ |====' = Axes MUST be UNWIELDED '====| _/====>
/ | ' = Have as many axes as you want ' | o
_____|----' in your Inventory '----|_____/
' = Hit start and fill in the setup'
' = Sit back and Watch ;-) '
' '
_____ [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.] _____
| ----' > [ CONTACT INFO: ] < '----|
| __/ ' [email]Starblaster100@gmail.com[/email] ' | o |
<====|___ |====' '====| _/====>
/ | ' PM Starblaster100 at: ' | o
_____|----' RuneSC,Kaiteniks,Scriptdump,RSCN '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' I am not Held Responsible if any '
' of your Characters get Banned '
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.}
Program StarChopper;
{.include SSI2.txt}
{.include Boxbreaker.txt}
{.include RedXIIsFordCracker.txt}
Var
Chopped,TreeColor,report,report2,logintime2,loginrandom2,logouttime2,logoutrandom2:integer;
useantiban,Rrotates,Llogsout,results,Found:boolean;
lampskill,rundirection,TreeName:String;
anti,LI,RLoged,AttachCount:LongInt;
Drop,DropY,c,e,TreeXP:integer;
AxeHandle,EntCount:longint;
Head,Head2,Head3:longint;
m,n,rx,ry:integer;
//---- Form ----\\
FrmDesign : TForm;
Label1,Label2,Usernamelabel,Passwordlabel,Antibanlabel,Logintimelabel,Randomlogintimelabel,Logouttimelabel,Randomlogouttimelabel:TLabel;
TreeColoredit, Reporttimeedit, Logintime, Randomlogintime, Logouttime, Randomlogouttime, Usernamedit, passwordedit : TEdit;
RunDirectioncombo, LampSkillcombo, TreeNameCombo : TComboBox;
Antibancheck, Logouts, Ratates : TCheckBox;
Donate, StartButton : TButton;
StartScript : Boolean;
procedure log(why:string); {Created by Starblaster100}
var m,logcounter:integer;
begin
status('Logging out: '+why);
logcounter:=0;
wait(300);
mouse(646,484,4,4,true);
wait(500 + random(500));
repeat
logcounter:=logcounter+1;
Status('Trying to Log out: '+inttostr(logcounter)+'/5');
mouse(641,376,10,4,true);
for M:=0 to 30+random(10) do begin
Wait(100);
if(IsTextAt2(309,241,'Welcome to RuneScape',100))or
(IsTextAt2(293,251,'Username',100))then break;
end;
until(IsTextAt2(309,241,'Welcome to RuneScape',100))or
(IsTextAt2(293,251,'Username',100))or(logcounter>=5);
writeln('');
Writeln('Logged out: '+why);
end;
procedure AxeColor;
begin
GameTab(4);
wait(100 + random(200));
Mmouse(587,219,0,0);
wait(100 + random(100));
If(Option('Wield'))then
Begin
Head := GetColor(590,220);
Head2 := GetColor(587, 219);
Head3 := GetColor(588, 218);
writeln('Axe head colors: ' +inttostr(Head)+ ' '+inttostr(Head2)+ ' ' +inttostr(Head3));
end else
Begin
Writeln('Axe not found');
Terminatescript;
end;
end;
Procedure DropHandle;
begin
Gametab(4);
if not(GetColor(590,220)=Head)or
not(GetColor(587, 219)=Head2)or
not(GetColor(588, 218)=Head3)then
begin
Status('Dropping Handle');
mouse(582,227,1,1,false);
wait(500 + random(500));
if(findbitmap(Drop,x,y))or(findbitmap(DropY,x,y))then
begin
mouse(x,y,1,1,true);
wait(700 + random(500));
Status('Finding New Axe');
end else mmouse(10,10,50,50);
For n:=1 to 4 do begin
rx:=544+(n*42)
mmouse(rx,225,0,0);
wait(100 + random(100));
if(option('Wield'))then
begin
getmousepos(x,y);
holdmouse(x,y,true);
wait(200 + random(200));
mmouse(583,223,0,0);
wait(200 + random(200));
releasemouse(x,y,true);
wait(500 + random(500));
AxeColor;
break;
end;
if(n>=4)then
begin
Log('No Axes Found');
terminatescript;
end;
end;
end;
end;
procedure Attach; {Created by Liquid from Kaitnieks}
begin
GameTab(4);
writeln('Attatching 1/2');
if(FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))and
(FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,745,465,100))then
begin
writeln('Attaching 2/2');
if(FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))then
Begin
Mouse(x, y, 3, 3, True);
wait(600+random(400));
end;
if(FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,745,465,50))then
Begin
Mouse(x, y, 3, 3, True);
wait(500+random(200));
AttachCount:=AttachCount+1;
writeln('Attached Axe Head!');
end;
end else Writeln('Not Attached');
end;
procedure FindHead; {Created by Liquid from Kaitnieks}
var
tries, x, y:integer;
Begin
if not(GetColor(590,220)=Head)or
not(GetColor(587,219)=Head2)or
not(GetColor(588,218)=Head3)then
begin
tries:=1;
repeat
if not(FindObj('Take',Head,5)) or
not(FindObj('Take',Head2,5)) or
not(FindObj('Take',Head3,5)) then
begin
writeln('Axe head not found. Taken '+inttostr(tries)+' tries.');
status('Axe head not found moving to red dot');
x := 648;
y := 83;
tries:= tries + 1;
FindColorSpiral(x, y, 241, 570, 5, 725, 155);
Mouse(x+3,y+3,2,2,true);
Flag;
wait(200 + random(100));
end;
if(FindObj('Take',Head,5))or
(FindObj('Take',Head2,5)) or
(FindObj('Take',Head3,5)) then
begin
status('Found Axe Head');
writeln('Axe head was found. Picking it up');
wait(450 + random(400));
Getmousepos(x,y);
Mouse(x,y,0,0,True);
flag;
wait(500 + random(300));
end;
until(FindObj('Take',Head,5)) or
(FindObj('Take',Head2,5)) or
(FindObj('Take',Head3,5)) or (tries>9) or
(FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))
if(tries>9)then
begin
writeln('Axe head was not found. Taking New Axe');
DropHandle;
end else
Attach;
end;
end;
procedure AntiBan2; {Created by CanadaRules}
begin
END;
procedure FindRandoms;
begin
GameTab(4);
if(LLogsOut)then
LogOutEvery(2,5+random(5));
if(RRotates)then
RotateEvery(20+random(10));
LeaveScreenEvery(5+random(5));
if(FindFight)then
begin
RunAwayDirection(RunDirection);
Wait(5000+random(1000));
RunBack;
end;
Gametab(4);
FindHead;
FindAxe;
FindTalk;
FindDoctorFord;
FindBox;
FindMiscRandoms;
FindLamp(Lampskill);
AntiBan2;
end;
Procedure PrintProgressReport;
var
RHours,Minutes,Seconds,RMinutes,RSeconds:LongInt;
Time:String;
Begin
if(GetSystemTime-report2 > report*60000)then
Begin
Seconds:=(GetSystemTime-ST) div 1000;
Minutes:=Seconds div 60;
RHours:=Minutes div 60;
Time:=inttostr(Seconds)+' Seconds';
if Minutes<>0 then
begin
RSeconds:=Seconds Mod (Minutes*60);
Time:=inttostr(Minutes)+' Minutes and '+inttostr(RSeconds)+' Seconds';
end;
if RHours<>0 then
begin
RMinutes:=Minutes Mod (RHours*60);
RSeconds:=Seconds Mod (Minutes*60);
Time:=inttostr(RHours)+' Hours, '+inttostr(RMinutes)+' Minutes and '
+inttostr(RSeconds)+' Seconds';
end;
begin
status('Progress Report:');
writeln('');
writeln('<------====== Starblaster100s Powercutter ======------>');
writeln('Progress Report:');
writeln('Worked for '+Time);
writeln('Cutting '+TreeName+' Trees');
writeln('Chopped about '+InttoStr(Chopped)+' Logs');
if not(TreeName='All')then writeln('Gained Approx. '+(inttoStr(TreeXP*Chopped))+' Exp');
writeln('AntiRandom Report:');
if(EntCount>0)then writeln(' Found '+IntToStr(EntCount)+' Ents');
if(attachcount>0)then writeln(' Attached head '+InttoStr(attachcount)+' Times');
if(fights>0)then writeln(' Fought '+inttostr(fights)+' time[s].');
if(talks>0)then writeln(' Talked to '+inttostr(talks)+' random event[s].');
if(DrFords>0)then writeln(' Talked to Dr Ford '+IntToStr(DrFords)+' Times');
if(lamps>0)then writeln(' Used lamps '+inttostr(lamps)+' time[s].');
if(boxes>0)then writeln(' Solved '+inttostr(boxes)+' box[es].');
if(Rloged>0)then writeln(' Logged in '+inttostr(logs)+' time[s].');
Report2:=GetSystemTime;
end;
end;
End;
Procedure GetTreeType;
begin
if(TreeName='Tree')then //Normal
Begin TreeXP:=25; end;
If(TreeName='Oak')then //Oak
Begin TreeXP:=round(75/2); end;
if(TreeName='Willow')then //Willow
Begin TreeXP:=round(125/2); end;
If(TreeName='Maple')then //Maple
Begin TreeXP:=100; end;
If(TreeName='Mahogany')then//Mahogany
Begin TreeXP:=125; end;
if(TreeName='Yew')then //Yew
Begin TreeXP:=175; end;
If(TreeName='Magic')then //Magic
Begin TreeXP:=250; end;
end;
Procedure Standstill;
begin
Mouse(647,82,2,2,true);
wait(800 + random(400));
Mouse(647,82,2,2,true);
wait(3000 + random(2000));
end;
Procedure StartChopping;
begin
Status('Finding '+TreeName+' Trees');
repeat
If(findobj('Chop down '+TreeName,TreeColor,1))and(not FindColorTolerance(x,y,515029,1,1,180,39,20))And
not (findcolorspiraltolerance(x,y,65535,1,1,200,20,20)) then begin
mouse(x,y,0,0,true); flag;
results:=true
end;
until(results=true)
end;
procedure WaitWhilstChopping;
begin
repeat
c:=0;
E:=60+random(15);
repeat
c:=c+1;
status('Chopping '+TreeName+' Tree: '+intToStr(C)+'/'+IntToStr(E));
findrandoms;
if found then
exit;
wait(100);
if(FindColorTolerance(x,y,515029,1,1,180,39,20))or
(findcolorspiraltolerance(x,y,65535,1,1,200,40,20)) then begin
Writeln('Ent found');
EntCount:=EntCount+1;
SaveScreenshot('Ent Found');
standstill;
exit;
end;
until not(Option('Chop down '+TreeName))or(C>=E)or(InventoryCount>=28)
until (((getcolor(223,430)=0)and(getcolor(263,417)=0))) or not(Option('Chop down '+TreeName))or(C>=E)or(InventoryCount>=28);
end;
Procedure DropLogs;
begin
Status('Dropping Logs');
Chopped:=chopped+28;
Gametab(4)
begin
for M:=1 to 7 do begin
For n:=1 to 4 do begin
rx:=544+(n*42)
ry:=192+(m*36)
findrandoms;
mmouse(rx,ry,0,0); wait(200+random(100));
If(IsTextAt2(9,9,'Wield',100))then
begin chopped := Chopped - 1; end;
if not(IsTextAt2(9,9,'Wield',100))then
begin
getmousepos(x,y)
mouse(x,y,5,5,false); wait(100 + random(50));
if(Findbitmap(Drop,x,y))or(Findbitmap(DropY,x,y))then
begin
mouse(x,y+1,5,1,true);
wait(400 + random(450));
end else mmouse(233,123,50,50);
end;
end;
end;
end;
end;
Procedure Bitmaps;
begin
AxeHandle := BitmapFromString(4, 5,
'564D42000001000001544A3B000001694A08694A08000001000001' +
'694A082E2000000001000001694A08000001302020000001694A08' +
'000001302020');
Drop := BitmapFromString(28, 6, 'z78DA737343000324E04684382' +
'E35A4AA2446BD1BC5EEC46F23B5C4A965E6A83B87AE3B29497B94' +
'E42362DC00008F0FEAE5');
DropY := BitmapFromString(28, 6, 'z78DA737373733330700393C8' +
'C08D08715C6A4855498C7A378ADD89DF466A8953CBCC51770E5D7' +
'75292F628C947C4B8010058BBDB99');
end;
Procedure Madeby;
begin
Writeln('');
Writeln('');
Writeln('');
Writeln('<==================================>');
Writeln('| PowerCutter by Starblaster100 |');
Writeln('| Chops Specified Logs until Full |');
Writeln('| Inventory,and then Drops Logs |');
Writeln('<==================================>');
Writeln('');
end;
//---------======= Form Stuff =======---------\\
Procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;
procedure ShowFormModal;
begin
frmDesign.ShowModal;
end;
procedure SafeShowFormModal;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
Procedure SaveSets;
begin;
SaveSetting('StarChopper','Saved','true');
SaveSetting('StarChopper','Username',username);
SaveSetting('StarChopper','Password',Password);
SaveSetting('StarChopper','RunDirection',RunDirection);
SaveSetting('StarChopper','LampSkill',LampSkill);
if(Rrotates) then SaveSetting('StarChopper','RRotates','true') else SaveSetting('StarChopper','RRotates','false')
if(LLogsOut) then SaveSetting('StarChopper','LLogsout','true') else SaveSetting('StarChopper','LLogsout','false')
if(UseAntiBan) then SaveSetting('StarChopper','UseAntiBan','true') else SaveSetting('StarChopper','UseAntiBan','false')
if(UseAntiBan) then
begin;
SaveSetting('StarChopper','logintime2',inttostr(logintime2));
SaveSetting('StarChopper','loginrandom2',inttostr(loginrandom2));
SaveSetting('StarChopper','logouttime2',inttostr(logouttime2));
SaveSetting('StarChopper','logoutrandom2',inttostr(logoutrandom2));
end;
SaveSetting('StarChopper','TreeName',TreeName);
SaveSetting('StarChopper','Report',inttostr(Report));
SaveSetting('StarChopper','TreeColor',inttostr(TreeColor));
end;
Procedure LoadSets;
begin;
if(LoadSetting('StarChopper','Saved')='true') then begin
Username:=LoadSetting('StarChopper','Username');
Password:=LoadSetting('StarChopper','Password');
RunDirection:=LoadSetting('StarChopper','RunDirection');
LampSkill:=LoadSetting('StarChopper','LampSkill');
if(LoadSetting('StarChopper','RRotates')='true') then Rrotates:=true;
if(LoadSetting('StarChopper','LLogsout')='true') then Llogsout:=true;
if(LoadSetting('StarChopper','UseAntiBan')='true') then UseAntiBan:=true;
if(UseAntiBan) then
begin;
logintime2:=strtoint(LoadSetting('StarChopper','logintime2'));
loginrandom2:=strtoint(LoadSetting('StarChopper','loginrandom2'));
logouttime2:=strtoint(LoadSetting('StarChopper','logouttime2'));
logoutrandom2:=strtoint(LoadSetting('StarChopper','logoutrandom2'));
end;
TreeName:=LoadSetting('StarChopper','TreeName');
Report:=strtoint(LoadSetting('StarChopper','Report'));
TreeColor:=strtoint(LoadSetting('StarChopper','TreeColor'));
end;
end;
procedure Go(sender: TObject);
begin
frmDesign.Caption:= frmDesign.Caption + '.';
startscript:=True;
Username := Usernamedit.text;
Password := Passwordedit.text;
RunDirection := RunDirectioncombo.text;
LampSkill := LampSkillcombo.text;
TreeName := TreeNameCombo.text;
RRotates := Ratates.State;
LLogsout := Logouts.State;
UseAntiBan := Antibancheck.State;
If(UseAntiBan=true)then
begin
logintime2 := StrToInt(logintime.text);
loginrandom2 := StrToInt(Randomlogintime.text);
logouttime2 := StrToInt(Logouttime.text);
logoutrandom2 := StrToInt(Randomlogouttime.text);
end;
writeln('Username is '+Username);
Writeln('Password Protected for Security reasons');
If(TreeName='All')or(TreeName='Tree Type to Cut')then begin TreeName:=''; writeln('Cutting all trees'); end else writeln('Cutting '+TreeName)
If(LampSkill='LampSkill')then begin Lampskill := 'Attack'; Writeln('No Lampskill set - Using Default - Attack'); end else writeln('Lampskill is '+Lampskill);
If(RunDirection='RunDirection')then begin RunDirection:='N'; Writeln('No Run Direction set - Using Default - N'); end else writeln('Run Direction is '+RunDirection);
If(Reporttimeedit.text='')then begin Report:=1; end else Report := StrToInt(Reporttimeedit.text);
If(TreeColoredit.text='')then begin TreeColor := 0; writeln('No tree Color set'); terminatescript; end else TreeColor := StrToInt(TreeColoredit.text);
SaveSets;
frmDesign.ModalResult:= mrOk;
end;
procedure DonateLink(sender: TObject);
begin
OpenWebPage('https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=starblaster100%40gmail%2ecom&item_name=RS2%20Scripts&no_shipping=0&no_note=1&tax=0¤cy_code=GBP&bn=PP%2dDonationsBF&charset=UTF%2d8');
end;
Procedure InitForm;
begin
LoadSets;
FrmDesign := CreateForm;
FrmDesign.Left := 307;
FrmDesign.Top := 178;
FrmDesign.Width := 350;
FrmDesign.Height := 456;
FrmDesign.Caption := 'Starblaster100'#39's Ultimate Powercutter';
FrmDesign.Color := clBtnFace;
FrmDesign.Font.Color := clWindowText;
FrmDesign.Font.Height := -11;
FrmDesign.Font.Name := 'MS Sans Serif';
FrmDesign.Font.Style := [];
FrmDesign.Visible := False;
FrmDesign.PixelsPerInch := 96;
Usernamelabel := TLabel.Create(FrmDesign);
Usernamelabel.Parent := FrmDesign;
Usernamelabel.Left := 55;
Usernamelabel.Top := 23;
Usernamelabel.Width := 74;
Usernamelabel.Height := 20;
Usernamelabel.Caption := 'Username';
Usernamelabel.Font.Color := clWindowText;
Usernamelabel.Font.Height := -16;
Usernamelabel.Font.Name := 'MS Sans Serif';
Usernamelabel.Font.Style := [];
Usernamelabel.ParentFont := False;
Passwordlabel := TLabel.Create(FrmDesign);
Passwordlabel.Parent := FrmDesign;
Passwordlabel.Left := 57;
Passwordlabel.Top := 52;
Passwordlabel.Width := 69;
Passwordlabel.Height := 20;
Passwordlabel.Caption := 'Password';
Passwordlabel.Font.Color := clWindowText;
Passwordlabel.Font.Height := -16;
Passwordlabel.Font.Name := 'MS Sans Serif';
Passwordlabel.Font.Style := [];
Passwordlabel.ParentFont := False;
Antibanlabel := TLabel.Create(FrmDesign);
Antibanlabel.Parent := FrmDesign;
Antibanlabel.Left := 127;
Antibanlabel.Top := 178;
Antibanlabel.Width := 68;
Antibanlabel.Height := 13;
Antibanlabel.Caption := 'AntiBan Setup';
Logintimelabel := TLabel.Create(FrmDesign);
Logintimelabel.Parent := FrmDesign;
Logintimelabel.Left := 31;
Logintimelabel.Top := 209;
Logintimelabel.Width := 109;
Logintimelabel.Height := 13;
Logintimelabel.Caption := 'Time to Stay Logged in';
Label1 := TLabel.Create(FrmDesign);
Label1.Parent := FrmDesign;
Label1.Left := 30;
Label1.Top := 327;
Label1.Width := 99;
Label1.Height := 16;
Label1.Caption := 'Color of the Tree';
Label1.Font.Color := clWindowText;
Label1.Font.Height := -13;
Label1.Font.Name := 'MS Sans Serif';
Label1.Font.Style := [];
Label1.ParentFont := False;
Label2 := TLabel.Create(FrmDesign);
Label2.Parent := FrmDesign;
Label2.Left := 31;
Label2.Top := 355;
Label2.Width := 75;
Label2.Height := 16;
Label2.Caption := 'Report Time';
Label2.Font.Color := clWindowText;
Label2.Font.Height := -13;
Label2.Font.Name := 'MS Sans Serif';
Label2.Font.Style := [];
Label2.ParentFont := False;
Randomlogintimelabel := TLabel.Create(FrmDesign);
Randomlogintimelabel.Parent := FrmDesign;
Randomlogintimelabel.Left := 31;
Randomlogintimelabel.Top := 237;
Randomlogintimelabel.Width := 95;
Randomlogintimelabel.Height := 13;
Randomlogintimelabel.Caption := 'Random Login Time';
Logouttimelabel := TLabel.Create(FrmDesign);
Logouttimelabel.Parent := FrmDesign;
Logouttimelabel.Left := 30;
Logouttimelabel.Top := 266;
Logouttimelabel.Width := 116;
Logouttimelabel.Height := 13;
Logouttimelabel.Caption := 'Time to Stay Logged out';
Randomlogouttimelabel := TLabel.Create(FrmDesign);
Randomlogouttimelabel.Parent := FrmDesign;
Randomlogouttimelabel.Left := 31;
Randomlogouttimelabel.Top := 294;
Randomlogouttimelabel.Width := 102;
Randomlogouttimelabel.Height := 13;
Randomlogouttimelabel.Caption := 'Random Logout Time';
Usernamedit := TEdit.Create(FrmDesign);
Usernamedit.Parent := FrmDesign;
Usernamedit.Left := 141;
Usernamedit.Top := 23;
Usernamedit.Width := 121;
Usernamedit.Height := 21;
Usernamedit.Hint := 'Type your Username into this Box';
Usernamedit.TEXT:= Username;
Usernamedit.ParentShowHint := False;
Usernamedit.ShowHint := True;
Usernamedit.TabOrder := 8;
passwordedit := TEdit.Create(FrmDesign);
passwordedit.Parent := FrmDesign;
passwordedit.Left := 141;
passwordedit.Top := 49;
passwordedit.Width := 121;
passwordedit.Height := 21;
passwordedit.Hint := 'Type your Password into this Box';
passwordedit.TEXT:=Password;
passwordedit.ParentShowHint := False;
passwordedit.ShowHint := True;
passwordedit.TabOrder := 9;
passwordedit.PasswordChar := '*';
Logouts := TCheckBox.Create(FrmDesign);
Logouts.Parent := FrmDesign;
Logouts.CHECKED:= LogsOut;
Logouts.Left := 35;
Logouts.Top := 117;
Logouts.Width := 111;
Logouts.Height := 17;
Logouts.Hint :=
'Check if you want the script to Randomally Logout and then Log Ba' +
'ck in';
Logouts.Caption := 'Random Logouts?';
Logouts.ParentShowHint := False;
Logouts.ShowHint := True;
Logouts.TabOrder := 10;
Ratates := TCheckBox.Create(FrmDesign);
Ratates.Parent := FrmDesign;
Ratates.Checked:=Rotates;
Ratates.Left := 177;
Ratates.Top := 116;
Ratates.Width := 113;
Ratates.Height := 17;
Ratates.Hint := 'Check if you want the script to Randomally Rotate';
Ratates.Caption := 'Random Rotations?';
Ratates.ParentShowHint := False;
Ratates.ShowHint := True;
Ratates.TabOrder := 11;
RunDirectioncombo := TComboBox.Create(FrmDesign);
RunDirectioncombo.Parent := FrmDesign;
RunDirectioncombo.Left := 175;
RunDirectioncombo.Top := 143;
RunDirectioncombo.Width := 117;
RunDirectioncombo.Height := 21;
RunDirectioncombo.Hint := 'Direction you want to Run Away in';
RunDirectioncombo.TEXT:=RunDirection;
RunDirectioncombo.ItemHeight := 13;
RunDirectioncombo.ParentShowHint := False;
RunDirectioncombo.ShowHint := True;
RunDirectioncombo.TabOrder := 12;
RunDirectioncombo.Items.Add('N');
RunDirectioncombo.Items.Add('S');
RunDirectioncombo.Items.Add('E');
RunDirectioncombo.Items.Add('W');
LampSkillcombo := TComboBox.Create(FrmDesign);
LampSkillcombo.Parent := FrmDesign;
LampSkillcombo.Left := 175;
LampSkillcombo.Top := 85;
LampSkillcombo.Width := 145;
LampSkillcombo.Height := 21;
LampSkillcombo.Hint := 'Skill to Use the Lamp on If one is Found';
LampSkillcombo.TEXT:=LampSkill;
LampSkillcombo.ItemHeight := 13;
LampSkillcombo.ParentShowHint := False;
LampSkillcombo.ShowHint := True;
LampSkillcombo.TabOrder := 13;
LampSkillcombo.Items.Add('Strength');
LampSkillcombo.Items.Add('Attack');
LampSkillcombo.Items.Add('Ranged');
LampSkillcombo.Items.Add('Magic');
LampSkillcombo.Items.Add('Defence');
LampSkillcombo.Items.Add('Hitpoints');
LampSkillcombo.Items.Add('Prayer');
LampSkillcombo.Items.Add('Agility');
LampSkillcombo.Items.Add('Herblore');
LampSkillcombo.Items.Add('Thieving');
LampSkillcombo.Items.Add('Crafting');
LampSkillcombo.Items.Add('RuneCraft');
LampSkillcombo.Items.Add('Slayer');
LampSkillcombo.Items.Add('Farming');
LampSkillcombo.Items.Add('Mining');
LampSkillcombo.Items.Add('Smithing');
LampSkillcombo.Items.Add('Fishing');
LampSkillcombo.Items.Add('Cooking');
LampSkillcombo.Items.Add('Firemaking');
LampSkillcombo.Items.Add('Woodcutting');
LampSkillcombo.Items.Add('Fletching');
TreeNameCombo := TComboBox.Create(FrmDesign);
TreeNameCombo.Parent := FrmDesign;
TreeNameCombo.Left := 15;
TreeNameCombo.Top := 85;
TreeNameCombo.Width := 145;
TreeNameCombo.Height := 21;
TreeNameCombo.Hint := 'Select the Tree type you Want to Cut';
TreeNameCombo.Text := TreeName;
TreeNameCombo.ItemHeight := 13;
TreeNameCombo.ParentShowHint := False;
TreeNameCombo.ShowHint := True;
TreeNameCombo.TabOrder := 14;
TreeNameCombo.Items.Add('All');
TreeNameCombo.Items.Add('Tree');
TreeNameCombo.Items.Add('Oak');
TreeNameCombo.Items.Add('Willow');
TreeNameCombo.Items.Add('Maple');
TreeNameCombo.Items.Add('Mahogany');
TreeNameCombo.Items.Add('Yew');
TreeNameCombo.Items.Add('Magic');
Antibancheck := TCheckBox.Create(FrmDesign);
Antibancheck.Parent := FrmDesign;
Antibancheck.Left := 35;
Antibancheck.Top := 145;
Antibancheck.Width := 97;
Antibancheck.Height := 17;
Antibancheck.Hint := 'Check if you want to use the AntiBan Feature';
Antibancheck.Checked:=UseAntiBan;
Antibancheck.Caption := 'Use AntiBan?';
Antibancheck.ParentShowHint := False;
Antibancheck.ShowHint := True;
Antibancheck.TabOrder := 15;
StartButton := TButton.Create(FrmDesign);
StartButton.Parent := FrmDesign;
StartButton.Left := 70;
StartButton.Top := 383;
StartButton.Width := 75;
StartButton.Height := 25;
StartButton.Hint := 'Hit to Start the Script!';
StartButton.Caption := 'Start';
StartButton.ParentShowHint := False;
StartButton.ShowHint := True;
StartButton.TabOrder := 16;
StartButton.OnClick := @Go;
Donate := TButton.Create(FrmDesign);
Donate.Parent := FrmDesign;
Donate.Left := 173;
Donate.Top := 383;
Donate.Width := 75;
Donate.Height := 25;
Donate.Hint := 'If you like my Scripts, Please Donate';
Donate.Caption := 'Donate';
Donate.ParentShowHint := False;
Donate.ShowHint := True;
Donate.TabOrder := 16;
Donate.OnClick := @DonateLink;
Logintime := TEdit.Create(FrmDesign);
Logintime.Parent := FrmDesign;
Logintime.Left := 169;
Logintime.Top := 207;
Logintime.Width := 121;
Logintime.Height := 21;
Logintime.Hint := 'In Minutes';
Logintime.TEXT:=inttostr(logintime2);
Logintime.ParentShowHint := False;
Logintime.ShowHint := True;
Logintime.TabOrder := 17;
Randomlogintime := TEdit.Create(FrmDesign);
Randomlogintime.Parent := FrmDesign;
Randomlogintime.Left := 169;
Randomlogintime.Top := 234;
Randomlogintime.Width := 121;
Randomlogintime.Height := 21;
Randomlogintime.Hint := 'In Minutes';
Randomlogintime.Text:=inttostr(loginrandom2);
Randomlogintime.ParentShowHint := False;
Randomlogintime.ShowHint := True;
Randomlogintime.TabOrder := 18;
Logouttime := TEdit.Create(FrmDesign);
Logouttime.Parent := FrmDesign;
Logouttime.Left := 169;
Logouttime.Top := 262;
Logouttime.Width := 121;
Logouttime.Height := 21;
Logouttime.Hint := 'In Minutes';
Logouttime.Text:=inttostr(logouttime2);
Logouttime.ParentShowHint := False;
Logouttime.ShowHint := True;
Logouttime.TabOrder := 19;
Randomlogouttime := TEdit.Create(FrmDesign);
Randomlogouttime.Parent := FrmDesign;
Randomlogouttime.Left := 169;
Randomlogouttime.Top := 291;
Randomlogouttime.Width := 121;
Randomlogouttime.Height := 21;
Randomlogouttime.Hint := 'In Minutes';
Randomlogouttime.Text:=inttostr(logoutrandom2);
Randomlogouttime.ParentShowHint := False;
Randomlogouttime.ShowHint := True;
Randomlogouttime.TabOrder := 20;
TreeColoredit := TEdit.Create(FrmDesign);
TreeColoredit.Parent := FrmDesign;
TreeColoredit.Left := 169;
TreeColoredit.Top := 324;
TreeColoredit.Width := 121;
TreeColoredit.Height := 21;
TreeColoredit.Hint := 'Put the Color of the Tree into this Box';
TreeColoredit.Text:=inttostr(TreeColor);
TreeColoredit.ParentShowHint := False;
TreeColoredit.ShowHint := True;
TreeColoredit.TabOrder := 21;
Reporttimeedit := TEdit.Create(FrmDesign);
Reporttimeedit.Parent := FrmDesign;
Reporttimeedit.Left := 169;
Reporttimeedit.Top := 351;
Reporttimeedit.Width := 121;
Reporttimeedit.Height := 21;
Reporttimeedit.Hint := 'How Often to Print the Progress report (In Minutes)';
Reporttimeedit.Text:=inttostr(Report);
Reporttimeedit.ParentShowHint := False;
Reporttimeedit.ShowHint := True;
Reporttimeedit.TabOrder := 22;
end;
begin
SetupSSi;
Madeby;
SafeInitForm;
SafeShowFormModal;
if(startscript=false)then TerminateScript;
ActivateClient;
anti:=GetSystemTime;
LI:=LogInTime2+random(loginrandom2);
ST:=GetSystemTime;
report2:=GetSystemTime;
Bitmaps;
wait(800 + random(500));
GameTab(4);
AxeColor;
FindAxeHeadColor;
GetTreeType;
repeat
repeat
PrintProgressReport;
FindRandoms;
StartChopping;
WaitWhilstChopping;
If (InventoryCount>=28)then
break;
until(false)
DropLogs;
PrintProgressReport;
until(false)
end.