Results 1 to 10 of 10

Thread: [REQUEST] StarBlaster's PowerSkills lol

  1. #1
    Join Date
    Feb 2007
    Posts
    3,616
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default [REQUEST] StarBlaster's PowerSkills lol

    Well.. I guess this is the right section for this

    Anyways, RapidShare or whatever the download for StarBlaster's PowerSkills because I can't download it from there, and I wanted to study it..

    So if anyone can copy and paste it in SCAR tags or in a SCAR script attatchment (if you are allowed to post it) please do! Thanks a lot =)

  2. #2
    Join Date
    Jan 2007
    Location
    Illinois.. >.<
    Posts
    1,158
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Here's version 3:

    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.

  3. #3
    Join Date
    Jun 2006
    Posts
    3,861
    Mentioned
    3 Post(s)
    Quoted
    1 Post(s)

    Default

    Heh I just realized, Jagex shut star's freehostia down too.

  4. #4
    Join Date
    Jan 2007
    Location
    Illinois.. >.<
    Posts
    1,158
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Ohh, so that's the problem...

  5. #5
    Join Date
    Mar 2007
    Posts
    674
    Mentioned
    0 Post(s)
    Quoted
    4 Post(s)

    Default

    They cant do that...

  6. #6
    Join Date
    Mar 2007
    Location
    Netherlands->Amersfoort.
    Posts
    1,615
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    @lalaji yes the can.
    look in the bbq pit for the topic ''i kill jagex'' or something like that

  7. #7
    Join Date
    Dec 2006
    Location
    Copy pastin to my C#
    Posts
    3,788
    Mentioned
    8 Post(s)
    Quoted
    29 Post(s)

    Default

    Why can they do that?

  8. #8
    Join Date
    Jan 2007
    Location
    Illinois.. >.<
    Posts
    1,158
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Cause its directly against the terms and conditions, and somewhere in there it states that they can do that, and ban your accounts...

  9. #9
    Join Date
    May 2007
    Posts
    86
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

  10. #10
    Join Date
    Mar 2007
    Posts
    209
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    sythe is full of scammers

Thread Information

Users Browsing this Thread

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

Similar Threads

  1. Starblaster's Public Ridicule Thread!
    By Wanted in forum The Bashing Club / BBQ Pit
    Replies: 4
    Last Post: 09-10-2008, 09:27 AM
  2. PowerSkills by Starblaster100
    By Starblaster100 in forum RS3 Outdated / Broken Scripts
    Replies: 640
    Last Post: 04-29-2008, 09:57 PM
  3. need help with powerskills
    By Christphr1 in forum OSR Help
    Replies: 3
    Last Post: 06-30-2007, 02:49 PM
  4. Problems Running Powerskills 2.3
    By NEMESIS in forum OSR Help
    Replies: 10
    Last Post: 04-12-2007, 09:25 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
  •