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

Sell OSRS Gold
TRiLeZ

Guide to Implementing ABC2

Recommended Posts

ABC2 is the second version of TRiBot's Anti-Ban Compliance utility, whose aim is to provide scripts with a standardized anti-ban, backed by character profiles. ABC2 has been built upon statistical analysis of human playing data, making our anti-ban the most human-like on the market. Read more about the importance of modeling human playing data here: https://tribot.org/forums/topic/60719-tribot-release-9300-0-abc2/.
 
So now you must be wondering how to implement ABC2 in your script. First, I will link the main utility: https://tribot.org/doc/org/tribot/api/util/abc/ABCUtil.html. Each script should use one instance of ABCUtil, unless the script switches RuneScape accounts during runtime. Since each ABCUtil instance is tied to a single character profile for an account, the script must create a new ABCUtil instance if a new RuneScape account starts to be used throughout the runtime of the script.
 
Upon creating a new ABCUtil instance, a thread will be started which is in charge of tracking XP gains, and making the mouse enter/leave the game screen. For this reason, it is important to call ABCUtil#close when you are finished with a specific ABCUtil instance to stop the background thread from executing, and to clean-up.
 
Now, there are four types of scenarios which ABCUtil oversees:

Timed Actions
 
These are actions which are performed based on internal timers. For each timed action, simply use the should method to check if you should perform the action. If true, call the other corresponding method to perform the action. These actions should only be performed when the player isn't particularly busy at the time. Ex: If the player is woodcutting, these actions should be checked/performed while chopping down the tree.
 
Example on how to use the methods:

// Here our player is idling, so we can check/perform the timed actions.
if (this.abc_util.shouldCheckTabs())
	this.abc_util.checkTabs();

if (this.abc_util.shouldCheckXP())	
	this.abc_util.checkXP();

if (this.abc_util.shouldExamineEntity())
	this.abc_util.examineEntity();

if (this.abc_util.shouldMoveMouse())
	this.abc_util.moveMouse();

if (this.abc_util.shouldPickupMouse())
	this.abc_util.pickupMouse();

if (this.abc_util.shouldRightClick())
	this.abc_util.rightClick();

if (this.abc_util.shouldRotateCamera())
	this.abc_util.rotateCamera();

if (this.abc_util.shouldLeaveGame())
	this.abc_util.leaveGame();

Preferences
 
These are preferred ways of doing things as specified by the player's character profile. Note that the preference generated by each method isn't constant, so we should not store the returned value of the generation method. So when an area covered by ABC preferences comes up, we must call the generation method, and act upon the returned value.
 
Example: Let's say we want to open the bank using custom methods. We then use ABCUtil#generateOpenBankPreference to generate the preferred way to open the bank.

final OpenBankPreference pref = this.abc_util.generateOpenBankPreference();
switch (pref) {
 case BANKER:
  openBankBanker();
  break;

 case BOOTH:
  openBankBooth();
  break;

 default:
  throw new RuntimeException("Unhandled open bank preference.");
}

Note that Banking#openBank, GameTab#open, and web walking all take ABC preferences into account, so we don't have to worry about handling preferences if we use those methods.
 
Next Target Preference
 
ABCUtil#selectNextTarget selects the positionable entity from the given list which should be our next target.  We should store this value until we switch targets (i.e. the entity which we are interacting with), because the output of this method isn't constant. I.e. We call this method to determine which entity to interact with next, and store the returned value so we aren't constantly calling this method. We can re-call this method and re-store the returned value when we move on to a different target entity.
 
If an entity spawns which is closer than the original closest entity, then we can re-call this method to re-select the next target entity. Otherwise, we should stick with the stored value.
 
Note that when we chose an entity which is not the closest, that entity will be within a close distance to the closest, and if the entity implements Clickable07, we will check if it is clickable via Clickable07#isClickable.
 
Example:

final RSObject[] objects = getPossibleTargets();
if (objects == null || objects.length < 1) 
return;

final RSObject next_target = (RSObject) this.abc_util.selectNextTarget(objects);

Action Conditions
 
These are actions which depend on a condition generated by ABCUtil. Note that the conditions generated by each method isn't persistent, and we want a certain level of persistence for each type of action. Therefore, we must store the returned value of the methods for a certain period of time, specified below.
 
HP to Eat At
 
ABCUtil#generateEatAtHP will generate the hitpoints percentage at which we should eat at. We store the generated value and use it until we eat the next food item. At that time, we generate a new value and store it.
 
Example:

int eat_at = this.abc_util.generateEatAtHP(); // Global variable, persistent...
// Inside of a local method
if (getHPPercent() <= this.eat_at) {
 eatFood();
 this.eat_at = this.abc_util.generateEatAtHP(); // Generate a new HP percentage to eat at
}

Energy to Activate Run At
 
ABCUtil#generateRunActivation will generate the run energy at which we should activate run at. We store the generated value and use it until we turn run on. At that time, we generate a new value and store it.
 
Example:

int run_at = this.abc_util.generateRunActivation(); // Global variable, persistent...
// Inside of a local method
if (!Game.isRunOn() && Game.getRunEnergy() >= this.run_at) {
 Options.setRunOn(true);
 this.run_at = this.abc_util.generateRunActivation(); // Generate a new run energy to activate run at
}

Moving to Anticipated Location
 
When we finish interacting with our latest target/resource, there may or may not be a next target/resource available. If there is, then we simply go to that target/resource as usual and ignore this action condition. However, if there is no next target/resource currently available, then we check this action condition.
 
We check ABCUtil#shouldMoveToAnticipated immediately after we finish up with our latest target/resource. If the method returns true, we move to the location in which we anticipate our next target/resource will spawn. If it returns false, we do nothing.
 
Example:

// Here we just finished cutting a yew tree
if (!findNextTarget()) { // If we are here, then there does not exist a next target/resource yet
 if (this.abc_util.shouldMoveToAnticipated()) { // Check if we should move to the anticipated location...	
  performReactionTimeWait(); // Sleep for the generated reaction time		
  moveToAnticipated(); // Move to the anticipated location	
 }
 // Now we simply wait until a new target/resource spawns	
 // Do not keep checking if we should move to the anticipated location	
 // Only perform this check once after each target/resource becomes unavailable
}

Resource Switching Upon High Competition
 
ABCUtil#shouldSwitchResources will decide if we should switch targets/resources based on the amount of competing players. We should check this condition every 20-30 seconds, but only if we are not winning very many resources from the other competing players. This is vague because it depends on the script and individual preferences.
 
Example:

