digital_mike_is_god
08-19-2007, 10:06 PM
Hello im new to scar and want to know a few things that i hope you can help me with scar dose work with me but only with non rs2 scripts also dose this srl update allow me to use scripts on rs2? i mean i dont understand i download even the newest script and it dosnt work and i even fill in the setup inless im not doing something right. im mostly want to auto mine and drop the ores also to auto pick up bones and bury.
here is one i have:
{ ---------------------------------------------------------------------------- ]
[ .________ _______.__ .__.__ .__ ]
[ \_____ \______ _ __ ___________/ ____/ | _|__| | | | ______ ]
[ | ___/ _ \ \/ \/ // __ \_ __ \____ \| |/ / | | | | / ___/ ]
[ | | ( <_> ) /\ ___/| | \/ \ <| | |_| |__\___ \ ]
[ |___| \____/ \/\_/ \___ \|__| /______ /__|_ \__|____/____/____ / ]
[ \/ \/ \/ \/ ]
[ 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('78DA637CC5C0C0E0C780029ACA23181E026 94' + //String
'620FE0F048CF7808C080634C0884402E9B740228A809AEF40 2294' +
'809ABB40C29B809A2F986EC650F394B07B0036370EED');
DTMFletching[2] := DTMFromString('78DA63F460626078C28002CAF272181E026 94' + //Knife
'620FE0F048C7640359F18D000231209A441E6DC27A0C61FA8 E61A' +
'01353E40358F08A87103AA798D5F0D00E5B80D52');
DTMFletching[3] := DTMFromString('78DA639CC7C4C0F08C01057495E6313C04D 28' + //Shortbow
'C40FC1F08189702D53C6640038C4824909E0954F38A809AA9 4035' +
'AF09A8E903AA794740CD74A09A1704D42C04AA794A40CD02C 2FE0' +
'200F0A71285');
DTMFletching[4] := DTMFromString('78DA63EC636060F0644001735A6A191E026 94' + //Longbow
'620FE0F048CD3808C080634C088440269909A60026A260109 1F02' +
'6A40EEF126A0662A900824A0A607D35F186A66008970FC6A0 0FFA' +
'D0DA1');
DTMMining[1] := DTMFromString('78DA639CC4C4C060CBC8800CBC7415191E0 26' + //Ores
'990E87F20606C04AA7144550391859140BA17A8C680809A79 4035' +
'A604D4CC01AA7121A0A607A8C69B809A36A01A73026AA603D 518E' +
'257030091BF0C02');
DTMMining[2] := DTMFromString('78DA632C66626078C6800278AB84181E026 94' + //Gems
'620FE0F048C19986A20B2301248E703D57C20A0A61AA8E61D 0135' +
'5540350F08A82902AAB98D5F0D00E0910DAA');
DTMLog := DTMFromString('78DA638C676060F0634001EEA69C0C0F813 42' + //Logs
'310FF0702C64420239C010D302291403A0C48441050E30F24 8208' +
'A8C905128104D464821C49404D3A9008C5AF06005AEA0A55' );
DTMBones := DTMFromString('78DA639CC3C4C0F09401059C3E7298E1049 06' + //Normal Bones
'604E2FF40C0381DA8E635031A60442281F402A09A6704D42C 06AA' +
'B94F40CD244CF760A8590154F304BF1A0094DB1042');
DTMBigBones := DTMFromString('78DA637467626098CEC8800C76AD5FCF700 24' + //Big Bones
'88344FF0301630050CD02543510591809A4ED806A66135013 0C54' +
'3393801A3722CCF103AA998C5F0D00A32B0C55');
BrokenAxeMask := BitmapFromString(9, 10, 'z78DA7373230D1890' + //Broken Axe Mask
'05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307 225');
DTMFishing[1] := DTMFromString('78DA632C65626078C28002762608333C04D 28' + //Lobster
'C40FC1F081853806A5E30A0014624124883CCF944404D3550 CD33' +
'026A6A816AAE1350530254731FBF1A0050520E3B');
DTMFishing[2] := DTMFromString('78DA632C666260606564400687269D66780 8A' + //SwordFish
'441A2FF81803119A84614550D44164602E93CA09AFF0CF8D5 5402' +
'D5701030A78A098987434D2661730014E20AE8');
DTMFishing[3] := DTMFromString('78DA639CCDC4C0F08201051CDCB19DE1219 06' + //Tuna
'604E2FF40C03819A8E609031A60442281743F50CD07026A66 11A1' +
'6629A67B30D42C03AAB98D5F0D008B78103C');
DTMFishing[4] := DTMFromString('78DA63DCC1C0C0D0CA8002525272181E026 94' + //Anchovies
'620FE0F048CEB808C260634C0884402E93D4062220135A780 440B' +
'0135078144157E350025E10C63');
DTMFishing[5] := DTMFromString('78DA638C65606068634001E5172B191E026 94' + //Sardine
'620FE0F048CE1404607031A604422817402906827A0260E48 3412' +
'50930624EAF1AB0100BC150B1A');
DTMFishing[6] := DTMFromString('78DA63EC666060686740014776EF667808A 41' + //herring
'981F83F1030B600197D0C6880118904D29D40A291809AE940 A292' +
'809A2940A215BF1A0068080C7D');
DTMFishing[7] := DTMFromString('78DA637CCDC0C0D0CE8002B6AF59C3F0104 83' + //Trout, pike, Salmon
'302F17F20607C0464F433A001462412487F0112CD04D43C01 12AD' +
'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.
help me setup please i have another too right underneath
{.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' /\ '
' P \ 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 ] < * '
[.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
_____ ' ' _____
| ----' BONE BURYER 2 '----|
| __/ ' ' | o |
<====|___ |====' Picks up bones from the floor '====| _/====>
/ | ' and Buries them ' | o
_____|----' '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' > [ INSTRUCTIONS ] < '
' '
_____ ' = Start where lots of Bones ' _____
| ----' are usually left '----|
| __/ ' = Setup colors, Silent Mouse OFF ' | o |
<====|___ |====' = Very Bright, Map facing North '====| _/====>
/ | ' = LOW Detail server ' | o
_____|----' = Nothing Good on you incase of '----|_____/
' Death and Empty Inventory '
' '
_____ [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.] _____
| ----' > [ CONTACT INFO: ] < '----|
| __/ ' Starblaster100@gmail.com ' | o |
<====|___ |====' '====| _/====>
/ | ' PM Starblaster100 at: ' | o
_____|----' RuneSC,Kaiteniks,Scriptdump,RSCN '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' I am not Held Responsible if any '
' of your Characters get Banned '
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.}
program BonePickerAndBuryer;
{.include SSi2.txt}
{.include Boxbreaker.txt}
Const
Bonecolor = 14277086; {Bonecolor on the floor}
Report = 1; {How often to Print the Progress report in Miutes}
RunDirection = 'E'; {Direction to Run away in: N,S,E,W}
LampSkill = 'Prayer'; {Skill to Use lamp on if Found}
Var
PrintReport,Picked,Buried,Take,TakeY:integer;
Procedure PrintProgressReport;
var
RHours,Minutes,Seconds,RMinutes,RSeconds:LongInt;
Time:String;
Begin
if(GetSystemTime-PrintReport > 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 Bone Picker and Buryer ======------>');
Writeln('Worked for '+Time);
Writeln('Picked '+IntToStr(Picked)+' Bones');
Writeln('Buried '+IntToStr(Buried)+' Bones');
if(talks>0)then writeln(' Talked to '+inttostr(talks)+' random event[s].');
if(lamps>0)then writeln(' Used lamps '+inttostr(Lamps)+' time[s].');
if(Boxes>0)then writeln(' Found '+IntToStr(Boxes)+' Strange Boxes');
PrintReport:=GetSystemTime;
end;
end;
end;
procedure FindRandoms;
begin
LoginIfNeeded;
GameTab(4);
LogOutEvery(1,5+random(5));
RotateEvery(10+random(5));
FindTalk;
FindBox;
FindMiscRandoms;
FindLamp(Lampskill);
end;
Procedure Pickbones;
Begin
Status('Picking Bones');
Take := BitmapFromString(61, 5, 'z78DA73734300030CE08643961' +
'87137AA9A8C0BB8B9591A9840495A8B23CB926B0E61DFB9E1 05F8' +
'551263E650096D6A880F7CDA263E8E86566863236915DAD44 DC34' +
'33D6D13EF6BF24A124AF202792509AE3296785D94C7267EF3 01EB' +
'D38D63');
TakeY := BitmapFromString(58, 4, 'z78DA7373737333C002DCC0E2' +
'6E18B2C488E352439EC9B8809B9BA5810994A4B538B22CF1E 6E0F' +
'70BAE1023266C893173A8842D79E26E039A6E898F91A115B6 3092' +
'FA614BDDF43974D32D00BC1C2382');
If(inventorycount=28)then
Exit;
Repeat
Wait(100);
Findrandoms;
Until(Findcolorspiral(x,y,Bonecolor,1,1,512,336));
If(findObj('Take',Bonecolor,2))then
Begin
Mouse(x,y,1,1,false);
wait(100 + random(200));
If(findbitmap(Take,x,y))or(Findbitmap(TakeY,x,y))t hen
Begin
Mouse(x+2,y,1,1,true);
FindRandoms;
flag;
wait(300 + random(200));
Picked:=Picked+1;
end else MMouse(1,1,20,20);
end;
PrintProgressReport;
FindRandoms;
Freebitmap(Take);
Freebitmap(TakeY);
end;
Procedure BuryBones;
Var
M,N,Rx,Ry:integer;
begin
Status('Burying Bones');
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)
Mmouse(Rx,Ry,2,2);
wait(100 + random(100));
if (Option('Bury'))then
begin
getmousepos(x,y)
mouse(x,y,2,2,true);
PrintProgressReport;
FindRandoms;
Buried:=Buried+1;
wait(1500 + random(200));
end;
end;
end;
end;
end;
Begin
SetupSSi;
Writeln('');
Writeln('If You Like My Scripts Please Donate to Me:');
Writeln('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');
PrintReport:=GetSystemTime;
Setrun(true);
Repeat
Repeat
FindRandoms;
Pickbones;
if(inventorycount=28)or(FindChatText('You don'))then
Break;
until(false);
BuryBones;
Until(false);
end.
another
{.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' /\ '
' 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: ] < '----|
| __/ ' Starblaster100@gmail.com ' | 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,loginr andom2,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,Antibanl abel,Logintimelabel,Randomlogintimelabel,Logouttim elabel,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))t hen
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,4 65,5))and
(FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,7 45,465,100))then
begin
writeln('Attaching 2/2');
if(FindcolorSpiralTolerance(x,y,Head,550,200,745,4 65,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))t hen
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,
'564D42000001000001544A3B000001694A08694A080000010 00001' +
'694A082E2000000001000001694A080000013020200000016 94A08' +
'000001302020');
Drop := BitmapFromString(28, 6, 'z78DA737343000324E04684382' +
'E35A4AA2446BD1BC5EEC46F23B5C4A965E6A83B87AE3B2949 7B94' +
'E42362DC00008F0FEAE5');
DropY := BitmapFromString(28, 6, 'z78DA737373733330700393C8' +
'C08D08715C6A4855498C7A378ADD89DF466A8953CBCC51770 E5D7' +
'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',RunDirect ion);
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(lo gintime2));
SaveSetting('StarChopper','loginrandom2',inttostr( loginrandom2));
SaveSetting('StarChopper','logouttime2',inttostr(l ogouttime2));
SaveSetting('StarChopper','logoutrandom2',inttostr (logoutrandom2));
end;
SaveSetting('StarChopper','TreeName',TreeName);
SaveSetting('StarChopper','Report',inttostr(Report ));
SaveSetting('StarChopper','TreeColor',inttostr(Tre eColor));
end;
Procedure LoadSets;
begin;
if(LoadSetting('StarChopper','Saved')='true') then begin
Username:=LoadSetting('StarChopper','Username');
Password:=LoadSetting('StarChopper','Password');
RunDirection:=LoadSetting('StarChopper','RunDirect ion');
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','lo gintime2'));
loginrandom2:=strtoint(LoadSetting('StarChopper',' loginrandom2'));
logouttime2:=strtoint(LoadSetting('StarChopper','l ogouttime2'));
logoutrandom2:=strtoint(LoadSetting('StarChopper', 'logoutrandom2'));
end;
TreeName:=LoadSetting('StarChopper','TreeName');
Report:=strtoint(LoadSetting('StarChopper','Report '));
TreeColor:=strtoint(LoadSetting('StarChopper','Tre eColor'));
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.
here is one i have:
{ ---------------------------------------------------------------------------- ]
[ .________ _______.__ .__.__ .__ ]
[ \_____ \______ _ __ ___________/ ____/ | _|__| | | | ______ ]
[ | ___/ _ \ \/ \/ // __ \_ __ \____ \| |/ / | | | | / ___/ ]
[ | | ( <_> ) /\ ___/| | \/ \ <| | |_| |__\___ \ ]
[ |___| \____/ \/\_/ \___ \|__| /______ /__|_ \__|____/____/____ / ]
[ \/ \/ \/ \/ ]
[ 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('78DA637CC5C0C0E0C780029ACA23181E026 94' + //String
'620FE0F048CF7808C080634C0884402E9B740228A809AEF40 2294' +
'809ABB40C29B809A2F986EC650F394B07B0036370EED');
DTMFletching[2] := DTMFromString('78DA63F460626078C28002CAF272181E026 94' + //Knife
'620FE0F048C7640359F18D000231209A441E6DC27A0C61FA8 E61A' +
'01353E40358F08A87103AA798D5F0D00E5B80D52');
DTMFletching[3] := DTMFromString('78DA639CC7C4C0F08C01057495E6313C04D 28' + //Shortbow
'C40FC1F08189702D53C6640038C4824909E0954F38A809AA9 4035' +
'AF09A8E903AA794740CD74A09A1704D42C04AA794A40CD02C 2FE0' +
'200F0A71285');
DTMFletching[4] := DTMFromString('78DA63EC636060F0644001735A6A191E026 94' + //Longbow
'620FE0F048CD3808C080634C088440269909A60026A260109 1F02' +
'6A40EEF126A0662A900824A0A607D35F186A66008970FC6A0 0FFA' +
'D0DA1');
DTMMining[1] := DTMFromString('78DA639CC4C4C060CBC8800CBC7415191E0 26' + //Ores
'990E87F20606C04AA7144550391859140BA17A8C680809A79 4035' +
'A604D4CC01AA7121A0A607A8C69B809A36A01A73026AA603D 518E' +
'257030091BF0C02');
DTMMining[2] := DTMFromString('78DA632C66626078C6800278AB84181E026 94' + //Gems
'620FE0F048C19986A20B2301248E703D57C20A0A61AA8E61D 0135' +
'5540350F08A82902AAB98D5F0D00E0910DAA');
DTMLog := DTMFromString('78DA638C676060F0634001EEA69C0C0F813 42' + //Logs
'310FF0702C64420239C010D302291403A0C48441050E30F24 8208' +
'A8C905128104D464821C49404D3A9008C5AF06005AEA0A55' );
DTMBones := DTMFromString('78DA639CC3C4C0F09401059C3E7298E1049 06' + //Normal Bones
'604E2FF40C0381DA8E635031A60442281F402A09A6704D42C 06AA' +
'B94F40CD244CF760A8590154F304BF1A0094DB1042');
DTMBigBones := DTMFromString('78DA637467626098CEC8800C76AD5FCF700 24' + //Big Bones
'88344FF0301630050CD02543510591809A4ED806A66135013 0C54' +
'3393801A3722CCF103AA998C5F0D00A32B0C55');
BrokenAxeMask := BitmapFromString(9, 10, 'z78DA7373230D1890' + //Broken Axe Mask
'05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307 225');
DTMFishing[1] := DTMFromString('78DA632C65626078C28002762608333C04D 28' + //Lobster
'C40FC1F081853806A5E30A0014624124883CCF944404D3550 CD33' +
'026A6A816AAE1350530254731FBF1A0050520E3B');
DTMFishing[2] := DTMFromString('78DA632C666260606564400687269D66780 8A' + //SwordFish
'441A2FF81803119A84614550D44164602E93CA09AFF0CF8D5 5402' +
'D5701030A78A098987434D2661730014E20AE8');
DTMFishing[3] := DTMFromString('78DA639CCDC4C0F08201051CDCB19DE1219 06' + //Tuna
'604E2FF40C03819A8E609031A60442281743F50CD07026A66 11A1' +
'6629A67B30D42C03AAB98D5F0D008B78103C');
DTMFishing[4] := DTMFromString('78DA63DCC1C0C0D0CA8002525272181E026 94' + //Anchovies
'620FE0F048CEB808C260634C0884402E93D4062220135A780 440B' +
'0135078144157E350025E10C63');
DTMFishing[5] := DTMFromString('78DA638C65606068634001E5172B191E026 94' + //Sardine
'620FE0F048CE1404607031A604422817402906827A0260E48 3412' +
'50930624EAF1AB0100BC150B1A');
DTMFishing[6] := DTMFromString('78DA63EC666060686740014776EF667808A 41' + //herring
'981F83F1030B600197D0C6880118904D29D40A291809AE940 A292' +
'809A2940A215BF1A0068080C7D');
DTMFishing[7] := DTMFromString('78DA637CCDC0C0D0CE8002B6AF59C3F0104 83' + //Trout, pike, Salmon
'302F17F20607C0464F433A001462412487F0112CD04D43C01 12AD' +
'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.
help me setup please i have another too right underneath
{.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' /\ '
' P \ 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 ] < * '
[.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
_____ ' ' _____
| ----' BONE BURYER 2 '----|
| __/ ' ' | o |
<====|___ |====' Picks up bones from the floor '====| _/====>
/ | ' and Buries them ' | o
_____|----' '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' > [ INSTRUCTIONS ] < '
' '
_____ ' = Start where lots of Bones ' _____
| ----' are usually left '----|
| __/ ' = Setup colors, Silent Mouse OFF ' | o |
<====|___ |====' = Very Bright, Map facing North '====| _/====>
/ | ' = LOW Detail server ' | o
_____|----' = Nothing Good on you incase of '----|_____/
' Death and Empty Inventory '
' '
_____ [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.] _____
| ----' > [ CONTACT INFO: ] < '----|
| __/ ' Starblaster100@gmail.com ' | o |
<====|___ |====' '====| _/====>
/ | ' PM Starblaster100 at: ' | o
_____|----' RuneSC,Kaiteniks,Scriptdump,RSCN '----|_____/
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' I am not Held Responsible if any '
' of your Characters get Banned '
[-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.}
program BonePickerAndBuryer;
{.include SSi2.txt}
{.include Boxbreaker.txt}
Const
Bonecolor = 14277086; {Bonecolor on the floor}
Report = 1; {How often to Print the Progress report in Miutes}
RunDirection = 'E'; {Direction to Run away in: N,S,E,W}
LampSkill = 'Prayer'; {Skill to Use lamp on if Found}
Var
PrintReport,Picked,Buried,Take,TakeY:integer;
Procedure PrintProgressReport;
var
RHours,Minutes,Seconds,RMinutes,RSeconds:LongInt;
Time:String;
Begin
if(GetSystemTime-PrintReport > 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 Bone Picker and Buryer ======------>');
Writeln('Worked for '+Time);
Writeln('Picked '+IntToStr(Picked)+' Bones');
Writeln('Buried '+IntToStr(Buried)+' Bones');
if(talks>0)then writeln(' Talked to '+inttostr(talks)+' random event[s].');
if(lamps>0)then writeln(' Used lamps '+inttostr(Lamps)+' time[s].');
if(Boxes>0)then writeln(' Found '+IntToStr(Boxes)+' Strange Boxes');
PrintReport:=GetSystemTime;
end;
end;
end;
procedure FindRandoms;
begin
LoginIfNeeded;
GameTab(4);
LogOutEvery(1,5+random(5));
RotateEvery(10+random(5));
FindTalk;
FindBox;
FindMiscRandoms;
FindLamp(Lampskill);
end;
Procedure Pickbones;
Begin
Status('Picking Bones');
Take := BitmapFromString(61, 5, 'z78DA73734300030CE08643961' +
'87137AA9A8C0BB8B9591A9840495A8B23CB926B0E61DFB9E1 05F8' +
'551263E650096D6A880F7CDA263E8E86566863236915DAD44 DC34' +
'33D6D13EF6BF24A124AF202792509AE3296785D94C7267EF3 01EB' +
'D38D63');
TakeY := BitmapFromString(58, 4, 'z78DA7373737333C002DCC0E2' +
'6E18B2C488E352439EC9B8809B9BA5810994A4B538B22CF1E 6E0F' +
'70BAE1023266C893173A8842D79E26E039A6E898F91A115B6 3092' +
'FA614BDDF43974D32D00BC1C2382');
If(inventorycount=28)then
Exit;
Repeat
Wait(100);
Findrandoms;
Until(Findcolorspiral(x,y,Bonecolor,1,1,512,336));
If(findObj('Take',Bonecolor,2))then
Begin
Mouse(x,y,1,1,false);
wait(100 + random(200));
If(findbitmap(Take,x,y))or(Findbitmap(TakeY,x,y))t hen
Begin
Mouse(x+2,y,1,1,true);
FindRandoms;
flag;
wait(300 + random(200));
Picked:=Picked+1;
end else MMouse(1,1,20,20);
end;
PrintProgressReport;
FindRandoms;
Freebitmap(Take);
Freebitmap(TakeY);
end;
Procedure BuryBones;
Var
M,N,Rx,Ry:integer;
begin
Status('Burying Bones');
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)
Mmouse(Rx,Ry,2,2);
wait(100 + random(100));
if (Option('Bury'))then
begin
getmousepos(x,y)
mouse(x,y,2,2,true);
PrintProgressReport;
FindRandoms;
Buried:=Buried+1;
wait(1500 + random(200));
end;
end;
end;
end;
end;
Begin
SetupSSi;
Writeln('');
Writeln('If You Like My Scripts Please Donate to Me:');
Writeln('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');
PrintReport:=GetSystemTime;
Setrun(true);
Repeat
Repeat
FindRandoms;
Pickbones;
if(inventorycount=28)or(FindChatText('You don'))then
Break;
until(false);
BuryBones;
Until(false);
end.
another
{.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
' /\ '
' 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: ] < '----|
| __/ ' Starblaster100@gmail.com ' | 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,loginr andom2,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,Antibanl abel,Logintimelabel,Randomlogintimelabel,Logouttim elabel,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))t hen
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,4 65,5))and
(FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,7 45,465,100))then
begin
writeln('Attaching 2/2');
if(FindcolorSpiralTolerance(x,y,Head,550,200,745,4 65,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))t hen
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,
'564D42000001000001544A3B000001694A08694A080000010 00001' +
'694A082E2000000001000001694A080000013020200000016 94A08' +
'000001302020');
Drop := BitmapFromString(28, 6, 'z78DA737343000324E04684382' +
'E35A4AA2446BD1BC5EEC46F23B5C4A965E6A83B87AE3B2949 7B94' +
'E42362DC00008F0FEAE5');
DropY := BitmapFromString(28, 6, 'z78DA737373733330700393C8' +
'C08D08715C6A4855498C7A378ADD89DF466A8953CBCC51770 E5D7' +
'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',RunDirect ion);
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(lo gintime2));
SaveSetting('StarChopper','loginrandom2',inttostr( loginrandom2));
SaveSetting('StarChopper','logouttime2',inttostr(l ogouttime2));
SaveSetting('StarChopper','logoutrandom2',inttostr (logoutrandom2));
end;
SaveSetting('StarChopper','TreeName',TreeName);
SaveSetting('StarChopper','Report',inttostr(Report ));
SaveSetting('StarChopper','TreeColor',inttostr(Tre eColor));
end;
Procedure LoadSets;
begin;
if(LoadSetting('StarChopper','Saved')='true') then begin
Username:=LoadSetting('StarChopper','Username');
Password:=LoadSetting('StarChopper','Password');
RunDirection:=LoadSetting('StarChopper','RunDirect ion');
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','lo gintime2'));
loginrandom2:=strtoint(LoadSetting('StarChopper',' loginrandom2'));
logouttime2:=strtoint(LoadSetting('StarChopper','l ogouttime2'));
logoutrandom2:=strtoint(LoadSetting('StarChopper', 'logoutrandom2'));
end;
TreeName:=LoadSetting('StarChopper','TreeName');
Report:=strtoint(LoadSetting('StarChopper','Report '));
TreeColor:=strtoint(LoadSetting('StarChopper','Tre eColor'));
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.