Results 1 to 4 of 4

Thread: Looking for old scripts!

  1. #1
    Join Date
    Feb 2007
    Location
    Het ademt zwaar en moedeloos vannacht.
    Posts
    7,211
    Mentioned
    26 Post(s)
    Quoted
    72 Post(s)

    Default Looking for old scripts!

    Hey, I'm looking for a few scripts to update/downdate for OSRS. I have some at home but unfortunately that's 18500km away, and I'm pretty sure I'm missing a lot.
    Reason is I don't like starting from scratch, but getting old scripts to run flawless again is a challenge I always liked!

    Scripts I'm looking for:
    • Wizzup? VEM miner (version 0.63, 0.59 and 0.49. Need to make a FrankenScript)
    • Tarajunky chicken killer v2.77 (SRL Members only, please PM instead of post)
    • Narcle Fast Figher v4.13
    • Some MSI version from around 2008/2009 would be cool
    • Sumilion Rimmington Miner (any version)
    • Fawki goblin killer


    If you got any other old scripts (SRL 3.7 - SRL 5), well I can take a look at it. I've been working with SRL since version 3.5 so I'm quite familiar with all the changes over the years.
    One requirement: script must have 70+hr proggy reports (multiplayer) or 12+hr single player. I'm not updating unreliable junk
    Last edited by Markus; 02-27-2017 at 02:23 AM.
    I made a new script, check it out!.

  2. #2
    Join Date
    Jun 2013
    Location
    Scranton
    Posts
    496
    Mentioned
    5 Post(s)
    Quoted
    220 Post(s)

    Default

    Simba Code:
    {------------------------------Script Info-------------------------------------|
    | ScriptName   = Fast Fighter                                                  |
    | Author       = Narcle                                                        |
    | Description  = Fights any monster, food eating and HP regen.                 |
    |==============================================================================|
    |                               Instructions                                   |
    |==============================================================================|
    |                                                                              |
    |   Setup with Form: (Reccommended)                                            |
    |          1a. Read FAQ on first post of Fast Fighter thread.                  |
    |          1b. OR Hit play now the form is pretty easy to use.                 |
    |              Click 'Help' in Form if you don't know how to grab/set colors.  |
    |                                                                              |
    |   Setup with Declare Players:                                                |
    |          1. Make sure you use the Color picker and select 3 colors           |
    |               from monster, and place them accordingly in DeclarePlayers.    |
    |          2. Setup players in DeclarePlayers                                  |
    |          3. Setup RuneScape (unless your using SMART)                        |
    |          4. Push play!                                                       |
    |                                                                              |
    |                                                                              |
    |______________________________________________________________________________}

    {$i SRL/SRL/misc/smart.simba}
    {$i SRL/SRL.simba}
    {$i SRL/SRL/skill/fighting.simba}
    {$i SRL/SRL/skill/ranging.simba}
    {$i SRL/SRL/misc/Reports.simba}
    {$i srl/srl/misc/paintsmart.simba}
    {------------------------------------------------------------------------------}
    {===============================Player Setup===================================}
    {------------------------------------------------------------------------------}
    Const
      LogoutIn     = 29;    //Logout every ?? Minutes; +/- 3 minutes for randomness
      LogToFile    = False; //File logging (helps me debug your problem) stores in /Scripts
      DebugMode    = False; //Debug mode
      DisableSMARTPaint = False;//Might use less CPU if True


    {   ATTENTION!!!
      To use Forms just push play do NOT put anything in DeclarePlayers.
      If you want to use DeclarePlayers fill it in (Forms should NOT come up then) }


    procedure DeclarePlayers;
    begin
      With Players[0] do
      begin
        Name := ''; //Character Name
        Pass := ''; //Character Pass
        Active := True; //True if you want this player to be ran in the script, false if not
        Strings[0] := '';//monster name
        Strings[1] := '';//Fight style (str, att, def, crush etc. anything in your weapon info}
        Integers[0] := 0;//1st color of monster
        Integers[1] := 0;//2nd color of monster
        Integers[2] := 0;//3rd color of monster
        Arrays[0] := [3, false, false];
                  //[NPC Color Tolerance, Left click only, Right click only]
      end;
       
      {
      With Players[1] do  //copy and change number accordingly to add players
      begin
        Name :='';
        Pass :='';
        Active := True;
        Strings[0] := '';//monster name
        Strings[1] := '';//Fight Style
        Integers[0] := 0;//1st color of monster
        Integers[1] := 0;//2nd color of monster
        Integers[2] := 0;//3rd color of monster
        Arrays[0] := [3, false, false];
              //[NPC Color Tolerance, Left click only, Right click only]
      end;
      }

    end;

    {------------------------------------------------------------------------------}
    {===========Don't edit below this unless you know what your doing!=============}
    {------------------------------------------------------------------------------}
    Type
      FUsers = Record
        Range, Melee, Setup, OutOfFood, TPAFight: Boolean;
        MobName: string;
        NPCTol, Clicktype, AvgWeapTime, AvgAniChange, MaxAniTime, InvAmt, LastWeaptime: integer;
        Colors, WeaponTimes, AniTimes, AniChanges: TIntegerArray;
        Weapon: array of TStringArray;
      end;

    Const
      Version    = '4.13';
      ScriptName = 'Fast Fighter';
      PixelChange = 300;
      WeaponTime = 4000;
      PLAYERSET = 3;
      TOTALNPCKILLS = 10;
      FOODATE = 11;
      NPCKILLS = 12;
      KILLSperHour = 13;
      XPGained = 14;
      XPperHour = 15;
      REPORTXP = 16;
      CURRENTXP = 17;
      LOGOUTIME = 19;
      ATTACKTIME = 20;
      STARTXP  = 21;
      DRAWXP = 22;

    var
      Playas: array [0..99] of FUsers;
      TOTALKILLS, TOTALXP: integer;//Counters
      LeftClickFail: boolean;
      DebugFile: integer;
      DebugModeOn: Boolean;
      ReportTime: integer;
      PlayerBox, AniBox: TBox;

    const
      FilePath = AppPath + 'FastFighter4Chars.ini';
    var
      frmDesign: TForm;
      PButtons: Array [0..3] of TButton;
      SButtons: Array of TButton;
      frmLabels: Array of TLABEL;
      frmEdits: Array of TEDIT;
      CheckBoxs: Array [0..2] of TCHECKBOX;
      CurPlayer: integer;
      AKpf_SavePlayers, AKpf_Terminate: boolean;
      Memo: TMemo;


    procedure Debug(S: String);
    begin
      if LogToFile then
      try
        if (DebugFile <> -1) then
          if (not WriteFileString(DebugFile, TheTime+' - '+S + #13+#10)) then
            Writeln('Debug: Failed to write to file');
      except
        Writeln(ExceptionToString(ExceptionType, ExceptionParam));
      end;
      if DebugModeOn then
        Writeln(S)
      else
        DebugLn(s);
    end;

    Procedure FormNotify(S: string);
    begin
      Writeln(S);
      Memo.LINES.Add(s);
    end;

    Procedure SavePlayers(tofile: boolean);
    var
      i, ii: integer;
    begin
      try
      With Players[CurPlayer] do
      begin
        Name := frmEdits[0].Caption;
        Pass := frmEdits[1].Caption;
        Active := CheckBoxs[0].CHECKED;
        Strings[0] := frmEdits[6].Caption;//npc name
        Strings[1] := frmEdits[11].Caption;//fight style
        for ii := 0 to 2 do
          Integers[ii] := StrToInt( ReplaceWrap( (frmEdits[ii+7].Caption), ' ', '', [rfReplaceAll]));
        Arrays[0] := [frmEdits[10].Caption, CheckBoxs[1].CHECKED, CheckBoxs[2].CHECKED];
      end;
      except
        Writeln('Failed to save Player '+ToStr(CurPlayer)+'.');
      end;

      if tofile then
      begin
        WriteINI('General', 'NumOfPlayers', IntToStr(HowManyPlayers), FilePath);
        WriteINI('General', 'statsUser', frmEdits[4].Caption, FilePath);
        WriteINI('General', 'statsPass', frmEdits[5].Caption, FilePath);
      end;

      if tofile then
      for i := 0 to HowManyPlayers - 1 do
      with Players[i] do
      begin
        WriteINI('Player['+IntToStr(i)+']', 'Name', Name, FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Pass', Pass, FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Active', BoolToStr(Active), FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Strings[0]', Strings[0], FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Strings[1]', Strings[1], FilePath);
        for ii := 0 to 2 do
          WriteINI('Player['+IntToStr(i)+']', 'Integers['+IntToStr(ii)+']', IntToStr(Integers[ii]), FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Arrays[0][0]', IntToStr(Arrays[0][0]), FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Arrays[0][1]', BoolToStr(Arrays[0][1]), FilePath);
        WriteINI('Player['+IntToStr(i)+']', 'Arrays[0][2]', BoolToStr(Arrays[0][2]), FilePath);
      end;
    end;


    Procedure NewPlayer(index: integer);
    var
      ii:integer;
    begin
      with Players[Index] do
      begin
        Name := '';
        Pass := '';
        Active := true;
        Strings[0] := '';
        Strings[1] := '';
        for ii := 0 to 2 do
          Integers[ii] := 0;
        Arrays[0] := [9, false, false];//Color Tolerance, right click, left click
      end;
    end;

    Procedure ShowPlayer(index: integer);
    var
      ii: integer;
    begin
      if Players[index].Name = '' then
        NewPlayer(Index);
      With Players[index] do
      begin
        frmEdits[0].Caption := Name;
        frmEdits[1].Caption := Pass;
        CheckBoxs[0].CHECKED := Active;
        frmEdits[6].Caption := Strings[0];
        frmEdits[11].Caption := Strings[1];
        for ii := 0 to 2 do
          frmEdits[ii+7].Caption := IntToStr(Integers[ii]);
        frmEdits[10].Caption := IntToStr(Arrays[0][0]);//npc tol
        CheckBoxs[1].Checked := Arrays[0][1];//Right click
        CheckBoxs[2].Checked := Arrays[0][2];//Left click
      end;
      CurPlayer := index;
      frmEdits[4].Caption := stats_Username;
      frmEdits[5].Caption := stats_UserPass;
      frmEdits[2].Caption := IntToStr(CurPlayer);
      frmEdits[3].Caption := IntToStr(HowManyPlayers);
    end;

    Procedure LoadPlayers;
    var
      i,ii: integer;
    begin
      HowManyPlayers := StrToIntDef(ReadINI('General', 'NumOfPlayers', FilePath), 1);
      stats_Username := ReadINI('General', 'statsUser', FilePath);
      stats_UserPass := ReadINI('General', 'statsPass', FilePath);
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;
      CurPlayer := CurrentPlayer;
      for i := 0 to HowManyPlayers - 1 do
      with Players[i] do
      begin
        Name := ReadINI('Player['+IntToStr(i)+']', 'Name', FilePath);
        Pass := ReadINI('Player['+IntToStr(i)+']', 'Pass', FilePath);
        Active := StrToBool(ReadINI('Player['+IntToStr(i)+']', 'Active', FilePath));
        Strings[0] := ReadINI('Player['+IntToStr(i)+']', 'Strings[0]', FilePath);
        Strings[1] := ReadINI('Player['+IntToStr(i)+']', 'Strings[1]', FilePath);
        for ii := 0 to 2 do
          Integers[ii] := StrToInt(ReadINI('Player['+IntToStr(i)+']', 'Integers['+IntToStr(ii)+']', FilePath));
        try
          Arrays[0] := [StrToInt(ReadINI('Player['+IntToStr(i)+']', 'Arrays[0][0]', FilePath)),
                        StrToBool(ReadINI('Player['+IntToStr(i)+']', 'Arrays[0][1]', FilePath)),
                        StrToBool(ReadINI('Player['+IntToStr(i)+']', 'Arrays[0][2]', FilePath))];
        except
          Arrays[0] := [3, false, false];
        end;
      end;
    end;

    procedure OnLeftClick(Sender: TObject);
    begin
      Case Sender of
        SButtons[0]: begin//Start
                       frmDesign.ModalResult := mrOk;
                       AKpf_SavePlayers := False;
                       AKpf_Terminate := False;
                       Writeln('Start.');
                     end;
        SButtons[1]: begin//Save and start
                       frmDesign.ModalResult := mrOk;
                       AKpf_SavePlayers := True;
                       AKpf_Terminate := False;
                       Writeln('Save and Start.');
                     end;
        SButtons[2]: begin//Save and Exit
                       frmDesign.MODALRESULT:= mrOk;
                       AKpf_SavePlayers := True;
                       AKpf_Terminate := True;
                       Writeln('Save and Exit.');
                     end;
        SButtons[3]: begin//Exit
                       frmDesign.MODALRESULT:= mrOk;
                       AKpf_SavePlayers := False;
                       AKpf_Terminate := True;
                       Writeln('Exit.');
                     end;
        SButtons[4]: Memo.LINES.Clear;
        SButtons[5]: Memo.LINES.Add(GetClipBoard);
        SButtons[6]: OpenWebPage('http://villavu.com/forum/showthread.php?t=67793');

        PButtons[0]: begin//Previous player
                       SavePlayers(false);
                       if CurPlayer = 0 then
                         ShowPlayer(HowManyPlayers - 1)
                       else
                         ShowPlayer(CurPlayer - 1);
                     end;
        PButtons[1]: begin//New player
                       Debugln('Trying to add new player.');
                       Inc(HowManyPlayers);
                       NumberOfPlayers(HowManyPlayers);
                       CurPlayer := HowManyPlayers-1;
                       ShowPlayer(CurPlayer);
                       FormNotify('Player '+IntToStr(CurPlayer)+' added.');
                     end;
        PButtons[2]: begin//Next player
                       SavePlayers(false);
                       if CurPlayer = HowManyPlayers - 1 then
                         ShowPlayer(0)
                       else
                         ShowPlayer(CurPlayer + 1);
                     end;
        PButtons[3]: begin//Delete player
                       if (HowManyPlayers > 1) and (CurPlayer = 0) then
                         FormNotify('Can''t delete player 0.')
                       else
                       if (HowManyPlayers = 1) then
                       begin
                         if not (MessageDlg('Delete?', 'Do you want to reset Player '+ToStr(CurPlayer)+'?', mtConfirmation, [mbYes,mbNo]) = mrYes) then
                           Exit;
                         NewPlayer(CurPlayer);
                         FormNotify('Player '+ToStr(CurPlayer)+' reset.');
                       end
                       else
                       if (MessageDlg('Delete?', 'Do you want to delete Player '+ToStr(CurPlayer)+'?', mtConfirmation, [mbYes,mbNo]) = mrYes) then
                       begin
                         FormNotify('Player '+ToStr(CurPlayer)+' deleted.');
                         Swap(Players[CurPlayer], Players[HowManyPlayers - 1]);
                         IncEx(HowManyPlayers, -1);
                         ShowPlayer(Max(CurPlayer - 1, 0));
                         SavePlayers(true);
                       end;
                     end;
         CheckBoxs[1]: begin
                         if CheckBoxs[2].CHECKED then
                           CheckBoxs[2].CHECKED := false;
                       end;
         CheckBoxs[2]: begin
                         if CheckBoxs[1].CHECKED then
                           CheckBoxs[1].CHECKED := false;
                       end;
      end;
    end;

    procedure InitForm;
    var
      i: integer;
      PCaps, Labels, Hints: TStringArray;
      Ws, Ls, Ts: TIntegerArray;
    begin
      frmDesign := Tform.Create(nil);
      With frmDesign do
      begin
        setBounds(100, 100, 600, 330);
        Caption := ScriptName+' v'+Version+' by Narcle';
        Color := ClWhite;
        Font.Color := ClBlack;
      end;


      PCaps := ['Previous Player', 'New Player', 'Next Player', 'Delete Player'];
      for i := 0 to 3 do
      begin
        PButtons[i] := TBUTTON.Create(frmDesign);
        with PButtons[i] do
        begin
          Parent := frmDesign;
          Height := 22;
          if i = 3 then
            Width := 80//Delete Player
          else
            Width := 120;
          Left := 10+i*125;
          Top := 8;
          CAPTION := PCaps[i];
          ONCLICK := @OnLeftClick;
          if i = 3 then
          begin
            Left := 135;
            Top := 34;
          end;
        end;
      end;

      PCaps := ['Start', 'Save and Start', 'Save and Exit', 'Exit', 'Clear', 'Paste', 'Help!'];
      Hints := ['Clear the memo','Paste from clip board','Open help in default web browser.'];
      SetArrayLength(SButtons, Length(PCaps));
      for i := 0 to High(SButtons) do
      begin
        SButtons[i] := TBUTTON.Create(frmDesign);
        with SButtons[i] do
        begin
          Parent := frmDesign;
          Height := 22;
          Width := 90;
          Left := 6+i*96;
          Top := 300;
          FONT.Size := 8;
          CAPTION := PCaps[i];
          OnClick := @OnLeftClick;
          if InIntArray([4,5,6],i) then
          begin
            Width := 50;
            Left := 430+(i-4)*55;
            ShowHint := true;
            Hint := Hints[i-4];
          end;
        end;
      end;



      Labels := ['Username:', 'Password:', 'Active', 'Right click only', 'Left click only',
                'SRL Stats User:', 'SRL Stats Password:', 'Player:', 'Total Players:',
                'NPC Color 1:', 'NPC Color 2:', 'NPC Color 3:', 'NPC Name:','NPC Color Tolerance:', 'Fight Style:'];
      Hints := ['Login name for the character you are using.','Login password','Will you be using this character?',
                'Left click attack only', 'Right click attack only', 'SRL Stats goto stats.villavu.com to sign up!',
                'SRL Stats goto stats.villavu.com to sign up!','','','Color of the NPC/Monster you''ll be fighting, use the color picker',
                'Color of the NPC/Monster you''ll be fighting, use the color picker',
                'Color of the NPC/Monster you''ll be fighting, use the color picker', 'Name of the NPC your fighting, check forums for details',
                'Lower this number if the mouse hovers over other objects.', 'Read instructions on thread for more info'];
      SetArrayLength(frmLabels, Length(Labels));
      Ts := [62, 108,  186, 208, 230,  280, 280, 38,  38, 126, 156, 186, 62, 216, 160];
      Ls := [10,  10,   30,  30,  30,   34, 198, 20, 260, 182, 182, 182, 200, 182, 10];
      for i := 0 to High(Labels) do
      begin
        frmLabels[i] := TLABEL.Create(frmDesign);
        with frmLabels[i] do
        begin
          Parent := frmDesign;
          Height := 20;
          Width := 50;
          Top := Ts[i];
          Left := Ls[i];
          Font.Size := 8;
          Caption := Labels[i];
          if (Hints[i] <> '') then
            Hint := Hints[i];
          ShowHint := true;
        end;
      end;

      Ws := [150, 150,  28,  28,  76,  76,  150, 100, 100, 100,  40,  80];
      Ts := [ 80, 126,  34,  34, 274, 274,   80, 120, 150, 180, 210, 154];
      Ls := [ 10,  10,  60, 330, 112, 300,  200, 250, 250, 250, 290,  80];
      SetArrayLength(frmEdits, Length(Ws));
      for i := 0 to High(frmEdits) do
      begin
        frmEdits[i] := TEDIT.Create(frmDesign);
        with frmEdits[i] do
        begin
          Parent := frmDesign;
          Height := 21;
          Width := Ws[i];
          top := Ts[i];
          Left := Ls[i];
          Font.Size := 8;
        end;
      end;

      for i := 0 to High(CheckBoxs) do
      begin
        CheckBoxs[i] := TCHECKBOX.Create(frmDesign);
        with CheckBoxs[i] do
        begin
          Parent := frmDesign;
          Top := 184+i*22;
          Left := 10;
          ShowHint := true;
          ONCLICK := @OnLeftClick;
        end;
      end;

      Memo := TMemo.Create(frmDesign);
      with Memo do
      begin
        Parent := frmDesign
        Left := 390;
        Top := 10;
        Width := 200;
        Height := 280;
      end;

      Memo.Lines.Add(ScriptName+' v'+Version+' by Narcle');
      if FileExists(FilePath) then
      begin
        LoadPlayers;
        ShowPlayer(0);
      end
      else
      begin
        HowManyPlayers := 1;
        NumberOfPlayers(HowManyPlayers);
        CurrentPlayer := 0;
        CurPlayer := 0;
        ShowPlayer(CurPlayer);
      end;
      frmDesign.ShowModal;
    end;

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

    procedure AntiBan;
    begin
      if not LoggedIn then Exit;
      case Random(99) of
        0: wait(500+random(3000));
        1: begin
             RandomMovement;
             SetAngle(SRL_ANGLE_HIGH);
           end;
        3: PickUpMouse;
      end;
    end;

    Function HpCheck: boolean;
    var
      c, T, i:Integer;
      RunDir: String;
    begin
      if (HPPercent < 50) and LoggedIn then
      begin
        Result := True;
        Debug('HP low doing HP checks...');
        if not InvEmpty then
          for c := 0 to 1 do
          begin
            if (c > 0) then//in case uptext fails
              MakeCompass(rs_GetCompassAngleDegrees+60+random(50));
            for i := 1 to 28 do //Begin food eating proc
            if ExistsItem(i) then
            begin
              MMouseItem(i);
              if WaitUpTextMulti(['Eat', 'obster', 'onkfish', 'hark'], 400) then
              begin
                ClickMouse2(False);
                if WaitOption('Eat', 400) then
                begin
                  Debug('Eating food...');
                  t := GetSystemTime;
                  while ExistsItem(i) and ((GetSystemTime-t) < 2000) do
                    wait(20);
                  if not ExistsItem(i) then
                    Inc(Players[CurrentPlayer].Integers[FOODATE]);
                  if (HPPercent > 60) then
                    Exit;
                end;
              end;
            end;//End food eating
          end;
            if (not LoggedIn) or (HPPercent > 50) then
              Exit;

        if (HPPercent < 50) then
        begin
          if (HPPercent < 25) then
            if (InFight) then
            begin
              RunDir := 'nsewns';
              Debug('Running away HP% < 25...');
              RunAway(RunDir[random(6)+1], true, 1, 10000 + random(2000));
            end;
          T := GetSystemTime;
          repeat
            if not IsResting then
              SetRest;
            Wait(200+random(200));
            FindNormalRandoms;
            If ((GetSystemTime - T) > (50000+random(50000)) ) then
            begin
              case random(2) of
                0: BoredHuman;
                1: RandomMovement;
              end;
              T := GetSystemTime;
            end;
            if not LoggedIn then
              Exit;
          until (HPPercent > 60);
          SetAngle(SRL_ANGLE_HIGH);
        end;
      end;
    end;

    procedure Report;
    var
      xp,i: integer;
    begin

      if not LoggedIn then
        Exit;

      with Players[CurrentPlayer] do
      begin
        IncEx(TOTALKILLS, Integers[NPCKILLS]);//Total Kills
        stats_IncVariable('Monsters Killed', Integers[NPCKILLS]);

        for i := 0 to 3 do
          xp := Max(xp, GetXPBarTotal);
        if (xp > Integers[REPORTXP]) then
          Integers[CURRENTXP] := xp;
        stats_IncVariable('Total EXP Gained', Integers[CURRENTXP]-Integers[REPORTXP]);
        IncEx(Integers[XPGained], Integers[CURRENTXP]-Integers[REPORTXP]);
        IncEx(TOTALXP, Integers[CURRENTXP]-Integers[REPORTXP]);
        Integers[REPORTXP] := Integers[CURRENTXP];

        if ((PlayerWorked(CurrentPlayer)/60000.0) > 0) then
          Integers[KILLSperHour] := round( (Integers[TOTALNPCKILLS]*60.0)/(PlayerWorked(CurrentPlayer)/60000.0))//XP Per hour
        else
          Integers[KILLSperHour] := -1;

        if ((PlayerWorked(CurrentPlayer)/60000.0) > 0) then
          Integers[XPperHour] := round( (Integers[XPGained]*60.0)/(PlayerWorked(CurrentPlayer)/60000.0))//XP Per hour
        else
          Integers[XPperHour] := -1;

        SRLProgressReport(ResultDebugBox, ScriptName, 'Narcle', Version,
                              ['Time Ran','Killed', 'XP'],
                              [MsToTime(GetTimeRunning, Time_Abbrev), TOTALKILLS, TOTALXP]);

        SRLPlayerReport(ResultDebugBox, 0, False,
                      [True, false, false, false, false, false],
                      ['Kills', 'Kills/H', 'XP Gained', 'XP/H'],
                      [], [TOTALNPCKILLS, KILLSperHour, XPGained, XPperHour], [], []);

        Integers[NPCKILLS] := 0;
      end;
      ReportTime := GetSystemTime + 5*61000;
      stats_Commit;
    end;

    procedure LogoutSeq(reason:string);
    begin
      while InFight and LoggedIn do
      begin
        HpCheck;
        wait(100);
      end;
      Debug('Logout sequence...');
      if (reason = '') then
      begin
        if HowManyPlayers = 1 then
        begin
          LogOut;
          Wait(RandomRange(1*60000, 3*60000));
          NextPlayer(true);
        end
        else
          NextPlayer(true);
      end
      else
      begin
        Writeln(reason+' '+Players[Currentplayer].Name+' is now inactive.');
        NextPlayer(false);
      end;
    end;

    procedure SitAndWait;//Super advance I know :P
    var
      T: integer;
    begin
      T := GetSystemTime + 30000;
      Debug('No NPCs detected on screen, waiting...');
      repeat
        if not LoggedIn then
          Exit;
        Wait(50+random(50));
        FindNormalRandoms;
        AntiBan;
        HpCheck;
      until (GetSystemTime > T) or (Length(GetMMDotsOnMS('npc')) > 0);
    end;

    function ChangeCamera: boolean;
    var
      i, II, PosNeg:integer;
    begin
      Case random(2) of
        0: PosNeg := 1;
        1: PosNeg := -1;
      end;
      i := Round(rs_GetCompassAngleDegrees/45 - 1);
      if i < 0 then i := 0;
      if i > 7 then i := 7;
      For II := 0 to 4+Random(4) do
      begin
        if (Length(GetMMDotsOnMS('npc')) > 0) then
        begin
          Result := true;
          exit;
        end;
        i := i+PosNeg;
        if i > 7 then i := 0;
        if i < 0 then i := 7;
        MakeCompass(inttostr(i*(40+random(6))));
      end;
    end;

    procedure WaitFight;
    Var
      T, C, s, x, i, Time, L, Remove, H, Pixs, LastXP: integer;
      P: TIntegerArray;
      WeapTime, TimeOut: integer;
    begin
      //if DebugMode then
        //SMART_DrawBoxEx(False, AniBox, clPurple);

      if Length(Playas[CurrentPlayer].WeaponTimes) > 49 then
        Playas[CurrentPlayer].AvgWeapTime := AverageTIA(Playas[CurrentPlayer].WeaponTimes);
      if Length(Playas[CurrentPlayer].AniChanges) > 199 then
      Begin
        Playas[CurrentPlayer].AvgAniChange := Round(AverageTIA(Playas[CurrentPlayer].AniChanges)*0.9);
        Debug('Pixs changed to: '+ToStr(Playas[CurrentPlayer].AvgAniChange));
      end;

      with Playas[CurrentPlayer] do
      if AvgWeapTime > 0 then
      begin
        H := High(WeaponTimes);
        for i := 0 to H do
        if not InRange(WeaponTimes[i], AvgWeapTime-400, AvgWeapTime+400) then
        begin
          Swap(WeaponTimes[i], WeaponTimes[H-Remove]);
          Inc(Remove);
        end;
        SetLength(WeaponTimes, Length(WeaponTimes)-Remove);
        AvgWeapTime := AverageTIA(Playas[CurrentPlayer].WeaponTimes);

        WeapTime := Round(AvgWeapTime+0.0*1.15);
        if LastWeaptime <> WeapTime then
          Debug('Weapon time switched too: '+ToStr(WeapTime));
        LastWeaptime := WeapTime;
      end;

      if (WeapTime = 0) then
        WeapTime := WeaponTime;


      for i := 0 to 2 do
        With Players[CurrentPlayer] do
          Integers[CURRENTXP] := Max(Integers[CURRENTXP], GetXPBarTotal);
      s := Players[CurrentPlayer].Integers[CURRENTXP];
      x := s;
      C := GetSystemTime;
      T := C;
      TimeOut := C + 8000+random(3000);
      Repeat
        P := PixelShiftMulti([AniBox], 200);

        if Playas[CurrentPlayer].AvgAniChange > 0 then
          Pixs := Playas[CurrentPlayer].AvgAniChange-20
        else
          Pixs := PixelChange;

        if (P[0] > Pixs) then
        begin
          //Debugln('Ani Time: '+Padl(ToStr(GetSystemTime-(T-WeapTime)), 5)+' Ani Change: '+ToStr(P[0]));
          Time := GetSystemTime-T;
          if (Playas[CurrentPlayer].AvgAniChange < 1) then
          begin
            L := Length(Playas[CurrentPlayer].AniChanges);
            SetArrayLength(Playas[CurrentPlayer].AniChanges, L+1);
            Playas[CurrentPlayer].AniChanges[L] := P[0];
          end;
          T := GetSystemTime;
          TimeOut := T + WeapTime;
        end;

        With Players[CurrentPlayer] do
          Integers[CURRENTXP] := Max(Integers[CURRENTXP], GetXPBarTotal);

        if (Players[CurrentPlayer].Integers[CURRENTXP] > x) then
        begin
          LastXP := Players[CurrentPlayer].Integers[CURRENTXP] - x;
          Time := GetSystemTime - C;
          x := Players[CurrentPlayer].Integers[CURRENTXP];
          if InRange(Time, 1000, 5000) then
          begin
            L := Length(Playas[CurrentPlayer].WeaponTimes);
            SetArrayLength(Playas[CurrentPlayer].WeaponTimes, L+1);
            Playas[CurrentPlayer].WeaponTimes[L] := Time;
          end;
          C := GetSystemTime;
          Debugln('| Hit~ '+ToStr(Round(LastXP*1.9))+' Speed: '+Tostr(Time));
        end;

        FindNormalRandoms;
        if HpCheck then
          TimeOut := GetSystemTime + 4000;
      until (GetSystemTime > TimeOut) or (not LoggedIn);
      Debugln('Ani Time: '+Padl(ToStr(GetSystemTime-T), 5));
      Debug('Fighting Done.');
      if ((Players[CurrentPlayer].Integers[CURRENTXP]-s) > 12) then
      begin
        Inc(Players[CurrentPlayer].Integers[TOTALNPCKILLS]);
        Inc(Players[CurrentPlayer].Integers[NPCKILLS]);
      end;
    end;

    Procedure SetupBackGround;
    var
      TPA: TPointArray;
      B: TBox;
    begin
      if DisableSMARTPaint then
        Exit;
      B := IntToBox(8, 345, 497, 379);
      TPA := TPAFromBox(B);
      SMART_DrawDotsEx(True, TPA, 725267);
      B := IntToBox(8, 378, 497, 378);
      TPA := TPAFromBox(B);
      SMART_DrawDotsEx(false, TPA, 2570567);
      //SMART_DrawTextEx(False, 378, 346, UpChars, ScriptName, 2570567);
      SMART_DrawTextEx(False, 344, 345, BigChars, 'by Narcle', 2570567);
      SMART_DrawTextEx(False, 282, 345, UpCharsEx, ' Fast', 2570567);
      SMART_DrawTextEx(False, 280, 344+17, UpCharsEx, 'Fighter', 2570567);
      SMART_DrawTextEx(False, 9, 347, UpChars, ' Kills: ', clYellow);
      SMART_DrawTextEx(False, 154, 347, UpChars, '  K/H: ', clYellow);
      SMART_DrawTextEx(False, 8, 347+17, UpChars, '    XP: ', clYellow);
      SMART_DrawTextEx(False, 153, 347+17, UpChars, 'XP/H: ', clYellow);
    end;

    procedure PrintOnSmart(Str: String; Placement: TPoint);   //y1 345, y2 377
    var
     TPA: TPointArray;
     B: TBox;
    begin
      B := IntToBox(Placement.x, Placement.y, Placement.x+Length(Str)*8 , Placement.y+15);
      TPA := TPAFromBox(B);
      SMART_DrawDotsEx(False, TPA, 725267);
      SMART_DrawTextEx(False, Placement.x, Placement.y, UpChars, Str, clYellow);
    end;

    Procedure SMARTDrawDisplay;
    var
      xp, x: integer;
    begin
      if DisableSMARTPaint then
        Exit;
      SMART_ClearCanvasArea(IntToBox(0, 0, MSX2, MSY2));
      With Players[CurrentPlayer] do
      begin
        x := GetXPBarTotal;
        if InRange(x, Integers[CURRENTXP], Integers[CURRENTXP]+1000) then
          Integers[CURRENTXP] := x;

        if Integers[DRAWXP] = Integers[CURRENTXP] then
          Exit;
        xp := (Integers[CURRENTXP]-Integers[STARTXP]);

        if ((PlayerWorked(CurrentPlayer)/60000.0) > 0) then
          Integers[KILLSperHour] := round( (Integers[TOTALNPCKILLS]*60.0)/(PlayerWorked(CurrentPlayer)/60000.0))//XP Per hour
        else
          Integers[KILLSperHour] := -1;

        if ((PlayerWorked(CurrentPlayer)/60000.0) > 0) then
          Integers[XPperHour] := round( (xp*60.0)/(PlayerWorked(CurrentPlayer)/60000.0))//XP Per hour
        else
          Integers[XPperHour] := -1;

        Integers[DRAWXP] := Integers[CURRENTXP];

        PrintOnSmart(ToStr(Integers[TOTALNPCKILLS]), Point(40, 347));
        PrintOnSmart(ToStr(Integers[KILLSperHour]), Point(188, 347));
        PrintOnSmart(ToStr(XP), Point(40, 347+17));
        PrintOnSmart(ToStr(Integers[XPperHour]), Point(188, 347+17));
      end;
    end;

    Function FightIt: Boolean;
    var
      i, ii, r, L, P: integer;
      T: TPoint;
      NPCs, TPA: TPointArray;
      ATPA: T2DPointArray;
      BoxArr: TBoxArray;
    begin
      P := GetSystemTime;
      NPCs := GetMMDotsOnMS('npc');
      L := Length(NPCs);
      if L < 1 then
        Exit;
      SetLength(BoxArr, L);
      for i := 0 to L-1 do
      begin
        T := MMtoMS(NPCs[i]);
        BoxArr[i] := IntToBox(Max(T.x-40, MSX1), Max(T.y-40, MSY1), Min(T.x+40, MSX2), Min(T.y+40, MSY2));
      end;

      With Playas[CurrentPlayer] do
        for i := 0 to L-1 do
        with BoxArr[i] do
        begin
          SetLength(ATPA, Length(Colors));
          For ii := 0 to High(Colors) do //Color array
            FindColorsTolerance(ATPA[ii], Colors[ii], X1, Y1, X2, Y2, NPCTol);
          TPA := MergeATPA(ATPA);
          if Length(TPA) > 0 then
          begin
            ATPA := SplitTPA(TPA, 6);
            SortATPASize(ATPA, True);
            T := MiddleTPA(ATPA[0]);
            if IsFightAt(T.x, T.y) then
              Continue;

            if not DisableSMARTPaint then
            begin
              SMARTDrawDisplay;
              SMART_DrawBoxEx(False, BoxArr[i], clBlue);
              SMART_DrawDotsEx(False, ATPA[0], clRed);
            end;
            MMouse(T.x, T.y, 3, 3);
            if WaitUpTextMulti([MobName], 150+random(100)) then//Text array
            begin
              Case ClickType of
                0: r := Random(3);
                1: r := 1;
                2: r := 2;
              end;
              if (ClickType = 0) then
                if LeftClickFail then
                  r := 2;
              case r of
                0..1: begin
                        ClickMouse2(True);
                        Result := DidClick(True, 100);
                      end;
                   2: begin
                        ClickMouse2(False);
                        Result := ChooseOption('ttack');
                      end;
              end;
              LeftClickFail := not result;
              if Result then
              begin
                Debug('Attacked '+Inttostr(GetsystemTime - P)+'ms');
                MarkTime(Players[CurrentPlayer].Integers[ATTACKTIME]);
                FFlag(0);
                Exit;
              end Else Continue;
            end;
          end;
        end;
    end;

    procedure SetupPlayer;
    var
      ammo, i, N: integer;
    begin
      if not LoggedIn then
        Exit;
      MouseSpeed := RandomRange(15, 17);
      SetupBackGround;
      ToggleXPBar(True);

      with Players[CurrentPlayer] do
      begin
        if not Booleans[PLAYERSET] then
        begin
          Debug('Setting Angle');
          SetAngle(SRL_ANGLE_HIGH);
          SetAngle(SRL_ANGLE_HIGH);//just in case of lag
          Debug('Setting Retaliate');
          Retaliate(True);
          Debug('Getting Weapon Info');
          GetWeaponData(Playas[CurrentPlayer].Weapon);

          if (Players[CurrentPlayer].Strings[1] <> '') then
            if SetWeaponMode(Players[CurrentPlayer].Strings[1], Playas[CurrentPlayer].Weapon, True) then
              Debug('Weapon set');
          N := StrToIntDef(Players[CurrentPlayer].Strings[1], 0);
          if InRange(N, 1, 4) then
            SetFightMode(N);
          Playas[CurrentPlayer].Range := SetWeaponMode('ange', Playas[CurrentPlayer].Weapon, false);
          Playas[CurrentPlayer].Melee := SetWeaponMode('ttack', Playas[CurrentPlayer].Weapon, false);
          Debug('Getting Levels');
          GetAllLevels;
          If Playas[CurrentPlayer].Range then
            Writeln(Capitalize(Players[CurrentPlayer].Name)+ ' is Ranging.');
          if Playas[CurrentPlayer].Melee then
            Writeln(Capitalize(Players[CurrentPlayer].Name)+ ' is Meleeing.');
          if not (Playas[CurrentPlayer].Range or Playas[CurrentPlayer].Melee) then
            Writeln('[WARNING] Failed to get weapon data. Can''t detect if ranging or meleeing.');
          for i := 0 to 9 do
            Integers[STARTXP] := Max(GetXPBarTotal, Integers[STARTXP]);
          Integers[CURRENTXP] := Integers[STARTXP];
          Integers[REPORTXP] := Integers[STARTXP];
          Booleans[PLAYERSET] := true;
        end;
      end;

      if Playas[CurrentPlayer].Range then
      begin
        GameTab(tab_Equip);
        ammo := ArrowAmount;
        Debug('Ammo left: '+IntToStr(ammo));
        if (ammo < 200) then
          LogoutSeq('Low Ammo');
      end;

      SetRun(True);

      Players[CurrentPlayer].Integers[LOGOUTIME] := Getsystemtime + RandomRange((LogoutIn-3)*60000, (LogoutIn+3)*60000);
      MarkTime(Players[CurrentPlayer].Integers[ATTACKTIME]);
    end;

    procedure EndOfScript;
    begin
      FreeSRL;
      if LogToFile then
        CloseFile(DebugFile);
      Disguise('ENDED');
      writeln('');
      writeln('Thanks for using Fast Fighter!');
      writeln('Please post proggies on forums!');
      writeln(' -Narcle');
    end;

    Procedure FFStartUp;
    var
      i, ii, c: integer;
      ScriptStart: string;
    begin
      Smart_Server := 1;
      Smart_Members:= true;
      Smart_Signed := true;
      SetupSRL;
      if DisableSMARTPaint then
        SmartSetDebug(False);
      DebugModeOn := True;
      MouseSpeed := 16+random(3);
      Disguise(scriptname);
      ScriptStart := TheDate(DATE_DAY) + ' at ' + TheTime;
      ScriptStart := Replace(scriptStart, ':', ' ');
      Writeln('');
      Writeln(ScriptName+' v'+version);
      Writeln('  By Narcle');
      Writeln('');
      NumberOfPlayers(100);
      DeclarePlayers;
      if (Players[0].Name = '') then
      begin
        SafeInitForm;
        if AKpf_SavePlayers then
          SavePlayers(True);
        if AKpf_Terminate then
          TerminateScript;
      end else
      begin
        HowManyPlayers := 0;
        CurrentPlayer := 0;
        DeclarePlayers;
        for i := 0 to High(Players) do
        if (Players[i].Name <> '') then
          Inc(HowManyPlayers)
        else
          Break;
        NumberOfPlayers(HowManyPlayers);
      end;

      if LogToFile then
        DebugFile := CreateFile(AppPath+'Scripts\'+ScriptName+' Log ' + ScriptStart + '.txt');

      AddOnTerminate('EndOfScript');
      SetupSRLStats(19, stats_Username, stats_Userpass);

      SRL_Procs[srl_OnLogIn] := @SetupPlayer;
      SRL_Procs[srl_OnLogOut] := @Report;
      for i := 0 to HowManyPlayers - 1 do
      begin
        if Players[i].Nick = '' then
          Players[i].Nick := Capitalize(Copy(Players[i].Name, 1, 4));
        try
          if (Length(Players[i].Arrays[0]) <> 3) then
            Debug('[ERROR] '+Capitalize(Players[i].Name)+' settings array is wrong length');
        except
          Debug('[ERROR] '+Capitalize(Players[i].Name)+' settings array is wrong length - '+ExceptionToString(ExceptionType, ExceptionParam));
        end;
        Try
          Playas[i].NPCTol := Players[i].Arrays[0][0];
        except
          Debug('[ERROR] '+Capitalize(Players[i].Name)+' NPCTol setting is incorrect - '+ExceptionToString(ExceptionType, ExceptionParam));
        end;
        try
          Playas[i].Colors := [Players[i].Integers[0], Players[i].Integers[1], Players[i].Integers[2]];
        except
          Debug('[ERROR] '+Capitalize(Players[i].Name)+' color array is incorrect - '+ExceptionToString(ExceptionType, ExceptionParam));
        end;
        if trim(Players[i].Strings[0]) = '' then
        begin
          Playas[i].MobName := 'tack';
          Writeln('[WARNING] '+Capitalize(Players[i].Name)+' has no NPC name given to attack.');
        end
        else
          Playas[i].MobName := Players[CurrentPlayer].Strings[0];
        If (i > 0) and (Players[i].Integers[0] = 0) then
        begin
          Playas[i].Colors := Playas[0].Colors;
          Playas[i].MobName := Playas[0].MobName;
        end;
        c := 0;
        for ii := 0 to 2 do
         if (Playas[i].Colors[ii] <> 0) then
           inc(c);
        if (c = 0) then
        begin
          Writeln('[ERROR] '+Capitalize(Players[i].Name)+' has no colors entered.');
          Writeln('[HELP] If you don''t know how to get colors please read this tutorial:');
          Writeln('[HELP] http://villavu.com/forum/showthread.php?t=67793');
          TerminateScript;
        end;
        if c < 3 then
          Writeln('[WARNING] '+Capitalize(Players[i].Name)+' only has '+ToStr(c)+' color(s) entered.');
        try
          Playas[i].Clicktype := 0;
          if (Players[i].Arrays[0][1]) and (Players[i].Arrays[0][2]) then
          begin
            Debug('[WARNING] '+Capitalize(Players[i].Name)+' can''t have both Right & Left clicks. Setting to Default.');
            Continue;
          end;
          if Players[i].Arrays[0][1] then
            Playas[i].Clicktype := 1;//Left
          if Players[i].Arrays[0][2] then
            Playas[i].Clicktype := 2;//Right
        except
          Debug(Capitalize(Players[i].Name)+' click array is incorrect - '+ExceptionToString(ExceptionType, ExceptionParam));
        end;
      end;
      for i := 0 to HowManyPlayers-1 do
      if Players[i].Active then
      begin
        CurrentPlayer := i;
        Break;
      end;
      Writeln('CurrentPlayer = '+Players[CurrentPlayer].Name);
      PlayerBox := IntToBox(240, 137, 278, 185);
      AniBox := IntToBox(MSCX-10, MFBox.y2-4, MSCX+10, MFBox.y2+16);
      DebugModeOn := DebugMode;
      ReportTime := GetSystemTime + 5*61000;
      Loginplayer;
    end;


    //============================Main Execution==================================\\
    begin
      FFStartUp;
      repeat
        if not LoggedIn then
          LogoutSeq('');

        if FightIt then
          WaitFight;

        if (Length(GetMMDotsOnMS('npc')) = 0) then
         if not ChangeCamera then
          SitAndWait;

        if (Getsystemtime > Players[CurrentPlayer].Integers[LOGOUTIME]) then
          LogoutSeq('');

        if TimeFromMark(Players[CurrentPlayer].Integers[ATTACKTIME]) > 10*60000 then
          LogoutSeq('Failed to attack after 10 minutes');//Major fail safe, I suggest leaving it

        if (GetSystemTime > ReportTime) then
          Report;

        SMARTDrawDisplay;
        HpCheck;
        Antiban;//delete for no antiban call
        FindNormalRandoms;
      until (AllPlayersInactive);
    end.

  3. #3
    Join Date
    Feb 2007
    Location
    Het ademt zwaar en moedeloos vannacht.
    Posts
    7,211
    Mentioned
    26 Post(s)
    Quoted
    72 Post(s)

    Default

    Cheers! That's going to be quite a bit of work
    I made a new script, check it out!.

  4. #4
    Join Date
    Dec 2011
    Location
    East Coast, USA
    Posts
    4,231
    Mentioned
    112 Post(s)
    Quoted
    1869 Post(s)

    Default

    I've got a ton of old stuff in two archives, here and here.
    GitLab projects | Simba 1.4 | Find me on IRC or Discord | ScapeRune scripts | Come play bot ScapeRune!

    <BenLand100> we're just in the transitional phase where society reclassifies guns as Badâ„¢ before everyone gets laser pistols

Thread Information

Users Browsing this Thread

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

Posting Permissions

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