// Here we start mining a rock
long check_time = Timing.currentTimeMillis() + General.random(20000, 30000);
while (isMining()) {
 if (notWinningManyResources() && Timing.currentTimeMillis() >= check_time) { // Check if we should switch resources
  if (this.abc_util.shouldSwitchResources(getCompetitionCount()) {
    switchResources(); //Switch resources			return;
   }
   check_time = Timing.currentTimeMillis() + General.random(20000, 30000); // Generate a new check time	
  }
 }

Next Target Hovering and Menu Opening
 
ABCUtil#shouldHover will decide if we should hover the mouse over our next target. We should use this method to determine if we should hover when we start interacting with each new target entity, and we store the returned value. While interacting with our current target, if the stored value indicates we should hover our next target, then we should do so. Note that we should only employ hovering when the mouse is in the screen boundary.
 
ABCUtil#shouldOpenMenu will decide if we should open the menu for our next target. We should use this method to determine if we should hover when we start interacting with each new target entity, and we store the returned value. While interacting with our current target, if the stored value indicated we should open the menu for our next target, AND if we are hovering the mouse over the next target, then we should open the menu. Menu opening should only be performed if we are also hovering the next target. Note that we should only employ menu opening when the mouse is in the screen boundary.
 
Example:

boolean should_hover = false; // Global variable, persistent
boolean open_menu = false; // Global variable, persistent...
// Inside of a local method
if (the_object.click("Chop down")) {
 this.should_hover = this.abc_util.shouldHover();
 this.open_menu = this.abc_util.shouldOpenMenu(); // Generate other conditions for actions	handleChopping();
}
// Inside of a different local method, 
handleChoppingwhile(isChopping) {
 if (Mouse.isInBounds() && this.is_hovering) {
  hoverNextTarget();
  if (this.open_menu)
   openMenuForNextTarget();
 } // Other code
}

Reaction Times
 
ABC2's reaction time generator relies on about nine different factors, many of which must be specified by the script. There are two different ways to specify these factors: bit flags and properties.
 
With bit flags, you call ABCUtil#generateBitFlags with the necessary options, and that method will generate the bit flags. With properties, you call ABCUtil#getProperties and set the necessary properties with the returned instance of ABCProperties.
 
Generating Reaction Times
 
You must use ABC2 to generate reaction times, instead of using random sleeps. ABC2's reaction time generator was designed to be very generic, allowing it to be used for all things which require a variable response time. However, we are still in need of some human data to allow us to have it totally generic. When generating reaction times for events with a fixed, very low waiting time, the reaction times are often much higher than a human reaction time. Hence, until we collect some more data and adjust our algorithms, ABC2's reaction time generator should be used for the following circumstances:

  • Waiting in response to a condition where we had to wait a variable amount of time typically greater than a second. Examples:
    • Reacting to when our character stops fishing. The response time will be used before we move on to the next fishing spot, or before we walk to the bank.
    • Reacting to when our character stops mining. The response time will be used before we move on to the next rock, or before we walk to the bank.
    • Reacting to when our character kills our target NPC. The response time will be used before we attack our next target, or before we walk to the bank.

We currently will not use ABC2's reaction time generator for the following circumstances, until more data has been collected and we have adjusted our algorithms:

  • Waiting in response to finishing an alchemy spell (the waiting period for casting the spell is fixed, and thus not covered by ABC2 yet)
  • Waiting in response to us finishing our wait for items to be deposited to the bank after clicking the "Deposit All" button (once again, the waiting period is fixed).

These are only limited scenarios which we specified. There are obviously more scenarios than this, but I'm hoping you're able to figure it out based on the examples.
 
Now, to generate reaction times, you have the chose of two methods:

The first method uses properties, and the second uses bit flags, as discussed above.
 
For generating reaction times, there are currently four factors which must be specified by scripts:

  • Waiting Time: The amount of time we were waiting for in order to perform the action we are wanting to do now.
  • Hovering: If we were hovering over the entity we are about to click immediately prior to calling the method.
  • Menu Open: If we have the menu open for the entity we are about to click immediately prior to calling the method.
  • Under Attack: If we are under attack now, or if we were under attack while waiting.
  • Fixed Waiting: Whether the time at which we were waiting can be fixed to a number of client clock cycles or time (currently not used since we lack data for this, but this is here for the future). This will typically not be set because of the reason explained above.

Example using bit flags:

final int waiting_time = getWaitingTime();
final boolean menu_open = this.abc_util.shouldOpenMenu() && this.abc_util.shouldHover();
final boolean hovering = this.abc_util.shouldHover(); // If the condition is met, we specify the relevant flag, otherwise we set the variable to 0
// When we pass 0 into generateReactionTime as a bit flag option, it will not change anything
final long hover_option = hovering ? ABCUtil.OPTION_HOVERING : 0;
final long menu_open_option = menu_open ? ABCUtil.OPTION_MENU_OPEN : 0;
// Generate the reaction time
final int reaction_time = this.abc_util.generateReactionTime(this.abc_util.generateBitFlags(waiting_time, hover_option, menu_open_option));
// Sleep for the reaction time
try {
 this.abc_util.sleep(reaction_time);
} catch (final InterruptedException e) {

}

Example using properties:

final int waiting_time = getWaitingTime();
final boolean menu_open = this.abc_util.shouldOpenMenu() && this.abc_util.shouldHover();
final boolean hovering = this.abc_util.shouldHover();
final ABCProperties props = this.abc_util.getProperties();
props.setWaitingTime(waiting_time);
props.setHovering(hovering);
props.setMenuOpen(menu_open);
props.setUnderAttack(Combat.isUnderAttack() || wasJustUnderAttack());
props.setWaitingFixed(false);
// Generate the reaction time
final int reaction_time = this.abc_util.generateReactionTime();
// Sleep for the reaction time
try {
 this.abc_util.sleep(reaction_time);
} catch (final InterruptedException e) {

}

When using properties, remember to explicitly set all applicable options so that you don't use old data from previous uses.
 
Generating Supporting Tracker Information
 
A core factor in generating reaction times is whether or not the mouse is currently within the game screen boundary, along with other linked factors which I am keeping secret. ABCUtil's background thread will be responsible for manipulating these factors. In order for it to do so, it must know certain information about the activity being performed. We give it this information via ABCUtil#generateTrackers.
 
ABCUtil#generateTrackers generates variables for performing anti-ban while waiting for something. Specifically, variables relating to how often and when to make the mouse leave the game area. This method should be called right after clicking something which requires us to wait a variable amount of time, or a time which we have to try and count off; i.e. where we will produce a variable reaction time. This includes, but is not limited to, clicking a tree, clicking an interface which we have to wai, say, approx. 10 seconds for.
 
This method requires the script to supply two pieces of information:

  • Estimated waiting time: An estimate for the amount of time we will be waiting for, i.e. how long it takes to perform the action at hand. Example: When woodcutting, the estimated waiting time would be an estimate for how long we are going to be chopping the current tree. Typically, using the average waiting time for the specific action is a good estimate.
  • Under Attack: If we think we are going to be under attack for any of the duration of the waiting time.

Like generating reaction times, calling this method can either be done using bit flags or properties.
 
Example using bit flags:

if (successfullyClickedTree()) {
 final int est_waiting;
 if (this.chopping_count > )
  est_waiting = (int)(this.chopping_time / this.chopping_count);
 else
  est_waiting = 3000; // An arbitrary value, only used at the very beginning of the script
 this.abc_util.generateTrackers(this.abc_util.generateBitFlags(est_waiting));
 while (isChopping()) {
  if (this.abc_util.shouldLeaveGame())
   this.abc_util.shouldLeaveGame();
   // Do other things here, such as hovering and menu opening if the mouse is still in the game screen boundary	
 }
}

Example using properties:

if (successfullyClickedTree()) {
 final int est_waiting;
 if (this.chopping_count > )
  est_waiting = (int)(this.chopping_time / this.chopping_count);
 else est_waiting = 3000; // An arbitrary value, only used at the very beginning of the script	
 final ABCProperties props = this.abc_util.getProperties();
 props.setWaitingTime(est_waiting);
 props.setUnderAttack(false);
 props.setWaitingFixed(false);
 this.abc_util.generateTrackers();
 while (isChopping()) {
  if (this.abc_util.shouldLeaveGame())
   this.abc_util.shouldLeaveGame();
  // Do other things here, such as hovering and menu opening if the mouse is still in the game screen boundary	
 }
}

Now you may be wondering where exactly to call this method. Generally, you'd call this after generating a reaction time using ABC2, after we call ABCUtil#sleep for that reaction time, and after we perform the action which we are reacting to.
 
It's important to keep in mind that calling ABCUtil#generateTrackers is very important because it sets up variables which greatly affect reaction times. Also note that we should be calling ABCUtil#shouldLeaveGame and ABCUtil#leaveGame in the period after calling ABCUtil#generateTrackers, as the method is to be used in conjunction with ABCUtil#shouldLeaveGame and ABCUtil#leaveGame. If we do not ever call those two methods, or don't call them often enough, calling ABCUtil#generateTrackers would be essentially useless, and our reaction times wouldn't be the most human-like.
 
Sleeping for the Length of the Reaction Time
 
it is important to use ABCUtil#sleep to perform all of the reaction time sleeps. ABC2's background thread is in charge of making the mouse return to the game screen boundary if the mouse has been outside of the boundary for a certain period of time. Now, the times at which the background thread makes the mouse return has been pre-determined. It's possible that it makes the mouse return while we are sleeping for the duration of the reaction time. If it does this, then why do we have to continue our reaction time sleep if the mouse is moving (i.e. the player is active)? Simply put, when the mouse returns to the game screen, we should stop sleeping the duration of the reaction time because the player is active.
 
When the script calls ABCUtil#sleep, it allows the background thread to interrupt the reaction time sleep immediately after the bot makes the mouse return to the game screen. The method also prevents two mouse movements from happening at the same time, since the background thread doesn't pause the script while moving the mouse back to the game screen.
 
Calculating Anti-Ban Compliance Levels (ABCL)
 
Refer to the first list. Beside each element is an amount of points (Pts). If your script successfully implements the element, then add those points to your score. Scores are out of 100, which determine the ABCL:

  • [99, 100] Points: ABCL 10
  • [90, 99) Points: ABCL 9
  • [80, 90) Points: ABCL 8
  • [70, 80) Points: ABCL 7
  • [60, 70) Points: ABCL 6
  • [50, 60) Points: ABCL 5
  • [40, 50) Points: ABCL 4
  • [30, 40) Points: ABCL 3
  • [20, 30) Points: ABCL 2
  • [10, 20) Points: ABCL 1
  • [0, 10) Points: ABCL 0

Note: "[" is an inclusive boundary, and ")" is an exclusive boundary.
 
Conclusion
 
There you have it, the guide to implementing Anti-Ban Compliance version two. I hope I have made it clear how to implement ABC2. Make sure to read all of the documentation.
 
I am including a persistent extension of ABCUtil, which makes this utility more like the first version, and easier to use:

PersistentABCUtil.java

Edited by erickho123
Forum Software update made all lines one lined. Attempted to fix it.
  • Like 9

Share this post


Link to post
Share on other sites
Array

@Ericho123 & @Tri could you guys please implement this to your scripts? :D

I have a feeling that if it is there they will implement it.   It would be a huge selling point if their scripts had it and others did not.  I thought exShopper and exRunecrafter were already amazing.  I cannot wait to see if after.

Share this post


Link to post
Share on other sites

When generating the reaction time, you are determining if you are hovering or if the menu is open by the values returned by the ABCUtil methods shouldHover and shouldOpenMenu, not if you actually are hovering or have the menu open. Is this intended?

I also found this confusing, and it's worth mentioning that there are many actions in Runescape that humans will spam click, or activities with very little downtime, which humans will react fairly quickly to. What is the ABC2 policy on those? As mentioned in the OP, we're supposed to hold back on implementing any ABC2 reaction time methods for those circumstances until more data is collected? Is there any risk to implementing them now as opposed to short generic random sleeps?

Edited by ineu

Share this post


Link to post
Share on other sites

I've placed the timed actions code inside of a method, antiban(), and I call this method whenever I am idling. Is this ok, because I've been watching the bot for like 30 minutes now and I have yet to see any of the antiban actions happen. Also, does it matter what order I call the timed action checks in? I'm sure it would look suspicious during behavioral analysis if a player always checks xp only before the player cursor leaves the game. Also, if I try to add a System.out.println to happen whenever an antiban action is actually happening, the bot will just spazz out with antiban and do timed actions like crazy

Edited by brainblips

Share this post


Link to post
Share on other sites

I've placed the timed actions code inside of a method, antiban(), and I call this method whenever I am idling. Is this ok, because I've been watching the bot for like 30 minutes now and I have yet to see any of the antiban actions happen. Also, does it matter what order I call the timed action checks in? I'm sure it would look suspicious during behavioral analysis if a player always checks xp only before the player cursor leaves the game. Also, if I try to add a System.out.println to happen whenever an antiban action is actually happening, the bot will just spazz out with antiban and do timed actions like crazy

I have mine print out whenever a check returns true and it does the action, and it does not spazz out. You must have missed a bracket or something.

Share this post


Link to post
Share on other sites

When generating a large reaction time (example, I had one of ~292000 ms) which allowed the bot to get automatically logged out, the Login bot kicks in and logs the bot in even though it should still be sleeping. Are we meant to disable the login bot for the reaction time? Might be worth noting to do so if the reaction time is exceedingly long.

Share this post


Link to post
Share on other sites

Is it normal If I am making tabs in my POH and the only timed action that happens while I do it is mouse leaving the game? I call abcutil.generateTrackers right before the loop of waiting for the tabs to be made begins. My code is arraged this way:

abcUtil.generateTrackers
while ([inventory contains at least one soft clay]) {
  if (abcUtil.shouldRotateCamera) {
    abcUtil.rotateCamera;
  }
  //and so on with the other timed actions
}

Am i doing sth very very wrong or is that meant to be?

Share this post


Link to post
Share on other sites

When tallying up the points to see which threshold you're at as in ABCL 0,1,2, etc. When i come across this

 

Quote

Note that Banking#openBank, GameTab#open, and web walking all take ABC preferences into account, so we don't have to worry about handling preferences if we use those methods.

If i use those Banking#openBank and Web Walking inside my script, would i just count those points aswell?

Share this post


Link to post
Share on other sites
3 hours ago, montreal176 said:

When tallying up the points to see which threshold you're at as in ABCL 0,1,2, etc. When i come across this

 

If i use those Banking#openBank and Web Walking inside my script, would i just count those points aswell?

As examples:

Banking#openBank() will use abc preferences to decide whether it should do Banking#openBankBooth() or Banking#openBankBanker(), for the booth vs the npc.

GameTab#open will use abc preferences to decide whether it clicks the tab or uses the F key shortcuts to open the tab.

So long as you use those methods for those specific actions or implement it via abc if you need to do it in a custom way, you are good.

  • Like 1

Share this post


Link to post
Share on other sites
23 minutes ago, montreal176 said:

Quick question regarding the performTimedActions Method --

I notice mine isnt checking the XP, Is there something special that i have to do to make it check the XP? The reason i ask is because i know you have to use generateTrackers() for the mouse to leave the screen.

Are you gaining xp?  That is an important factor. I also notice that it doesn't check XP very often, although I'm not watching my bots all of the time. I have definitely seen it in the debug, as my scripts print the abc2 action they are doing in the client debug.

  • Like 1

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.


  • Similar Content

    • 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
      Total Runtime Statistics:
       
      GUI Preview: 

      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 ALL types of crabs: Rock, Sand, Swamp and Ammonite crabs! are all supported. The script will reset the aggressiveness when they stop waking up.  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. 
      Custom fight areas - You can specify exactly where in the game you want the script to fight. Either with a polygon or a circle. Below is an example of a polygon fight area. 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.  Resetting Aggressiveness - The script can detect when monsters stop being aggressive towards you, and run away to reset the aggro.  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. Tip 1: When withdrawing potions or charged jewellery, you can type (*) Instead of the dose number and it will withdraw whatever dose is highest in the bank. 
      For example Ring of duelling(*).  Tip 2: You can also type 0 as the quantity, and it will withdraw-all of the item instead of a specific quantity. 
      For example these settings would make it withdraw all of your cannonballs, then fill your inventory with lobsters.

      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
      Instance count: 1
      Duration: 10 Hours per month
      $10 Package:
      Instance count: 4
      Duration: 1 month
      $20 Package:
      Instance count: 10
      Duration: 1 month
      $30 Package:
      Instance count: 20
      Duration: 1 month
      $50 Package:
      Instance count: 50
      Duration: 1 month
      All packages include:
      VIP is not required to run the script
      The ability to train all of combat and magic effortlessly and safely for the duration of your subscription.
      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:
      Killing 15,000 abyssal demons and getting over 26 whips on one account.














    • 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
      P.S.
      If you have any questions, about the script or the source feel free to post me on here.
      Feedback on source or script is appreciated good or bad.
      What Feature would You Like to see Added Next?
    • By Ark
      Features
      Mixes all potions/unfinished potions using IDs
      Cleans all Herbs using IDs
      Amulet of Chemistry support
      Automatic stopping when out of ingredients or amulets
      Grand Exchange Restocking and Product Selling supported if selected
      Support for pressing Escape to close the Bank interface
      Simple UI, simple paint
      Intuitive GUI
      Shows profit/loss accurately, even with Amulet of Chemistry
      Stable
      Full ABCL10/ABC2 support
      Variable reaction times settable in the GUI
      Intelligent antiban features, such as reaction time waits and herb-skipping
      Working April 2020
       
      Repository Link

       


       
      Version Log:
      V1.00 - Release
      V1.01 - Performance improvements and a few bug fixes
      V1.10 - Added Herb cleaning, re-wrote framework for stability, re-wrote GUI for more intuitive design, improved antiban
      V1.11 - Added a quick feature to improve performance and make the script behave more like a human would
      V1.15 - GUI saving/loading and improved efficiency
      V1.20 - Work on enhanced antiban, variable reaction times, better GUI overall
      V1.22 - Modified GUI, added Esc Bank Interface Closing, performance improvements
      V1.23 - Added finer control of reaction-times, tweaked reaction-times and fixed a rare bug
      V1.25 - Added abc trackers properly, implemented banker hovering (abc2-based), cleaned up code
      V1.30 - Added GE Restocking
    • By bbuu20
      Bbuu20's Miner (Open Source) (Progressive Mining) (World Hopping) (ABC2 Level 10 + Additional Custom Antiban) (Arguments)
      Hi, and thanks for checking out my AIO mining script! This script features:
      3 Tick Mining so players can reach xp rates of up to 115k/hr! Iron, Sandstone, and Granite all supported (Mouse variance must be set to 0) *Removed For Now, Will Be Added Back Soon* Progressive Mining so you can run your bots through multiple tasks with just a few clicks Custom Paint to display the current runtime, xp/hr, and more Full ABC2 Level 10 Implementation to significantly lower the script's ban rate Universal Mining and Banking so players can run the bot wherever they want, on whatever ore they want Java FX GUI to adjust antiban, and mining settings Profile saving/loading so players can easily reload previous settings Arguments to allow instant profile loading, and gui bypassing Let me know if you encounter any issues, or have any feedback.
      To Do:
      Re-implement 3 tick mining
      Add motherlode support
      And anything else you may suggest!
       
      Join my discord server: https://discordapp.com/invite/nF7fsjx
       
      Source Code: https://github.com/zperkins11/Bbuu20-s-Miner
      Get It On The Repository: https://tribot.org/repository/script/id/3417
       
      How to use arguments:

      Enter the name of the profile, and the task code, separated by a colon (:)
      Task codes are as follows:
      0: Traditional Mining
      1: Progressive Mining
       
      More info can be found on my discord server
       





       
    • By bbuu20
      Bbuu20's Firemaker (ABC2 Level 10)
      Welcome to Bbuu20's Fire Maker. This script features:
      Custom GUI to select what log/logs to use Full ABC2 Level 10 Implementation to significantly lower the script's ban rate Universal Firemaking and Banking so players can run the bot wherever they want, with whatever log/logs they want I am very open to any suggestions on how I could improve this script. Please let me know if you experience any issue at all with the script, I will do my best to fix it and reply to you quickly. If you enjoy the script, some positive feedback would be greatly appreciated!
       
      To Do:
      Add custom paint to display current log, xp/hr, etc...
      And anything else you may suggest!
       
      Links:
       
      Join my discord server: https://discordapp.com/invite/nF7fsjx
       
      Source Code: https://github.com/zperkins11/Tribot/tree/master/scripts/firemaker
      Get It On The Repository: https://tribot.org/repository/script/id/3425
       
      Screenshots:
       

    • By bbuu20
      Bbuu20's Tutorial Island (ABC2) (V2.0)
      Hi, and thanks for checking out my tutorial island reboot! This script completes tutorial island for free!
      I am very open to any suggestions on how I could improve this script. Please let me know if you experience any issue at all with the script, I will do my best to fix it and reply to you quickly. If you enjoy the script, some positive feedback would be greatly appreciated!
      In the near future, I will be re-implementing the gui and paint, I realize it is rather basic for now.
       
      Join my discord server: https://discordapp.com/invite/nF7fsjx
       
      Source Code: https://github.com/zperkins11/Tribot/tree/master/scripts/tutorialIsland
      Get It On The Repository: https://tribot.org/repository/script/id/3296-bbuu20-s-tutorial-island/
    • By Fluffee
      Fluffee's Tutorial Island v4
      TRiBot's best Tutorial Island Script
      • Completes Tutorial Island
      • Supports loading of bulk accounts
      • Script Argument/Queue/Client Starter support
      • Tons of customization options
      • Random account profiling
      • Full ABC2 support
      • Post tutorial island tasks
      • Account Creation
      • Task based, chose the options for every account
      • Resizable mode support
      Get it here!
      GUI

      Script Arguments
      Script arguments must be entered as follows (with the following keys):
      settingsFile:saved_settings_file_name.json; The only argument required now is the name of the settings file to load. If the file specified does not exist, an error will be printed in the debug, and the script will show the GUI instead.
      Source
    • By bbuu20
      I've been trying to implement abc2 into my tutorial island script, but I thought it may be easier if I started from scratch. Since then, I've been working on a mining script that mines and banks, and I thought that I did a pretty good job of implementing abc2. Upon running the script however, I noticed that there were a few things off.
      1.) Despite being called whenever the player is animating, the timed actions don't seem to actually do anything.
      2.) Sometimes when mining, the abcutil will decide if the mouse should hover over the next target. This is good and working how it should, but when it's done mining the current rock, it doesn't actually click on the rock that was hovered over.
      I was hoping some of you could look at my code, and help me get to the bottom of these issues. The problem has to either be in Antiban.java, Mine.java, or maybe both.
      Source code: https://github.com/bbuu20/Tribot/tree/master/Bbuu20's%20Dynamic%20Miner/src/scripts
    • 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 Red_Spark
      Red_ClayMaster is an open source soft clay making script.It will take empty buckets from Edgeville bank and fill them up with water.After all the buckets have been filled it will withdraw clay from the bank and start making soft clay.It will do this until it runs out of clay .
       
      Red_ClayMaster V2 is here!!!!!!!!!!
      I have re-written the framework, so I can expand on it easier.It also works a lot smoother now and it has passed my overnight test(Ran for 7h:42m made 8,3k soft clay, the only reason it stopped was because it ran out of clay )
       
      Starting the script:
       
      Start the script in Edgeville with and empty inventory.
      Make sure you have the supply in the bank
      Make sure roof are toggle off
         //togglerooftops
       
      GUI Explained:

       
       
      Know Bugs:
      LogIn failing sometimes FIXED(13/01/2016)
       
       
      Features:
      World Hoping
      GUI-Pick what you want to do
      Anti-Ban-Full ABCL10 compliance  (might not work as intended need to test it)
      Fast Dynamic clicking-Accenture and fast clicking
      Dynamic sleep/wait
       
      Have a suggestion?
      Feel free to post it. You can also pm or even contact me through skype. Just click the red Add My Skype button in my signature to add me to your skype
       
      Script Repository Link
       
      TODO:
      Need to implement ABC2 instead of ABC1 Done(will still tweak it a bit)
      If you're interested in the source code please go to this topic:
       
      https://tribot.org/forums/topic/58881-betared-claymasterfirst-script/
       
      UPDATES:
      2.5 Date 11/04/2019
      Updated IDs
      Updated World Hoping
       
      2.5 Date 20/01/2016
      Upgraded to ABC2(new Tribot Anit-Ban)
      2.4 Date 21/12/2015
      Added World Hoping
       
      2.3 Date 19/12/2015
      If the bot ends up outside the bank while making soft clay. It will run back to the bank(even if the bank is off-screen)
       
      2.2 Date 18/12/2015
      FIXED fail-safes in the script
      More info on this topic:https://tribot.org/forums/topic/58881-betared-claymasterfirst-script/
  • 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
      • 49 replies
    • Come give us feedback on the next version of TRiBot!
        • Thanks
        • Like
      • 86 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
        • Like
      • 25 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.
        • Like
      • 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.
        • Sad
        • Haha
        • Thanks
        • Like
      • 90 replies
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...