Results 1 to 3 of 3

Thread: New to scar

  1. #1
    Join Date
    Aug 2007
    Posts
    7
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    New to scar

    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:
    SCAR Code:
    { ---------------------------------------------------------------------------- ]
    [   .________                           _______.__   .__.__  .__               ]
    [   \_____   \______  _  __ ___________/   ____/  | _|__|  | |  |   ______     ]
    [    |    ___/  _ \ \/ \/ // __ \_  __ \____  \|  |/ /  |  | |  |  /  ___/     ]
    [    |   |  (  <_> )     /\  ___/|  | \/       \    <|  |  |_|  |__\___  \     ]
    [    |___|   \____/ \/\_/  \___ \|__| /______  /__|_ \__|____/____/____  /     ]
    [                              \/            \/     \/                 \/      ]
    [                                               By Starblaster100              ]
    [ ---------------------------------------------------------------------------- ]
    [                          >>   DESCRIPTION   <<                               ]
    [ ---------------------------------------------------------------------------- ]
    [  This Script is Designed to Power Auto a Specific Skill on a Specific Char   ]
    [  until  a  Certain Number of Loads have been Power Autoed.  This will then   ]
    [  Switch Character and Power Auto the next Players Specific Skill. This will  ]
    [  Keep Repeating until all Players are Inactive, or the script is Terminated  ]                                                                ]
    [ ---------------------------------------------------------------------------- ]
    [                        >>   SUPPORTED SKILLS   <<                            ]
    [ ---------------------------------------------------------------------------- ]
    [    o  Mining       - Must have a Pick and be near Minable Rocks              ]
    [    o  Woodcutting  - Must have an Axe and be near Cuttable Trees             ]
    [    o  Fishing      - Must have Fishing Equipment and be near a Fish Spot     ]
    [    o  Bone Burying - Must be near Bones, or a Bank if Withdrawing from Bank  ]
    [    o  Fletching    - Must be in a Bank, and have a Knife if Cutting any Logs ]
    [                      Place All Fletching Items in First Few Bank Slots       ]
    [ ---------------------------------------------------------------------------- ]
    [                       >>   SETUP INSTRUCTIONS   <<                           ]
    [ ---------------------------------------------------------------------------- ]
    [    o  For each Individual Player, Equip the  *Specific Equipment* needed to  ]
    [       Power the Specific Skill Selected                                      ]
    [    o  *Place* Each Individual Player in the *Specific Spots* where they are  ]
    [       going to work                                                          ]
    [    o  Run the Script and Fill in the Setup                                   ]
    [    o  Do not Change Anything in the Script Itself. Hit the Run Button Now!   ]
    [    o  Make sure you are using SCAR 3.0+                                      ]
    [ ---------------------------------------------------------------------------- ]
    [                         Script by Starblaster100                             ]
    [       Please Post Progress Reports, Bugs and Suggestions in my Thread!       ]
    [ ---------------------------------------------------------------------------- }


    program PowerSkills_By_Starblaster100;
    {.include SRL/SRL.scar}
    {.include SRL/SRL/Extended/xMapWalk.scar}
    {.include SRL/SRL/Extended/xInventory.scar}
    {.include SRL/SRL/Extended/xDTM.scar}
    {.include SRL/SRL/Extended/xAutoTalk.scar}
    {.include SRL/SRL/Extended/xAntiban.scar}
    {.include SRL/SRL/Extended/xText.scar}
    {.include SRL/SRL/Skill/Mining.scar}
    {.include SRL/SRL/Skill/Woodcutting.scar}
    {.include SRL/SRL/Skill/Fishing.scar}

    Const
      VerNumber = '3.0';      //Version number.  No need to Change
      DebugNumber = 1;        //How to Display Progress. To See all Debug, Set as 2, Otherwise 1 is Recommended.
      PrintReport = 1;        //How Often in minutes to Print the Progress Report. 1-5 Recommended.
      AntiBanRandomness = 5;  //The Bigger the Number, the less Chance of Antiban Procedures Occuring.  5 Recomended.

    Var
      TitleLabel, UsernameLabel, PasswordLabel, LampSkillLabel, ColorsLabel, TripsLabel, MiningSecsLabel : TLabel;
      LeftButton, RightButton, StartButton, CreatePlayerButton, DeletePlayerButton, DonateButton : TButton;
      String1ComboBox, String2ComboBox, String3ComboBox, LampSkillComboBox, FletchComboBox : TComboBox;
      UsernameEdit, PasswordEdit, ColorsEdit, LoadsEdit, MiningSecsEdit : TEdit;
      DTMBones, DTMBigBones, Report2, BrokenAxeMask, DTMLog, FIC: Integer;
      IsActive, ColorCheckBox, BankCheckBox, GemsCheckBox: TCheckBox;
      DTMFletching: Array[1..4] of Integer;
      DTMFishing: Array[1..7] of Integer;
      DTMMining: Array[1..2] of Integer;
      SkipItems: Array[1..21] of String;
      PowerMainSkillsFileName: String;
      FletchString: Array of String;
      StartScript: Boolean;
      frmDesign : TForm;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure StarDebug(S: String; How: Integer);                           ]
    [  >>  How to Display the Debug. For my use Really, you can Change if You Want ]
    [ ---------------------------------------------------------------------------- }


    Procedure StarDebug(S: String; How: Integer);
    Begin
      Case How of
        1: Status(s);
        2: Writeln(s);
        3: Players[CurrentPlayer].loc := S;
        4: Begin
             Status(S);
             Players[CurrentPlayer].loc := S;
           end;
        else Exit;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure Intro;                                                        ]
    [  >>  Script name, Version and Author                                         ]
    [ ---------------------------------------------------------------------------- }


    Procedure Intro;
    Begin
      Status('Script Created by Starblaster100');
      Writeln('');
      Writeln(' .________                           _______.__   .__.__  .__           ');
      Writeln(' \_____   \______  _  __ ___________/   ____/  | _|__|  | |  |   ______ ');
      Writeln('  |    ___/  _ \ \/ \/ // __ \_  __ \____  \|  |/ /  |  | |  |  /  ___/ ');
      Writeln('  |   |  (  <_> )     /\  ___/|  | \/       \    <|  |  |_|  |__\___  \ ');
      Writeln('  |___|   \____/ \/\_/  \___ \|__| /______  /__|_ \__|____/____/____  / ');
      Writeln('                            \/            \/     \/                 \/  ');
      Writeln('             Ver '+VerNumber+'                     By Starblaster100    ');
      Writeln('');
      ReportVars[0] := ReportVars[0] + 1;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure WriteNews;                                                    ]
    [  >>  Downloads the Latest News from the Server                               ]
    [ ---------------------------------------------------------------------------- }


    Procedure WriteNews;
    Var
      Timer, i, x, y, Temp, HowMany: integer;
      News : Array of String;
      New, TheNews : String;
    Begin
      ChangeReportWidth(390);
      ClearReport;
      Status('Downloading Latest News...');
      Writeln('Please Wait whilst the Latest PowerSkills News is Downloaded...');
      Wait(1);
      TheNews := Getpage('http://starblaster.freehostia.com/powerskills/PowerSkillsNews.txt');
      AddToReport(' >> Latest PowerSkills News:');
      AddToReport('    ========================');

      For Temp := 1 to Length(TheNews) do
        If(Copy(TheNews, Temp, 1) = ',') then
          HowMany := HowMany + 1;
      x := 0;
      y := 1;
      SetArrayLength(News, HowMany+1);
      For i := 1 to HowMany do
      Begin
        MarkTime(Timer);
        repeat
          x := x + 1;
          new := copy(TheNews, x, x+1);
        until(copy(new, 1, 1) = ',')or(TimeFromMark(Timer) >= 2000);
        news[i]:= copy(TheNews, y, (x-y));
        y := x + 1;
        Wait(1);
      end;
      For i := 1 to HowMany do
        AddToReport(' :: '+news[i]);
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure CheckVersion;                                                 ]
    [  >>  Checks SCAR and Script Version to see if you have the Latest            ]
    [ ---------------------------------------------------------------------------- }


    Procedure CheckVersion;
    Var
      Version : String;
    Begin
      ClearDebug;
      If not(GetSCARVersion >= 305) then
      begin
        Writeln(' >> You Need SCAR Divi 3.05 or above to Run this Script!');
        Writeln(' >> Please Download it from http://www.freddy1990.com/scar.php');
        TerminateScript;
      end;
      Writeln('Checking Script Version');
      Wait(1);
      Version := Copy(Getpage('http://starblaster.freehostia.com/powerskills/PSCurrentVersion.txt'), 1, 3);
      If not(VerNumber = Version) and not(Version = '')then
      Begin
        Writeln('');
        Writeln(' ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~             ');
        Writeln('          PowerSkills Ver ' +Version+ ' Released!');
        Writeln('               Your Version :: '+VerNumber                        );
        Writeln('     It is Recommended that you Update your Script!             ');
        Writeln(' ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~             ');
        Writeln('');              //http://starblaster.freehostia.com/update_script.php
        If(GetApplication.MessageBox('PowerSkills Ver ' +Version+ ' Released!' +Chr(13)+ 'Press "OK" to Cancel the Script Run and Download the new Version!', 'New Version Released', 1) = 1) then
          TerminateScript;
      end else
        Writeln('Latest Version... OK!');
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure SendPSStats(Skill: String);                                   ]
    [  >>  Updates the Stats to the SRL Server                                     ]
    [ ---------------------------------------------------------------------------- }


    Procedure SendPSStats(Skill: String);
    Begin
      StarDebug('Sending Stats', DebugNumber);
      Case Lowercase(Skill) of
        'mining'      : begin
                          If (EquipPick) then
                            ReportVars[4] := ReportVars[4] + 28
                          else
                            ReportVars[4] := ReportVars[4] + 27;
                        end;
        'woodcutting' : begin
                          If (EquipAxe) then
                            ReportVars[5] := ReportVars[5] + 28
                          else
                            ReportVars[5] := ReportVars[5] + 27;
                        end;
        'fishing'     : ReportVars[6] := ReportVars[6] + 27;
        'bone burying': ReportVars[7] := ReportVars[7] + 28;
        'fletching'   : case (Lowercase(Players[CurrentPlayer].String2)) of
                          'logs --> (u) shortbow'         : ReportVars[8] := ReportVars[8] + 27;
                          'logs --> (u) longbow'          : ReportVars[8] := ReportVars[8] + 27;
                          '(u) shortbow --> (s) shortbow' : ReportVars[8] := ReportVars[8] + 14;
                          '(u) longBow --> (s) longbow'   : ReportVars[8] := ReportVars[8] + 14;
                          'logs --> (s) shortbow'         : ReportVars[8] := ReportVars[8] + 13;
                          'logs --> (s) longbow'          : ReportVars[8] := ReportVars[8] + 13;
                        end;
        else Writeln('Unsupported Skill, Stats could not be Sent');
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Function ExpPerItem(Skill, ItemName: string): Extended;                 ]
    [  >>  Loads the Exp for Each Skill and Each Item in the Specific Skill        ]
    [ ---------------------------------------------------------------------------- }


    Function ExpPerItem: Extended;
    begin
      Case LowerCase(Players[CurrentPlayer].String1) of
        'woodcutting' : Begin
                          case LowerCase(Players[CurrentPlayer].String2) of
                            'tree'    : Result := 25;
                            'oak'     : Result := 37.5;
                            'willow'  : Result := 62.5;
                            'maple'   : Result := 100;
                            'mahogany': Result := 125;
                            'yew'     : Result := 175;
                            'magic'   : Result := 250;
                            else Begin Writeln('Unsupported WC Item'); Result := 0; end;
                          end;
                        end;
        'mining'      : Begin
                          case LowerCase(Players[CurrentPlayer].String2) of
                            'tin'    : Result := 17.5;
                            'copper' : Result := 17.5;
                            'iron'   : Result := 35;
                            'coal'   : Result := 50;
                            'mith'   : Result := 80;
                            'gold'   : Result := 65;
                            'silver' : Result := 40;
                            'addy'   : Result := 95;
                            'rune'   : Result := 125;
                            else Begin Writeln('Unsupported Mining Item'); Result := 0; end;
                          end;
                        end;
        'fishing'     : Begin
                          case LowerCase(Players[CurrentPlayer].String2) of
                            'smallnet'     : Result := 25;
                            'cage'    : Result := 90;
                            'harpoon' : Result := 90;
                            else Begin Writeln('Unsupported Fishing Item'); Result := 0; end;
                          end;
                        end;
        'bone burying': Begin
                          case LowerCase(Players[CurrentPlayer].String2) of
                            'bones'     : Result := 4.5;
                            'big bones' : Result := 15;
                            else Begin Writeln('Unsupported Bone Burying Item'); Result := 0; end;
                          end;
                        end;
        'fletching'   : begin
                          case Lowercase(Players[CurrentPlayer].String2) of
                            'logs --> (u) shortbow',
                            '(u) shortbow --> (s) shortbow' :
                              begin
                                case Lowercase(FletchString[CurrentPlayer]) of
                                  'normal' : Result := 5;
                                  'oak'    : Result := 16.5;
                                  'willow' : Result := 33.3;
                                  'maple'  : Result := 50;
                                  'yew'    : Result := 66.5;
                                  'magic'  : Result := 83.3;
                                  else Writeln('Fletching Log Type not Recognised!');
                                end;
                              end;
                            'logs --> (u) longbow',
                            '(u) longbow --> (s) longbow' :
                              begin
                                case Lowercase(FletchString[CurrentPlayer]) of
                                  'normal' : Result := 10;
                                  'oak'    : Result := 25;
                                  'willow' : Result := 41.5;
                                  'maple'  : Result := 58.3;
                                  'yew'    : Result := 75;
                                  'magic'  : Result := 91.5;
                                  else Writeln('Fletching Log Type not Recognised!');
                                end;
                              end;
                            'logs --> (s) shortbow' :
                              begin
                                case Lowercase(FletchString[CurrentPlayer]) of
                                  'normal' : Result := 10;
                                  'oak'    : Result := 33;
                                  'willow' : Result := 66.6;
                                  'maple'  : Result := 100;
                                  'yew'    : Result := 133;
                                  'magic'  : Result := 166.6;
                                  else Writeln('Fletching Log Type not Recognised!');
                                end;
                              end;
                            'logs --> (s) longbow' :
                              begin
                                case Lowercase(FletchString[CurrentPlayer]) of
                                  'normal' : Result := 20;
                                  'oak'    : Result := 50;
                                  'willow' : Result := 83;
                                  'maple'  : Result := 116.6;
                                  'yew'    : Result := 150;
                                  'magic'  : Result := 183;
                                  else Writeln('Fletching Log Type not Recognised!');
                                end;
                              end;
                            else Writeln('Unknown Fletching Type!');
                          end;
                        end;
        else Begin Writeln('Unsupported Skill'); Result := 0; end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure ProgressReport;                                               ]
    [  >>  Prints The Progress Report every "PrintReport" Minutes                  ]
    [ ---------------------------------------------------------------------------- }


    Procedure ProgressReport(ForceProgress: Boolean);
    Var
      i, TempLoads: Integer;
      TempExp: Extended;
    Begin
      If (GetSystemTime - Report2 >= PrintReport * 60000) or (ForceProgress) then
      Begin
        StarDebug('Progress Report', DebugNumber);
        For i := 0 to (HowManyPlayers-1) do
          TempLoads := TempLoads + Players[i].Banked;
        For i := 0 to (HowManyPlayers-1) do
          TempExp := TempExp + (ExpPerItem * Players[i].Banked * 28);
        Writeln('<---------------------------------------------->');
        Writeln('¦     PowerSkills Ver '+VerNumber+' By Starblaster100    Â¦');
        Writeln('<---------------------------------------------->');
        Writeln('  Total Running Time    : ' +TimeRunning);
        Writeln('  Total Loads Done      : ' +IntToStr(TempLoads));
        Writeln('  Total Exp Gained      : ' +FloatToStr(TempExp));
        Writeln('<---------------------------------------------->');
        Writeln('  Current Player No.    : ' +IntToStr(CurrentPlayer+1)+ '/' +IntToStr(HowManyPlayers));
        Writeln('  Current Player Name   : ' +Players[CurrentPlayer].Name);
        Writeln('  Player Power Skilling : ' +Players[CurrentPlayer].String1);
        Writeln('  Player Running Time   : ' +IntToStr(Players[CurrentPlayer].Worked)+ ' Minutes');
        Writeln('  Current Player Loads  : ' +IntToStr(Players[CurrentPlayer].Banked));
        If (LoggedIn) then
        begin
          Case Lowercase(Players[CurrentPlayer].String1) of
            'woodcutting' : Writeln('  WC Levels Gained      : ' +IntToStr(GetSkillLevel('woodcutting')-Players[CurrentPlayer].Level[20]));
            'mining'      : Writeln('  Mining Levels Gained  : ' +IntToStr(GetSkillLevel('mining')-Players[CurrentPlayer].Level[15]));
            'fishing'     : Writeln('  Fishing Levels Gained : ' +IntToStr(GetSkillLevel('fishing')-Players[CurrentPlayer].Level[17]));
            'bone burying': Writeln('  Prayer Levels Gained  : ' +IntToStr(GetSkillLevel('prayer')-Players[CurrentPlayer].Level[5]));
            'fletching'   : Writeln('  Fletch Levels Gained  : ' +IntToStr(GetSkillLevel('fletching')-Players[CurrentPlayer].Level[13]));
          end;
        end;
        Writeln('  Exp Approx Gained     : ' +FloatToStr(ExpPerItem * Players[CurrentPlayer].Banked * 28));
        Writeln('  Player Worked for     : '+IntToStr(Players[CurrentPlayer].Worked)+' Minutes');
        Writeln('  Player Currently      : '+Players[CurrentPlayer].loc);
        Writeln('<---------------------------------------------->');
        For i := 0 to HowManyPlayers-1 do
          Writeln('  ' +IntToStr(i)+ ' : '+Players[i].Name+' = '+BoolToStr(Players[i].Active)+
            ', Skill: '+ Players[CurrentPlayer].String1 +', '+IntToStr(Players[i].Worked)+
            ' Minutes, Loads: '+IntToStr(Players[i].Banked)+', Curently: '+Players[i].Loc);
        Writeln('<---------------------------------------------->');
        SRLRandomsReport;
        Report2 := GetSystemTime;
        GameTab(4);
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  function Randoms(Skill: String): Boolean;                               ]
    [  >>  Finds and Solves Randoms, Courtesy of SRL                               ]
    [ ---------------------------------------------------------------------------- }


    function Randoms(Skill: String): Boolean;
    var
      TX, TY, i: Integer;
    begin
      for i := 1 to 17 do
      begin
        case I of
          1: CloseWindow;
          2: if FindTalk then
               Result := True;
          3: if FindDead then
               Result := True;
          4: if FindMod then
               Result := True;
          5: if FindMime then
               Result := True;
          6: if FindMaze then
               Result := True;
          7: if FindQuiz then
               Result := True;
          8: if FindDemon then
               Result := True;
          9: if FindScapeRune then
               Result := True;
          10: if FindTalk then
                Result := True;
          11: if FindLamp(Players[CurrentPlayer].Skill) then
                Result := True;
          12: if (FindNewBox) then
              begin
                Result := True;
                if (UseBoxSolver) then
                  SolveBox
                else
                  GambleNewBox;
              end;
          13: if FindTrade then
                Result := True;
          14: if NoGameTab then
              begin
                Result := True;
                Players[CurrentPlayer].loc := 'No GameTab';
                Logout;
                Exit;
              end;
          15: if (FindFight) then
              begin
                result := true;
                RunAwayDirection(Players[CurrentPlayer].String3);
                Wait(5000 + Random(2500));
                RunBack;
              end;
          16: If not(Skill = '') then
              begin
              If(FindNpcChatText('ongr'))then
                begin
                  ClickToContinue;
                  Result := True;
                  ReportVars[1] := ReportVars[1] + 1;
                end;
              end;
          17: ProgressReport(False);
        end;
        Wait(1);
      end;
      case Lowercase(Skill) of
        ''           : Wait(1);
        'woodcutting': Begin
                         For i := 0 to 1 do
                         Begin
                           Case i of
                             0: If (InChat('do not') or InChat('have axe')) then
                                begin
                                  if ( EquipAxe ) then
                                    GameTab ( 2 )
                                  else
                                    GameTab ( 4 );
                                  Wait(400 + Random(200));
                                  if FindBitmapMaskTolerance ( BrokenAxeMask, TX, TY, MIX1, MIY1, MIX2, MIY2, 10, 2 ) then
                                  Begin
                                    Result := True;
                                    Logout;
                                    Players[CurrentPlayer].Loc := 'Broken Axe';
                                    Players[CurrentPlayer].Active := False;
                                    Exit;
                                  end;
                                  If not(FindHead) then
                                  begin
                                    Result := True;
                                    Logout;
                                    Players[CurrentPlayer].Loc := 'Lost Axe Head';
                                    Players[CurrentPlayer].Active := False;
                                    Exit;
                                  end;
                                end;
                             1: FindBirdsNest;
                           end;
                           Wait(1);
                         end;
                       end;
        'mining'  : Begin
                      For i := 0 to 1 do
                      Begin
                        Case i of
                          0: if not (FindPick) then
                             begin
                               Result := True;
                               Logout;
                               Players[CurrentPlayer].Loc := 'Lost Mining Equipment';
                             end;
                          1: Begin
                               GetMousePos(x, y);
                               If (x < MMX2) and (y < MMY2) and (x > MMX1) and (y > MMY1+21)then
                                 GasCheck(x, y-20);
                             end;
                        end;
                        Wait(1);
                      end;
                    end;
        'fishing' : Begin
                      For i := 0 to 2 do
                      Begin
                        Case i of
                          0: if not (FindFishingEquipment(FIC, Copy(Players[CurrentPlayer].String2, 2, 4))) then    //Doesn't Work!
                             begin
                               Result := True;
                               Logout;
                               Players[CurrentPlayer].Loc := 'Lost Fishing Equipment';
                             end;
                          1: HandleWhirlPool;
                          2: If (FindPlant) then
                               Result := True;
                        end;
                        Wait(1);
                      end;
                    end;
        else Writeln('Randoms are Incorrect Star! Recode the Script!');
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure DoAntiBan;                                                    ]
    [  >>  Does some Random AntiBan Procedures                                     ]
    [ ---------------------------------------------------------------------------- }


    Procedure DoAntiBan(Extras: Boolean);
    Begin
      If not(LoggedIn) then Exit;
      If (Extras) then
      Begin
        Case Random(20) of
          0: RandomRClickEvery(2 + Random(8));
          1: HoverSkill('random', false);
          2: RotateEvery(20 + Random(10));
          3: LeaveScreenEvery(5 + Random(5));
          4: PickUpMouse;
          5: BoredEvery(9 + Random(24));
          6: Begin
               GameTab(1 + Random(12));
               Wait(1500 + Random(500));
               GameTab(4);
             end;
          7: SleepAndMoveMouse(1000 + Random(1000));
          8: MMouse(Random(MSX2), Random(MSY2), 0, 0);
        end;
      end else
      begin
        Case Random(10) of
          0 : IdleTime(1000 + Random(350), 500, 1.0);
          1 : IdleTime(1000 + Random(350), 1000, 1.0);
          2 : IdleTime(1000 + Random(350), 750, 0.5);
          3 : SleepAndMoveMouse(2500 + Random(2500));
          4 : SleepAndMoveMouse(1500 + Random(1500));
          5 : SleepAndMoveMouse(500 + Random(500));
        end;
      end;
      FindTalk;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  procedure LoadNullWords;                                                ]
    [  >>  Loads Words which cannot be your Nickname - by Mad Cow                  ]
    [ ---------------------------------------------------------------------------- }


    procedure LoadNullWords;
    begin
      SkipItems[1] := 'the';
      SkipItems[2] := 'but';
      SkipItems[3] := 'yes';
      SkipItems[4] := 'lol';
      SkipItems[5] := 'brb';
      SkipItems[6] := 'gtg';
      SkipItems[7] := 'cya';
      SkipItems[8] := 'how';
      SkipItems[9] := 'hey';
      SkipItems[10] := 'wat';
      SkipItems[11] := 'umm';
      SkipItems[12] := 'him';
      SkipItems[13] := 'she';
      SkipItems[14] := 'man';
      SkipItems[15] := 'wow';
      SkipItems[16] := 'god';
      SkipItems[17] := 'nub';
      SkipItems[18] := 'nop';
      SkipItems[19] := 'did';
      SkipItems[20] := 'you';
      SkipItems[21] := 'ing';
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  function CreateNick(Username : String) : String;                        ]
    [  >>  Creates your Nickname from your Username - by Mad Cow                   ]
    [ ---------------------------------------------------------------------------- }


    function CreateNick(Username : String) : String;
    var
      UserLength, NickStart, INick, A : Integer;
      Nicks, Temp : String;
      BadNick : Boolean;
    begin
      UserLength := Length(Username);
      INick := 0;
      LoadNullWords;
      repeat
        BadNick := False;
        NickStart := 2 + INick;
        Nicks := Nicks + Copy(Username, NickStart, 3);
        for A := 1 to 3 do
        begin
          Temp := Copy(Nicks, A, 1);
          if(Temp = ' ') or (Temp = '_')then
          begin
            INick := INick + 1;
            Nicks := '';
            BadNick := True;
          end;
        end;
        for A := 1 to 21 do
        begin
          if(Nicks = SkipItems[A]) then
          begin
            INick := INick + 1;
            Nicks := '';
            BadNick := True;
          end;
        end;
      until((not(BadNick)) or (NickStart >= 15))
      Result := Nicks;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure GenerateNickNames;                                            ]
    [  >>  Saves Nicknames, and Sets Default Locations, by Mad Cow Edited by Star  ]
    [ ---------------------------------------------------------------------------- }


    Procedure GenerateNickNames;
    Begin
      Writeln('');
      Writeln('Creating Nicknames:');
      Status('Creating Nicknames');
      For X := 0 to HowManyPlayers - 1 do
      begin
        if(Players[X].Nick = '') then
        begin
          Players[X].Nick := CreateNick(Players[X].Name);
          WriteLn('  Players[' + IntToStr(X) + '].Nick := ' + Players[X].Nick + ';');
          Wait(1);
        end;
      end;
      Writeln('');
      Status('Setting Players Current Location:');
      For X := 0 to HowManyPlayers - 1 do
        Players[X].Loc := 'Not Yet Started Autoing';
      Status('If you see this Message for Longer than 3 Seconds, Stop the Script and Restart Straight Away!');
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Mining                                                          ]
    [  >>  Procedure AutoRockColor;                                                ]
    [  >>  Automatically gets the Rock Color.  If this Fails, Set it Yourself      ]
    [ ---------------------------------------------------------------------------- }


    Procedure AutoRockColor;
    var
      OreTol, i : integer;
    begin
      StarDebug('Picking Ore Colors', DebugNumber);
      If not(Loggedin) then Exit;
      If (Players[CurrentPlayer].Integer1 > 0) then Exit;

      Case Lowercase(Players[CurrentPlayer].String2) of
        'copper'  : Begin Players[CurrentPlayer].Integer1 := 3824768;  OreTol := 35; end;
        'tin'     : Begin Players[CurrentPlayer].Integer1 := 7829375;  OreTol := 35; end;
        'iron'    : Begin Players[CurrentPlayer].Integer1 := 2305870;  OreTol := 25; end;
        'coal'    : Begin Players[CurrentPlayer].Integer1 := 2834753;  OreTol := 13; end;
        'mith'    : Begin Players[CurrentPlayer].Integer1 := 7359564;  OreTol := 20; end;
        'gold'    : Begin Players[CurrentPlayer].Integer1 := 1881051;  OreTol := 20; end;
        'silver'  : Begin Players[CurrentPlayer].Integer1 := 12434885; OreTol := 20; end;
        'addy'    : Begin Players[CurrentPlayer].Integer1 := 6322272;  OreTol := 20; end;
        'rune'    : Begin Players[CurrentPlayer].Integer1 := 0;        OreTol := 20; end;
      end;

      Repeat
        If(FindOreColors(Players[CurrentPlayer].Integer1, 5, OreTol))then Break;
        If(Not(Loggedin))then Break;
        i := i + 1;
        KeyDown(VK_LEFT);
        Wait(100 + random(100));
        KeyUp(VK_LEFT);
        If(i > 49) then
        Begin
          Writeln('Could not find Ore Color --> Switching player.')
          Logout;
        end;
      Until(i > 49)
      MakeCompass('N');
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Mining                                                          ]
    [  >>  Procedure ChangeGasPixels(Var Gasx,GasY:Integer);                       ]
    [  >>  Changes the Gas Color so that it can be Found if Present                ]
    [ ---------------------------------------------------------------------------- }


    Procedure ChangeGasPixels(Var Gasx, GasY: Integer); //Courtesy of Wizzup? Thanks dude!
    Var
       TempX, TempY: Integer;
    Begin
      Wait(100);
      StarDebug('Changing Gas Pixels', DebugNumber);
      If FlagPresent Then
      Begin
        FFlag(0);
        If FindColorSpiralTolerance(x, y, OreColor, MSX1, MSY1, MSX2, MSY2, 4) Then
        Begin
          x := TempX;
          y := TempY;
          If CheckOre(x, y, OreColor, 4) > 2 Then
          Begin
            If Distance(MSCX, MSCY, TempX, Tempy) < 40 Then
            Begin
              GasX := x;
              GasY := y;
            end;
          end;
        end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Mining                                                          ]
    [  >>  Function GasFound(CheckForGas: Boolean; cx, cy: Integer): Boolean;      ]
    [  >>  Checks for and Handles Gas.  Will also just move if Needed              ]
    [ ---------------------------------------------------------------------------- }


    Function CheckGas(S: String; CheckForGas: Boolean; cx, cy: Integer): Boolean;
    Var
      Mark, c: Integer;
    Begin
      If (CheckForGas) then
      begin
        If GasCheck(cx, cy-20) or FindGas(cx, cy-20)then
        Begin
          Repeat
            c := c + 1;
            Result := True;
            Mouse(648, 83, 2, 2, True);
            Wait(400 + Random(400));
          until(c >= 2)
          MarkTime(Mark);
        end;
      end else
      Begin
        Repeat
          c := c + 1;
          Result := True;
          Mouse(648, 83, 2, 2, True);
          Wait(400 + Random(400));
        until(c >= 2)
        MarkTime(Mark);
      end;
      If (Result) then
      Begin
        Case Lowercase(S) of
          'gas' : ReportVars[2] := ReportVars[2] + 1;
          'ent' : ReportVars[3] := ReportVars[3] + 1;
        end;
        While (TimeFromMark(Mark) < 15000) do
        begin
          StarDebug(Capitalize(S) + ' Found!', 4);
          SleepAndMoveMouse(1000);
          Randoms('');
        end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Mining                                                          ]
    [  >>  Procedure MineRock(SecondsToWait: Integer);                             ]
    [  >>  Starts Mining a Rock and Waits for it to be Mined                       ]
    [ ---------------------------------------------------------------------------- }


    Procedure MineRock(SecondsToWait: Integer);
    Var
      Current, Mark, cx, cy: Integer;
    Begin
      If not(Loggedin) then Exit;
      StarDebug('Mining Ore', DebugNumber);

      If (OreColor1 > 0) and (OreColor2 > 0) and (OreColor3 > 0)then
      begin
        Case Random(3) of
          0: Players[CurrentPlayer].Integer1 := OreColor1;
          1: Players[CurrentPlayer].Integer1 := OreColor2;
          2: Players[CurrentPlayer].Integer1 := OreColor3;
        end;
      end;

      While not(FindColorSpiralTolerance(x, y, Players[CurrentPlayer].Integer1, MSX1, MSY1, MSX2, MSY2, 5)) do
      Begin
        If not(LoggedIn) then Exit;
        Randoms('mining');
        Wait(100);
      end;

      Current := InvCount;

      If (FindObj(cx, cy, 'Mine', Players[CurrentPlayer].Integer1, 5))then
      begin
        If not(CheckGas('Gas', True, cx, cy))then
        begin
          If not(Random(10) = 7) then
            Mouse(cx, cy, 0, 0, True)
          else
          Begin
            Mouse(cx, cy, 0, 0, False);
            Wait(100 + Random(100));
            ChooseOption(x, y, 'Mine');
          end;
          ChangeGasPixels(cx, cy);
          GetMousePos(x, y);
          If(x < MSX1) or (x > MSX2) or (y < MSY1) or (y > MSY2) then
            MMouse(Random(MSCX), Random(MSCY), 0, 0);
          MarkTime(Mark);
          Repeat
            Status('Waiting for "You Swing your Pick..."');
            If Randoms('mining') then  Exit;
            If (GetColor(103, 421) = 0) and (GetColor(195, 426) = 0)then Break;
            If (InChat('You swing')) then Break;
            If (InChat('There is')) then Break;
          Until(TimeFromMark(Mark) >= 1500)

          MarkTime(Mark);
          Repeat
            Status('Waiting for "You Managed to Mine..."');
            If Randoms('Mining')then Exit;
            Wait(50);
            If CheckGas('Gas', True, cx, cy) then Exit;
            If (GetColor(77, 421) = 0) and (GetColor(131, 422) = 0) and (GetColor(146, 421) = 0)then Break;
            If (InChatMulti('There is', 'You man', 'currently no')) then Break;
            Wait(50);
          Until(TimeFromMark(Mark) > SecondsToWait * 1000) or
          (InventoryCount >= 28) or (not(GetColor(109, 430) = 0) and (not(GetColor(195, 426) = 0)))

          If (TimeFromMark(Mark) > SecondsToWait * 1000) then
            If(Random(AntiBanRandomness) = 0) then
              DoAntiBan(True);
          If(InvCount > Current)then
            StarDebug('Mined an Ore!', 4);
        end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Woodcutting                                                     ]
    [  >>  Procedure AutoTreeColor(TreeTypeColor : String);                        ]
    [  >>  Automatically gets the Tree Color.  If this Fails, Set it Yourself      ]
    [ ---------------------------------------------------------------------------- }


    Procedure AutoTreeColor(TreeTypeColor : String);
    Var
      C, TempTreeColor : Integer;
    Begin
      If not(Loggedin) then Exit;
      Case Lowercase(TreeTypeColor)of
        'tree','' : TempTreeColor := 3504232;
        'oak'     : TempTreeColor := 3106904;
        'willow'  : TempTreeColor := 4417632;
        'maple'   : TempTreeColor := 32928;
        'mahogany': TempTreeColor := 3697506;
        'yew'     : TempTreeColor := 3371104;
        'magic'   : TempTreeColor := 14678264;
      End;
      If(Players[CurrentPlayer].Integer1 > 0)Then
        Exit;
      StarDebug('Getting Tree Color', DebugNumber);
      For C := 0 to 30 do
      Begin
        If(Findobj(x, y, 'Chop down '+Capitalize(TreeTypeColor), TempTreeColor, C))Then
        Begin
          GetMousePos(x, y);
          Players[CurrentPlayer].Integer1 := Getcolor(x, y);
          Writeln('Tree Color Successfully Found: '+IntToStr(Players[CurrentPlayer].Integer1)+' at: ('+IntToStr(x)+', '+IntToStr(y)+') with Tolerance: '+IntToStr(c));
          Break;
        end;
      end;
      If(Players[CurrentPlayer].Integer1 = 0)Then
      Begin
        Writeln('Tree Color not Found');
        Writeln('Player is Inactive!');
        Players[CurrentPlayer].Active := False;
        Players[CurrentPlayer].Loc := 'Tree AutoColor Failed!';
        Logout;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Woodcutting                                                     ]
    [  >>  Function StarFindEnt(TreeName: String): Boolean;                        ]
    [  >>  Returns True if an Ent is Found                                         ]
    [ ---------------------------------------------------------------------------- }


    Function StarFindEnt(TreeName: String): Boolean;
    Var
      H, S, L: Extended;
      R, G, B: Integer;
      cx, cy, ax, ay, i: Integer;
      Temp: Array[0..5] of Integer;
    Begin
      if (IsTextInAreaEx(7, 7, 180, 25, cx, cy, TreeName, 100, UpChars, True,
        True, 0, 2, -1)) then
      Begin
        For i := 0 to 5 do
        Begin
          ax := cx + i;
          ay := cy + 3;
          Temp[i] := GetColor(ax, ay);
          //Writeln(IntToStr(Temp[i])+' '+IntToStr(ax)+' '+IntToStr(ay));
        end;
        For i := 0 to 5 do
        Begin
          ColorToHSL(Temp[i], H, S, L);
          ColorToRGB(Temp[i], R, G, B);
          If ((H >= 10) and (H <= 20) and
             (S >= 80) and (S <= 100) and
             (L >= 35) and (L <= 55)) then
          Begin
            Result := True;
            Exit;
          end else
          If ((R > 190) and (R < 225) and
             (G > 190) and (G < 225) and
             (B >= 0) and (B < 25)) then
          Begin
            Result := True;
            Exit;
          end
          Wait(1);
        end;
        if(FindColorTolerance(cx, cy, 122333, 60, 1, 123, 15, 15))then
          Result := True;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Function UpdateCoords(Var ax, ay: Integer; TheColor: Integer): Boolean; ]
    [  >>  Updates Color Coords When you are Moving after a Click                  ]
    [  >>  Huge Thanks to Sumillion and Lorax for the Function - modified by Star  ]
    [ ---------------------------------------------------------------------------- }


    Function UpdateCoords(Var cx, cy: Integer; ax, ay, TheColor, Tol: Integer): Boolean;
    var
      //ax, ay,
      Counter: Integer;
    Begin
      StarDebug('Updating Color Coords ...', DebugNumber);
      //GetMousePos(ax, ay);
      If (ax < 20) then ax := 20; If (ay < 20) then ay := 20;
      While (FlagPresent) and (FindColorSpiralTolerance(cx, cy, TheColor, ax-20, ay-20, ax+20, ay+20, Tol)) do
      begin
        ax := cx; ay := cy;
        Wait(10);
      end;
      If (ax < 10) then ax := 10; If (ay < 10) then ay := 10;
      While (FindColorSpiralTolerance(cx, cy, TheColor, ax-10, ay-10, ax+10, ay+10, Tol)) and (Counter < 100) do
      begin
        ax := cx; ay := cy;
        Counter := Counter + 1;
        Wait(10);
      end;
      Result := FindColorSpiralTolerance(cx, cy, TheColor, ax-10, ay-10, ax+10, ay+10, Tol);
      if (not Result) then
        StarDebug('We lost the Color while Updating it', DebugNumber)
      else
        StarDebug('Updated Color Coords', Debugnumber);
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Woodcutting                                                     ]
    [  >>  Function StartChopping(Click: Boolean): Boolean;                        ]
    [  >>  Starts Cutting the Tree, Returning a Boolean                            ]
    [ ---------------------------------------------------------------------------- }


    Function StartChopping(var cx, cy, TreeColor: Integer; Click: Boolean): Boolean;
    Begin
      If not(LoggedIn)then Exit;
      StarDebug('Finding '+Players[CurrentPlayer].String2, 4);
      Randoms('');

      While not(FindColorSpiralTolerance(cx, cy, Players[CurrentPlayer].Integer1, MSX1, MSY1, MSX2, MSY2, 5)) do
      Begin
        If not(Loggedin) then Exit;
        Randoms('woodcutting');
        Wait(100);
      end;

      Repeat
        If not(LoggedIn) then Exit;
        If(FindObj(cx, cy, Capitalize(Players[CurrentPlayer].String2), Players[CurrentPlayer].Integer1, 2))and
          not (StarFindEnt(Capitalize(Players[CurrentPlayer].String2))) then
        Begin
          GetMousePos(x, y);
          TreeColor := GetColor(x, y);
          If (Click) then
          begin
            If (Random(5) = 0) then
            Begin
              Mouse(x, y, 0, 0, False);
              Wait(100 + Random(100));
              ChooseOption(x, y, 'Chop');
            end else
              Mouse(x, y, 0, 0, True);
          end  else
            MMouse(x, y, 0, 0);
          Result := True;
        end;
        Wait(100 + Random(100));
      until(Result = True)
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Woodcutting                                                     ]
    [  >>  Procedure WaitWhilstChopping;                                           ]
    [  >>  Waits Whilst the tree is Being Cut, Searching for Randoms               ]
    [ ---------------------------------------------------------------------------- }


    Procedure Chopping;
    Var
      cx, cy, Counter, CountUntil, Current, Mark, TreeColor: Integer;
    begin
      If StartChopping(cx, cy, TreeColor, True) then
      begin
        If UpdateCoords(x, y, cx, cy, TreeColor, 10)then
          MMouse(x, y, 0, 0)  //MMouse(cx, cy, 0, 0)
        else
        Begin
          Flag;
          Wait(400 + Random(200));
          StartChopping(x, y, TreeColor, False)
        end;

        Current := InvCount;
        MarkTime(Mark);
        CountUntil := 64 + Random(20);
        Counter := 0;

        repeat
          If not(LoggedIn) then Exit;
          Counter := Counter + 1;
          Status('Chopping ' +Capitalize(Players[CurrentPlayer].String2)+ ': '+intToStr(Counter)+'/'+IntToStr(CountUntil));
          Players[CurrentPlayer].Loc := 'Chopping '+Capitalize(Players[CurrentPlayer].String2);

          If Randoms('woodcutting')then Exit;
          Wait(10);

          If (StarFindEnt(Capitalize(Players[CurrentPlayer].String2)))then
          begin
            EntsAvoided := EntsAvoided + 1;
            Writeln('Ent Number '+IntToStr(EntsAvoided)+' Found');
            If ScreenShots then
              TakeScreen('Ent Avioded', EntsAvoided);
            CheckGas('Ent', False, cx, cy);
            Exit;
          end;
          Wait(10);

          If (TimeFromMark(Mark) >= 20*1000) and (Current = InvCount) then
            Break
          else
          begin
            Current := InvCount;
            MarkTime(Mark);
          end;
          Wait(10);

        until not(IsUpText(Capitalize(Players[CurrentPlayer].String2))) or (Counter >= CountUntil) or (InventoryCount >= 28)

        If (Counter >= CountUntil) then
          If (Random(AntiBanRandomness) = 0) then
            DoAntiBan(True);
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Fishing                                                         ]
    [  >>  function FindFish(var cx, cy: Integer) : Boolean;                       ]
    [  >>  Finds a Fishing Spot Depending on the Type Chosen                       ]
    [ ---------------------------------------------------------------------------- }


    function FindFish(var cx, cy: Integer) : Boolean;
    var
      a, c, i, x1, y1, x2, y2, ix, iy: Integer;
    begin
      If not(Loggedin) then Exit;
      StarDebug('Finding Fish', 4);
      if(FindColorSpiralTolerance(x, y, 15714472, MSX1, MSY1, MSX2, MSY2, 30))then    //15515800
      begin
        x1:= 245;
        y1:= 165;
        x2:= 277;
        y2:= 185;
        repeat
          a:=a+1;
          if(a=1)then
            c:= c + 1;
          if(a=3)then
            c:= c + 1;
          for i:=1 to c do
          begin
            if(a=1)then
            begin
              x1:= x1 + 30;
              x2:= x2 + 30;
            end else
            if(a=2)then
            begin
              y1:= y1 - 20;
              y2:= y2 - 20;
            end else
            if(a=3)then
            begin
              x1:= x1 - 30;
              x2:= x2 - 30;
            end else
            if(a=4)then
            begin
              y1:= y1 + 20;
              y2:= y2 + 20;
            end;
            if(x1=485)and(x2=517)then
              x2:= x2 - 2;
            if(y1=325)and(y2=345)then
              y2:= y2 - 7;
            if(x2>515)then
              Break;
            if(FindColorSpiralTolerance(ix, iy, 15714472, x1, y1, x2, y2, 30))then
            begin
              MMouse(ix, iy, 3, 3)
              Wait(100 + random(100))
              if((Option2('Cage'))and(Players[CurrentPlayer].String2 = 'Cage')) or
              ((Option2('Net')) and (Players[CurrentPlayer].String2 = 'SmallNet'))then
              begin
                Mouse(ix, iy, 0, 0, True);
                wait(100 + random(100));
                Result := True;
                cx := ix; cy := iy;
                Exit;
              end else
              if ((Option2('Cage')) and (Players[CurrentPlayer].String2 = 'Harpoon'))then
              begin
                Result := True;
                cx := ix; cy := iy;
                Mouse(ix, iy, 0, 0, False);
                wait(100 + random(100));
                ChooseOption(x, y, 'Harpoon');
                Wait(100 + Random(50));
                Exit;
              end;
            end;
          end;
          if(a  = 4)then  a:= 0;
        until(x2>515) or (Result = True)
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Fishing                                                         ]
    [  >>  Function FishSpotPresent(cx, cy: Integer): Boolean;                     ]
    [  >>  Checks if a Fishing Spot is Still Present                               ]
    [ ---------------------------------------------------------------------------- }


    Function FishSpotPresent(cx, cy: Integer): Boolean;
    Var
      i : integer;
    Begin
      If not(Loggedin) then Exit;
      For i := 1 to 10 do
      Begin
        If (cx < 10) then cx := 10; If (cy < 10) then cy := 10;
        If(FindColorSpiralTolerance(x, y, 15515800, cx-10, cy-10, cx+10, cy+10, 30))then
          Result := True;
        If(Result = True)then
          Break;
        Wait(10);
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Fishing                                                         ]
    [  >>  Procedure DoFishing;                                                    ]
    [  >>  Waits Whilst Fishing Occurs                                             ]
    [ ---------------------------------------------------------------------------- }


    Procedure DoFishing;
    Var
      q, e, ax, ay, cx, cy, Mark, Current : integer;
      i : Extended;
    Begin
      If not(Loggedin) then Exit;
      Current := InvCount;
      If (FindFish(ax, ay)) then
      begin
        UpdateCoords(cx, cy, ax, ay, 15714472, 30)
        e := 70 + Random(30)
        StarDebug('Fishing', 4);
        MarkTime(Mark);
        Repeat

          If not(Loggedin) then Exit;
          i := i + 1;
          Status('Fishing: ' +FloatToStr(I)+ '/' +IntToStr(E));
          If Randoms('fishing')then Exit;
          Wait(50);

          If (Random(6) = 0) then
            For q := 1 to 4 do
            Begin
              i := i + 0.25;
              If (Random(AntiBanRandomness) = 0) then DoAntiBan(False);
            end;
          Wait(50);

          If (TimeFromMark(Mark) >= 22*1000) and (Current = InvCount) then
            Break
          else
          begin
            Current := InvCount;
            MarkTime(Mark);
          end;
          Wait(50);

        Until( I >= E ) or (InventoryFull) or not(FishSpotPresent(cx, cy))
      end else StarDebug('Fish Not Found', DebugNumber);
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Function StarOpenBank(LookForColor: integer): Boolean;                  ]
    [  >>  Opens the Bank, Looking for a Specific Color                            ]
    [ ---------------------------------------------------------------------------- }


    Function StarOpenBank(LookForColor: Integer): Boolean;
    var
      c: Integer;
    begin
      If not(Loggedin)then Exit;
      if(FindObjMultiText(x, y, 'Use B', 'Bank', 'booth', LookForColor, 12))then
      begin
        Mouse(x, y, 1, 1, false);
        if(ChooseOption(x, y, 'quickly')) or (ChooseOption(x, y, 'Bank Banker'))then
        begin
          Flag;
          repeat
            Wait(100);
            c := c + 1
          until(BankScreen) or (c >= 50) or (PinScreen)
          If (BankScreen) then
          begin
            If not(Getcolor(475, 75) = 5531254)then
              Mouse(475, 77, 0, 0, true);
            Result := True
            Exit;
          end else
          If (PinScreen) then
          begin
            CloseBank;
            Logout;
            Players[CurrentPlayer].Loc := 'Pin Screen Detected!';
            Players[CurrentPlayer].Active := False;
            Exit;
          end else
          If (C >= 50) then
          begin
            CloseBank;
            Logout;
            Players[CurrentPlayer].Loc := 'Timed out when Opening Bank';
            Players[CurrentPlayer].Active := False;
            Exit;
          end;
        end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Prayer                                                          ]
    [  >>  Function GrabBones(Bank: Boolean): Boolean;                             ]
    [  >>  Waits for Bones to Appear and Picks up Bones off of the Floor OR        ]
    [      Opens the banks and Withdraws any Bones found in the First Few Slots    ]
    [ ---------------------------------------------------------------------------- }


    Function GrabBones(Bank: Boolean): Boolean;
    var
      Searchfor2, Dx, Dy, Current, Mark: Integer;            //1 = Text
      SearchFor1: String;                                    //2 = Bitmap
    begin
      If not(LoggedIn) then Exit;
      If InventoryFull then Exit;
      Current := InvCount;
      StarDebug('Grabbing Bones', 4);

      If((Players[CurrentPlayer].Integer1) = 0) then
        Players[CurrentPlayer].Integer1 := 13355985;

      Case Lowercase(Players[CurrentPlayer].String2) of
        'bones'     : SearchFor2 := DTMBones;
        'big bones' : SearchFor2 := DTMBigBones;
        else Begin Writeln('Something Wrong with SearchFor2'); Exit; end;
      end;

      If not(Bank) then
      Begin
        while not(FindColorSpiralTolerance(dx, dy, Players[CurrentPlayer].Integer1, MSX1+20, MSY1+20, MSX2-20, MSY2-20, 20))do
        begin
          Randoms('');
          Wait(10);
        end;
        If(FindObj(dx, dy, 'Take', Players[CurrentPlayer].Integer1, 20))then
        begin
          Mouse(dx, dy, 0, 0, False);
          Wait(100 + Random(100));
          Case Lowercase(Players[CurrentPlayer].String2) of
            'bones'     : SearchFor1 := 'Bones';
            'big bones' : SearchFor1 := 'Big bones';
            else Begin Writeln('Something Wrong with SearchFor1'); SearchFor1 := 'ones'; end;
          end;
          If (FindText(dx, dy, 'ke '+SearchFor1, UpChars, MSX1, MSY1, MSX2, MSY2))then
          begin
            Mouse(dx + 5 + Random(5), dy + 2 + Random(1), 0, 0, True);
            Flag;
            MarkTime(mark);
            while (Current = InvCount) do
            begin
              Wait(200 + Random(100));
              If(TimeFromMark(Mark) > 3000) then Break;
            end;
            Wait(100 + Random(100));
          end else
          Begin
            MMouse(Random(MSCX), Random(MSCY), 0, 0);
            If (Random(AntibanRandomness) = 0) then DoAntiBan(True);
          end;
        end else
        begin
          Wait(200 + Random(200));
          If (Random(AntibanRandomness) = 0) then DoAntiBan(True);
        end;
      end else
      begin
        If (StarOpenBank(7113112)) then
        begin
          Wait(100);
          If(FindDTM(SearchFor2, dx, dy, MSX1, MSY1, MSCX, MSCY))then
          begin
            Mouse(dx, dy, 2, 2, False);
            Wait(100 + Random(100));
            If (FindText(dx, dy, 'draw Al', UpChars, MSX1, MSY1, MSX2, MSY2))then
            begin
              Mouse(dx + 5 + Random(5), dy + 2 + Random(1), 0, 0, True);
              while (InvCount = 0) do
              begin
                Wait(200 + Random(100));
                If(TimeFromMark(Mark) > 3000) then Break;
              end;
              Wait(100 + Random(100));
              CloseBank;
              Result := True;
            end else
            begin
              CloseBank;
              Logout;
              Players[CurrentPlayer].Loc := 'No Bones in bank!';
              Players[CurrentPlayer].Active := False;
            end;
          end else
          begin
            CloseBank;
            Logout;
            Players[CurrentPlayer].Loc := 'No Bones in bank!';
            Players[CurrentPlayer].Active := False;
          end;
        end;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Prayer                                                          ]
    [  >>  Procedure BuryBones(BoneType: String);                                  ]
    [  >>  Buries the Specified Type of Bones                                      ]
    [ ---------------------------------------------------------------------------- }


    Procedure BuryBones(BoneType: String);
    Var
      i, SearchFor, Current, cx, cy: Integer;
      Coords: TPoint;
    Begin
      If not(LoggedIn) then Exit;
      StarDebug('Burying Bones', 4);
      Case Lowercase(BoneType) of
        'bones'     : SearchFor := DTMBones;
        'big bones' : SearchFor := DTMBigBones;
        else Begin Writeln('Something Wrong with SearchFor'); Exit; end;
      end;

      For i := 1 to 28 do
      begin
        FindTalk;
        If (ExistsItem(i)) then
        begin
          Current := InvCount;
          Coords := ItemCoords(i);
          If(FindDTM(SearchFor, cx, cy, Coords.x-30, Coords.y-20, Coords.x+30, Coords.y+30))then
          Begin
            Mouse(Coords.x, Coords.y+5, 3, 3, True);
            While(InvCount = Current) do
              Wait(100);
            Wait(550 + Random(150));
          end else
            MMouse(MSCX, MSCY, MSCY, MSCY);
        end
        Wait(1);
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure Drop2;                                                        ]
    [  >>  Drops All Items in the Inventory, Leaving out some Specific Ones        ]
    [ ---------------------------------------------------------------------------- }


    Procedure Drop(DTM: Integer);
    Var
      cx, cy, Current, i: integer;
      Coords: TPoint;
    Begin
      If not(LoggedIn) then Exit;
      GameTab(4);
      For i := 1 to 28 do
      begin
        StarDebug('Checking If Item Exists', DebugNumber);
        If (ExistsItem(i)) then
        begin
          Current := InvCount;
          Coords := ItemCoords(i);
          StarDebug('Finding DTM', DebugNumber);
          If(FindDTM(DTM, cx, cy, Coords.x-30, Coords.y-20, Coords.x+30, Coords.y+30))then
          Begin
            Mouse(Coords.x, Coords.y+5, 3, 3, False);
            Wait(50 + Random(50));
            StarDebug('Finding Drop Text', DebugNumber);
            If(FindText(cx, cy, 'Drop', UpChars, MIX1, MIY1, MIX2, MIY2))then
            Begin
              Mouse(cx + 10 + Random(10), cy + 4, 5, 1, True);
              Wait(200);
              While(InvCount = Current) do
                Wait(100);
              Wait(250 + Random(100));
            end else
              ClickText('Cancel', MIX1, MIY1, MIX2, MIY2);
          end;
        end;
        Wait(1);
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Fletching                                                       ]
    [  >>  Function GrabForFletching: Boolean;                                     ]
    [  >>  Opens Bank and Grabs Material needed for Fletching the Specific Item    ]
    [ ---------------------------------------------------------------------------- }


    Function GrabForFletching: Boolean;
    Var
      LookFor: Array of Integer;
      cx, cy, i, Amount, Current: Integer;
      Error: Boolean;
    begin
      If not(LoggedIn) then Exit;
      StarDebug('Grabbing Items for Fletching', 4);

      case Lowercase(Players[CurrentPlayer].String2) of
        'logs --> (u) shortbow'        : begin
                                           SetArrayLength(LookFor, 1);
                                           LookFor[0]:= DTMLog;
                                           Amount := 27;
                                         end;
        'logs --> (u) longbow'         : begin
                                           SetArrayLength(LookFor, 1);
                                           LookFor[0]:= DTMLog;
                                           Amount := 27;
                                         end;
        '(u) shortbow --> (s) shortbow': begin
                                           SetArrayLength(LookFor, 2);
                                           LookFor[0]:= DTMFletching[3];
                                           LookFor[1]:= DTMFletching[1];
                                           Amount := 14;
                                         end;
        '(u) longbow --> (s) longbow'  : begin
                                           SetArrayLength(LookFor, 2);
                                           LookFor[0]:= DTMFletching[4];
                                           LookFor[1]:= DTMFletching[1];
                                           Amount := 14;
                                         end;
        'logs --> (s) shortbow'        : begin
                                           SetArrayLength(LookFor, 2);
                                           LookFor[0]:= DTMLog;
                                           LookFor[1]:= DTMFletching[1];
                                           Amount := 13;
                                         end;
        'logs --> (s) longbow'         : begin
                                           SetArrayLength(LookFor, 2);
                                           LookFor[0]:= DTMLog;
                                           LookFor[1]:= DTMFletching[1];
                                           Amount := 13;
                                         end;
        else begin Writeln('Error in GrabForFletching!'); TerminateScript; end;
      end;
      If (StarOpenBank(7113112)) then
      begin
        Wait(200 + Random(200));
        If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 3) = '(u)') then
          Deposit(1, 28, 2)
        else
          Deposit(2, 28, 2);
        For i := 0 to GetArrayLength(LookFor)-1 do
        begin
          Current := InvCount;
          Wait(500 + Random(250));
          If (FindDTM(LookFor[i], cx, cy, MSX1, MSY1, MSX2, MSY2))then
          begin
            Mouse(cx, cy, 5, 5, False);
            Wait(100 + Random(50));
            If (Amount >= 27) then
            begin
              If (FindText(cx, cy, 'draw Al', UpChars, MSX1, MSY1, MSX2, MSY2))then
              begin
                Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True)
                While (Current = InvCount) do
                  Wait(150);
                Wait(200 + Random(100));
                Result := true;
              end else
                Error := True;
            end else
            If (FindText(cx, cy, 'draw X', UpChars, MSX1, MSY1, MSX2, MSY2))then
            begin
              Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True);
              While (GetColor(214, 434) = 0) and (GetColor(439, 434) = 0) and (LoggedIn)do
                Wait(100);
              Wait(200 + Random(100));
              TypeSend(IntToStr(Amount));
              While (Current = InvCount) and (Loggedin) do
                Wait(150);
              Wait(200 + Random(100));
              Result := True;
            end else
              Error := True;
          end else
          begin
            Error := True;
            StarDebug('DTM LookFor[' +IntToStr(i)+ '] was not Found!', DebugNumber);
          end;
          If (Error = True) then
          begin
            Players[CurrentPlayer].Loc := 'Could not Withdraw Items!';
            Players[CurrentPlayer].Active := False;
            CloseBank;
            Logout;
            Exit;
          end;
        end;
        CloseBank;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Part of Fletching                                                       ]
    [  >>  Procedure Fletch;                                                       ]
    [  >>  Fletches the Specific Item into the Desired Item                        ]
    [ ---------------------------------------------------------------------------- }


    Procedure Fletch;
    var
      cx, cy, dx, dy, Number, Current, Mark: Integer;
      Error: Boolean;
      LookForText: String;
    begin
      If not(LoggedIn) then Exit;
      StarDebug('Fletching Items', 4);
      GameTab(4);
      Wait(200 + Random(100));
      //Cut Logs
      If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 2) = 'lo') then
      begin
        If (FindDTM(DTMFletching[2], cx, cy, MIX1, MIY1, MIX2, MIY2))then
        begin
          Mouse(cx, cy, 5, 5, True);
          Wait(200 + Random(100));
        end else
          Error := True;
        If (FindDTM(DTMLog, cx, cy, MIX1, MIY1, MIX2, MIY2)) and not(Error) then
        begin
          Mouse(cx, cy, 5, 5, True);
          Wait(200 + Random(100));
        end else
          Error := True;
        While (GetColor(214, 434) = 0) and (GetColor(439, 434) = 0) and (loggedIn) and not(Error) do
          Wait(100);
        Wait(200 + Random(100));
        case Lowercase(Players[CurrentPlayer].String2) of
          'logs --> (u) shortbow', 'logs --> (s) shortbow' : LookForText := 'hort';
          'logs --> (u) longbow', 'logs --> (s) longbow'  : LookForText := 'ong';
          else begin Writeln('Error in Fletch 1'); Exit; end;
        end;
        If (FindNPCChatText(LookForText)) and not(Error) then
        begin
          Mouse(x, y-30, 8, 8, False);
          Wait(100 + Random(50));
          If (FindText(cx, cy, 'ake X', UpChars, MCX1, MCY1, MCX2, MCY2))then
          begin
            Mouse(cx + 5 + Random(5), cy + 2 + Random(1), 0, 0, True);
            While not(GetColor(256, 410) = 8388608) and (LoggedIn) do
              Wait(100);
            Wait(200 + Random(100));
            TypeSend(IntToStr(28 + Random(1000)));
            MarkTime(Mark);
            repeat
              If not(LoggedIn) then Exit;
              Wait(10);
              If (Random(AntibanRandomness) = 0) then DoAntiBan(False);
              If (Randoms('')) then Exit;
            until (InChat('ave run')) or not (FindDTM(DTMLog, cx, cy, MIX1, MIY1, MIX2, MIY2)) or (TimeFromMark(Mark) > 60*1000)
          end else
          begin
            Mouse(MSCX, MSCY, MSCX, MSCY, False);
            MMouse(MSCX, MSCY, MSCX, MSCY);
            Error := True;
          end;
        end else
          Error := True;
        If (Error) then
        begin
          Players[CurrentPlayer].loc := 'Could not Fletch 1!';
          Players[CurrentPlayer].active := False;
          Logout;
          Exit;
        end;
      end;
      // Unstrung to Strung.
      If (Pos('(s)', Lowercase(Players[CurrentPlayer].String2)) > 0) then
      begin
        case Lowercase(Players[CurrentPlayer].String2) of
          '(u) shortbow --> (s) shortbow', 'logs --> (s) shortbow': Number := 3;
          '(u) longbow --> (s) longbow', 'logs --> (s) longbow': Number := 4;
          else begin Writeln('Error in Fletch 2!'); Exit; end;
        end;
        Repeat
          Current := 0;
          Current := InvCount;
          If (FindDTM(DTMFletching[1], cx, cy, MIX1, MIY1, MIX2, MIY2))then
          begin
            Mouse(cx, cy, 5, 5, True);
            Wait(200 + Random(100));
          end else
            Error := True;
          If (FindDTM(DTMFletching[Number], dx, dy, MIX1, MIY1, MIX2, MIY2)) and not(Error) then
          begin
            Mouse(dx, dy, 5, 5, True);
            Wait(200 + Random(100));
          end else
            Error := True;
          MarkTime(Mark);
          While (Current = InvCount) and not(Error) and (TimeFromMark(Mark) < 20*1000) do
            Wait(100);
          Wait(100 + Random(100));
        until (Error)
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Procedure LoadDTMs;                                                     ]
    [  >>  Loads all DTMs needed into the Memory                                   ]
    [ ---------------------------------------------------------------------------- }


    Procedure LoadDTMsandBitmaps;
    Begin
      DTMFletching[1] := DTMFromString('78DA637CC5C0C0E0C780029ACA23181E02694' +  //String
                       '620FE0F048CF7808C080634C0884402E9B740228A809AEF402294' +
                       '809ABB40C29B809A2F986EC650F394B07B0036370EED');
      DTMFletching[2] := DTMFromString('78DA63F460626078C28002CAF272181E02694' +  //Knife
                       '620FE0F048C7640359F18D000231209A441E6DC27A0C61FA8E61A' +
                       '01353E40358F08A87103AA798D5F0D00E5B80D52');
      DTMFletching[3] := DTMFromString('78DA639CC7C4C0F08C01057495E6313C04D28' +  //Shortbow
                       'C40FC1F08189702D53C6640038C4824909E0954F38A809AA94035' +
                       'AF09A8E903AA794740CD74A09A1704D42C04AA794A40CD02C2FE0' +
                       '200F0A71285');
      DTMFletching[4] := DTMFromString('78DA63EC636060F0644001735A6A191E02694' +  //Longbow
                       '620FE0F048CD3808C080634C088440269909A60026A2601091F02' +
                       '6A40EEF126A0662A900824A0A607D35F186A66008970FC6A00FFA' +
                       'D0DA1');
      DTMMining[1] := DTMFromString('78DA639CC4C4C060CBC8800CBC7415191E026' +     //Ores
                    '990E87F20606C04AA7144550391859140BA17A8C680809A794035' +
                    'A604D4CC01AA7121A0A607A8C69B809A36A01A73026AA603D518E' +
                    '257030091BF0C02');
      DTMMining[2] := DTMFromString('78DA632C66626078C6800278AB84181E02694' +     //Gems
                    '620FE0F048C19986A20B2301248E703D57C20A0A61AA8E61D0135' +
                    '5540350F08A82902AAB98D5F0D00E0910DAA');
      DTMLog := DTMFromString('78DA638C676060F0634001EEA69C0C0F81342' +           //Logs
              '310FF0702C64420239C010D302291403A0C48441050E30F248208' +
              'A8C905128104D464821C49404D3A9008C5AF06005AEA0A55');
      DTMBones := DTMFromString('78DA639CC3C4C0F09401059C3E7298E104906' +         //Normal Bones
                '604E2FF40C0381DA8E635031A60442281F402A09A6704D42C06AA' +
                'B94F40CD244CF760A8590154F304BF1A0094DB1042');
      DTMBigBones := DTMFromString('78DA637467626098CEC8800C76AD5FCF70024' +      //Big Bones
                   '88344FF0301630050CD02543510591809A4ED806A661350130C54' +
                   '3393801A3722CCF103AA998C5F0D00A32B0C55');
      BrokenAxeMask   := BitmapFromString(9, 10, 'z78DA7373230D1890' +            //Broken Axe Mask
                  '05C8D34BAA2EE2D5E3F21131FEC56FCBE091A53C34007F307225');
      DTMFishing[1] := DTMFromString('78DA632C65626078C28002762608333C04D28' +    //Lobster
                     'C40FC1F081853806A5E30A0014624124883CCF944404D3550CD33' +
                     '026A6A816AAE1350530254731FBF1A0050520E3B');
      DTMFishing[2] := DTMFromString('78DA632C666260606564400687269D667808A' +    //SwordFish
                     '441A2FF81803119A84614550D44164602E93CA09AFF0CF8D55402' +
                     'D5701030A78A098987434D2661730014E20AE8');
      DTMFishing[3] := DTMFromString('78DA639CCDC4C0F08201051CDCB19DE121906' +    //Tuna
                     '604E2FF40C03819A8E609031A60442281743F50CD07026A6611A1' +
                     '6629A67B30D42C03AAB98D5F0D008B78103C');
      DTMFishing[4] := DTMFromString('78DA63DCC1C0C0D0CA8002525272181E02694' +    //Anchovies
                     '620FE0F048CEB808C260634C0884402E93D4062220135A780440B' +
                     '0135078144157E350025E10C63');
      DTMFishing[5] := DTMFromString('78DA638C65606068634001E5172B191E02694' +    //Sardine
                     '620FE0F048CE1404607031A604422817402906827A0260E483412' +
                     '50930624EAF1AB0100BC150B1A');
      DTMFishing[6] := DTMFromString('78DA63EC666060686740014776EF667808A41' +    //herring
                     '981F83F1030B600197D0C6880118904D29D40A291809AE940A292' +
                     '809A2940A215BF1A0068080C7D');
      DTMFishing[7] := DTMFromString('78DA637CCDC0C0D0CE8002B6AF59C3F010483' +    //Trout, pike, Salmon
                     '302F17F20607C0464F433A001462412487F0112CD04D43C0112AD' +
                     '04D47C001275F8D5000017520E2C');
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  The Form Procedures                                                     ]
    [  >>  The Following is a Huge list of Form Procedures to Allow the Form to    ]
    [      Work.  They are all Based off of Yakmans Player Manager from SRL        ]
    [  >>  Big Thanks to Ron for helping me fix a stupid error in my Form =)       ]
    [ ---------------------------------------------------------------------------- }


    Procedure SafeInitForm;
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('InitForm', v);
    end;

    procedure ShowFormModal;
    begin
      frmDesign.ShowModal;
    end;

    procedure SafeShowFormModal;
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('ShowFormModal', v);
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Saves Current Options Selected for Switching Players                    ]
    [ ---------------------------------------------------------------------------- }


    Procedure SavePlayersInForm;
    Begin
      Players[CurrentPlayer].Name := UsernameEdit.Text;
      Players[CurrentPlayer].Pass := PasswordEdit.Text;
      Players[CurrentPlayer].Skill := LampSkillComboBox.Text;
      Players[CurrentPlayer].String1 := String1Combobox.Text;
      Players[CurrentPlayer].String2 := String2Combobox.Text;
      Players[CurrentPlayer].String3 := String3Combobox.Text;
      Players[CurrentPlayer].Active := IsActive.Checked;
      Players[CurrentPlayer].Boolean1 := ColorCheckBox.Checked;
      Players[CurrentPlayer].Boolean2 := BankCheckBox.Checked;
      Players[CurrentPlayer].Boolean3 := GemsCheckBox.Checked;
      Players[CurrentPlayer].Integer1 := StrToIntDef(ColorsEdit.Text, 0);
      Players[CurrentPlayer].Integer2 := StrToIntDef(LoadsEdit.Text, 0);
      Players[CurrentPlayer].Integer3 := StrToIntDef(MiningSecsEdit.Text, 0);
      FletchString[CurrentPlayer] := FletchComboBox.Text;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Loads Current Options Selected for Switching Players                    ]
    [ ---------------------------------------------------------------------------- }


    Procedure LoadPlayersInForm;
    Begin
      try
        UsernameEdit.text := Players[CurrentPlayer].Name;
        PasswordEdit.Text := Players[CurrentPlayer].Pass;
        LampSkillComboBox.Text := Players[CurrentPlayer].Skill;
        String1Combobox.Text := Players[CurrentPlayer].String1;
        String2Combobox.Text := Players[CurrentPlayer].String2;
        String3Combobox.Text := Players[CurrentPlayer].String3;
        IsActive.Checked := Players[CurrentPlayer].Active;
        ColorCheckBox.Checked := Players[CurrentPlayer].Boolean1;
        BankCheckBox.Checked := Players[CurrentPlayer].Boolean2;
        GemsCheckBox.Checked := Players[CurrentPlayer].Boolean3;
        ColorsEdit.Text := IntToStr(Players[CurrentPlayer].Integer1);
        LoadsEdit.Text := IntToStr(Players[CurrentPlayer].Integer2);
        MiningSecsEdit.Text := IntToStr(Players[CurrentPlayer].Integer3);
        FletchComboBox.Text := FletchString[CurrentPlayer];
      except
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Saves Current Options To File                                           ]
    [ ---------------------------------------------------------------------------- }


    procedure SaveUs2;
    var
      f, CharsFile: Integer;
    begin
      If (PowerMainSkillsFileName = '') then PowerMainSkillsFileName := 'PowerSkills'
        CharsFile := RewriteFile(ScriptPath + PowerMainSkillsFileName + '.dat', False)
      For f := 0 to GetArrayLength(players) - 1 do
      begin
        WriteFileString(CharsFile, 'name' +IntToStr(f)+ '=' +players[f].name+ Chr(13))
        WriteFileString(CharsFile, 'pass' +IntToStr(f)+ '=' +players[f].pass+ Chr(13))
        WriteFileString(CharsFile, 'skill' +IntToStr(f)+ '=' +players[f].skill+ Chr(13))
        WriteFileString(CharsFile, 'string1' +IntToStr(f)+ '=' +players[f].string1+ Chr(13))
        WriteFileString(CharsFile, 'string2' +IntToStr(f)+ '=' +players[f].string2 + Chr(13))
        WriteFileString(CharsFile, 'string3' +IntToStr(f)+ '=' +players[f].string3 + Chr(13))
        WriteFileString(CharsFile, 'integer1' +IntToStr(f)+ '=' +IntToStr(players[f].Integer1) + Chr(13))
        WriteFileString(CharsFile, 'integer2' +IntToStr(f)+ '=' +IntToStr(players[f].Integer2) + Chr(13))
        WriteFileString(CharsFile, 'integer3' +IntToStr(f)+ '=' +IntToStr(players[f].Integer3) + Chr(13))
        WriteFileString(CharsFile, 'active' +IntToStr(f)+ '=' +BoolToStr(players[f].Active) + Chr(13))
        WriteFileString(CharsFile, 'boolean1' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean1) + Chr(13))
        WriteFileString(CharsFile, 'boolean2' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean2) + Chr(13))
        WriteFileString(CharsFile, 'boolean3' +IntToStr(f)+ '=' +BoolToStr(players[f].Boolean3) + Chr(13))
        WriteFileString(CharsFile, 'fletchstring' +IntToStr(f)+ '=' +fletchstring[f] + Chr(13))
        //Writeln('Saved Player: '+IntToStr(f));
      end;
      CloseFile(charsfile)
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Loads Current Options from File                                         ]
    [ ---------------------------------------------------------------------------- }


    procedure LoadUs2;
    var
      f, CharsFile, Temp: Integer;
      CharsFileString: String;
    begin
      if (PowerMainSkillsFileName = '') then PowerMainSkillsFileName := 'PowerSkills';
      CharsFile := OpenFile(ScriptPath + PowerMainSkillsFileName + '.dat', False)
      if (CharsFile < 0) then
      begin
        SaveUs2;
        CharsFile := OpenFile(AppPath + filename + '.dat', False)
        if (CharsFile < 0) then
        begin
          WriteLn('Error Loading Chars');
          Exit;
        end
      end
      ReadFileString(CharsFile, CharsFileString, FileSize(CharsFile))
      CloseFile(CharsFile)
      Temp := CountPlayers(CharsFileString);
      If (Temp <= 0) then Temp:= 1;
      SetArrayLength(players, Temp);
      SetArrayLength(fletchstring, Temp);
      HowManyPlayers := GetArrayLength(players)
      for f := 0 to HowManyPlayers - 1 do
      begin
        players[f].Name :=  Between('name' + IntToStr(f) + '=', chr(13), CharsFileString);
        players[f].Pass :=  Between('pass' + IntToStr(f) + '=', chr(13), CharsFileString);
        players[f].Skill :=  Between('skill' + IntToStr(f) + '=', chr(13), CharsFileString);
        players[f].String1 := Between('string1' + IntToStr(f) + '=', chr(13), CharsFileString);
        players[f].String2 := Between('string2' + IntToStr(f) + '=', chr(13), CharsFileString);
        players[f].String3 := Between('string3' + IntToStr(f) + '=', chr(13), CharsFileString);
        try
          players[f].Integer1 := StrToInt(Between('integer1' + IntToStr(f) + '=', chr(13), CharsFileString));
        except
        end;
        try
          players[f].Integer2 := StrToInt(Between('integer2' + IntToStr(f) + '=', chr(13), CharsFileString));
        except
        end;
        try
          players[f].Integer3 := StrToInt(Between('integer3' + IntToStr(f) + '=', chr(13), CharsFileString));
        except
        end;
        players[f].Active := StrToBool(Between('active' + IntToStr(f) + '=', chr(13), CharsFileString));
        players[f].Boolean1 := StrToBool(Between('boolean1' + IntToStr(f) + '=', chr(13), CharsFileString));
        players[f].Boolean2 := StrToBool(Between('boolean2' + IntToStr(f) + '=', chr(13), CharsFileString));
        players[f].Boolean3 := StrToBool(Between('boolean3' + IntToStr(f) + '=', chr(13), CharsFileString));
        fletchstring[f] := Between('fletchstring' + IntToStr(f) + '=', chr(13), CharsFileString);
        //Writeln('Loading Player: '+IntToStr(f));
      end;
      CloseFile(CharsFile);
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Changes Options Depending on Skill Chosen                               ]
    [ ---------------------------------------------------------------------------- }


    Procedure String1Change(Sender: TObject);
    Begin
      Case Lowercase(String1ComboBox.Text) of
        'woodcutting': Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Tree');
                         String2ComboBox.Items.Add('Oak');
                         String2ComboBox.Items.Add('Willow');
                         String2ComboBox.Items.Add('Maple');
                         String2ComboBox.Items.Add('Yew');
                         String2ComboBox.Items.Add('Magic');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'mining':      Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Tin');
                         String2ComboBox.Items.Add('Copper');
                         String2ComboBox.Items.Add('Iron');
                         String2ComboBox.Items.Add('Coal');
                         String2ComboBox.Items.Add('Mith');
                         String2ComboBox.Items.Add('Gold');
                         String2ComboBox.Items.Add('Silver');
                         String2ComboBox.Items.Add('Addy');
                         String2ComboBox.Items.Add('Rune');
                         MiningSecsLabel.Visible := True
                         MiningSecsEdit.Visible := True;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := True;
                       end;
        'bone burying':Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Bones');
                         String2ComboBox.Items.Add('Big bones');
                         MiningSecsLabel.Visible := False;
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := True;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'fishing' :    Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('SmallNet');
                         String2ComboBox.Items.Add('Cage');
                         String2ComboBox.Items.Add('Harpoon');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'fletching':   Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Logs --> (U) Shortbow');
                         String2ComboBox.Items.Add('Logs --> (U) Longbow');
                         String2ComboBox.Items.Add('(U) Shortbow --> (S) Shortbow');
                         String2ComboBox.Items.Add('(U) Longbow --> (S) Longbow');
                         String2ComboBox.Items.Add('Logs --> (S) Shortbow');
                         String2ComboBox.Items.Add('Logs --> (S) Longbow');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := True;
                         GemsCheckBox.Visible := False;
                       end;
        ''           : Begin
                         String2ComboBox.Clear;
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        Else String2ComboBox.Clear;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Changes Options Depending on Skill Chosen Again                         ]
    [ ---------------------------------------------------------------------------- }


    Procedure String1Change2;
    Begin
      Case Lowercase(Players[CurrentPlayer].String1) of
        'woodcutting': Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Tree');
                         String2ComboBox.Items.Add('Oak');
                         String2ComboBox.Items.Add('Willow');
                         String2ComboBox.Items.Add('Maple');
                         String2ComboBox.Items.Add('Yew');
                         String2ComboBox.Items.Add('Magic');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'mining':      Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Tin');
                         String2ComboBox.Items.Add('Copper');
                         String2ComboBox.Items.Add('Iron');
                         String2ComboBox.Items.Add('Coal');
                         String2ComboBox.Items.Add('Mith');
                         String2ComboBox.Items.Add('Gold');
                         String2ComboBox.Items.Add('Silver');
                         String2ComboBox.Items.Add('Addy');
                         String2ComboBox.Items.Add('Rune');
                         MiningSecsLabel.Visible := True
                         MiningSecsEdit.Visible := True;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := True;
                       end;
        'bone burying':Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Bones');
                         String2ComboBox.Items.Add('Big bones');
                         MiningSecsLabel.Visible := False;
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := True;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'fishing' :    Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('SmallNet');
                         String2ComboBox.Items.Add('Cage');
                         String2ComboBox.Items.Add('Harpoon');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        'fletching':   Begin
                         String2ComboBox.Clear;
                         String2ComboBox.Items.Add('Logs --> (U) Shortbow');
                         String2ComboBox.Items.Add('Logs --> (U) Longbow');
                         String2ComboBox.Items.Add('(U) Shortbow --> (S) Shortbow');
                         String2ComboBox.Items.Add('(U) Longbow --> (S) Longbow');
                         String2ComboBox.Items.Add('Logs --> (S) Shortbow');
                         String2ComboBox.Items.Add('Logs --> (S) Longbow');
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := True;
                         GemsCheckBox.Visible := False;
                       end;
        ''           : Begin
                         String2ComboBox.Clear;
                         MiningSecsLabel.Visible := False
                         MiningSecsEdit.Visible := False;
                         BankCheckBox.Visible := False;
                         FletchComboBox.Visible := False;
                         GemsCheckBox.Visible := False;
                       end;
        Else String2ComboBox.Clear;
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Adds a New User to The Player Array                                     ]
    [ ---------------------------------------------------------------------------- }


    Procedure CreateNewUser(sender: Tobject);
    var
      n : integer;
    begin
      SavePlayersInForm;
      n := GetArrayLength(Players);
      SetArrayLength(Players, n + 1)
      SetArrayLength(FletchString, n + 1)
      CurrentPlayer := n;
      //WriteLn('Players: ' + IntToStr(GetArrayLength(Players)) + ' | Current: ' + IntToStr(CurrentPlayer));
      UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
      PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
      LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
      TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
      LoadPlayersInForm;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Deletes a Player from the Player Array                                  ]
    [ ---------------------------------------------------------------------------- }


    Procedure DeleteAPlayer(sender: tobject);
    var
      n : integer;
    Begin
        n := GetArrayLength(Players);
        if (n < 2) then Exit;
        SetArrayLength(players, n - 1);
        SetArrayLength(FletchString, n - 1);
        CurrentPlayer := n - 2;
        //WriteLn('Players: ' + IntToStr(GetArrayLength(Players)) + ' | Current: ' + IntToStr(CurrentPlayer));
        UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
        PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
        LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
        TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
        LoadPlayersInForm;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Goes to Next Player in the Player Array                                 ]
    [ ---------------------------------------------------------------------------- }


    Procedure PressNextButton(sender: TObject);
    begin
      try
        players[currentplayer + 1].name := players[currentplayer + 1].name
      except
        Exit;
      end
      SavePlayersInForm;
      CurrentPlayer := CurrentPlayer + 1;
      UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
      PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
      LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
      TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
      String1Change2;
      LoadPlayersInForm;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Goes to Previous Player in the Player Array                             ]
    [ ---------------------------------------------------------------------------- }


    Procedure PressBackButton(sender: tobject);
    begin
      if (CurrentPlayer <> 0) then
      begin
        SavePlayersInForm;
        CurrentPlayer := CurrentPlayer - 1;
        UsernameLabel.Caption := IntToStr(CurrentPlayer) +'. Username';
        PasswordLabel.Caption := IntToStr(CurrentPlayer) +'. Password';
        LampSkillLabel.Caption := IntToStr(CurrentPlayer) +'. Lamp Skill';
        TripsLabel.Caption := IntToStr(CurrentPlayer) +'. Loads';
        String1Change2;
        LoadPlayersInForm;
      end
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Saves Options when the Form closes                                      ]
    [ ---------------------------------------------------------------------------- }


    procedure FormClose2(sender: TObject; var CanClose: Boolean);
    begin
      SavePlayersInForm;
      SaveUs2;
      HowManyPlayers := GetArrayLength(players);
      CanClose := True
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Makes Labels Visible or Invisible Depending on the Options Chosen       ]
    [ ---------------------------------------------------------------------------- }


    procedure ChangeLabels(sender: TObject);
    begin
      If (ColorCheckBox.Checked) then
      Begin
        ColorsLabel.Visible := True;
        ColorsEdit.Visible := True;
      end else
      Begin
        ColorsLabel.Visible := False;
        ColorsEdit.Visible := False;
        Players[CurrentPlayer].Integer1 := 0;
        ColorsEdit.Text := '0';
      end;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Closes the Form and Starts the Script                                   ]
    [ ---------------------------------------------------------------------------- }


    Procedure StartClicked(Sender: TObject);
    var
      v: TVariantArray;
    begin
      SetArrayLength ( V, 0);
      frmDesign.ModalResult:= mrOk;
      StartScript := True;

      SavePlayersInForm;
      SaveUs2;
      HowManyPlayers := GetArrayLength(Players);
      //Writeln(IntToStr(HowManyPlayers));
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Opens the Donations Page.  DOnation are always Appreciated!             ]
    [ ---------------------------------------------------------------------------- }


    Procedure DonateClicked(Sender: TObject);
    begin
      OpenWebPage('https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=starblaster100%40gmail'+
                  '%2ecom&item_name=Starblaster100s%20SCAR%20Scripts&no_shipping=1&no_note=1&tax=0&'+
                  'currency_code=GBP&lc=GB&bn=PP%2dDonationsBF&charset=UTF%2d8');
      For x := 0 to 7 do
        Writeln(' -->  Thank You!  <-- ');
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  Displays the Main Form for the First Time                               ]
    [ ---------------------------------------------------------------------------- }


    Procedure InitForm;
    Begin
    LoadUs2;

    frmDesign := CreateForm;
    frmDesign.Position := poDesktopCenter;
    frmDesign.Width := 313;
    frmDesign.Height := 285;
    frmDesign.Caption := 'PowerSkills by Starblaster100';
    frmDesign.Color := clInactiveCaption;
    frmDesign.Font.Color := clWindowText;
    frmDesign.Font.Height := -11;
    frmDesign.Font.Name := 'MS Sans Serif';
    frmDesign.Font.Style := [];
    frmDesign.Visible := False;
    frmDesign.PixelsPerInch := 96;
    frmDesign.OnCloseQuery := @FormClose2;

    TitleLabel := TLabel.Create(frmDesign);
    TitleLabel.Parent := frmDesign;
    TitleLabel.Left := 28;
    TitleLabel.Top := 10;
    TitleLabel.Width := 277;
    TitleLabel.Height := 20;
    TitleLabel.Caption := 'PowerSkills by Starblaster100';
    TitleLabel.Font.Color := clWindowText;
    TitleLabel.Font.Height := -17;
    TitleLabel.Font.Name := 'MS Sans Serif';
    TitleLabel.Font.Style := [fsBold, fsUnderline];
    TitleLabel.ParentFont := False;

    CreatePlayerButton := TButton.Create(frmDesign);
    CreatePlayerButton.Parent := frmDesign;
    CreatePlayerButton.Left := 60;
    CreatePlayerButton.Top := 35;
    CreatePlayerButton.Width := 83;
    CreatePlayerButton.Height := 29;
    CreatePlayerButton.Hint := 'Click to Create a New Player';
    CreatePlayerButton.Caption := 'Create Player';
    CreatePlayerButton.ParentShowHint := False;
    CreatePlayerButton.ShowHint := True;
    CreatePlayerButton.TabOrder := 13;
    CreatePlayerButton.OnClick := @CreateNewUser;

    DeletePlayerButton := TButton.Create(frmDesign);
    DeletePlayerButton.Parent := frmDesign;
    DeletePlayerButton.Left := 150;
    DeletePlayerButton.Top := 35;
    DeletePlayerButton.Width := 83;
    DeletePlayerButton.Height := 29;
    DeletePlayerButton.Hint := 'Click to Delete the Current Player';
    DeletePlayerButton.Caption := 'Delete Player';
    DeletePlayerButton.ParentShowHint := False;
    DeletePlayerButton.ShowHint := True;
    DeletePlayerButton.TabOrder := 13;
    DeletePlayerButton.OnClick := @DeleteAPlayer;

    LeftButton := TButton.Create(frmDesign);
    LeftButton.Parent := frmDesign;
    LeftButton.Left := 15;
    LeftButton.Top := 35;
    LeftButton.Width := 38;
    LeftButton.Height := 29;
    LeftButton.Hint := 'Click to go to the Previous Player';
    LeftButton.Caption := '<---';
    LeftButton.ParentShowHint := False;
    LeftButton.ShowHint := True;
    LeftButton.TabOrder := 13;
    LeftButton.OnClick := @PressBackButton;

    RightButton := TButton.Create(frmDesign);
    RightButton.Parent := frmDesign;
    RightButton.Left := 239;
    RightButton.Top := 35;
    RightButton.Width := 38;
    RightButton.Height := 29;
    RightButton.Hint := 'Click to go to the Next Player';
    RightButton.Caption := '--->';
    RightButton.ParentShowHint := False;
    RightButton.ShowHint := True;
    RightButton.TabOrder := 14;
    RightButton.OnClick := @PressNextButton;

    UsernameLabel := TLabel.Create(frmDesign);
    UsernameLabel.Parent := frmDesign;
    UsernameLabel.Left := 16;
    UsernameLabel.Top := 73;
    UsernameLabel.Width := 63;
    UsernameLabel.Height := 16;
    UsernameLabel.Font.Color := clWindowText;
    UsernameLabel.Font.Height := -15;
    UsernameLabel.Font.Name := 'MS Sans Serif';
    UsernameLabel.Font.Style := [];
    UsernameLabel.ParentFont := False;
    UsernameLabel.Caption := '0. Username';

    PasswordLabel := TLabel.Create(frmDesign);
    PasswordLabel.Parent := frmDesign;
    PasswordLabel.Left := 16;
    PasswordLabel.Top := 96;
    PasswordLabel.Width := 60;
    PasswordLabel.Height := 16;
    PasswordLabel.Font.Color := clWindowText;
    PasswordLabel.Font.Height := -15;
    PasswordLabel.Font.Name := 'MS Sans Serif';
    PasswordLabel.Font.Style := [];
    PasswordLabel.ParentFont := False;
    PasswordLabel.Caption := '0. Password';

    LampSkillLabel := TLabel.Create(frmDesign);
    LampSkillLabel.Parent := frmDesign;
    LampSkillLabel.Left := 16;
    LampSkillLabel.Top := 120;
    LampSkillLabel.Width := 62;
    LampSkillLabel.Height := 16;
    LampSkillLabel.Font.Color := clWindowText;
    LampSkillLabel.Font.Height := -15;
    LampSkillLabel.Font.Name := 'MS Sans Serif';
    LampSkillLabel.Font.Style := [];
    LampSkillLabel.ParentFont := False;
    LampSkillLabel.Caption := '0. Lamp Skill';

    TripsLabel := TLabel.Create(frmDesign);
    TripsLabel.Parent := frmDesign;
    TripsLabel.Left := 16;
    TripsLabel.Top := 144;
    TripsLabel.Width := 62;
    TripsLabel.Height := 16;
    TripsLabel.Font.Color := clWindowText;
    TripsLabel.Font.Height := -15;
    TripsLabel.Font.Name := 'MS Sans Serif';
    TripsLabel.Font.Style := [];
    TripsLabel.ParentFont := False;
    TripsLabel.Caption := '0. Loads';

    UsernameEdit := TEdit.Create(frmDesign);
    UsernameEdit.Parent := frmDesign;
    UsernameEdit.Left := 100;
    UsernameEdit.Top := 71;
    UsernameEdit.Width := 121;
    UsernameEdit.Height := 21;
    UsernameEdit.Hint := 'Type in your Username here';
    UsernameEdit.ParentShowHint := False;
    UsernameEdit.ShowHint := True;
    UsernameEdit.TabOrder := 8;
    UsernameEdit.Text := Players[0].Name;

    PasswordEdit := TEdit.Create(frmDesign);
    PasswordEdit.Parent := frmDesign;
    PasswordEdit.Left := 100;
    PasswordEdit.Top := 94;
    PasswordEdit.Width := 121;
    PasswordEdit.Height := 21;
    PasswordEdit.Hint := 'Type in your Password here';
    PasswordEdit.ParentShowHint := False;
    PasswordEdit.PasswordChar := '*';
    PasswordEdit.ShowHint := True;
    PasswordEdit.TabOrder := 9;
    PasswordEdit.Text := Players[0].Pass;

    LampSkillComboBox := TComboBox.Create(frmDesign);
    LampSkillComboBox.Parent := frmDesign;
    LampSkillComboBox.Left := 100;
    LampSkillComboBox.Top := 117;
    LampSkillComboBox.Width := 121;
    LampSkillComboBox.Height := 21;
    LampSkillComboBox.Hint := 'Type in the Skill you want to use a Lamp on if Found';
    LampSkillComboBox.ItemHeight := 13;
    LampSkillComboBox.ParentShowHint := False;
    LampSkillComboBox.ShowHint := True;
    LampSkillComboBox.TabOrder := 10;
    LampSkillComboBox.Text := Players[0].Skill;
    LampSkillComboBox.Items.Add('Strength');
    LampSkillComboBox.Items.Add('Attack');
    LampSkillComboBox.Items.Add('Ranged');
    LampSkillComboBox.Items.Add('Magic');
    LampSkillComboBox.Items.Add('Defence');
    LampSkillComboBox.Items.Add('Hitpoints');
    LampSkillComboBox.Items.Add('Prayer');
    LampSkillComboBox.Items.Add('Agility');
    LampSkillComboBox.Items.Add('Herblore');
    LampSkillComboBox.Items.Add('Thieving');
    LampSkillComboBox.Items.Add('Crafting');
    LampSkillComboBox.Items.Add('Runecrafting');
    LampSkillComboBox.Items.Add('Slayer');
    LampSkillComboBox.Items.Add('Farming');
    LampSkillComboBox.Items.Add('Mining');
    LampSkillComboBox.Items.Add('Smithing');
    LampSkillComboBox.Items.Add('Fishing');
    LampSkillComboBox.Items.Add('Cooking');
    LampSkillComboBox.Items.Add('Firemaking');
    LampSkillComboBox.Items.Add('Woodcutting');
    LampSkillComboBox.Items.Add('Fletching');
    LampSkillComboBox.Items.Add('Construction');
    LampSkillComboBox.Items.Add('Hunting');

    LoadsEdit := TEdit.Create(frmDesign);
    LoadsEdit.Parent := frmDesign;
    LoadsEdit.Left := 100;
    LoadsEdit.Top := 140;
    LoadsEdit.Width := 121;
    LoadsEdit.Height := 21;
    LoadsEdit.Hint := 'Type in how many Loads to PowerSkill before Switching Char.';
    LoadsEdit.ParentShowHint := False;
    LoadsEdit.ShowHint := True;
    LoadsEdit.TabOrder := 10;
    LoadsEdit.Text := IntToStr(Players[0].Integer2);

    IsActive := TCheckBox.Create(frmDesign);
    IsActive.Parent := frmDesign;
    IsActive.Left := 225;
    IsActive.Top := 71;
    IsActive.Width := 53;
    IsActive.Height := 20;
    IsActive.Caption := 'Active?';
    IsActive.ParentShowHint := False;
    IsActive.ShowHint := True;
    IsActive.Hint := 'Should this Player be Active?';
    IsActive.Checked := Players[0].Active;

    ColorCheckBox := TCheckBox.Create(frmDesign);
    ColorCheckBox.Parent := frmDesign;
    ColorCheckBox.Left := 225;
    ColorCheckBox.Top := 94;
    ColorCheckBox.Width := 53;
    ColorCheckBox.Height := 20;
    ColorCheckBox.Caption := 'Colors?';
    ColorCheckBox.ParentShowHint := False;
    ColorCheckBox.ShowHint := True;
    ColorCheckBox.Hint := 'Do you want to pick Your Own Colors?';
    ColorCheckBox.Checked := Players[0].Boolean1;
    ColorCheckBox.OnClick := @ChangeLabels;

    String1ComboBox := TComboBox.Create(frmDesign);
    String1ComboBox.Parent := frmDesign;
    String1ComboBox.Left := 10;
    String1ComboBox.Top := 165;
    String1ComboBox.Width := 80;
    String1ComboBox.Height := 21;
    String1ComboBox.Hint := 'Select the Skill to Power Auto';
    String1ComboBox.ItemHeight := 13;
    String1ComboBox.ParentShowHint := False;
    String1ComboBox.ShowHint := True;
    String1ComboBox.TabOrder := 11;
    String1ComboBox.Text := Players[0].String1;
    String1ComboBox.Items.Add('Woodcutting');
    String1ComboBox.Items.Add('Mining');
    String1ComboBox.Items.Add('Fishing');
    String1ComboBox.Items.Add('Bone Burying');
    String1ComboBox.Items.Add('Fletching');
    String1ComboBox.OnChange := @String1Change;

    String2ComboBox := TComboBox.Create(frmDesign);
    String2ComboBox.Parent := frmDesign;
    String2ComboBox.Left := 95;
    String2ComboBox.Top := 165;
    String2ComboBox.Width := 120;
    String2ComboBox.Height := 21;
    String2ComboBox.Hint := 'Select the Specific thing to Power Auto';
    String2ComboBox.ItemHeight := 13;
    String2ComboBox.ParentShowHint := False;
    String2ComboBox.ShowHint := True;
    String2ComboBox.TabOrder := 12;
    String2ComboBox.Text := Players[0].String2;
    String2ComboBox.OnDropDown := @String1Change;

    String3ComboBox := TComboBox.Create(frmDesign);
    String3ComboBox.Parent := frmDesign;
    String3ComboBox.Left := 220;
    String3ComboBox.Top := 165;
    String3ComboBox.Width := 70;
    String3ComboBox.Height := 21;
    String3ComboBox.Hint := 'Select the Direction to Run in if we are Attacked';
    String3ComboBox.ItemHeight := 13;
    String3ComboBox.ParentShowHint := False;
    String3ComboBox.ShowHint := True;
    String3ComboBox.TabOrder := 12;
    String3ComboBox.Items.Add('N');
    String3ComboBox.Items.Add('E');
    String3ComboBox.Items.Add('S');
    String3ComboBox.Items.Add('W');
    String3ComboBox.Text := Players[0].String3;

    GemsCheckBox := TCheckBox.Create(frmDesign);
    GemsCheckBox.Parent := frmDesign;
    GemsCheckBox.Left := 225;
    GemsCheckBox.Top := 117;
    GemsCheckBox.Width := 78;
    GemsCheckBox.Height := 20;
    GemsCheckBox.Caption := 'Save Gems?';
    GemsCheckBox.ParentShowHint := False;
    GemsCheckBox.ShowHint := True;
    GemsCheckBox.Hint := 'Do you want to save the Gems you Mine?';
    GemsCheckBox.Checked := Players[0].Boolean3;
    If (String1ComboBox.Text = 'Mining') then
      GemsCheckBox.Visible := True
    else
      GemsCheckBox.Visible := False;

    FletchComboBox := TComboBox.Create(frmDesign);
    FletchComboBox.Parent := frmDesign;
    FletchComboBox.Left := 182;
    FletchComboBox.Top := 193;
    FletchComboBox.Width := 100;
    FletchComboBox.Height := 21;
    FletchComboBox.Hint := 'Select What Type of Log the Item is';
    FletchComboBox.ItemHeight := 13;
    FletchComboBox.ParentShowHint := False;
    FletchComboBox.ShowHint := True;
    FletchComboBox.TabOrder := 12;
    FletchComboBox.Items.Add('Normal');
    FletchComboBox.Items.Add('Oak');
    FletchComboBox.Items.Add('Willow');
    FletchComboBox.Items.Add('Maple');
    FletchComboBox.Items.Add('Yew');
    FletchComboBox.Items.Add('Magic');
    FletchComboBox.Text := FletchString[0];
    If (String1ComboBox.Text = 'Fletching') then
      FletchComboBox.Visible := True
    else
      FletchComboBox.Visible := False;

    ColorsLabel := TLabel.Create(frmDesign);
    ColorsLabel.Parent := frmDesign;
    ColorsLabel.Left := 10;
    ColorsLabel.Top := 194;
    ColorsLabel.Width := 80;
    ColorsLabel.Height := 12;
    ColorsLabel.Font.Color := clWindowText;
    ColorsLabel.Font.Height := -12;
    ColorsLabel.Font.Name := 'MS Sans Serif';
    ColorsLabel.Font.Style := [];
    ColorsLabel.ParentFont := False;
    ColorsLabel.Caption := 'Picked Color:';
    If (ColorCheckBox.Checked) then
      ColorsLabel.Visible := True
    else
      ColorsLabel.Visible := False;

    ColorsEdit := TEdit.Create(frmDesign);
    ColorsEdit.Parent := frmDesign;
    ColorsEdit.Left := 77;
    ColorsEdit.Top := 191;
    ColorsEdit.Width := 80;
    ColorsEdit.Height := 21;
    ColorsEdit.Hint := 'Put in the Color of the Item you are Autoing.  Leave as 0 for AutoPick';
    ColorsEdit.ParentShowHint := False;
    ColorsEdit.ShowHint := True;
    ColorsEdit.TabOrder := 8;
    ColorsEdit.Text := IntToStr(Players[0].Integer1);
    If (ColorCheckBox.Checked) then
      ColorsEdit.Visible := True
    else
      ColorsEdit.Visible := False;

    MiningSecsLabel := TLabel.Create(frmDesign);
    MiningSecsLabel.Parent := frmDesign;
    MiningSecsLabel.Left := 162;
    MiningSecsLabel.Top := 194;
    MiningSecsLabel.Width := 80;
    MiningSecsLabel.Height := 12;
    MiningSecsLabel.Font.Color := clWindowText;
    MiningSecsLabel.Font.Height := -12;
    MiningSecsLabel.Font.Name := 'MS Sans Serif';
    MiningSecsLabel.Font.Style := [];
    MiningSecsLabel.ParentFont := False;
    MiningSecsLabel.Caption := 'Seconds:';
    If (String1ComboBox.Text = 'Mining') then
      MiningSecsLabel.Visible := True
    else
      MiningSecsLabel.Visible := False;

    MiningSecsEdit := TEdit.Create(frmDesign);
    MiningSecsEdit.Parent := frmDesign;
    MiningSecsEdit.Left := 210;
    MiningSecsEdit.Top := 191;
    MiningSecsEdit.Width := 80;
    MiningSecsEdit.Height := 21;
    MiningSecsEdit.Hint := 'Number of Seconds you are willing to Wait for a rock to Mine before Clicking Again';
    MiningSecsEdit.ParentShowHint := False;
    MiningSecsEdit.ShowHint := True;
    MiningSecsEdit.TabOrder := 8;
    MiningSecsEdit.Text := IntToStr(Players[0].Integer3);
    If (String1ComboBox.Text = 'Mining') then
      MiningSecsEdit.Visible := True
    else
      MiningSecsEdit.Visible := False;

    BankCheckBox := TCheckBox.Create(frmDesign);
    BankCheckBox.Parent := frmDesign;
    BankCheckBox.Left := 164;
    BankCheckBox.Top := 192;
    BankCheckBox.Width := 125;
    BankCheckBox.Height := 20;
    BankCheckBox.Caption := 'Withdraw From Bank?';
    BankCheckBox.ParentShowHint := False;
    BankCheckBox.ShowHint := True;
    BankCheckBox.Hint := 'Click to Withdraw Bones from Bank and Bury. Otherwise it will pick up from Floor';
    BankCheckBox.Checked := Players[0].Boolean2;
    If (String1ComboBox.Text = 'Bone Burying') then
      BankCheckBox.Visible := True
    else
      BankCheckBox.Visible := False;

    StartButton := TButton.Create(frmDesign);
    StartButton.Parent := frmDesign;
    StartButton.Left := 60;
    StartButton.Top := 220;
    StartButton.Width := 75;
    StartButton.Height := 25;
    StartButton.Hint := 'Click to Start the Script';
    StartButton.Caption := 'Start Script';
    StartButton.ParentShowHint := False;
    StartButton.ShowHint := True;
    StartButton.TabOrder := 15;
    StartButton.OnClick := @StartClicked;

    DonateButton := TButton.Create(frmDesign);
    DonateButton.Parent := frmDesign;
    DonateButton.Left := 150;
    DonateButton.Top := 220;
    DonateButton.Width := 75;
    DonateButton.Height := 25;
    DonateButton.Hint := 'Donations are always Appreciated!';
    DonateButton.Caption := 'Donate!';
    DonateButton.ParentShowHint := False;
    DonateButton.ShowHint := True;
    DonateButton.TabOrder := 15;
    DonateButton.OnClick := @DonateClicked;
    end;

    { ---------------------------------------------------------------------------- ]
    [  >>  The Main Loop                                                           ]
    [  >>  Pretty Self Explanitory ;-)                                             ]
    [ ---------------------------------------------------------------------------- }


    Begin
      SetupSRL;
      SetupSRLMining;
      SetupSRLFishing;
      ScriptID := '67';
      CheckVersion;
      WriteNews;
      Intro;

      try
        SafeInitForm;
        SafeShowFormModal;
      except
        Writeln('Error in InitForm!');
      finally
        FreeForm(frmDesign);
      end;

      If not(StartScript) then TerminateScript;
      BenMouse := False;
      ActivateClient;
      Wait(200 + Random(300));
      GenerateNickNames;
      LoadDTMsandBitmaps;

      Repeat
        NickNameBMP := CreateBitmapMaskFromText(Players[CurrentPlayer].Nick, UpChars);
        If not(Loggedin)then LoginPlayer;
        GetAllLevels;
        Report2 := GetSystemTime;
        Status('Preparing Character');
        GameTab(4);
        Case Lowercase(Players[CurrentPlayer].String1) of
          'woodcutting' : Begin
                            FindAxeHeadColor;
                            AutoTreeColor(Players[CurrentPlayer].String2);
                          end;
          'mining'      : Begin
                            FindPickHeadColor;
                            AutoRockColor;
                          end;
          'fishing'     : Begin
                            FIC := FindFishingEquipmentColor(Players[CurrentPlayer].String2);
                            If (FIC <= 0) then
                            Begin
                              Players[CurrentPlayer].Loc := 'No Fishing Equipment Found!';
                              Players[CurrentPlayer].Active := False;
                              Logout;
                            end;
                          end;
          'bone burying': Wait(1);
          'fletching'   : If (Copy(Lowercase(Players[CurrentPlayer].String2), 1, 2) = 'lo') then
                          Begin
                            GameTab(4);
                            If not(FindDTM(DTMFletching[2], x, y, MIX1, MIY1, MIX2, MIY2))then
                            Begin
                              Players[CurrentPlayer].Loc := 'No Knife Found!';
                              Players[CurrentPlayer].Active := False;
                              Logout;
                            end;
                          end;
          else Begin Writeln('Error in Main Loop 1!'); TerminateScript; end;
        end;
        Repeat
          Repeat
            If not(LoggedIn) then Break;
            Case Lowercase(Players[CurrentPlayer].String1) of
              'woodcutting' : Chopping;
              'mining'      : MineRock(Players[CurrentPlayer].Integer3);
              'fishing'     : DoFishing;
              'bone burying': If (GrabBones(Players[CurrentPlayer].Boolean2)) then Break;
              'fletching'   : If GrabForFletching then Break;
              else Begin Writeln('Error in Main Loop 2!'); TerminateScript; end;
            end;
            Wait(100);
          Until(InventoryCount >= 28) or not (LoggedIn)
          Case Lowercase(Players[CurrentPlayer].String1) of
            'woodcutting' : Drop(DTMLog);
            'mining'      : If (Players[CurrentPlayer].Boolean3 = False) then
                            begin
                              Drop(DTMMining[1]);   //For some reason the "for do" loop doesn't work here :(
                              Drop(DTMMining[2]);
                            end else
                              Drop(DTMMining[1]);
            'fishing'     : begin
                              Drop(DTMFishing[1]);
                              Drop(DTMFishing[2]);
                              Drop(DTMFishing[3]);
                              Drop(DTMFishing[4]);
                              Drop(DTMFishing[5]);
                              Drop(DTMFishing[6]);
                              Drop(DTMFishing[7]);
                            end;
            'bone burying': BuryBones(Players[CurrentPlayer].String2);
            'fletching'   : Fletch;
            else Begin Writeln('Error in Main Loop 3!'); TerminateScript; end;
          end;

          Players[CurrentPlayer].Extended1 := Players[CurrentPlayer].Extended1 + 1;
          Players[CurrentPlayer].Banked := Players[CurrentPlayer].Banked + 1;
          SendPSStats(Players[CurrentPlayer].String1);

        until(Players[CurrentPlayer].Extended1 >= Players[CurrentPlayer].Integer2)or not(LoggedIn)

        ProgressReport(True);
        SRLRandomsReport;
        Players[CurrentPlayer].Extended1 := 0;
        FreeBitmap(NickNameBMP);

        NextPlayer(LoggedIn)

      Until(False)
    end.

    help me setup please i have another too right underneath
    SCAR Code:
    {.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
    '    /\                                                             '
    '    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: ] <      '----|      
          |   __/    '      [email]Starblaster100@gmail.com[/email]    '    |   o  |
     <====|___  |===='                                  '====|    _/====>
          /     |    '       PM Starblaster100 at:      '    |   o  
          _____|----' RuneSC,Kaiteniks,Scriptdump,RSCN '----|_____/
                     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
                     ' I am not Held Responsible if any '
                     '   of your Characters get Banned  '
                     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.}


    program 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' +
           '87137AA9A8C0BB8B9591A9840495A8B23CB926B0E61DFB9E105F8' +
           '551263E650096D6A880F7CDA263E8E86566863236915DAD44DC34' +
           '33D6D13EF6BF24A124AF202792509AE3296785D94C7267EF301EB' +
           'D38D63');
    TakeY := BitmapFromString(58, 4, 'z78DA7373737333C002DCC0E2' +
           '6E18B2C488E352439EC9B8809B9BA5810994A4B538B22CF1E6E0F' +
           '70BAE1023266C893173A8842D79E26E039A6E898F91A115B63092' +
           '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))then
        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&currency_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
    SCAR Code:
    {.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
    '    /\                                                             '
    '    P \                                      ASCii Created by Aki  '
    '   ### \           *                           and Starblaster100  '
    '  OOAOO \   __                                  *                  '
    ' ### \##/  / /                  *                                  '
    ' AOA  \   _AA ___                                           *      '
    '  ###  \ / ##/  /| ______    __       ____  _________  _________   '
    '   ###  \OO##OOO |/     /|  / /|___  /   /|/        /|/        /|  '
    '   _/AOA/AA##AAA/ OOAAOO |  ##/   /| #### |###aAa### |aAa###aAa |  '
    ' ## \###   OO |__ AAOOAA |_ ###OOO/  #OA# |###OAO### |###OAO### |  '
    '  OOAOO    OO/  /|##/ ##/ /|OOAA     #AO# |###AOA### |###AOA### |  '
    '   ###     ##AA# |AAOOAA## |AA |     #OA# |#O# | #O# |#O# | #O# |  '
    '    P      ##OO#/ OOAAOO##/ AA/      #### |#A# | #A# |#A# | #A# |  '
    '    ______                           #OA# |#O# | #O# |#O# | #O# |  '
    '   /     /\                          #AO# |#A# | #A# |#A# | #A# |  '
    '   ###O### \      *                  ####  __  | #O# |#O# |_#O# |  '
    '   OOA#AOOO \                    ______   / /| | #A# |#A#/  #A# |  '
    '   AA |_AAAA/  ___          *   /     /| _AA |__ ### |######### |  '
    '   OO/  OOO   /  /|    ______   ##AO##/ / ##/  /|###____####__ /   '
    '   #######\   ### |   /     /|  AO |___ OO##OOO |  /   /\  / /____ '
    '   ####### \  #A# |   OOAAOO |  OA/   /|AA##AAA/  /OAAO /| ##/   /|'
    '   OO |_OOO \ #O# |__ AAOOAA |_ ##OA## |  OO |__  O# |#O | ###OOO/ '
    '   AA/  AAAA/ #A#/  /|##/ ##/ /| ___AO |  OO/  /| O#/ #O/_ OOAA/   '
    '   OOA#AOOO   #O##O# |OOAAOO## |/   OA |  ##AA# |  A##A/ /|AA |    '
    '   ###O###    ####O#/ OOAAOO##/ ##AO##/   ##OO#/     ####/ AA/     '
    '                                                                   '
    '       *             > [ Productions Presents ] <        *         '
    [.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
           _____     '                                  '     _____
          |     ----'      ULTIMATE POWER CHOPPER      '----|      
          |   __/    '                                  '    |   o  |
     <====|___  |===='  Will Cut Specified Trees until  '====|    _/====>
          /     |    '        You stop the script       '    |   o  
          _____|----'                                  '----|_____/
                     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
                     '       > [ INSTRUCTIONS ] <       '
                     '                                  '
                     ' = Have all the correct includes  '
           _____     ' =    Start next to the trees     '     _____
          |     ----' = No Good items incase of Death  '----|      
          |   __/    '           (Except Axe)           '    |   o  |
     <====|___  |====' =    Axes MUST be UNWIELDED      '====|    _/====>
          /     |    ' = Have as many axes as you want  '    |   o  
          _____|----'         in your Inventory        '----|_____/
                     ' = Hit start and fill in the setup'
                     ' =     Sit back and Watch ;-)     '
                     '                                  '
           _____     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]     _____
          |     ----'       > [ CONTACT INFO: ] <      '----|      
          |   __/    '      [email]Starblaster100@gmail.com[/email]    '    |   o  |
     <====|___  |===='                                  '====|    _/====>
          /     |    '       PM Starblaster100 at:      '    |   o  
          _____|----' RuneSC,Kaiteniks,Scriptdump,RSCN '----|_____/
                     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.]
                     ' I am not Held Responsible if any '
                     '   of your Characters get Banned  '
                     [-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.}


    Program StarChopper;
    {.include SSI2.txt}
    {.include Boxbreaker.txt}
    {.include RedXIIsFordCracker.txt}

    Var
    Chopped,TreeColor,report,report2,logintime2,loginrandom2,logouttime2,logoutrandom2:integer;
    useantiban,Rrotates,Llogsout,results,Found:boolean;
    lampskill,rundirection,TreeName:String;
    anti,LI,RLoged,AttachCount:LongInt;
    Drop,DropY,c,e,TreeXP:integer;
    AxeHandle,EntCount:longint;
    Head,Head2,Head3:longint;
    m,n,rx,ry:integer;
    //---- Form ----\\
    FrmDesign : TForm;
    Label1,Label2,Usernamelabel,Passwordlabel,Antibanlabel,Logintimelabel,Randomlogintimelabel,Logouttimelabel,Randomlogouttimelabel:TLabel;
    TreeColoredit, Reporttimeedit, Logintime, Randomlogintime, Logouttime, Randomlogouttime, Usernamedit, passwordedit : TEdit;
    RunDirectioncombo, LampSkillcombo, TreeNameCombo : TComboBox;
    Antibancheck, Logouts, Ratates : TCheckBox;
    Donate, StartButton : TButton;
    StartScript : Boolean;

    procedure log(why:string); {Created by Starblaster100}
    var m,logcounter:integer;
    begin
    status('Logging out:  '+why);
    logcounter:=0;
    wait(300);
    mouse(646,484,4,4,true);
    wait(500 + random(500));
    repeat
     logcounter:=logcounter+1;
     Status('Trying to Log out: '+inttostr(logcounter)+'/5');
     mouse(641,376,10,4,true);
     for M:=0 to 30+random(10) do begin
     Wait(100);
     if(IsTextAt2(309,241,'Welcome to RuneScape',100))or
     (IsTextAt2(293,251,'Username',100))then break;
     end;
     until(IsTextAt2(309,241,'Welcome to RuneScape',100))or
     (IsTextAt2(293,251,'Username',100))or(logcounter>=5);
    writeln('');
    Writeln('Logged out: '+why);
    end;

    procedure AxeColor;
    begin
      GameTab(4);
      wait(100 + random(200));
      Mmouse(587,219,0,0);
      wait(100 + random(100));
      If(Option('Wield'))then
        Begin
        Head := GetColor(590,220);
        Head2 := GetColor(587, 219);
        Head3 := GetColor(588, 218);
        writeln('Axe head colors: ' +inttostr(Head)+ ' '+inttostr(Head2)+ ' ' +inttostr(Head3));
        end else
        Begin
        Writeln('Axe not found');
        Terminatescript;
        end;
    end;

    Procedure DropHandle;
    begin
    Gametab(4);
    if not(GetColor(590,220)=Head)or
       not(GetColor(587, 219)=Head2)or
       not(GetColor(588, 218)=Head3)then
    begin
    Status('Dropping Handle');
    mouse(582,227,1,1,false);
    wait(500 + random(500));
    if(findbitmap(Drop,x,y))or(findbitmap(DropY,x,y))then
     begin
     mouse(x,y,1,1,true);
     wait(700 + random(500));
     Status('Finding New Axe');
     end else mmouse(10,10,50,50);
     For n:=1 to 4 do begin
       rx:=544+(n*42)
       mmouse(rx,225,0,0);
       wait(100 + random(100));
       if(option('Wield'))then
        begin
        getmousepos(x,y);
        holdmouse(x,y,true);
        wait(200 + random(200));
        mmouse(583,223,0,0);
        wait(200 + random(200));
        releasemouse(x,y,true);
        wait(500 + random(500));
        AxeColor;
        break;
        end;
       if(n>=4)then
        begin
        Log('No Axes Found');
        terminatescript;
        end;
       end;
     end;
    end;

    procedure Attach; {Created by Liquid from Kaitnieks}
    begin
      GameTab(4);
      writeln('Attatching 1/2');
      if(FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))and
      (FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,745,465,100))then
      begin
        writeln('Attaching 2/2');
        if(FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))then
          Begin
          Mouse(x, y, 3, 3, True);
          wait(600+random(400));
          end;
        if(FindBitmapSpiralTolerance(AxeHandle,x,y,550,200,745,465,50))then
          Begin
          Mouse(x, y, 3, 3, True);
          wait(500+random(200));
          AttachCount:=AttachCount+1;
          writeln('Attached Axe Head!');
          end;
      end else Writeln('Not Attached');
    end;

    procedure FindHead;  {Created by Liquid from Kaitnieks}
    var
      tries, x, y:integer;
    Begin
    if not(GetColor(590,220)=Head)or
       not(GetColor(587,219)=Head2)or
       not(GetColor(588,218)=Head3)then
      begin
      tries:=1;
      repeat
      if not(FindObj('Take',Head,5)) or
      not(FindObj('Take',Head2,5)) or
      not(FindObj('Take',Head3,5)) then
      begin
        writeln('Axe head not found. Taken '+inttostr(tries)+' tries.');
        status('Axe head not found moving to red dot');
        x := 648;
        y := 83;
        tries:= tries + 1;
        FindColorSpiral(x, y, 241, 570, 5, 725, 155);
        Mouse(x+3,y+3,2,2,true);
        Flag;
        wait(200 + random(100));
      end;
      if(FindObj('Take',Head,5))or
      (FindObj('Take',Head2,5)) or
      (FindObj('Take',Head3,5)) then
      begin
        status('Found Axe Head');
        writeln('Axe head was found.  Picking it up');
        wait(450 + random(400));
        Getmousepos(x,y);
        Mouse(x,y,0,0,True);
        flag;
        wait(500 + random(300));
      end;
      until(FindObj('Take',Head,5)) or
      (FindObj('Take',Head2,5)) or
      (FindObj('Take',Head3,5)) or (tries>9) or
      (FindcolorSpiralTolerance(x,y,Head,550,200,745,465,5))
      if(tries>9)then
      begin
        writeln('Axe head was not found. Taking New Axe');
        DropHandle;
      end else
        Attach;
      end;
    end;

    procedure AntiBan2;  {Created by CanadaRules}
    begin
    END;

    procedure FindRandoms;
    begin
      GameTab(4);
      if(LLogsOut)then
        LogOutEvery(2,5+random(5));
      if(RRotates)then
        RotateEvery(20+random(10));
      LeaveScreenEvery(5+random(5));
      if(FindFight)then
      begin
        RunAwayDirection(RunDirection);
        Wait(5000+random(1000));
        RunBack;
      end;
      Gametab(4);
      FindHead;
      FindAxe;
      FindTalk;
      FindDoctorFord;
      FindBox;
      FindMiscRandoms;
      FindLamp(Lampskill);
      AntiBan2;
    end;

    Procedure PrintProgressReport;
    var
     RHours,Minutes,Seconds,RMinutes,RSeconds:LongInt;
     Time:String;
    Begin
    if(GetSystemTime-report2 > report*60000)then
    Begin
      Seconds:=(GetSystemTime-ST) div 1000;
      Minutes:=Seconds div 60;
      RHours:=Minutes div 60;
      Time:=inttostr(Seconds)+' Seconds';
      if Minutes<>0 then
         begin
            RSeconds:=Seconds Mod (Minutes*60);
            Time:=inttostr(Minutes)+' Minutes and '+inttostr(RSeconds)+' Seconds';
         end;
      if RHours<>0 then
         begin
            RMinutes:=Minutes Mod (RHours*60);
            RSeconds:=Seconds Mod (Minutes*60);
            Time:=inttostr(RHours)+' Hours, '+inttostr(RMinutes)+' Minutes and '
            +inttostr(RSeconds)+' Seconds';
         end;
      begin
      status('Progress Report:');
      writeln('');
      writeln('<------====== Starblaster100s Powercutter ======------>');
      writeln('Progress Report:');
      writeln('Worked for '+Time);
      writeln('Cutting '+TreeName+' Trees');
      writeln('Chopped about '+InttoStr(Chopped)+' Logs');
      if not(TreeName='All')then writeln('Gained Approx. '+(inttoStr(TreeXP*Chopped))+' Exp');
      writeln('AntiRandom Report:');
      if(EntCount>0)then writeln('  Found '+IntToStr(EntCount)+' Ents');
      if(attachcount>0)then writeln('  Attached head '+InttoStr(attachcount)+' Times');
      if(fights>0)then writeln('  Fought '+inttostr(fights)+' time[s].');
      if(talks>0)then writeln('  Talked to '+inttostr(talks)+' random event[s].');
      if(DrFords>0)then writeln('  Talked to Dr Ford '+IntToStr(DrFords)+' Times');
      if(lamps>0)then writeln('  Used lamps '+inttostr(lamps)+' time[s].');
      if(boxes>0)then writeln('  Solved '+inttostr(boxes)+' box[es].');
      if(Rloged>0)then writeln('  Logged in '+inttostr(logs)+' time[s].');
      Report2:=GetSystemTime;
      end;
    end;
    End;

    Procedure GetTreeType;
    begin
     if(TreeName='Tree')then    //Normal
      Begin TreeXP:=25; end;
     If(TreeName='Oak')then     //Oak
      Begin TreeXP:=round(75/2); end;
     if(TreeName='Willow')then  //Willow
      Begin TreeXP:=round(125/2); end;
     If(TreeName='Maple')then   //Maple
      Begin TreeXP:=100; end;
     If(TreeName='Mahogany')then//Mahogany
      Begin TreeXP:=125; end;
     if(TreeName='Yew')then     //Yew
      Begin TreeXP:=175; end;
     If(TreeName='Magic')then   //Magic
      Begin TreeXP:=250; end;
    end;

    Procedure Standstill;
    begin
    Mouse(647,82,2,2,true);
    wait(800 + random(400));
    Mouse(647,82,2,2,true);
    wait(3000 + random(2000));
    end;

    Procedure StartChopping;
    begin
    Status('Finding '+TreeName+' Trees');
    repeat
      If(findobj('Chop down '+TreeName,TreeColor,1))and(not FindColorTolerance(x,y,515029,1,1,180,39,20))And
      not (findcolorspiraltolerance(x,y,65535,1,1,200,20,20))  then begin
          mouse(x,y,0,0,true); flag;
          results:=true
        end;
    until(results=true)
    end;

    procedure WaitWhilstChopping;
    begin
     repeat
     c:=0;
     E:=60+random(15);
      repeat
      c:=c+1;
      status('Chopping '+TreeName+' Tree: '+intToStr(C)+'/'+IntToStr(E));
      findrandoms;
      if found then
        exit;
      wait(100);
      if(FindColorTolerance(x,y,515029,1,1,180,39,20))or
        (findcolorspiraltolerance(x,y,65535,1,1,200,40,20)) then begin
        Writeln('Ent found');
        EntCount:=EntCount+1;
        SaveScreenshot('Ent Found');
        standstill;
        exit;
      end;
      until not(Option('Chop down '+TreeName))or(C>=E)or(InventoryCount>=28)
     until (((getcolor(223,430)=0)and(getcolor(263,417)=0))) or not(Option('Chop down '+TreeName))or(C>=E)or(InventoryCount>=28);
    end;

    Procedure DropLogs;
    begin
    Status('Dropping Logs');
    Chopped:=chopped+28;
    Gametab(4)
     begin
     for M:=1 to 7 do begin
      For n:=1 to 4 do begin
       rx:=544+(n*42)
       ry:=192+(m*36)
       findrandoms;
       mmouse(rx,ry,0,0); wait(200+random(100));
        If(IsTextAt2(9,9,'Wield',100))then
          begin chopped := Chopped - 1; end;
        if not(IsTextAt2(9,9,'Wield',100))then
            begin
            getmousepos(x,y)
            mouse(x,y,5,5,false); wait(100 + random(50));
            if(Findbitmap(Drop,x,y))or(Findbitmap(DropY,x,y))then
             begin
             mouse(x,y+1,5,1,true);
             wait(400 + random(450));
             end else mmouse(233,123,50,50);
            end;
       end;
      end;
     end;
    end;

    Procedure Bitmaps;
    begin
    AxeHandle := BitmapFromString(4, 5,
           '564D42000001000001544A3B000001694A08694A08000001000001' +
           '694A082E2000000001000001694A08000001302020000001694A08' +
           '000001302020');
    Drop := BitmapFromString(28, 6, 'z78DA737343000324E04684382' +
           'E35A4AA2446BD1BC5EEC46F23B5C4A965E6A83B87AE3B29497B94' +
           'E42362DC00008F0FEAE5');
    DropY := BitmapFromString(28, 6, 'z78DA737373733330700393C8' +
           'C08D08715C6A4855498C7A378ADD89DF466A8953CBCC51770E5D7' +
           '75292F628C947C4B8010058BBDB99');
    end;

    Procedure Madeby;
    begin
    Writeln('');
    Writeln('');
    Writeln('');
    Writeln('<==================================>');
    Writeln('|  PowerCutter by Starblaster100   |');
    Writeln('| Chops Specified Logs until Full  |');
    Writeln('|  Inventory,and then Drops Logs   |');
    Writeln('<==================================>');
    Writeln('');
    end;

    //---------======= Form Stuff =======---------\\

    Procedure SafeInitForm;
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('InitForm', v);
    end;

    procedure ShowFormModal;
    begin
      frmDesign.ShowModal;
    end;

    procedure SafeShowFormModal;
    var
      v: TVariantArray;
    begin
      setarraylength(V, 0);
      ThreadSafeCall('ShowFormModal', v);
    end;

    Procedure SaveSets;
    begin;
    SaveSetting('StarChopper','Saved','true');
    SaveSetting('StarChopper','Username',username);
    SaveSetting('StarChopper','Password',Password);
    SaveSetting('StarChopper','RunDirection',RunDirection);
    SaveSetting('StarChopper','LampSkill',LampSkill);
    if(Rrotates) then SaveSetting('StarChopper','RRotates','true') else SaveSetting('StarChopper','RRotates','false')
    if(LLogsOut) then SaveSetting('StarChopper','LLogsout','true') else SaveSetting('StarChopper','LLogsout','false')
    if(UseAntiBan) then SaveSetting('StarChopper','UseAntiBan','true') else SaveSetting('StarChopper','UseAntiBan','false')
    if(UseAntiBan) then
      begin;
      SaveSetting('StarChopper','logintime2',inttostr(logintime2));
      SaveSetting('StarChopper','loginrandom2',inttostr(loginrandom2));
      SaveSetting('StarChopper','logouttime2',inttostr(logouttime2));
      SaveSetting('StarChopper','logoutrandom2',inttostr(logoutrandom2));
      end;
    SaveSetting('StarChopper','TreeName',TreeName);
    SaveSetting('StarChopper','Report',inttostr(Report));
    SaveSetting('StarChopper','TreeColor',inttostr(TreeColor));
    end;

    Procedure LoadSets;
    begin;
    if(LoadSetting('StarChopper','Saved')='true') then begin
    Username:=LoadSetting('StarChopper','Username');
    Password:=LoadSetting('StarChopper','Password');
    RunDirection:=LoadSetting('StarChopper','RunDirection');
    LampSkill:=LoadSetting('StarChopper','LampSkill');
    if(LoadSetting('StarChopper','RRotates')='true') then Rrotates:=true;
    if(LoadSetting('StarChopper','LLogsout')='true') then Llogsout:=true;
    if(LoadSetting('StarChopper','UseAntiBan')='true') then UseAntiBan:=true;
    if(UseAntiBan) then
      begin;
      logintime2:=strtoint(LoadSetting('StarChopper','logintime2'));
      loginrandom2:=strtoint(LoadSetting('StarChopper','loginrandom2'));
      logouttime2:=strtoint(LoadSetting('StarChopper','logouttime2'));
      logoutrandom2:=strtoint(LoadSetting('StarChopper','logoutrandom2'));
      end;
    TreeName:=LoadSetting('StarChopper','TreeName');
    Report:=strtoint(LoadSetting('StarChopper','Report'));
    TreeColor:=strtoint(LoadSetting('StarChopper','TreeColor'));
    end;
    end;

    procedure Go(sender: TObject);
    begin
      frmDesign.Caption:= frmDesign.Caption + '.';
      startscript:=True;
      Username := Usernamedit.text;
      Password := Passwordedit.text;
      RunDirection := RunDirectioncombo.text;
      LampSkill := LampSkillcombo.text;
      TreeName := TreeNameCombo.text;
      RRotates := Ratates.State;
      LLogsout := Logouts.State;
      UseAntiBan := Antibancheck.State;
      If(UseAntiBan=true)then
       begin
       logintime2 := StrToInt(logintime.text);
       loginrandom2 := StrToInt(Randomlogintime.text);
       logouttime2 := StrToInt(Logouttime.text);
       logoutrandom2 := StrToInt(Randomlogouttime.text);
       end;
      writeln('Username is '+Username);
      Writeln('Password Protected for Security reasons');
      If(TreeName='All')or(TreeName='Tree Type to Cut')then begin TreeName:=''; writeln('Cutting all trees'); end else writeln('Cutting '+TreeName)
      If(LampSkill='LampSkill')then begin Lampskill := 'Attack'; Writeln('No Lampskill set - Using Default - Attack'); end else writeln('Lampskill is '+Lampskill);
      If(RunDirection='RunDirection')then begin RunDirection:='N'; Writeln('No Run Direction set - Using Default - N'); end else writeln('Run Direction is '+RunDirection);
      If(Reporttimeedit.text='')then begin Report:=1; end else Report := StrToInt(Reporttimeedit.text);
      If(TreeColoredit.text='')then begin TreeColor := 0; writeln('No tree Color set'); terminatescript; end else TreeColor := StrToInt(TreeColoredit.text);
    SaveSets;
    frmDesign.ModalResult:= mrOk;
    end;

    procedure DonateLink(sender: TObject);
    begin
      OpenWebPage('https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=starblaster100%40gmail%2ecom&item_name=RS2%20Scripts&no_shipping=0&no_note=1&tax=0&currency_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.

  2. #2
    Join Date
    Mar 2007
    Posts
    3,681
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    You need to download the newest SRL actually search around the forums for it it's called 'SRL 4.0 beta' or something.

    then follow the instruction on the first post of the thread and then you can download some scripts that have been updated like Wizzup?'s Ess miner or Fakawi's Ratz script.

    Welcome to the forums

  3. #3
    Join Date
    Oct 2006
    Location
    MI USA
    Posts
    3,166
    Mentioned
    6 Post(s)
    Quoted
    11 Post(s)

    Default

    Nice Welcome from Hugo , Don't forget to checkout tutorial island, Utilizing the Search button and making sure you post in the correct areas....Not to mention, these scripts are very outdated and don't even use SRL in the first place.......
    {.include SSI2.txt}
    {.include Boxbreaker.txt}
    {.include RedXIIsFordCracker.txt}


Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 15
    Last Post: 09-22-2008, 12:32 PM
  2. SCAR Divi 3.01 DONT associate .scar files!!!
    By chimpy in forum News and General
    Replies: 1
    Last Post: 04-21-2007, 08:49 PM
  3. Replies: 28
    Last Post: 06-22-2006, 04:27 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •