Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Buy OSRS Gold

Sell OSRS Gold
Sign in to follow this  
sporadicx

Open Guide: Combat Helper

Recommended Posts

Notes: This is not exactly a guide as much as it is me sharing my experience and findings with various aspects of scripting for combat-related tasks. The format in which this guide is presented resembles that of a guide, and is why I have decided to share this under the Scripting Tutorials section. I intend for this to be useful to beginners who wish to quickly grasp the concept sand fundamentals of writing scripts which rely on combat-based functions and methods. Also, this was meant to be an open guide, in that all members feel free to add to it any information, corrections, or suggestions. Let us begin.

 

Combat Helper - RS07

 

1. COMPOSITION

 

My first attempt at a script that included combat was awful, to say the least. 5 months ago, January 2015, I wrote my first combat script while learning to program in Java (with 4 years prior C/C++ knowledge). The first thing I learned from my experience was to invest time into figuring out what you intend for your script to accomplish, and planning out important steps or "components" of the overall routine. Consider what you will need and what you wish to include in your script before beginning. Essentially, this should be the case for almost any script, not just combat.

 

What will your program do? What will you need to make it do what you wish? How should it perform overall? 

 

Answering these questions ahead of time will save a lot confusion later and allow for some form of organization to be followed. Additionally, be considerate of the user even if that user is yourself. It is worthwhile to make scripts that are very presentable, have friendly-simple interfacing, have good modifiability and robustness. What might a combat script include? It may of course may entirely BLAH:

1.     Banking

2.     Looting

3.     Attacking

4.     Healing

For simplicity and starting out, only what is necessary should be included. For example, a power-leveling bot would not need to incorporate a routine for looting. Though, it may be given the option to do so through design. Also, consider a bot which kills chickens for feathers. In this instance, it would be unnecessary to include a healing routine.

 

A simple yet effective implementation for these components that works well for me is:

private boolean stopScript;public void run() {        // Run function of main program loop  while(!stopScript) {     // Boolean conditional for script    bank();                // Check for banking. If so, perform it and travel.    combat();              // Get in game NPC and pursue it. Heal if needed.    loot();                // Pick items off the ground.  }}public void combat() {    // Combat function - integrates both attacking and healing  /* attack and heal */}

 

1.1 Banking

 

Banking is perhaps the simplest of the above fundamental combat script components. In many of my script applications, I have gotten away will writing a single function to perform the banking routine necessary for my task.

private final RSTile myBank = new RSTile(1000, 1000, 0);private final RSTile mySpot = new RSTile(2000, 2000, 0);public void bank() {  if(Inventory.isFull()) {              // Is inventory full?    banking = true;                     // If so, enable banking status (thread-safe)    WebWalking.walkTo(myBank);          // and run/walk to myBank.    if(Banking.openBank()) {            // Check if the bank account is open.      Banking.depositAll();             // If so, deposit all inventory items      sleep(400,800);                   // and perform short delay.      WebWalking.walkTo(mySpot);        // Walk back to desired location, my spot,      banking = false;                  // and disable banking status. (thread-safe)    }  }}

Other programs may not be as simple, requiring additional features and capabilities. Such features include dynamic clicking, sleeping, or waiting using time-based conditionals.

/* This conditional statement dynamically waits for the bank screen to appear.  */if(Timing.waitCondition(new Condition() {      // If the wait condition returns true    @Override                                  // Allow process Override for conditional    public boolean active() {                  // Condition function      General.sleep(100);                      // Sleep every 0.1 seconds      return Banking.isBankScreenOpen();       // Check: Is bank screen open?    }  }, 1000)) {                    // If Condition function returns true before time-out    /* Perform banking actions here */}

Most importantly from banking I have learned that it is extremely important to test the method for getting to the bank. Nothing is worse then having a bot that knows how to bank, but cannot properly get to the bank or travel back from the bank. The banking actions, if written and tested, should be rather straight forward and cooperative.

 

 

1.2 Looting

 

In my experience, I have found it very useful to allow looting to be optional. This is done by simply designing a boolean control or state via enum property to govern the capability, and then implementing it as some form of user control.

 

In this case, the shell design for the loot() function may look somewhat like:

private boolean looting;public void loot() {  if(looting) {    /* Perform loot operations here */  }}

In my opinion, looting is a bit more tricky then your typical banking routine. The difficulty in this is knowing when an enemy has been killed, and then waiting for the items to appear on the ground after completing their unique death animation. One simple way to do this is to manually determine the time it takes for the items to drop once detecting the NPC target's health to be zero. 

 

A routine for this might look like:

private final int[] lootItems = { 100, 200, 300 };       // Array of item IDsprivate RSNPC monster;                                   // Target monsterprivate boolean fighting;                                // Boolean combat conditionalprivate boolean looting;                                 // Boolean loot conditionalpublic void loot() {  if(looting) {    if(monster != null) {                 // Check if NPC target is null.      if(monster.getHealth() == 0) {      // Is NPC target dead?        sleep(3500);                      // Sleep for death animation.        pickUp(lootItems);                // Loot only items from loot array.        monster = null;                   // Reset NPC target to no target.        fighting = false;                 // Reset combat conditional to "out-of-combat"      }    }  }}

With this sleep function approach, the player is forced to wait out the death animation and allow the loot to appear. However, the pickUp() method is what's responsible for performing the actual looting action.

 

An approach that has worked for me was:

boolean pickUp(int[] ids) {  if(ids != null) {                                // Check if loot ID array is null  RSGroundItem item = findClosestItem(ids);        // Get closest item  if(item != null) {                               // If the item exist    if(item.isOnScreen()) {                        // If the item is on the screen      final int currentInventory = Inventory.getCount(ids);  // Get number of inventory items      for(int i = 0; i < 20; ++i) {        Clicking.click("Take " + item.getDefinition().getName(), item);        sleep(200,500);        if(Inventory.getCount(ids) > currentInventory)       // If item was picked up          break;        }        return Inventory.getCount(ids) > currentInventory;   // Return pick up status      } else {        WebWalking.walkTo(item.getPosition());               // If not on screen, walk to item        pickUp(ids);                                         // Recursive call: pick up item      }    }  }  return false;}RSGroundItem findClosestItem(int[] ids) {  RSGroundItem[] items = GroundItems.find(ids);           // Get items on ground  int distance = 99999;                                   // Initialize large distance  RSGroundItem closest = null;                            // Initialize closest item  DPathNavigator dNav = new DPathNavigator();             // Path object  for(RSGroundItem iter : items) {    int i;    if(iter != null && (i = dNav.findPath(iter).length) < distance) {      distance = i;                                       // New closest distance      closest = iter;                                     // New closest item    }  }  return closest;}

Keep in mind that it is important for the primary combat sequence loop to be fast enough to detect when the health of the target reaches zero. There is of course only a limited amount of time for when the target's health will be equal to zero before it disappears.

 

Other methods for looting may be as simple as clicking the item once it appears, and utilizing a boolean condition to flag if the item has or has not been successfully looted. A cowhide farming bot, for example, could make use of such a simple method because it is expected that a cowhide drops from each cow upon death. What you should employ depends on your script's needs and performance expectations.

 

 

1.3 Attacking

 

The attacking routine has been the most challenging to pursue. I have learned that it requires more testing then any of the components, and deserves extremely careful design in order to be successful. There are several instances to consider when attacking a target. They include, multi-combat, retaliation, target switching, target validation. There will always be instances in which multi-combat may be present, retaliation is needed if being attacked, switching to another target if the target NPC is lost or stolen, and validating if a target is available for attack. But first, we will look at the basics for finding a potential target.

 

A procedure that works well for me includes, finding a target in the area, getting the closest target, and then clicking on that target:

private RSNPC monster;public void attack() {  RSNPC npcs[] = NPCs.findNearest("Chicken");                // Get array of nearest NPCs  if(npcs.length > 0) {                                      // Did we get any NPCs nearby?    target = npcs[0];                                        // The 0th NPC is the closest    if(monster != null) {                                    // Null check the RSNPC object                                                             // Click the target      DynamicClicking.clickRSTile(monster.getAnimablePosition(), "Attack "+monster.getName());    }  }}

Though the process is simple, there are immediately problems with this short snippet of code. Firstly, how do we know if nearest target is even on the screen to be clicked? Also, we do not know if the target is valid for combat. Is it already being attacked or busy with some sort of other action? Lastly, how is it known if the user has finally started attacking the target and can top clicking it?

 

A revised and more promising routine might be:

private RSNPC monster;public void attack() {  if(!fighting) {                                            // Boolean condition for combat    RSNPC npcs[] = NPCs.findNearest("Chicken");              // Get array of nearest NPCs    if(npcs.length > 0) {                                    // Did we get any NPCs nearby?      for(RSNPC npc : npcs) {                                // Iterate through all NPCs                                                             // Check if NPC is available        if(!npc.isInCombat() && !npc.isInteractingWithMe() && npc.isValid())) {          monster = npc;                                     // Set target        }      }      if(monster != null) {                                  // Null check the RSNPC object        if(!monster.isOnScreen()) {                          // Is monster on screen?          int rand = 1 + General.random(1, 99);              // Get a random number between 1-100          if(rand > 50) {                                  Camera.turnToTile(monster.getPosition());        // Turn to the target's tile          }          else {            WebWalking.walkTo(monster.getAnimablePosition());  // Walk to the target's tile          }        }        for(int i = 0; i < 20; ++i) {                       // Attempt a max of 20 clicks                                                            // If target and player in combat          if(npc.isInCombat() || Combat.isUnderAttack() ||            (Combat.getAttackingEntities.length > 0)) {            break;          }                                                            // Click the target          DynamicClicking.clickRSTile(monster.getAnimablePosition(),"Attack "+monster.getName());          sleep(200,500);                                   // Short delay        }                                                            // Player is engaged in combat        if(Combat.isUnderAttack() || (Combat.getAttackingEntities.length > 0)) {          fighting = true;                  // Toggle fighting, stop searching for a target        }      }    }  }}

Though this snippet may not work for certain instance of combat, it is useful to show what kind of necessary checks and procedures should be considered when trying to attack a target. In my applications, this snippet of code has been enough for me to accomplish what I need.

 

Additional code that is necessary to include are checks for in-combat instances. What if the user is being attacked but not attacking or if the NPC is somehow lost or stolen?

 

Here is one way I have addressed this problem:

private RSNPC monster;private boolean fighting;public void inFight() {                                       // Can be included in attack()  if(fighting) {                                              // Boolean condition for combat    RSPlayer player = Player.getRSPlayer();                   // Get user object info    if(player != null) {                                      // Null check RSPlayer object      RSCharacter target = player.getInteractingCharacter();  // Get the user's actual target      if(target == null) {                                    // If actual target is null        monster = getInterractingNPC();                       // Set target to attacking NPC        if(monster != null) {                                 // If an attacking target exists          monster.click();                                    // Click the new attacking target          sleep(250, 400);                                    // Short delay        }        else {                                                // If no attacking target present          fighting = false;                                   // There is no fight, toggle off        }      }    }  }}

A few necessary states and conditions that I would like to share regarding combat are below. I found that much of the methods in the API did not accomplish what was expected. These methods I have defined offer a little bit more of a literal meaning to their actions.

/* Check if the player is in combat */boolean playerInCombat() {  return Combat.getAttackingEntities().length > 0;}/* Check if the player is attacking a target */boolean playerIsAttacking() {  return Combat.isUnderAttack();}/* Check if the target is attacking the user */boolean targetIsAttackingMe(RSNPC target) {  return target.isInCombat() && target.isInteractingWithMe();}​/* Check if the target is in combat, but not attacking the user */boolean targetNotAttackingMe(RSNPC target) {  return target.isInCombat() && !target.isInteractingWithMe();}​/* Check if the target engaged with the user but not attacking (stuck behind something or walking toward user) */boolean targetEngagedWithMe(RSNPC target) {  return !target.isInCombat() && target.isInteractingWithMe();}​/* Check if the target is not in combat and not interacting with user (free to engage) */boolean targetIsNotEngaged(RSNPC target) {  return !target.isInCombat() && !target.isInteractingWithMe();}​/* Check if the user is in combat and not attacking a target */boolean playerInCombatAndNotAttacking() {  return Combat.getAttackingEntities().length > 0 && !Combat.isUnderAttack();}​/* Check if the user is attacking a target and not being attacked  */boolean playerAttackingAndNotAttacked() {  return Combat.getAttackingEntities().length < 1 && Combat.isUnderAttack();}​/* Check if the target has died */boolean targetIsDead(RSNPC target) {  return target.getHealth() == 0;}

 

1.4 Healing

 

Healing is an integral part of many combat scripts. Essentially, healing in/out of combat requires a few steps: checking for food in the inventory (and bank), eating below a certain health level or percentage, executing the click-to-eat process. Most times, healing methods will need to be implemented in with the attacking methods of a combat script. In this case it is necessary to combine methods or designate an individual thread for healing. 

 

In implementation, I prefer to check if the health value is below a certain point before checking for available food in the user's inventory. The user is to flee combat in the case that there is no food and the health falls below the observed percentage. In all other cases, the user may continue to fight. 

 

Another important consideration is with banking and food supplies. I've found it best to end the script when the user runs out of the selected food supply. If both the bank and inventory has no supply of the desired food, then log out and kill the program.

 

A simple example of a healing method would be:

private final int[] foodToEat = { 100, 200, 300 };            // Food array for eatingprivate final int timeToEat = 1900;                           // Rounded-up time to eatprivate final int minHealth = 10;                             // Eat at or below this healthpublic void heal() {                                                                                    // While current HP <= minHealth and food exists  while((Combat.getHP() < (minHealth+1)) && foodExists())        eat();                                                    // Eat food}public boolean eat() {  RSItem[] food = Inventory.find(foodToEat);                  // Get food in inventory  final int currHP = Combat.getHP();                          // Get current HP level  if(food.length > 0) {                                       // Check if food was found    if(food[0] != null) {                                     // Check if first food is null      if(Clicking.click("Eat", food[0])) {                    // Click to eat food        return Timing.waitCondition(new Condition() {         // Conditional for eating action          @Override          public boolean active() {                           // True when finished eating            return Combat.getHP() > currHP;                   // Return health change status          }        }, timeToEat);          // If Condition function returns true before time-out      }    }  }  return false;                                               // Didn't complete eating sequence}public boolean foodExists() {  return Inventory.find(foodToEat).length > 0;                // Return inventory food quantity}

Such a method might be included using a thread or be directly implemented into the combat method. Either method works well unless the thread actions are unsafe (via design) or the time to loop through the entire combat sequence is too long and slow (again, via design).

 

For example, the direct combat implementation from section 1.3 would look like:

private RSNPC monster;private boolean fighting;public void inFight() {                                       // Can be included in attack()  if(fighting) {                                              // Boolean condition for combat    heal();                                                /* Implement heal() here */    RSPlayer player = Player.getRSPlayer();                   // Get user object info    if(player != null) {                                      // Null check RSPlayer object      RSCharacter target = player.getInteractingCharacter();  // Get the user's actual target      if(target == null) {                                    // If actual target is null        monster = getInterractingNPC();                       // Set target to attacking NPC        if(monster != null) {                                 // If an attacking target exists          monster.click();                                    // Click the new attacking target          sleep(250, 400);                                    // Short delay        }        else {                                                // If no attacking target present          fighting = false;                                   // There is no fight, toggle off        }      }    }  }}

This implementation would make the overall design flow as:

private boolean stopScript;public void run() {                                        // Run function of main program loop  while(!stopScript) {                                     // Boolean conditional for script    bank();                       combat();        loot();  }}public void combat() {  attack();  inFight();}

Another task-based design could be to implement each of the discussed four components directly in order. Fighting cows, goblins, men/women, and rats may allow for such implementation as they may rarely require healing.

private boolean stopScript;public void run() {                                        // Run function of main program loop  while(!stopScript) {                                     // Boolean conditional for script    bank();    attack();                                              // Incorporates our inFight() method    loot();    heal();  }}

 

Closing Remarks: These are methods which I have experience, learned, and followed myself. I do not take credit for creating or inventing all of the content presented in this forum thread. It is intended to represent my experience and learned lessons, and for me to share the collection of knowledge I have gained in regards to combat-based scripts and tasks. Feel free to append to this information or offer additional insightful information for our reading audience. Thank you.

 
Edited by sporadicx
  • Like 2

Share this post


Link to post
Share on other sites

@sporadicx Some of is a bit nooby.

 

What I mean by that is that you don't know about all of the api classes in http://tribot.org/doc and because of that, your code doesn't take advantage of tribot's api. You also misuse it sometimes.

 

For example, you should really be filtering for ingame models like rsobjects, ground items and rsnpcs rather than just using: npcs.findnearest.

This is because filtering is more efficient and will consume less cpu. Has been recommended by trilez.

 

You shouldn't be webwalking everywhere. Webwalking is useful for walking across runescape or to a bank, but it is not meant to be used as your walking method for everything. You should use DPathNavigator for areas that you interact with frequently: https://tribot.org/doc/org/tribot/api2007/util/DPathNavigator.html

 

I just pointed out what stuck out while I was skimming. Your main issue is that you don't use refined methods that take advantage of java as well as the tribot api. However, java is great language to work with and with help from premium scripters, you should be able to improve in no time. Would definitely recommend adding a premium scripter on skype that is willing to answer your questions and edit your work on your path to becoming a scripter yourself.

Edited by Flamo353

Share this post


Link to post
Share on other sites

I understand your intention here is to help, but if someone follows this guide, their skills will be diminished. A lot of your conventions, methods of writing code, and use of the API are either wrong or just really bad.

Share this post


Link to post
Share on other sites

@Flamo353 @Assume

 

Thanks for the feedback I suppose...

 

If there are "better" methods to use in the API, then the methods I utilized should be excluded overall and denoted as depreciated. Seems like a few things need to be taken care of first to allow starters with this tribot API to not get off on the wrong foot, as I clearly have.

Edited by sporadicx

Share this post


Link to post
Share on other sites

@Flamo353 @Assume

 

Thanks for the feedback I suppose...

 

If there are "better" methods to use in the API, then the methods I utilized should be excluded overall and denoted as depreciated. Seems like a few things need to be taken care of first to allow starters with this tribot API to not get off on the wrong foot, as I clearly have.

It's not that the API is wrong, it's your use of it is wrong. You can add me on Skype and I'd be happy to answer questions directly about what you did wrong and why.
  • Like 1

Share this post


Link to post
Share on other sites

It's not that the API is wrong, it's your use of it is wrong. You can add me on Skype and I'd be happy to answer questions directly about what you did wrong and why.

 

Just so we're clear, I am not blaming the API. Never said it was wrong either. I was suggesting that some ambiguities be addressed or made aware at the least to allow learning individuals to write scripts the correct way and prevent their time from being wasted. For instance, I literally just learned about filtering, though it seems a bit dated, from https://tribot.org/forums/topic/16664-how-to-use-filters-and-filter-groups/

 

Had Flamo353 not brought it to my attention, I would be still clueless and be attempting to make use of the ridiculously slow unfiltered methods.

Share this post


Link to post
Share on other sites

Hey I like the effort, and if people say its noob quality or anything else don't worry about it. Everyone starts somewhere, and they probably just on the same level as you. I appreciate you putting the effort, and making this guide.

The issue is this is posted in a tutorial section. Others may look upon this code to learn and not realize it is of poor quality.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By ELON
      [ FREE ]   ELON Combat AIO  [ Open Source ] 
       

       
      . Description:
      Train Combat Anywhere Banking support Looting support Potion support ABC2 LVL10 Free Fully Open Source JavaFx Gui Paint   
      GET SCRIPT HERE: https://tribot.org/repository/script/id/3549
      SOURCE LINK: https://github.com/Elon333/Scripts
    • By Optimus
      Welcome to Optimus AIO Combat & Magic!
      Glossary:
      1. Description

      2. Combat Overview
           2.1 What Can the Script Kill
           2.2 Core Combat
           2.3 Looting
           2.4 Banking
           2.5 Progressive Training
           2.6 Worldhopping
      3. Magic Overview
           3.1 Regular Spellbook
           3.2 Ancient Spellbook
           3.3 Lunar Spellbook
           3.4 Combo Alching
      4. Purchase Info & 10 Hour Free Trial.
           4.1 Packages
      5. Testimonials
      6. Gallery
       

      1. Description:
      Optimus AIO Combat & Magic is a script engineered to safely train up your Combat, Magic and Slayer skills using nearly every training method available in the game.

      Using ABC2 technology and thousands of hours of real human playing data, the script now out-performs most human players, while also avoiding bot-detection and staying under the radar from Jagex.
      2. Combat Overview:
      2.1 What Can the Script Kill?:
      The script is capable of killing every monster in the game, below are some noteworthy opponents: 
      Dragons - Including Green, Blue, Red, Black, Brutal, Adamant& Rune dragons - Amazing for goldfarming or training up your account.  Slayer monsters - Dark Beasts, Cave Krakens, Abyssal Demons, Drakes, Spiritual Mages/Warriors, Wyverns, Nechryaels, Gargoyles, Dust Devils & everything below. It will automatically use the required slayer items for finishing.  Crabs - The script can kill Rock crabs and Sand crabs. Resetting their aggro when necessary. (Ammonite and Swamp Crabs coming soon.) Experiments - Insane XP for pures. Yaks - Insane XP for mains. Chaos druids - Good goldfarming for medium level accounts. All wilderness monsters - Good for farming emblems & wildy slayer.  Dagannoths - Insane XP, I recommend bringing a cannon for maximum gains.  Nightmare Zone Bosses - The script can kill all bosses inside NMZ and drink all the potions. It will end once the dream is complete.  Stronghold of Security and other dungeons - The script supports all of these locations.  Plus 1000's of other monsters - Literally anything you can think of, some people even use it for KBD.  2.2 Core Combat:
      Below are some of the core features that make the script so powerful. Using the features mentioned below the script can perform just as good as any player. 
      Dwarf multicannon - The script will place, reload, pickup and stop your cannon decaying. Prayer - The script can use all prayers, including quick prayer, and even recharge your prayer at nearby altars.  Potions - Including Divine, Extended, Super, Regular, Energy, Stamina & NMZ potions.  Special Attacks - Supports every special attack weapon in the game, including weapon switching.  Guthans - The script can switch to Guthan's to heal, then switch back to your primary gear once hp is recovered.  Food - It can eat every type of food in the game. Even multiple types of food, simply seperate their names with a comma E.G Lobster, Swordfish. Bones to peaches - The script efficiently uses Bones to peach tablets if you've got them in your inventory.  Safe spotting - Safely train combat from a distance without taking any damage.  Uses slayer items to finish kills - Bags of salt, ice coolers, rock hammer etc. Detects if you've unlocked the slayer ability to auto-kill.  Bone burrying - Train up your prayer! 2.3 Looting:
      Looting by item name or ID - Simple to setup Looting by item price - E.G Loot all items over 500gp - Fetches prices from the Runescape grand exchange. Telekinetic grab support - For those hard to reach places.  High alching - Turn your loot into gold while you train! Pickup and re-equip ammo - Supports all ammo types. Ironman looting - The script will automatically detect if you're an Ironman, and loot accordingly.  Looting bag & Herb sack  - The script will automatically use them if you're carrying one. Accurate profit calculations  - Track your gains on screen or with your dynamic signature.  2.4 Banking:
      Supports every bank in the game - Can use every bank chest / booth / banker in RS. Fully customisable inventory setups. Supports all Teleports - The script can use all teleport methods including Spells, Tabs, Jewelery & Scrolls + more. Will bank for multiple conditions: 
      - Hp is below a set %.
      - Inventory is full.
      - Out of food.
      - Out of runes.
      - Out of ammo.
      - Out of all potions.
      - Out of prayer potions.
      - Out of antifire potions.
      - Out of cannonballs.
      - Before a break starts.
      - When your slayer task is complete. Heals to full HP at the bank - To save food during your trip, it'll heal up in the bank.  Logs out when you're out of supplies. 2.5 Progressive training: 
      The script can do the following when you level up, or after x amount of time:
      Upgrade equipment - E.g upgrade to Rune scimitar when you reach 40 attack. Change attack styles - E.g switch to Strength training after you reach 40 attack Change training method / location - The script can completely switch training methods, e.g Rock crabs to 60 strength, then go train magic to 70 alching, then switch back to Chaos druids after an hour. All without stopping the script.  2.6 Worldhopping: 
      The script uses both the ingame worldhopper and login screen worldhopper to find the ideal training spot. Note: All of these settings are optional. 
      Supports F2P, Members & DMM worlds  - It will automatically detect which you're in, and select worlds accordingly.  Worldhop when x players in your area - The script can count how many players are around and worldhop if it gets too busy.  Worldhop when there's a cannon in your spot - To avoid reduced XP / GP rates. Worldhop when there's a Jagex Moderator nearby - A safety precaution.  Worldhop when the break handler activated - So someone doesn't see you training for prolong periods of time. Worldhop when someone talks in your area. 3. Magic Overview:
      The script can train with pretty much every training method available, from Air strike to Ice barrage, it's all supported. 
      (The script can also loot, use cannon etc while using non-combat methods).

      3.1 Regular Spellbook
      The script can use the following regular spellbook spells, both in combat & out of combat.
      Splashing Strike spells Bolt spells Blast spells Surge spells Enchant jewelry spells Superheat items Enchant crossbow bolt spells Curse spells Alchemy spells Teleport spells 3.2 Ancient Spellbook
      The script can use the following ancient spellbook spells.
      All rush spells All burst spells All blitz spells All barrage spells 3.3 Lunar Spellbook
      The script can traing using the following lunar spellbook spells.
      Humidify Superglass Make Tan Leather Plank Make Spin Flax String Jewelry  3.4 Combo Alching
      The script can also Combo alch, meaning it will cast the high alchemy spell after using another spell to recieve rapid XP.
      It can combo alch with the following spells:
      Combat / Alch - E.G Fire surge & Alch at the same time Curse / Alch - From curse up to stun it's all supported. Earn up to 180K XP/Hour Teleport / Alch - Very fast XP.  4. Purchase info and script trial info:
      Packages:
      Free Trial
      Price: FREE

      Every month you're allowed a free 10 hour trial with the script, enjoy
      1 month Package
      Price: $10

      VIP is not required to run the script
      The ability to train all of combat and magic effortlessly and safely for 1 month
      Complete customer support via discord and the TRiBot forums

      2 week Package
      Price: $6

      VIP is not required to run the script
      The ability to train all of combat and magic effortlessly and safely for 2 weeks
      Complete customer support via discord and the TRiBot forums
      To purchase the script or activate your free trial, click the image below:
      TRiBot Repository | Optimus Combat & Magic

       
      5. Testimonials:

       
      6. Gallery:
       
    • By Zinkan
      Cow Killer, pretty simple.
      Kills cows in most parts of the map.
      The bot doesn't go outside the gate, so no worry about that.
    • By Fluffee
      Fluffee's TRiBot Credit Shop
      Purchase credits securely from a TRiBot Administrator, and get back to botting quickly!

      Current Price: 1.69m OSRS/Credit or $1.15 BTC, ETH, XRP or LTC/Credit
      Lower prices available depending on quantity, discounts start at 50 credits!
      Contact Methods
      Discord: Fluffee#9509
      PM on the Forums
    • By daxmagex
      Click the spoiler for more progress reports!
       
       
       
      Posting a BUG REPORT
      Please read this and submit the report here.
      You can buy Credits with RSGP instantly here!
    • By Optimus
      Hey guys, Optimus here
        I noticed that TRiBot was lacking a good FREE auto fighter, so I decided to release a Lite Version of Optimus Combat & Magic for free!
      This version of the script has had certain features disabled, but is still very rich in features, so enjoy   To activate the script on the repository, please use the following links:
        https://tribot.org/repository/script/id/3097-optimus-combat-magic/ - Lite Version

      https://tribot.org/repository/script/id/651-optimus-combat-magic/ - Premium Version
      Note: There is a 10 hour FREE TRIAL for anybody who wants to try out the PREMIUM VERSION of the script on the repository
        Preview:   Features Overview: (Certain features are disabled in the Lite version).
      Supports CLI Launcher & Script arguments:
      Enter the name of your GUI settings as the script argument and you'll be botting in seconds!
      Combat features:
      Kills every monster in the game including but not limited too:
      ~Chickens
      ~Cows
      ~Goblins
      ~Giants
      ~Al-kharid warriors
      ~Chaos druids
      ~Yaks
      ~Experiments
      ~Stronghold of security
      ~All slayer dungeons
      ~All slayer monsters (Also uses finishing items such as Bags of salt, ice coolers, rock hammers, rock thrownhammers etc)
      ~Dragons (Including Brutals, and will keep safe distance if you're using ranged/magic)
      ~Crabs (Sand & Rock crabs + makes them aggressive again)
      ~Wyverns
      ~Kalphites
      ~Dagannoths
      ~Cave Kraken & splashing Kraken boss
      ~Wilderness monsters
      ~Nightmare zone bosses
      And hundreds of different monsters, literally anything else you can think of!
      Ironman mode:
      The script now supports ironman and ultimate ironman mode accounts, and will only attack / loot your own monsters on those accounts.
      Intelligent combat system that supports the following:
      - All food types + bones to peaches
      - Banking for more supplies at every bank in RS
      - All special attacks + weapon switching
      - All potion types (Including NMZ potions)
      - Full prayer support + quick prayers + recharging prayer at altars
      - Dwarf multicannon support + anti decay
      - Guthans for healing
      - Safe spotting
      - Worldhopping when certain conditions are met
      - All magic spells supported + can re-equip staffs and setup autocast for you automatically
      - Progressive training system so the script can automatically switch training methods / equipment when it levels up.
      Intelligent looting system that supports the following:
      - Looting by item name or ID
      - Loot items by item price (E.g loot all items over 500gp)
      Ironman looting - Only loots from monsters you've killed
      - Loot using telekinetic grab
      - Bury bones you loot
      - High alching the loot you pickup
      - Accurate profit calculations & tracking
      - Automatically uses the looting bag & herb sack 
      And much much more...
      Magic features:
      The script is also an AIO Magic script that supports every single combat AND non combat magic spell available on the Regular,Ancient and Lunar spellbooks.
      Including:
      All combat spells
      All cursing spells
      All enchantment spells for jewelry and bolts
      Superheat item
      All teleport spells
      All alchemy spells ( Can combo alch between casts to double your xp )
      Splashing
      The script can also train with the following lunar spells!
      Humidify
      Plank make
      Superglass make
      Tan leather
      Spin flax
      String Jewellery
      and More!
        To activate the script on the repository, please use the following links:
        https://tribot.org/repository/script/id/3097-optimus-combat-magic/ - Lite Version

      https://tribot.org/repository/script/id/651-optimus-combat-magic/ - Premium Version
      Note: There is a 10 hour FREE TRIAL for anybody who wants to try out the PREMIUM VERSION of the script on the repository   Gallery:    
    • By Realist
      Need Tribot credits for scripts/VIP etc? You're at the right place!
      or
      Do you have credits you want to SELL? Message me!
      I accept cash & 07 Gold/ Rs3 Gold / CS:GO Skins.
       
      For rates, contact me.
       
      Skype is live:realistgold
       
      Discord: Realist#1834 
      Unique Discord ID: 194091681836957696
    • By Friday321
      Hey I’m new to hitting on mobile and need help
    • By ScriptsForMains
      https://tribot.org/repository/script/id/3257
       
      Straightforward to use, fill in the boxes and watch as your character power trains everything that's simple to power train...  Or opt to bank the items.  Whatever tickles your pecker. Works wherever daxWalker is available.  If this script sees high demand I'll make a GUI and command line arguments... 

      I've tested it on fly fishing, teak trees, iron, and thieving guards...  It should work on just about anything. It's a simple script that left clicks on anything you specify and drops whatever items you tell it to.  Supports coin pouch. If you opt for banking, it will bank once the inventory is full and there are no "drop items" left to drop. It will bank everything in your inventory (for now).   
      Doesn't support food (yet) but works as a simple power leveler. Can be set to run to a bank and end the script if you drop below 20 hp. Can also be set to world hop if there are any players nearby (feature turns off for trip to bank and back).  

      Like all my scripts with a "main" designation, it will periodically pause/afk to mimic a real player and check itself to make sure it isn't stuck somewhere.  Please post any questions/problems/suggestions.  
    • By Optimus
      Optimus AIO Tzhaar Fighter V2
      Tzhaars are a great method for training up your combat stats while making some good profit! All of the obsidian items are now worth a lot, and with the expansion of the Tzhaar caves they are now a very viable source of income! One of the best features of this script is that it can safe spot the Tzhaars using Ranged/Magic or Halberds so that you don't take damage, which means you don't need a high defence level or much food to kill them!
      Features:
      Kills all the Tzhaar monsters in all locations, including the new inferno area. Earns up to 1m/hour! Create your own fight area and select which monsters you want to target. Full safe spotting support, as well as face to face melee combat. Can fight with ranged / magic / melee ( Including halberds for safe spotting ). Advanced ABC2 antiban with a 10/10 rating. Custom looting & profit tracking Drinks all potions Can worldhop when certain conditions are met. Banks for more food / ammo / runes when required. Can navigate any player to the fight caves on foot, or via the minigames teleport if available.. And much more! Repository link:

       
  • Our picks

    • Over the past few months, I’ve been working diligently on a new project - TRiBot X. Everything has been written from the ground up, with all of the best practices of software engineering. Every aspect of TRiBot has been re-imagined to support three main goals: flexibility, useability, and reliability.
        • Like
      • 31 replies
    • Come give us feedback on the next version of TRiBot!
      • 74 replies
    • TRiBot is looking to improve a lot of its customer relationship management, customer on boarding process, customer experience, design elements, community engagement and pretty much everything else you can imagine when it comes to marketing.

      Our goal: To ensure that the marketing done TRULY reflects the experience and does not shine an inaccurate light on what TRiBot is lacking in.

      So I ask, what do you love about TRiBot and what do you hate about TRiBot? What does O S Bot, Rune M8, PowR Bot and Dre amBot do better? (yes I purposely didn't spell it right 😂).

      Love, 

      RileyZ
      • 23 replies
    • Over the last three weeks, I've been working on upgrading our server infrastructure. It's finally ready and is now live!

      Why?

      Increased reliability - less server errors


      Increased availability - less downtime


      Increased security - keeping us and you secure


      Increased capacity - ability to serve you better


      Increased speed - less waiting for things to load


      Faster development - server and service updates will come faster


      What are the changes?

      Move from a single AWS EC2 instance to AWS ECS (Elastic Container Service)


      Distributed computing


      Load balancing


      Git management of server files and filesystem


      Redis caching


      How?

      AWS ECS (with 10 EC2 instances)


      AWS ElastiCache (Redis)


      AWS Load Balancing


      AWS EFS (Elastic file system)


      Please bare with us as I continue to tune the server for maximum performance. Slow loading speeds may occur temporarily. I thank everyone for their patience.

      Please post on this thread if you experience any issues other than slow loading times.
      • 51 replies
    • This release will:

      Fix prayers and world hopper API (Thanks @JoeDezzy1 and @erickho123)


      Improve banking API (Thanks @Encoded)


      Adds methods for returning and using Java Lists, rather than arrays


      Slightly randomizes some hardcoded behaviour


      Removes sleeps from waitConditions; the efficiency saving potential is negligible in these use-cases, therefore cleaner code is preferable


      Other back-end improvements





      Note: If you are using LG, please restart both the RS client and TRiBot.
      • 90 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...