Page 2 of 3 FirstFirst 123 LastLast
Results 26 to 50 of 67

Thread: [R2]Catacomber

  1. #26
    Join Date
    Jul 2010
    Posts
    1,115
    Mentioned
    1 Post(s)
    Quoted
    10 Post(s)

    Default

    im totally fine with that. im planing on getting all of them up with this script anyways

  2. #27
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default





    Also, the deathwalk to the 10th room does not work.. it just tries to blind click through the wall. Perhaps having it walk to each room individually?

    It runs great inside.
    Last edited by Nava2; 08-21-2011 at 03:39 PM.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  3. #28
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by Nava2 View Post




    Also, the deathwalk to the 10th room does not work.. it just tries to blind click through the wall. Perhaps having it walk to each room individually?

    It runs great inside.
    I can see where that would fail, yes. I was thinking about having 2 parsed tiles for separate WindWalking. Sorry about that, but I think I can make a quick fix for the higher level'd rooms.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  4. #29
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    I started messing with this script.. I changed how you declare your areas to a record setup. Much cleaner then when walking to an area, you can cycle through the area array and walk to each RTile until you're at the correct room.

    Just a thought.. I don't have time to make it compile, its close though. Basically "CurrentArea" holds the record of the fighting room, and the other global rooms are in indecies. I would suggest writing in some constants to make the indicies easier!

    Simba Code:
    {/////////////////////////////////////////
                      //       ~Catacomber by Flight~         //
                      //                                      //
                      //            Version: 1.0              //
                      /////////////////////////////////////////}


    program Catacomber;

    {$define SMART}
    {$i SRL/SRL.scar}
    {$i SRL/SRL/skill/magic.scar}
    {$i SRL/SRL/Misc/stats.simba}
    {$i Reflection/Reflection.simba}
    {$i SRL/SRL/misc/paintsmart.scar}


    //////////////////////////////-Begin setup-/////////////////////////////////////

    Const

    //SRL Stats
    SRLStats_Username = '';
    SRLStats_Password = '';

    //Script settings
    FightRegion  = 10;
    ChangeWorlds = True;
    Member       = True;

    //Break settings
    BreakIn      = 135;     //How long before we take a break? (minutes)
    BreakFor     = 13;      //How long will we break for? (minutes)
    Bir          = 12;      //Random minutes to add/subtract from how long until we break
    Bfr          = 7;       //Random minutes to add/subjtract from break duraction

    //////////////////////////////-End of setup-////////////////////////////////////

    Var
    BreakImg: TMufasaBitmap;
    targetName,Version: String;
    lastFightTime: Integer;
    lastInteractedTile,Stairs1_Down,Stairs2_Down,
    Stairs_Enter,RTile: TTile;
    Deaths,CommitTime,ScreenTime,NewImg: Integer;

    //Break variables
    BreakRounds,TotalBreaks: Integer;

    //Exp variables
    AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
    StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
    DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
    RngXP_Start,RngXP_Old,RngXP_New: Integer;

    Procedure DeclarePlayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;
      with Players[0] do
      begin
        Name        := '';
        Pass        := '';
        BoxRewards  := ['XP','xp','lamp'];
        LampSkill   := 'hitpoints';
        Active      := True;
      end;
    end;

    Procedure CheckStats;
    begin
      if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
      begin
        case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
          mrYes:
            begin
              OpenWebPage('http://stats.villavu.com/register');
              TerminateScript;
            end;
          mrNo:
            begin
              SetupSRLStats(165,'Anonymous','anon1337');
              Exit;
            end;
          mrCancel: TerminateScript;
        end;
      end else
        SetupSRLStats(165,SRLStats_Username,SRLStats_Password);
    end;

    type
      TArea = record
        Region: TBox;
        DAnim: TIntegerArray;
        targetName: String;
        RTile: TTile;
        fightArea: Boolean;
      end;

      TAreaArray = array of TArea;

    var
      currentArea: TArea;
      Areas: TAreaArray;

    Procedure DefineAreas;
    Var
      Zone: Integer;
    begin
      Zone := FightRegion;

      setLength(Areas, 15);

      // lumbridge:
      with Areas[0] do
      begin
        Region := IntToBox(3217,3210,3226,3228);
        fightArea := False;
      end;

      // grave:
      with Areas[1] do
      begin
        Region := intToBox(3238, 3191, 3251, 3203);
        fightArea := False;
      end;

      // room 1:
      with Areas[2] do
      begin
        Region := intToBox(3875,5526,3879,5529);
        fightArea := False;
      end;

      with Areas[3] do
      begin
        Region := intToBox(3863,5522,3869,5526);
        fightArea := False;
      end;

      with Areas[4] do
      begin
        Region := intToBox(3970,5560,3974,5565);
        fightArea := False;
      end;

      with Areas[5] do
      begin
        DAnim := [8878, 8878];
        targetName := 'Warped cockroach';
        RTile := Point(3972,5553);
        Region := intToBox(3969,5550,3977,5557);
        fightArea := True;
      end;

      with Areas[6] do
      begin
        DAnim := [12896,12896]
        targetName := 'Corpse Spider';

        RTile := Point(3986,5553);
        Region := intToBox(3978, 5550, 3994, 5556);
        fightArea := True;
      end;

      with Areas[7] do
      begin
        DAnim := [7244, 7244];
        targetName := 'Warped fly';

        RTile := Point(3995,5543);
        Region.X1 := 3987;
        Region.Y1 := 5539;
        Region.X2 := 4003;
        Region.Y2 := 5547;
        fightArea := True;
      end;

      with Areas[8] do
      begin
        DAnim := [12893, 12893];
        targetName := 'Crawling corpse torso';

        RTile := Point(4010,5544);
        Region.X1 := 4004;
        Region.Y1 := 5542;
        Region.X2 := 4015;
        Region.Y2 := 5546;
        fightArea := True;
      end;

      with Areas[9] do
      begin
        DAnim := [14860, 14860];
        targetName := 'Warped rat';

        RTile := Point(4023,5544);
        Region.X1 := 4016;
        Region.Y1 := 5538;
        Region.X2 := 4029;
        Region.Y2 := 5548;
        fightArea := True;
      end;

      with Areas[10] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Skeleton';

        RTile := Point(4024,5530);
        Region.X1 := 4019;
        Region.Y1 := 5523;
        Region.X2 := 4028;
        Region.Y2 := 5537;
        fightArea := True;
      end;

      with Areas[11] do
      begin
        DAnim := [4917, 4917];
        targetName := 'Warped bat';

        RTile := Point(4020,5515);
        Region.X1 := 4011;
        Region.Y1 := 5504;
        Region.X2 := 4027;
        Region.Y2 := 5520;
        fightArea := True;
      end;

      with Areas[12] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Corpse archer';

        RTile := Point(4017,5496);
        Region.X1 := 4009;
        Region.Y1 := 5489;
        Region.X2 := 4021;
        Region.Y2 := 5502;
        fightArea := True;
      end;

      with Areas[13] do
      begin
        DAnim := [6182, 6282];
        targetName := 'Skoblin';

        RTile := Point(4000,5495);
        Region.X1 := 3992;
        Region.Y1 := 5492;
        Region.X2 := 4009;
        Region.Y2 := 5499;
        fightArea := True;
      end;

      with Areas[14] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Corpse mage';

        RTile := Point(3995,5481);
        Region.X1 := 3988;
        Region.Y1 := 5475;
        Region.X2 := 4002;
        Region.Y2 := 5489;
        fightArea := True;
      end;

      currentArea := Areas[zone+4];
    end;

    {Skeleton by Brak, re-written with bitmaps, yay!}
    Procedure TurnAidOff;
    Var
      x,y,BMP: Integer;
    begin
      BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
          'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7+Ri+' +
          '9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
      setbitmapname(BMP,'AidButton');  //Don't laugh

      if TabExists(tab_Options) then
        if GameTab(tab_Options) then
        begin
          if FindBitmapIn(BMP,x,y,570,410,605,450) then
          begin
            MMouse(x,y,5,5);
            Wait(Random(100));
            if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
            begin
              GetMousePos(x,y);
              Mouse(x,y,0,0,True);
              Wait(RandomRange(150,250));
              Exit;
            end;
          end;
        end;
      Gametab(tab_Inv);
      FreeBitmap(BMP);
    end;

    Procedure LoadVars;
    Var
      tempPic: TMufasaBitmap;
    begin
      Retaliate(True);
      TurnAidOff;
      Version := '1.0';
      MarkTime(CommitTime);
      MarkTime(ScreenTime);
      MouseSpeed := RandomRange(17,20);

      AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
      StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_Start := R_GetSkillExp(SKILL_RANGE);
      AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
      StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_Old := R_GetSkillExp(SKILL_RANGE);

      Stairs_Enter  := Point(3248,3198);
      Stairs1_Down  := Point(3874,5527);
      Stairs2_Down  := Point(3867,5524);

      DefineAreas;

      NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
          'XrvsCx9OyzLAkuX3kHpCgIiinQURFHpRUBAuiCC9CJFuvTeVEA05X' +
          '7//D2w9xqjy7KACcn9+XmdV15rmDl7Zva85/M8Z86c+eSTj9oG7dr' +
          '17alTDvfvZ3uesf3000+3uzkf9c8QBwd7ZcX9i4EeGkR5dXU5KMSV' +
          'gvxPIUKRf6doairp6GC0tfHyCrIHDvy43UfwT1J5ecHS4nRPb62sL' +
          'D83N+d2N+ej/hnS0yMPDLR1dNQY6CkryPPb25IePcodG++bmOh/+r' +
          'S1/Ul1fX1xZUV2aXkGtdTXFvT1PZ6eGiwqStLVUZSW5iZqqBw9dmS' +
          '7j+OfoYcVd/r76nt76rg4j+EJqtvdnI/6Z8jKxiA/P665+cHkZP/Y' +
          'WC/QmnX3embmtTuZ0amp4aslIjk1HEp8YvCtWxd9fSy1yXIKcrxqB' +
          'KmS4uSe3mYleX5hETakvPR2H8o/QMlJwTdj/V+8mABItbVx292cj/' +
          'pnyMnJOCrKW0yUbWysb2pyYHS4q62tMuZ6iImJnqycFAcH2/4f933' +
          'zzTdffLHzs88+27Vr19GjhyUkhHBYGTkEj6QEh6qKMHguHit+/Ng+' +
          'RSXZ7T6av7vi4i9FRHguLU4BpDpamO1uDkPi5eW5ciX8rJeLuaWhj' +
          'Izkdjfn/0e5uZkbGagaGaqCh06M9SUm3WJiOs7IjuzsLFJS3MKCzC' +
          'LCrKOj3RLi7CzMPwoI8v7ZDf5HCyANCXaZmxsCSDU1tznc5eHhwWL' +
          'R624WFOy3tDj+86u5kpKE836Of0HDPuodnT1riUGJDA6037x98cb1' +
          'KLBLxvfds2e3lBSPmAgbQpa7peXhipkqCn/++ed/Xmv/6YoHSENcx' +
          '8e6+HhZNIjK29WM/fv3JyXdXng+djnQZceOHfQ3NjAgEghyN66ff/' +
          'Vqbmz0yV/Two96W97nrDQ1ZAb6W0lEGWZmpo3ufujwQQiVkXK8KWm' +
          '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' +
          'S9eTDztqwfLA0iNjQ0Zb/87kpIShcgWCklDkaguTy3+/va/vH72en' +
          'kWjHVmqmdspG1goGXv3r3v7FtcdLumJhu8BiBVVBRf6yvCwi798vP' +
          '8rz8/e/1q9rdfF3775dkvr+eWlyYa6u/fuBHq5+8ZGuqbEB/i4W6q' +
          'p4dNTAwGVJ88eRAc5JqfF3vp4il1dXlrC7Krs3FsrP/iwtjPr2bHR' +
          'lsflKempF4LCva9EHAmLNQnIuKM8ykDC3MSkSgfGXmmpbUEIIViZq' +
          'q1rp+CgS4tTP38an55aaq2JqemOnvgaf3w0GPoxlFXL/r5e3h6Ovr' +
          '5OoeGenqfNTczVbOyIMK1q6ExH4uW1NLCb/rMb0VUQqEEBzsPD3Uy' +
          'Hd+nTpDUpSgSCVIZWddWbs1MDQwPPunsrGtoKHlUmX2/LD0v/3ZmZ' +
          'lRickjARQdTExwBJ5GYHBoW5sbG+hMjA/ip6ZHj4z1DQ0/Gx3tHRr' +
          'paWsrHxrrnANXZEQiYgdzS0lwDQx0mpuM7dtJ+LsPa2mJufmxmdnh' +
          'k6AmExCPDT3p6mh0crY/RWheCmfk4GiWnqCCEkOWLivLq6W2QluLZ' +
          'EKdvi4eX085OG84VdKGO9oru7hoIdE9wHKESSoV0tRzT0lTZtXZ0D' +
          'U567ZrP8GALF9dxeTkhOt8Ijra4MNndU/3i+RiEZNevR22u5VRBH1' +
          'ZTV1RXR+rpovV0MZokRSiRV87+8vr5q+XVeA9QXZ61s6MxESUvL7a' +
          '4KG5srA0glZSgMbTo7+/j6nr69fI8QNrT/QicFAgFH+x80gwJ6dsT' +
          'wuEzPz+Pvr6apqaympp8Ts71//v30vh4GwTDurqY8752XV2Vyy+ng' +
          'HGoKjjk0uEjh97+ol27dikpI8hkFYouGi4yWmTltrZSAQF2KCQSvS' +
          'fo7e1tVvBcnl14PjLY3/Di2fDYaI+rqyMTE42Qm5WVWZ2ookaQRaM' +
          'kUlOCx0fblRVFtoVTKqFg6DicBPQ9iHgH+tsmxvsmJwcAn5L7aUVF' +
          'SXdzYzOzYtLSIlNTIxKSQuITg69c9TrrZWZpqa6vq2RsiDrlpDM9P' +
          'aSjJc/I495BQc5p6ZEdT6qAx97exqnpQaAVPgOkfb2tFF0t+s9M4X' +
          'DomZmh0ZHOmroC+ABmmpx8e93hCFY2ZqScoLg4JwRUObk32NgOKSh' +
          'u5jbTTz8dCI/wiI09HxHhoaurqq2l1NhYtLAwVV2VDf98G1IoOmsv' +
          'uQBOCpw+7WsASCEt3b17N83NdHTIEOJOTfYAoRDu1tVWfP3115to9' +
          'tuCGggEJaI6kqKjSlqF1M3t5OvX869ezvzyGvh6fuNGNM2fACDNy4' +
          '/t7a0WE+WmCen0ZOdvvy6ChwJfy0uTkJMCpwUFuWu1Ga4YJE00sEY' +
          'tEAb/tpJs9i8vT63U8HLq1fIchbLmiATE1SQNZTgEMN9TjnruricB' +
          'UgJBbvce2idTXR0PFyKIRiCkX16egStSxp1kyLzony4ODlYMWkoeK' +
          'ZSRHl7+MI2b+7iyymZmEWxF/3HS8zZCgswQc/b2NA0NdwKhwOnQ4J' +
          'NHVfd8/NwJBDQPD9ePKyszfA0n9quvvoKwFtJVJFIS8imgG+JhOzs' +
          'ycOrja7tnjVP0RgAplOvXz0OkDWxClAvfC1FueXkxIEB/36PHjnR2' +
          'Nvb1NWVmRa/EujNDgYEBDA4mHzx4AFwPpSoGsRyYqagw+9GjG16R6' +
          'cCBH+NuXwROAU95pKD/BfuS0pTs7Bivs+ZVVdkDg4/RKPE3kArws7' +
          'JzsNGsBwhNSLzc1FQEkELh4+N5fxsFBeT8/OjsTH9n56Olhcnp6QE' +
          'eHu6NNngtcfNwqqkhtbRVKRTU5cDTU5Pd8/OD0G8d7G3X2oUKaVdH' +
          'ORBKE9KqqizgdGlxHMLUkZHm0dHW5se133xDbxwYLFWLjIG49+RJd' +
          'R1tlKkJEZx3ZqprcLBhaXHMxWWde3l7935PVFcAJ4XoHWKAFTPlZ8' +
          'fiVN7f8vjxYxPjPfOz/bW1OStm+nImJCSQwZ5z6NBPKJQESQM5NdG' +
          'tpCgiK81DM2b780Ql9Px5G0kJDiC0s7Omq7N2dKR7YKDDysqUkaFa' +
          'ABaJFBMVZadoK0xN9judtqS//Qqkwc6mJniAtOJRdlb29QcP7jQ2P' +
          'mJkAC3mehjkrQUFcbOzkMZWJiTe2tBTdbKyYmSyQlSUNxwvO9shDd' +
          'KGl0SQlBRNS4/QJCGB0MBLTkDonYwrvr7WtjZkS0sNHR3l6ZkBRwc' +
          'dKqRQSCTaKx5QIS17kAY2ys11HIt9d4BXVFRkZnoQAt2m5mLIQ2em' +
          '+1xcTm20tfTFzMJkba0NCWlxcXxEuEdnZ4UR3Wz3D5BK0oC0sDCuv' +
          'v6eu4cZcFpQeHtivF1Scv17BEeOHKJQ0FYWmqamRANDAkTIdXW5vX' +
          '01ZaX5jPy4YmKCYKaGBjhDA6yPj7XAynwMGk92pCTHLi6MtzwuBpY' +
          'nxjvSUhM31HMUFKRMTuJTkoMiI9zh99Kl/KVB7xtIPTyMQ8Pc4xKC' +
          'MjKvtbfV8/LSuLbTEcSTkhKcujoKw0MdeAK9jI/qpBrqsvfvpyYkB' +
          'IWGulU+ykYg1g8+RcWEu7tqq6pzO7tqMjKjHlXmbnQO25Gjh6E3pq' +
          'dHwLUIIOXjZYKMdUM1nL/grqmBlEPwA6GlZalFJYkJ8YFgoyYmBBJ' +
          'RTl0NAfnL/PyIvh6KCqmCgujOnTvfrwcIXS1BaLQk/Ohk8h+WOeLk' +
          'PDE60vtyaXpstOPly9mR4daqyhKa9WxRSckhN2P9x8c7iEQFL681P' +
          'ZQqgDQfIO0sB0JpQ1p0u7AoztaOkptzvbDwdmraTQaboaunZmuj4+' +
          '5qAgnp7ExvZlYUQMpIl6CKQsGamxEhy15YGAVItcjvXnslpcRnp3u' +
          'f9tVOT3XX1GR3dTxa65bBWgLrTIi7WFx4e3joMfxeosIcLCxMG6ph' +
          'K6ImpABpQlKoPIJHSUHA28sMUqFNVAWBrqQEl5urQVV1AZ3xaqqTE' +
          'vBSY+O9bi76l4OcI69eYqT+i5e8AM/Mu9cgkw0IsHdxddhQ8+DKGR' +
          'ER2NBYDJA+fzZOJCLIZHkjozVTnvdF0lQ7aYTT0lKKj7tUXp5eUpr' +
          '8u41aaOhoK+Px0oqKIgS8zLP5EV4e5hVOOY+JitEYF6JCGhbm7miv' +
          'Az+6qurv63odO3a0p7vl5crdutGXSzNP++qnp3oZsaRN6G72tdhY/' +
          '5mpbilJPgODdW6fgY3mUSFdy0mL4u7duxEXd8nrjEVycjDjvUhcXP' +
          'j0aaPQEHcDQ3xrWynsezc7jvGjUFKStbTU9D5rsfxyWoCfTVXp3ZH' +
          'n6Oig6akeMOi5macJ8Ze8vN0Yr/yT1Z5zLTqkq+tRceGtly9n4Aps' +
          'bIQxM9XdUCVbEdVJyRqywKmhgeoJjoMIWe7v936/udoOHNgvJnbi7' +
          't2YlNRILu4TNLcBQoODV5x0cnoQj5M8dYpCJq//JCM0qbA4uaYuv7' +
          'w8w9gQZWyIlpbewIJ1O3bsuHbtytzsSEtLKQErNdD/eGwMEp/WlJR' +
          'bjOz++Y7PTc0MDQxwJE2ckDA/ZKZffvkFZFuHDh+UlhXX1FRVV5OF' +
          'gsfLgJNCJJyWFp6SGkqFlEKh8TA1FVI/P9vklBCAlJ+PhZWNBf7/w' +
          'UMH21vrgNClxanxsc6uriooMTGRjB/phpSdfe1m7AWAVFych6K7Tg' +
          'j3X0gf0oEUDrytvczIAO911pKZmZnBZvzww14g9No1Xzt73eTkELh' +
          'u2NqaM34UTMzHzp21CF+J2B9KSfGJi/0hc4fKoUkDA43dXZUebsYe' +
          'rsayCBnGK4eeExsbvbQw9bSnhqKlODneNTfTPznZfScjgfFKtijwT' +
          'U0NWSFBJlkZrkdVuSzMP7KxHtjc8ilUCQnxSoqfmJwasLbShD78/g' +
          'bgpAApWVOuu6tOTJQdpSLCxsa6brVKynLl5XeKi5P6+poEBVgQsry' +
          'MP5m+e/fuzMzU2Zmh6uocFRVRcNKpqX4w05bmGg6OdZ6c/fTTT9Fo' +
          'VFTUZaS8NJ17cKysTFi0NFpVAiCFooAUWlqclpTgBki1aD2nCYQmJ' +
          'l729rLo7akBSLm5mDQ0VLm4OJ90NC+/nAVIZ6AnTHTfv5/Y1VVz5M' +
          'ifNUyRnROzIUjzqZBK8knRgrSoKC4pKXhkpFlLS9XWVndDE/XDws7' +
          'Gxwf6n7cPCHBycQaONrB688p0rGC369d9S0oSsBjpdyDFYlUAz/a2' +
          'svnZfqScoDoBcWC98ck3gp6Tm5Ox9GLiSVuZujoCnPT5sxEIb9rbG' +
          'k6c2Mwz15sTBi0qyH9cUvKEuBhbZ2ettOQJpuObXD6FKvhpFOSFba' +
          'xJNTV5igqi33zz7vA7OGlQsAtFR7Gp6T7XiSPCQqy7dq0/PGVlbVR' +
          'WlpabGzszO8x54ggP97F1V7ejipWVpa72YU9Pg5+ftQZRrqIyCzy0' +
          's6vRzc2J/sDjvn37HB3sGpuqr169vO6Q9SertzZQqtIqKmIAqaKCy' +
          'KWLjpC3QtBLJCq9vzE1IY2J8V14PkGFFEpCUtBAfxP0gaWlaeDU08' +
          'MkKyvK1/csI4e5Of0X0p4VSNcbDMlfgfQmFVKaTkqFdHqqU01N3sR' +
          '0YxlTUNCZlJQQ4NTWlqKlpbLRtUEuX3a/dfNCSkqoro7qO5C6uthC' +
          'm5saC5aXZ8VEOSXFeRjsOeAdzU1V46PtVyI8DA0xjx8Xz80MDA60e' +
          'Xo60+85H1zCAswKSF4FJJ+oCCtRXdrSnACQbjrcpUpSUhiHlejvb0' +
          'EieLDYd1c6Cg52CV6FtK62gIP9ENcJhma4eZ9zzMmNvX7db25+jIP' +
          '9MBRGJuLicJiensdlZan2tuSc3Bs11fk3boTj8Gj688P3798XEho0' +
          'Mz0yNtoVEnqJ8bgCLm4oVSmAFIeTgeS0ra1cgJ91DUiDEhODCgpuL' +
          'y5OiQifAEIVFUV1tVWqarKB0MUXk5ERZ2Sk+czNiOzstG/ifBC9Da' +
          'nuek76X0gr6Dvp/Fy/irKEicnGIL140R0S5Ky70VbmmghZoY3ahJ/' +
          'fqYSEQIDU0AD7DqThEX5NTQWFBbd+fjUvLMQBhZH7CHg8bmS4E9A+' +
          'e8b04cO09vby+PgoNTXsuk8W/Bna+cVOZpbj0tKCSFke8NOwcI+jR' +
          '/YeP350K3UePHhAj6KYmBh87pwFeOWRI3/A8G1IT7AfgsJInSEhnh' +
          'lZ0QEBDpOTT1lZfoLCw8tFZ/sdOz739j5TW5t/Oej09Rjf6GuBunp' +
          'akJ6s+0UIhOxAf8f87PD83HBaWtJGVw8+evQw4KapgQRIX7yYWAvS' +
          'xJVwNygz82pTU/G1GF8rS9LEeNfMVC8YKPSHzs7KGzfOQ3cCTnft2' +
          'vBDAYwrO+fazZv/ddL1Ib1JdVIpupA+fzaAQAgZGm5sxaQLF9wK4C' +
          'KQFwuQSkvxb2hfkI+PU1bGlcyMKyZG+HcgTUkKr63LSUy4/HJpio+' +
          'XlY+Xhf6DeOCzvr7eXZ2VN2PPZ9wJj4+PMDSk7Nv3w0ab9MHFy8dp' +
          'b6upRUKkpV85euQH+v2fEVlbavr4WD7pqGY6vh+H+8ME8t8hrdsAp' +
          'GFhnrduX3wbUjyeRuenCi4Lqam3/HytfXwcjIwpxxi+5oiLi05ODs' +
          'zODkHGCqgeOMBo8vK2sFiktpYiUV3uxcIkfSe9fTuAqI6E7BXYrK3' +
          'NjYjwCAlx1dCQNzTE9vc38nAz8XAzyyL+xBc65ICTbhjSinUhBco2' +
          'AWlxcfxWIIVjycyIfB/SzIyrkNr/B1I+FoCUztQ+cJTs7KSrkWfCw' +
          's+YmRvSnC64XeLn5/E5Z2Ggp1xYmABOKi29/nMc9GVtrXX58qnZmW' +
          'GAVFnpDysmbc5JL/jbBwc5n/eznp8fo0IqI8P79XsJL2TEFF3t6Ku' +
          '+kBPJyEpuyAchkqmoyB8ZefJsfrSm5p69wyYXUhMS5rO20rS3056c' +
          '7F3bSVcgDQ93R6MlAdLFhamZmYG62ty62nuBgaewGOnHj0uRSGGAV' +
          'FdvzedNtq7/QDrNYLj7F0Eq9UEhTYi/lJ4WduumP4S7QCgULEbm/a' +
          'QSeo6+PiUtNdzewUgOKfM3fP8CHx/XuVVI6xuKAVJlVbktVmhtTQk' +
          'LdW1qLOFgOygm+odxsM05qaursauLoZMTpaWljJ+Picop4Y/rb0tL' +
          'SyUmX7e00tvcBZBEVut/2lxVld3ZWeXqasTMzLSJSj5ZTWn9/W39/' +
          'e2GhlrpQ+rqbAi9emjocX9/E5hpR2dlcnIIAE7SkFdRElt4MQGQ8v' +
          'CAmUptriXrKnsV0tnZPhERLj29DwXpoLSUwMYhdQVI8/4ESMPDPcP' +
          'DPeAKPzrSKivNR+VUR5vw9jYyMtJZWYmnnc3/yikKGxUPzwkPz5MA' +
          'aV9P8+oaR1uF1MvLJizULSMzWkqCU07mD5OXNgephbmGlSXRQF/V3' +
          'k4rJsaXCulq0Kvy/fffCQsLJSTcDAw+K7CFdT+CQ3zbWsvb28otzd' +
          'XJ5DVj6XW1c+fOqCjvkGCXoYFmepAmBRkb4zu7qsofpmdkXpma6Ja' +
          'SlmBlZSYQkHi8LJgpAS8bH3cJICWqyTP4KP1GBR07IT4QIJUQ59Fj' +
          'xEkL6EJaHJe8eUjd/iRIvc5Ynve1cXE2vHjB4d69G1RIoZDJ+L17v' +
          'xcREU5LS7gWEygsLLDRL/2LxcnFAZBaWxHHx/uOHflBWWmr4W7kFS' +
          '/ISfPybuOwEtpaf+ilm4NUU1NFR1tRg4iAAhGvkAALFdLEpMszM8N' +
          'PntSi0EqffbalFbTi44KKS5La2srFRE9gsZt/e+OePbvT0yIiwj3G' +
          'xjoEBFg11nZSA33M4uJ01FWvzMwr12LCqH+CqBuLQWCx0mCmFZUZ+' +
          'hQUcKqtQ3i/kq0LOnb8KqSiIlza2uu8WI0BSOOTkrfopDc2Cek5gP' +
          'TafyH9w4iKmbm2k6OupSXJ0oL0+tW8HEKACun9kviXSzNDg214Amo' +
          'rEwP+MrGzs3h6njzlpDM1OXDsyF4REfat1AbR5p3MKFsb0sBAq7kZ' +
          '3sHx5Nt/3RykSkrSBII0EIpBieXl3yoqSbp69WxBYfzc3Ghh4d1jx' +
          '7Y0HE3VxQCn0DC3isosXh4mNGrzr0KGkKmwKD4q2ntm+umaTpq04q' +
          'T6+ujnz8fhIg+xwduLWnz33R4sRhY4VVIUXV6eExRgkxDj4ubm3HS' +
          'T1hJAmpwaCjkpQEokrrNABBDKAKQhW4L0XqylOenDQgo5kZmZOkBq' +
          'qIdubMxveVySlXmlsbHg1cu58vJC+ou3/K3EzHzc1UUfytDgk2NHf' +
          '2Bl+XEr8ZWBgXZ5eSZAOjrWc8Hf1trG9O2/bg5SPn5uDEoUIFVWEj' +
          '59Sq+pqTjn3s3HLWU5ORkf6s6yk6O+kwPl+nVfOTkBBN0HsemLpEm' +
          'oqclNvxOxtDhFx0mTkoJ0Kao93dV2NloBFx3fWdSChZVJVVUcjZZU' +
          'IyBq6+6Bmerp4Ri8C8+4VkLEzKsT4+D47CjUOpkvEFpAF1KgLClpF' +
          'VLpzTvpCqSSm4Q0IyPi/XBXWJjfUB8DNqqtpRwUeHpooKm2PndoqL' +
          'kwP+cvnpOwRR05cghsFArABeEucMrOvv5UPZr6+uuvMzNvFhYlBly' +
          'wLypKSk2PlEMi3t4ACA3ZOKRffLFTWVFYVUUEIMXjJDOyorXI8nEJ' +
          '4R9whSgKBWOgp0omK9jaaHJzHdv0zeIbN8NaWx88KE+fmx1aE9IVJ' +
          'w0GSB+Up4GT+vjQeCcvAiGBRkuhVCXzC26bmKitTl76wO8EB0hzcq' +
          '6PjLSAkwJ39Nczh41zc2LanzyQlRFcy0mTqeHuCqT0Vip7XwAppLS' +
          'QM27OSc9RnfQODSeFg9ImK8OphrTL2AhXVZ1lY0W6lxe/vWuLbUL7' +
          '9v9gb0cGSG/dvMjO+hNAipDb5O25U852PT2N12J8VxdCSbt7N/6dg' +
          'H8F0pC3IOVgCFKQvLyEvBw/QColwVlTkyctxUPSoPF476aFRiPVCT' +
          'IYtGR9XT4H+xGC+mZewI1Eyvb3N3V1VoGZgt3Th9TKkgTXK3f3k84' +
          'uNB4T+/TTT/F4eRxORkVZHIJe6HtIOaEtzjN5R6vcXe/traGuPUL/' +
          '3e5AaEbGlbb2NSHNz4uNW81wtwNSxxUnvRN50gj3DqSfrNy5ltcgI' +
          'gFStKoEHCwGLWVo8M97O9W//rULCHV11T/lRJGR4gRIUajNjJwoKS' +
          'kMDnXVN6zMooFYt6ur7uTJd58jDg5xCV6FtP4/kDK68N0PP+xFyPL' +
          'JI/mlJLhmZkdgR/jnRl9m8fnnn7Ozs5HJGpGRQQi5PzwNwcvHhUFL' +
          'oFASQ0OtYqIn5OQEGZmh9E4L6xseQio6Md49NNAcGuK68vrRNSBNS' +
          'go+f97OykoTnFRbh/Yb6Pbt+wGNkoJOpamp2NZWxsvDoq+v9gFXmF' +
          '9x0tzr7e1lVEgVFemN6qelhQOkra33FeRFaEIKNhob6z868nirkNK' +
          'qnL5WIY3OuBMBkIq9BymcRgIBQVRHAqTLL2eFBNmxGOkvv9x4z+Fg' +
          '19LSjL4WKie3+XHFTQvMzslJx96erKujYGVBAEilpTf20DdIWUVpZ' +
          'LR3cOhJwAU7IHRktCsvL/P9cTMgFJxUl7JhSD9ZuRMqIiPNIyPDAx' +
          'Gvu5sRK8tBAoEhM4WOTSaTUlJu5eTeSk0Nb2spe/y41MCA8vY2kPG' +
          'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
          'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi18zM' +
          '69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
          'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WXWZmx' +
          'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCXzM27' +
          'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ4GXH' +
          'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom8uEM' +
          'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtPCzUz' +
          'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
          'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
          'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0krXzl' +
          '731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
          'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
          'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL5vzy' +
          'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
          '37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
          '7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
          '8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
          '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' +
          'LKQil');

          //Procedures taken from Iamadam's StrongHolder
          tempPic := GetMufasaBitmap(NewImg);
          BreakImg := TMufasaBitmap.create;
          BreakImg.SetSize(tempPic.Width, tempPic.Height);
          tempPic.FastDrawTransparent(0, 0, BreakImg);

    end;

    //Procedures taken from Iamadam's StrongHolder
    Procedure BreakScreen;
    Var
      Canvas: TCanvas;
    begin
      Wait(500);
      try
        SmartSetDebug(True);
        Canvas := TCanvas.Create;
        Canvas.Handle := SmartGetDebugDC;
        ClearRSCanvas(Canvas);
        BreakImg.DrawToCanvas(235,200,Canvas);
      except
        writeln('error...');
      end;
    end;

    Procedure Report;
    Var
      ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
    begin
      ClearDebug;
      ExpA  := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
      ExpS  := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
      ExpD  := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
      ExpC  := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
      ExpR  := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

      WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
      WriteLn('Time Running: '+TimeRunning);
      WriteLn('Attack XP: '+IntToStr(ExpA));
      WriteLn('Strength XP: '+IntToStr(ExpS));
      WriteLn('Defence XP: '+IntToStr(ExpD));
      WriteLn('Constitution XP: '+IntToStr(ExpC));
      WriteLn('Ranged XP: '+IntToStr(ExpR));
      WriteLn('Deaths: '+IntToStr(Deaths));
      //WriteLn('Breaks: '+IntToStr(TotalBreaks));
      WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
    end;

    Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
    var
      mx, my, Pic, I, B, H, TPH, Numb: Integer;
      TTP: TPointArray;
      Canvas: TCanvas;
    begin
      SmartSetDebug(True);
      GetClientDimensions(mx, my);
      Pic := BitmapFromString(mx, my, '');
      TPH := High(TP);
      for I := 0 to TPH do
      begin
        TTP := LoadTextTPA(TP[i], SmallChars, H);
        for B := 0 to High(TTP) do
        begin
          Numb := ((I + 1) * 13);
          FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
          FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
        end;
      end;
      Canvas := TCANVAS.Create;
      Canvas.Handle := SmartGetDebugDC;
      DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
      FreeBitmap(Pic);
    end;

    Procedure OnScreen;
    Var
      ExpA,ExpS,ExpD,
      ExpH,ExpR,XPH_A,XPH_S,
      XPH_D,XPH_H,XPH_R: Integer;
    begin
      ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
      ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
      ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
      ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
      ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

      XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
      XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
      XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
      XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
      XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));

      PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
      PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
      'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
      'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
      'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
      'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
      'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);

      MarkTime(ScreenTime);
    end;

    Procedure Commit;
    begin

      AttXp_New := R_GetSkillExp(SKILL_ATTACK);
      StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_New := R_GetSkillExp(SKILL_RANGE);

      stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
      stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
      stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
      stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
      stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
      Stats_Commit;

      AttXp_Old := AttXp_New;
      StrXp_Old := StrXp_New;
      DefXp_Old := DefXp_New;
      HitXp_Old := HitXp_New;
      RngXp_Old := RngXp_New;

      Report;
      MarkTime(CommitTime);

    end;

    Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Boolean);
    Begin

      AddOnTerminate('Report');

      Smart_Server := World;
      Smart_Members := Member;
      Smart_Signed := Signed;
      Smart_SuperDetail := False;

      SetupSRL;
      DeclarePlayers;
      CheckStats;
      R_UpdateHooks;

      if Clear then
        ClearDebug;
      LogInPlayer;
      if SetCam then
        SetAngle(true);

      LoadVars;
      OnScreen;

    End;

    Procedure humanWait(time : Integer);
    begin
      wait(time + random(time) + random(random(time)));
    end;

    Function DeathScreen: Boolean;
    begin
      Result := R_ValidInterface(18);
    end;

    Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
    var
      InterfaceID, X, Y: Integer;
      Item: TInterfaceComponent;
    begin
      Result := False;
      InterfaceID := R_GetInventoryInterfaceIndex;
      if InterfaceID = NULL_INT then
      begin
        R_Debug('The Inventory interface doesn''t exist!', '');
        Exit;
      end;
      if InterfaceID = INTERFACE_INVENTORY then
      begin
        R_GameTab(RTAB_INVENTORY);
      end;

      Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
      if(Item.ID <= 0)then
        Exit;

      R_ClickInterface(Item, 3);
      GetMousePos(X, Y);
      wait(125+Random(55));

      if(IsUpText(Action1) Or IsUpText(Action2))then
      begin
        Mouse(X, Y, 0, 0, True);
        Result := True;
      end;
    end;

    Function R_WindWalk_F(T: TTile): Boolean;
    Var
      I, Tries: Integer;
      M, P: TPoint;
      CTRLPoints: TPointArray;
    begin
      P := T;
      repeat
        M := R_GetMyPos;
        CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
        Inc(Tries);
        if(Tries > 20)then
        begin
          R_Debug('Failed more than 20 times', 'R_WindWalk');
          R_FindRandoms;
          if Cast('lumbridge home teleport', False) then
            Wait(RandomRange(9500,1175));
          Exit;
        end;
        for I:= High(CtrlPoints) downto 0 do
          if R_WalkToTile(CtrlPoints[i],0, 10) then
          begin
            Result := I = High(CtrlPoints);
            Break;
          end;
      until(Result);
    end;

    Function inArea(Area : TBox) : boolean;
    begin
      result := PointInBox(R_GetMyPos, Area);
    end;

    function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
    var
      tilePoint : TPoint;
    begin
      result := False;
      tilePoint := R_tileToMs(location, height);
      MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
      wait(100);
      if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
      begin
        ClickMouse2(True);
        if DidRedClick then
          result := True
        else
          result := False;
      end else if(isUpText('options')) then
      begin
        clickMouse2(False);
        if ChooseOptionMulti(action) then
          result := True;
      end;
    end;

    Procedure Fight;
    Var
      inFightWith : TNPC;
      npcs : TNPCArray;
      index : Integer;
    begin
      if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
      begin
        lastInteractedTile := inFightWith.tile;
        humanWait(1000);
        exit;
      end;

      npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
      if(GetArrayLength(npcs) = 0) then
      begin
        humanwait(500);
        Exit;
      end;

      for index := 0 to high(npcs) do
      begin
        if((npcs[index].Interacting = -1)
        and not((npcs[index].Tile = lastInteractedTile))
        and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
        begin
          lastInteractedTile := npcs[index].tile;
          if(not R_tileOnMS(npcs[index].Tile, 0)) then
            exit;
          if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
          begin

            case (Random(4)) of
              1: MakeCompass('Random');
            end;

            lastFightTime := GetSystemTime;
            humanWait(2000);
          end;
          break;
        end;
      end;
    end;

    Function AreaCheck(Where: String): Boolean;
    begin
      Result := False;

      Case LowerCase(Where) of

        'castle' : Result := inArea(Areas[0].region);

        'grave'  : Result := inArea(Areas[1].region);

        'room1'  : Result := inArea(Areas[2].region);

        'room2'  : Result := inArea(Areas[3].region);

        'room3'  : Result := inArea(Areas[4].region);

        'region' : Result := inArea(currentArea.region);

      end;
    end;

    Procedure ToLocation(Where: String);
    Var
      T1,T2,T3,T4: Integer;
    begin

      Case LowerCase(Where) of

        'grave':
          begin
            R_WindWalk_F(Point(3246,3198));
            Wait(RandomRange(1215,1325));
            While R_Moving do
              Wait(1);
          end;

        'room1':
          begin
            if(Not R_TileOnMS(Stairs_Enter,100)) then
            begin
              R_WalkToTile(Point(3246,3198),1,1);
              SetAngle(True);
              While R_Moving do
                Wait(1);
            end;
            if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T1);
              repeat
                if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'room2':
          begin
            if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T2);
              repeat
                if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'room3':
          begin
            if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T3);
              repeat
                if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'region':
          begin
            R_WindWalk_F(RTile);
            Wait(RandomRange(355,525));
            While R_Moving do
              Wait(1);

              MarkTime(T4);
              repeat
                if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
                  Exit;
              until (False)

          end;

      end;
    end;

    Procedure CheckScreen;
    Var
      T,I: Integer;
      S: TInterfaceChild;
      Items,Items2: TInvItemArray;
    begin
      if DeathScreen then
      begin
        Inc(Deaths);
        MarkTime(T);
        Repeat

          if(TimeFromMark(T) > 5000)then
            Break;

          S := R_GetInterfaceChild(18, 36);
          R_ClickInterface(S, 1);


          if Not DeathScreen then
            Break;

        Until(False)

      end;

      Wait(RandomRange(4375,5350));
      Gametab(tab_Inv);
      Wait(RandomRange(575,780));

      if R_ItemExistsEx([
        'scimitar','blade','sling','Sling','shortbow',
        'helm','platebody','kiteshield','defender','hide',
        'Amulet of','bracelet'],Items) then
      begin
        if(GetArrayLength(Items) = 0) then
        begin
          humanwait(500);
          Exit;
        end;

        For I := 0 to high(Items) do
        begin
          R_ClickItem_F(Items[I].Slot,'Wear','Wield');
          Wait(RandomRange(1150,1350));
        end;
      end;

      Wait(RandomRange(575,780));

      if R_ItemExistsEx([
        'scimitar','blade','sling','Sling','shortbow',
        'helm','platebody','kiteshield','defender','hide',
        'Amulet of','bracelet'],Items2) then
      begin
        if(GetArrayLength(Items2) = 0) then
        begin
          humanwait(500);
          Exit;
        end;

        For I := 0 to high(Items2) do
        begin
          R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
          Wait(RandomRange(1150,1350));
        end;
      end;

      SetAngle(True);
      ToLocation('Grave');

    end;

    Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
    Var
      w,x,y,z,h,m,s,
      RealBTime,
      CurrentBTime: integer;
      NPC: TNPC;
    begin
      if not LoggedIn then Exit;

      w := (BreakIn * 60000);
      x := (BreakFor * 60000);
      y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
      z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);

      if (HowManyPlayers = 1) then
      begin
        if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
        else
          if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
          begin
            if R_AreWeInteracting(NPC, False) then
              Wait(RandomRange(4750,7535))
            else
            begin
              Repeat

                R_FindRandoms;
                Logout;
                Wait(RandomRange(435,675));
                if Not LoggedIn then
                  break;

              Until(False)

              BreakScreen;
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              OnScreen;
              if ChangeWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(Member, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              SetAngle(True);
              R_FindRandoms;
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
            end;
          end;
      end;
    end;

    Function NoAmmo: Boolean;
    begin
      Result := FindBlackChatMessage('no ammo');
    end;

    Begin

      ScriptSetup(86,True,True,True);

      Repeat

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;
        if (TimeFromMark(ScreenTime)>=5000) then
          OnScreen;
        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        if NoAmmo then
        begin
          Writeln('Ran out of ammo!');
          Report;
          Logout;
          TerminateScript;
        end;

        if not LoggedIn then LoginPlayer;

        if AreaCheck('Castle') then
        begin
          CheckScreen;
          ToLocation('Grave');
        end
        else if AreaCheck('Grave') then
          ToLocation('Room1')
        else if AreaCheck('Room1') then
          ToLocation('Room2')
        else if AreaCheck('Room2') then
          ToLocation('Room3')
        else if AreaCheck('Room3') then
          ToLocation('Region')
        else if AreaCheck('Region') then
          Fight
        else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
          And Not AreaCheck('Room1') And Not AreaCheck('Room2')
          And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
        begin
          R_FindRandoms;
          CheckScreen;
        end;

      Until(False);

    End.

    Also, why is your entire script indented by two spaces? :P
    Last edited by Nava2; 08-21-2011 at 05:43 PM.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  5. #30
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    Double posting.. but I redid the walking. got it going:

    Simba Code:
    {/////////////////////////////////////////
                      //       ~Catacomber by Flight~         //
                      //                                      //
                      //            Version: 1.0              //
                      /////////////////////////////////////////}


    program Catacomber;

    {$define SMART}
    {$i SRL/SRL.scar}
    {$i SRL/SRL/skill/magic.scar}
    {$i SRL/SRL/Misc/stats.simba}
    {$i Reflection/Reflection.simba}
    {$i SRL/SRL/misc/paintsmart.scar}


    //////////////////////////////-Begin setup-/////////////////////////////////////

    Const

    //SRL Stats
    SRLStats_Username = '';
    SRLStats_Password = '';

    //Script settings
    FightRegion  = 10;
    ChangeWorlds = True;
    Member       = True;

    //Break settings
    BreakIn      = 135;     //How long before we take a break? (minutes)
    BreakFor     = 13;      //How long will we break for? (minutes)
    Bir          = 12;      //Random minutes to add/subtract from how long until we break
    Bfr          = 7;       //Random minutes to add/subjtract from break duraction

    //////////////////////////////-End of setup-////////////////////////////////////

    Var
    BreakImg: TMufasaBitmap;
    targetName,Version: String;
    lastFightTime: Integer;
    lastInteractedTile,Stairs1_Down,Stairs2_Down,
    Stairs_Enter,RTile: TTile;
    Deaths,CommitTime,ScreenTime,NewImg: Integer;

    //Break variables
    BreakRounds,TotalBreaks: Integer;

    //Exp variables
    AttXP_Start,AttXP_Old,AttXP_New,StrXP_Start,
    StrXP_Old,StrXP_New,DefXP_Start,DefXP_Old,
    DefXP_New,HitXP_Start,HitXP_Old,HitXP_New,
    RngXP_Start,RngXP_Old,RngXP_New: Integer;

    Procedure DeclarePlayers;
    begin
      HowManyPlayers := 1;
      NumberOfPlayers(HowManyPlayers);
      CurrentPlayer := 0;
      with Players[0] do
      begin
        Name        := '';
        Pass        := '';
        BoxRewards  := ['XP','xp','lamp'];
        LampSkill   := 'hitpoints';
        Active      := True;
      end;
    end;

    Procedure CheckStats;
    begin
      if ((SRLStats_Username = '') And (SRLStats_Password = '')) then
      begin
        case MessageBox('No Stats account entered, would you like to set one up?','SRL Stats',mbYesNoCancel) of
          mrYes:
            begin
              OpenWebPage('http://stats.villavu.com/register');
              TerminateScript;
            end;
          mrNo:
            begin
              SetupSRLStats(165,'Anonymous','anon1337');
              Exit;
            end;
          mrCancel: TerminateScript;
        end;
      end else
        SetupSRLStats(165,SRLStats_Username,SRLStats_Password);
    end;

    type
      TArea = record
        Region: TBox;
        DAnim: TIntegerArray;
        targetName: String;
        RTile: TTile;
        fightArea: Boolean;
      end;

      TAreaArray = array of TArea;

    var
      currentArea: TArea;
      Areas: TAreaArray;

    Procedure DefineAreas;
    Var
      Zone: Integer;
    begin
      Zone := FightRegion;

      setLength(Areas, 15);

      // lumbridge:
      with Areas[0] do
      begin
        Region := IntToBox(3217,3210,3226,3228);
        fightArea := False;
      end;

      // grave:
      with Areas[1] do
      begin
        Region := intToBox(3238, 3191, 3251, 3203);
        fightArea := False;
      end;

      // room 1:
      with Areas[2] do
      begin
        Region := intToBox(3875,5526,3879,5529);
        fightArea := False;
      end;

      with Areas[3] do
      begin
        Region := intToBox(3863,5522,3869,5526);
        fightArea := False;
      end;

      with Areas[4] do
      begin
        Region := intToBox(3970,5560,3974,5565);
        fightArea := False;
      end;

      // region 1:
      with Areas[5] do
      begin
        DAnim := [8878, 8878];
        targetName := 'Warped cockroach';
        RTile := Point(3972,5553);
        Region := intToBox(3969,5550,3977,5557);
        fightArea := True;
      end;

      with Areas[6] do
      begin
        DAnim := [12896,12896]
        targetName := 'Corpse Spider';

        RTile := Point(3986,5553);
        Region := intToBox(3978, 5550, 3994, 5556);
        fightArea := True;
      end;

      with Areas[7] do
      begin
        DAnim := [7244, 7244];
        targetName := 'Warped fly';

        RTile := Point(3995,5543);
        Region.X1 := 3987;
        Region.Y1 := 5539;
        Region.X2 := 4003;
        Region.Y2 := 5547;
        fightArea := True;
      end;

      with Areas[8] do
      begin
        DAnim := [12893, 12893];
        targetName := 'Crawling corpse torso';

        RTile := Point(4010,5544);
        Region.X1 := 4004;
        Region.Y1 := 5542;
        Region.X2 := 4015;
        Region.Y2 := 5546;
        fightArea := True;
      end;

      with Areas[9] do
      begin
        DAnim := [14860, 14860];
        targetName := 'Warped rat';

        RTile := Point(4023,5544);
        Region.X1 := 4016;
        Region.Y1 := 5538;
        Region.X2 := 4029;
        Region.Y2 := 5548;
        fightArea := True;
      end;

      with Areas[10] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Skeleton';

        RTile := Point(4024,5530);
        Region.X1 := 4019;
        Region.Y1 := 5523;
        Region.X2 := 4028;
        Region.Y2 := 5537;
        fightArea := True;
      end;

      with Areas[11] do
      begin
        DAnim := [4917, 4917];
        targetName := 'Warped bat';

        RTile := Point(4020,5515);
        Region.X1 := 4011;
        Region.Y1 := 5504;
        Region.X2 := 4027;
        Region.Y2 := 5520;
        fightArea := True;
      end;

      with Areas[12] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Corpse archer';

        RTile := Point(4017,5496);
        Region.X1 := 4009;
        Region.Y1 := 5489;
        Region.X2 := 4021;
        Region.Y2 := 5502;
        fightArea := True;
      end;

      with Areas[13] do
      begin
        DAnim := [6182, 6282];
        targetName := 'Skoblin';

        RTile := Point(4000,5495);
        Region.X1 := 3992;
        Region.Y1 := 5492;
        Region.X2 := 4009;
        Region.Y2 := 5499;
        fightArea := True;
      end;

      with Areas[14] do
      begin
        DAnim := [12869, 12870];
        targetName := 'Corpse mage';

        RTile := Point(3995,5481);
        Region.X1 := 3988;
        Region.Y1 := 5475;
        Region.X2 := 4002;
        Region.Y2 := 5489;
        fightArea := True;
      end;

      currentArea := Areas[zone+4];
    end;

    {Skeleton by Brak, re-written with bitmaps, yay!}
    Procedure TurnAidOff;
    Var
      x,y,BMP: Integer;
    begin
      BMP := BitmapFromString(9, 8, 'meJyTkqmSkWuUkqkSl8yWArORuRAR' +
          'eaUeCBuCgFy4GknpYggbohLIBcoyMjDgQd0z5gNRdueS8Kwy7+Ri+' +
          '9iK0JScv//+wRHDXk4g4pohCEQZx1GkgFxkWWQpNI0AjLpP/A==');
      setbitmapname(BMP,'AidButton');  //Don't laugh

      if TabExists(tab_Options) then
        if GameTab(tab_Options) then
        begin
          if FindBitmapIn(BMP,x,y,570,410,605,450) then
          begin
            MMouse(x,y,5,5);
            Wait(Random(100));
            if WaitUpTextMulti(['oggle', 'ccep', 'cept', ' Aid'], 500) then
            begin
              GetMousePos(x,y);
              Mouse(x,y,0,0,True);
              Wait(RandomRange(150,250));
              Exit;
            end;
          end;
        end;
      Gametab(tab_Inv);
      FreeBitmap(BMP);
    end;

    Procedure LoadVars;
    Var
      tempPic: TMufasaBitmap;
    begin
      Retaliate(True);
      TurnAidOff;
      Version := '1.0';
      MarkTime(CommitTime);
      MarkTime(ScreenTime);
      MouseSpeed := RandomRange(17,20);

      AttXp_Start := R_GetSkillExp(SKILL_ATTACK);
      StrXp_Start := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_Start := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_Start := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_Start := R_GetSkillExp(SKILL_RANGE);
      AttXp_Old := R_GetSkillExp(SKILL_ATTACK);
      StrXp_Old := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_Old := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_Old := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_Old := R_GetSkillExp(SKILL_RANGE);

      Stairs_Enter  := Point(3248,3198);
      Stairs1_Down  := Point(3874,5527);
      Stairs2_Down  := Point(3867,5524);

      DefineAreas;

      NewImg := BitmapFromString(311, 49, 'meJztnXdcFNf6/1M01auJ0Rg7X' +
          'XrvsCx9OyzLAkuX3kHpCgIiinQURFHpRUBAuiCC9CJFuvTeVEA05X' +
          '7//D2w9xqjy7KACcn9+XmdV15rmDl7Zva85/M8Z86c+eSTj9oG7dr' +
          '17alTDvfvZ3uesf3000+3uzkf9c8QBwd7ZcX9i4EeGkR5dXU5KMSV' +
          'gvxPIUKRf6doairp6GC0tfHyCrIHDvy43UfwT1J5ecHS4nRPb62sL' +
          'D83N+d2N+ej/hnS0yMPDLR1dNQY6CkryPPb25IePcodG++bmOh/+r' +
          'S1/Ul1fX1xZUV2aXkGtdTXFvT1PZ6eGiwqStLVUZSW5iZqqBw9dmS' +
          '7j+OfoYcVd/r76nt76rg4j+EJqtvdnI/6Z8jKxiA/P665+cHkZP/Y' +
          'WC/QmnX3embmtTuZ0amp4aslIjk1HEp8YvCtWxd9fSy1yXIKcrxqB' +
          'KmS4uSe3mYleX5hETakvPR2H8o/QMlJwTdj/V+8mABItbVx292cj/' +
          'pnyMnJOCrKW0yUbWysb2pyYHS4q62tMuZ6iImJnqycFAcH2/4f933' +
          'zzTdffLHzs88+27Vr19GjhyUkhHBYGTkEj6QEh6qKMHguHit+/Ng+' +
          'RSXZ7T6av7vi4i9FRHguLU4BpDpamO1uDkPi5eW5ciX8rJeLuaWhj' +
          'Izkdjfn/0e5uZkbGagaGaqCh06M9SUm3WJiOs7IjuzsLFJS3MKCzC' +
          'LCrKOj3RLi7CzMPwoI8v7ZDf5HCyANCXaZmxsCSDU1tznc5eHhwWL' +
          'R624WFOy3tDj+86u5kpKE836Of0HDPuodnT1riUGJDA6037x98cb1' +
          'KLBLxvfds2e3lBSPmAgbQpa7peXhipkqCn/++ed/Xmv/6YoHSENcx' +
          '8e6+HhZNIjK29WM/fv3JyXdXng+djnQZceOHfQ3NjAgEghyN66ff/' +
          'Vqbmz0yV/Two96W97nrDQ1ZAb6W0lEGWZmpo3ufujwQQiVkXK8KWm' +
          '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' +
          'S9eTDztqwfLA0iNjQ0Zb/87kpIShcgWCklDkaguTy3+/va/vH72en' +
          'kWjHVmqmdspG1goGXv3r3v7FtcdLumJhu8BiBVVBRf6yvCwi798vP' +
          '8rz8/e/1q9rdfF3775dkvr+eWlyYa6u/fuBHq5+8ZGuqbEB/i4W6q' +
          'p4dNTAwGVJ88eRAc5JqfF3vp4il1dXlrC7Krs3FsrP/iwtjPr2bHR' +
          'lsflKempF4LCva9EHAmLNQnIuKM8ykDC3MSkSgfGXmmpbUEIIViZq' +
          'q1rp+CgS4tTP38an55aaq2JqemOnvgaf3w0GPoxlFXL/r5e3h6Ovr' +
          '5OoeGenqfNTczVbOyIMK1q6ExH4uW1NLCb/rMb0VUQqEEBzsPD3Uy' +
          'Hd+nTpDUpSgSCVIZWddWbs1MDQwPPunsrGtoKHlUmX2/LD0v/3ZmZ' +
          'lRickjARQdTExwBJ5GYHBoW5sbG+hMjA/ip6ZHj4z1DQ0/Gx3tHRr' +
          'paWsrHxrrnANXZEQiYgdzS0lwDQx0mpuM7dtJ+LsPa2mJufmxmdnh' +
          'k6AmExCPDT3p6mh0crY/RWheCmfk4GiWnqCCEkOWLivLq6W2QluLZ' +
          'EKdvi4eX085OG84VdKGO9oru7hoIdE9wHKESSoV0tRzT0lTZtXZ0D' +
          'U567ZrP8GALF9dxeTkhOt8Ijra4MNndU/3i+RiEZNevR22u5VRBH1' +
          'ZTV1RXR+rpovV0MZokRSiRV87+8vr5q+XVeA9QXZ61s6MxESUvL7a' +
          '4KG5srA0glZSgMbTo7+/j6nr69fI8QNrT/QicFAgFH+x80gwJ6dsT' +
          'wuEzPz+Pvr6apqaympp8Ts71//v30vh4GwTDurqY8752XV2Vyy+ng' +
          'HGoKjjk0uEjh97+ol27dikpI8hkFYouGi4yWmTltrZSAQF2KCQSvS' +
          'fo7e1tVvBcnl14PjLY3/Di2fDYaI+rqyMTE42Qm5WVWZ2ookaQRaM' +
          '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' +
          'hVCQUFSCcliqvyAAzJWmqMH4RgCy+/EHhi4XJZ/OjYKa9vfWrkK7l' +
          'pMFxty+mp4drqMkBpyKiaz5+Ky4uhEJJQrlfmgTOC5yqoD7Yi18zM' +
          '69ATlpYeEtVVRIgNaDrL/EJwSkpoeXlqWiMDE2OAi6e9j9vX1l5B4' +
          'tDbBxSl6KirUGafY0KqbgojflyiorSOKwMDittZIgNDXHh5WXWZmx' +
          'JMeg5AGZGRkJpaXLeveu93dVdnZVGRnobbeEHkclJvLkZnoCXzM27' +
          'vTp2dOCng4xOitu5c4fnGffJycGJ8V7w0IrK7JmZ4ba2BppDZ4GXH' +
          'KGQNZHNzaUQ6zIe7n6yesbk5UXlEHwS4pzNTSVqBBngFINRom8uEM' +
          'UVFuXOTA8+fdrU2lI2Otr54tnE6Gj3+3PXhYR45eQE5GT5UtPCzUz' +
          'wHBxHKBQ8I3Oqoaq6usrnz8YeN5fAmUTKCTrY6Tx+fH/1Rd40IAUb' +
          'jQj3eFR1F4+T0dfHfPcdvSW18Th5DEZKVUX81at5cTFuSFQ/1FTSl' +
          'NTQhITLV696B146vWqmHHAy19o4MtI7JsYvNSVURwdFc2zH0krXzl' +
          '731ClDT08LQ6ONQer/BlKzTUKanb3qpIY4MVqQfvbZp2p4eQJeFnK' +
          'Hof5GSE5Xc3z0ej2H6f79/IXnY2OjT3p7qqen+14uTU9NPmVnp3H7' +
          'Q1lZoa+35cYNP309VWNDPI7WUkvKSgo93c1RV89qkxX09TDvL5vzy' +
          'Wo42tFRHxbqSlKXpWgpo9G/j7pTdNEG+ioA6dTUIEAKRUUF8X4N7x' +
          '37Z1gcpqyscHZmuK+vycBAtbAwEQhtb2tgZmaiuYu3t/kZTxMcVqK' +
          '7u56L8wiUdb/lbe3atUseKSwrwwNBb0truZMjhYvzqLY2hoWVxiPG' +
          '8BOYmBiPjvbNza2sof382fjTp43z8/Bh4qyXB836lZWl5OUFZWV4q' +
          '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' +
          'LKQil');

          //Procedures taken from Iamadam's StrongHolder
          tempPic := GetMufasaBitmap(NewImg);
          BreakImg := TMufasaBitmap.create;
          BreakImg.SetSize(tempPic.Width, tempPic.Height);
          tempPic.FastDrawTransparent(0, 0, BreakImg);

    end;

    //Procedures taken from Iamadam's StrongHolder
    Procedure BreakScreen;
    Var
      Canvas: TCanvas;
    begin
      Wait(500);
      try
        SmartSetDebug(True);
        Canvas := TCanvas.Create;
        Canvas.Handle := SmartGetDebugDC;
        ClearRSCanvas(Canvas);
        BreakImg.DrawToCanvas(235,200,Canvas);
      except
        writeln('error...');
      end;
    end;

    Procedure Report;
    Var
      ExpA,ExpS,ExpD,ExpC,ExpR: Integer;
    begin
      ClearDebug;
      ExpA  := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
      ExpS  := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
      ExpD  := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
      ExpC  := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
      ExpR  := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

      WriteLn('=-=-=-=-=-= Catacomber '+Version+' by Flight =-=-=-=-=-=');
      WriteLn('Time Running: '+TimeRunning);
      WriteLn('Attack XP: '+IntToStr(ExpA));
      WriteLn('Strength XP: '+IntToStr(ExpS));
      WriteLn('Defence XP: '+IntToStr(ExpD));
      WriteLn('Constitution XP: '+IntToStr(ExpC));
      WriteLn('Ranged XP: '+IntToStr(ExpR));
      WriteLn('Deaths: '+IntToStr(Deaths));
      //WriteLn('Breaks: '+IntToStr(TotalBreaks));
      WriteLn('=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=');
    end;

    Procedure PrintOnSmart(TP: TStringArray; Placement: TPoint; Colour: integer);
    var
      mx, my, Pic, I, B, H, TPH, Numb: Integer;
      TTP: TPointArray;
      Canvas: TCanvas;
    begin
      SmartSetDebug(True);
      GetClientDimensions(mx, my);
      Pic := BitmapFromString(mx, my, '');
      TPH := High(TP);
      for I := 0 to TPH do
      begin
        TTP := LoadTextTPA(TP[i], SmallChars, H);
        for B := 0 to High(TTP) do
        begin
          Numb := ((I + 1) * 13);
          FastSetPixel(Pic, TTP[b].x + 1, TTP[b].y + Numb + 1,131072);
          FastSetPixel(Pic, TTP[b].x, TTP[b].y + Numb, Colour);
        end;
      end;
      Canvas := TCANVAS.Create;
      Canvas.Handle := SmartGetDebugDC;
      DrawBitmap(Pic, Canvas, Placement.x, Placement.y);
      FreeBitmap(Pic);
    end;

    Procedure OnScreen;
    Var
      ExpA,ExpS,ExpD,
      ExpH,ExpR,XPH_A,XPH_S,
      XPH_D,XPH_H,XPH_R: Integer;
    begin
      ExpA := R_GetSkillExp(SKILL_ATTACK) - AttXp_Start;
      ExpS := R_GetSkillExp(SKILL_STRENGTH) - StrXp_Start;
      ExpD := R_GetSkillExp(SKILL_DEFENCE) - DefXp_Start;
      ExpH := R_GetSkillExp(SKILL_HITPOINTS) - HitXp_Start;
      ExpR := R_GetSkillExp(SKILL_RANGE) - RngXp_Start;

      XPH_A := Round((ExpA * 3600) / (GetTimeRunning / 1000));
      XPH_S := Round((ExpS * 3600) / (GetTimeRunning / 1000));
      XPH_D := Round((ExpD * 3600) / (GetTimeRunning / 1000));
      XPH_H := Round((ExpH * 3600) / (GetTimeRunning / 1000));
      XPH_R := Round((ExpR * 3600) / (GetTimeRunning / 1000));

      PrintOnSmart(['~Catacomber '+Version+' (by Flight)~'],Point(15,30),3716227);
      PrintOnSmart([''+TimeRunning,'Attack XP: '+IntToStr(ExpA)+' ('+IntToStr(XPH_A)+' XP/Hour)',
      'Strength XP: '+IntToStr(ExpS)+' ('+IntToStr(XPH_S)+' XP/Hour)',
      'Defence XP: '+IntToStr(ExpD)+' ('+IntToStr(XPH_D)+' XP/Hour)',
      'Hitpoints XP: '+IntToStr(ExpH)+' ('+IntToStr(XPH_H)+' XP/Hour)',
      'Ranged XP: '+IntToStr(ExpR)+' ('+IntToStr(XPH_R)+' XP/Hour)',
      'Deaths: '+IntToStr(Deaths)],Point(20,60),15856381);

      MarkTime(ScreenTime);
    end;

    Procedure Commit;
    begin

      AttXp_New := R_GetSkillExp(SKILL_ATTACK);
      StrXp_New := R_GetSkillExp(SKILL_STRENGTH);
      DefXp_New := R_GetSkillExp(SKILL_DEFENCE);
      HitXp_New := R_GetSkillExp(SKILL_HITPOINTS);
      RngXp_New := R_GetSkillExp(SKILL_RANGE);

      stats_IncVariable('Attack EXP (Gained)',(AttXp_New-AttXp_Old));
      stats_IncVariable('Strength EXP (Gained)',(StrXp_New-StrXp_Old));
      stats_IncVariable('Defence EXP (Gained)',(DefXp_New-DefXp_Old));
      stats_IncVariable('Hitpoints EXP (Gained)',(HitXp_New-HitXp_Old));
      stats_IncVariable('Ranged EXP (Gained)',(RngXp_New-RngXp_Old));
      Stats_Commit;

      AttXp_Old := AttXp_New;
      StrXp_Old := StrXp_New;
      DefXp_Old := DefXp_New;
      HitXp_Old := HitXp_New;
      RngXp_Old := RngXp_New;

      Report;
      MarkTime(CommitTime);

    end;

    Procedure ScriptSetup(World:Integer;Signed,Clear,SetCam:Boolean);
    Begin

      AddOnTerminate('Report');

      Smart_Server := World;
      Smart_Members := Member;
      Smart_Signed := Signed;
      Smart_SuperDetail := False;

      SetupSRL;
      DeclarePlayers;
      CheckStats;
      R_UpdateHooks;

      if Clear then
        ClearDebug;
      LogInPlayer;
      if SetCam then
        SetAngle(true);

      LoadVars;
      OnScreen;

    End;

    Procedure humanWait(time : Integer);
    begin
      wait(time + random(time) + random(random(time)));
    end;

    Function DeathScreen: Boolean;
    begin
      Result := R_ValidInterface(18);
    end;

    Function R_ClickItem_F(Slot: Integer; Action1, Action2: String): Boolean;
    var
      InterfaceID, X, Y: Integer;
      Item: TInterfaceComponent;
    begin
      Result := False;
      InterfaceID := R_GetInventoryInterfaceIndex;
      if InterfaceID = NULL_INT then
      begin
        R_Debug('The Inventory interface doesn''t exist!', '');
        Exit;
      end;
      if InterfaceID = INTERFACE_INVENTORY then
      begin
        R_GameTab(RTAB_INVENTORY);
      end;

      Item := R_GetInterfaceComponent(InterfaceID, 0, Slot-1);
      if(Item.ID <= 0)then
        Exit;

      R_ClickInterface(Item, 3);
      GetMousePos(X, Y);
      wait(125+Random(55));

      if(IsUpText(Action1) Or IsUpText(Action2))then
      begin
        Mouse(X, Y, 0, 0, True);
        Result := True;
      end;
    end;

    Function R_WindWalk_F(T: TTile): Boolean;
    Var
      I, Tries: Integer;
      M, P: TPoint;
      CTRLPoints: TPointArray;
    begin
      P := T;
      repeat
        M := R_GetMyPos;
        CtrlPoints := R_WindPath(M.x, M.y, P.X, P.Y, 5.0, 2.5, 0.0, 0.0, 4.5, 2.5);
        Inc(Tries);
        if(Tries > 20)then
        begin
          R_Debug('Failed more than 20 times', 'R_WindWalk');
          R_FindRandoms;
          if Cast('lumbridge home teleport', False) then
            Wait(RandomRange(9500,1175));
          Exit;
        end;
        for I:= High(CtrlPoints) downto 0 do
          if R_WalkToTile(CtrlPoints[i],0, 10) then
          begin
            Result := I = High(CtrlPoints);
            Break;
          end;
      until(Result);
    end;

    Function inArea(Area : TBox) : boolean;
    begin
      result := PointInBox(R_GetMyPos, Area);
    end;

    function atTile(location: TTile; name, action : TStringArray; height, randomness : Integer) : boolean;
    var
      tilePoint : TPoint;
    begin
      result := False;
      tilePoint := R_tileToMs(location, height);
      MMouse(tilePoint.x, tilePoint.y, randomness, randomness);
      wait(100);
      if(IsUpTextMultiCustom(name) Or IsUpTextMultiCustom(action)) then
      begin
        ClickMouse2(True);
        if DidRedClick then
          result := True
        else
          result := False;
      end else if(isUpText('options')) then
      begin
        clickMouse2(False);
        if ChooseOptionMulti(action) then
          result := True;
      end;
    end;

    Procedure Fight;
    Var
      inFightWith : TNPC;
      npcs : TNPCArray;
      index : Integer;
    begin
      if(R_AreWeInteracting(InFightWith, False) and (getSystemTime - lastFightTime < 1000 * 60)) then
      begin
        lastInteractedTile := inFightWith.tile;
        humanWait(1000);
        exit;
      end;

      npcs := R_SortNPCs(R_GetNPCs(currentArea.targetName, false));
      if(GetArrayLength(npcs) = 0) then
      begin
        humanwait(500);
        Exit;
      end;

      for index := 0 to high(npcs) do
      begin
        if((npcs[index].Interacting = -1)
        and not((npcs[index].Tile = lastInteractedTile))
        and not (inIntArray(currentArea.DAnim, npcs[index].Animation))) then
        begin
          lastInteractedTile := npcs[index].tile;
          if(not R_tileOnMS(npcs[index].Tile, 0)) then
            exit;
          if(atTile(npcs[index].Tile, [currentArea.targetName], ['Attack'], 300, 5)) then
          begin

            case (Random(4)) of
              1: MakeCompass('Random');
            end;

            lastFightTime := GetSystemTime;
            humanWait(2000);
          end;
          break;
        end;
      end;
    end;

    Function AreaCheck(Where: String): Boolean;
    begin
      Result := False;

      Case LowerCase(Where) of

        'castle' : Result := inArea(Areas[0].region);

        'grave'  : Result := inArea(Areas[1].region);

        'room1'  : Result := inArea(Areas[2].region);

        'room2'  : Result := inArea(Areas[3].region);

        'room3'  : Result := inArea(Areas[4].region);

        'region' : Result := inArea(currentArea.region);

      end;
    end;

    // nava2
    function FindTileOnPath(var Index: integer; Path: TTileArray; P: TTile; MaxDist: Integer): Boolean;
    var                                                                             {Find the closest tile in a path within MaxDist}
      I, H, DistC, DistS, T: integer;
    begin
      T := GetTimeRunning;
      H := High(Path);
      Index := -1;
      if (H < 0) then Exit;

      DistS := Distance(P.x, P.y, Path[0].x, Path[0].y);                            //Distance from Current Tile

      for I := 0 to H do                                                            //Looks for the Closest Tile
      begin
        DistC := Distance(P.x, P.y, Path[I].x, Path[I].y);
        if DistC <= DistS then
        begin
          DistS := DistC;
          Index := I;
        end;
      end;

      Result := DistS <= MaxDist;
      if not Result then Index := -1;
      WriteLn('FindTileOnPath: Index = ' + IntToStr(Index) + ' Time: ' + IntToStr(GetTimeRunning - T) + ' ms');
    end;

    // nava2
    function WalkToRoom(zone: Integer): Boolean;
    var
      i, t: Integer;
      p: TTileArray;
    begin
      setLength(p, zone);
      for i := 1 to zone do
        p[i-1] := Areas[4+i].RTile;

      writeln('path: ' + toStr(p));
      writeln('Area tile: ' + toStr(currentArea.RTile));

      FindTileOnPath(t, p, R_getMyPos, 7);
      for i := t+1 to zone-1 do
        if (not R_WindWalk_F(p[i])) then
          break;
      result := AreaCheck('region');
     end;

    Procedure ToLocation(Where: String);
    Var
      T1,T2,T3,T4: Integer;
    begin

      RunEnergy(50);

      Case LowerCase(Where) of

        'grave':
          begin
            R_WindWalk_F(Point(3246,3198));
            Wait(RandomRange(1215,1325));
            While R_Moving do
              Wait(1);
          end;

        'room1':
          begin
            if(Not R_TileOnMS(Stairs_Enter,100)) then
            begin
              R_WalkToTile(Point(3246,3198),1,1);
              SetAngle(True);
              While R_Moving do
                Wait(1);
            end;
            if atTile(Stairs_Enter, ['Catacomb','entrance'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T1);
              repeat
                if (AreaCheck('Room1') Or (TimeFromMark(T1) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'room2':
          begin
            if atTile(Stairs1_Down, ['Stairs'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T2);
              repeat
                if (AreaCheck('Room2') Or (TimeFromMark(T2) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'room3':
          begin
            if atTile(Stairs2_Down, ['Stairs'], ['limb','-down'], 100, 15) then
            begin
              Wait(RandomRange(355,525));
              While R_Moving do
                Wait(1);

              MarkTime(T3);
              repeat
                if (AreaCheck('Room3') Or (TimeFromMark(T3) > 5000)) then
                  Exit;
              until (False)

            end;
          end;

        'region':
          begin
            WalkToRoom(FightRegion);
            Wait(RandomRange(355,525));
            while R_Moving do
              Wait(16);

            MarkTime(T4);
            repeat
              if (AreaCheck('Region') Or (TimeFromMark(T4) > 5000)) then
                Exit;
            until (False);

          end;

      end;
    end;

    Procedure CheckScreen;
    Var
      T,I: Integer;
      S: TInterfaceChild;
      Items,Items2: TInvItemArray;
    begin
      if DeathScreen then
      begin
        Inc(Deaths);
        MarkTime(T);
        Repeat

          if(TimeFromMark(T) > 5000)then
            Break;

          S := R_GetInterfaceChild(18, 36);
          R_ClickInterface(S, 1);


          if Not DeathScreen then
            Break;

        Until(False)

      end;

      Wait(RandomRange(4375,5350));
      Gametab(tab_Inv);
      Wait(RandomRange(575,780));

      if R_ItemExistsEx([
        'scimitar','blade','sling','Sling','shortbow',
        'helm','platebody','kiteshield','defender','hide',
        'Amulet of','bracelet'],Items) then
      begin
        if(GetArrayLength(Items) = 0) then
        begin
          humanwait(500);
          Exit;
        end;

        For I := 0 to high(Items) do
        begin
          R_ClickItem_F(Items[I].Slot,'Wear','Wield');
          Wait(RandomRange(1150,1350));
        end;
      end;

      Wait(RandomRange(575,780));

      if R_ItemExistsEx([
        'scimitar','blade','sling','Sling','shortbow',
        'helm','platebody','kiteshield','defender','hide',
        'Amulet of','bracelet'],Items2) then
      begin
        if(GetArrayLength(Items2) = 0) then
        begin
          humanwait(500);
          Exit;
        end;

        For I := 0 to high(Items2) do
        begin
          R_ClickItem_F(Items2[I].Slot,'Wear','Wield');
          Wait(RandomRange(1150,1350));
        end;
      end;

      SetAngle(True);
      ToLocation('Grave');

    end;

    Function BreakHandler(BreakIn, BreakFor, randBreakIn, randBreakFor: Integer): Boolean;
    Var
      w,x,y,z,h,m,s,
      RealBTime,
      CurrentBTime: integer;
      NPC: TNPC;
    begin
      if not LoggedIn then Exit;

      w := (BreakIn * 60000);
      x := (BreakFor * 60000);
      y := RandomRange(-randBreakIn * 60000, randBreakIn * 60000);
      z := RandomRange(-randBreakFor * 60000, randBreakFor * 60000);

      if (HowManyPlayers = 1) then
      begin
        if (GetTimeRunning < ((w) + (y) + BreakRounds)) then Exit
        else
          if (GetTimeRunning > ((w) + (y) + BreakRounds)) then
          begin
            if R_AreWeInteracting(NPC, False) then
              Wait(RandomRange(4750,7535))
            else
            begin
              Repeat

                R_FindRandoms;
                Logout;
                Wait(RandomRange(435,675));
                if Not LoggedIn then
                  break;

              Until(False)

              BreakScreen;
              RealBTime := ((x+z)/60000);
              Writeln('Taking a break for about ' + IntToStr(RealBTime) + ' minutes.');
              Logout;
              MarkTime(CurrentBTime);
              repeat
                Wait(21000);
                ConvertTime((x+z)-TimeFromMark(CurrentBTime), h, m, s);
                ClearDebug;
                Writeln('Breaktime left: '+IntToStr(h)+':'+IntToStr(m)+':'+IntToStr(s));
              until(TimeFromMark(CurrentBTime)>(x+z));
              Writeln('Logging in.');
              OnScreen;
              if ChangeWorlds then
                if LoginPlayerToLob then
                  ChangeWorld(RandomWorld(Member, False))
              else
                LoginPlayer;
              Wait(4000);
              Result := LoggedIn;
              SetAngle(True);
              R_FindRandoms;
              IncEx(BreakRounds, (w) + (x));
              Inc(TotalBreaks);
              Writeln('The next break will occur in about ' + IntToStr(BreakIn) + ' minutes.');
            end;
          end;
      end;
    end;

    Function NoAmmo: Boolean;
    begin
      Result := FindBlackChatMessage('no ammo');
    end;

    Begin

      ScriptSetup(86,True,True,True);

      Repeat

        if (TimeFromMark(CommitTime)>=30000) then
          Commit;
        if (TimeFromMark(ScreenTime)>=5000) then
          OnScreen;
        BreakHandler(BreakIn,BreakFor,Bir,Bfr);

        if NoAmmo then
        begin
          Writeln('Ran out of ammo!');
          Report;
          Logout;
          TerminateScript;
        end;

        if not LoggedIn then LoginPlayer;

        if AreaCheck('Castle') then
        begin
          CheckScreen;
          ToLocation('Grave');
        end
        else if AreaCheck('Grave') then
          ToLocation('Room1')
        else if AreaCheck('Room1') then
          ToLocation('Room2')
        else if AreaCheck('Room2') then
          ToLocation('Room3')
        else if AreaCheck('Room3') then
          ToLocation('Region')
        else if AreaCheck('Region') then
          Fight
        else if (Not AreaCheck('Castle') And Not AreaCheck('Grave')
          And Not AreaCheck('Room1') And Not AreaCheck('Room2')
          And Not AreaCheck('Room3') And Not AreaCheck('Region')) then
        begin
          R_FindRandoms;
          CheckScreen;
        end;

      Until(False);

    End.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  6. #31
    Join Date
    Nov 2010
    Location
    Australia
    Posts
    1,472
    Mentioned
    0 Post(s)
    Quoted
    8 Post(s)

    Default

    [QUOTE=Flight;828180]That's really awesome of you to offer help. But I brainstormed a basic idea/skeleton mentally already and I'm gonna give it a shot and see how it turns out. But if I do happen to get stuck somewhere, you'll be the first to know.

    @Bolshak25:
    Thanks for the test dummies, I will warn you now though, the quest gives 100 xp to all combat skills (excluding constitution) so you might gain a couple levels, I hope this is okay. I should only need 1 account for coding, 1/2 accounts for testing.


    Edit:
    Well, I misunderstood you, Mormonman, as I thought you meant the tiles were dynamic to the quest <> finished quest, when actually they are, infact, dynamic to the player. I can do this but agh... it's gonna be tough and take a long time to do. I luffs, if you're still interested I can give you what I have and you could take over. I've done all the Quest-Starting and killing Kayle. But that last part will have to have slight edit, because I have it set to webwalk to a static tile (Kayle's tile) and do the fighting. Let me know if you're interested, because like I said, if people really want the quest done I can do it, but I'm reluctant to do so.[/QUOTE

    If you're still having problems let me know, i like making questing scripts, they're quite challenging and fun, and i have some free time this week and next week.

  7. #32
    Join Date
    Sep 2008
    Location
    Not here.
    Posts
    5,422
    Mentioned
    13 Post(s)
    Quoted
    242 Post(s)

    Default

    Just search for Kayle and everyother object/npc.

  8. #33
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    Once you have a reference point (AKA Kayle's tile), everything else would be relative to it.

    Its how PC was done all those times.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  9. #34
    Join Date
    Sep 2008
    Location
    Not here.
    Posts
    5,422
    Mentioned
    13 Post(s)
    Quoted
    242 Post(s)

    Default

    Quote Originally Posted by Nava2 View Post
    Once you have a reference point (AKA Kayle's tile), everything else would be relative to it.

    Its how PC was done all those times.
    The thing is, you could do the whole quest without ever using static points.

  10. #35
    Join Date
    Jan 2008
    Location
    Ontario, Canada
    Posts
    7,805
    Mentioned
    5 Post(s)
    Quoted
    3 Post(s)

    Default

    Quote Originally Posted by mormonman View Post
    The thing is, you could do the whole quest without ever using static points.
    Yup, I'm just giving suggestions for speed.

    Also:

    Progress Report:
    =-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
    Time Running: 3 Hours, 29 Minutes and 8 Seconds
    Attack XP: 0
    Strength XP: 61948
    Defence XP: 0
    Constitution XP: 21277
    Ranged XP: 0
    Deaths: 0
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

    This was my version btw.
    Writing an SRL Member Application | [Updated] Pascal Scripting Statements
    My GitHub

    Progress Report:
    13:46 <@BenLand100> <SourceCode> @BenLand100: what you have just said shows you 
                        have serious physchological problems
    13:46 <@BenLand100> HE GETS IT!
    13:46 <@BenLand100> HE FINALLY GETS IT!!!!1

  11. #36
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by mormonman View Post
    The thing is, you could do the whole quest without ever using static points.
    Yes, but I could use local tiles instead, those will still remain static to every player. I always prefer searching for tiles as opposed to NPCs/Objects.

    Very nice work Nava2, I'll definitely use your final revision and do a little editing here and there, as I think there's a couple things I could improve on my part. What you did with the regions and room walking looks top-notch.

    "IntToBox".... Why didn't I think of that? It's embarrassing spending so much time to try and make things as neat as possible, then someone comes along and gets the same result for a fraction of the lines. Also, about the 2-line indention, that's just my signature style.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  12. #37
    Join Date
    Jul 2010
    Posts
    1,115
    Mentioned
    1 Post(s)
    Quoted
    10 Post(s)

    Default

    Progress Report:
    =-=-=-=-=-= Catacomber 1.0 by Flight =-=-=-=-=-=
    Time Running: 15 Hours, 19 Minutes and 9 Seconds
    Attack XP: 0
    Strength XP: 132469
    Defence XP: 0
    Constitution XP: 44156
    Ranged XP: 0
    Deaths: 14
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


    Do i win longest? Oh and its still going

  13. #38
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Lol bolshak25, that's great! I think you'll like V1.1. The path-generating was re-done, and wonderfully I might add, by Nava2. He also cleaned up my sloppy box regions. On top of that, I threw in Home's AdjustTile, sped of fighting slightly (and I noticed an approx. increase of 21-25% in XP/Hour), and added what should prove to be a more stable way of lost detection and home teleporting. I think I'll just put the quest part of the script on hold and release V.1.1 as it is now.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  14. #39
    Join Date
    Jul 2010
    Posts
    1,115
    Mentioned
    1 Post(s)
    Quoted
    10 Post(s)

    Default

    Speaking of lost detection, you should add a wait in the walking, because when it goes from dead to the catacombs, sometimes itll tele home when its right there because it failed to walk 20 times. small wait should fix it because itll be called 20 times. and maybe have it write your levels on smart? because tight now id love to know my str lvl and hp

  15. #40
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Lol just disable smart, check your stats, and re-enable it. It shouldn't effect the script. You're bound to have some really high levels now.

    Also, since I decided against finishing the quest portion, you can do whatever you want with those first 2 accounts of the list you sent me, I obviously won't be needing them. It's only the first 2 that I used, and they're both at the same stage of the script, go ahead and finish it on them if you'd like.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  16. #41
    Join Date
    Jul 2010
    Posts
    1,115
    Mentioned
    1 Post(s)
    Quoted
    10 Post(s)

    Default

    i just hit 57 str and 49 hp. loving the script. ill probably finish with them then have them start abusing this script as well

  17. #42
    Join Date
    Dec 2006
    Location
    Sweden
    Posts
    10,812
    Mentioned
    3 Post(s)
    Quoted
    16 Post(s)

    Default

    plsplsplsplspls add those features I suggested so I can run this on my huge army


    Send SMS messages using Simba
    Please do not send me a PM asking for help; I will not be able to help you! Post in a relevant thread or make your own! And always remember to search first!

  18. #43
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Quote Originally Posted by Harry View Post
    plsplsplsplspls add those features I suggested so I can run this on my huge army
    Yeah I think I'm gonna pass on the quest part. I'm taking a small break from scripting at the moment, and when that's over I have a bigger project on my hands, I'm sorry Harry.

    Although in the newest version I did add the procedure to start the quest (all the talking, ect..), it's included in the script, so if you'd like to take it from there then by all means do so.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  19. #44
    Join Date
    Dec 2006
    Location
    Sweden
    Posts
    10,812
    Mentioned
    3 Post(s)
    Quoted
    16 Post(s)

    Default

    You underestimate my laziness Oh well.


    Send SMS messages using Simba
    Please do not send me a PM asking for help; I will not be able to help you! Post in a relevant thread or make your own! And always remember to search first!

  20. #45
    Join Date
    Mar 2006
    Posts
    3,051
    Mentioned
    1 Post(s)
    Quoted
    0 Post(s)

    Default

    Do any of these monsters drop stackable items worth collecting?


  21. #46
    Join Date
    Jul 2010
    Posts
    1,115
    Mentioned
    1 Post(s)
    Quoted
    10 Post(s)

    Default

    runes, bronze arrows, fishing bait, and feathers are about it

  22. #47
    Join Date
    Mar 2011
    Location
    Oklahoma
    Posts
    98
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    *"dieing" should be dying

    Love the concept; I'd been using the fast fighter at the skoblins for a while. Good job Rep++.
    ---- Kanah ----

    “If God did not exist then surely man would create him" - Voltiare

  23. #48
    Join Date
    Jan 2008
    Location
    Houston, Texas, USA
    Posts
    770
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Hey nice script. I love the efficient combat system. But I noticed some minor problems that you could fix for the next update.

    - If your character dies, when it respawns it can't re-equip the items because the uptext is not clearly visible sometimes due to adbots spamming websites. The mouse just keeps hovering on the equipment. This can be solved by equipping the items inside the catacomb.

    - It randomly picks up items, probably due to misclicks. If it picks up weapons, it falls into an endless loop trying to equip them. For example, I was training with kayle's sling. It randomly picked up an oak shortbow. After I died, it equipped the shortbow and the sling went in the inventory. Then it re-equipped the sling and the shortbow went in the inventory, this went on in a endless loop. Luckily I was there to drop the shortbow. That's very bannable if someone stands in one place for hours equipping and re-equipping items. You should add a failsafe there. Maybe have it check inventory randomly and drop any items that might be there.

    Again you have a very nice script. Wish there were higher level monsters though...

    Edit: Also it will be fantastic if make the script pick up arrows and equip them (if they are the same as the equiped arrows).

    Edit2: Two nice proggies

    Code:
    =-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-=
    Time Running: 5 Hours, 9 Minutes and 27 Seconds
    Attack XP: 0
    Strength XP: 0
    Defence XP: 0
    Constitution XP: 22817
    Ranged XP: 69087
    Deaths: 0
    Breaks: 2
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Code:
    =-=-=-=-=-= Catacomber 1.1 by Flight =-=-=-=-=-=
    Time Running: 8 Hours, 1 Minutes and 45 Seconds
    Attack XP: 0
    Strength XP: 127510
    Defence XP: 0
    Constitution XP: 42281
    Ranged XP: 0
    Deaths: 0
    Breaks: 3
    =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Last edited by FEAR; 08-31-2011 at 08:49 AM.

  24. #49
    Join Date
    Aug 2007
    Location
    Colorado
    Posts
    7,421
    Mentioned
    268 Post(s)
    Quoted
    1442 Post(s)

    Default

    Nice reports there, FEAR.

    Yes about the misclicking and picking up items I noticed it as well. I made some proto-type junk-dropper for it. I made it right before I left a few days back so I don't remember if it was successful or not.

    I think I could do a new version (if the junk-dropper works ok) with optional stackables collecting.

    Current projects:
    [ AeroGuardians (GotR minigame), Motherlode Miner, Blast furnace ]

    "I won't fall in your gravity. Open your eyes,
    you're the Earth and I'm the sky..."


  25. #50
    Join Date
    Jan 2008
    Location
    Houston, Texas, USA
    Posts
    770
    Mentioned
    0 Post(s)
    Quoted
    0 Post(s)

    Default

    Quote Originally Posted by Flight View Post
    Nice reports there, FEAR.

    Yes about the misclicking and picking up items I noticed it as well. I made some proto-type junk-dropper for it. I made it right before I left a few days back so I don't remember if it was successful or not.

    I think I could do a new version (if the junk-dropper works ok) with optional stackables collecting.
    And equipping the arrows which can be set by the user. That will make the scrip run longer for rangers. Also could you make the FightRegion selection for individual players? I have a lot of accounts with very different combat levels so it would be great if I could select which part of the catacomb each account will go to.

Page 2 of 3 FirstFirst 123 LastLast

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
  •