Jump to content

My personal slayer tasker


Dreamliner

Recommended Posts

I'm using this as my personal log for this project I've been working on -

I'm making a bot which has a universal monster killer which is geared toward the slayer task you're doing.

On start of the script, it checks the slayer gem to parse your task and amount. That is saved in the bot and used as reference to which monster it needs to kill.

It then starts killing the monsters until it reaches 0, teleports out of there and grabs another task from duradel.

A few little features I've built into it so far is guthan's support, support for anti poisons, support for super sets, quick weapon/armor switching for specs and time sensitive guthan healing.

I'll be posting some screen shots and a daily change log at the bottom of this post.

This sort of bot would take a very long time to fully automate due to issues with path finding etc, so I'm doing the best I can to have human walking with automated slaying.

I don't think I'm going to release the bot, due to improbability of making this completely flawless.
- but we will see in the future.

Current task support (flawless buggy not started)

  • Hellhounds
  • Kalphites
  • Aberrant Spectres
  • Turoths (this task sucks - i always skip it)
  • Banshees
  • Wolves (gets stuck looking for the closest wolf and has to run through the mountain to get to it)
  • Greater Demons (current task, need to figure out what to do with the dogs)
  • Fire Giants
  • Bats

To-Do List

  • fix finding closest npc - often it finds one closest which it has to run around a wall to get to
  • fix tasks that have agressive non slayer task monsters
  • make sure bot stays in agro'd area such as greater demons w/ dogs

Current features

  • Guthans
  • Poison Support
  • Equipment variations per task
  • Checks for slayer item required to kill monsters (nosepeg etc)
  • Super sets
  • Enables piety on DDS spec
  • Per task area support
  • (more)

Updates-

 

10/03/2013 - Did a few updates (too many to remember/list)

10/02/2013 - Been very busy at school

Changelog
9/29/2013

  • Added fully working task prayer for certain tasks (aberrant specters etc)
  • Added anti-ban
  • Added a definable boundary area for tasks - initially set to the whole world, and altered by each individual task - it wont attack monsters outside of the area (hardcoded)
  • Added antipoison support for kalphite tasks
  • Added ledge support for hell hounds under taverly
  • Fixed speed issue with guthan switching
  • Added varying equipment per task (initiate for prayer/regular stuff for normal tasks)
  • and many more
Edited by dreamliner
Link to comment
Share on other sites

There is function to get the Nearest NPC, I'm pretty sure.

 

There is. I find it more useful to scan thru all NPC's and find ones with the slayer task in their name - it's more universal

   private NPC getClosestAttackableNPC(String s, Area a) {
      Player p = this.client.getMyPlayer();
      List<NPC> npclist = this.client.getLocalNPCs();
      NPC b = null;
      double d = 20.0;
      if (a == null) {
         a = new Area(0, 0, 20000, 20000);
      }
      if (npclist != null) {
         NPC facing = null;
         int lowhp = 101;
         for (NPC n : npclist) {
            if (n.isInArea(a)) {
               if (n.instance.getDefinition().getCombatLevel() > 0) {
                  if (n.isFacing(p)) {
                     if (n.getPosition().distance(p.getPosition()) < 4) {
                        if (n.getHealth() < lowhp) {
                           lowhp = n.getHealth();
                           facing = n;
                        }
                     }
                  }
               }
            }
         }
         
         for (NPC n : npclist) {
            if (n.getName().toLowerCase().contains(s)) {
               if (n.instance.getDefinition().getCombatLevel() > 0) {
                  if (!n.isUnderAttack()) {
                     if (n.isInArea(a)) {
                        if (n.getHealth() > 0) {
                           if (n.getPosition().distance(p.getPosition()) < d) {
                              d = n.getPosition().distance(p.getPosition());
                              b = n;
                              
                           }
                        }
                     }
                  }
               }
            }
         }
         if (d > 5) {
            return b;
         }
         else if (facing != null) { return facing; }
      }
      
      return b;
   }
Just realized I can condense this code quite a bit - will do that when i get back Edited by dreamliner
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...